|
sharona
Yak Posting Veteran
75 Posts |
Posted - 2011-05-04 : 09:44:23
|
| basically. i have a stored procedure that inserts values to a temp table and uses 2 nested queries to retrieve values.then there is an update query to the final table so i can get the data in one row. this query takes a long time to run. im sure there is a more efficent way of doing this. the reason i am using the blue nested query is the data comes from a different note. so when the final statement is run it retreives 2 rows of data instead of one.--exec dbo.NYP_ld_triage_eff_msrs_rpt '04/01/2011', '04/05/2011'create PROCEDURE [dbo].[NYP_ld_triage_eff_msrs_rpt] ( @StartDate datetime, @EndDate datetime)ASSET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED BEGINDECLARE @start_date datetime, @end_date datetime --use convert to mm/dd/yyyy with default Start_time 12:00:00 and default End_time 11:59:59SELECT @start_date = convert(datetime,convert(varchar(10), @StartDate, 101)) SELECT @end_date = dateadd(ss, -1, dateadd(dd, 1,convert(datetime,convert(varchar(10), @EndDate, 101))))CREATE TABLE #FINAL( Site varchar(10), Campus varchar(30), ClientVisitGUID numeric(16,0), PatCareDocGUID numeric(16,0), PATIENT varchar(50), MRN varchar(20), EncNumber varchar(20), CHIEF_COMPLAINT VARCHAR(2000), GESTATIONAL_AGE_WEEKS VARCHAR(2000), GESTATIONAL_AGE_DAYS VARCHAR(2000), TIME_PATIENT_ARRIVAL Datetime, TIME_IN_BED DATETIME, TIME_INIT_NURSE_ASSES DATETIME, TIME_INIT_PHYS_ASSES DATETIME, TIME_INIT_ORDERS DATETIME, TIME_DISPOSITION DATETIME, DISPOSITION varchar(2000)) --Get all patients who had a Nursing OB Triage History,Nursing OB Triage History,OB Triage Note - Allen Note within the select date time SELECT DISTINCT Site = 'WEST', Campus = CASE when loc.ParentGUID = 2000001000061001 then 'Allen Hospital' when loc.ParentGUID = 4000001145061001 then 'Milstein Hospital' when loc.ParentGUID = 8000001069061001 then 'MS CHONY' END, cv.GUID AS ClientVisitGUID, cd.PatCareDocGUID, cv.IDCode AS MRN, cv.VisitIDCode AS EncNumber, cv.ClientDisplayName AS PATIENT, cv.AdmitDtm AS TIME_PATIENT_ARRIVAL, obsCatalog.Name as cat_name, ISNULL(obser.valuetext,[DBO].[NYP_AddObsValue_Fn] (cv.guid, obserdoc.ObservationDocumentGUID)) AS ChartedValue2, CD.AuthoredDtm AS TIME_INIT_NURSE_ASSES, CD.AuthoredDtm AS TIME_INIT_PHYS_ASSES, min(X.min_order_date) AS TIME_INIT_ORDERS, cd.documentname, O.time_in_bed AS TIME_IN_BED, O.time_disposition as TIME_DISPOSITION, O.disposition AS DISPOSITIONinto #resultFROM dbo.CV3ClientVisit AS cv WITH (nolock) INNER JOINdbo.CV3Location AS loc WITH (nolock) ON cv.CurrentLocationGUID = loc.GUID INNER JOINdbo.CV3ClientDocument AS cd WITH (nolock) ON cv.GUID = cd.ClientVisitGUID INNER JOINdbo.CV3ObservationDocument AS obserdoc WITH (nolock) ON cd.GUID = obserdoc.OwnerGUID INNER JOINdbo.CV3Observation AS obser WITH (nolock) ON obser.GUID = obserdoc.ObservationGUID INNER JOINdbo.CV3ObsCatalogItem AS obscatitem WITH (nolock) ON obscatitem.GUID = obser.ObsItemGUID INNER JOINdbo.CV3ObsCatalogMasterItem AS obsCatalog WITH (nolock) ON obsCatalog.GUID = obscatitem.MasterObsGUID LEFT OUTER JOINdbo.SCMObsFSListValues AS obsFS WITH (nolock) ON obsFS.ParentGUID = obserdoc.ObservationDocumentGUIDjoin (SELECT ClientVisitGUID, MIN(RequestedDtm) AS min_order_date, dbo.CV3User.OrderRoleType FROM dbo.CV3Order with (nolock) INNER JOIN dbo.CV3User with (nolock) ON dbo.CV3Order.UserGUID = dbo.CV3User.GUID where OrderRoleType in ('Resident', 'NP','PA') GROUP BY ClientVisitGUID,OrderRoleType) x on x.clientvisitguid=cv.GUIDjoin (SELECT DISTINCT cv.GUID AS ClientVisitGUID, case when obsCatalog.Name='nsg_OBTriageHx_AdmData_arrival_time' then ISNULL(obser.valuetext,[DBO].[NYP_AddObsValue_Fn] (cv.guid, obserdoc.ObservationDocumentGUID)) end AS time_in_bed, case when obsCatalog.Name='nsg_OBTriageHx_pt_disposition_dt1' then ISNULL(obser.valuetext,[DBO].[NYP_AddObsValue_Fn] (cv.guid, obserdoc.ObservationDocumentGUID)) end AS time_disposition, case when obsCatalog.Name='nsg_OBTriageHx_pt_disposition' then ISNULL(obser.valuetext,[DBO].[NYP_AddObsValue_Fn] (cv.guid, obserdoc.ObservationDocumentGUID)) end AS disposition FROM dbo.CV3ClientVisit AS cv WITH (nolock) INNER JOIN dbo.CV3ClientDocument AS cd WITH (nolock) ON cv.GUID = cd.ClientVisitGUID INNER JOIN dbo.CV3ObservationDocument AS obserdoc WITH (nolock) ON cd.GUID = obserdoc.OwnerGUID INNER JOIN dbo.CV3Observation AS obser WITH (nolock) ON obser.GUID = obserdoc.ObservationGUID INNER JOIN dbo.CV3ObsCatalogItem AS obscatitem WITH (nolock) ON obscatitem.GUID = obser.ObsItemGUID INNER JOIN dbo.CV3ObsCatalogMasterItem AS obsCatalog WITH (nolock) ON obsCatalog.GUID = obscatitem.MasterObsGUID LEFT OUTER JOIN dbo.SCMObsFSListValues AS obsFS WITH (nolock) ON obsFS.ParentGUID = obserdoc.ObservationDocumentGUID WHERE cd.PatCareDocGUID IN ('9000001670102020',--Nursing OB Triage History '4000001085202001')--Nursing OB Triage History and obsCatalog.Name in ('nsg_OBTriageHx_AdmData_arrival_time',--time in bed 'nsg_OBTriageHx_pt_disposition_dt1',--time disposition 'nsg_OBTriageHx_pt_disposition')--disposition AND cv.TypeCode = 'Inpatient' group BY cv.GUID, obsCatalog.Name, obser.ValueText, obsFS.Value, obserdoc.ObservationDocumentGUID)O on O.clientvisitguid=cv.GUIDWHERE (cd.PatCareDocGUID ='1000001197202001')--OB Triage Note - Allen AND loc.ParentGUID in('2000001000061001','4000001145061001 ','8000001069061001') AND cv.TypeCode = 'Inpatient' and cv.AdmitDtm BETWEEN @START_DATE AND @END_DATE and obsCatalog.Name in('note_OB_Triage_chiefcomp_ls',-- Chief complaint 'note_OB_Delivery_GA_weeks_ft',-- Gestational Age Weeks 'note_OB_Delivery_GA_days_ft',-- Gestational Age Days 'note_OB_Triage_Admit_ls')--Patient Arrival group BY Site , loc.ParentGUID , cv.GUID, cd.PatCareDocGUID, cv.IDCode, cv.VisitIDCode, cv.ClientDisplayName, cv.AdmitDtm , cv.DischargeDtm , CD.DOCUMENTNAME, obsCatalog.Name, obser.ValueText, obsFS.Value, cv.guid, obserdoc.ObservationDocumentGUID, obser.valuetext, CD.AuthoredDtm, cd.documentname, O.TIME_IN_BED, O.TIME_DISPOSITION, O.DISPOSITION SELECT * FROM #RESULT--Add all data to the final tableINSERT #Final( Site, Campus, ClientVisitGUID, PATIENT, MRN, EncNumber, TIME_PATIENT_ARRIVAL, TIME_INIT_NURSE_ASSES, TIME_INIT_PHYS_ASSES)SELECT Site, Campus, ClientVisitGUID, PATIENT, MRN, EncNumber, TIME_PATIENT_ARRIVAL, TIME_INIT_NURSE_ASSES, TIME_INIT_PHYS_ASSESFROM #Resultgroup by Site, Campus, ClientVisitGUID, PATIENT, MRN, EncNumber, TIME_PATIENT_ARRIVAL, TIME_INIT_NURSE_ASSES, TIME_INIT_PHYS_ASSESSELECT * FROM #FINAL-- Update final table to assign Date and Time for Result Received and Result Communicated (Notification)for each patientUPDATE #FinalSET TIME_INIT_ORDERS = R.TIME_INIT_ORDERSFROM #Result r, #Final fWHERE f.ClientVisitGUID=r.ClientVisitGUID UPDATE #FinalSET GESTATIONAL_AGE_WEEKS = R.ChartedValue2FROM #Result r, #Final fWHERE f.ClientVisitGUID=r.ClientVisitGUIDAND r.cat_name = 'note_OB_Delivery_GA_weeks_ft'UPDATE #FinalSET GESTATIONAL_AGE_DAYS = R.ChartedValue2FROM #Result r, #Final fWHERE f.ClientVisitGUID=r.ClientVisitGUIDAND r.cat_name = 'note_OB_Delivery_GA_days_ft' UPDATE #FinalSET TIME_IN_BED = R.TIME_IN_BEDFROM #Result r, #Final fWHERE f.ClientVisitGUID=r.ClientVisitGUID--AND r.cat_name2 = 'nsg_OBTriageHx_AdmData_arrival_time' UPDATE #FinalSET TIME_DISPOSITION= R.TIME_DISPOSITIONFROM #Result r, #Final fWHERE f.ClientVisitGUID=r.ClientVisitGUID--AND r.cat_name2 = 'nsg_OBTriageHx_pt_disposition_dt1'UPDATE #FinalSET DISPOSITION = R.DISPOSITIONFROM #Result r, #Final fWHERE f.ClientVisitGUID=r.ClientVisitGUID--AND r.cat_name2 ='note_OB_Triage_Admit_ls' UPDATE #FinalSET CHIEF_COMPLAINT =R.ChartedValue2FROM #Result r, #Final fWHERE f.ClientVisitGUID=r.ClientVisitGUIDAND r.cat_name ='note_OB_Triage_chiefcomp_ls' --Final select SELECT DISTINCT Site, Campus, ClientVisitGUID, PATIENT, MRN, EncNumber, CHIEF_COMPLAINT, GESTATIONAL_AGE_WEEKS, GESTATIONAL_AGE_DAYS, TIME_PATIENT_ARRIVAL, TIME_IN_BED, TIME_INIT_NURSE_ASSES, TIME_INIT_PHYS_ASSES, min(TIME_INIT_ORDERS) as INIT_ORDER_TIME, TIME_DISPOSITION, DISPOSITION FROM #Finalgroup BY Site, Campus, ClientVisitGUID, PATIENT, MRN, EncNumber, CHIEF_COMPLAINT, GESTATIONAL_AGE_WEEKS, GESTATIONAL_AGE_DAYS, TIME_PATIENT_ARRIVAL, TIME_IN_BED, TIME_INIT_NURSE_ASSES, TIME_INIT_PHYS_ASSES, TIME_DISPOSITION, DISPOSITIONDROP TABLE #ResultDROP TABLE #FinalENDIF OBJECT_ID('dbo.NYP_ld_triage_eff_msrs_rpt') IS NOT NULL PRINT '<<< CREATED PROCEDURE dbo.NYP_ld_triage_eff_msrs_rpt >>>'ELSE PRINT '<<< FAILED CREATING PROCEDURE dbo.NYP_ld_triage_eff_msrs_rpt >>>' |
 |
|