Hrcm SP Schema
Procedure Name:API_PATIENTS_GETCENSUS
Description:
With help of this to Get Current Census Patients Information.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[API_PATIENTS_GETCENSUS] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Krishna Reddy
-- Create date: 9/20/2018
-- Description: To Get Current Census Patients Information
-- =============================================
CREATE PROCEDURE [dbo].[API_PATIENTS_GETCENSUS]
AS
BEGIN
SET NOCOUNT ON;
select visit.MRN,visit.AccountNumber,patient.FirstName,patient.MiddleName,patient.LastName,
patient.Gender,patient.DOB,visit.AdmitDate,visit.DischargeDate,visit.FinancialClass,
visit.HospitalService,visit.LocationID,visit.LocationRoom,visit.LocationBed
from HIM_Visit visit
inner join HIM_Patient patient on patient.PatientId=visit.PatientID
where visit.AccountNumber in ('350583303')
--and DischargeDate is null
and PatientClass='I'
and AdmitDate is not null and AdmitDate <=GETDATE()
END
GO
|
======================================================
Procedure Name:AQAS_DemographicCheck
Description:
With help of this to Check Demographic Conditions for Query Alerts.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[AQAS_DemographicCheck] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: KrishnaReddy
-- Create date: June 10th 2019
-- Description: To Check Demographic Conditions for Query Alerts
-- =============================================
CREATE PROCEDURE [dbo].[AQAS_DemographicCheck]
AS
Declare @InputParamQry varchar(200)
--SET @InputParamQry='PathFileName: '+''+@PathFileName+''+'|'+'ReportDate: '+''+@ReportDate+''+'|'+'TimeZoneName: '+''+@TimeZoneName+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
Print '-----Sample Statement------'
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'AQAS'
End Catch
END
GO
|
======================================================
Procedure Name:AQAS_DRGCheck
Description:
With help of this to Check DRG Conditions for Query Alerts.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[AQAS_DRGCheck] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: KrishnaReddy
-- Create date: June 10th 2019
-- Description: To Check DRG Conditions for Query Alerts
-- =============================================
CREATE PROCEDURE [dbo].[AQAS_DRGCheck]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
-- Step 1: Delete Previous Query Alert Results on Current Account Numbers by changing Active status from 1 to 2
Update AQAS_QueryAlertElementResult set Active=0,ModifiedDate=GETUTCDATE() from AQAS_QueryAlertElementResult qa
inner join AQAS_PendingAccount pa on pa.AccountNumber=qa.AccountNumber
inner join MST_QueryAlertCriteriaElement ele on ele.CriteriaElementId=qa.CriteriaElementid
where pa.PendingStatus=2 and pa.ChangeSource='DRGCode' and ele.CriteriaElementType='DRGCode' and qa.Active<>0
-- Step 2: ICD Code Checking
insert into AQAS_QueryAlertElementResult (AccountNumber,DocumentId,QueryAlertId,CriteriaElementId,CriteriaElementMappingId,
UniqueCriteriaId,GroupId,Result,Result_Source_UniqueId,QueryCriteriaType)
select distinct AccountNumber,DocumentId,QueryAlertId,
CriteriaElementId,CriteriaElementMappingId,
UniqueCriteriaId,groupid,Result,Result_Source_UniqueId,querycriteriatype from(
select usr.AccountNumber,0 DocumentId,map.QueryAlertId,
map.CriteriaElementId,map.CriteriaElementMappingId,ele.Source_UniqueId UniqueCriteriaId,map.groupid,
case when drg.DRGType='MSDRG' then usr.MSDRG when drg.DRGType='APRDRG' then usr.APRDRG end as Result,
usr.DRGID Result_Source_UniqueId,map.querycriteriatype,
DENSE_RANK() over(partition by usr.Accountnumber,map.QueryAlertId,map.CriteriaElementId order by usr.DrgId) Rank1
from User_Drg usr
inner join AQAS_PendingAccount pa on pa.AccountNumber=usr.AccountNumber
inner join MST_QueryAlert_DRGClassification drg on drg.DRGCode=(case when drg.DRGType='MSDRG' then usr.MSDRG when drg.DRGType='APRDRG' then usr.APRDRG end)
inner join MST_QueryAlertCriteriaElement ele on ele.Source_UniqueId=drg.UniqueId
inner join MST_QueryAlertCriteriaElementMapping map on map.CriteriaElementId=ele.CriteriaElementId
where ele.CriteriaElementType='DRGCode'
and pa.ChangeSource='DRGCode' and pa.PendingStatus=2
)a where a.Rank1=1
-- To DO: Future Logic will be implemented here which is not included in above
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','AQAS'
End Catch
END
GO
|
======================================================
Procedure Name:AQAS_ICDCodeCheck
Description:
With help of this to check ICDCodes for QueryAlerts.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[AQAS_ICDCodeCheck] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 07/06/2019
-- Description: ICDCode Checking For AQAS
-- =============================================
CREATE PROCEDURE [dbo].[AQAS_ICDCodeCheck]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
-- Step 1: Delete Previous Query Alert Results on Current Account Numbers by changing Active status from 1 to 2
/*delete qa from AQAS_QueryAlertElementResult qa
inner join AQAS_PendingAccount pa on pa.AccountNumber=qa.AccountNumber
inner join MST_QueryAlertCriteriaElement ele on ele.CriteriaElementId=qa.CriteriaElementid
where pa.PendingStatus=2 and ChangeSource='ICDCode' and ele.CriteriaElementType='ICDCode'*/
Update AQAS_QueryAlertElementResult set Active=0,ModifiedDate=GETUTCDATE() from AQAS_QueryAlertElementResult qa
inner join AQAS_PendingAccount pa on pa.AccountNumber=qa.AccountNumber
inner join MST_QueryAlertCriteriaElement ele on ele.CriteriaElementId=qa.CriteriaElementid
where pa.PendingStatus=2 and pa.ChangeSource='ICDCode' and ele.CriteriaElementType='ICDCode' and qa.Active<>0
-- Step 2: ICD Code Checking
insert into AQAS_QueryAlertElementResult (AccountNumber,DocumentId,QueryAlertId,CriteriaElementId,CriteriaElementMappingId,UniqueCriteriaId,GroupId,Result,Result_Source_UniqueId,
QueryCriteriaType,ClinicalElementTypeId)
select distinct AccountNumber,DocumentId,QueryAlertId,
CriteriaElementId,CriteriaElementMappingId,
UniqueCriteriaId,groupid,Result,Result_Source_UniqueId,querycriteriatype,1 ClinicalElementTypeId from(
select nlp.AccountNumber,0 DocumentId,map.QueryAlertId,
map.CriteriaElementId,map.CriteriaElementMappingId,ele.Source_UniqueId UniqueCriteriaId,map.groupid,
nlp.DxDesc Result,nlp.DxCodeId Result_Source_UniqueId,map.querycriteriatype,
DENSE_RANK() over(partition by nlp.Accountnumber,map.QueryAlertId,map.CriteriaElementId,nlp.DxDesc order by nlp.DXCodeId) Rank1
from NLP_DxCode nlp
inner join AQAS_PendingAccount pa on pa.AccountNumber=nlp.AccountNumber
inner join MST_QueryAlert_ICDClassification icd on icd.ICDCode=nlp.DxCode
inner join MST_QueryAlertCriteriaElement ele on ele.Source_UniqueId=icd.UniqueId
inner join MST_QueryAlertCriteriaElementMapping map on map.CriteriaElementId=ele.CriteriaElementId
where ele.CriteriaElementType='ICDCode'
and pa.ChangeSource='ICDCode' and pa.PendingStatus=2
)a where a.Rank1=1
-- To DO: Future Logic will be implemented here which is not included in above
-- Step 3: USER ICD Code Checking
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','AQAS'
End Catch
END
-- exec AQAS_ICDCodeCheck
GO
|
======================================================
Procedure Name:AQAS_LabTestCheck
Description:
With help of this to checking LabTests for QueryAlerts.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[AQAS_LabTestCheck] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 07/06/2019
-- Description: LabTest Checking For AQAS
-- =============================================
CREATE PROCEDURE [dbo].[AQAS_LabTestCheck]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
-- Step 1: Delete Previous Query Alert Results on Current Account Numbers by changing active status from 1 to 2
/*delete qa from AQAS_QueryAlertElementResult qa
inner join AQAS_PendingAccount pa on pa.AccountNumber=qa.AccountNumber
inner join MST_QueryAlertCriteriaElement ele on ele.CriteriaElementId=qa.CriteriaElementid
where pa.PendingStatus=2 and ChangeSource='LabTest' and ele.CriteriaElementType='LabTest'*/
Update AQAS_QueryAlertElementResult set Active=0,ModifiedDate=GETUTCDATE() from AQAS_QueryAlertElementResult qa
inner join AQAS_PendingAccount pa on pa.AccountNumber=qa.AccountNumber
inner join MST_QueryAlertCriteriaElement ele on ele.CriteriaElementId=qa.CriteriaElementid
where pa.PendingStatus=2 and pa.ChangeSource='LabTest' and ele.CriteriaElementType='LabTest' and qa.Active<>0
-- Step 2: Run Current Logic for Target Accounts: It is Laboratory with Compare type check
insert into AQAS_QueryAlertElementResult (AccountNumber,DocumentId,QueryAlertId,CriteriaElementId,CriteriaElementMappingId,UniqueCriteriaId,GroupId,Result,Result_Source_UniqueId,
QueryCriteriaType,ClinicalElementTypeId,HospitalDay)
select distinct AccountNumber,DocumentId,QueryAlertId,
CriteriaElementId,CriteriaElementMappingId,
UniqueCriteriaId,groupid,Result,Result_Source_UniqueId,querycriteriatype,10 ClinicalElementTypeId,HospitalDay from(
select *,DENSE_RANK() over(partition by Accountnumber,QueryAlertId,CriteriaElementId order by Priority,Deviation desc,Result_Source_UniqueId) DevRank from(
select ftp.AccountNumber,0 DocumentId,map.QueryAlertId,
qf.CriteriaElementId,map.CriteriaElementMappingId,
qf.Source_UniqueId UniqueCriteriaId,map.groupid,ftp.TestName+':'+ftp.Result+' '+ISNULL(Ftp.Unit,'')
Result,ftp.LabID Result_Source_UniqueId,map.querycriteriatype,
case when ConditionType='<' then map.MinValue-ftp.NumericResult
when ConditionType='<=' then map.MinValue-ftp.NumericResult
when ConditionType='>' then ftp.NumericResult-map.MinValue
when ConditionType='>=' then ftp.NumericResult-map.MinValue
when ConditionType='between' then 0.5 * (((ftp.NumericResult-map.MaxValue) + (map.MinValue-ftp.NumericResult))
+ ABS((ftp.NumericResult-map.MaxValue) - (map.MinValue-ftp.NumericResult))) end Deviation,ftp.HospitalDay,cType.Priority
from FTP_Lab ftp
inner join AQAS_PendingAccount pa on pa.AccountNumber=ftp.AccountNumber
inner join HIM_Visit visit on visit.AccountNumber=ftp.AccountNumber
inner join HIM_Patient patient on patient.PatientId=visit.PatientID
inner join MST_QueryAlertCriteriaElement qf on qf.Source_UniqueId=ftp.UniqueId
inner join MST_QueryAlertCriteriaElementMapping map on map.CriteriaElementId=qf.CriteriaElementId
inner join MST_QueryAlertCriteriaType cType on map.QueryCriteriaType=cType.QACriteriaType--LabResult should met for all CriteriaTypes like Target,Threshold and Suggestive then we assigned Priorities to criteriaTypes.
where pa.ChangeSource='LabTest' and pa.PendingStatus=2
and qf.CriteriaElementType='LabTest'
and ftp.NumericResult is not null
and map.ConditionSpecificity='compare' and
(
(ConditionType='<' and ftp.NumericResult<map.MinValue) OR
(ConditionType='>' and ftp.NumericResult>map.MinValue) OR
(ConditionType='<=' and ftp.NumericResult<=map.MinValue) OR
(ConditionType='>=' and ftp.NumericResult>=map.MinValue) OR
(ConditionType='between' and ftp.NumericResult between map.MinValue and map.MaxValue)
)
-- Age Checking
and(
(map.AgeFrom is null and AgeTo is null) or
(DATEDIFF(DAY,patient.DOB, GETDATE()) between map.AgeFrom and map.AgeTo)
)
-- Gender Checking
and(
(map.Gender is null) or
(patient.Gender=map.Gender)
)
-- Hospital Day Checking
and(
(map.HospitalDay is null) or
(ftp.HospitalDay<=map.HospitalDay)
))a
)b where b.DevRank=1
-- TO DO: Write any other Laboratory Related Logic which is not covered in above
-- Step 4: Update Pending Accounts Sttaus to 1 as Processed
-- update AQAS_PendingAccount set pendingStatus=1 where ChangeSource='LabTest' and PendingStatus=2
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','AQAS'
End Catch
END
-- exec AQAS_LabtestCheck
GO
|
======================================================
Procedure Name:AQAS_MedicalConceptCheck
Description:
With help of this to checking MedicalConcepts for QueryAlerts.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[AQAS_MedicalConceptCheck] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 07/06/2019
-- Description: MedicalConcept Checking For AQAS
-- =============================================
CREATE PROCEDURE [dbo].[AQAS_MedicalConceptCheck]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
-- Step 1: Delete Previous Query Alert Results on Current Account Numbers by changing Active status from 1 to 2
/*delete qa from AQAS_QueryAlertElementResult qa
inner join AQAS_PendingAccount pa on pa.AccountNumber=qa.AccountNumber
inner join MST_QueryAlertCriteriaElement ele on ele.CriteriaElementId=qa.CriteriaElementid
where pa.PendingStatus=2 and ChangeSource='MedicalConcept' and ele.CriteriaElementType='MedicalConcept'*/
Update AQAS_QueryAlertElementResult set Active=0,ModifiedDate=GETUTCDATE() from AQAS_QueryAlertElementResult qa
inner join AQAS_PendingAccount pa on pa.AccountNumber=qa.AccountNumber
inner join MST_QueryAlertCriteriaElement ele on ele.CriteriaElementId=qa.CriteriaElementid
where pa.PendingStatus=2 and pa.ChangeSource='MedicalConcept' and ele.CriteriaElementType='MedicalConcept' and qa.Active<>0
-- Step 2: Medication Brand Checking
insert into AQAS_QueryAlertElementResult (AccountNumber,DocumentId,QueryAlertId,CriteriaElementId,CriteriaElementMappingId,UniqueCriteriaId,GroupId,Result,Result_Source_UniqueId,
QueryCriteriaType,ClinicalElementTypeId)
select distinct AccountNumber,DocumentId,QueryAlertId,
CriteriaElementId,CriteriaElementMappingId,
UniqueCriteriaId,groupid,Result,Result_Source_UniqueId,querycriteriatype,14 ClinicalElementTypeId from(
select nlp.AccountNumber,NLP.DocumentId,map.QueryAlertId,
map.CriteriaElementId,map.CriteriaElementMappingId,ele.Source_UniqueId UniqueCriteriaId,map.groupid,
nlp.MedicalConcept Result,nlp.QAMedicalConceptId Result_Source_UniqueId,map.querycriteriatype,
DENSE_RANK() over(partition by nlp.Accountnumber,map.QueryAlertId,map.CriteriaElementId,nlp.MedicalConcept order by nlp.QAMedicalConceptId) Rank1
from NLP_QueryAlert_MedicalConcept nlp
inner join AQAS_PendingAccount pa on pa.AccountNumber=nlp.AccountNumber
inner join MST_QueryAlert_MedicalConceptClassification concept on concept.MedicalConceptName=nlp.MedicalConcept
inner join MST_QueryAlertCriteriaElement ele on ele.Source_UniqueId=concept.UniqueId
inner join MST_QueryAlertCriteriaElementMapping map on map.CriteriaElementId=ele.CriteriaElementId
where ele.CriteriaElementType='MedicalConcept' and nlp.Finding='Positive'
and pa.ChangeSource='MedicalConcept' and pa.PendingStatus=2
)a where a.Rank1=1
-- To DO: Future Logic will be implemented here which is not included in above
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','AQAS'
End Catch
END
-- EXEC [AQAS_MedicalConceptCheck]
GO
|
======================================================
Procedure Name:AQAS_MedicationCheck
Description:
With help of this to checking Drugs for QueryAlerts.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[AQAS_MedicationCheck] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 07/06/2019
-- Description: Medications Checking For AQAS
-- =============================================
CREATE PROCEDURE [dbo].[AQAS_MedicationCheck]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
-- Step 1: Delete Previous Query Alert Results on Current Account Numbers By changing active status from 1 to 2
/*delete qa from AQAS_QueryAlertElementResult qa
inner join AQAS_PendingAccount pa on pa.AccountNumber=qa.AccountNumber
inner join MST_QueryAlertCriteriaElement ele on ele.CriteriaElementId=qa.CriteriaElementid
where pa.PendingStatus=2 and ChangeSource='Medication' and ele.CriteriaElementType='Medication'*/
Update AQAS_QueryAlertElementResult set Active=0,ModifiedDate=GETUTCDATE() from AQAS_QueryAlertElementResult qa
inner join AQAS_PendingAccount pa on pa.AccountNumber=qa.AccountNumber
inner join MST_QueryAlertCriteriaElement ele on ele.CriteriaElementId=qa.CriteriaElementid
where pa.PendingStatus=2 and pa.ChangeSource='Medication' and ele.CriteriaElementType='Medication' and qa.Active<>0
-- Step 2: Medication Brand Checking
insert into AQAS_QueryAlertElementResult (AccountNumber,DocumentId,QueryAlertId,CriteriaElementId,CriteriaElementMappingId,UniqueCriteriaId,GroupId,Result,Result_Source_UniqueId,
QueryCriteriaType,ClinicalElementTypeId,HospitalDay)
select distinct AccountNumber,DocumentId,QueryAlertId,
CriteriaElementId,CriteriaElementMappingId,
UniqueCriteriaId,groupid,Result,Result_Source_UniqueId,querycriteriatype,11 ClinicalElementTypeId,HospitalDay from(
select ftp.AccountNumber,0 DocumentId,map.QueryAlertId,
map.CriteriaElementId,map.CriteriaElementMappingId,ele.Source_UniqueId UniqueCriteriaId,map.groupid,
ftp.MedicationName Result,ftp.IPMedicationID Result_Source_UniqueId,map.querycriteriatype,ftp.HospitalDay,
DENSE_RANK() over(partition by ftp.Accountnumber,map.QueryAlertId,map.CriteriaElementId order by ftp.IPMedicationId) Rank1
from FTP_IPMedication ftp
inner join AQAS_PendingAccount pa on pa.AccountNumber=ftp.AccountNumber
inner join MST_QueryAlert_DrugClassification drug on drug.DrugBrandName=ftp.BrandName
inner join MST_QueryAlertCriteriaElement ele on ele.Source_UniqueId=drug.UniqueId
inner join MST_QueryAlertCriteriaElementMapping map on map.CriteriaElementId=ele.CriteriaElementId
where ele.CriteriaElementType='Medication'
and pa.ChangeSource='Medication' and pa.PendingStatus=2
)a where a.Rank1=1
-- To DO: Add Feature Logics which is Not included in Above
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','CRI'
End Catch
END
-- Exec [dbo].[AQAS_MedicationCheck]
GO
|
======================================================
Procedure Name:AQAS_PCSCodeCheck
Description:
With help of this to checking PCSCodes for QueryAlerts.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[AQAS_PCSCodeCheck] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 07/06/2019
-- Description: PCSCode Checking For AQAS
-- =============================================
CREATE PROCEDURE [dbo].[AQAS_PCSCodeCheck]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
-- Step 1: Delete Previous Query Alert Results on Current Account Numbers By changing active status from 1 to 2
/*delete qa from AQAS_QueryAlertElementResult qa
inner join AQAS_PendingAccount pa on pa.AccountNumber=qa.AccountNumber
inner join MST_QueryAlertCriteriaElement ele on ele.CriteriaElementId=qa.CriteriaElementid
where pa.PendingStatus=2 and ChangeSource='PCSCode' and ele.CriteriaElementType='PCSCode'*/
Update AQAS_QueryAlertElementResult set Active=0,ModifiedDate=GETUTCDATE() from AQAS_QueryAlertElementResult qa
inner join AQAS_PendingAccount pa on pa.AccountNumber=qa.AccountNumber
inner join MST_QueryAlertCriteriaElement ele on ele.CriteriaElementId=qa.CriteriaElementid
where pa.PendingStatus=2 and pa.ChangeSource='PCSCode' and ele.CriteriaElementType='PCSCode' and qa.Active<>0
-- Step 2: Medication Brand Checking
insert into AQAS_QueryAlertElementResult (AccountNumber,DocumentId,QueryAlertId,CriteriaElementId,CriteriaElementMappingId,UniqueCriteriaId,GroupId,Result,Result_Source_UniqueId,
QueryCriteriaType,ClinicalElementTypeId)
select distinct AccountNumber,DocumentId,QueryAlertId,
CriteriaElementId,CriteriaElementMappingId,
UniqueCriteriaId,groupid,Result,Result_Source_UniqueId,querycriteriatype,4 ClinicalElementTypeId from(
select nlp.AccountNumber,0 DocumentId,map.QueryAlertId,
map.CriteriaElementId,map.CriteriaElementMappingId,ele.Source_UniqueId UniqueCriteriaId,map.groupid,
nlp.PCSDesc Result,nlp.PCSCodeId Result_Source_UniqueId,map.querycriteriatype,
DENSE_RANK() over(partition by nlp.Accountnumber,map.QueryAlertId,map.CriteriaElementId,nlp.PCSDesc order by nlp.PCSCodeId) Rank1
from NLP_PCsCode nlp
inner join AQAS_PendingAccount pa on pa.AccountNumber=nlp.AccountNumber
inner join MST_QueryAlert_PCSClassification pcs on pcs.pcsCode=nlp.PCSCode
inner join MST_QueryAlertCriteriaElement ele on ele.Source_UniqueId=pcs.UniqueId
inner join MST_QueryAlertCriteriaElementMapping map on map.CriteriaElementId=ele.CriteriaElementId
where ele.CriteriaElementType='PCSCode'
and pa.ChangeSource='PCSCode' and pa.PendingStatus=2
)a where a.Rank1=1
-- To DO: Future Logic will be implemented here which is not included in above
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','AQAS'
End Catch
END
-- Exec [AQAS_PCSCodeCheck]
GO
|
======================================================
Procedure Name:AQAS_RunQueryAlertLogic
Description:
With help of this to Initiate Query Alert Logic Checking and Running.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[AQAS_RunQueryAlertLogic] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: KrishnaReddy
-- Create date: June 10th 2019
-- Description: To Initiate Query Alert Logic Checking
-- =============================================
CREATE PROCEDURE [dbo].[AQAS_RunQueryAlertLogic]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
-- Step 0: Making Current Pending Accounts to status 2, for current runnning after run we will make to 1 as processed
Update AQAS_PendingAccount set PendingStatus=2,ModifiedDate=GETUTCDATE() where PendingStatus=0
-- Step 1: Run Independent Query Alert Logic Checks
Exec AQAS_LabtestCheck
Exec AQAS_VitalsignCheck
Exec AQAS_MedicationCheck
Exec AQAS_MedicalConceptCheck
Exec AQAS_ICDCodeCheck
Exec AQAS_PCSCodeCheck
Exec AQAS_DRGCheck
-- Exec AQAS_DemographicCheck
-- Step 2: Delete Existing Query Alerts Final Results For Current Account Numbers By changing Active status from 1 to 2
/*delete fr from AQAS_QueryAlertFinalResult fr
inner join AQAS_PendingAccount pa on pa.AccountNumber=fr.AccountNumber
where pa.PendingStatus=2*/
Update AQAS_QueryAlertFinalResult set Active=0,ModifiedDate=GETUTCDATE() from AQAS_QueryAlertFinalResult fr
inner join AQAS_PendingAccount pa on pa.AccountNumber=fr.AccountNumber where pa.PendingStatus=2 and fr.Active<>0
-- Ste 2.1 Temporary data deltion which is generated in Previous running for this account Number from Step 3
--delete cl from AQAS_QueryAlertElementResultByCLevel cl inner join AQAS_PendingAccount pa on pa.AccountNumber=cl.AccountNumber where pa.PendingStatus=2
-- Step 2.2: Eliminating Account and AlertID which already have Target Condition
/*
Update AQAS_QueryAlertElementResult set Active=3,ModifiedDate=GETUTCDATE() from AQAS_QueryAlertElementResult a inner join
(select distinct AccountNumber,QueryAlertId,QueryCriteriaType,Active from AQAS_QueryAlertElementResult where QueryCriteriaType='Target'
)b on a.AccountNumber=b.AccountNumber and a.QueryAlertId=b.QueryAlertId
where a.Active=1;*/
Update AQAS_QueryAlertElementResult set Active=3,ModifiedDate=GETUTCDATE() from AQAS_QueryAlertElementResult a inner join
(select distinct AccountNumber,QueryAlertId,QueryCriteriaType,Active from AQAS_QueryAlertElementResult where QueryCriteriaType='Target'
)b on a.AccountNumber=b.AccountNumber and a.QueryAlertId=b.QueryAlertId
inner join AQAS_PendingAccount c on a.AccountNumber=c.AccountNumber
where c.PendingStatus=2 and a.Active=1;
-- Step 3: Check and Insert New Query Alerts For Current Account Numbers
--STEP: 3.1
WITH QALGroupCTE AS
(
select GroupId,QueryAlertId,GroupName,ParentId,ConditionCount,0 as Tlevel from MST_QueryAlertLogicGroup where ParentId=0 and Active=1
UNION ALL
select qalg.GroupId,qalg.QueryAlertId,qalg.GroupName,qalg.ParentId,qalg.ConditionCount,Tlevel+1
from MST_QueryAlertLogicGroup qalg inner join QALGroupCTE qaCTE on qalg.ParentId=qaCTE.GroupId
)
select distinct re.AccountNumber,cte.GroupId,cte.QueryAlertId,cte.GroupName,cte.ParentId,cte.ConditionCount,cte.Tlevel,0 ElementCount into #Temp1
from QALGroupCTE cte
inner join AQAS_QueryAlertElementResult re on cte.QueryAlertId=re.QueryAlertId
inner join AQAS_PendingAccount pa on re.AccountNumber=pa.AccountNumber
where re.Active=1 and pa.PendingStatus=2 and re.GroupId<>0;
--Step 3.2:
Update #temp1 set ElementCount=a.TCount from #temp1 t1 inner join (
select distinct t1.AccountNumber,t1.QueryAlertId,t1.GroupId,COUNT(distinct re.GroupId) TCount from #temp1 t1
left join AQAS_QueryAlertElementResult re on re.AccountNumber=t1.AccountNumber and re.QueryAlertId=re.QueryAlertId and re.GroupId=t1.GroupId
where re.Active=1 and re.GroupId<>0
group by t1.AccountNumber,t1.QueryAlertId,t1.GroupId
) a on t1.AccountNumber=a.AccountNumber and t1.QueryAlertId=a.QueryAlertId and t1.GroupId=a.GroupId;
--Step 3.4: Update Query for Element count
DECLARE @levelFlag INT
SET @levelFlag=2
WHILE (@levelFlag>=0)
BEGIN
WITH UpdateQALGCTE AS
(
select GroupId,QueryAlertId,GroupName,ParentId,ConditionCount,0 as Tlevel from MST_QueryAlertLogicGroup where ParentId=0 and Active=1
UNION ALL
select qalg.GroupId,qalg.QueryAlertId,qalg.GroupName,qalg.ParentId,qalg.ConditionCount,Tlevel+1
from MST_QueryAlertLogicGroup qalg inner join UpdateQALGCTE qaCTE on qalg.ParentId=qaCTE.GroupId
)
Update #temp1 set ElementCount=case when a.TCount>=t1.ConditionCount then 1 else 0 end from #temp1 t1 inner join (
select t2.AccountNumber,t2.QueryAlertId,t2.ParentId,SUM(ElementCount) TCount
from UpdateQALGCTE t1 inner join #temp1 t2 on t1.QueryAlertId=t2.QueryAlertId and t1.GroupId=t2.ParentId
where t1.Tlevel=@levelFlag
group by t2.AccountNumber,t2.QueryAlertId,t2.ParentId)a on a.AccountNumber=t1.AccountNumber and a.QueryAlertId=t1.QueryAlertId and a.ParentId=t1.GroupId
SET @levelFlag=@levelFlag-1
END
-- Step 4: Update Accounts as processed status
Insert Into AQAS_QueryAlertFinalResult(AccountNumber,QueryAlertId,QueryTypeId,QueryDiagnosisId,QueryName)
select distinct t1.AccountNumber,t1.QueryAlertId,mqa.QueryTypeId,mqa.QueryDiagnosisId,mqa.QueryAlertName from #Temp1 t1
inner join AQAS_PendingAccount pa on t1.AccountNumber=pa.AccountNumber
inner join MST_QueryAlert mqa on t1.QueryAlertId=mqa.QueryAlertId
where pa.PendingStatus=2 and t1.ParentId=0 and t1.ElementCount<>0
-- Step 5: Update setId to maintain difference between previous and present set's
Update AQAS_QueryAlertElementResult set SetId=a.SetId from AQAS_QueryAlertElementResult qafer inner join
(select t1.AccountNumber,MAX(SetId)+1 SetId from AQAS_QueryAlertElementResult t1 inner join AQAS_PendingAccount t2 on t1.AccountNumber=t2.AccountNumber
where t2.PendingStatus=2 group by t1.AccountNumber)a on qafer.AccountNumber=a.AccountNumber where qafer.Active=1
Update AQAS_QueryAlertFinalResult set SetId=a.SetId from AQAS_QueryAlertFinalResult qafr inner join
(select t1.AccountNumber,MAX(SetId)+1 SetId from AQAS_QueryAlertFinalResult t1 inner join AQAS_PendingAccount t2 on t1.AccountNumber=t2.AccountNumber
where t2.PendingStatus=2 group by t1.AccountNumber)a on qafr.AccountNumber=a.AccountNumber where qafr.Active=1
-- Step 6: Update to PhysicianReference For ICD,PCS and MedicalConcept
--6.1:ICD
Update AQAS_QueryAlertElementResult set PhysicianReference=dbo.fnGetPhysicianReference(qaer.AccountNumber,'ICD',qaer.Result_Source_UniqueId)
from AQAS_QueryAlertElementResult qaer
inner join AQAS_PendingAccount pa on qaer.AccountNumber=pa.AccountNumber where pa.PendingStatus=2 and qaer.ClinicalElementTypeId=1 and qaer.Active=1
--6.2:PCS
Update AQAS_QueryAlertElementResult set PhysicianReference=dbo.fnGetPhysicianReference(qaer.AccountNumber,'PCS',qaer.Result_Source_UniqueId)
from AQAS_QueryAlertElementResult qaer
inner join AQAS_PendingAccount pa on qaer.AccountNumber=pa.AccountNumber where pa.PendingStatus=2 and qaer.ClinicalElementTypeId=4 and qaer.Active=1
--6.3:MedicalConcept
Update AQAS_QueryAlertElementResult set PhysicianReference=dbo.fnGetPhysicianReference(qaer.AccountNumber,'MedicalConcept',qaer.Result_Source_UniqueId)
from AQAS_QueryAlertElementResult qaer
inner join AQAS_PendingAccount pa on qaer.AccountNumber=pa.AccountNumber where pa.PendingStatus=2 and qaer.ClinicalElementTypeId=14 and qaer.Active=1
-- Step 7: Update Accounts as processed status
UPDATE AQAS_PendingAccount set pendingStatus=1,ModifiedDate=GETUTCDATE() where PendingStatus=2
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','AQAS'
End Catch
END
GO
|
======================================================
Procedure Name:AQAS_VitalsignCheck
Description:
With help of this to checking VitalSigns for QueryAlerts.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[AQAS_VitalsignCheck] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 07/06/2019
-- Description: VitalSign Checking For AQAS
-- =============================================
CREATE PROCEDURE [dbo].[AQAS_VitalsignCheck]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
-- Step 1: Delete Previous Query Alert Results on Current Account Numbers By changing Active status from 1 to 2
/*delete qa from AQAS_QueryAlertElementResult qa
inner join AQAS_PendingAccount pa on pa.AccountNumber=qa.AccountNumber
inner join MST_QueryAlertCriteriaElement ele on ele.CriteriaElementId=qa.CriteriaElementid
where pa.PendingStatus=2 and ChangeSource='Vitalsign' and ele.CriteriaElementType='Vitalsign'*/
Update AQAS_QueryAlertElementResult set Active=0,ModifiedDate=GETUTCDATE() from AQAS_QueryAlertElementResult qa
inner join AQAS_PendingAccount pa on pa.AccountNumber=qa.AccountNumber
inner join MST_QueryAlertCriteriaElement ele on ele.CriteriaElementId=qa.CriteriaElementid
where pa.PendingStatus=2 and pa.ChangeSource='Vitalsign' and ele.CriteriaElementType='Vitalsign' and qa.Active<>0
-- Step 2: Run Current Logic for Target Accounts: It is Laboratory with Compare type check
insert into AQAS_QueryAlertElementResult (AccountNumber,DocumentId,QueryAlertId,CriteriaElementId,CriteriaElementMappingId,UniqueCriteriaId,GroupId,Result,Result_Source_UniqueId,
QueryCriteriaType,ClinicalElementTypeId,HospitalDay)
select distinct AccountNumber,DocumentId,QueryAlertId,
CriteriaElementId,CriteriaElementMappingId,
UniqueCriteriaId,groupid,Result,Result_Source_UniqueId,querycriteriatype,12 ClinicalElementTypeId,HospitalDay from(
select *,DENSE_RANK() over(partition by Accountnumber,QueryAlertId,CriteriaElementId order by Deviation desc,Result_Source_UniqueId) DevRank from(
select ftp.AccountNumber,0 DocumentId,map.QueryAlertId,
qf.CriteriaElementId,map.CriteriaElementMappingId,
qf.Source_UniqueId UniqueCriteriaId,map.groupid,ftp.VitalSign+':'+ftp.Result Result,
ftp.VitalSignID Result_Source_UniqueId,map.querycriteriatype,
case when ConditionType='<' then map.MinValue-ftp.NumericResult
when ConditionType='<=' then map.MinValue-ftp.NumericResult
when ConditionType='>' then ftp.NumericResult-map.MinValue
when ConditionType='>=' then ftp.NumericResult-map.MinValue
when ConditionType='between' then 0.5 * (((ftp.NumericResult-map.MaxValue) + (map.MinValue-ftp.NumericResult))
+ ABS((ftp.NumericResult-map.MaxValue) - (map.MinValue-ftp.NumericResult))) end Deviation,ftp.HospitalDay
from FTP_VitalSign ftp
inner join AQAS_PendingAccount pa on pa.AccountNumber=ftp.AccountNumber
inner join HIM_Visit visit on visit.AccountNumber=ftp.AccountNumber
inner join HIM_Patient patient on patient.PatientId=visit.PatientID
inner join MST_QueryAlertCriteriaElement qf on qf.Source_UniqueId=ftp.UniqueId
inner join MST_QueryAlertCriteriaElementMapping map on map.CriteriaElementId=qf.CriteriaElementId
where pa.ChangeSource='Vitalsign' and pa.PendingStatus=2
and qf.Source_UniqueId!=17 -- Because For DBP we need to compare with NumericResult1 Column
and qf.CriteriaElementType='Vitalsign'
and ftp.NumericResult is not null
and map.ConditionSpecificity='compare' and
(
(ConditionType='<' and ftp.NumericResult<map.MinValue) OR
(ConditionType='>' and ftp.NumericResult>map.MinValue) OR
(ConditionType='<=' and ftp.NumericResult<=map.MinValue) OR
(ConditionType='>=' and ftp.NumericResult>=map.MinValue) OR
(ConditionType='between' and ftp.NumericResult between map.MinValue and map.MaxValue)
)
-- Age Checking
and(
(map.AgeFrom is null and AgeTo is null) or
(DATEDIFF(DAY,patient.DOB, GETDATE()) between map.AgeFrom and map.AgeTo)
)
-- Gender Checking
and(
(map.Gender is null) or
(patient.Gender=map.Gender)
)
-- Hospital Day Checking
and(
(map.HospitalDay is null) or
(ftp.HospitalDay<=map.HospitalDay)
))a
)b where b.DevRank=1
-- TO DO: Write any other Laboratory Related Logic which is not covered in above
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','AQAS'
End Catch
END
-- Exec AQAS_VitalsignCheck
GO
|
======================================================
Description:
With help of this we need to format unstructured patient documents.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[CIRS_GetDocumentsToFormat] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 05/02/2018
-- Description: Before Processing document we are formatting the document
-- =============================================
CREATE PROCEDURE [dbo].[CIRS_GetDocumentsToFormat]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
--No Need to format Dragon(PDOC) generated reports
Update HIM_Document set Formatted=1 from HIM_Document hd
inner join MST_DocumentType mdt on mdt.DocumentTypeID=hd.DocumentTypeID
inner join MST_DocumentSource mds on mds.DocumentSourceID=mdt.DocumentSourceID
where hd.Formatted=0 and mds.DocumentSourceID=4
select hdd.DocumentID,
(CASE WHEN mds.DocumentSourceID=3
THEN
(CASE WHEN CHARINDEX('base64^',hdd.Document,1)>0
THEN (SUBSTRING(hdd.Document,CHARINDEX('base64^',hdd.Document) + LEN('base64^'),LEN(hdd.Document)))
ELSE (hdd.Document)
END)
ELSE hdd.Document
END) as Document,mds.DocumentSourceID,hd.formatted
from HIM_DocumentData hdd
inner join HIM_Document hd on hdd.DocumentID=hd.DocumentID
inner join MST_DocumentType mdt on mdt.DocumentTypeID=hd.DocumentTypeID
inner join MST_DocumentSource mds on mds.DocumentSourceID=mdt.DocumentSourceID
where mds.DocumentSourceID in (1,2,3,4) and hd.Formatted=0
and hd.DocumentID in(40280148)--32036,32037,32290,32615,32834,40077080,40077381,40077713,40077739,40078009,40078093,40078132,40078527,40078582,40078685,40078909,40079219,40079538)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','CIRS'
End Catch
END
-- exec [CIRS_GetDocumentsToFormat]
--update HIM_Document set formatted=0 where documentid in(111890,40277133,40277124,40277022)
-- select * from him_DocumentData where documentid=111918
GO
|
======================================================
Procedure Name:CIRS_GetDocumentsToProcess
Description:
With help of this to get patient documents to Analysis.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[CIRS_GetDocumentsToProcess] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 04/18/2018
-- Description: Get Pending Documents to Anlysis
-- =============================================
CREATE PROCEDURE [dbo].[CIRS_GetDocumentsToProcess]
@RunningDocumentType varchar(15)
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='@RunningDocumentType: '+''+@runningDocumentType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
select top 100 hdd.DocumentID,1 hospitalId,hdd.Document,hd.DocumentTypeID,mdt.DocumentAliasName,hd.TranscriptionDateTime,hd.AccountNumber,
hv.PatientClass,DATEDIFF(MONTH,hp.DOB,hv.AdmitDate)/12 as Age,DATEDIFF(DAY,hp.DOB,hv.AdmitDate) as AgeInDays,hp.Gender,hd.HospitalDay,
ISNULL(CONVERT(VARCHAR(10),hv.AdmitDate,101),CONVERT(VARCHAR(10),getDate(),101)) AdmitDate,ISNULL(CONVERT(VARCHAR(10),hv.DischargeDate,101),CONVERT(VARCHAR(10),getDate(),101)) DischargeDate,
CONVERT(VARCHAR(10),hp.DOB,101) DateOfBirth
from HIM_DocumentData hdd
inner join HIM_Document hd on hdd.DocumentID=hd.DocumentID
inner join MST_DocumentType mdt on mdt.DocumentTypeID=hd.DocumentTypeID
inner join HIM_Visit hv on hv.AccountNumber=hd.AccountNumber
inner join HIM_Patient hp on hp.PatientId=hv.PatientID
where (
(@runningDocumentType='O' and mdt.InternalDocumentTypeID=4) or
(@runningDocumentType='RAD' and mdt.InternalDocumentTypeID=7) or
(@runningDocumentType='RESQRY' and mdt.InternalDocumentTypeID=8) or
(@runningDocumentType='H' and mdt.InternalDocumentTypeID in (1,2,3,5,6,99))) and
hd.DocumentRunningStatusID=0 and hd.Formatted=1 and hd.HospitalDay is not null and
hv.patientclass='I' and hv.HospitalService not in ('13','16','30','40','71','94','96','97','VE','VB')
and hv.admitdate is not NULL and hv.admitdate<=GETDATE() and hv.LocationRoom!=''
--and hd.AccountNumber='350552502' --in ('350583303','350584076','350584528','350584632','350584828','350584941','350585030','350585466','350585519','350585529','350585536','350585537','350585553','350585613','350585729','350585763','350585767','350585770','350585788','350585807','350585835','350585840','350585841','350585844','350585859','350585861','350585894','350585895','350585908','350585936','350585946')
and hd.DocumentID=40308422 --in (select DocumentId from TestDocuments where RStatus=0)
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'CIRS'
End Catch
END
-- exec [CIRS_GetDocumentsToProcess] 'O'
-- update HIM_Document set DocumentRunningStatusID=0 where DocumentID=111890
GO
|
======================================================
Procedure Name:CIRS_GetDocumentsToProcess_test
Description:
With help of this to get patient documents to Analysis.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[CIRS_GetDocumentsToProcess_test] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 04/18/2018
-- Description: Get Pending Documents to Anlysis
-- =============================================
CREATE PROCEDURE [dbo].[CIRS_GetDocumentsToProcess_test]
@runningDocumentType varchar(15)
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='RunningDocumentType: '+''+@runningDocumentType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
select Top 200 hdd.DocumentID,1 hospitalId,hdd.Document,hd.DocumentTypeID,mdt.DocumentAliasName,hd.TranscriptionDateTime,hd.AccountNumber,
hv.PatientClass,DATEDIFF(MONTH,hp.DOB,hv.AdmitDate)/12 as Age,DATEDIFF(DAY,hp.DOB,hv.AdmitDate) as AgeInDays,hp.Gender,hd.HospitalDay
from HIM_DocumentData hdd
inner join HIM_Document hd on hdd.DocumentID=hd.DocumentID
inner join MST_DocumentType mdt on mdt.DocumentTypeID=hd.DocumentTypeID
inner join HIM_Visit hv on hv.AccountNumber=hd.AccountNumber
inner join HIM_Patient hp on hp.PatientId=hv.PatientID
where (
(@runningDocumentType='O' and mdt.InternalDocumentTypeID=4) or
(@runningDocumentType='RAD' and mdt.InternalDocumentTypeID=7) or
(@runningDocumentType='RESQRY' and mdt.InternalDocumentTypeID=8) or
(@runningDocumentType='H' and mdt.InternalDocumentTypeID in (1,2,3,5,6,99)))
--and hd.DocumentRunningStatusID=0
and hd.Formatted=1 and hd.HospitalDay is not null and
hv.patientclass='I' and
hv.HospitalService not in ('13','16','30','40','71','94','96','97','VE','VB') and
hv.admitdate is not NULL and hv.admitdate<=GETDATE() and hv.LocationRoom!=''
--and hdd.DocumentID in(40277254,40276638)
order by hd.DocumentID desc
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'CIRS'
End Catch
END
-- exec [CIRS_GetDocumentsToProcess_test] 'H'
-- update HIM_Document set DocumentRunningStatusID=0 where DocumentID=111890
--select * from HIM_document where DocumentRunningStatusID=2
-- select * from NLP_Lab where DocumentId=40277695
-- delete from NLP_Lab where DocumentId=40277695
-- select * from Cda_Lab where DocumentId=40277695
GO
|
======================================================
Procedure Name:CIRS_GetPendingDocumentToProcess
Description:
With help of this to get patient documents to Analysis.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[CIRS_GetPendingDocumentToProcess] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Krishna Reddy N
-- Create date: 15/05/2019
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[CIRS_GetPendingDocumentToProcess]
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='@RunningDocumentType: '+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
select Top 50 hdd.DocumentID,1 hospitalId,hdd.Document,hd.DocumentTypeID,mdt.DocumentAliasName,hd.TranscriptionDateTime,hd.AccountNumber,
hv.PatientClass,DATEDIFF(MONTH,hp.DOB,hv.AdmitDate)/12 as Age,DATEDIFF(DAY,hp.DOB,hv.AdmitDate) as AgeInDays,hp.Gender,hd.HospitalDay,
ISNULL(CONVERT(VARCHAR(10),hv.AdmitDate,101),CONVERT(VARCHAR(10),getDate(),101)) AdmitDate,ISNULL(CONVERT(VARCHAR(10),hv.DischargeDate,101),CONVERT(VARCHAR(10),getDate(),101)) DischargeDate,
CONVERT(VARCHAR(10),hp.DOB,101) DateOfBirth,idt.InternalDocumentTypeID,idt.InternalDocumentName
from HIM_DocumentData hdd
inner join HIM_Document hd on hdd.DocumentID=hd.DocumentID
inner join MST_DocumentType mdt on mdt.DocumentTypeID=hd.DocumentTypeID
inner join MST_InternalDocumentType idt on mdt.InternalDocumentTypeID=idt.InternalDocumentTypeID
inner join HIM_Visit hv on hv.AccountNumber=hd.AccountNumber
inner join HIM_Patient hp on hp.PatientId=hv.PatientID
where hd.DocumentRunningStatusID=0 and hd.Formatted=1 and hd.HospitalDay is not null
--and hv.AccountNumber in('350584076')
--('350584076')
--and hv.AccountNumber in('350583303','350584076','350584528','350584632','350584828','350584941','350585030','350585466','350585519','350585529','350585536','350585537','350585553','350585613','350585729','350585763','350585767','350585770','350585788','350585807','350585835','350585840','350585841','350585844','350585859','350585861','350585894','350585895','350585908','350585936','350585946')
and hd.DocumentId = 40265865
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'CIRS_Test'
End Catch
END
-- exec [CIRS_GetPendingDocumentToProcess]
GO
|
======================================================
Procedure Name:CIRS_GetPendingDocumentToProcess_test
Description:
With help of this to get patient documents to Analysis.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[CIRS_GetPendingDocumentToProcess_test] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Anusha Annapragada
-- Create date: 21/05/2019
-- Description: Testprocedure
-- =============================================
CREATE PROCEDURE [dbo].[CIRS_GetPendingDocumentToProcess_test]
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='@RunningDocumentType: '+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
select Top 50 hdd.DocumentID,1 hospitalId,hdd.Document,hd.DocumentTypeID,mdt.DocumentAliasName,hd.TranscriptionDateTime,hd.AccountNumber,
hv.PatientClass,DATEDIFF(MONTH,hp.DOB,hv.AdmitDate)/12 as Age,DATEDIFF(DAY,hp.DOB,hv.AdmitDate) as AgeInDays,hp.Gender,hd.HospitalDay,
ISNULL(CONVERT(VARCHAR(10),hv.AdmitDate,101),CONVERT(VARCHAR(10),getDate(),101)) AdmitDate,ISNULL(CONVERT(VARCHAR(10),hv.DischargeDate,101),CONVERT(VARCHAR(10),getDate(),101)) DischargeDate,
CONVERT(VARCHAR(10),hp.DOB,101) DateOfBirth,idt.InternalDocumentTypeID,idt.InternalDocumentName
from HIM_DocumentData hdd
inner join HIM_Document hd on hdd.DocumentID=hd.DocumentID
inner join MST_DocumentType mdt on mdt.DocumentTypeID=hd.DocumentTypeID
inner join MST_InternalDocumentType idt on mdt.InternalDocumentTypeID=idt.InternalDocumentTypeID
inner join HIM_Visit hv on hv.AccountNumber=hd.AccountNumber
inner join HIM_Patient hp on hp.PatientId=hv.PatientID
where hd.DocumentRunningStatusID=0 and hd.Formatted=1 and hd.HospitalDay is not null
and hd.documentId in(40439737)
--and hd.AccountNumber in()
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'CIRS_Test'
End Catch
END
GO
|
======================================================
Procedure Name:CIRS_RunPCSCodeExclusion
Description:
With help of this to exclude PCSCodes based on PCSCode and PCSContent.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[CIRS_RunPCSCodeExclusion] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 05/22/2018
-- Description: Excludes the Procedure Codes based on PCSCode,PCSContent(Operation)
-- =============================================
CREATE PROCEDURE [dbo].[CIRS_RunPCSCodeExclusion]
@AccountNumber varchar(30)
AS
/**** To exclude the codes, which has low priority by changing its rstatus field at TotalOperationInfo table ****/
BEGIN
Begin Try
/******** PCSCode Elimination By Code********/
update NLP_PCSCode set PcsExclusionTypeId=10 where PcsCode in(
select distinct fcode from (
select pcsc.AccountNumber,d.Proccode fcode,d.Priority dis_priority,d.GroupId dis_Groupid,
DENSE_RANK() over(PARTITION by pcsc.AccountNumber,d.groupid order by d.groupid,d.Priority desc) Rank1
from NLP_PCSCode pcsc
inner join MasterHRCM.dbo.MST_PCSExclusionByCode d on pcsc.PcsCode = d.ProcCode
where pcsc.AccountNumber=@AccountNumber and pcsc.PcsExclusionTypeId=0) a where Rank1 <> 1
) and AccountNumber = @AccountNumber and PcsExclusionTypeId=0
/******** PCSOperation Elimination By Content********/
update NLP_PCSCode set PcsExclusionTypeId=11 where PcsDesc in (
select distinct dis_operation from (
select pcsc.AccountNumber,pe.Content dis_operation,pe.Priority dis_priority,pe.GroupId dis_Groupid,
DENSE_RANK() over(PARTITION by pcsc.AccountNumber,pe.groupid order by pe.groupid,pe.Priority desc) Rank1
from NLP_PCSCode pcsc
inner join MasterHRCM.dbo.MST_PCSExclusionByContent pe on pcsc.PcsDesc=pe.content
where pcsc.AccountNumber=@AccountNumber and pcsc.PcsExclusionTypeId=0) a where Rank1 <> 1
)and AccountNumber=@AccountNumber and PcsExclusionTypeId=0
End Try
Begin Catch
Exec usp_GetDBErrorInfo @AccountNumber,'CIRS'
End Catch
END
GO
|
======================================================
Procedure Name:CIRS_UpdateDocumentContent
Description:
With help of this to update formated patient documents for proper viewing Document Structure.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[CIRS_UpdateDocumentContent] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 05/02/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[CIRS_UpdateDocumentContent]
@DocumentID int,
@Document varchar(MAX)
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='@DocumentID: '+''+cast(@DocumentID as varchar(15))+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
Begin Transaction
Update HIM_DocumentData set Document=@Document where DocumentID=@DocumentID
Update HIM_Document set Formatted=1 where DocumentID=@DocumentID
Commit Transaction
End Try
Begin Catch
If(@@TRANCOUNT>0)
rollback Transaction
Exec usp_GetDBErrorInfo @InputParamQry,'CIRS'
End Catch
END
--exec CIRS_UpdateDocumentContent 111918,
GO
|
======================================================
Procedure Name:CRI_InsertDRG
Description:
With help of this we are inserting DRG,ICD and PCS data which are coming from FTP source.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[CRI_InsertDRG] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE Procedure [dbo].[CRI_InsertDRG]
@PathFileName varchar(100),
@ReportDate varchar(25),
@ErrorNumber int output
As
Declare @TimeZoneName varchar(10)='IST'
Declare @Qry varchar(2000)
declare @reimbdrgendTime datetime
Declare @InputParamQry varchar(200)
SET @InputParamQry='PathFileName: '+''+@PathFileName+''+'|'+'ReportDate: '+''+@ReportDate+''+'|'+'TimeZoneName: '+''+@TimeZoneName+''
Begin
Begin Try
Begin Transaction
CREATE TABLE #ReimburseTemp(
[AccountNo] [varchar](50) NOT NULL,[TotalCharges] [varchar](50) NULL,[TotalCost] [varchar](50) NULL,[VarianceCharges] [varchar](50) NULL,
[VarianceCosts] [varchar](50) NULL,[ExpectedReimbursement] [varchar](50) NULL,[TotalExpected] [varchar](50) NULL,[ActualPrimary] [varchar](50) NULL,
[ActualSecondary] [varchar](50) NULL,[CompleteForBilling] [datetime] NULL,[DRG] [varchar](50) NULL,[DRGDesc] [varchar](250) NULL,
[MDC] [varchar](50) NULL,[MDCDesc] [varchar](250) NULL,[DRGWeight] [varchar](50) NULL,[AMLOS] [varchar](50) NULL,[GMLOS] [varchar](50) NULL,
[LOS] [varchar](50) NULL,[APR] [varchar](50) NULL,[APRDesc] [varchar](120) NULL,[APRWeight] [varchar](50) NULL,[SvrtyCode] [varchar](50) NULL,
[SvrtyDesc] [varchar](100) NULL,[MortalityCode] [varchar](50) NULL,[MortalityDesc] [varchar](100) NULL,[DiagCode] [varchar](50) NULL,
[DiagDesc] [varchar](250) NULL,[DiagType] [varchar](50) NULL,[PresentAtAdmit] [varchar](10) NULL,[ProCode] [varchar](50) NULL,
[ProDesc] [varchar](250) NULL,[APR_MDC] [varchar](50) NULL,[APR_MDC_Desc] [varchar](150) NULL,[APR_AM_LOS] [varchar](50) NULL,
[APR_GM_LOS] [varchar](50) NULL);
--Step 1: Build Valid BULK INSERT Statement
SET @Qry = 'BULK INSERT #ReimburseTemp
FROM ''' + @PathFileName + '''
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ''|'',
ROWTERMINATOR = ''\n''
)'
--Step 2: Execute BULK INSERT statement
EXEC (@Qry)
--Step 3:
Insert Into TMP_DRG(AccountNo,TotalCharges,TotalCost,VarianceCharges,VarianceCosts,ExpectedReimbursement,TotalExpected,ActualPrimary,ActualSecondary,CompleteForBilling,DRG,DRGDesc,MDC,MDCDesc,DRGWeight,AMLOS,GMLOS,LOS,APR,APRDesc,APRWeight,SvrtyCode,SvrtyDesc,MortalityCode,MortalityDesc,DiagCode,DiagDesc,DiagType,PresentAtAdmit,ProCode,ProDesc,APR_MDC,APR_MDC_Desc,APR_AM_LOS,APR_GM_LOS)
select AccountNo,TotalCharges,TotalCost,VarianceCharges,VarianceCosts,ExpectedReimbursement,TotalExpected,ActualPrimary,ActualSecondary,CompleteForBilling,DRG,DRGDesc,MDC,MDCDesc,DRGWeight,AMLOS,GMLOS,LOS,APR,APRDesc,APRWeight,SvrtyCode,SvrtyDesc,MortalityCode,MortalityDesc,DiagCode,DiagDesc,DiagType,PresentAtAdmit,ProCode,ProDesc,APR_MDC,APR_MDC_Desc,APR_AM_LOS,APR_GM_LOS
from #ReimburseTemp
--Step 4: INSERT data into FTP_DRG table
delete from FTP_DRG where AccountNumber in (select distinct LTrim(RTrim(AccountNo)) from #ReimburseTemp)
Insert Into FTP_DRG(AccountNumber,MSDRG,MSDRGDesc,MSDRGWeight,MSDRGMDC,MSDRGGLOS,MSDRGALOS,
APRDRG,APRDRGDesc,APRDRGWeight,APRDRGMDC,APRDRGGLOS,APRDRGALOS,SOI,ROM,TotalCharge,TotalCost,
VarianceCharge,VarianceCost,ExpectedReimbursement,TotalExpected,ReportDate)
Select distinct LTrim(RTrim(RT.AccountNo)),LTrim(RTrim(RT.DRG)),LTrim(RTrim(RT.DRGDesc)),LTrim(RTrim(RT.DRGWeight)),LTrim(RTrim(RT.MDC)),
LTrim(RTrim(RT.GMLOS)),LTrim(RTrim(RT.AMLOS)),LTrim(RTrim(RT.APR)),LTrim(RTrim(RT.APRDesc)),LTrim(RTrim(RT.APRWeight)),
LTrim(RTrim(RT.APR_MDC)),LTrim(RTrim(RT.APR_GM_LOS)),LTrim(RTrim(RT.APR_AM_LOS)),LTrim(RTrim(RT.SvrtyCode)),LTrim(RTrim(RT.MortalityCode)),
LTrim(RTrim(RT.TotalCharges)),LTrim(RTrim(RT.TotalCost)),LTrim(RTrim(RT.VarianceCharges)),LTrim(RTrim(RT.VarianceCosts)),
LTrim(RTrim(RT.ExpectedReimbursement)),LTrim(RTrim(RT.TotalExpected)),
dbo.convertTimeZoneToUtc(@TimeZoneName,CAST(@ReportDate as datetime)) as ReportDate
from #ReimburseTemp RT left join FTP_DRG r
on r.AccountNumber=LTrim(RTrim(RT.AccountNo))
and r.TotalCharge=LTrim(RTrim(RT.TotalCharges))
and r.TotalCost=LTrim(RTrim(RT.TotalCost))
and r.VarianceCharge=LTrim(RTrim(RT.VarianceCharges))
and r.VarianceCost=LTrim(RTrim(RT.VarianceCosts))
and r.ExpectedReimbursement=LTrim(RTrim(RT.ExpectedReimbursement))
and r.TotalExpected=LTrim(RTrim(RT.TotalExpected))
and r.MSDRG=LTrim(RTrim(RT.DRG))
and r.MSDRGDesc=LTrim(RTrim(RT.DRGDesc))
and r.MSDRGMDC=LTrim(RTrim(RT.MDC))
and r.MSDRGWeight=LTrim(RTrim(RT.DRGWeight))
and r.MSDRGALOS=LTrim(RTrim(RT.AMLOS))
and r.MSDRGGLOS=LTrim(RTrim(RT.GMLOS))
and ISNULL(LTrim(RTrim(r.APRDRG)),0)=ISNULL(LTrim(RTrim(RT.APR)),0)
and ISNULL(LTrim(RTrim(r.APRDRGDesc)),0)=ISNULL(LTrim(RTrim(RT.APRDesc)),0)
and r.APRDRGWeight=LTrim(RTrim(RT.APRWeight))
and ISNULL(LTrim(RTrim(r.SOI)),0)=ISNULL(LTrim(RTrim(RT.SvrtyCode)),0)
and ISNULL(LTrim(RTrim(r.ROM)),0)=ISNULL(LTrim(RTrim(RT.MortalityCode)),0)
and r.APRDRGMDC=LTrim(RTrim(RT.APR_MDC))
and r.APRDRGALOS=LTrim(RTrim(RT.APR_AM_LOS))
and r.APRDRGGLOS=LTrim(RTrim(RT.APR_GM_LOS))
where r.DRGID is null
--Log Entry Table(LOG_FTP_DRG)
Insert Into LOG_FTP_DRG(DRGID,AccountNumber,MSDRG,MSDRGDesc,MSDRGWeight,MSDRGMDC,MSDRGGLOS,MSDRGALOS,APRDRG,APRDRGDesc,APRDRGWeight,APRDRGMDC,APRDRGGLOS,APRDRGALOS,SOI,ROM,
TotalCharge,TotalCost,VarianceCharge,VarianceCost,ExpectedReimbursement,TotalExpected,UserName,ReportDate)
select distinct DRGID,AccountNumber,MSDRG,MSDRGDesc,MSDRGWeight,MSDRGMDC,MSDRGGLOS,MSDRGALOS,APRDRG,APRDRGDesc,APRDRGWeight,APRDRGMDC,APRDRGGLOS,APRDRGALOS,SOI,ROM,
TotalCharge,dg.TotalCost,VarianceCharge,VarianceCost,dg.ExpectedReimbursement,dg.TotalExpected,dg.UserName,ReportDate
from FTP_DRG dg
inner join #ReimburseTemp rt on dg.AccountNumber=LTrim(RTrim(rt.AccountNo))
--Step 5: INSERT data into FTP_DxCode table
--FTP_DxCode
delete from FTP_DXCode where AccountNumber in (select distinct LTrim(RTrim(AccountNo)) from #ReimburseTemp)
insert into FTP_DXCode(AccountNumber,DXCode,DXDesc,POA,DXType,DXPriority)
Select distinct LTrim(RTrim(RT.AccountNo)),
case when LEN(LTrim(RTrim(RT.DiagCode)))>3 then LEFT(LTrim(RTrim(RT.DiagCode)),3)+'.'+RIGHT(LTrim(RTrim(RT.DiagCode)),LEN(LTrim(RTrim(RT.DiagCode)))-3) else LTrim(RTrim(RT.DiagCode)) end,
LTrim(RTrim(RT.DiagDesc)),LTrim(RTrim(RT.PresentAtAdmit)),LTrim(RTrim(RT.DiagType)),
case LTrim(RTrim(RT.DiagType)) when 'A' then 1 when 'P' then 2 when 'S' then 3 else 4 end
from #ReimburseTemp RT left join FTP_DXCode fdx
on fdx.AccountNumber=LTrim(RTrim(RT.AccountNo))
and fdx.DXCode=case when LEN(LTrim(RTrim(RT.DiagCode)))>3 then LEFT(LTrim(RTrim(RT.DiagCode)),3)+'.'+RIGHT(LTrim(RTrim(RT.DiagCode)),LEN(LTrim(RTrim(RT.DiagCode)))-3) else LTrim(RTrim(RT.DiagCode)) end
and fdx.DXDesc=LTrim(RTrim(RT.DiagDesc))
where fdx.DXCode is null
Update FTP_DXCode set DRGID=fdg.DRGID from FTP_DXCode fdc
inner join FTP_DRG fdg on fdc.AccountNumber=fdg.AccountNumber
inner join #ReimburseTemp rt on fdg.AccountNumber=LTrim(RTrim(rt.AccountNo))
--Log Entry Table(LOG_FTP_DXCode)
Insert Into LOG_FTP_DXCode(AccountNumber,DXCode,DXDesc,POA,DXType,DXPriority,CCMCC,PhysicianID,DXDate,UserName,DRGID)
select distinct AccountNumber,DXCode,DXDesc,POA,DXType,DXPriority,dcg.CCMCC,dcg.PhysicianID,dcg.DXDate,dcg.UserName,DRGID
from Ftp_DxCode dcg
inner join #ReimburseTemp rt on dcg.AccountNumber=LTrim(RTrim(rt.AccountNo))
--Step 6: INSERT data into FTP_PcsCode table
--FTP_PCSCode
delete from FTP_PCSCode where AccountNumber in (select distinct LTrim(RTrim(AccountNo)) from #ReimburseTemp)
insert into FTP_PCSCode(AccountNumber,PCSCode,PCSDesc)
Select distinct LTrim(RTrim(RT.AccountNo)),LTrim(RTrim(RT.ProCode)),LTrim(RTrim(RT.ProDesc))
from #ReimburseTemp RT left join FTP_PCSCode fpcs
on fpcs.AccountNumber=LTrim(RTrim(RT.AccountNo))
and fpcs.PCSCode=LTrim(RTrim(RT.ProCode))
and fpcs.PCSDesc=LTrim(RTrim(RT.ProDesc))
where fpcs.PCSCode is null
Update FTP_PCSCode set DRGID=fdg.DRGID from FTP_PCSCode fpc
inner join FTP_DRG fdg on fpc.AccountNumber=fdg.AccountNumber
inner join #ReimburseTemp rt on fdg.AccountNumber=LTrim(RTrim(rt.AccountNo))
--Log Entry Table(LOG_FTP_PCSCode)
Insert Into LOG_FTP_PCSCode(AccountNumber,PCSCode,PCSDesc,PCSType,PCSPriority,PhysicianID,PCSDate,UserName,DRGID)
select distinct AccountNumber,PCSCode,PCSDesc,pcs.PCSType,PCSPriority,PhysicianID,pcs.PCSDate,pcs.UserName,DRGID
from Ftp_PcsCode pcs
inner join #ReimburseTemp rt on pcs.AccountNumber=LTrim(RTrim(rt.AccountNo))
set @ErrorNumber=0
--Commit Transaction
End Try
Begin Catch
IF(@@TRANCOUNT>0)
Rollback Transaction
Set @ErrorNumber=ERROR_NUMBER()
Exec usp_GetDBErrorInfo @InputParamQry,'CRI'
End Catch
End
GO
|
======================================================
Procedure Name:CRI_InsertDRG_NewFacilityConfig
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[CRI_InsertDRG_NewFacilityConfig] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE Procedure [dbo].[CRI_InsertDRG_NewFacilityConfig]
@PathFileName varchar(100),
@ReportDate varchar(25),
@ErrorNumber int output
As
Declare @TimeZoneName varchar(10)='IST'
Declare @Qry varchar(2000)
declare @reimbdrgendTime datetime
Declare @InputParamQry varchar(200)
SET @InputParamQry='PathFileName: '+''+@PathFileName+''+'|'+'ReportDate: '+''+@ReportDate+''+'|'+'TimeZoneName: '+''+@TimeZoneName+''
Begin
Begin Try
Begin Transaction
CREATE TABLE #ReimburseTemp(
[AccountNo] [varchar](50) NOT NULL,[TotalCharges] [varchar](50) NULL,[TotalCost] [varchar](50) NULL,[VarianceCharges] [varchar](50) NULL,
[VarianceCosts] [varchar](50) NULL,[ExpectedReimbursement] [varchar](50) NULL,[TotalExpected] [varchar](50) NULL,[ActualPrimary] [varchar](50) NULL,
[ActualSecondary] [varchar](50) NULL,[CompleteForBilling] [datetime] NULL,[DRG] [varchar](50) NULL,[DRGDesc] [varchar](250) NULL,
[MDC] [varchar](50) NULL,[MDCDesc] [varchar](250) NULL,[DRGWeight] [varchar](50) NULL,[AMLOS] [varchar](50) NULL,[GMLOS] [varchar](50) NULL,
[LOS] [varchar](50) NULL,[APR] [varchar](50) NULL,[APRDesc] [varchar](120) NULL,[APRWeight] [varchar](50) NULL,[SvrtyCode] [varchar](50) NULL,
[SvrtyDesc] [varchar](100) NULL,[MortalityCode] [varchar](50) NULL,[MortalityDesc] [varchar](100) NULL,[DiagCode] [varchar](50) NULL,
[DiagDesc] [varchar](250) NULL,[DiagType] [varchar](50) NULL,[PresentAtAdmit] [varchar](10) NULL,[ProCode] [varchar](50) NULL,
[ProDesc] [varchar](250) NULL,[APR_MDC] [varchar](50) NULL,[APR_MDC_Desc] [varchar](150) NULL,[APR_AM_LOS] [varchar](50) NULL,
[APR_GM_LOS] [varchar](50) NULL,[CCMCC] [varchar](10) NULL,[DxPhysicianID] [varchar](30) NULL,[DxDate] [datetime] NULL,[UserName] [varchar](30) NULL,
[PcsType] [varchar](10) NULL,[PcsPhysicianID] [varchar](30) NULL,[PcsDate] [datetime] NULL);
--Step 1: Build Valid BULK INSERT Statement
SET @Qry = 'BULK INSERT #ReimburseTemp
FROM ''' + @PathFileName + '''
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ''|'',
ROWTERMINATOR = ''\n''
)'
--Step 2: Execute BULK INSERT statement
EXEC (@Qry)
--Step 3:
Insert Into TMP_DRG(AccountNo,TotalCharges,TotalCost,VarianceCharges,VarianceCosts,ExpectedReimbursement,TotalExpected,ActualPrimary,ActualSecondary,CompleteForBilling,DRG,DRGDesc,MDC,MDCDesc,DRGWeight,AMLOS,GMLOS,LOS,APR,APRDesc,APRWeight,SvrtyCode,SvrtyDesc,MortalityCode,MortalityDesc,DiagCode,DiagDesc,DiagType,PresentAtAdmit,ProCode,ProDesc,APR_MDC,APR_MDC_Desc,APR_AM_LOS,APR_GM_LOS)
select AccountNo,TotalCharges,TotalCost,VarianceCharges,VarianceCosts,ExpectedReimbursement,TotalExpected,ActualPrimary,ActualSecondary,CompleteForBilling,DRG,DRGDesc,MDC,MDCDesc,DRGWeight,AMLOS,GMLOS,LOS,APR,APRDesc,APRWeight,SvrtyCode,SvrtyDesc,MortalityCode,MortalityDesc,DiagCode,DiagDesc,DiagType,PresentAtAdmit,ProCode,ProDesc,APR_MDC,APR_MDC_Desc,APR_AM_LOS,APR_GM_LOS
from #ReimburseTemp
--Step 4: INSERT data into FTP_DRG table
delete from FTP_DRG where AccountNumber in (select distinct LTrim(RTrim(AccountNo)) from #ReimburseTemp)
Insert Into FTP_DRG(AccountNumber,MSDRG,MSDRGDesc,MSDRGWeight,MSDRGMDC,MSDRGGLOS,MSDRGALOS,
APRDRG,APRDRGDesc,APRDRGWeight,APRDRGMDC,APRDRGGLOS,APRDRGALOS,SOI,ROM,TotalCharge,TotalCost,
VarianceCharge,VarianceCost,ExpectedReimbursement,TotalExpected,ReportDate,UserName)
Select distinct LTrim(RTrim(RT.AccountNo)),LTrim(RTrim(RT.DRG)),LTrim(RTrim(RT.DRGDesc)),LTrim(RTrim(RT.DRGWeight)),LTrim(RTrim(RT.MDC)),
LTrim(RTrim(RT.GMLOS)),LTrim(RTrim(RT.AMLOS)),LTrim(RTrim(RT.APR)),LTrim(RTrim(RT.APRDesc)),LTrim(RTrim(RT.APRWeight)),
LTrim(RTrim(RT.APR_MDC)),LTrim(RTrim(RT.APR_GM_LOS)),LTrim(RTrim(RT.APR_AM_LOS)),LTrim(RTrim(RT.SvrtyCode)),LTrim(RTrim(RT.MortalityCode)),
LTrim(RTrim(RT.TotalCharges)),LTrim(RTrim(RT.TotalCost)),LTrim(RTrim(RT.VarianceCharges)),LTrim(RTrim(RT.VarianceCosts)),
LTrim(RTrim(RT.ExpectedReimbursement)),LTrim(RTrim(RT.TotalExpected)),
dbo.convertTimeZoneToUtc(@TimeZoneName,CAST(@ReportDate as datetime)) as ReportDate,LTrim(RTrim(RT.UserName))
from #ReimburseTemp RT left join FTP_DRG r
on r.AccountNumber=LTrim(RTrim(RT.AccountNo))
and r.TotalCharge=LTrim(RTrim(RT.TotalCharges))
and r.TotalCost=LTrim(RTrim(RT.TotalCost))
and r.VarianceCharge=LTrim(RTrim(RT.VarianceCharges))
and r.VarianceCost=LTrim(RTrim(RT.VarianceCosts))
and r.ExpectedReimbursement=LTrim(RTrim(RT.ExpectedReimbursement))
and r.TotalExpected=LTrim(RTrim(RT.TotalExpected))
and r.MSDRG=LTrim(RTrim(RT.DRG))
and r.MSDRGDesc=LTrim(RTrim(RT.DRGDesc))
and r.MSDRGMDC=LTrim(RTrim(RT.MDC))
and r.MSDRGWeight=LTrim(RTrim(RT.DRGWeight))
and r.MSDRGALOS=LTrim(RTrim(RT.AMLOS))
and r.MSDRGGLOS=LTrim(RTrim(RT.GMLOS))
and ISNULL(LTrim(RTrim(r.APRDRG)),0)=ISNULL(LTrim(RTrim(RT.APR)),0)
and ISNULL(LTrim(RTrim(r.APRDRGDesc)),0)=ISNULL(LTrim(RTrim(RT.APRDesc)),0)
and r.APRDRGWeight=LTrim(RTrim(RT.APRWeight))
and ISNULL(LTrim(RTrim(r.SOI)),0)=ISNULL(LTrim(RTrim(RT.SvrtyCode)),0)
and ISNULL(LTrim(RTrim(r.ROM)),0)=ISNULL(LTrim(RTrim(RT.MortalityCode)),0)
and r.APRDRGMDC=LTrim(RTrim(RT.APR_MDC))
and r.APRDRGALOS=LTrim(RTrim(RT.APR_AM_LOS))
and r.APRDRGGLOS=LTrim(RTrim(RT.APR_GM_LOS))
where r.DRGID is null
--Log Entry Table(LOG_FTP_DRG)
Insert Into LOG_FTP_DRG(DRGID,AccountNumber,MSDRG,MSDRGDesc,MSDRGWeight,MSDRGMDC,MSDRGGLOS,MSDRGALOS,APRDRG,APRDRGDesc,APRDRGWeight,APRDRGMDC,APRDRGGLOS,APRDRGALOS,SOI,ROM,
TotalCharge,TotalCost,VarianceCharge,VarianceCost,ExpectedReimbursement,TotalExpected,UserName,ReportDate)
select distinct DRGID,AccountNumber,MSDRG,MSDRGDesc,MSDRGWeight,MSDRGMDC,MSDRGGLOS,MSDRGALOS,APRDRG,APRDRGDesc,APRDRGWeight,APRDRGMDC,APRDRGGLOS,APRDRGALOS,SOI,ROM,
TotalCharge,dg.TotalCost,VarianceCharge,VarianceCost,dg.ExpectedReimbursement,dg.TotalExpected,dg.UserName,ReportDate
from FTP_DRG dg
inner join #ReimburseTemp rt on dg.AccountNumber=LTrim(RTrim(rt.AccountNo))
--Step 5: INSERT data into FTP_DxCode table
--FTP_DxCode
delete from FTP_DXCode where AccountNumber in (select distinct LTrim(RTrim(AccountNo)) from #ReimburseTemp)
insert into FTP_DXCode(AccountNumber,DXCode,DXDesc,POA,DXType,DXPriority,CCMCC,PhysicianID,DXDate,UserName)
Select distinct LTrim(RTrim(RT.AccountNo)),
case when LEN(LTrim(RTrim(RT.DiagCode)))>3 then LEFT(LTrim(RTrim(RT.DiagCode)),3)+'.'+RIGHT(LTrim(RTrim(RT.DiagCode)),LEN(LTrim(RTrim(RT.DiagCode)))-3) else LTrim(RTrim(RT.DiagCode)) end,
LTrim(RTrim(RT.DiagDesc)),LTrim(RTrim(RT.PresentAtAdmit)),LTrim(RTrim(RT.DiagType)),
case LTrim(RTrim(RT.DiagType)) when 'A' then 1 when 'P' then 2 when 'S' then 3 else 4 end,LTrim(RTrim(RT.CCMCC)),LTrim(RTrim(RT.DxPhysicianID)),LTrim(RTrim(RT.DxDate)),
LTrim(RTrim(RT.UserName))
from #ReimburseTemp RT left join FTP_DXCode fdx
on fdx.AccountNumber=LTrim(RTrim(RT.AccountNo))
and fdx.DXCode=case when LEN(LTrim(RTrim(RT.DiagCode)))>3 then LEFT(LTrim(RTrim(RT.DiagCode)),3)+'.'+RIGHT(LTrim(RTrim(RT.DiagCode)),LEN(LTrim(RTrim(RT.DiagCode)))-3) else LTrim(RTrim(RT.DiagCode)) end
and fdx.DXDesc=LTrim(RTrim(RT.DiagDesc))
where fdx.DXCode is null
Update FTP_DXCode set DRGID=fdg.DRGID from FTP_DXCode fdc
inner join FTP_DRG fdg on fdc.AccountNumber=fdg.AccountNumber
inner join #ReimburseTemp rt on fdg.AccountNumber=LTrim(RTrim(rt.AccountNo))
--Log Entry Table(LOG_FTP_DXCode)
Insert Into LOG_FTP_DXCode(AccountNumber,DXCode,DXDesc,POA,DXType,DXPriority,CCMCC,PhysicianID,DXDate,UserName,DRGID)
select distinct AccountNumber,DXCode,DXDesc,POA,DXType,DXPriority,dcg.CCMCC,dcg.PhysicianID,dcg.DXDate,dcg.UserName,DRGID
from Ftp_DxCode dcg
inner join #ReimburseTemp rt on dcg.AccountNumber=LTrim(RTrim(rt.AccountNo))
--Step 6: INSERT data into FTP_PcsCode table
--FTP_PCSCode
delete from FTP_PCSCode where AccountNumber in (select distinct LTrim(RTrim(AccountNo)) from #ReimburseTemp)
insert into FTP_PCSCode(AccountNumber,PCSCode,PCSDesc,PCSType,PCSPriority,PhysicianID,PCSDate,UserName)
Select distinct LTrim(RTrim(RT.AccountNo)),LTrim(RTrim(RT.ProCode)),LTrim(RTrim(RT.ProDesc)),RT.PcsType,NULL,RT.PcsPhysicianID,RT.PcsDate,RT.UserName
from #ReimburseTemp RT left join FTP_PCSCode fpcs
on fpcs.AccountNumber=LTrim(RTrim(RT.AccountNo))
and fpcs.PCSCode=LTrim(RTrim(RT.ProCode))
and fpcs.PCSDesc=LTrim(RTrim(RT.ProDesc))
where fpcs.PCSCode is null
Update FTP_PCSCode set DRGID=fdg.DRGID from FTP_PCSCode fpc
inner join FTP_DRG fdg on fpc.AccountNumber=fdg.AccountNumber
inner join #ReimburseTemp rt on fdg.AccountNumber=LTrim(RTrim(rt.AccountNo))
--Log Entry Table(LOG_FTP_PCSCode)
Insert Into LOG_FTP_PCSCode(AccountNumber,PCSCode,PCSDesc,PCSType,PCSPriority,PhysicianID,PCSDate,UserName,DRGID)
select distinct AccountNumber,PCSCode,PCSDesc,pcs.PCSType,PCSPriority,PhysicianID,pcs.PCSDate,pcs.UserName,DRGID
from Ftp_PcsCode pcs
inner join #ReimburseTemp rt on pcs.AccountNumber=LTrim(RTrim(rt.AccountNo))
set @ErrorNumber=0
Commit Transaction
End Try
Begin Catch
IF(@@TRANCOUNT>0)
Rollback Transaction
Set @ErrorNumber=ERROR_NUMBER()
Exec usp_GetDBErrorInfo @InputParamQry,'CRI'
End Catch
End
GO
|
======================================================
Procedure Name:CRI_InsertIPMedication
Description:
With help of this we are inserting IPMedication data which are coming from FTP source.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[CRI_InsertIPMedication] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[CRI_InsertIPMedication]
@PathFileName varchar(100),
@ReportDate varchar(25),
@ErrorNumber int output
As
Declare @TimeZoneName varchar(10)='IST'
Declare @Qry varchar(2000)
Declare @InputParamQry varchar(200)
SET @InputParamQry='PathFileName: '+''+@PathFileName+''+'|'+'ReportDate: '+''+@ReportDate+''+'|'+'TimeZoneName: '+''+@TimeZoneName+''
Begin
Begin Try
Begin Transaction
CREATE TABLE #MedicationsTemp(
[Encounter] [varchar](20) NOT NULL,[MedicationDate] [datetime] NULL,[Dose] [varchar](100) NULL,[Route] [varchar](150) NULL,
[MedicationMnemonic] [varchar](150) NULL,[MedicationName] [varchar](350) NULL,[Brand] [varchar](50) NULL,[OrderType] [varchar](150) NULL,
[Category] [varchar](50) NULL,[MedStopDate] [datetime] NULL
);
--Step 1: Build Valid BULK INSERT Statement
SET @Qry = 'BULK INSERT #MedicationsTemp
FROM ''' + @PathFileName + '''
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ''|'',
ROWTERMINATOR = ''\n''
)'
--Step 2: Execute BULK INSERT statement
EXEC (@Qry)
--Step 3:
Insert Into TMP_IPMedication(Encounter,MedicationDate,Dose,Route,MedicationMnemonic,MedicationName,Brand,OrderType,Category,MedStopDate)
select Encounter,MedicationDate,Dose,Route,MedicationMnemonic,MedicationName,Brand,OrderType,Category,MedStopDate from #MedicationsTemp
--Step 4: Deleting Duplicates between TempTable and MainTable
delete MCT from #MedicationsTemp MCT inner join FTP_IPMedication MC on
LTrim(RTrim(MCT.Encounter))=MC.AccountNumber and
--LTrim(RTrim(MCT.MedicationDate))=MC.StartDate and
dbo.convertTimeZoneToUtc(@TimeZoneName,LTrim(RTrim(MCT.MedicationDate)))=MC.StartDate and
ISNULL(LTrim(RTrim(MCT.Dose)),0)=ISNULL(MC.Dose,0) and
LTrim(RTrim(MCT.MedicationName))=MC.MedicationName
--Step 5:Tuning MST_MedicalDictionary table based on getting New Medications from FTP file
insert into MST_MedicalDictionary(UniqueId,MedicationName,Mnemonic,Dose,Route,Brand,Category,OrderType)
select distinct (Row_Number() Over(order by LTrim(RTrim(mt.MedicationName)))+ (select MAX(UniqueId) from MST_MedicalDictionary)),LTrim(RTrim(mt.MedicationName)),LTrim(RTrim(mt.MedicationMnemonic)),isnull(LTrim(RTrim(mt.Dose)),'N/A'),
isnull(LTrim(RTrim(mt.Route)),'N/A'),isnull(LTrim(RTrim(mt.Brand)),'N/A'),isnull(LTrim(RTrim(mt.Category)),'N/A'),LTrim(RTrim(mt.OrderType))
from #MedicationsTemp mt left join MST_MedicalDictionary mmd on
mmd.MedicationName=LTrim(RTrim(mt.MedicationName)) and
mmd.Mnemonic=LTrim(RTrim(mt.MedicationMnemonic)) and
mmd.Dose=isnull(LTrim(RTrim(mt.Dose)),'N/A') and
mmd.Route=isnull(LTrim(RTrim(mt.Route)),'N/A') and
mmd.Brand=isnull(LTrim(RTrim(mt.Brand)),'N/A') and
mmd.Category=isnull(LTrim(RTrim(mt.Category)),'N/A') and
mmd.OrderType=LTrim(RTrim(mt.OrderType))
where mmd.UniqueId is null
--Step 6:Tuning MST_MedicationBrand table based on getting New BrandNames from FTP file
insert into MST_MedicationBrand(BrandUniqueID,BrandName)
select distinct (Row_Number() Over(order by LTrim(RTrim(mt.Brand)))+ (select MAX(BrandUniqueID) from MST_MedicationBrand)),LTrim(RTrim(mt.Brand))
from #MedicationsTemp mt
left join MST_MedicationBrand mmb on mmb.BrandName=LTrim(RTrim(mt.Brand))
where mmb.BrandUniqueID is null and LTrim(RTrim(mt.Brand)) is not null
--Step 7: INSERT data into final table
Insert into FTP_IPMedication(AccountNumber,MedicationName,Dose,Route,StartDate,EndDate,GenericName,BrandName,MedicationType,ReportDate,UniqueId)
Select distinct LTrim(RTrim(MT.Encounter)),LTrim(RTrim(MT.MedicationName)),LTrim(RTrim(MT.Dose)),LTrim(RTrim(MT.[Route])),
dbo.convertTimeZoneToUtc(@TimeZoneName,LTrim(RTrim(MT.MedicationDate))),dbo.convertTimeZoneToUtc(@TimeZoneName,LTrim(RTrim(MT.MedStopDate))),
LTrim(RTrim(MT.MedicationMnemonic)),LTrim(RTrim(MT.Brand)),LTrim(RTrim(MT.Category)),
dbo.convertTimeZoneToUtc(@TimeZoneName,CAST(@ReportDate as datetime)) as ReportDate,mmd.UniqueId
from #MedicationsTemp MT
inner join MST_MedicalDictionary mmd on
mmd.MedicationName=LTrim(RTrim(MT.MedicationName)) and
mmd.Mnemonic=LTrim(RTrim(MT.MedicationMnemonic)) and
mmd.Dose=isnull(LTrim(RTrim(MT.Dose)),'N/A') and
mmd.Route=isnull(LTrim(RTrim(MT.Route)),'N/A') and
mmd.Brand=isnull(LTrim(RTrim(MT.Brand)),'N/A') and
mmd.Category=isnull(LTrim(RTrim(MT.Category)),'N/A') and
mmd.OrderType=LTrim(RTrim(MT.OrderType))
--STEP 8: For Quwery Alerts Running based on updates on Medication
Insert Into AQAS_PendingAccount(AccountNumber,ChangeSource)
select distinct ipm.AccountNumber,qadc.DrugBrandName
from FTP_IPMedication ipm
inner join #MedicationsTemp mt on LTrim(RTrim(mt.Encounter))=ipm.AccountNumber
inner join MST_QueryAlert_DrugClassification qadc on qadc.DrugBrandName=ipm.BrandName and (isnull(ipm.[Route],'')=nullif(qadc.[Route],null))
where ipm.ReportDate=dbo.convertTimeZoneToUtc(@TimeZoneName,CAST(@ReportDate as datetime))
--Step 9: ReviewDay Update Query
update M set HospitalDay= case when DateAdd(day,Datediff(day,0,M.StartDate),0)<DateAdd(day,Datediff(day,0,V.AdmitDate),0) then 0
when DATEDIFF(day,admissionday,M.StartDate)<1 then 1 else DATEDIFF(day,admissionday,M.StartDate)+1 end from
FTP_IPMedication M inner join HIM_Visit V on M.AccountNumber = v.accountnumber inner join #MedicationsTemp mt on LTrim(RTrim(mt.Encounter)) = v.accountnumber
where V.AdmitDate is not null
--Step 10: Update BrandUniqueID
update M set BrandUniqueID=mmb.BrandUniqueID from FTP_IPMedication M
inner join #MedicationsTemp mt on LTrim(RTrim(mt.Encounter))=M.AccountNumber
inner join MST_MedicationBrand mmb on mmb.BrandName=LTrim(RTrim(mt.Brand))
where M.BrandUniqueID=0 and LTrim(RTrim(mt.Brand)) is not null
Set @ErrorNumber=0
Commit Transaction
End Try
Begin Catch
IF(@@TRANCOUNT>0)
Rollback Transaction
Set @ErrorNumber=ERROR_NUMBER()
Exec usp_GetDBErrorInfo @InputParamQry,'CRI'
End Catch
End
GO
|
======================================================
Procedure Name:CRI_InsertLab
Description:
With help of this we are inserting Laboratory data which are coming from FTP source.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[CRI_InsertLab] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[CRI_InsertLab]
@PathFileName varchar(100),
@ReportDate varchar(25),
@ErrorNumber int OUTPUT
As
--Step 1: Build Valid BULK INSERT Statement
Declare @TimeZoneName varchar(10)='IST'
Declare @Qry varchar(2000)
Declare @InputParamQry varchar(200)
SET @InputParamQry='PathFileName:'+''+@PathFileName+''+'|'+'ReportDate: '+''+@ReportDate+''+'|'+'TimeZoneName: '+''+@TimeZoneName+''
Begin
Begin Try
Begin Transaction
CREATE TABLE #LabResultsTemp(
[Encounter] [varchar](20) NOT NULL,[LabDateTime] [datetime] NULL,[TestMnemonic] [varchar](50) NULL,[TestName] [varchar](150) NULL,
[Result] [varchar](150) NULL,[ReferenceRange] [varchar](200) NULL,[Unit] [varchar](50) NULL,[Department] [varchar](50) NULL,
[LabOrder] [varchar](50) NULL,[LastActivity] [datetime] NULL
);
--SET @PathFileName = 'D:\LABResults_20170122.txt'
SET @Qry = 'BULK INSERT #LabResultsTemp
FROM ''' + @PathFileName + '''
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ''|'',
ROWTERMINATOR = ''\n''
)'
--Step 2: Execute BULK INSERT statement
EXEC (@Qry)
--Step 3:
Insert into TMP_Lab(Encounter,LabDateTime,TestMnemonic,TestName,Result,ReferenceRange,Unit,Department,LabOrder,LastActivity)
select Encounter,LabDateTime,TestMnemonic,TestName,Result,ReferenceRange,Unit,Department,LabOrder,LastActivity from #LabResultsTemp
Delete from #LabResultsTemp where LTrim(RTrim(TestMnemonic)) like 'RL**'
--Step 4: Deleting Duplicates between Temptable and MainTable
update #LabResultsTemp set result = case when result like '%.%' then substring(result,0,charindex('.',result)+3) else result end
delete LRT from #LabResultsTemp LRT inner join FTP_Lab LR on
LTrim(RTrim(LRT.Encounter))=LR.AccountNumber and
--LTrim(RTrim(LRT.LabDateTime))=LR.LabTestDate and
dbo.convertTimeZoneToUtc(@TimeZoneName,LTrim(RTrim(LRT.LabDateTime)))=LR.LabTestDate and
LTrim(RTrim(LRT.TestName))=LR.TestName and
ISNULL(LTrim(RTrim(LRT.Result)),0)=ISNULL(LR.Result,0) and
ISNULL(LTrim(RTrim(LRT.ReferenceRange)),0)=ISNULL(LR.ReferenceRange,0)
--where LTrim(RTrim(LRT.TestMnemonic)) not like 'RL**'
--Step 5: INSERT data into final table
Insert into FTP_Lab(AccountNumber,TestName,Result,Unit,ReferenceRange,LabTestDate,ReportDate)
Select distinct LTrim(RTrim(LT.Encounter)),LTrim(RTrim(LT.TestName)),LTrim(RTrim(LT.Result)),LTrim(RTrim(LT.Unit)),
LTRIM(RTrim(LT.ReferenceRange)),
dbo.convertTimeZoneToUtc(@TimeZoneName,LTrim(RTrim(LT.LabDateTime))),dbo.convertTimeZoneToUtc(@TimeZoneName,CAST(@ReportDate as datetime)) as ReportDate
from #LabResultsTemp LT
Where (LT.Result is not null or (LT.Result is null and LT.TestName is not null))
--and LTrim(RTrim(LT.TestMnemonic)) not like 'RL**'
--Step 6: To Update Nonnumeric values to NumericResult Column
Update FTP_Lab set NumericResult=case when isnumeric(replace(replace(replace(ftl.Result,'<',''),'>',''),',',''))=1 then replace(replace(replace(ftl.Result,'<',''),'>',''),',','') else NULL end
from FTP_Lab ftl inner join #LabResultsTemp lt on ftl.AccountNumber=LTrim(RTrim(lt.Encounter))
where ftl.Result!='.' --and InsertedDate>=DATEADD(MINUTE,-10,GETUTCDATE())
Update FTP_Lab set NumericResult=case when isnumeric(replace(replace(ftl.Result,'< ',''),'> ','')) = 1 then replace(replace(ftl.Result,'< ',''),'> ','') else NULL end
from FTP_Lab ftl inner join #LabResultsTemp lt on ftl.AccountNumber=LTrim(RTrim(lt.Encounter))
where ftl.Result!='.' --and InsertedDate>=DATEADD(MINUTE,-10,GETUTCDATE())--Added By Srinivas on 17-06-2019
--Step 7: HospitalDay Update Query
update l set HospitalDay= case when DateAdd(day,Datediff(day,0,l.LabTestDate),0)<DateAdd(day,Datediff(day,0,V.AdmitDate),0) then 0
when DATEDIFF(day,admissionday,l.LabTestDate)<1 then 1 else DATEDIFF(day,admissionday,l.LabTestDate)+1 end from
FTP_Lab l inner join HIM_Visit V on l.AccountNumber = v.accountnumber inner join #LabResultsTemp lt on LTrim(RTrim(lt.Encounter)) = v.accountnumber
where v.AdmitDate is not null
--Step 8: Lab Deviation,DeviationType,MinRange and MaxRange Values Updated using MST_LabDictionary Query
Update FTP_Lab Set
Deviation=case when NumericResult is null then 0 else case when NumericResult <= ld.MinRange then abs(NumericResult- ld.MinRange) when NumericResult >= ld.MaxRange then NumericResult - ld.MaxRange else 0 end End,
DeviationType=case when NumericResult is null then NULL else case when NumericResult <= ld.MinRange then 'Low' when NumericResult >= ld.MaxRange then 'High' else 'Normal' end End,
MinRange=ld.MinRange,MaxRange=ld.MaxRange,UniqueId=ld.UniqueId
from FTP_Lab flb
inner join #LabResultsTemp lt on LTrim(RTrim(lt.Encounter))=flb.AccountNumber
inner join HIM_Visit v on v.AccountNumber=flb.AccountNumber
inner join HIM_Patient p on v.PatientID=p.PatientId
inner join MST_LabTestSynonym lts on flb.TestName=lts.LabTestSynonym
inner join MST_LabDictionary ld on lts.UniqueId=ld.UniqueId and ld.Gender=p.Gender and DATEDIFF(DAY,p.DOB,v.AdmitDate) between ld.AgeFrom and ld.AgeTo
where flb.Result is not null
/*
--STEP 11: For Quwery Alerts Running based on updates on Lab Results
Insert Into AQAS_PendingAccount(AccountNumber,ChangeSource)
select distinct AccountNumber,qace.CriteriaElementType
from FTP_Lab ft
inner join #LabResultsTemp lt on LTrim(RTrim(lt.Encounter))=ft.AccountNumber
inner join MST_QueryAlertCriteriaElement qace on qace.Source_UniqueId=ft.UniqueId
where ft.ReportDate=dbo.convertTimeZoneToUtc(@TimeZoneName,CAST(@ReportDate as datetime)) and qace.CriteriaElementType='Labtest'
*/
/*
--Step 9: Split and Update LabTest ReferenceRanges to MinRange and MaxRange Columns
Update FTP_Lab set
MinRange=LTRIM(RTRIM(substring(flb.ReferenceRange,0,charindex('-',flb.ReferenceRange)))),
MaxRange=LTRIM(RTRIM(substring(flb.ReferenceRange,charindex('-',flb.ReferenceRange)+1,LEN(flb.ReferenceRange))))
from FTP_Lab flb
inner join #LabResultsTemp lt on LTrim(RTrim(lt.Encounter))=flb.AccountNumber
where flb.ReferenceRange is not null and flb.ReferenceRange like '[0-9]%' and CHARINDEX('-',flb.ReferenceRange)>0
--Step 10: Lab Deviation,DeviationType,MinRange and MaxRange Values Updated using LabTest ReferenceRange Query
Update FTP_Lab Set
Deviation=case when NumericResult is null then 0 else case when NumericResult <= MinRange then abs(NumericResult- MinRange) when NumericResult >= MaxRange then NumericResult - MaxRange else 0 end End,
DeviationType=case when NumericResult is null then NULL else case when NumericResult <= MinRange then 'Low' when NumericResult >= MaxRange then 'High' else 'Normal' end End
from FTP_Lab flb
inner join #LabResultsTemp lt on LTrim(RTrim(lt.Encounter))=flb.AccountNumber
where flb.Result is not null
--Step 11: Lab Deviation,DeviationType,MinRange,MaxRange and TestId Values Updated using LabDictionary either Step10 or Step11
Update FTP_Lab Set
Deviation=case when NumericResult is null then 0 else case when NumericResult <= flb.MinRange then abs(NumericResult- flb.MinRange) when NumericResult >= flb.MaxRange then NumericResult - flb.MaxRange else 0 end End,
DeviationType=case when NumericResult is null then NULL else case when NumericResult <= flb.MinRange then 'Low' when NumericResult >= flb.MaxRange then 'High' else 'Normal' end End,
UniqueId=ld.UniqueId
from FTP_Lab flb
inner join #LabResultsTemp lt on LTrim(RTrim(lt.Encounter))=flb.AccountNumber
inner join MST_LabTestSynonym lts on flb.TestName=lts.LabTestSynonym
inner join MST_LabDictionary ld on lts.UniqueId=ld.UniqueId
where flb.Result is not null
*/
Set @ErrorNumber=0
Commit Transaction
End Try
Begin Catch
IF(@@TRANCOUNT>0)
Rollback Transaction
SET @ErrorNumber=ERROR_NUMBER()
Exec usp_GetDBErrorInfo @InputParamQry,'CRI'
End Catch
End
GO
|
======================================================
Procedure Name:CRI_InsertNurseNote
Description:
With help of this we are inserting Nursing data which are coming from FTP source.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[CRI_InsertNurseNote] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE Procedure [dbo].[CRI_InsertNurseNote]
@PathFileName varchar(100),
@ReportDate varchar(25),
@ErrorNumber int output
As
Declare @TimeZoneName varchar(10)='IST'
Declare @Qry varchar(2000)
Declare @InputParamQry varchar(200)
SET @InputParamQry='PathFileName: '+''+@PathFileName+''+'|'+'ReportDate: '+''+@ReportDate+''+'|'+'TimeZoneName: '+''+@TimeZoneName+''
Begin
Begin Try
--Begin Transaction
CREATE TABLE #NursingTemp(
[AccNo] [varchar](50) NOT NULL,[DocumentDateTime] [datetime] NULL,[NursingDateTime] [datetime] NULL,[VSQuery] [varchar](50) NULL,
[VSQueryDescription] [varchar](max) NULL,[VSQueryValue] [varchar](500) NULL);
--Step 1: Build Valid BULK INSERT Statement
SET @Qry = 'BULK INSERT #NursingTemp
FROM ''' + @PathFileName + '''
WITH
(
FIRSTROW = 1,
FIELDTERMINATOR = ''|'',
ROWTERMINATOR = ''\n''
)'
--Step 2: Execute BULK INSERT statement
EXEC (@Qry)
--Step 3:
Insert Into TMP_NurseNote(AccNo,DocumentDateTime,NursingDateTime,VSQuery,VSQueryDescription,VSQueryValue)
select AccNo,DocumentDateTime,NursingDateTime,VSQuery,VSQueryDescription,VSQueryValue from #NursingTemp
/*
--Step 4:Tuning MST_NurseNoteDictionary table based on getting New EventType,EventDesc and EventResult from FTP file
Insert into MST_NurseNoteDictionary(UniqueId,EventType,EventDesc,EventResult)
select distinct (Row_Number() Over(order by LTrim(RTrim(nt.VSQuery)))+ (select MAX(UniqueId) from MST_NurseNoteDictionary)),LTrim(RTrim(nt.VSQuery)),
LTrim(RTrim(nt.VSQueryDescription)),LTrim(RTrim(isnull(nt.VSQueryValue,'N/A'))) from #NursingTemp nt
left join MST_NurseNoteDictionary nnd on
nnd.EventType=LTrim(RTrim(nt.VSQuery)) and
nnd.EventDesc=LTrim(RTrim(nt.VSQueryDescription)) and
nnd.EventResult=LTrim(RTrim(isnull(nt.VSQueryValue,'N/A')))
where nnd.UniqueId is null*/
/*
--Step 5: INSERT data into final table..
Insert FTP_NurseNote(AccountNumber,EventType,EventDesc,EventResult,NurseNoteDate,ReportDate)
Select distinct LTrim(RTrim(MT.AccNo)),LTrim(RTrim(MT.VSQuery)),LTrim(RTrim(MT.VSQueryDescription)),
LTrim(RTrim(isnull(MT.VSQueryValue,'N/A'))),
dbo.convertTimeZoneToUtc(@TimeZoneName,LTrim(RTrim(MT.NursingDateTime))),dbo.convertTimeZoneToUtc(@TimeZoneName,CAST(@ReportDate as datetime)) as ReportDate
from #NursingTemp MT
left join FTP_NurseNote n on n.AccountNumber=LTrim(RTrim(MT.AccNo)) and n.NurseNoteDate=LTrim(RTrim(MT.NursingDateTime))
and n.EventType=LTrim(RTrim(MT.VSQuery)) and n.EventDesc=LTrim(RTrim(MT.VSQueryDescription)) and n.EventResult=LTrim(RTrim(isnull(MT.VSQueryValue,'N/A')))
where n.NurseNoteID is null
*/
--Step 5: INSERT data into final table..
Insert FTP_NurseNote(AccountNumber,NurseNoteDate,ReportDate,UniqueId)
Select distinct LTrim(RTrim(MT.AccNo)),dbo.convertTimeZoneToUtc(@TimeZoneName,LTrim(RTrim(MT.NursingDateTime))),
dbo.convertTimeZoneToUtc(@TimeZoneName,CAST(@ReportDate as datetime)) as ReportDate,nnd.UniqueId
from #NursingTemp MT
inner join MST_NurseNoteDictionary nnd on nnd.EventType=LTrim(RTrim(MT.VSQuery)) and nnd.EventDesc=LTrim(RTrim(MT.VSQueryDescription)) and nnd.EventResult=LTrim(RTrim(isnull(MT.VSQueryValue,'N/A')))
left join FTP_NurseNote n on n.AccountNumber=LTrim(RTrim(MT.AccNo)) and
n.NurseNoteDate=dbo.convertTimeZoneToUtc(@TimeZoneName,LTrim(RTrim(MT.NursingDateTime))) and
n.UniqueId=nnd.UniqueId
where n.NurseNoteID is null
--Step 5: ReviewDay Update Query
update N set HospitalDay= case when DateAdd(day,Datediff(day,0,N.NurseNoteDate),0)<DateAdd(day,Datediff(day,0,V.AdmitDate),0) then 0
when DATEDIFF(day,admissionday,N.NurseNoteDate)<1 then 1 else DATEDIFF(day,admissionday,N.NurseNoteDate)+1 end from
FTP_NurseNote N inner join HIM_Visit V on N.AccountNumber = v.accountnumber inner join #NursingTemp NT on LTrim(RTrim(NT.AccNo)) = v.accountnumber
where V.AdmitDate is not null
/*
--STEP 6: For Quwery Alerts Running based on updates on NursingReport
Insert Into AQAS_PendingAccount(AccountNumber,ChangeSource,EffectiveDate)
select distinct NT.AccNo,'NurseNote',fn.InsertedDate
from #NursingTemp NT
inner join MST_NurseNoteDictionary nnd on nnd.EventType=LTrim(RTrim(NT.VSQuery)) and nnd.EventDesc=LTrim(RTrim(NT.VSQueryDescription)) and nnd.EventResult=LTrim(RTrim(isnull(NT.VSQueryValue,'N/A')))
left join FTP_NurseNote fn on fn.AccountNumber=LTrim(RTrim(NT.AccNo)) and fn.NurseNoteDate=LTrim(RTrim(NT.NursingDateTime)) and fn.UniqueId=nnd.UniqueId
where fn.NurseNoteID is null
*/
Set @ErrorNumber=0
--Commit Transaction
End Try
Begin Catch
--IF(@@TRANCOUNT>0)
--Rollback Transaction
Set @ErrorNumber=ERROR_NUMBER()
Exec usp_GetDBErrorInfo @InputParamQry,'CRI'
End Catch
End
GO
|
======================================================
Procedure Name:CRI_InsertVitalSign
Description:
With help of this we are inserting VitalSigns data which are coming from FTP source.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[CRI_InsertVitalSign] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE Procedure [dbo].[CRI_InsertVitalSign]
@PathFileName varchar(100),
@ReportDate varchar(25),
@ErrorNumber int output
As
Declare @TimeZoneName varchar(10)='IST'
Declare @Qry varchar(2000)
Declare @InputParamQry varchar(200)
SET @InputParamQry='PathFileName: '+''+@PathFileName+''+'|'+'ReportDate: '+''+@ReportDate+''+'|'+'TimeZoneName: '+''+@TimeZoneName+''
Begin
Begin Try
Begin Transaction
CREATE TABLE #VitalTemp(
[AccountNo] [varchar](20) NOT NULL,[VitalDate] [datetime] NULL,[VitalName] [varchar](50) NULL,[Result] [varchar](250) NULL);
--Step 1: Build Valid BULK INSERT Statement
SET @Qry = 'BULK INSERT #VitalTemp
FROM ''' + @PathFileName + '''
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ''|'',
ROWTERMINATOR = ''\n''
)'
--Step 2: Execute BULK INSERT statement
EXEC (@Qry)
--Step 3:
Insert Into TMP_VitalSign(AccountNo,VitalDate,VitalName,Result)
select AccountNo,VitalDate,VitalName,Result from #VitalTemp
--Step 3: Deleteting duplicates between Temptable and MainTable
delete vtl from #VitalTemp vtl inner join FTP_VitalSign mtv on
LTrim(RTrim(vtl.AccountNo))=mtv.AccountNumber and
--LTrim(RTrim(vtl.VitalDate))=mtv.VitalSignDate and
dbo.convertTimeZoneToUtc(@TimeZoneName,vtl.VitalDate)=mtv.VitalSignDate and
LTrim(RTrim(vtl.VitalName))=mtv.VitalSign and
LTrim(RTrim(vtl.Result))=mtv.Result
select distinct LTrim(RTrim(AccountNo)) AccountNo,LTrim(RTrim(VitalDate)) VitalDate,LTrim(RTrim(VitalName)) VitalName,LTrim(RTrim(Result)) Result,
null Result1,LTrim(RTrim(Result)) StandardValue into #Temp1 from #VitalTemp where Result is not null
--Step 4: INSERT data into final table
update #Temp1 set Result = case when result like'[A-Za-z]%'
then case when substring(result,2,charindex(' ',result,charindex(' ',result)+1))='' then substring(result,charindex(' ',result),len(result))
else substring(ltrim(rtrim(substring(result,charindex(' ',result),len(result)))),0,charindex(' ',ltrim(rtrim(substring(result,charindex(' ',result),len(result))))))end
else case when substring(result,0,charindex(' ',result))='' then result else substring(result,0,charindex(' ',result))end end
update #Temp1 set result = replace(result,'%','') where result like'%[%]%'
update #Temp1 set Result=SUBSTRING(Result,1,CHARINDEX('/',Result)-1),Result1=SUBSTRING(Result,CHARINDEX('/',Result)+1,LEN(Result))
where Result like '%[/]%' and CHARINDEX('/',Result,1)>0
--Step 5:
CREATE TABLE #VTemp(
[AccountNo] [varchar](20),[VitalDate] [datetime] NULL,[VitalName] [varchar](50) NULL,[Result] [numeric](18,2) NULL,
[Result1] [varchar](250) NULL,[StandardValue] [varchar](250) NULL);
--Step 6:
Insert into #VTemp(AccountNo,VitalDate,VitalName,Result,Result1,StandardValue)
select AccountNo,VitalDate,VitalName,Result,Result1,StandardValue from #Temp1 where result not like'*********'
--Step 7: Convert C Temperature to F
update #VTemp set Result=dbo.Convert_Temperature(Result,'C') from #VTemp where VitalName in ('Temp','Skin Temp') and Result<50.0
--Step 8: Convert WT from LBS, GMS to KGS
update #VTemp set Result=cast(round(Result*0.45359237,2) as numeric(36,2)) from #VTemp where VitalName='WT' and Standardvalue like '% lbs%'
update #VTemp set Result=cast(round(Result/1000,2) as numeric(36,2)) from #VTemp where VitalName='WT' and Standardvalue like '% gms%'
--Step 9: Convert Height to Inches
update #VTemp set Result=cast(round(Result*2.54,2) as numeric(36,2)) from #VTemp where VitalName='HT' and Standardvalue like '% IN%'
--Step 10: Inserting Final Temp table values into Real Table
Insert Into FTP_VitalSign(AccountNumber,VitalSign,Result,NumericResult,NumericResult2,VitalSignDate,ReportDate)
Select distinct VT.AccountNo,VT.VitalName,VT.StandardValue,VT.Result,VT.Result1,
dbo.convertTimeZoneToUtc(@TimeZoneName,VT.VitalDate),dbo.convertTimeZoneToUtc(@TimeZoneName,CAST(@ReportDate as datetime)) as ReportDate
from #VTemp VT where VT.Result is not null
Update FTP_VitalSign set NumericResult = cast(round(NumericResult,0) as int) where VitalSign not in ('TEMP','SKIN TEMP','HT','WT')
and InsertedDate>=DATEADD(MINUTE,-10,GETDATE())
--Step 11:ReviewDay Update Query
update mv set HospitalDay= case when DateAdd(day,Datediff(day,0,mv.VitalSignDate),0)<DateAdd(day,Datediff(day,0,V.AdmitDate),0) then 0
when DATEDIFF(day,admissionday,mv.VitalSignDate)<1 then 1 else DATEDIFF(day,admissionday,mv.VitalSignDate)+1 end from
FTP_VitalSign mv inner join HIM_Visit V on mv.AccountNumber = v.accountnumber inner join #VTemp vt on vt.AccountNo = v.accountnumber
where V.AdmitDate is not null
--Step 12: Updating UniqueId using Standard Vital Dictionary and Vital Synonym tables.
Update FTP_VitalSign set UniqueId=mvsd.UniqueId from FTP_VitalSign fvs
inner join #VTemp vt on vt.AccountNo=fvs.AccountNumber
inner join HIM_Visit v on v.AccountNumber=vt.AccountNo
inner join HIM_Patient p on p.PatientId=v.PatientID
inner join MST_VitalSignSynonym mvs on mvs.VitalSignSynonym=fvs.VitalSign
inner join MST_VitalSignDictionary mvsd on mvsd.UniqueId=mvs.UniqueId and mvsd.Gender=p.Gender
--STEP 13: For Quwery Alerts Running based on updates on VitalSigns
Insert Into AQAS_PendingAccount(AccountNumber,ChangeSource)
select distinct fv.AccountNumber,qace.CriteriaElementType
from FTP_VitalSign fv
inner join #VTemp vt on vt.AccountNo=fv.AccountNumber
inner join MST_QueryAlertCriteriaElement qace on qace.Source_UniqueId=fv.UniqueId
where fv.ReportDate=dbo.convertTimeZoneToUtc(@TimeZoneName,CAST(@ReportDate as datetime)) and qace.CriteriaElementType='VitalSign'
Set @ErrorNumber=0
Commit Transaction
End Try
Begin Catch
IF(@@TRANCOUNT>0)
Rollback Transaction
Set @ErrorNumber=ERROR_NUMBER()
Exec usp_GetDBErrorInfo @InputParamQry,'CRI'
End Catch
End
GO
|
======================================================
Procedure Name:GetDayLabResult
Description:
With help of this to get day wise lab results.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[GetDayLabResult] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 07/05/2019
-- Description: Daywise LabResults
-- =============================================
CREATE PROCEDURE [dbo].[GetDayLabResult]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@SourceType varchar(10),
@CDI int,
@LabDay int
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+'SourceType: '+''+@SourceType+''+'|'+'CDI: '+''+cast(@CDI as varchar(15))+''+'LabDay: '+''+cast(@LabDay as varchar(15))+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
SELECT AccountNumber,DocumentId,TestName,Result,NumericResult,Unit,MinRange,MaxRange,LabTestDate,LOINCCode,SectionHeader,HospitalDay,LabDay,Deviation,UniqueId,TestMnemonic,SourceType,
CDI,LabId
from (
select DENSE_RANK() OVER (PARTITION BY AccountNumber,TestName ORDER BY TestName,convert(datetime,convert(varchar(10),Labtestdate,101))) as LabDay,
RANK() OVER (PARTITION BY AccountNumber,TestName,convert(datetime,convert(varchar(10),Labtestdate,101)) ORDER BY TestName,Status desc,convert(datetime,convert(varchar(10),Labtestdate,101)),Deviation desc) as rank1,
AccountNumber,DocumentId,TestName,Result,NumericResult,Unit,MinRange,MaxRange,LabTestDate,LOINCCode,SectionHeader,HospitalDay,Deviation,UniqueId,TestMnemonic,SourceType,CDI,LabId
from(
select distinct AccountNumber,DocumentId,TestName,Result,NumericResult,Unit,MinRange,MaxRange,LabTestDate,LOINCCode,SectionHeader,HospitalDay,UniqueId,TestMnemonic,SourceType,CDI,
Status= case when NumericResult IS NULL then 0 else case when NumericResult not between MinRange and MaxRange then 1 when NumericResult between MinRange and MaxRange then 0 end END,
Deviation,LabId
--Deviation=case when NumericResult is null then 0 else case when NumericResult <= MinRange then abs(NumericResult- MinRange) when NumericResult >= MaxRange then NumericResult - MaxRange else 0 end End
from LabTestView where AccountNumber=@AccountNumber and SourceType=@SourceType and CDI=@CDI and RESULT is not null
) a group by AccountNumber,DocumentId,TestName,Result,NumericResult,Unit,MinRange,MaxRange,LabTestDate,LOINCCode,SectionHeader,HospitalDay,Status,Deviation,UniqueId,TestMnemonic,SourceType,CDI,LabId
) b
where LabDay=@LabDay and rank1=1
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'USER'
End Catch
END
--Exec getDayLabResult '350585767','FTP',1,1
GO
|
======================================================
Procedure Name:GetDayVitalSign
Description:
With help of this to get day wise VitalSigns.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[GetDayVitalSign] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 06/05/2019
-- Description: Daywise Vitals List
-- =============================================
CREATE PROCEDURE [dbo].[GetDayVitalSign]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@SourceType varchar(10),
@VSignDay int
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+'SourceType: '+''+@SourceType+''+'|'+'VSignDay: '+''+cast(@VSignDay as varchar(15))+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
select AccountNumber,GETDATE() DTime,VitalSign,
case when NumericResult>MaxRange then 'High' when NumericResult between MinRange and MaxRange then 'Normal' else 'ND' end DeviationType,NumericResult,
NULL NumericResult2,SourceType,UniqueId,'Max' VSValType,MinRange,MaxRange,VitalSignID,VSignDay
from(
select AccountNumber,VitalSign,NumericResult,SourceType,UniqueId,MinRange,MaxRange,VitalSignID,vitalSignDate,VSignDay,
RANK() Over(Partition By AccountNumber,VitalSign,VSignDay order by NumericResult desc,vitalSignDate desc) Rank
from(
select AccountNumber,VitalSign,NumericResult,SourceType,UniqueId,MinRange,MaxRange,VitalSignID,vitalSignDate,
DENSE_RANK() Over (Partition By AccountNumber,VitalSign order by VitalSign,convert(datetime,convert(varchar(10),VitalSignDate,101))) as VSignDay
from VitalSignView where AccountNumber=@AccountNumber and SourceType=@SourceType and VitalSign in ('Temperature','Pulse','Respiratory')
)a where a.VSignDay=@VSignDay
)b where b.Rank=1
union
select AccountNumber,GETDATE() DTime,VitalSign,
case when NumericResult<MinRange then 'Low' when NumericResult between MinRange and MaxRange then 'Normal' else 'ND' end DeviationType,NumericResult,
NULL NumericResult2,SourceType,UniqueId,'Min' VSValType,MinRange,MaxRange,VitalSignID,VSignDay
from(
select AccountNumber,VitalSign,NumericResult,SourceType,UniqueId,MinRange,MaxRange,VitalSignID,vitalSignDate,VSignDay,
RANK() Over(Partition By AccountNumber,VitalSign,VSignDay order by NumericResult,vitalSignDate desc) Rank
from(
select AccountNumber,VitalSign,NumericResult,SourceType,UniqueId,MinRange,MaxRange,VitalSignID,vitalSignDate,
DENSE_RANK() Over (Partition By AccountNumber,VitalSign order by VitalSign,convert(datetime,convert(varchar(10),VitalSignDate,101))) as VSignDay
from VitalSignView where AccountNumber=@AccountNumber and SourceType=@SourceType and VitalSign in ('Temperature','Pulse','Respiratory')
)a where a.VSignDay=@VSignDay
)b where b.Rank=1
union
select AccountNumber,GETDATE() Dtime,VitalSign,'ND',NumericResult,NumericResult2,SourceType,UniqueId,'NA',MinRange,MaxRange,VitalSignID,VSignDay
from(
select AccountNumber, VitalSign,NumericResult,NumericResult2,sdif+ddif totaldev,MaxRange,MinRange,PanicMaxRange,PanicMinRange,SourceType,UniqueId,VitalSignID,VitalSignDate,VSignDay,
RANK() Over(Partition By AccountNumber,VSignDay order by sdif+ddif desc, vitalSignDate desc) Rank
from
(
select AccountNumber, VitalSign,NumericResult,NumericResult2,
case when NumericResult<MinRange then MinRange-NumericResult when NumericResult>MaxRange then NumericResult-MaxRange else 0 end sdif,
case when NumericResult2<PanicMinRange then PanicMinRange-NumericResult2 when NumericResult2>PanicMaxRange then NumericResult2-PanicMaxRange else 0 end ddif,
MaxRange,MinRange,PanicMaxRange,PanicMinRange,SourceType,UniqueId,VitalSignID,VitalSignDate,
DENSE_RANK() Over (Partition By AccountNumber order by convert(datetime,convert(varchar(10),VitalSignDate,101))) as VSignDay
from VitalSignView where AccountNumber=@AccountNumber and SourceType=@SourceType and NumericResult2 is not null and VitalSign='bp'
)a where a.VSignDay=@VSignDay
)b where b.Rank=1
union
select AccountNumber,DTime,VitalSign,'ND',NumericResult,NumericResult2,SourceType,UniqueId,'NA',MinRange,MaxRange,VitalSignID,VSignDay
from(
select AccountNumber,GETDATE() DTime,VitalSign,NumericResult,NULL NumericResult2,SourceType,UniqueId,MinRange,MaxRange,VitalSignID,VitalSignDate,VSignDay,
RANK() Over(Partition By AccountNumber,VitalSign,VSignDay order by vitalSignDate desc) Rank
from (
select AccountNumber,GETDATE() DTime,VitalSign,NumericResult,NULL NumericResult2,SourceType,UniqueId,MinRange,MaxRange,VitalSignID,VitalSignDate,
DENSE_RANK() Over (Partition By AccountNumber,VitalSign order by VitalSign,convert(datetime,convert(varchar(10),VitalSignDate,101))) as VSignDay
from VitalSignView where AccountNumber=@AccountNumber and SourceType=@SourceType and VitalSign in('Height','Weight')
)a where a.VSignDay=@VSignDay
)b where b.Rank=1
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'USER'
End Catch
END
--Exec GetDayVitalSign '350585767','FTP',1
GO
|
======================================================
Procedure Name:GetHeightWeightBMIInVitalSign
Description:
With help of this to get the information about VitalSigns like Height and Weight.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[GetHeightWeightBMIInVitalSign] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 10/05/2019
-- Description: Info about Vitals Height,Weight and BMI
-- =============================================
CREATE PROCEDURE [dbo].[GetHeightWeightBMIInVitalSign]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@SourceType varchar(20)
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+'SourceType: '+''+@SourceType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
select a.AccountNumber,a.VitalSign,a.VitalSignDate,a.Result,a.NumericResult,a.NumericResult2,a.SourceType,a.UniqueId,a.VitalSignID
from (
select AccountNumber,VitalSign,VitalSignDate,Result,NumericResult,NumericResult2,SourceType,UniqueId,VitalSignID,
RANK() Over (Partition By AccountNumber,VitalSign order by VitalSignDate desc) rank
from VitalSignView where AccountNumber=@AccountNumber and SourceType=@SourceType and VitalSign in('Height','Weight'))a where a.rank=1
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:GetPatientDetails
Description:
With help of this to get dynamic results related to Patient details.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[GetPatientDetails] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 17/07/2019
-- Description: Patient Details Info
-- =============================================
CREATE PROCEDURE [dbo].[GetPatientDetails]
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@ApplicationUserId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join MST_PrimaryDRGGrouper MST_PrimaryDRGGrouper on MST_PrimaryDRGGrouper.PrimaryDRGGrouperId=MST_Insurance_PrimaryDRGGrouper.PrimaryDRGGrouperId
left join NLP_DRG NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join MST_HospitalService MST_HospitalService on HIM_Visit.HospitalService=MST_HospitalService.HospitalServiceCode
left join User_FollowupAccount User_FollowupAccount on HIM_Visit.AccountNumber=User_FollowupAccount.AccountNumber
left join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
left join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
left join User_ClosedAccount User_ClosedAccount on HIM_Visit.AccountNumber=User_ClosedAccount.AccountNumber
left join User_HoldAccount User_HoldAccount on HIM_Visit.AccountNumber=User_HoldAccount.AccountNumber
left join Log_User_AssignedAccount Log_User_AssignedAccount on HIM_Visit.AccountNumber=Log_User_AssignedAccount.AccountNumber
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,COUNT(distinct DocumentId) TotalRevDocs,ApplicationUserId from User_DocumentReview where ReviewStatus=1 group by AccountNumber,ApplicationUserId)
User_DocumentReview on User_DocumentReview.AccountNumber=HIM_Visit.AccountNumber and User_DocumentReview.ApplicationUserId='+cast(@ApplicationUserId as varchar)+'
left join (select AccountNumber,LOS,case when PrimaryDRGGrouperAliasName=''MSDRG'' then (MSDRGGLOS-LOS) when PrimaryDRGGrouperAliasName=''APRDRG'' then (APRDRGGLOS-LOS) else 0 end OUStay
from DRGView where SourceType=''NLP'') NLP_DRG1 on NLP_DRG1.AccountNumber=HIM_Visit.AccountNumber
left join MasterHrcm.dbo.MST_ApplicationUser MST_ApplicationUser on User_AssignedAccount.AssignTo=MST_ApplicationUser.ApplicationUserId'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' where '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','USER'
End Catch
END
--Exec GetPatientDetails 'HIM_Visit.AccountNumber,HIM_Visit.MRN','','',10
GO
|
======================================================
Procedure Name:GetPriorityDXCodeExclusion
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[GetPriorityDXCodeExclusion] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 16/05/2019
-- Description: DxCode Exclusions
-- =============================================
CREATE PROCEDURE [dbo].[GetPriorityDXCodeExclusion]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DxCode varchar(10),
@ExclusionTypeId int
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+'@DxCode: '+''+@DxCode+''+'|'+'ExclusionTypeId: '+''+cast(@ExclusionTypeId as varchar(15))+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
If(@ExclusionTypeId=2)
Begin
select distinct dxE.IcdCode DxCode,dxDsc.ShortDesc
from NLP_DxCode ndx
inner join MasterHrcm.dbo.KB_DxExclusionCode dxE on ndx.DxCode=dxE.IcdCode
inner join MasterHRCM.dbo.CMS_DxCodeDesc dxDsc on ndx.DxCode=dxDsc.ICD10Code and dxDsc.[Status]=1
where ndx.AccountNumber=@AccountNumber and dxE.IcdCode<>@DxCode and dxE.Priority<>1 and ndx.DxExclusionTypeId in (0,1,2,3)
and dxE.GroupId in (select distinct GroupId from MasterHrcm.dbo.KB_DxExclusionCode where IcdCode=@DxCode)
End
Else If(@ExclusionTypeId=3)
Begin
select distinct dxTE.Code2 DxCode,dxDsc.ShortDesc
from MasterHrcm.dbo.KB_DxTabExclusion1Code dxTE
inner join NLP_DxCode ndx on dxTE.Code2=ndx.DxCode
inner join MasterHRCM.dbo.CMS_DxCodeDesc dxDsc on dxDsc.ICD10Code=dxTE.Code2
where ndx.AccountNumber=@AccountNumber and dxTE.Code1=@DxCode and dxDsc.[Status]=1
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:Metrics_GetCdsHomePageMetrics
Description:
with help of this to get CDS home page metrics regarding Single date or date range.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[Metrics_GetCdsHomePageMetrics] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Krishna Reddy
-- Create date: July 19th 2019
-- Description: To get CDS home page metrics regarding Single date or date range
-- CAUTION TO USE: TODATE ALWAYS SHOULD BE TARGET DATE + NEEXT DAY, EVEN IN SINGLE DAY METRICS ALSO FOLLOW SAME
-- EXAMPLE 1 METRICS FOR JAN 1ST (ONE DAY) ==> FROM DATE: 01/01/2019, TODATE 01/02/2019
--- EXAMPLE 2 METRICS FOR JAN 1ST AND JAN4Th ==> FROM DATE: 01/01/2019 AND TODATE: 01/05/2019
-- AND DATE FORMAT SHOULD BE MM/DD/YYYY
-- =============================================
CREATE PROCEDURE [dbo].[Metrics_GetCdsHomePageMetrics]
@ApplicationUserId int,
@FromDate date,
@ToDate date
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='ApplicationUserId: '+''+cast(@ApplicationUserId as varchar(15))+''+'|'+
'FromDate: '+''+cast(@FromDate as varchar)+''+'|'+
'@ToDate: '+''+cast(@ToDate as varchar)+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
-- 1. Create Temp Table for Required Metrics
CREATE Table #CDSHomePageMetrics(Assigned int,Reviewed int,ReReviewed int,
QueriedAccounts int, TotalQueries int,Responded int,NotResponded int,
Agreed int,NotAgreed int, DRGImpact int, QualityImpact int, SOIImpact int,
ROMImpact int,OtherImpact int,QueryRate float,ResponseRate float,AgreementRate float,
DRGImpactRate float, AvgAccountsPerDay int,AvgResponseTime int)
-- 2. Insert Initial Vales for metrics
INSERT INTO #CDSHomePageMetrics values(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0.0,0.0,0.0,0,0)
-- 3. Accounts Assigned
UPDATE #CDSHomePageMetrics set Assigned=
(Select COUNT(distinct AccountNumber) AssignedCount from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and
dbo.fnFormatDate(AssignedDate,'mm/dd/yyyy') between @FromDate and @ToDate)
-- 4. Accounts Reviewed
UPDATE #CDSHomePageMetrics set Reviewed=
(Select COUNT(distinct AccountNumber) AssignedCount from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and InitialReviewDate is not Null
and dbo.fnFormatDate(InitialReviewDate,'mm/dd/yyyy') between @FromDate and @ToDate)
-- 5. Accounts Queried
UPDATE #CDSHomePageMetrics set QueriedAccounts=
(Select COUNT(distinct AccountNumber) AssignedCount from Metrics_CDSMetrics where
CDSID=@ApplicationUserId /* Assuming Same CDS Will Create Query, change if you have QueryById in CDS Metrics Table*/
and QueryId is not null and
dbo.fnFormatDate(QueryDate,'mm/dd/yyyy') between @FromDate and @ToDate)
-- 6. Total Queries
UPDATE #CDSHomePageMetrics set TotalQueries=
(Select COUNT(distinct QueryId) AssignedCount from Metrics_CDSMetrics where
CDSID=@ApplicationUserId /* Assuming Same CDS Will Create Query, change if you have QueryById in CDS Metrics Table*/
and QueryId is not null and
dbo.fnFormatDate(QueryDate,'mm/dd/yyyy') between @FromDate and @ToDate)
-- 7. Responded Queries
UPDATE #CDSHomePageMetrics set Responded=
(Select COUNT(distinct QueryId) AssignedCount from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is not null
and QueryId is not null and
dbo.fnFormatDate(RespondedDate,'mm/dd/yyyy') between @FromDate and @ToDate)
-- 8. Not Responded Queries
UPDATE #CDSHomePageMetrics set NotResponded=
(Select COUNT(distinct QueryId) AssignedCount from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is null
and QueryId is not null and
dbo.fnFormatDate(QueryDate,'mm/dd/yyyy') between @FromDate and @ToDate)
-- 9. Agreed Queries
UPDATE #CDSHomePageMetrics set Agreed=
(Select COUNT(distinct QueryId) AssignedCount from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is not null and ResponseOutcome='Favorable'
and QueryId is not null and /* Not Required But making more Strict*/
dbo.fnFormatDate(RespondedDate,'mm/dd/yyyy') between @FromDate and @ToDate)
-- 10. Not Agreed Queries
UPDATE #CDSHomePageMetrics set NotAgreed=
(Select COUNT(distinct QueryId) AssignedCount from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is not null
and QueryId is not null and ResponseOutcome!='Favorable' and
dbo.fnFormatDate(RespondedDate,'mm/dd/yyyy') between @FromDate and @ToDate)
-- 11. DRG Impacted Queries Count
UPDATE #CDSHomePageMetrics set DRGImpact=
(Select COUNT(distinct QueryId) AssignedCount from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is not null
and QueryId is not null and (PrimaryImpact='DRG Impact' or SecondaryImpact1='DRG Impact'
or SecondaryImpact2='DRG Impact' or SecondaryImpact3='DRG Impact')
and dbo.fnFormatDate(RespondedDate,'mm/dd/yyyy') between @FromDate and @ToDate)
-- 12. Quality Impacted Queries Count
UPDATE #CDSHomePageMetrics set QualityImpact=
(Select COUNT(distinct QueryId) AssignedCount from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is not null
and QueryId is not null and (PrimaryImpact='Quality Impact' or SecondaryImpact1='Quality Impact'
or SecondaryImpact2='Quality Impact' or SecondaryImpact3='Quality Impact')
and dbo.fnFormatDate(RespondedDate,'mm/dd/yyyy') between @FromDate and @ToDate)
-- 13. SOI Impacted Queries Count
UPDATE #CDSHomePageMetrics set SOIImpact=
(Select COUNT(distinct QueryId) AssignedCount from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is not null
and QueryId is not null and (PrimaryImpact='SOI Impact' or SecondaryImpact1='SOI Impact'
or SecondaryImpact2='SOI Impact' or SecondaryImpact3='SOI Impact')
and dbo.fnFormatDate(RespondedDate,'mm/dd/yyyy') between @FromDate and @ToDate)
-- 14. ROM Impacted Queries Count
UPDATE #CDSHomePageMetrics set ROMImpact=
(Select COUNT(distinct QueryId) AssignedCount from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is not null
and QueryId is not null and (PrimaryImpact='ROM Impact' or SecondaryImpact1='ROM Impact'
or SecondaryImpact2='ROM Impact' or SecondaryImpact3='ROM Impact')
and dbo.fnFormatDate(RespondedDate,'mm/dd/yyyy') between @FromDate and @ToDate)
-- 15. Other Impacted Queries Count
UPDATE #CDSHomePageMetrics set OtherImpact=
(Select COUNT(distinct QueryId) AssignedCount from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is not null
and QueryId is not null and (PrimaryImpact='Other Impact' or SecondaryImpact1='Other Impact'
or SecondaryImpact2='Other Impact' or SecondaryImpact3='Other Impact')
and dbo.fnFormatDate(RespondedDate,'mm/dd/yyyy') between @FromDate and @ToDate)
/* WE WILL SOON UPDATE RATES AND AVERAGE METRICS ,
SEE METRICS_GETCDSMETRICS PROCEDURE FOR THESE METRICS FOR REFERENCE
*/
select * from #CDSHomePageMetrics
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'Metrics'
End Catch
END
-- exec [Metrics_GetCdsHomePageMetrics] 77, '07/19/2019', '07/20/2019'
GO
|
======================================================
Procedure Name:Metrics_GetCdsHomePageMetrics_Details
Description:
With help of this to get CDS home page metric Deatiled account deatils when click on Metric from Home page regarding Single date or date range.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[Metrics_GetCdsHomePageMetrics_Details] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Krishna Reddy
-- Create date: July 19th 2019
-- Description: To get CDS home page metric Deatiled account deatils when click on Metric from Home page regarding Single date or date range
-- CAUTION TO USE: TODATE ALWAYS SHOULD BE TARGET DATE + NEEXT DAY, EVEN IN SINGLE DAY METRICS ALSO FOLLOW SAME
-- EXAMPLE 1 METRICS FOR JAN 1ST (ONE DAY) ==> FROM DATE: 01/01/2019, TODATE 01/02/2019
--- EXAMPLE 2 METRICS FOR JAN 1ST AND JAN4Th ==> FROM DATE: 01/01/2019 AND TODATE: 01/05/2019
-- AND DATE FORMAT SHOULD BE MM/DD/YYYY
-- =============================================
CREATE PROCEDURE [dbo].[Metrics_GetCdsHomePageMetrics_Details]
@ApplicationUserId int,
@FromDate date,
@ToDate date,
@MetricType varchar(50)
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='ApplicationUserId: '+''+cast(@ApplicationUserId as varchar(15))+''+'|'+
'FromDate: '+''+cast(@FromDate as varchar)+''+'|'+
'@ToDate: '+''+cast(@ToDate as varchar)+''+'|'+
'MetricType: '+''+cast(@MetricType as varchar(50))+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
-- 1. Assigned Accounts Details
IF(@MetricType='Assigned')
BEGIN
Select distinct AccountNumber,AdmitDate,DischargeDate,AssignedDate,InitialReviewDate from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and
dbo.fnFormatDate(AssignedDate,'mm/dd/yyyy') between @FromDate and @ToDate
END
-- 2. Accounts Reviewed Details
IF(@MetricType='Reviewed')
BEGIN
Select distinct AccountNumber,AdmitDate,DischargeDate,AssignedDate,InitialReviewDate
from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and InitialReviewDate is not Null
and dbo.fnFormatDate(InitialReviewDate,'mm/dd/yyyy') between @FromDate and @ToDate
END
-- 3. Queried Accounts Details -- For All these three same queue is enough
IF(@MetricType='Queried' or @MetricType='AccountsQueried' OR @MetricType='TotalQueries') -- AccountsQueried, TotalQueries both have Same query
BEGIN
Select distinct AccountNumber,AdmitDate,DischargeDate,QueryName,QueryType,QueryDiagnosis,
QueryStatus,ResponseOutcome,QueryResponse,PrimaryImpact,QueryDate,RespondedDate
from Metrics_CDSMetrics where
CDSID=@ApplicationUserId /* Assuming Same CDS Will Create Query, change if you have QueryById in CDS Metrics Table*/
and QueryId is not null and
dbo.fnFormatDate(QueryDate,'mm/dd/yyyy') between @FromDate and @ToDate
END
-- 4. Responded Queries and Details
IF(@MetricType='Responded')
BEGIN
Select distinct AccountNumber,AdmitDate,DischargeDate,QueryName,QueryType,QueryDiagnosis,
QueryTo,QueryStatus,ResponseOutcome,QueryResponse,PrimaryImpact,QueryDate,RespondedDate from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is not null
and QueryId is not null and
dbo.fnFormatDate(RespondedDate,'mm/dd/yyyy') between @FromDate and @ToDate
END
-- 5. Not Responded Queries
IF(@MetricType='NotResponded')
BEGIN
Select distinct AccountNumber,AdmitDate,DischargeDate,QueryName,QueryType,QueryDiagnosis,
QueryTo,QueryStatus,QueryDate from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is null
and QueryId is not null and
dbo.fnFormatDate(QueryDate,'mm/dd/yyyy') between @FromDate and @ToDate
END
-- 6. Agreed Queries and Details
IF(@MetricType='Agreed')
BEGIN
Select distinct AccountNumber,AdmitDate,DischargeDate,QueryName,QueryType,QueryDiagnosis,
QueryTo,QueryStatus,ResponseOutcome,QueryResponse,PrimaryImpact,QueryDate,RespondedDate
from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is not null and ResponseOutcome='Favorable'
and QueryId is not null and /* Not Required But making more Strict*/
dbo.fnFormatDate(RespondedDate,'mm/dd/yyyy') between @FromDate and @ToDate
END
-- 7. Not Agreed Queries and Details
IF(@MetricType='NotAgreed')
BEGIN
Select distinct AccountNumber,AdmitDate,DischargeDate,QueryName,QueryType,QueryDiagnosis,
QueryTo,QueryStatus,ResponseOutcome,QueryResponse,QueryDate,RespondedDate
from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is not null
and QueryId is not null and ResponseOutcome!='Favorable' and
dbo.fnFormatDate(RespondedDate,'mm/dd/yyyy') between @FromDate and @ToDate
END
-- 11. DRG Impacted Queries Count
IF(@MetricType='DRGImpact')
BEGIN
Select distinct AccountNumber,AdmitDate,DischargeDate,QueryName,QueryType,QueryDiagnosis,
QueryTo,QueryStatus,ResponseOutcome,QueryResponse,PrimaryImpact,QueryDate,RespondedDate,
SecondaryImpact1,SecondaryImpact2,SecondaryImpact3
from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is not null
and QueryId is not null and (PrimaryImpact='DRG Impact' or SecondaryImpact1='DRG Impact'
or SecondaryImpact2='DRG Impact' or SecondaryImpact3='DRG Impact')
and dbo.fnFormatDate(RespondedDate,'mm/dd/yyyy') between @FromDate and @ToDate
END
-- 12. Quality Impacted Queries Count
IF(@MetricType='QualityImpact')
BEGIN
Select distinct AccountNumber,AdmitDate,DischargeDate,QueryName,QueryType,QueryDiagnosis,
QueryTo,QueryStatus,ResponseOutcome,QueryResponse,PrimaryImpact,QueryDate,RespondedDate,
SecondaryImpact1,SecondaryImpact2,SecondaryImpact3
from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is not null
and QueryId is not null and (PrimaryImpact='Quality Impact' or SecondaryImpact1='Quality Impact'
or SecondaryImpact2='Quality Impact' or SecondaryImpact3='Quality Impact')
and dbo.fnFormatDate(RespondedDate,'mm/dd/yyyy') between @FromDate and @ToDate
END
-- 13. SOI Impacted Queries Count
IF(@MetricType='SOIImpact')
BEGIN
Select distinct AccountNumber,AdmitDate,DischargeDate,QueryName,QueryType,QueryDiagnosis,
QueryTo,QueryStatus,ResponseOutcome,QueryResponse,PrimaryImpact,QueryDate,RespondedDate,
SecondaryImpact1,SecondaryImpact2,SecondaryImpact3
from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is not null
and QueryId is not null and (PrimaryImpact='SOI Impact' or SecondaryImpact1='SOI Impact'
or SecondaryImpact2='SOI Impact' or SecondaryImpact3='SOI Impact')
and dbo.fnFormatDate(RespondedDate,'mm/dd/yyyy') between @FromDate and @ToDate
END
-- 14. ROM Impacted Queries Count
IF(@MetricType='ROMImpact')
BEGIN
Select distinct AccountNumber,AdmitDate,DischargeDate,QueryName,QueryType,QueryDiagnosis,
QueryTo,QueryStatus,ResponseOutcome,QueryResponse,PrimaryImpact,QueryDate,RespondedDate,
SecondaryImpact1,SecondaryImpact2,SecondaryImpact3
from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is not null
and QueryId is not null and (PrimaryImpact='ROM Impact' or SecondaryImpact1='ROM Impact'
or SecondaryImpact2='ROM Impact' or SecondaryImpact3='ROM Impact')
and dbo.fnFormatDate(RespondedDate,'mm/dd/yyyy') between @FromDate and @ToDate
END
-- 15. Other Impacted Queries Count
IF(@MetricType='OtherImpact')
BEGIN
Select distinct AccountNumber,AdmitDate,DischargeDate,QueryName,QueryType,QueryDiagnosis,
QueryTo,QueryStatus,ResponseOutcome,QueryResponse,PrimaryImpact,QueryDate,RespondedDate,
SecondaryImpact1,SecondaryImpact2,SecondaryImpact3 from Metrics_CDSMetrics where
CDSID=@ApplicationUserId and QueryResponse is not null
and QueryId is not null and (PrimaryImpact='Other Impact' or SecondaryImpact1='Other Impact'
or SecondaryImpact2='Other Impact' or SecondaryImpact3='Other Impact')
and dbo.fnFormatDate(RespondedDate,'mm/dd/yyyy') between @FromDate and @ToDate
END
/* WE WILL SOON UPDATE RATES AND AVERAGE METRICS ,
SEE METRICS_GETCDSMETRICS PROCEDURE FOR THESE METRICS FOR REFERENCE
*/
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'Metrics'
End Catch
END
-- exec [Metrics_GetCdsHomePageMetrics_Details] 77, '07/19/2019', '07/20/2019','Assigned'
-- exec [Metrics_GetCdsHomePageMetrics_Details] 77, '07/19/2019', '07/20/2019','Responded'
GO
|
======================================================
Procedure Name:Metrics_GetCDSMetrics
Description:
with help of this to get primary CDSMetrics Information based on ReportType and some other filtered conditions.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[Metrics_GetCDSMetrics] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 10/07/2019
-- Description: CDSMetrics Information
-- =============================================
CREATE PROCEDURE [dbo].[Metrics_GetCDSMetrics]
-- Add the parameters for the stored procedure here
@ReportType varchar(150),
@DateType varchar(100),
@FromDate datetime,
@ToDate datetime,
@GroupBy varchar(150),
@ReimbTypeFilter varchar(150),
@FinClassFilter varchar(250),
@CDSFilter varchar(800),
@PhysicianFilter varchar(800),
@QueryNameFilter varchar(max),
@MedicalServiceTypeFilter varchar(400),
@TimeCTG varchar(50)
AS
Declare @Query varchar(max)
Declare @Query2 varchar(max)
Declare @Query3 varchar(1000)
Declare @Query4 varchar(1000)
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin try
Select *,
ROW_NUMBER() OVER(PARTITION BY AccountNumber ORDER BY AccountNumber) AS AccNo_Rank,
case when ''+@DateType+''='AdmitDate' then DATEPART(WEEK,ma.AdmitDate) when ''+@DateType+''='DischargeDate' then DATEPART(WEEK,ma.DischargeDate) end Weekly,
case when ''+@DateType+''='AdmitDate' then DATEPART(MONTH,ma.AdmitDate) when ''+@DateType+''='DischargeDate' then DATEPART(MONTH,ma.DischargeDate) end Monthly,
case when ''+@DateType+''='AdmitDate' then DATEPART(QUARTER,ma.AdmitDate) when ''+@DateType+''='DischargeDate' then DATEPART(QUARTER,ma.DischargeDate) end Quarterly,
case when ''+@DateType+''='AdmitDate' then DATEPART(YEAR,ma.AdmitDate) when ''+@DateType+''='DischargeDate' then DATEPART(YEAR,ma.DischargeDate) end Yearly
into #temp1
from Metrics_CDSMetrics ma
where
(
(@DateType='AdmitDate' and ma.AdmitDate between @FromDate and @ToDate) or
(@DateType='DischargeDate' and ma.DischargeDate between @FromDate and @ToDate)
)
and ((@ReimbTypeFilter='NA') or ma.DrgGrouperType in(select * from dbo.fnParseByComma(@ReimbTypeFilter)))
and ((@FinClassFilter='NA') or ma.FinClassCode in (select * from dbo.fnParseByComma(@FinClassFilter)))
and ((@CDSFilter='NA') or ma.CDS in (select * from dbo.fnParseByComma(@CDSFilter)))
and ((@PhysicianFilter='NA') or ma.QueryToPhysicianId in (select * from dbo.fnParseByComma(@PhysicianFilter)))
and ((@QueryNameFilter='NA') or ma.QueryDiagnosis in (select * from dbo.fnParseByComma(@QueryNameFilter)))
and ((@MedicalServiceTypeFilter='NA') or ma.MedicalServiceType in (select * from dbo.fnParseByComma(@MedicalServiceTypeFilter)))
Create Table #Temp2
(ReimbType varchar(50),FinClass varchar(100),CDS Varchar(150),QueriedPhysician varchar(150),
QueryName varchar(150),MedicalServiceType varchar(150),MSDRGServiceType varchar(25),Weekly varchar(50),Monthly varchar(50),Quarterly varchar(50),Yearly varchar(50)
,AccountsReviewed int,AccountsQueried int,TotalQueries int,RespondedQueries int,NotrespondedQueries int,
AgreedQueries int,DisagreedQueries int,DRGImpact int,SOIImpact int,ROMImpact int,QualityImpact int,
NoImpact int,CMI float,TotalWTVariance float,TotalCC int,TotalMCC int,TotalCCORMCC int, TotalCCMCC int,TotalWOCCORMCC int,TotalDeadendDRG int,
TotalSOI1 int,TotalSOI2 int,TotalSOI3 int,TotalSOI4 int,TotalROM1 int,TotalROM2 int,TotalROM3 int,TotalROM4 int,FinancialImpact varchar(20),AverageLos varchar(20),
AverageCharges varchar(20),TotalDrgWeight varchar(10),ReReviewed int,OUStay varchar(10)
)
Create Table #Temp3
(ReimbType varchar(50),FinClass varchar(100),CDS Varchar(150),QueriedPhysician varchar(150),
QueryName varchar(150),MedicalServiceType varchar(150),MSDRGServiceType varchar(25),Weekly varchar(50),Monthly varchar(50),Quarterly varchar(50),Yearly varchar(50)
,AccountsReviewed int,AccountsQueried int,TotalQueries int,RespondedQueries int,NotrespondedQueries int,
AgreedQueries int,DisagreedQueries int,DRGImpact int,SOIImpact int,ROMImpact int,QualityImpact int,
NoImpact int,CMI float,TotalWTVariance float,TotalCC int,TotalMCC int,TotalCCORMCC int, TotalCCMCC int,TotalWOCCORMCC int,TotalDeadendDRG int,
TotalSOI1 int,TotalSOI2 int,TotalSOI3 int,TotalSOI4 int,TotalROM1 int,TotalROM2 int,TotalROM3 int,TotalROM4 int,FinancialImpact varchar(20),AverageLos varchar(20),
AverageCharges varchar(20),TotalDrgWeight varchar(10),ReReviewed int,OUStay varchar(10),
AccountQueryRate float,QueryRate float,DRGImpactRate float,SOIImpactRate float,ROMImpactRate float,
QualityImpactRate float,NoImpactRate float,CCMCCCaptureRate float,QueryRespondedRate float,QueryNonRespondedRate float,QueryAgreementRate float,QueryDisAgreementRate float,
CCRate float,MCCRate float
)
SET @Query3='
case when '''+@TimeCTG+'''=''Weekly'' then Weekly else null end,
case when '''+@TimeCTG+''' in (''Weekly'',''Monthly'') then Monthly else null end,
case when '''+@TimeCTG+''' in (''Weekly'',''Monthly'',''Quarterly'') then Quarterly else null end,
case when '''+@TimeCTG+'''!=''NA'' then Yearly else null end
'
SET @Query4='
case when '''+@TimeCTG+'''=''Weekly'' then Weekly else null end,
case when '''+@TimeCTG+''' in (''Weekly'',''Monthly'') then Monthly else null end,
case when '''+@TimeCTG+''' in (''Weekly'',''Monthly'',''Quarterly'') then Quarterly else null end,
case when '''+@TimeCTG+'''!=''NA'' then Yearly else null end
'
set @Query='
,COUNT(distinct AccountNumber) AccountsReviewed
,Count(Distinct (Case When QueryId is null then 0 else AccountNumber end))-1 AccountsQueried
,Count(Distinct QueryId) TotalQueries
,SUM(case when QueryStatus=''Responded'' then 1 else 0 end) RespondedQueries
,SUM(case when isnull(QueryStatus,'''')!=''Responded'' and QueryId is not null then 1 else 0 end) NotRespondedQueries
,SUM(case when (QueryStatus=''Responded'' and ResponseOutcome=''Agreed'') then 1 else 0 end) AgreedQueries
,SUM(case when (QueryStatus=''Responded'' and isnull(ResponseOutcome,'''')!=''Agreed'') and QueryId is not null then 1 else 0 end) NotAgreedQueries
,SUM(case when (PrimaryImpact=''DRG Impact'' or secondaryimpact1=''DRG Impact'' or secondaryimpact2=''DRG Impact'' or secondaryimpact3=''DRG Impact'') then 1 else 0 end) DRGImpact
,SUM(case when (PrimaryImpact=''SOI Impact'' or secondaryimpact1=''SOI Impact'' or secondaryimpact2=''SOI Impact'' or secondaryimpact3=''SOI Impact'') then 1 else 0 end) SOIImpact
,SUM(case when (PrimaryImpact=''ROM Impact'' or secondaryimpact1=''ROM Impact'' or secondaryimpact2=''ROM Impact'' or secondaryimpact3=''ROM Impact'') then 1 else 0 end) ROMImpact
,SUM(case when (PrimaryImpact=''Quality Impact'' or secondaryimpact1=''Quality Impact'' or secondaryimpact2=''Quality Impact'' or secondaryimpact3=''Quality Impact'') then 1 else 0 end) QualityImpact
,SUM(case when PrimaryImpact=''No DRG Impact'' then 1 else 0 end) NoDRGImpact
,cast(round(AVG(case when (DrgGrouperType=''MSDRG'' and AccNo_Rank=1) then cast(UserMSDRGWT as float) end),2) as varchar(10)) CMI
,cast(round(SUM(cast(MSDrgWeightVariance as float)),2) as varchar(10)) TotalWTVariance
,SUM(case when (DrgGrouperType=''MSDRG'' and CCMCC =''WCC'' and AccNo_Rank=1) then 1 else 0 end) TotalCC
,SUM(case when (DrgGrouperType=''MSDRG'' and CCMCC =''WMCC'' and AccNo_Rank=1) then 1 else 0 end) TotalMCC
,SUM(case when (CCMCC =''WCCORMCC'' and AccNo_Rank=1) then 1 else 0 end) TotalCCORMCC
,SUM(case when (CCMCC in (''WCC'',''WMCC'',''WCCORMCC'') and AccNo_Rank=1) then 1 else 0 end) TotalCCMCC
,SUM(case when (CCMCC in (''WOCC'',''WOMCC'',''WOCCORMCC'') and AccNo_Rank=1) then 1 else 0 end) TotalWOCCMCC
,SUM(case when (CCMCC in (''CC/MCC Not Applicable'') and AccNo_Rank=1) then 1 else 0 end) TotalDeadendDRG
,SUM(case when (UserAPRDRGSOI=1 and AccNo_Rank=1) then 1 else 0 end) TotalSOI1
,SUM(case when (UserAPRDRGSOI=2 and AccNo_Rank=1) then 1 else 0 end) TotalSOI2
,SUM(case when (UserAPRDRGSOI=3 and AccNo_Rank=1) then 1 else 0 end) TotalSOI3
,SUM(case when (UserAPRDRGSOI=4 and AccNo_Rank=1) then 1 else 0 end) TotalSOI4
,SUM(case when (UserAPRDRGROM=1 and AccNo_Rank=1) then 1 else 0 end) TotalROM1
,SUM(case when (UserAPRDRGROM=2 and AccNo_Rank=1) then 1 else 0 end) TotalROM2
,SUM(case when (UserAPRDRGROM=3 and AccNo_Rank=1) then 1 else 0 end) TotalROM3
,SUM(case when (UserAPRDRGROM=4 and AccNo_Rank=1) then 1 else 0 end) TotalROM4
,NULLIF(cast(SUM(COALESCE(cast(FInancialimpact as float),0)) as int),0) FinancialImpact
,cast(round(AVG( case when (DrgGrouperType=''MSDRG'' and AccNo_Rank=1) then cast(isnull(FinalLos,0) as float) end),2) as varchar(10)) AverageLos
,cast(round(AVG(case when (DrgGrouperType=''MSDRG'' and AccNo_Rank=1) then cast(isnull(FacilityCharges,0) as float) end),2) as int) AverageCharges
,cast(round(SUM(case when (cast(UserMSDRGWT as float)!=0 and AccNo_Rank=1) then cast(UserMSDRGWT as float) end),2) as varchar(10)) TotalDrgWeight
,SUM(case when (ReReviewStatus=1 and AccNo_Rank=1) then (ReReviewedCount) end) ReReviewed
,cast(round(AVG(case when (DrgGrouperType=''MSDRG'' and AccNo_Rank=1) then cast(isnull(OUStay,0) as float) end),2) as varchar(10)) OUStay
From #temp1
'
set @Query2= '
insert into #Temp2
select distinct
case when '''+@GroupBy+'''in (''ReimbType'',''FinClass'') then DrgGrouperType else null end,
case when '''+@GroupBy+'''=''FinClass'' then FinClassName else null end,
case when '''+@ReportType+'''=''CDSMetrics'' then CDS else null end,
case when '''+@ReportType+'''=''PhysicianMetrics'' then QueryTo else null end,
case when '''+@ReportType+'''=''QueryMetrics'' then QueryDiagnosis else null end,
case when '''+@ReportType+'''=''MedicalServiceUtility'' then isnull(MedicalServiceType,''Other'') else null end,
case when '''+@ReportType+'''=''MedicalServiceUtility'' then isnull(MSDRGServiceType,''Other'') else (case when '''+@ReportType+'''=''MSDRGServiceType'' then isnull(MSDRGServiceType,''Other'') else null end) end,
--case when '''+@ReportType+'''=''MSDRGServiceType'' then isnull(MSDRGServiceType,''Other'') else null end,
'
+@Query3+
+@Query+'
group by
case when '''+@GroupBy+''' in (''ReimbType'',''FinClass'') then DrgGrouperType else null end,
Case when '''+@GroupBy+'''=''FinClass'' then FinClassName end,
Case when '''+@ReportType+'''=''CDSMetrics'' then CDS end,
Case when '''+@ReportType+'''=''PhysicianMetrics'' then QueryTo end,
Case when '''+@ReportType+'''=''QueryMetrics'' then QueryDiagnosis end,
case when '''+@ReportType+'''=''MedicalServiceUtility'' then MedicalServiceType end,
case when '''+@ReportType+'''=''MedicalServiceUtility'' then MSDRGServiceType end,
case when '''+@ReportType+'''=''MSDRGServiceType'' then MSDRGServiceType end,'
+@Query4
--Print(@Query2)
Exec(@Query2)
Insert Into #Temp3
select *
,round(COALESCE((cast(AccountsQueried as float)/cast(NULLIF(AccountsReviewed,0) as float)),0)*100,2) AccountQueryRate
,round(COALESCE((cast(TotalQueries as float)/cast(NULLIF(AccountsReviewed,0) as float)),0)*100,2) QueryRate
,round(COALESCE((cast(DRGImpact as float)/cast(NULLIF(RespondedQueries,0) as float)),0)*100,2) DRGImpactRate
,round(COALESCE((cast(SOIImpact as float)/cast(NULLIF(RespondedQueries,0) as float)),0)*100,2) SOIImpactRate
,round(COALESCE((cast(ROMImpact as float)/cast(NULLIF(RespondedQueries,0) as float)),0)*100,2) ROMImpactRate
,round(COALESCE((cast(QualityImpact as float)/cast(NULLIF(RespondedQueries,0) as float)),0)*100,2) QualityImpactRate
,round(COALESCE((cast(NoImpact as float)/cast(NULLIF(RespondedQueries,0) as float)),0)*100,2) NoImpactRate
,case when ReimbType='MSDRG' then round(COALESCE((cast(TotalCCMCC as float)/cast(NULLIF(AccountsReviewed,0) as float)),0)*100,2) else 0 end CCMCCCaptureRate
,round(COALESCE((cast(RespondedQueries as float)/cast(NULLIF(TotalQueries,0) as float)),0)*100,2) QueryRespondedRate
,round(COALESCE((cast(NotrespondedQueries as float)/cast(NULLIF(TotalQueries,0) as float)),0)*100,2) QueryNonRespondedRate
,round(COALESCE((cast(AgreedQueries as float)/cast(NULLIF(RespondedQueries,0) as float)),0)*100,2) QueryAgreementRate
,round(COALESCE((cast(DisagreedQueries as float)/cast(NULLIF(RespondedQueries,0) as float)),0)*100,2) QueryDisAgreementRate
,case when ReimbType='MSDRG' then round(COALESCE((cast(TotalCC as float)/cast(NULLIF(AccountsReviewed,0) as float)),0)*100,2) else 0 end CCRate
,case when ReimbType='MSDRG' then round(COALESCE((cast(TotalMCC as float)/cast(NULLIF(AccountsReviewed,0) as float)),0)*100,2) else 0 end MCCRate
from #Temp2
--Total conditions on Final Row
if exists(select 1 from #Temp3)
insert into #Temp3
select
'Total' ReimbType,'NA' FinClass,'NA' CDS,'NA' QueriedPhysician,'NA' QueryName,'NA' MedicalServiceType,'NA' MSDRGServiceType,'100' Weekly,'100' Monthly,'100' Quarterly,'2100' Yearly,
SUM(AccountsReviewed) AccountsReviewed,SUM(AccountsQueried) AccountsQueried,SUM(TotalQueries) TotalQueries,SUM(RespondedQueries) RespondedQueries,SUM(NotrespondedQueries) NotrespondedQueries,
SUM(AgreedQueries) AgreedQueries,SUM(DisagreedQueries) DisagreedQueries,SUM(DRGImpact) DRGImpact,SUM(SOIImpact) SOIImpact,SUM(ROMImpact) ROMImpact,SUM(QualityImpact) QualityImpact,
SUM(NoImpact) NoImpact,
(select cast(round(AVG(cast(UserMSDRGWT as float)),2) as varchar(10)) from #temp1 where DrgGrouperType='MSDRG' and AccNo_Rank=1) CMI,
round(SUM(TotalWTVariance),2) TotalWTVariance,SUM(TotalCC) TotalCC,SUM(TotalMCC) TotalMCC,SUM(TotalCCORMCC) TotalCCORMCC,SUM(TotalCCMCC) TotalCCMCC,
SUM(TotalWOCCORMCC) TotalWOCCORMCC,SUM(TotalDeadendDRG) TotalDeadendDRG,SUM(TotalSOI1) TotalSOI1,SUM(TotalSOI2) TotalSOI2,SUM(TotalSOI3) TotalSOI3,SUM(TotalSOI4) TotalSOI4,
SUM(TotalROM1) TotalROM1,SUM(TotalROM2) TotalROM2,SUM(TotalROM3) TotalROM3,SUM(TotalROM4) TotalROM4,SUM(cast(isnull(FinancialImpact,0) as int)) FinancialImpact,
(select cast(round(AVG(cast(isnull(FinalLos,0) as float)),2) as varchar(10)) from #temp1 where DrgGrouperType='MSDRG' and AccNo_Rank=1) AverageLos,
(select cast(round(AVG(cast(isnull(FacilityCharges,0) as float)),2) as int) from #temp1 where DrgGrouperType='MSDRG' and AccNo_Rank=1) AverageCharges,
round(SUM(cast(isnull(TotalDrgWeight,0) as float)),2) TotalDrgWeight,
(select SUM(ReReviewedCount) from #temp1 where ReReviewStatus=1 and AccNo_Rank=1) ReReviewed,
(select cast(round(AVG(cast(isnull(OUStay,0) as float)),2) as varchar(10)) from #temp1 where DrgGrouperType='MSDRG' and AccNo_Rank=1) OUStay,
round(COALESCE((cast(SUM(AccountsQueried) as float)/cast(NULLIF(SUM(AccountsReviewed),0) as float)),0)*100,0) AccountQueryRate,
round(COALESCE((cast(SUM(TotalQueries) as float)/cast(NULLIF(SUM(AccountsReviewed),0) as float)),0)*100,0) QueryRate,
round(COALESCE((cast(SUM(DRGImpact) as float)/cast(NULLIF(SUM(RespondedQueries),0) as float)),0)*100,0) DRGImpactRate,
round(COALESCE((cast(SUM(SOIImpact) as float)/cast(NULLIF(SUM(RespondedQueries),0) as float)),0)*100,0) SOIImpactRate,
round(COALESCE((cast(SUM(ROMImpact) as float)/cast(NULLIF(SUM(RespondedQueries),0) as float)),0)*100,0) ROMImpactRate,
round(COALESCE((cast(SUM(QualityImpact) as float)/cast(NULLIF(SUM(RespondedQueries),0) as float)),0)*100,0) QualityImpactRate,
round(COALESCE((cast(SUM(NoImpact) as float)/cast(NULLIF(SUM(RespondedQueries),0) as float)),0)*100,0) NoImpactRate,
round((select AVG(CCMCCCaptureRate) from #Temp3 where CCMCCCaptureRate!=0),0) CCMCCCaptureRate,
round(COALESCE((cast(SUM(RespondedQueries) as float)/cast(NULLIF(SUM(TotalQueries),0) as float)),0)*100,0) QueryRespondedRate,
round(COALESCE((cast(SUM(NotrespondedQueries) as float)/cast(NULLIF(SUM(TotalQueries),0) as float)),0)*100,0) QueryNonRespondedRate,
round(COALESCE((cast(SUM(AgreedQueries) as float)/cast(NULLIF(SUM(RespondedQueries),0) as float)),0)*100,0) QueryAgreementRate,
round(COALESCE((cast(SUM(DisagreedQueries) as float)/cast(NULLIF(SUM(RespondedQueries),0) as float)),0)*100,0) QueryDisAgreementRate,
round((select AVG(CCRate) from #Temp3 where CCRate!=0),0) CCRate,
round((select AVG(MCCRate)from #Temp3 where MCCRate!=0),0) MCCRate
from #Temp3
select
ReimbType,FinClass,CDS,QueriedPhysician,QueryName,MedicalServiceType,MSDRGServiceType,Weekly,Monthly,Quarterly,Yearly,AccountsReviewed,AccountsQueried,TotalQueries,
RespondedQueries,NotrespondedQueries,AgreedQueries,DisagreedQueries,DRGImpact,SOIImpact,ROMImpact,QualityImpact,NoImpact,
CMI,TotalWTVariance,TotalCC,TotalMCC,TotalCCORMCC,TotalCCMCC,TotalWOCCORMCC,TotalDeadendDRG,TotalSOI1,TotalSOI2,TotalSOI3,TotalSOI4,
TotalROM1,TotalROM2,TotalROM3,TotalROM4,FinancialImpact,AverageLos,AverageCharges,TotalDrgWeight,ReReviewed,OUStay,
AccountQueryRate,QueryRate,DRGImpactRate,SOIImpactRate,ROMImpactRate,QualityImpactRate,NoImpactRate,CCMCCCaptureRate,QueryRespondedRate,QueryNonRespondedRate,
QueryAgreementRate,QueryDisAgreementRate,CCRate,MCCRate
from #Temp3 order by case when ReimbType='MSDRG' then 1
when ReimbType='APRDRG' then 2
when ReimbType='Other' then 3
else 4 end,cast(Yearly as int),cast(Quarterly as int),cast(Monthly as int)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Paramas','Metrics'
End Catch
END
--Exec Metrics_GetCDSMetrics 'MedicalServiceUtility', 'AdmitDate','09/22/2018','10/01/2018','ReimbType','MSDRG,APRDRG','NA','NA','NA','NA','NA','monthly'
GO
|
======================================================
Procedure Name:Metrics_GetCdsWorkOfTheDay_Counts
Description:
with help of this to get work of the day metrics for CDS in Home page.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[Metrics_GetCdsWorkOfTheDay_Counts] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Krishna Reddy
-- Create date: July 19th 2019
-- Description: To get work of the day metrics for CDS in Home page
-- =============================================
CREATE PROCEDURE [dbo].[Metrics_GetCdsWorkOfTheDay_Counts]
@ApplicationUserId int
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='ApplicationUserId: '+''+cast(@ApplicationUserId as varchar(15))+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
CREATE Table #CDSDayMetrics(Assigned int,Reviewed int,Queried int, Responded int)
INSERT INTO #CDSDayMetrics values(0,0,0,0)
-- Total number of accounts assigned today
UPDATE #CDSDayMetrics set Assigned=
(Select COUNT(distinct AccountNumber) AssignedCount from USER_AssignedAccount where
AssignTo=@ApplicationUserId and
dbo.fnFormatDate(InsertedDate,'mm/dd/yyyy')=dbo.fnFormatDate(GETUTCDATE(),'mm/dd/yyyy'))
-- Total number of accounts initial reviewed today
UPDATE #CDSDayMetrics set Reviewed=
(Select COUNT(distinct AccountNumber) AssignedCount from USER_AccountNote where
NoteBy=@ApplicationUserId and InitialNoteStatus=1
and dbo.fnFormatDate(InsertedDate,'mm/dd/yyyy')=dbo.fnFormatDate(GETUTCDATE(),'mm/dd/yyyy'))
-- Total number of queries created today
UPDATE #CDSDayMetrics set Queried=
(Select COUNT(distinct QueryId) AssignedCount from USER_Query where
CreatedBy=@ApplicationUserId
and dbo.fnFormatDate(CreatedDate,'mm/dd/yyyy')=dbo.fnFormatDate(GETUTCDATE(),'mm/dd/yyyy'))
-- Total Number of query responses closed today
UPDATE #CDSDayMetrics set Responded=
(Select COUNT(distinct QueryId) AssignedCount from USER_QueryResponse where
InsertedBy=@ApplicationUserId
and dbo.fnFormatDate(InsertedDate,'mm/dd/yyyy')=dbo.fnFormatDate(GETUTCDATE(),'mm/dd/yyyy'))
select * from #CDSDayMetrics
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'Metrics'
End Catch
END
-- exec [Metrics_GetCdsWorkOfTheDay_Counts] 77
GO
|
======================================================
Procedure Name:Metrics_GetCdsWorkOfTheDay_Details
Description:
with help of this to get Account Details of CDS Work of the Measures.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[Metrics_GetCdsWorkOfTheDay_Details] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Krishna Reddy
-- Create date: July 19th 2019
-- Description: To get Account Details of CDS Work of the Measures
-- =============================================
CREATE PROCEDURE [dbo].[Metrics_GetCdsWorkOfTheDay_Details]
@ApplicationUserId int,
@MeasureType varchar(25)
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='ApplicationUserId: '+''+cast(@ApplicationUserId as varchar(15))+''+'|'+'MeasureType: '+''+@MeasureType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
-- Assigned Account Details
if(@MeasureType='Assigned')
Begin
Select distinct assign.AccountNumber,v.AdmitDate,V.DischargeDate,assign.InsertedDate AssignedDate,
appUser.FullName AssignedBy
from USER_AssignedAccount assign
inner join HIM_Visit v on v.AccountNumber=assign.AccountNumber
inner join MasterHRCM.dbo.MST_ApplicationUser appUser on appUser.ApplicationUserId=assign.AssignedBy
where
AssignTo=@ApplicationUserId and
dbo.fnFormatDate(assign.InsertedDate,'mm/dd/yyyy')=dbo.fnFormatDate(GETUTCDATE(),'mm/dd/yyyy')
End
-- Initial Reviewed Account Details today
if(@MeasureType='Reviewed')
Begin
Select userNote.AccountNumber,v.AdmitDate,v.DischargeDate,userNote.Note InitialNote,
userNote.InsertedDate IntialReviewDate
from USER_AccountNote userNote
inner join HIM_Visit v on v.AccountNumber=userNote.AccountNumber
where
NoteBy=@ApplicationUserId and InitialNoteStatus=1
and dbo.fnFormatDate(userNote.InsertedDate,'mm/dd/yyyy')=dbo.fnFormatDate(GETUTCDATE(),'mm/dd/yyyy')
End
-- Query details of created today
if(@MeasureType='Queried')
Begin
Select distinct query.AccountNumber,v.AdmitDate,v.DischargeDate,
query.QueryName,physician.FirstName Physician,query.Priority
from USER_Query query
inner join HIM_Visit v on v.AccountNumber=query.AccountNumber
left join HIM_Physician physician on physician.PhysicianID=query.QueryTo
where
CreatedBy=@ApplicationUserId
and dbo.fnFormatDate(query.CreatedDate,'mm/dd/yyyy')=dbo.fnFormatDate(GETUTCDATE(),'mm/dd/yyyy')
End
-- Responded Query details of created today
if(@MeasureType='Responded')
Begin
Select response.AccountNumber,v.AdmitDate,v.DischargeDate,query.QueryName,response.ResponseText,
resMaster.ResponseImpactDesc PrimaryImpact,physician.FirstName ResponseBy
from USER_QueryResponse response
inner join HIM_Visit v on v.AccountNumber=response.AccountNumber
inner join USER_Query query on query.AccountNumber=response.AccountNumber and
query.QueryId=response.QueryId
inner join MST_QueryResponseImpact resMaster on resMaster.QueryResponseImpactId=response.PrimaryResponseImpactId
left join HIM_Physician physician on physician.PhysicianID=response.ResponseBy
where InsertedBy=@ApplicationUserId
and dbo.fnFormatDate(response.InsertedDate,'mm/dd/yyyy')=dbo.fnFormatDate(GETUTCDATE(),'mm/dd/yyyy')
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'Metrics'
End Catch
END
-- exec [Metrics_GetCdsWorkOfTheDay_Details] 77,'Assigned'
-- exec [Metrics_GetCdsWorkOfTheDay_Details] 77,'Reviewed'
-- exec [Metrics_GetCdsWorkOfTheDay_Details] 77,'Queried'
-- exec [Metrics_GetCdsWorkOfTheDay_Details] 77,'Responded'
GO
|
======================================================
Procedure Name:Metrics_GetDetailedCDSMetrics
Description:
with help of this to get detailed information about CDSMetrics which includes ReimbursementFilter,FinClassFilter,PhysicianFilter,CDSFilter,QueryNameFilter and MedicalServiceFilter.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[Metrics_GetDetailedCDSMetrics] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 10/07/2019
-- Description: CDSMetrics Information
-- =============================================
CREATE PROCEDURE [dbo].[Metrics_GetDetailedCDSMetrics]
-- Add the parameters for the stored procedure here
@DateType varchar(100),
@FromDate datetime,
@ToDate datetime,
@ReimbTypeFilter varchar(150),
@FinClassFilter varchar(250),
@CDSFilter varchar(800),
@PhysicianFilter varchar(800),
@QueryNameFilter varchar(max),
@MedicalServiceTypeFilter varchar(400),
@TargetFilter varchar(50),
@TotalFilter varchar(50),
@MSDRGServiceTypeFilter varchar(25)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
Select
CDSMetricsID,AccountNumber,dbo.fnFormatDate(AdmitDate,'MM/DD/YYYY') AdmitDate,dbo.fnFormatDate(DischargeDate,'MM/DD/YYYY') DischargeDate,CDS,FinClassGroupName,FinClassCode,
FinClassName,DrgGrouperType,QueryId,QueryName,QueryType,QueryDiagnosis,QueryBy,QueryTo,QueryToPhysicianId,QueryStatus,ResponseOutcome,PrimaryImpact,SecondaryImpact1,
SecondaryImpact2,SecondaryImpact3,PreMSDRG,PreMSDRGWt,PostMSDRG,PostMSDRGWt,MSDrgWeightVariance,PreAPRDRG,PreAPRDRGWt,PostAPRDRG,PostAPRDRGWt,APRDrgWeightVariance,PreSOI,PostSOI,
PreROM,PostROM,RespondedBy,dbo.fnFormatDate(QueryDate,'MM/DD/YYYY') QueryDate,dbo.fnFormatDate(RespondedDate,'MM/DD/YYYY') RespondedDate,UserMSDRG,UserMSDRGDesc,UserMSDRGWT,UserAPRDRG,UserAPRDRGDesc,UserAPRDRGWT,
UserAPRDRGSOI,UserAPRDRGROM,FacilityMSDRG,FacilityMSDRGDesc,FacilityMSDRGWT,FacilityAPRDRG,FacilityAPRDRGDesc,FacilityAPRDRGWT,FacilityAPRDRGSOI,FacilityAPRDRGROM,CCMCC,
MedicalServiceType,FinancialImpact,FinalLos,FacilityCharges,QueryResponse,CDSID
from Metrics_CDSMetrics ma where
((@DateType='AdmitDate' and ma.AdmitDate between @FromDate and @ToDate) or (@DateType='DischargeDate' and ma.DischargeDate between @FromDate and @ToDate))
AND (@ReimbTypeFilter='NA' or ma.DrgGrouperType in(select * from dbo.fnParseByComma(@ReimbTypeFilter)))
AND (@FinClassFilter='NA' or (@TotalFilter='Total' and ma.FinClassCode in(select * from dbo.fnParseByComma(@FinClassFilter))) or ma.FinClassName=@FinClassFilter)
AND (@CDSFilter='NA' or ma.CDS in(select * from dbo.fnParseByComma(@CDSFilter)))
AND (@PhysicianFilter='NA' or (@TotalFilter='Total' and ma.QueryToPhysicianId in(select * from dbo.fnParseByComma(@PhysicianFilter))) or ma.QueryTo=@PhysicianFilter)
AND (@QueryNameFilter='NA' or ma.QueryDiagnosis in(select * from dbo.fnParseByComma(@QueryNameFilter)))
AND (@MedicalServiceTypeFilter='NA' or (@MedicalServiceTypeFilter='Other' and ma.MedicalServiceType is null) or ma.MedicalServiceType in (select * from dbo.fnParseByComma(@MedicalServiceTypeFilter)))
AND (@MSDRGServiceTypeFilter='NA' or (@MSDRGServiceTypeFilter='Other' and ma.MSDRGServiceType is null) or ma.MSDRGServiceType=@MSDRGServiceTypeFilter)
AND
(
(@TargetFilter='Accounts Reviewed') or
(@TargetFilter='Accounts Queried' and ma.QueryId is not null) or
(@TargetFilter='Total Queries' and ma.QueryId is not null) or
(@TargetFilter='Responded Queries' and ma.QueryStatus='Responded') or
(@TargetFilter='Not Responded Queries' and (isnull(ma.QueryStatus,'')!='Responded' and ma.QueryId is not null)) or
(@TargetFilter='Agreed Queries' and (ma.QueryStatus='Responded' and ma.ResponseOutcome='Agreed')) or
(@TargetFilter='Not Agreed Queries' and (ma.QueryStatus='Responded' and isnull(ma.ResponseOutcome,'')!='Agreed' and ma.QueryId is not null)) or
(@TargetFilter='DRG Weight Impact Queries' and (ma.PrimaryImpact='DRG Impact' or ma.SecondaryImpact1='DRG Impact' or ma.SecondaryImpact2='DRG Impact' or ma.SecondaryImpact3='DRG Impact')) or
(@TargetFilter='SOI Impact Queries' and (ma.PrimaryImpact='SOI Impact' or ma.SecondaryImpact1='SOI Impact' or ma.SecondaryImpact2='SOI Impact' or ma.SecondaryImpact3='SOI Impact')) or
(@TargetFilter='ROM Impact Queries' and (ma.PrimaryImpact='ROM Impact' or ma.SecondaryImpact1='ROM Impact' or ma.SecondaryImpact2='ROM Impact' or ma.SecondaryImpact3='ROM Impact')) or
(@TargetFilter='Quality Impact Queries' and (ma.PrimaryImpact='Quality Impact' or ma.SecondaryImpact1='Quality Impact' or ma.SecondaryImpact2='Quality Impact' or ma.SecondaryImpact3='Quality Impact')) or
(@TargetFilter='Other Impact Queries' and (ma.PrimaryImpact='No DRG Impact' or ma.SecondaryImpact1='No DRG Impact' or ma.SecondaryImpact2='No DRG Impact' or ma.SecondaryImpact3='No DRG Impact')) or
(@TargetFilter='Medical Service Utility' and ((@TotalFilter='Total' and ma.DrgGrouperType='MSDRG') or @MedicalServiceTypeFilter='Other' or ma.MedicalServiceType=@MedicalServiceTypeFilter)) or
(@TargetFilter='MSDRGServiceType' and ((@TotalFilter='Total' and ma.DrgGrouperType='MSDRG') or @MSDRGServiceTypeFilter='Other' or ma.MSDRGServiceType=@MSDRGServiceTypeFilter)) or
(@TargetFilter='CC Accounts' and ma.CCMCC='WCC' and ma.DrgGrouperType='MSDRG') or
(@TargetFilter='MCC Accounts' and ma.CCMCC='WMCC' and ma.DrgGrouperType='MSDRG')or
(@TargetFilter='CC/MCC Accounts' and ma.CCMCC in ('WCC','WMCC','WCCORMCC') and ma.DrgGrouperType='MSDRG')or
(@TargetFilter='Rereviewed' and ma.ReReviewStatus=1)
)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','Metrics'
End Catch
END
--Exec Metrics_GetDetailedCDSMetrics 'AdmitDate','09/22/2018','10/01/2018','MSDRG,APRDRG','NA','NA','NA','NA','Neurology','Medical Service Utility','NA','NA'
GO
|
======================================================
Procedure Name:Metrics_InsertCDSMetrics
Description:
with help of this to insert primary CDSMetrics Information.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[Metrics_InsertCDSMetrics] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--Exec Metrics_InsertCDSMetrics
-- =============================================
-- Author: Krishna Reddy
-- Create date: July 9th 2019
-- Description: To Get All CDS Metrics into consolidated table
-- =============================================
CREATE PROCEDURE [dbo].[Metrics_InsertCDSMetrics]
AS
BEGIN
Begin Try
-- STEP 1: CREATE TEMPORARY TABLE AS LIKE AS Metrics_CDSMetrics
CREATE TABLE #CDSMetrics([AccountNumber] [varchar](30) NOT NULL, [AdmitDate] datetime NOT NULL,
[DischargeDate] datetime NULL,CDS varchar(50),[FinClassGroupName] [varchar](50) NULL,[FinClassCode] [int] NULL,[FinClassName] [varchar](120) NULL,
[DrgGrouperType] [varchar](50),[QueryId] [int] NULL,[QueryName] [varchar](150) NULL,
[QueryTypeId] [int] NULL,[QueryType] varchar(150),[QueryDiagnosisId] [int] NULL, [QueryDiagnosis] varchar(150) ,
[QueryBy] [varchar](50) NULL,[QueryTo] [varchar](120) NULL,[QueryToPhysicianId] [varchar](50) NULL,
[QueryStatus] [varchar](50) NULL,[ResponseOutcome] [varchar](50) NULL,[PrimaryImpact] [varchar](50) NULL,
[SecondaryImpact1] [varchar](50) NULL, [SecondaryImpact2] [varchar](50) NULL,
[SecondaryImpact3] [varchar](50) NULL,[PreMSDRG] [int] NULL,[PreMSDRGWt] [varchar](20) NULL,
[PostMSDRG] [int] NULL,[PostMSDRGWt] [varchar](20) NULL,[MSDrgWeightVariance] [varchar](10) NULL,
[PreAPRDRG] [int] NULL,[PreAPRDRGWt] [varchar](20) NULL,[PostAPRDRG] [int] NULL,[PostAPRDRGWt] [varchar](20) NULL,
[APRDrgWeightVariance] [varchar](10) NULL,[PreSOI] [int] NULL,[PostSOI] [int] NULL,[PreROM] [int] NULL,[PostROM] [int] NULL,
[RespondedBy] [varchar](80) NULL,[QueryDate] datetime NULL,[RespondedDate] datetime NULL,
[UserMSDRG] [int] NULL, [UserMSDRGDesc] [varchar](180) NULL,
[UserMSDRGWT] [varchar](10) NULL,[UserAPRDRG] [int] NULL,[UserAPRDRGDesc] [varchar](180) NULL,
[UserAPRDRGWT] [varchar](10) NULL,[UserAPRDRGSOI] [int] NULL,UserAPRDRGROM [int] NULL,[FacilityMSDRG] [int] NULL, [FacilityMSDRGDesc] [varchar](180) NULL,
[FacilityMSDRGWT] [varchar](10) NULL,[FacilityAPRDRG] [int] NULL,[FacilityAPRDRGDesc] [varchar](180) NULL,
[FacilityAPRDRGWT] [varchar](10) NULL,[FacilityAPRDRGSOI] [int] NULL,[FacilityAPRDRGROM] [int] NULL,
[CCMCC] [varchar](50) NULL,[MedicalServiceType] [varchar](100) NULL,[FinancialImpact] [varchar](20) NULL,
[FinalLos] [varchar](20) NULL,[FacilityCharges] [varchar](20) NULL,[PhysicianSpecialty] [varchar](100) NULL,[QueryResponse] [varchar](500) NULL,
[CDSID] [varchar](100) NULL,[ReReviewStatus] [tinyint] NOT NULL DEFAULT(0),OUStay varchar(10) NULL,[ReReviewedCount] [tinyint] NOT NULL DEFAULT(0),
[MSDRGServiceType] [varchar](25) NULL, AssignedDate datetime NULL,InitialReviewDate datetime NULL
)
-- STEP 2: INSERT ALL POSSIBLE INFORMATION TO TEMP TABLE
insert into #CDSMetrics(AccountNumber,AdmitDate,DischargeDate,CDS,FinClassGroupName,FinClassCode,FinClassName,
DrgGrouperType,QueryId,QueryName,QueryTypeId,QueryType,QueryDiagnosisId,QueryDiagnosis,QueryBy,QueryTo,
QueryToPhysicianId,QueryStatus,ResponseOutcome,PrimaryImpact,SecondaryImpact1,
SecondaryImpact2,SecondaryImpact3,PreMSDRG,PreMSDRGWt,PostMSDRG,PostMSDRGWt,MSDrgWeightVariance,
PreAPRDRG,PreAPRDRGWt,PostAPRDRG,PostAPRDRGWt,APRDrgWeightVariance,
PreSOI,PostSOI,PreROM,PostROM,RespondedBy,QueryDate,
RespondedDate,UserMSDRG,UserMSDRGDesc,UserMSDRGWT,UserAPRDRG,UserAPRDRGDesc,UserAPRDRGWT,UserAPRDRGSOI,UserAPRDRGROM,
FacilityMSDRG,FacilityMSDRGDesc,FacilityMSDRGWT,FacilityAPRDRG,FacilityAPRDRGDesc,FacilityAPRDRGWT,
FacilityAPRDRGSOI,FacilityAPRDRGROM,CCMCC,MedicalServiceType,FinancialImpact,FinalLos,
FacilityCharges,PhysicianSpecialty,QueryResponse,CDSID,ReReviewStatus,OUStay,ReReviewedCount,MSDRGServiceType,
AssignedDate,InitialReviewDate
)
select distinct visit.AccountNumber,visit.AdmitDate,visit.dischargedate,appuser.FullName CDSName,
finClass.FinancialClassGroupName,cast(visit.FinancialClass as int) FinancialClassCode,finClass.FinancialClassName,
drgGrouperMaster.PrimaryDRGGrouperAliasName DrgGrouperType,query.QueryId,query.QueryName,
queryType.QueryTypeId,queryType.QueryTypeName,queryDiagnosis.QueryDiagnosisId,queryDiagnosis.QueryDiagnosisName
,queryUser.UserName QueryBy,physician.FirstName+' '+physician.LastName QueryTo,
query.QueryTo QueryToPhyID,queryStatus.QueryStatusDesc,queryResOutcome.ResponseOutComeDesc ResponseOutcome,
queryResImpactMaster.ResponseImpactDesc PrimaryImpact,queryResImpactMaster2.ResponseImpactDesc Impact2,
queryResImpactMaster2.ResponseImpactDesc Impact3,queryResImpactMaster2.ResponseImpactDesc Impact4,preDRG.MSDRG,
preDRG.MSDRGWeight,postDRG.MSDRG,postDRG.MSDRGWeight,null MSDRGWeightVariance,preDRG.APRDRG,
preDRG.APRDRGWeight,postDRG.APRDRG,postDRG.APRDRGWeight,null APRDRGWeightVariance,preDRG.SOI,postDRG.SOI,
preDRG.ROM,postDRG.ROM,resPhysician.FirstName+' '+resPhysician.LastName ResponseBy,query.CreatedDate QueryDate,
queryResponse.RespondedDate,userDrg.MSDRG,userDrg.MSDRGDesc,
userDrg.MSDRGWeight,userDrg.APRDRG,userDrg.APRDRGDesc,userDrg.APRDRGWeight,userDrg.SOI,userDrg.ROM,
facilityDrg.MSDRG,facilityDrg.MSDRGDesc,facilityDrg.MSDRGWeight,facilityDrg.APRDRG,facilityDrg.APRDRGDesc,
facilityDrg.APRDRGWeight,facilityDrg.SOI,facilityDrg.ROM,null CCMCC,null MedicalServiceType,null FinancialImpact,
null FinalLOS,facilityDrg.TotalCharge FacilityCharges, null PhysicianSpecialty,queryResponse.ResponseText QueryResponse,
assign.AssignTo CDSId,0 ReReviewStatus,null OUStay,0 ReReviewedCount,null MSDRGServiceType,
assign.InsertedDate assignedDate,accountNote.InsertedDate InitialReviewDate
from HIM_Visit visit
inner join HIM_Patient patient on visit.patientid=patient.patientid
-- CDS Assignement Details
inner join USER_AssignedAccount assign on assign.AccountNumber=visit.AccountNumber
inner join MasterHRCM.dbo.MST_ApplicationUser appuser on appuser.ApplicationUserId=assign.AssignTo
inner join MasterHRCM.dbo.MST_Hospital_User hospUser on hospUser.ApplicationUserId=appuser.ApplicationUserId
-- Query and Query Response Details
left join USER_Query query on query.AccountNumber=visit.AccountNumber
left join USER_QueryResponse queryResponse on queryResponse.AccountNumber=query.AccountNumber
and queryResponse.QueryId=query.QueryId
-- Query PRE and POST DRG Details
LEFT join LOG_USER_DRG preDRG on queryResponse.AccountNumber=preDRG.AccountNumber
and preDRG.DRGID=queryResponse.PreQueryDRGId
LEFT join LOG_USER_DRG postDRG on queryResponse.AccountNumber=postDRG.AccountNumber
and postDRG.DRGID=queryResponse.PostQueryDRGId
-- USER and Facility Final DRG Details
left join USER_DRG userDrg on userDrg.AccountNumber=visit.AccountNumber
left join FTP_DRG facilityDrg on facilityDrg.AccountNumber=visit.AccountNumber
-- Queried USer Details
left join MasterHRCM.dbo.MST_ApplicationUser queryUser on queryUser.ApplicationUserId=query.CreatedBy
-- Master Cross Walk Tables For Query Status, Query Type, Query Diagnosis, Response Outcome
left join MST_QueryStatus queryStatus on queryStatus.QueryStatusId=query.QueryStatusId
left join MST_QueryType queryType on queryType.QueryTypeId=query.QueryTypeId
left join MST_QueryDiagnosis queryDiagnosis on queryDiagnosis.QueryDiagnosisId=query.QueryDiagnosisId
left join MST_QueryResponseOutCome queryResOutcome on queryResOutcome.QueryResponseOutComeId=queryResponse.QueryResponseOutComeId
-- Primary and Secondary Impacts
left join MST_QueryResponseImpact queryResImpactMaster on queryResImpactMaster.QueryResponseImpactId=queryResponse.PrimaryResponseImpactId
left join MST_QueryResponseImpact queryResImpactMaster2 on queryResImpactMaster2.QueryResponseImpactId=queryResponse.ResponseImpactID2
left join MST_QueryResponseImpact queryResImpactMaster3 on queryResImpactMaster3.QueryResponseImpactId=queryResponse.ResponseImpactID3
left join MST_QueryResponseImpact queryResImpactMaster4 on queryResImpactMaster4.QueryResponseImpactId=queryResponse.ResponseImpactID4
-- Primary DRG Grouper Name
left join HIM_Insurance insurance on visit.VisitID=insurance.VisitID and insurance.SetID=1
left join MST_Insurance_PrimaryDRGGrouper drgGrouper on drgGrouper.InsurancePlanID=insurance.InsurancePlanID
left join MST_PrimaryDRGGrouper drgGrouperMaster on drgGrouperMaster.PrimaryDRGGrouperID=drgGrouper.PrimaryDRGGrouperID
left join MST_FinancialClass finClass on finClass.FinancialClassID=visit.financialclass
-- Queried and Responded Physician Details
left join MST_Physician physician on physician.PhysicianID=query.QueryTo
left join MST_Physician resPhysician on resPhysician.PhysicianID=queryResponse.ResponseBy
-- For Getting Initial Review Date
left join USER_AccountNote accountNote on accountNote.AccountNumber=assign.AccountNumber
and accountNote.NoteBy=assign.AssignTo and accountNote.InitialNoteStatus=1
where hospUser.ApplicationRoleId=2 -- CDS RoleId=2
-- Step 3 Update Some other columns based on external Computation
-- A: Update Query Weight Variance FOR MSDRG
update #CDSMetrics set MSDrgWeightVariance = (CAST(PostMSDRGWt as float) - CAST(PreMSDRGWt as float))
where PreMSDRGWt is not null and PreMSDRG!='' and PostMSDRGWt is not null and PostMSDRGWt!=''
-- B: Update Query Weight Variance FOR APR DRG
update #CDSMetrics set APRDrgWeightVariance = (CAST(PostAPRDRGWt as float) - CAST(PreAPRDRGWt as float))
where PreAPRDRGWt is not null and PreAPRDRG!='' and PostAPRDRGWt is not null and PostAPRDRGWt!=''
-- C: Update Final MS DRG (Calculated by CDI in KPAI tool) Suffix
update #CDSMetrics set ccmcc=dbo.fnMSDRGSUFFIX(UserMSDRGDesc)
-- D: Update MedicalServiceType and MSDRGServiceType to Only Medicare DRG's
update #CDSMetrics set MedicalServiceType=isnull(mst.MSTypeLongDesc,'Other'),MSDRGServiceType=mst.MSDRGType
from #CDSMetrics mm
left join MasterHRCM.dbo.MST_MedicalServiceTypes mst on mm.UserMSDRG=mst.MSDRG
where mm.FinClassGroupName='Medicare' and cast(ISNULL(mm.DischargeDate,GETDATE()) as datetime) between mst.EffectiveFrom and mst.EffectiveTo
-- E: Update ReReviewStatus to 1 and ReReviewedCount to Re Reviewed Accounts from MemoInfo table
update #CDSMetrics set ReReviewStatus=1 where AccountNumber in (
select accountNote.AccountNumber from #CDSMetrics mm
inner join USER_AccountNote accountNote on mm.AccountNumber=accountNote.AccountNumber and mm.CDSID=accountNote.NoteBy
group by accountNote.AccountNumber having COUNT(distinct CONVERT(date,accountNote.InsertedDate))>1
)
Update #CDSMetrics set ReReviewedCount=a.ReReviewCount from #CDSMetrics mm
inner join (
select AccountNumber,COUNT(distinct CONVERT(date,InsertedDate)) ReReviewCount,NoteBy
from USER_AccountNote accountNote group by AccountNumber,NoteBy having COUNT(distinct CONVERT(date,InsertedDate))>1
)a on a.AccountNumber=mm.AccountNumber and a.NoteBy=mm.CDSID
-- F: Update FinancialImpact to an AccountNumber based on Hospital BlendedRate
update #CDSMetrics set FinancialImpact=(cast(mm.MSDRGWeightVariance as float)*hbr.BlendedRate) from #CDSMetrics mm
left join MST_HospitalBlendedRate hbr on cast(ISNULL(mm.DischargeDate,GETDATE()) as datetime) between hbr.EffectiveFrom and hbr.EffectiveTo
where mm.FinClassGroupName='Medicare' and mm.MSDRGWeightVariance is not null --and mm.WeightVariance!=0
-- Step 4: Delete Mapped accounts from master table and insert new updated data in to Master table
Delete ms from Metrics_CDSMetrics ms
inner join #CDSMetrics temp on temp.accountnumber=ms.accountnumber
insert into Metrics_CDSMetrics(AccountNumber,AdmitDate,DischargeDate,CDS,FinClassGroupName,FinClassCode,FinClassName,
DrgGrouperType,QueryId,QueryName,QueryTypeId,QueryType,QueryDiagnosisId,QueryDiagnosis,QueryBy,QueryTo,
QueryToPhysicianId,QueryStatus,ResponseOutcome,PrimaryImpact,SecondaryImpact1,
SecondaryImpact2,SecondaryImpact3,PreMSDRG,PreMSDRGWt,PostMSDRG,PostMSDRGWt,MSDrgWeightVariance,
PreAPRDRG,PreAPRDRGWt,PostAPRDRG,PostAPRDRGWt,APRDrgWeightVariance,
PreSOI,PostSOI,PreROM,PostROM,RespondedBy,QueryDate,
RespondedDate,UserMSDRG,UserMSDRGDesc,UserMSDRGWT,UserAPRDRG,UserAPRDRGDesc,UserAPRDRGWT,UserAPRDRGSOI,UserAPRDRGROM,
FacilityMSDRG,FacilityMSDRGDesc,FacilityMSDRGWT,FacilityAPRDRG,FacilityAPRDRGDesc,FacilityAPRDRGWT,
FacilityAPRDRGSOI,FacilityAPRDRGROM,CCMCC,MedicalServiceType,FinancialImpact,FinalLos,
FacilityCharges,PhysicianSpecialty,QueryResponse,CDSID,ReReviewStatus,OUStay,ReReviewedCount,MSDRGServiceType,
AssignedDate,InitialReviewDate
)
select distinct * from #CDSMetrics
Drop Table #CDSMetrics
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','Metrics'
End Catch
END
-- exec [dbo].[Metrics_InsertCDSMetrics]
-- select * from Metrics_CDSMetrics
/*
select * from USER_QueryResponse where QueryId=117
select * from LOG_USER_DRG where DRGID in (105,116)
select * from USER_ACCountNote where accountnumber='350584941'
*/
GO
|
======================================================
Procedure Name:NLP_DeleteDataByDocument
Description:
with help of this to delete all analysis tables data corresponding to DocumentID or AccountNumber.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_DeleteDataByDocument] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/27/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_DeleteDataByDocument]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DocumentId int
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@DocumentId: '+''+cast(@DocumentId as varchar(15))+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
Delete From NLP_Allergy where DocumentId=@DocumentId
Delete From NLP_DxAnnotation where DocumentId=@DocumentId
Delete From NLP_DxCodeByDocument where DocumentId=@DocumentId and RStatus=0
Delete From NLP_DxCodeEvidence where DocumentId=@DocumentId
Delete From NLP_DxCodeCombination where AccountNumber=@AccountNumber
Delete From NLP_Habit where DocumentId=@DocumentId
Delete From NLP_Lab where DocumentId=@DocumentId
Delete From NLP_QueryDocKeyword where DocumentId=@DocumentId
Delete From NLP_VitalSign where DocumentId=@DocumentId
Delete From NLP_PCSCodeByDocument where DocumentId=@DocumentId and RStatus=0
Delete From NLP_PCSCodeEvidance where DocumentId=@DocumentId
Delete From CDA_Allergy where DocumentId=@DocumentId
Delete From CDA_Habit where DocumentId=@DocumentId
Delete From CDA_HomeMedication where DocumentId=@DocumentId
Delete From CDA_IPMedication where DocumentId=@DocumentId
Delete From CDA_Lab where DocumentId=@DocumentId
Delete From NLP_RadiologyImpression where DocumentId=@DocumentId
Delete From NLP_SectionHeader where DocumentId=@DocumentId
Delete From NLP_MedicalConcept where DocumentId=@DocumentId
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_DeleteFXValues
Description:
with help of this to delete Fracture data based on AccountNumber.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_DeleteFXValues] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 03/07/2019
-- Description: Fracture Data Insertion
-- =============================================
CREATE PROCEDURE [dbo].[NLP_DeleteFXValues]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
delete NLP_FXValues where AccountNumber=@AccountNumber and ElementName=''
delete NLP_FXAnnotations where AccountNumber=@AccountNumber
End Try
Begin Catch
Exec usp_GetDBErrorInfo @AccountNumber,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_GetDXCodes
Description:
with help of this to get DiagnosisCodes based on AccountNumber.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_GetDXCodes] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 07/02/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_GetDXCodes]
@AccountNumber varchar(30)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
select distinct DxCode,Poa,DxPriority from NLP_DxCode where AccountNumber=@AccountNumber and DxExclusionTypeId=0 order by DxPriority
End Try
Begin Catch
Exec usp_GetDBErrorInfo @AccountNumber,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_GetFractureCodeByAccountNo
Description:
with help of this to get FractureCodes based on AccountNumber.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_GetFractureCodeByAccountNo] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 03/07/2019
-- Description: Fracture Data Insertion
-- =============================================
CREATE PROCEDURE [dbo].[NLP_GetFractureCodeByAccountNo]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DocumentId int,
@POA varchar(5)
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+'POA: '+''+@POA+''+'|'+'DocumentId: '+''+cast(@DocumentId as varchar(15))+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
update NLP_FXAnnotations set ICD10Code=ij.code+fe.extdigit from NLP_FXAnnotations fx
inner join MasterHRCM.dbo.KB_Injurycodes ij on
(
fx.FDx=ISNULL(ij.fdx,'') AND
fx.FBpart1=ISNULL(ij.bodypart,'') AND
fx.FBLoc1=ISNULL(ij.bodypartloc,'') AND
fx.FBLoc2=ISNULL(ij.bodypartloc2,'') AND
fx.Ftnt=ISNULL(ij.source,'') AND
fx.effect=ISNULL(ij.effect,'') AND
fx.foreignbody=ISNULL(ij.foreignbody,'') AND
fx.FDermis=ISNULL(ij.bloodvessels,'') AND
fx.FDnd=ISNULL(ij.Displaced,'') AND
fx.FStage=ISNULL(ij.lacerationdata,'') AND
--fx.Ftype=ISNULL(ij.Type,'') AND
fx.Ftype3=ISNULL(ij.Type3,'')AND
fx.FBPart2=ISNULL(ij.mainbodypartloc,'')
)
inner join MasterHRCM.dbo.KB_FXExtension fe on fx.Ftype=ISNULL(fe.ftype,'') and fx.Ftype2=ISNULL(fe.ftype2,'')
inner join MasterHRCM.dbo.CMS_DXCodeDesc dc on ij.code+fe.extdigit=dc.ICD10Code
where AccountNumber=@AccountNumber and Rstatus in(0,4) and ij.[Status]=0
update NLP_FXAnnotations set ICD10Code=b.code+fe.extdigit from NLP_FXAnnotations f
inner join (
select code,FXAnnotationId,fbloc1,fbloc2,fbpart2,effect,foreignbody,fdermis,fdnd,ftype3,typescore,fbloc2score, (fbloc1+fbloc2+fbpart2+effect+foreignbody+fdermis+fdnd+ftype3+typescore+fbloc2score)count2,
max(fbloc1+fbloc2+fbpart2+effect+foreignbody+fdermis+fdnd+ftype3+typescore+fbloc2score) over (partition by FXAnnotationId) max_count from
(
select code,f.FXAnnotationId, case when isnull(i.bodypartloc,'')=isnull(f.fbloc1,'') then 1
else 0 end fbloc1,
case when isnull(i.bodypartloc2,'')=isnull(f.fbloc2,'') then 1
else 0 end fbloc2,
case when isnull(i.mainbodypartloc,'')=isnull(f.fbpart2,'') then 1
else 0 end fbpart2,
case when isnull(i.effect,'')=isnull(f.effect,'') then 1
else 0 end effect,
case when isnull(i.foreignbody,'')=isnull(f.foreignbody,'') then 1
else 0 end foreignbody,
case when isnull(i.bloodvessels,'')=isnull(f.fdermis,'') then 1
else 0 end fdermis,
case when isnull(i.displaced,'')=isnull(f.fdnd,'') then 1
else 0 end fdnd,
case when isnull(i.type3,'')=isnull(f.ftype3,'') then 1
else 0 end ftype3,
case when isnull(f.ftype,'')!='' and isnull(i.type,'')=isnull(f.ftype,'') then .1
else 0 end typescore,
case when isnull(f.fbloc2,'')!='' and isnull(i.bodypartloc2,'')=isnull(f.fbloc2,'') then 0.2
else 0 end fbloc2score
from MasterHRCM.dbo.KB_Injurycodes i
inner join NLP_FXAnnotations f on i.bodypart=f.FBpart1 and i.fdx=f.FDx -- and i.Encounter='A'
and f.ICD10Code is null and i.[Status]=0
where f.AccountNumber=@AccountNumber and f.Rstatus in (0,4) )a )b on f.FXAnnotationId=b.FXAnnotationId
inner join MasterHRCM.dbo.KB_FXExtension fe on f.Ftype=ISNULL(fe.ftype,'') and f.Ftype2=ISNULL(fe.ftype2,'')
where count2=max_count and f.Rstatus in(0,4)
SELECT * into #tdisease from NLP_DXCodeByDocument where AccountNumber=@AccountNumber and DxCodeSource like 'FractureDis'
select distinct fx.AccountNumber,@DocumentId DocumentId,fx.icd10code DXCode,dc.LongDesc AnnotationString,@POA POA,'Positive' Finding,'False' History,'KPAI' UserName,
0 AnnotationId,0 StartId,0 EndId,'FractureDis' DxCodeSource,'Y' Codable into #fxannots
from NLP_FXAnnotations fx
inner join MasterHRCM.dbo.CMS_DXCodeDesc dc on fx.ICD10Code=dc.ICD10Code
where AccountNumber=@AccountNumber and fx.Rstatus in (0,4)
delete ip from NLP_DXCode ip
inner join NLP_DXCodeByDocument temp on ip.AccountNumber=temp.AccountNumber and ip.DxCode=temp.DxCode
where ip.AccountNumber=@AccountNumber and temp.DxCodeSource like 'FractureDis' and temp.DxCode not in (select DXCode from #fxannots)
delete from NLP_DXCodeByDocument where AccountNumber=@AccountNumber and DxCodeSource like 'FractureDis'
and DxCode not in (select DXCode from #fxannots)
Insert Into NLP_DXCodeByDocument(AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,
DxCodeSource,Codable)
select AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,DxCodeSource,Codable
from #fxannots fx
where fx.DXCode not in (select DXCode from #tdisease)
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_GetOBGGestationalWeek
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_GetOBGGestationalWeek] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/07/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_GetOBGGestationalWeek]
@AccountNumber varchar(30),
@trimester1 int,
@gestationalWeeks int,
@outweeks varchar(100) output
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'Trimester1: '+''+cast(@trimester1 as varchar(15))+''+'|'+
'GestationalWeeks: '+''+cast(@gestationalWeeks as varchar(5))+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
if not exists (select top 1 1 from NLP_DxFactor where AccountNumber=@AccountNumber and factorname='preg')
Insert into NLP_DxFactor(AccountNumber,FactorName)values(@AccountNumber,'preg')
if(@trimester1 = 0)
BEGIN
if not exists (select top 1 1 from NLP_DxFactor where AccountNumber=@AccountNumber and FactorName like 'gestationalweeks%')
set @outweeks=37
else
begin
select @outweeks = FactorName from NLP_DxFactor where AccountNumber=@AccountNumber and FactorName like 'gestationalweeks%'
set @outweeks =REPLACE(@outweeks,'gestationalweeks: ','')
end
END
else if(@trimester1=2 and @gestationalWeeks=0)
begin
if not exists (select top 1 1 from NLP_DxFactor where AccountNumber=@AccountNumber and FactorName like 'gestationalweeks%')
begin
insert into NLP_DxFactor(AccountNumber,FactorName)values(@AccountNumber,'gestationalweeks: 27')
set @outweeks=27
end
else
begin
select @outweeks= FactorName from NLP_DxFactor where AccountNumber=@AccountNumber and FactorName like 'gestationalweeks%'
set @outweeks =REPLACE(@outweeks,'gestationalweeks: ','')
end
end
else
begin
if not exists (select top 1 1 from NLP_DxFactor where AccountNumber=@AccountNumber and FactorName like 'gestationalweeks%')
begin
delete from NLP_DxCodeByDocument where AccountNumber=@AccountNumber and DxCode like 'Z3A.37'
insert into NLP_DxFactor(AccountNumber,FactorName)values(@AccountNumber,'gestationalweeks: '+convert(varchar(4),@gestationalWeeks))
set @outweeks=convert(varchar(20),@gestationalWeeks)
end
else
begin
select @outweeks= FactorName from NLP_DxFactor where AccountNumber=@AccountNumber and FactorName like 'gestationalweeks%'
set @outweeks =REPLACE(@outweeks,'gestationalweeks: ','')
end
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_GetPCSCodes
Description:
with help of this to get ProcedureCodes based on AccountNumber.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_GetPCSCodes] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 07/02/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_GetPCSCodes]
@AccountNumber varchar(30)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
select distinct PCSCode,PCSPriority from NLP_PCSCode where AccountNumber=@AccountNumber and PcsExclusionTypeId=0 order by PCSPriority
End Try
Begin Catch
Exec usp_GetDBErrorInfo @AccountNumber,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_GetPriorityPCSDeviceQualifier
Description:
with help of this to get most specific device as well as qualifier.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_GetPriorityPCSDeviceQualifier] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/13/2018
-- Description: Getting More Priority Device and Qualifier here on based table contents
-- =============================================
CREATE PROCEDURE [dbo].[NLP_GetPriorityPCSDeviceQualifier]
@operation varchar(50),
@qualifier varchar(250),
@device varchar(250),
--@priorityQualifier varchar(50) OUT,
@priorityDevice varchar(250) OUT
AS
Declare @DevQryStr varchar(5000)
Declare @QuaQryStr varchar(5000)
Declare @InputParamQry varchar(600)
SET @InputParamQry='Operation: '+''+@operation+''+'|'+
'Qualifier: '+''+@qualifier+''+'|'+
'Device: '+''+@device+''
BEGIN
Begin Try
Set @DevQryStr='
select top 1 st_Device from (
select distinct d.device dis_Device,p.device st_Device,d.Priority dis_priority,d.GroupId dis_Groupid,
DENSE_RANK() over(PARTITION by d.groupid order by d.groupid,d.Priority desc) Rank1
from MasterHRCM.dbo.MST_DeviceExclusion d
inner join MasterHRCM.dbo.MST_PCSDevice p on d.Device = p.Device1
where d.Device in ('''+@device+''')
) a order by RANK1 desc
'
exec (@DevQryStr)
Set @QuaQryStr='
select top 1 st_Qualifier from (
select distinct d.Qualifier dis_Qualifier,p.Qualifier st_Qualifier,d.Priority dis_priority,d.GroupId dis_Groupid,
DENSE_RANK() over(PARTITION by d.groupid order by d.groupid,d.Priority desc) Rank1
from MasterHRCM.dbo.MST_QualifierExclusion d
inner join MasterHRCM.dbo.MST_PCSQualifier p on d.Qualifier = p.Qualifier1
where d.Qualifier in ('''+@qualifier+''')
) a order by RANK1 desc
'
exec (@QuaQryStr)
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
--Exec NLP_GetPriorityPCSDeviceQualifier 'Fusion','single','No Device',''
GO
|
======================================================
Procedure Name:NLP_InsertAllergyDXData
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertAllergyDXData] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/06/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertAllergyDXData]
@AccountNumber varchar(30),
@DocumentId int,
@allergiesdis varchar(200),
@medicine varchar(50),
@StartId int,
@EndId int,
@DocumentType varchar(20)
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@DocumentId: '+''+cast(@DocumentId as varchar(15))+''+'|'+
'@Allergiesdis: '+''+@allergiesdis+''+'|'+
'@Medicine: '+''+@medicine+''+'|'+
'@StartId: '+''+cast(@StartId as varchar(15))+''+'|'+
'@EndId: '+''+cast(@EndId as varchar(15))+''+'|'+
'@DocumentType: '+''+@DocumentType+''
declare @disorderId int
declare @code1 varchar(10)
declare @dischdate datetime
set @dischdate = null
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
select @dischdate = isnull(DischargeDate,getdate()) from HIM_Visit where AccountNumber = @AccountNumber
insert into NLP_Allergy(DocumentId,Content,Medicine,StartId,EndId)
values(@DocumentId,@allergiesdis,@medicine,@StartId,@EndId)
if exists(select top 1 Disorder from MasterHRCM.dbo.KB_AllergiesDxCode where Disorder =@medicine and [Status]=0)
Begin
select @disorderId = disorderid,@code1=Icdcode1 from MasterHRCM.dbo.KB_AllergiesDxCode ia
inner join MasterHRCM.dbo.CMS_DxCodeDesc d on ia.IcdCode1 = d.ICD10Code
where Disorder =@medicine and ia.Status=0 and d.Status = 1
and @dischdate between d.EffectiveYearFrom and d.EffectiveYearTo
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@code1,@medicine,'Y','Positive','False','KPAI',0,@StartId,@EndId,0,'AllergiesDis','Y')
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertAllICDDRG
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertAllICDDRG] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 07/01/2018
-- Description: Inserting APR and MSDRG Data
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertAllICDDRG]
@AccountNumber varchar(30),
@MsDrg varchar(10),
@MsDrgDescription varchar(150),
@MsDrgWeight varchar(10),
@MsDrgMdc varchar(10),
@MsDrgGlos varchar(10),
@MsDrgAlos varchar(10),
@PrimaryDxCode varchar(10),
@PrimaryPcscode varchar(10),
@DischargeDisposition int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
insert into NLP_AllICDDRG(AccountNumber,MSDRG,MSDRGDesc,MSDRGWeight,MSDRGMDC,MSDRGGLOS,MSDRGALOS,PrimaryDxCode,PrimaryPcsCode,DischargePosition)
values(@AccountNumber,@MsDrg,@MsDrgDescription,@MsDrgWeight,@MsDrgMdc,@MsDrgGlos,@MsDrgAlos,@PrimaryDxCode,@PrimaryPcscode,@DischargeDisposition)
End Try
Begin Catch
Exec usp_GetDBErrorInfo '<Input-Params>','<NLP>'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertAQASPendingAccount
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertAQASPendingAccount] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 06/06/2019
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertAQASPendingAccount]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
If not exists(select 1 from AQAS_PendingAccount where AccountNumber=@AccountNumber and PendingStatus=0)
Begin
Insert Into AQAS_PendingAccount(AccountNumber,ChangeSource)
select distinct ndx.AccountNumber,'ICDCode' from NLP_DxCode ndx
inner join MST_QueryAlert_ICDClassification qaDx on qaDx.ICDCode=ndx.DxCode
where ndx.AccountNumber=@AccountNumber
Insert Into AQAS_PendingAccount(AccountNumber,ChangeSource)
select distinct np.AccountNumber,'PCSCode' from NLP_PCSCode np
inner join MST_QueryAlert_PCSClassification qaPCS on qaPCS.PCSCode=np.PCSCode
where np.AccountNumber=@AccountNumber
Insert Into AQAS_PendingAccount(AccountNumber,ChangeSource)
select distinct nmc.AccountNumber,'MedicalConcept' from NLP_MedicalConcept nmc
inner join MST_QueryAlert_MedicalConceptClassification qaMC on qaMC.MedicalConceptName=nmc.MedicalConcept and qaMc.Finding=nmc.Finding and qaMC.History=nmc.History
where nmc.AccountNumber=@AccountNumber
End
else
Begin
Update AQAS_PendingAccount set ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber and PendingStatus=0
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @AccountNumber,'AQAS'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertCodableDXCodesFromAllDXCode
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertCodableDXCodesFromAllDXCode] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/19/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertCodableDXCodesFromAllDXCode]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30)
AS
Declare @TimeZoneName varchar(10)='IST'
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
Delete From NLP_DxCode where AccountNumber=@AccountNumber and DxCodeSource not like'DxCodeByCodeCombination'
/*
if((@DocumentType = 'D') or (@DocumentType = 'T') or (@DocumentType = 'TS') or (@DocumentType = 'ESUMMARY'))
set @finding ='None'
else
set @finding = 'Unknown'
select distinct DocumentId,DxCode,RStatus,DxCodeSource,AnnotationString into #tdis from NLP_DxCodeByDocument
where AccountNumber=@AccountNumber and Codable='Y' and DxCode is not null and DxCode!='unknown' --and finding in('positive',@finding)
group by DocumentId,DxCode,RStatus,DxCodeSource,AnnotationString*/
select distinct ndx.DocumentId,DxCode,DxCodeSource,AnnotationString into #tdis from NLP_DxCodeByDocument ndx
inner join HIM_Document hd on ndx.AccountNumber=hd.AccountNumber and ndx.DocumentId=hd.DocumentID
inner join MST_DocumentType mdt on mdt.DocumentTypeID=hd.DocumentTypeID
where ndx.AccountNumber=@AccountNumber and Codable='Y' and DxCode is not null and DxCode!='unknown'and
Finding in ('Positive',case
when mdt.DocumentAliasName='D' then 'None'
when mdt.DocumentAliasName='T' then 'None'
when mdt.DocumentAliasName='TS' then 'None'
when mdt.DocumentAliasName='ESUMMARY' then 'None' else 'Unknown' end)
group by ndx.DocumentId,DxCode,DxCodeSource,AnnotationString
--Insertion to NLP_DxCode(ICD10ICDPriority)
insert into NLP_DxCode(AccountNumber,DocumentId,DxCode,DxDesc,Poa,DxType,DxPriority,CcMcc,PhysicianId,DxDate,UserName,DxCodeSource)
select a.AccountNumber,a.DocumentId,a.DxCode,a.DxDesc,a.Poa,a.DxType,ROW_NUMBER() OVER (ORDER BY a.AccountNumber) DxPriority,
a.CcMcc,a.PhysicianID,dbo.convertTimeZoneToUtc(@TimeZoneName,a.EditDateTime),a.UserName,a.DxCodeSource
from
(select distinct hd.AccountNumber,td.DocumentId,DxCode,AnnotationString as DxDesc,'Y' Poa,'S' DxType,NULL CcMcc,hd.PhysicianID,hd.EditDateTime,
'KPAI' UserName,'DxByDocument' DxCodeSource,DENSE_RANK() over(PARTITION by td.DxCode order by hd.EditDateTime,td.AnnotationString) Rank1
from #tdis td
inner join HIM_Document hd on td.DocumentId=hd.DocumentID
where hd.AccountNumber=@AccountNumber)a where a.Rank1=1
drop table #tdis
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertCodablePCSCodesFromAllPCSCode
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertCodablePCSCodesFromAllPCSCode] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/29/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertCodablePCSCodesFromAllPCSCode]
@AccountNumber varchar(30),
@DocumentId int
AS
Declare @TimeZoneName varchar(10)='IST'
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@DocumentId: '+''+cast(@DocumentId as varchar(15))+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
Delete From NLP_PCSCode where AccountNumber=@AccountNumber
--NLP_PcsCode Insertion From NLP_PcsCodeByDocument
Insert Into NLP_PcsCode(AccountNumber,DocumentId,PCSCode,PCSDesc,PCSType,PCSPriority,PhysicianID,PCSDate,UserName)
select a.AccountNumber,a.DocumentId,a.PcsCode,a.PcsDesc,a.PcsType,ROW_NUMBER() OVER (ORDER BY a.AccountNumber) PcsPriority,
a.PhysicianID,dbo.convertTimeZoneToUtc(@TimeZoneName,a.EditDateTime),a.UserName from
(select distinct pcd.AccountNumber,pcd.DocumentId,pcd.PCSCode,PcsDesc,'P' PcsType,hd.PhysicianID,hd.EditDateTime,
'KPAI' UserName,'PcsByDocument' PcsCodeSource,DENSE_RANK() over(PARTITION by pcd.PcsCode order by hd.EditDateTime) Rank1
from NLP_PCSCodeByDocument pcd
inner join HIM_Document hd on pcd.DocumentId=hd.DocumentID
where pcd.AccountNumber=@AccountNumber and pcd.RStatus=0 and pcd.PCSCode is not null)a where a.Rank1=1
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertDirectPCS
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertDirectPCS] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 05/17/2018
-- Description: To insert Procedure code into NLP_PcsCodeByDocument by using the all standard PCS Terms.
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertDirectPCS]
@accountnumber varchar(30),
@documentId int,
@section varchar(100),
@bodySystem varchar(100),
@operation varchar(100),
@bodyPart varchar(100),
@approach varchar(100),
@device varchar(100),
@qualifier varchar(100),
@userName varchar(50),
@docOperation varchar(100),
@docBodyPart varchar(100),
@docDevice varchar(100),
@docQualifier varchar(100),
@opStartPos int,
@opEndPos int,
@bpStartPos int,
@bpEndPos int,
@devStartPos int,
@devEndPos int,
@quaStartPos int,
@quaEndPos int,
@finalCode varchar(20),
@sectionHeader varchar(20),
@finding varchar(20),
@history varchar(20),
@docApproach varchar(100),
@approachStartPos int,
@approachEndPos int
AS
Declare @TimeZoneName varchar(10)='IST'
DECLARE @code VARCHAR(10)
BEGIN
SET NOCOUNT ON;
Begin Try
if(@finalCode='')
begin
SELECT @code = Code from MedmineMaster.dbo.pcstabular where [section]=@section and bodysystem=@bodySystem and operation=@operation and bodypart=@bodyPart
and approach=@approach and device=@device and qualifier=@qualifier
end
else
begin
set @code = @finalCode
end
INSERT INTO dbo.NLP_PcsCodeByDocument (AccountNumber,documentId,PcsCode,PcsDesc,PhysicianID,PcsDate,UserName,SectionHeader,Finding,History)
VALUES(@accountnumber,@documentId,@code,@docOperation,null,dbo.convertTimeZoneToUtc(@TimeZoneName,null),@userName,@sectionHeader,@finding,@history)
if(@code is not null)
begin
INSERT INTO dbo.NLP_PcsCodeEvidance (AccountNumber,documentId,PcsCode,PcsTerm,PcsType,StartId,EndId,UserName)
VALUES(@accountnumber,@documentId,@code,@docOperation,'Operation',@opStartPos,@opEndPos,@userName)
INSERT INTO dbo.NLP_PcsCodeEvidance (AccountNumber,documentId,PcsCode,PcsTerm,PcsType,StartId,EndId,UserName)
VALUES(@accountnumber,@documentId,@code,@docBodyPart,'BodyPart',@bpStartPos,@bpEndPos,@userName)
if(@docDevice !='')
begin
INSERT INTO dbo.NLP_PcsCodeEvidance (AccountNumber,documentId,PcsCode,PcsTerm,PcsType,StartId,EndId,UserName)
VALUES(@accountnumber,@documentId,@code,@docDevice,'Device',@devStartPos,@devEndPos,@userName)
end
if(@docQualifier !='')
begin
INSERT INTO dbo.NLP_PcsCodeEvidance (AccountNumber,documentId,PcsCode,PcsTerm,PcsType,StartId,EndId,UserName)
VALUES(@accountnumber,@documentId,@code,@docQualifier,'Qualifier',@quaStartPos,@quaEndPos,@userName)
end
if(@docApproach !='')
begin
INSERT INTO dbo.NLP_PcsCodeEvidance (AccountNumber,documentId,PcsCode,PcsTerm,PcsType,StartId,EndId,UserName)
VALUES(@accountnumber,@documentId,@code,@docApproach,'Approach',@approachStartPos,@approachEndPos,@userName)
end
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo '<Input-Params>','<Source-AppName>'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertDRGResult
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertDRGResult] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 07/01/2018
-- Description: Inserting APR and MSDRG Data
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertDRGResult]
@AccountNumber varchar(30),
@MsDrg varchar(10),
@MsDrgDescription varchar(150),
@MsDrgWeight varchar(10),
@MsDrgMdc varchar(10),
@MsDrgGlos varchar(10),
@MsDrgAlos varchar(10),
@AprDrg varchar(10),
@AprDrgDescription varchar(150),
@AprDrgWeight varchar(10),
@AprDrgMdc varchar(10),
@AprDrgGlos varchar(10),
@AprDrgAlos varchar(10),
@Soi varchar(10),
@Rom varchar(10),
--Log Entry Fields
@AdmitDate varchar(25),
@DischargeDate varchar(25),
@Dob varchar(25),
@Age int,
@Gender varchar(2),
@DxCodes varchar(1000),
@PcsCodes varchar(1000),
@DischargeDisposition int,
@PrimaryDxCode varchar(10),
@PrimaryPcscode varchar(10)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
If(@PrimaryDxCode='')
Set @PrimaryDxCode=NULL
If(@PrimaryPcscode='')
Set @PrimaryPcscode=NULL
--Log Entry Insertion
insert into LOG_NLP_DRG(AccountNumber,MsDrg,MsDrgDesc,MsDrgWeight,MsDrgMDC,MsDrgGLOS,MsDrgALOS,AprDrg,AprDrgDesc,AprDrgWeight,AprDrgMDC,
AprDrgGLOS,AprDrgALOS,Soi,Rom,AdmitDate,DischargeDate,Gender,DOB,Age,DxCodes,PcsCodes,DischargeDisposition,UserName,TargetTable,
PrimaryDxCode,PrimaryPcsCode)
values(@AccountNumber,@MsDrg,@MsDrgDescription,@MsDrgWeight,@MsDrgMdc,@MsDrgGlos,@MsDrgAlos,@AprDrg,@AprDrgDescription,@AprDrgWeight,
@AprDrgMdc,@AprDrgGlos,@AprDrgAlos,@Soi,@Rom,@AdmitDate,@DischargeDate,@Gender,@Dob,@Age,@DxCodes,@PcsCodes,@DischargeDisposition,'KPAI','NLP_Drg',
@PrimaryDxCode,@PrimaryPcscode)
If not Exists(select 1 from NLP_DRG where AccountNumber=@AccountNumber)
Begin
insert into NLP_DRG(AccountNumber,MSDRG,MSDRGDesc,MSDRGWeight,MSDRGMDC,MSDRGGLOS,MSDRGALOS,APRDRG,APRDRGDesc,APRDRGWeight,APRDRGMDC,
APRDRGGLOS,APRDRGALOS,SOI,ROM,UserName,PrimaryDxCode,PrimaryPcsCode)
values(@AccountNumber,@MsDrg,@MsDrgDescription,@MsDrgWeight,@MsDrgMdc,@MsDrgGlos,@MsDrgAlos,@AprDrg,@AprDrgDescription,@AprDrgWeight,
@AprDrgMdc,@AprDrgGlos,@AprDrgAlos,@Soi,@Rom,'KPAI',@PrimaryDxCode,@PrimaryPcscode)
End
Else
Begin
Update NLP_DRG set MSDRG=@MsDrg ,MSDRGDesc=@MsDrgDescription,MSDRGWeight=@MsDrgWeight,MSDRGMDC=@MsDrgMdc,MSDRGGLOS=@MsDrgGlos,
MSDRGALOS=@MsDrgAlos,APRDRG=@AprDrg,APRDRGDesc=@AprDrgDescription,APRDRGWeight=@AprDrgWeight,APRDRGMDC=@AprDrgMdc,
APRDRGGLOS=@AprDrgGlos,APRDRGALOS=@AprDrgAlos,SOI=@Soi,ROM=@Rom,ModifiedDate=GETDATE(),PrimaryDxCode=@PrimaryDxCode,
PrimaryPcsCode=@PrimaryPcscode where AccountNumber=@AccountNumber
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo '<Input-Params>','<NLP>'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertDrugDXCombination
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertDrugDXCombination] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/06/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertDrugDXCombination]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DocumentId INT,
@DocumentType varchar(20),
@disorder VARCHAR(100),
@drug VARCHAR(100),
@disstartId int,
@disendId int,
@DrugStartId int,
@DrugEndId int,
@SectionHeader varchar(200)
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@DocumentID: '+''+cast(@DocumentID as varchar(15))+''+'|'+
'@DocumentType: '+''+@DocumentType+''+'|'+
'@Disorder: '+''+@disorder+''+'|'+
'@Drug: '+''+@drug+''+'|'+
'@DisstartId: '+''+cast(@disstartId as varchar(15))+''+'|'+
'@DisendId: '+''+cast(@disendId as varchar(15))+''+'|'+
'@DrugStartId: '+''+cast(@DrugStartId as varchar(15))+''+'|'+
'@DrugEndId: '+''+cast(@DrugEndId as varchar(15))+''+'|'+
'@SectionHeader: '+''+@SectionHeader+''
DECLARE @disorderid as INT
DECLARE @icdcode as VARCHAR(20)
DECLARE @disordername as VARCHAR(400)
declare @code1 as varchar(20)
declare @dischdate datetime
set @dischdate=null
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
select @dischdate = isnull(DischargeDate,getdate()) from HIM_Visit where AccountNumber = @AccountNumber
select @disorderid=DisorderId,@disordername=Disorder from MasterHRCM.dbo.KB_Disorder where Disorder=@disorder
select @icdcode=icdcode4 from MasterHRCM.dbo.KB_DxCode ic
inner join MasterHRCM.dbo.CMS_DxCodeDesc d on ic.Icdcode4 = d.ICD10Code
where DisorderId=@disorderid and causeid=0 and siteid=0
and site1id=0 and site2id=0 and ManifestationId = 0 and stage = 9 and temporalconcept1 = 9
and temporalconcept2 = 0 and history='false' and neonatal = 0 and ic.Status not in (1) and d.Status = 1
and @dischdate between d.EffectiveYearFrom and d.EffectiveYearTo
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@icdcode,@disordername,'Y','Positive','False','KPAI',0,@disstartId,@disendId,0,'DrugDxCombination','Y')
select @code1=Code from MasterHRCM.dbo.CMS_DrugDxCode where MainTerm=@drug and Level=0 and DrugType='Adverseeffect' and Code not like '--'
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@code1+'A',@drug,'Y','Positive','False','KPAI',0,@DrugStartId,@DrugEndId,0,'DrugDxCombination','Y')
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertDrugEffectData
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertDrugEffectData] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/06/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertDrugEffectData]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DocumentId int,
@drugdose varchar(200),
@drugcause varchar(200),
@drugname varchar(200),
@docname varchar(10),
@encounter varchar(200)
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='@AccountNumber: '+''+@AccountNumber+''+'|'+
'@DocumentID: '+''+cast(@DocumentID as varchar(50))+''+'|'+
'@DrugDose: '+''+@drugdose+''+'|'+
'@DrugCause: '+''+@drugcause+''+'|'+
'@DrugName: '+''+@drugname+''+'|'+
'@DocName: '+''+@docname+''+'|'+
'@Encounter: '+''+@encounter+''
declare @code1 as varchar(15)
declare @priority as int
declare @tmpIntId as int
declare @code as varchar(50)
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
if exists(select Code from MasterHRCM.dbo.CMS_DrugDxCode where MainTerm=@drugname and Level=0 and DrugType=@drugcause)
Begin
select @code1=Code from MasterHRCM.dbo.CMS_DrugDxCode where MainTerm=@drugname and Level=0 and DrugType=@drugcause
if(@code1 is not null)
Begin
if not exists (
select top 1 AccountNumber from NLP_DxCodeByDocument where AccountNumber = @AccountNumber and DxCode= @code1 and
Finding = 'Positive'
)
Begin
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@code1+'A',@drugdose+' of '+@drugname+' '+@drugcause,'Y','Positive','False','KPAI',0,0,0,0,'DrugEffect','Y')
End
End
End
else if(@drugname = 'unspecified substance' and @drugcause = 'Poisoning_Intentional')
Begin
if(@encounter = 'subsequent')
set @code = 'T65.92XD'
else
set @code = 'T65.92XA'
End
if(@code is not null)
Begin
if not exists (select top 1 AccountNumber from NLP_DxCodeByDocument where AccountNumber = @AccountNumber and
DxCode = @code1 and Finding = 'Positive')
Begin
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@code,'Toxic effect of unspecified substance','Y','Positive','False','KPAI',0,0,0,0,'DrugEffect','Y')
End
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertDXAnnotationByDocument
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertDXAnnotationByDocument] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 05/24/2018
-- Description: InsertingDxAnnotationFromDocument
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertDXAnnotationByDocument]
-- Add the parameters for the stored procedure here
@Disorder varchar(100),
@Cause varchar(100),
@Site varchar(100),
@Site1 varchar(100),
@Site2 varchar(100),
@Manifestation varchar(100),
@Type varchar(100),
@AnnotId int,
@DocumentId int,
@Content varchar(5000),
@Stage varchar(20),
@TConcept1 varchar(50),
@TConcept2 varchar(50),
@Finding varchar(50),
@History varchar(50),
@StartId int,
@EndId int,
@RuleName varchar(50),
@AccountNumber varchar(20),
@DocumentType varchar(20),
@Neonatal tinyint,
@Gender tinyint,
@SectionHeader varchar(200),
@Codable varchar(2)
AS
declare @Code1 varchar(20)
declare @Code2 varchar(20)
declare @Code3 varchar(20)
declare @DisorderId int
declare @CauseId int
declare @SiteId int
declare @Site1Id int
declare @Site2Id int
declare @ManifestationId int
declare @TConcept1Id int
declare @TConcept2Id int
declare @StageId int
declare @TypeId int
declare @NCauseId int
declare @Dischdate datetime
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
set @code1 = null
set @code2 = null
set @code3 = null
set @causeId = null
set @siteid = null
set @site1Id = null
set @site2Id = null
set @manifestationId = null
set @tconcept1Id=null
set @tconcept2Id=null
set @stageId=null
set @typeId=null
set @NCauseId=null
set @dischdate=null
insert into NLP_DxAnnotation (AnnotationId,AccountNumber,DocumentId,Disorder,Cause,Manifestation,Site,Site1,Site2,TConcept1,TConcept2,Type,Stage)
values(@annotId,@AccountNumber,@DocumentId,@disorder,@cause,@manifestation,@site,@site1,@site2,@tconcept1,@tconcept2,@type,@stage)
--Max Combination Query i.e cause and site and manifestation
Select top 1 @disorderId = disorderid from MasterHRCM.dbo.KB_Disorder where disorder=@disorder and Status=0
Select top 1 @typeId = TypeId from MasterHRCM.dbo.KB_Type where Type=@type and Status=0
if (@typeId!=13 and not exists( select 1 from MasterHRCM.dbo.KB_DxCode where DisorderId = @disorderId and Status !=1 and Type=@typeId))
set @typeId=13
select @dischdate = isnull(DischargeDate,getdate()) from HIM_Visit where AccountNumber = @AccountNumber
select ic.* into #DisIcds from MasterHRCM.dbo.KB_DxCode ic
inner join MasterHRCM.dbo.CMS_DxCodeDesc d on ic.Icdcode4 = d.ICD10Code
where DisorderId = @disorderId and ic.Status not in (1) and d.Status = 1
and Neonatal = @Neonatal and Gender in(0, @Gender) and Type=@typeId and history=@history
and @dischdate between d.EffectiveYearFrom and d.EffectiveYearTo
Select top 1 @causeId = i.CauseId from MasterHRCM.dbo.KB_Cause i
inner join #DisIcds d on i.CauseId = d.causeid where cause=ISNULL(@cause,'Blank') and i.Status=0-- and d.status!=1
Select top 1 @siteId = s.SiteId from MasterHRCM.dbo.KB_Site s
inner join #DisIcds d on s.siteid = d.siteid where site=ISNULL(@site,'Blank') and s.Status=0-- and d.status!=1
Select top 1 @site1Id = s1.Site1Id from MasterHRCM.dbo.KB_Site1 s1
inner join #DisIcds d on s1.Site1Id = d.site1id where Site=ISNULL(@site1,'Blank') and s1.Status=0-- and d.status!=1
Select top 1 @site2Id = s2.Site2Id from MasterHRCM.dbo.KB_Site2 s2
inner join #DisIcds d on s2.Site2Id = d.site2id where Site=ISNULL(@site2,'Blank') and s2.Status=0-- and d.status!=1
Select top 1 @manifestationId = ManifestationId from MasterHRCM.dbo.KB_Manifestation where manifestation=ISNULL(@manifestation,'Blank') and Status=0
select @stageId=stage from #DisIcds where stage=@stage
Select top 1 @tconcept1Id = t1.TConcept1Id from MasterHRCM.dbo.KB_TemporalConcept1 t1
inner join #DisIcds d on t1.TConcept1Id = d.temporalconcept1 where tconcept1=@tconcept1 and t1.Status=0-- and d.status!=1
Select top 1 @tconcept2Id = t2.TConcept2Id from MasterHRCM.dbo.KB_TemporalConcept2 t2
inner join #DisIcds d on t2.TConcept2Id = d.temporalconcept2 where TConcept2=ISNULL(@tconcept2,'Blank') and t2.Status=0-- and d.status!=1
-- Need to check gender and nenonatal here
--DisorderId gets NULL what will happen?
if (@causeId is null)
set @causeId = 0
if(@siteId is null)
set @siteId = 0
if(@site1Id is null)
set @site1Id = 0
if(@site2Id is null)
set @site2Id = 0
if(@stageId is null)
set @stage = 9
if(@manifestationId is null)
set @manifestationId = 0
if (@tconcept1Id is null)
set @tconcept1Id = 9
if (@tconcept2Id is null)
set @tconcept2Id = 0
select top 1 @code1=icdcode4,@code2=icdcode5,@code3=icdcode6 from #DisIcds
where Disorderid=@disorderId and causeid=@causeId and siteid=@siteId
and site1id=@site1Id and site2id=@site2Id and
ManifestationId = @manifestationId and stage = @stage and
temporalconcept1 = @tconcept1Id and temporalconcept2 = @tconcept2Id
if(@Code1 is not null)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@code1,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
if(@code1 is null and @siteId!=0) --site Only
begin
print 's and s1- and s2'
select top 1 @code1=icdcode4,@code2=icdcode5,@code3=icdcode6 from #DisIcds
where Disorderid=@disorderId and causeid=0 and siteid=ISNULL(@siteId,0)
and site1id=0 and site2id=ISNULL(@site2Id,0) and ManifestationId = ISNULL(@manifestationId,0)
and stage=@stage and TemporalConcept1=@tconcept1Id and temporalconcept2=ISNULL(@tconcept2Id,0)
if(@Code1 is not null)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@code1,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
--NLP_insertDxCodeEvidance
if(@code1 is null)
begin
print 's and s1- and s2-'
select top 1 @code1=icdcode4,@code2=icdcode5,@code3=icdcode6 from #DisIcds
where Disorderid=@disorderId and causeid=0 and siteid=ISNULL(@siteId,0) and site1id=0
and site2id=0 and ManifestationId = ISNULL(@manifestationId,0) and stage=@stage
and TemporalConcept1=@tconcept1Id and temporalconcept2=ISNULL(@tconcept2Id,0)
if(@Code1 is not null)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@code1,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
end
end
if(@code1 is null) --disorder Only
begin
print 'D'
select top 1 @code1=icdcode4,@code2=icdcode5,@code3=icdcode6 from #DisIcds
where Disorderid=@disorderId and causeid=0 and SiteId=0 and Site1Id=0 and Site2Id=0
and ManifestationId=0 and stage=@stage and TemporalConcept1=@tconcept1Id
and temporalconcept2=0
if(@Code1 is not null)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@code1,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
--StartHere
if(@code1 is not null and @manifestationId!=0)
begin
declare @mstartId int
declare @mendId int
declare @mcode1 varchar(50)
declare @mcode2 varchar(50)
declare @mcode3 varchar(50)
declare @manfestDisId int
declare @indexId int
declare @DisIndexId int
Select top 1 @manfestDisId = disorderid from MasterHRCM.dbo.KB_Disorder where disorder=@manifestation and Status=0
select top 1 @mcode1=icdcode4,@mcode2=IcdCode5,@mcode3=IcdCode6 from MasterHRCM.dbo.KB_DxCode ic
inner join MasterHRCM.dbo.CMS_DxCodeDesc d on ic.Icdcode4 = d.ICD10Code
where DisorderId=@manfestDisId and CauseId=0 and SiteId=0 and Site1Id=0 and Site2Id=0 and
ManifestationId=0 and stage=@stage and type=@typeId and temporalconcept1=@tconcept1Id
and temporalconcept2=0 and ic.Status != 1 and d.Status = 1 and history=@history
and neonatal=@Neonatal and @dischdate between d.EffectiveYearFrom and d.EffectiveYearTo
if(@mcode1 is not null)
begin
select @indexId=CHARINDEX(@manifestation, @content)
select @DisIndexId=CHARINDEX(@disorder, @content)
set @mstartId=@startId+@indexId
set @mendId = @mstartId+LEN(@manifestation)
set @endId=@startId+@DisIndexId+LEN(@disorder)
---Insereting Manifestattion as DisorderId in Tempdisease
print 'Manifestation as Disorder'
insert into NLP_DxCodeByDocument (AccountNumber, DocumentId, DxCode, AnnotationString,Poa,SectionHeader,Finding,History,UserName,AnnotationId,StartId, EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@mcode1,@manifestation,'Y',@sectionHeader,@finding,@history,'KPAI',@annotId,@mstartId,@mendId,0,@ruleName,@Codable)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@mcode1,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
if(@mcode2 is not null and @mcode2!='')
begin
insert into NLP_DxCodeByDocument (AccountNumber, DocumentId, DxCode, AnnotationString,Poa,SectionHeader,Finding,History,UserName,AnnotationId,StartId, EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@mcode2,@manifestation,'Y',@sectionHeader,@finding,@history,'KPAI',@annotId,@mstartId,@mendId,0,@ruleName,@Codable)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@mcode2,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
end
end
end
end
if (@disorderid is null)
begin
print 'Entry in disorder table only'
select top 1 @disorderId=disorderid from MasterHRCM.dbo.KB_Disorder where disorder=@disorder
insert into NLP_DxCodeByDocument (AccountNumber, DocumentId, DxCode, AnnotationString,Poa,SectionHeader,Finding,History,UserName,AnnotationId,StartId, EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,'unknown',@content,'Y',@sectionHeader,@finding,@history,'KPAI',@annotId,@startId,@endId,0,@ruleName,@Codable)
end
else
if(@code1 is not null and @code1!='')
begin
print 'Disorder id existed in icdcode1'
insert into NLP_DxCodeByDocument (AccountNumber, DocumentId, DxCode, AnnotationString,Poa,SectionHeader,Finding,History,UserName,AnnotationId,StartId, EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@code1,@content,'Y',@sectionHeader,@finding,@history,'KPAI',@annotId,@startId,@endId,0,@ruleName,@Codable)
--exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@code1,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
end
if(@code2 is not null and @code2!='')
begin
insert into NLP_DxCodeByDocument (AccountNumber, DocumentId, DxCode, AnnotationString,Poa,SectionHeader,Finding,History,UserName,AnnotationId,StartId, EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@code2,@content,'Y',@sectionHeader,@finding,@history,'KPAI',@annotId,@startId,@endId,0,@ruleName,@Codable)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@code2,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
end
drop table #DisIcds
End Try
Begin Catch
Exec usp_GetDBErrorInfo '<Input-Params>','NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertDXCodeAudit
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertDXCodeAudit] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 06/05/2019
-- Description: Information about UpVote and Delete to DxCode
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertDXCodeAudit]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DxCode varchar(10),
@DxCodeId int,
@AuditorId int,
@Reason varchar(250),
@Note varchar(250),
@Action varchar(50),
@DXCodeWeight float
AS
Declare @AuditType int=1
Declare @InputParamQry varchar(1000)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'DxCode: '+''+@DxCode+''+'|'+
'DxCodeId: '+''+cast(@DxCodeId as varchar(15))+''+'|'+
'AuditorId: '+''+cast(@AuditorId as varchar(15))+''+'|'+
'Reason: '+''+@Reason+''+'|'+
'Note: '+''+@Note+''+'|'+
'Action: '+''+@Action+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
If(@Action='DownVote')
SET @AuditType=2
If(@Action='NLPDXCodeDownVoteFromUser')
SET @AuditType=3
If(@DxCode is not null and @DxCode!='')
Begin
Delete from NLP_DxCode_Audit where AccountNumber=@AccountNumber and DxCode=@DxCode --and DxCodeId=@DxCodeId
Insert into NLP_DxCode_Audit(DxCodeId,AccountNumber,DxCode,AuditType,AuditorId,Reason,Note,DXCodeWeight)values(@DxCodeId,@AccountNumber,@DxCode,@AuditType,@AuditorId,@Reason,@Note,@DXCodeWeight)
Insert Into Log_NLP_DxCode_Audit(DxCodeAuditId,DxCodeId,AccountNumber,DxCode,AuditType,AuditorId,Reason,Note,DXCodeWeight)
select DxCodeAuditId,DxCodeId,AccountNumber,DxCode,AuditType,AuditorId,Reason,Note,DXCodeWeight from NLP_DxCode_Audit where AccountNumber=@AccountNumber and DxCode=@DxCode --and DxCodeId=@DxCodeId
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertDXCodeByCodeCombination
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertDXCodeByCodeCombination] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/19/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertDXCodeByCodeCombination]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DocumentId int,
@DocumentType varchar(20)
AS
Declare @TimeZoneName varchar(10)='IST'
declare @ipcount int
declare @priority int
declare @tmpIntId int
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@DocumentId: '+''+cast(@DocumentId as varchar(15))+''+'|'+
'@DocumentType: '+''+@DocumentType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
declare Patients cursor for
select count(distinct ip.DxCode) as dxcount,dx.dxcomb,dx.count,dx.DisorderId,dx.Content,dx.groupid
from NLP_DxCode ip
inner join MasterHRCM.dbo.KB_DxCodeCombination dx on ip.DxCode = dx.dx
where ip.AccountNumber =@AccountNumber and
dx.dxcomb not in(select distinct DxCode from NLP_DxCode where AccountNumber=@AccountNumber and ip.DxExclusionTypeId in (0,2,3,4))
and ip.DxExclusionTypeId in (0,2,3,4)
group by dx.dxcomb,dx.count,dx.DisorderId,dx.Content,dx.groupid
declare @dxcomb varchar(10)
declare @dxcount int
declare @dxCombCount int
declare @DisorderId int
declare @Content varchar(100)
declare @dxgroupId int
open Patients
fetch next from Patients into @dxcount,@dxcomb,@dxCombCount,@DisorderId,@Content,@dxgroupId
while (@@fetch_Status<>-1)
begin
if(@dxcount=@dxCombCount)
begin
--Insertion to NLP_DxCode(ICD10ICDPriority)
If not exists(select 1 from NLP_DxCode where AccountNumber=@AccountNumber and DxCode=@dxcomb and DxCodeSource='DxCodeByCodeCombination')
insert into NLP_DxCode(AccountNumber,DocumentId,DxCode,DxDesc,Poa,DxType,DxPriority,CcMcc,PhysicianId,DxDate,UserName,DxCodeSource)
select distinct @AccountNumber,@DocumentId,@dxcomb,@Content as DxDesc,'Y','S',0,NULL as CcMcc,PhysicianID,dbo.convertTimeZoneToUtc(@TimeZoneName,EditDateTime),
'KPAI','DxCodeByCodeCombination' from HIM_Document where DocumentID=@DocumentId
/*Inserting dxcombo log*/
insert into NLP_DxCodeCombination(AccountNumber,CombinationCode,RootCode,CombinationType)
select distinct ip.AccountNumber,id.dxcomb,id.dx,'Combo'
from NLP_DxCode ip
inner join MasterHRCM.dbo.KB_DxCodeCombination id on id.dx = ip.DxCode
where ip.AccountNumber = @AccountNumber and id.dxcomb = @dxcomb
end
fetch next from Patients into @dxcount,@dxcomb,@dxCombCount,@DisorderId,@Content,@dxgroupId
end
close Patients
deallocate Patients
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertDXCodeByPCSCode
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertDXCodeByPCSCode] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/20/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertDXCodeByPCSCode]
@AccountNumber varchar(30),
@DocumentId int,
@DocumentType varchar(20)
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@DocumentId: '+''+cast(@DocumentId as varchar(15))+''+'|'+
'@DocumentType: '+''+@DocumentType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
declare ProcedureIcdCodes cursor for
select distinct PCSCode from dbo.NLP_PCSCode where AccountNumber=@AccountNumber and PcsExclusionTypeId=0
declare @code1 varchar(20)
open ProcedureIcdCodes
fetch next from ProcedureIcdCodes into @code1
while (@@fetch_Status<>-1)
begin
select pcscode,PastCode into #temp from MasterHRCM.dbo.MST_ProcedureStatus where PCSCode=@code1
if not exists(
select 1 from NLP_DxCode dx
inner join HIM_Document hd on hd.AccountNumber=dx.AccountNumber
inner join MST_DocumentType mt on mt.DocumentTypeID=hd.DocumentTypeID
where dx.AccountNumber = @AccountNumber and
DxCode in (select PastCode from #temp ) and mt.DocumentAliasName in ('ERR','H','C')
)
begin
update NLP_DxCode set DxExclusionTypeId = 4 where AccountNumber=@AccountNumber
and DxCode in (select PastCode from #temp)and DxExclusionTypeId = 0
end
drop table #temp
fetch next from ProcedureIcdCodes into @code1
end
close ProcedureIcdCodes
deallocate ProcedureIcdCodes
--ReArranging DxPriority on AccountNumber To NLP_DxCode.Because of Post Combination code Insertions.
Update NLP_DxCode set DxPriority=a.row_number from NLP_DxCode d
inner join
(select dx.AccountNumber,dx.DocumentId,dx.DxCode,ROW_NUMBER() OVER (ORDER BY hd.EditDateTime) row_number
from NLP_DxCode dx
inner join HIM_Document hd on hd.DocumentID=dx.DocumentId
where dx.AccountNumber=@AccountNumber)a on d.DocumentId=a.DocumentId and d.DxCode=a.DxCode
where d.AccountNumber=a.AccountNumber
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertDXCodeEvidence
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertDXCodeEvidence] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 05/25/2018
-- Description: InsertDxCodeEvidence
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertDXCodeEvidence]
@AccountNumber varchar(20),
@DocumentId int,
@DxCode varchar(20),
@Disorder varchar(100),
@Cause varchar(100),
@Site varchar(100),
@Site1 varchar(100),
@Site2 varchar(100),
@Manifestation varchar(100),
@Content varchar(5000),
@StartId int,
@EndId int
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'DocumentID: '+''+cast(@DocumentID as varchar(50))+''+'|'+
'@DxCode: '+''+@DxCode+''+'|'+
'@Disorder: '+''+@Disorder+''+'|'+
'@Cause: '+''+@Cause+''+'|'+
'@Site: '+''+@Site+''+'|'+
'@Site1: '+''+@Site1+''+'|'+
'@Site2: '+''+@Site2+''+'|'+
'@Manifestation: '+''+@Manifestation+''+'|'+
'@Content: '+''+@Content+''+'|'+
'@StartId: '+''+cast(@StartId as varchar(15))+''+'|'+
'@EndId: '+''+cast(@EndId as varchar(15))+''
declare @DisIndexId int
declare @DisStartId int
declare @DisEndId int
declare @SiteIndexId int
declare @SiteStartId int
declare @SiteEndId int
declare @Site1IndexId int
declare @Site1StartId int
declare @Site1EndId int
declare @Site2IndexId int
declare @Site2StartId int
declare @Site2EndId int
declare @ManifestationIndexId int
declare @ManifestationStartId int
declare @ManifestationEndId int
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
select @DisIndexId=CHARINDEX(@Disorder, @Content)
set @DisStartId=@StartId+@DisIndexId
set @DisEndId = @DisStartId+LEN(@Disorder)
INSERT INTO NLP_DxCodeEvidence(AccountNumber,DocumentId,DxCode,AnnotationString,AnnotationType,StartId,EndId,UserName)
values(@AccountNumber,@DocumentId,@DxCode,@Disorder,'Disease',@DisStartId,@DisEndId,'KPAI')
if(@Site is not null)
begin
select @SiteIndexId=CHARINDEX(@Site, @Content)
set @SiteStartId=@StartId+@SiteIndexId
set @SiteEndId = @SiteStartId+LEN(@Site)
INSERT INTO NLP_DxCodeEvidence(AccountNumber,DocumentId,DxCode,AnnotationString,AnnotationType,StartId,EndId,UserName)
values(@AccountNumber,@DocumentId,@DxCode,@Site,'Site',@SiteStartId,@SiteEndId,'KPAI')
end
if(@Site1 is not null)
begin
select @Site1IndexId=CHARINDEX(@Site1, @Content)
set @Site1StartId=@StartId+@Site1IndexId
set @Site1EndId = @Site1StartId+LEN(@Site1)
INSERT INTO NLP_DxCodeEvidence(AccountNumber,DocumentId,DxCode,AnnotationString,AnnotationType,StartId,EndId,UserName)
values(@AccountNumber,@DocumentId,@DxCode,@Site1,'Site1',@Site1StartId,@Site1EndId,'KPAI')
end
if(@Site2 is not null)
begin
select @Site2IndexId=CHARINDEX(@Site2, @Content)
set @Site2StartId=@StartId+@Site2IndexId
set @Site2EndId = @Site2StartId+LEN(@Site2)
INSERT INTO NLP_DxCodeEvidence(AccountNumber,DocumentId,DxCode,AnnotationString,AnnotationType,StartId,EndId,UserName)
values(@AccountNumber,@DocumentId,@DxCode,@Site2,'Site2',@Site2StartId,@Site2EndId,'KPAI')
end
if(@Manifestation is not null)
begin
select @ManifestationIndexId=CHARINDEX(@Manifestation, @Content)
set @ManifestationStartId=@StartId+@ManifestationIndexId
set @ManifestationEndId = @ManifestationStartId+LEN(@Manifestation)
INSERT INTO NLP_DxCodeEvidence(AccountNumber,DocumentId,DxCode,AnnotationString,AnnotationType,StartId,EndId,UserName)
values(@AccountNumber,@DocumentId,@DxCode,@Manifestation,'Manifestation',@ManifestationStartId,@ManifestationEndId,'KPAI')
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertDXCodesFromFTPResource
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertDXCodesFromFTPResource] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 05/21/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertDXCodesFromFTPResource]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DocumentID int
AS
Declare @TimeZoneName varchar(10)='IST'
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'DocumentID: '+''+cast(@DocumentID as varchar(50))+''+'|'+
'TimeZoneName: '+''+@TimeZoneName+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
if exists (select 1 from FTP_IPMedication where AccountNumber=@AccountNumber
and (medicationname like 'HEPATITIS B VIRUS VACCINE%' or medicationname like 'INFLUENZA VAC%' or medicationname like 'INFLUENZA VIRUS VAC%'))
begin
if not exists (select 1 from NLP_DxCodeByDocument where AccountNumber=@AccountNumber and DxCode like 'Z23' and Codable='Y')
insert into NLP_DxCodeByDocument(AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,'Z23','Encounter For Immunization','Y','Positive','False','KPAI',0,0,0,'FTP_IPMedication','Y')
end
if exists (select 1 from FTP_IPMedication where AccountNumber=@AccountNumber and (GenericName like'insulin%'))
begin
if not exists (select 1 from NLP_DxCodeByDocument where AccountNumber=@AccountNumber and DxCode like 'Z79.4' and Codable='Y')
insert into NLP_DxCodeByDocument(AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,'Z79.4','Long term use of insulin','Y','Positive','False','KPAI',0,0,0,'FTP_IPMedication','Y')
end
--Updating Codable to Y For PMH,CC and HPI based on Chronic Condition
Update NLP_DxCodeByDocument set Codable='Y' from NLP_DxCodeByDocument dcb
inner join MasterHRCM.dbo.CMS_DxCodeDesc dcdesc on dcdesc.ICD10Code=dcb.DxCode
where DocumentId=@DocumentId and dcb.Codable='N' and dcb.DxCode is not null and dcb.DxCode!='Unknown'
and dcdesc.Chronic=1 and dcdesc.Status=1
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertDXKeywordCombination
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertDXKeywordCombination] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/06/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertDXKeywordCombination]
@AccountNumber varchar(30),
@DocumentId int,
@keyword varchar(200),
@DocumentType varchar(20)
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'DocumentID: '+''+cast(@DocumentID as varchar(15))+''+'|'+
'@keyword: '+''+@keyword+''+'|'+
'@DocumentType: '+''+@DocumentType+''
declare @code1 as varchar(15)
declare @Tarcode as varchar(15)
declare @shortdesc as varchar(100)
declare @priority as int
declare @tmpIntId as int
declare @dischdate datetime
BEGIN
set @dischdate=null
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
select @dischdate = isnull(DischargeDate,getdate()) from HIM_Visit where AccountNumber = @AccountNumber
insert into NLP_DxFactor(AccountNumber,FactorName)values(@AccountNumber,@keyword)
if exists(select top 1 DxCode from NLP_DxCodeByDocument where DxCode in (select distinct Icdcode from MasterHRCM.dbo.KB_DxFactorCombination) and AccountNumber=@AccountNumber and Finding='Positive')
begin
declare Patients cursor for
select distinct Dxcode from NLP_DxCodeByDocument where DxCode in (select distinct Icdcode from MasterHRCM.dbo.KB_DxFactorCombination) and AccountNumber=@AccountNumber and Finding='Positive'
open Patients
fetch next from Patients into @code1
while (@@fetch_Status<>-1)
begin
if exists(select * from MasterHRCM.dbo.KB_DxFactorCombination where ICDCode=@code1 and FactorName=@keyword)
begin
select @Tarcode=dc.TargetCode,@shortdesc=d.ShortDesc from MasterHRCM.dbo.KB_DxFactorCombination dc
inner join MasterHRCM.dbo.CMS_DxCodeDesc d on dc.TargetCode = d.ICD10Code
where dc.ICDCode=@code1 and FactorName=@keyword
and @dischdate between d.EffectiveYearFrom and d.EffectiveYearTo and d.Status = 1
end
if(@Tarcode ! = null or @Tarcode ! = '')
begin
if not exists (select top 1 AccountNumber from NLP_DxCodeByDocument where AccountNumber = @AccountNumber and DxCode = @Tarcode and DocumentId = @DocumentId)
begin
insert into NLP_DxCodeByDocument(AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@Tarcode,@shortdesc,'Y','Positive','False','KPAI',0,0,0,0,'DxKeyword','Y')
end
end
fetch next from Patients into @code1
end
close Patients
deallocate Patients
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertElementTypesToFXValues
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertElementTypesToFXValues] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 03/07/2019
-- Description: Fracture Data Insertion
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertElementTypesToFXValues]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DocumentId int
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'DocumentID: '+''+cast(@DocumentID as varchar(15))+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
declare Fractures cursor for
select distinct fbpart1,fdx from NLP_FXValues where AccountNumber=@AccountNumber and FBpart1 is not null
declare @fbpart1 varchar(50)
declare @fdx varchar(50)
open Fractures
fetch next from Fractures into @fbpart1,@fdx
while (@@fetch_Status<>-1)
begin
insert into NLP_FXValues(AccountNumber,DocumentId,fbpart1,fdx,Elementtype,ElementName)
select @AccountNumber,@DocumentId,@fbpart1,@fdx,elementtype,'' from MasterHRCM.dbo.KB_FXElementTypes where ElementType not in(
select elementtype from NLP_FXValues where AccountNumber=@AccountNumber and RStatus=0 and fbpart1=@fbpart1)
fetch next from Fractures into @fbpart1,@fdx
end
close Fractures
deallocate Fractures
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertFxAnnotations
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertFxAnnotations] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 03/07/2019
-- Description: Fracture Data Insertion
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertFxAnnotations]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DocumentID int,
@FDx varchar(200),
@FBpart1 varchar(100),
@FBLoc1 varchar(100),
@FBloc2 varchar(100),
@FStage varchar(100),
@FDermis varchar(100),
@Ftype varchar(100),
@FType2 varchar(100),
@FDnd varchar(100),
@foreignbody varchar(100),
@Ftnt varchar(100),
@effect varchar(100),
@type3 varchar(100),
@poa varchar(20)
AS
declare @FinalCode varchar(15)
declare @CodeDesc varchar(500)
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
SET @FinalCode=null
SET @CodeDesc = null
Begin Try
If not exists(select top 1 1 from NLP_FXAnnotations where AccountNumber=@AccountNumber and fdx=@FDx)
begin
insert into NLP_FXAnnotations(AccountNumber,DocumentId,FDx,FBpart1,FBLoc1,FBloc2,FStage,FDermis,Ftype,FType2,FDnd,foreignbody,Ftnt,effect,ftype3)
values(@AccountNumber,@DocumentID,@FDx,@FBpart1,@FBLoc1,@FBloc2,@FStage,@FDermis,@Ftype,@FType2,@FDnd,@foreignbody,@Ftnt,@effect,@type3)
select distinct @FinalCode=code from MasterHRCM.dbo.KB_Injurycodes where fdx=@FDx and bodypart=''and mainbodypartloc='' and bodypartloc=''
and bodypartloc2='' and [Position]='' and [source]='' and effect='' and foreignbody='' and bloodvessels='' and lacerationdata=''
and Displaced='' and [Type]='' and ExtraData='' and Type3=''
select @CodeDesc=LongDesc from MasterHRCM.dbo.CMS_DXCodeDesc where icd10code=@FinalCode
if(@FinalCode is not null)
begin
Insert Into NLP_DXCodeByDocument(AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,
DxCodeSource,Codable)
values(@AccountNumber,@DocumentID,@FinalCode,@CodeDesc,@poa,'Positive','False','KPAI',0,0,0,'FractureDis','Y')
end
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertFXValues
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertFXValues] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 03/07/2019
-- Description: Fracture Data Insertion
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertFXValues]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DocumentID int,
@Site varchar(200),
@fdx varchar(200),
@key varchar(200),
@value varchar(200)
AS
Declare @CheckValue varchar(10)
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
set @CheckValue='false'
If exists(select 1 from NLP_FXValues where AccountNumber=@AccountNumber and FBPart1=@Site and ElementType=@key and ElementName=@value)
set @CheckValue='true'
If(@CheckValue='false')
begin
delete from NLP_FXValues where AccountNumber=@AccountNumber and fbpart1=@Site and ElementType=@key and ElementName=''
insert Into NLP_FXValues(AccountNumber,DocumentId,FBPart1,fdx,ElementType,ElementName)values(@AccountNumber,@DocumentID,@Site,@fdx,@key,@value)
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertHabitDXData
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertHabitDXData] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/06/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertHabitDXData]
@AccountNumber varchar(30),
@DocumentId int,
@HabitContent varchar(200),
@HabitType varchar(50),
@HabitCondition varchar(50),
@History varchar(20),
@Finding varchar(20),
@StartId int,
@EndId int,
@DocumentType varchar(20)
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@DocumentId: '+''+cast(@DocumentId as varchar(15))+''+'|'+
'@HabitContent: '+''+@HabitContent+''+'|'+
'@HabitType: '+''+@HabitType+''+'|'+
'@HabitCondition: '+''+@HabitCondition+''+'|'+
'@History: '+''+@History+''+'|'+
'@Finding: '+''+@Finding+''+'|'+
'@StartId: '+''+cast(@StartId as varchar(15))+''+'|'+
'@EndId: '+''+cast(@EndId as varchar(15))+''+'|'+
'@DocumentType: '+''+@DocumentType+''
declare @disorderId int
declare @code1 varchar(10)
declare @dischdate datetime
BEGIN
set @disorderId = 0
set @code1 = null
set @dischdate=null
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
select @dischdate = isnull(DischargeDate,getdate()) from HIM_Visit where AccountNumber = @AccountNumber
insert into NLP_Habit(DocumentId,Content,HabitType,Condition,History,Finding,StartId,EndId)
values(@DocumentId,@HabitContent,@HabitType,@HabitCondition,@History,@Finding,@StartId,@EndId)
if(@finding= 'Positive')
begin
if(@habitContent is not null)
begin
select @disorderId = disorderid,@code1=Icdcode1 from MasterHRCM.dbo.KB_HabitsDxCode hi
inner join MasterHRCM.dbo.CMS_DxCodeDesc d on hi.IcdCode1 = d.ICD10Code
where Disorder =@habitContent and History = @history and hi.Status=0 and d.Status = 1
and @dischdate between d.EffectiveYearFrom and d.EffectiveYearTo
if(@disorderId !=0)
begin
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@code1,@HabitCondition,'Y',@Finding,@History,'KPAI',0,@StartId,@EndId,0,'HabitDis','Y')
end
end
else
begin
select @disorderId = disorderid,@code1=Icdcode1 from MasterHRCM.dbo.KB_HabitsDxCode hi
inner join MasterHRCM.dbo.CMS_DxCodeDesc d on hi.IcdCode1 = d.ICD10Code
where [Type] =@habitType and History = @history and hi.Status = 0 and d.Status = 1 and Disorder is null
and @dischdate between d.EffectiveYearFrom and d.EffectiveYearTo
if(@disorderId !=0)
begin
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@code1,@HabitType,'Y',@Finding,@History,'KPAI',0,@StartId,@EndId,0,'HabitDis','Y')
end
end
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertLongTermDrugDXCode
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertLongTermDrugDXCode] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/18/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertLongTermDrugDXCode]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DocumentId int,
@DocumentType varchar(20)
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@DocumentId: '+''+cast(@DocumentId as varchar(15))+''+'|'+
'@DocumentType: '+''+@DocumentType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
insert into NLP_DxCodeByDocument(AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,
AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
select distinct @AccountNumber,@DocumentId,ld.ICDCode,hm.HomeMedication,'Y','Positive','False','KPAI',0,hm.StartId,
hm.EndId,0,'LongTermDrugDisease','Y' from CDA_HomeMedication hm
inner join MasterHRCM.dbo.KB_LongtermDrugDxCode ld on hm.HomeMedication = ld.DrugName
where hm.AccountNumber = @AccountNumber and hm.DocumentID = @DocumentId
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertOBGAnnotationByDocument
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertOBGAnnotationByDocument] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/06/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertOBGAnnotationByDocument]
@Disorder varchar(100),
@Cause varchar(100),
@Site varchar(100),
@Site1 varchar(100),
@Site2 varchar(100),
@Manifestation varchar(100),
@Type varchar(100),
@AnnotId int,
@DocumentId int,
@Content varchar(5000),
@Stage varchar(20),
@Tconcept1 varchar(50),
@Tconcept2 varchar(50),
@Finding varchar(50),
@History varchar(50),
@StartId int,
@EndId int,
@RuleName varchar(50),
@AccountNumber varchar(20),
@DocumentType varchar(20),
@Pstatus tinyint,
@Pstatus1 tinyint,
@Neonatal tinyint,
@Gender tinyint,
@SectionHeader varchar(200),
@Codable varchar(2)
AS
declare @code1 varchar(20)
declare @code2 varchar(20)
declare @code3 varchar(20)
declare @disorderId int
declare @disorderId1 int
declare @causeId int
declare @siteId int
declare @site1Id int
declare @site2Id int
declare @manifestationId int
declare @tconcept1Id int
declare @tconcept2Id int
declare @stageId int
declare @typeId int
declare @Trimester2 int
declare @Trimester1 int
declare @childbirth int
declare @trimtemp int
declare @deltemp int
declare @dischdate datetime
BEGIN
set @code1 = null
set @code2 = null
set @code3 = null
set @causeId = null
set @siteid = null
set @site1Id = null
set @site2Id = null
set @manifestationId = null
set @tconcept1Id=null
set @tconcept2Id=null
set @stageId=null
set @typeId=null
set @dischdate=null
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
insert into NLP_DxAnnotation (AnnotationId,AccountNumber,DocumentId,Disorder,Cause,Manifestation,Site,Site1,Site2,TConcept1,TConcept2,Type,Stage)
values(@annotId,@AccountNumber,@DocumentId,@disorder,@cause,@manifestation,@site,@site1,@site2,@tconcept1,@tconcept2,@type,@stage)
/*
if not exists(select top 1 1 from HIM_Visit where AccountNumber=@AccountNumber and PatientCTG='OBG')
update HIM_Visit set PatientCTG='OBG' where AccountNumber=@AccountNumber
*/
--Max Combination Query i.e cause and site and manifestation
Select top 1 @disorderId = disorderid from MasterHRCM.dbo.KB_ObgDisorder where disorder=@disorder and Status !=1
Select top 1 @disorderId1 = disorderid from MasterHRCM.dbo.KB_Disorder where disorder=@disorder and Status !=1
Select top 1 @typeId = TypeId from MasterHRCM.dbo.KB_Type where Type=@type and Status=0
select @dischdate = isnull(DischargeDate,getdate()) from HIM_Visit where AccountNumber = @AccountNumber
select icd.* into #DisIcds from MasterHRCM.dbo.KB_ObgDxCode icd
inner join MasterHRCM.dbo.CMS_DxCodeDesc d on icd.IcdCode1 = d.ICD10Code
where DisorderId = @disorderId and icd.Status not in(1) and d.Status = 1
and Type=@typeId and history=@history
and @dischdate between d.EffectiveYearFrom and d.EffectiveYearTo
Select top 1 @causeId = i.CauseId from MasterHRCM.dbo.KB_Cause i
inner join #DisIcds d on i.CauseId = d.causeid where cause=ISNULL(@cause,'Blank') and i.Status=0
Select top 1 @siteId = s.SiteId from MasterHRCM.dbo.KB_Site s
inner join #DisIcds d on s.siteid = d.siteid where site=ISNULL(@site,'Blank') and s.Status=0-- and d.status!=1
Select top 1 @site1Id = s1.Site1Id from MasterHRCM.dbo.KB_Site1 s1
inner join #DisIcds d on s1.Site1Id = d.site1id where Site=ISNULL(@site1,'Blank') and s1.Status=0-- and d.status!=1
Select top 1 @site2Id = s2.Site2Id from MasterHRCM.dbo.KB_Site2 s2
inner join #DisIcds d on s2.Site2Id = d.site2id where Site=ISNULL(@site2,'Blank') and s2.Status=0-- and d.status!=1
Select top 1 @manifestationId = m.ManifestationId from MasterHRCM.dbo.KB_Manifestation m
inner join #DisIcds d on m.ManifestationId = d.ManifestationId where manifestation=ISNULL(@manifestation,'Blank') and m.Status=0-- and d.status!=1
select @stageId=stage from #DisIcds where stage=@stage
Select top 1 @tconcept1Id = t1.TConcept1Id from MasterHRCM.dbo.KB_TemporalConcept1 t1
inner join #DisIcds d on t1.TConcept1Id = d.temporalconcept1 where tconcept1=@tconcept1 and t1.Status=0-- and d.status!=1
Select top 1 @tconcept2Id = t2.TConcept2Id from MasterHRCM.dbo.KB_TemporalConcept2 t2
inner join #DisIcds d on t2.TConcept2Id = d.temporalconcept2 where TConcept2=ISNULL(@tconcept2,'Blank') and t2.Status=0-- and d.status!=1
if (@causeId is null)
set @causeId = 0
if(@siteId is null)
set @siteId = 0
if(@site1Id is null)
set @site1Id = 0
if(@site2Id is null)
set @site2Id = 0
if(@manifestationId is null)
set @manifestationId = 0
if (@tconcept1Id is null)
set @tconcept1Id = 9
if (@tconcept2Id is null)
set @tconcept2Id = 0
if(@stageId is null)
set @stage = 9
if(@pstatus=4 or @pstatus=5)
begin
select top 1 @code1=IcdCode1,@code2=IcdCode2,@code3=IcdCode3 from #DisIcds
where Disorderid=@disorderId and causeid=@causeId and siteid=@siteId and site1id=@site1Id
and site2id=@site2Id and ManifestationId = @manifestationId and stage = @stage
and temporalconcept1 = @tconcept1Id and temporalconcept2 = @tconcept2Id and Pstatus=@Pstatus
if(@Code1 is not null)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@code1,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
end
if(@code1 is null or @code1='')
begin
--print 'code1 is null'
select top 1 @code1=IcdCode1,@code2=IcdCode2,@code3=IcdCode3 from #DisIcds
where Disorderid=@disorderId and causeid=@causeId and siteid=@siteId
and site1id=@site1Id and site2id=@site2Id and
ManifestationId = @manifestationId and stage = @stage and
temporalconcept1 = @tconcept1Id and temporalconcept2 = @tconcept2Id and Pstatus=@Pstatus1
if(@Code1 is not null)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@code1,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
end
if(@disorderid is null)
begin
print 'Entry in disorder table only'
--select top 1 @disorderId=disorderid from MasterHRCM.dbo.KB_ObgDisorder where disorder=@disorder
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,SectionHeader,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,'unknown',@Content,'Y',@SectionHeader,@Finding,@History,'KPAI',@AnnotId,@StartId,@EndId,0,@RuleName,@Codable)
end
else
begin
--print 'Disorder id existed in icdcode1'
if(@code1 is not null and @code1!='')
Begin
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,SectionHeader,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@code1,@Content,'Y',@SectionHeader,@Finding,@History,'KPAI',@AnnotId,@StartId,@EndId,0,@RuleName,@Codable)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@code1,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
End
if(@code2 is not null and @code2!='')
Begin
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,SectionHeader,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@code2,@Content,'Y',@SectionHeader,@Finding,@History,'KPAI',@AnnotId,@StartId,@EndId,0,@RuleName,@Codable)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@code2,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
End
end
drop table #DisIcds
if(@code1 is not null and @code1!='')
begin
if(@Pstatus=4 or @Pstatus=5 )
begin
if not exists(select 1 from NLP_DxCodeByDocument where AccountNumber=@AccountNumber and DxCode like 'Z37%' and DocumentId=@DocumentId )
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,'Z37.0','Single Live Born','Y','Positive','False','KPAI',0,0,0,0,'OutcomeOfDelivery',@Codable)
end
end
else
begin
if exists(select * from MasterHRCM.dbo.KB_DxCode where DisorderId = @disorderId1 and Status not in(1)
and Neonatal = @Neonatal and Gender in(0, @Gender) and Type=@typeId)
exec NLP_InsertObgDxAnnotationByDocument @disorder,@cause,@site,@site1,@site2,@manifestation,@type,@annotId,@DocumentId,@content,@stage,@tconcept1,@tconcept2,@finding,@history,
@startId,@endId,@ruleName,@AccountNumber,@DocumentType,@Neonatal,@Gender,@SectionHeader,@Pstatus,@Pstatus1,@Codable
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo '<Input-Params>','NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertOBGComplication
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertOBGComplication] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/06/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertOBGComplication]
@Condition int,
@Condition2 int,
@AccountNumber varchar(30),
@DocumentId int,
@DocumentType varchar(20),
@IcdCode varchar(20)
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'DocumentID: '+''+cast(@DocumentID as varchar(15))+''+'|'+
'@Condition: '+''+cast(@Condition as varchar(15))+''+'|'+
'@Condition2: '+''+cast(@Condition2 as varchar(15))+''+'|'+
'@DocumentType: '+''+@DocumentType+''+'|'+
'@IcdCode: '+''+@IcdCode+''
declare @obgCode varchar(30)
declare @content varchar(1000)
declare @history varchar(20)
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
if(@Condition=4 or @Condition=5)
begin
if exists(select o.icd10code from MasterHRCM.dbo.KB_ObgInfectiousCrosswalk i
inner join NLP_DxCodeByDocument t on i.icdcode = t.DxCode
inner join MasterHRCM.dbo.KB_ObgComplication o on i.obgcode=o.code
where o.trimstatus =@Condition and t.RStatus in (0,1,5) and t.DxCode=@icdcode)
begin
select @obgCode = o.icd10code,@content = o.trimester,@history = t.history
from MasterHRCM.dbo.KB_ObgInfectiousCrosswalk i
inner join NLP_DxCodeByDocument t on i.icdcode = t.DxCode and t.RStatus in(0,1,5)
inner join MasterHRCM.dbo.KB_ObgComplication o on i.obgcode=o.code
where o.trimstatus =@Condition and t.DxCode=@icdcode
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@obgCode,@content,'Y','Positive',@history,'KPAI',0,0,0,0,'obgcomplications','Y')
end
end
else if exists(select o.icd10code from MasterHRCM.dbo.KB_ObgInfectiousCrosswalk i
inner join NLP_DxCodeByDocument t on i.icdcode = t.DxCode
inner join MasterHRCM.dbo.KB_ObgComplication o on i.obgcode=o.code
where o.trimstatus =@Condition2 and t.RStatus in (0,1,5) and t.DxCode=@icdcode)
begin
select @obgCode = o.icd10code,@content = o.trimester,@history = t.history
from MasterHRCM.dbo.KB_ObgInfectiousCrosswalk i
inner join NLP_DxCodeByDocument t on i.icdcode = t.DxCode
inner join MasterHRCM.dbo.KB_ObgComplication o on i.obgcode=o.code
where o.trimstatus =@Condition2 and t.RStatus in(0,1,5) and t.DxCode=@icdcode
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@obgCode,@content,'Y','Positive',@history,'KPAI',0,0,0,0,'obgcomplications','Y')
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertOBGDXAnnotationByDocument
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertOBGDXAnnotationByDocument] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/06/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertOBGDXAnnotationByDocument]
@Disorder varchar(100),
@Cause varchar(100),
@Site varchar(100),
@Site1 varchar(100),
@Site2 varchar(100),
@Manifestation varchar(100),
@Type varchar(100),
@AnnotId int,
@DocumentId int,
@Content varchar(5000),
@Stage varchar(20),
@Tconcept1 varchar(50),
@Tconcept2 varchar(50),
@Finding varchar(50),
@History varchar(50),
@StartId int,
@EndId int,
@RuleName varchar(50),
@AccountNumber varchar(20),
@DocumentType varchar(20),
@Neonatal tinyint,
@Gender tinyint,
@SectionHeader varchar(200),
@Pstatus tinyint,
@Pstatus1 tinyint,
@Codable varchar(2)
AS
declare @code1 varchar(20)
declare @code2 varchar(20)
declare @code3 varchar(20)
declare @disorderId int
declare @causeId int
declare @siteId int
declare @site1Id int
declare @site2Id int
declare @manifestationId int
declare @tconcept1Id int
declare @tconcept2Id int
declare @stageId int
declare @typeId int
declare @NCauseId int
declare @dischdate datetime
BEGIN
set @code1 = null
set @code2 = null
set @code3 = null
set @causeId = null
set @siteid = null
set @site1Id = null
set @site2Id = null
set @manifestationId = null
set @tconcept1Id=null
set @tconcept2Id=null
set @stageId=null
set @typeId=null
set @NCauseId=null
set @dischdate=null
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
insert into NLP_DxAnnotation (AnnotationId,AccountNumber,DocumentId,Disorder,Cause,Manifestation,Site,Site1,Site2,TConcept1,TConcept2,Type,Stage)
values(@annotId,@AccountNumber,@DocumentId,@disorder,@cause,@manifestation,@site,@site1,@site2,@tconcept1,@tconcept2,@type,@stage)
--Max Combination Query i.e cause and site and manifestation
Select top 1 @disorderId = disorderid from MasterHRCM.dbo.KB_Disorder where disorder=@disorder and Status=0
Select top 1 @typeId = TypeId from MasterHRCM.dbo.KB_Type where Type=@type and Status=0
if (@typeId!=13 and not exists( select 1 from MasterHRCM.dbo.KB_DxCode where DisorderId = @disorderId and Status !=1 and Type=@typeId))
set @typeId=13
select @dischdate = isnull(DischargeDate,getdate()) from HIM_Visit where AccountNumber = @AccountNumber
select ic.* into #DisIcds from MasterHRCM.dbo.KB_DxCode ic
inner join MasterHRCM.dbo.CMS_DxCodeDesc d on ic.Icdcode4 = d.ICD10Code
where DisorderId = @disorderId and ic.Status not in (1) and d.Status = 1
and Neonatal = @Neonatal and Gender in(0, @Gender) and Type=@typeId and history=@history
and @dischdate between d.EffectiveYearFrom and d.EffectiveYearTo
Select top 1 @causeId = i.CauseId from MasterHRCM.dbo.KB_Cause i
inner join #DisIcds d on i.CauseId = d.causeid where cause=ISNULL(@cause,'Blank') and i.Status=0-- and d.status!=1
Select top 1 @siteId = s.SiteId from MasterHRCM.dbo.KB_Site s
inner join #DisIcds d on s.siteid = d.siteid where site=ISNULL(@site,'Blank') and s.Status=0-- and d.status!=1
Select top 1 @site1Id = s1.Site1Id from MasterHRCM.dbo.KB_Site1 s1
inner join #DisIcds d on s1.Site1Id = d.site1id where Site=ISNULL(@site1,'Blank') and s1.Status=0-- and d.status!=1
Select top 1 @site2Id = s2.Site2Id from MasterHRCM.dbo.KB_Site2 s2
inner join #DisIcds d on s2.Site2Id = d.site2id where Site=ISNULL(@site2,'Blank') and s2.Status=0-- and d.status!=1
Select top 1 @manifestationId = ManifestationId from MasterHRCM.dbo.KB_Manifestation where manifestation=ISNULL(@manifestation,'Blank') and Status=0
select @stageId=stage from #DisIcds where stage=@stage
Select top 1 @tconcept1Id = t1.TConcept1Id from MasterHRCM.dbo.KB_TemporalConcept1 t1
inner join #DisIcds d on t1.TConcept1Id = d.temporalconcept1 where tconcept1=@tconcept1 and t1.Status=0-- and d.status!=1
Select top 1 @tconcept2Id = t2.TConcept2Id from MasterHRCM.dbo.KB_TemporalConcept2 t2
inner join #DisIcds d on t2.TConcept2Id = d.temporalconcept2 where TConcept2=ISNULL(@tconcept2,'Blank') and t2.Status=0-- and d.status!=1
-- Need to check gender and nenonatal here
--DisorderId gets NULL what will happen?
if (@causeId is null)
set @causeId = 0
if(@siteId is null)
set @siteId = 0
if(@site1Id is null)
set @site1Id = 0
if(@site2Id is null)
set @site2Id = 0
if(@stageId is null)
set @stage = 9
if(@manifestationId is null)
set @manifestationId = 0
if (@tconcept1Id is null)
set @tconcept1Id = 9
if (@tconcept2Id is null)
set @tconcept2Id = 0
select top 1 @code1=icdcode4,@code2=icdcode5,@code3=icdcode6 from #DisIcds
where Disorderid=@disorderId and causeid=@causeId and siteid=@siteId
and site1id=@site1Id and site2id=@site2Id and
ManifestationId = @manifestationId and stage = @stage and
temporalconcept1 = @tconcept1Id and temporalconcept2 = @tconcept2Id
if(@Code1 is not null)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@code1,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
if(@code1 is null and @siteId!=0) --site Only
begin
print 's and s1- and s2'
select top 1 @code1=icdcode4,@code2=icdcode5,@code3=icdcode6 from #DisIcds
where Disorderid=@disorderId and causeid=0 and siteid=ISNULL(@siteId,0)
and site1id=0 and site2id=ISNULL(@site2Id,0) and ManifestationId = ISNULL(@manifestationId,0)
and stage=@stage and TemporalConcept1=@tconcept1Id and temporalconcept2=ISNULL(@tconcept2Id,0)
if(@Code1 is not null)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@code1,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
--NLP_insertDxCodeEvidance
if(@code1 is null)
begin
print 's and s1- and s2-'
select top 1 @code1=icdcode4,@code2=icdcode5,@code3=icdcode6 from #DisIcds
where Disorderid=@disorderId and causeid=0 and siteid=ISNULL(@siteId,0) and site1id=0
and site2id=0 and ManifestationId = ISNULL(@manifestationId,0) and stage=@stage
and TemporalConcept1=@tconcept1Id and temporalconcept2=ISNULL(@tconcept2Id,0)
if(@Code1 is not null)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@code1,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
end
end
if(@code1 is null) --disorder Only
begin
print 'D'
select top 1 @code1=icdcode4,@code2=icdcode5,@code3=icdcode6 from #DisIcds
where Disorderid=@disorderId and causeid=0 and SiteId=0 and Site1Id=0 and Site2Id=0
and ManifestationId=0 and stage=@stage and TemporalConcept1=@tconcept1Id
and temporalconcept2=0
if(@Code1 is not null)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@code1,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
--StartHere
if(@code1 is not null and @manifestationId!=0)
begin
declare @mstartId int
declare @mendId int
declare @mcode1 varchar(50)
declare @mcode2 varchar(50)
declare @mcode3 varchar(50)
declare @manfestDisId int
declare @indexId int
declare @DisIndexId int
Select top 1 @manfestDisId = disorderid from MasterHRCM.dbo.KB_Disorder where disorder=@manifestation and Status=0
select top 1 @mcode1=icdcode4,@mcode2=IcdCode5,@mcode3=IcdCode6 from MasterHRCM.dbo.KB_DxCode ic
inner join MasterHRCM.dbo.CMS_DxCodeDesc d on ic.Icdcode4 = d.ICD10Code
where DisorderId=@manfestDisId and CauseId=0 and SiteId=0 and Site1Id=0 and Site2Id=0 and
ManifestationId=0 and stage=@stage and type=@typeId and temporalconcept1=@tconcept1Id
and temporalconcept2=0 and ic.Status != 1 and d.Status = 1 and history=@history
and neonatal=@Neonatal and @dischdate between d.EffectiveYearFrom and d.EffectiveYearTo
if(@mcode1 is not null)
begin
select @indexId=CHARINDEX(@manifestation, @content)
select @DisIndexId=CHARINDEX(@disorder, @content)
set @mstartId=@startId+@indexId
set @mendId = @mstartId+LEN(@manifestation)
set @endId=@startId+@DisIndexId+LEN(@disorder)
---Insereting Manifestattion as DisorderId in Tempdisease
--'Manifestation as Disorder'
insert into NLP_DxCodeByDocument (AccountNumber, DocumentId, DxCode, AnnotationString,Poa,SectionHeader,Finding,History,UserName,AnnotationId,StartId, EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@mcode1,@manifestation,'Y',@sectionHeader,@finding,@history,'KPAI',@annotId,@mstartId,@mendId,0,@ruleName,@Codable)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@mcode1,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
if(@mcode2 is not null and @mcode2!='')
begin
insert into NLP_DxCodeByDocument (AccountNumber, DocumentId, DxCode, AnnotationString,Poa,SectionHeader,Finding,History,UserName,AnnotationId,StartId, EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@mcode2,@manifestation,'Y',@sectionHeader,@finding,@history,'KPAI',@annotId,@mstartId,@mendId,0,@ruleName,@Codable)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@mcode2,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
end
end
end
end
if (@disorderid is null)
begin
--print 'Entry in disorder table only'
select top 1 @disorderId=disorderid from MasterHRCM.dbo.KB_Disorder where disorder=@disorder
insert into NLP_DxCodeByDocument (AccountNumber, DocumentId, DxCode, AnnotationString,Poa,SectionHeader,Finding,History,UserName,AnnotationId,StartId, EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,'unknown',@content,'Y',@sectionHeader,@finding,@history,'KPAI',@annotId,@startId,@endId,0,@ruleName,@Codable)
end
else
if(@code1 is not null and @code1!='')
begin
--print 'Disorder id existed in icdcode1'
insert into NLP_DxCodeByDocument (AccountNumber, DocumentId, DxCode, AnnotationString,Poa,SectionHeader,Finding,History,UserName,AnnotationId,StartId, EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@code1,@content,'Y',@sectionHeader,@finding,@history,'KPAI',@annotId,@startId,@endId,0,@ruleName,@Codable)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@code1,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
end
if(@code2 is not null and @code2!='')
begin
insert into NLP_DxCodeByDocument (AccountNumber, DocumentId, DxCode, AnnotationString,Poa,SectionHeader,Finding,History,UserName,AnnotationId,StartId, EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@code2,@content,'Y',@sectionHeader,@finding,@history,'KPAI',@annotId,@startId,@endId,0,@ruleName,@Codable)
exec NLP_InsertDxCodeEvidence @AccountNumber,@DocumentId,@code2,@Disorder,@Cause,@Site,@Site1,@Site2,@Manifestation,@Content,@StartId,@EndId
end
drop table #DisIcds
if(@finding='positive')
begin
exec NLP_InsertObgComplication @Pstatus,@Pstatus1,@AccountNumber,@DocumentId,@DocumentType,@code1
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo '<Input-Params>','NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertOBGHabitCode
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertOBGHabitCode] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/07/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertOBGHabitCode]
@AccountNumber varchar(30),
@Trimester tinyint
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@Trimester: '+''+cast(@Trimester as varchar(15))+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
if exists(select top 1 AccountNumber from NLP_DxCodeByDocument where DxCode like 'O%' and AccountNumber=@AccountNumber)
begin
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,
StartId,EndId,Rstatus,DxCodeSource,Codable)
select i.AccountNumber,i.DocumentId,oc.Icd10code,oc.trimester,'Y',i.Finding,i.History,'KPAI',i.AnnotationId,
i.StartId,i.EndId,0,'OBGHabitsdata','Y'
from MasterHRCM.dbo.KB_ObgComplication oc
inner join MasterHRCM.dbo.KB_ObgInfectiousCrosswalk o on oc.code=o.obgcode
inner join NLP_DxCodeByDocument i on o.icdcode = i.DxCode
where AccountNumber=@AccountNumber and DxCode like 'F%' and oc.trimstatus=@trimester
and oc.Icd10code not in(select distinct DxCode from NLP_DxCodeByDocument where AccountNumber=@AccountNumber)
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertOutcomeOfDeliveryCode
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertOutcomeOfDeliveryCode] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/07/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertOutcomeOfDeliveryCode]
@AccountNumber varchar(30),
@DocumentId int,
@Fetusno varchar(50),
@Stillborn varchar(500),
@DocumentType varchar(20)
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'DocumentID: '+''+cast(@DocumentID as varchar(15))+''+'|'+
'@Fetusno: '+''+@Fetusno+''+'|'+
'@Stillborn: '+''+@Stillborn+''+'|'+
'@DocumentType: '+''+@DocumentType+''
declare @code as varchar(50)
declare @codedesc as varchar(700)
declare @priority as int
declare @tmpIntId as int
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
select @code=targetcode,@codedesc=codedescription from MasterHRCM.dbo.KB_ObgDeliveryStatus where FetusCount=@fetusno and StillBirthStatus=@stillborn
if not exists (select top 1 AccountNumber from NLP_DxCodeByDocument where AccountNumber = @AccountNumber and DxCode = @code)
begin
insert into NLP_DxCodeByDocument(AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@code,@codedesc,'Y','Positive','False','KPAI',0,0,0,0,'OBGDeliveryStatus','Y')
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertPCSCodeAudit
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertPCSCodeAudit] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 06/05/2019
-- Description: Information about UpVote and Delete to DxCode
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertPCSCodeAudit]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@PcsCode varchar(10),
@PcsCodeId int,
@AuditorId int,
@Reason varchar(250),
@Note varchar(250),
@Action varchar(50)
AS
Declare @AuditType int=1
Declare @InputParamQry varchar(1000)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'PcsCode: '+''+@PcsCode+''+'|'+
'PcsCodeId: '+''+cast(@PcsCodeId as varchar(15))+''+'|'+
'AuditorId: '+''+cast(@AuditorId as varchar(15))+''+'|'+
'Reason: '+''+@Reason+''+'|'+
'Note: '+''+@Note+''+'|'+
'Action: '+''+@Action+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
If(@Action='DownVote')
SET @AuditType=2
If(@Action='NLPPCSCodeDownVoteFromUser')
SET @AuditType=3
If(@PcsCode is not null and @PcsCode!='')
Begin
Delete from NLP_PCSCode_Audit where AccountNumber=@AccountNumber and PCSCode=@PcsCode --and PCSCodeId=@PcsCodeId
Insert into NLP_PCSCode_Audit(PCSCodeId,AccountNumber,PCSCode,AuditType,AuditorId,Reason,Note)values(@PcsCodeId,@AccountNumber,@PcsCode,@AuditType,@AuditorId,@Reason,@Note)
Insert Into Log_NLP_PCSCode_Audit(PCSCodeAuditId,PCSCodeId,AccountNumber,PCSCode,AuditType,AuditorId,Reason,Note)
select PCSCodeAuditId,PCSCodeId,AccountNumber,PCSCode,AuditType,AuditorId,Reason,Note from NLP_PCSCode_Audit where AccountNumber=@AccountNumber and PCSCode=@PcsCode --and PCSCodeId=@PcsCodeId
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertStandardPCS
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertStandardPCS] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/12/2018
-- Description: To insert Procedure code into NLP_PcsCodeByDocument by using the all standard PCS Terms.(Fusion like PCS3 Procedures)
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertStandardPCS]
@accountnumber varchar(30),
@documentId int,
@operation varchar(100),
@docOperation varchar(100),
@bodyPart varchar(100),
@device varchar(100),
@qualifier varchar(100),
@approach varchar(100),
@opStartPos int,
@opEndPos int,
@bpStartPos int,
@bpEndPos int,
@devStartPos int,
@devEndPos int,
@quaStartPos int,
@quaEndPos int,
@approachStartPos int,
@approachEndPos int,
@finalCode varchar(20),
@sectionHeader varchar(20),
@userName varchar(30)
AS
Declare @TimeZoneName varchar(10)='IST'
DECLARE @code VARCHAR(10)
BEGIN
SET NOCOUNT ON;
Begin Try
if(@finalCode='')
Begin
SELECT @code = Code from MasterHRCM.dbo.MST_PCSTabular where operation=@operation and bodypart=@bodyPart
and approach=@approach and device=@device and qualifier=@qualifier
End
else
Begin
set @code = @finalCode
End
if(@code is not null)
begin
INSERT INTO dbo.NLP_PcsCodeByDocument (AccountNumber,documentId,PcsCode,PcsDesc,PhysicianID,PcsDate,UserName,SectionHeader,Finding,History)
VALUES(@accountnumber,@documentId,@code,@operation,null,dbo.convertTimeZoneToUtc(@TimeZoneName,null),@userName,@sectionHeader,'Positive','False')
INSERT INTO dbo.NLP_PcsCodeEvidance (AccountNumber,documentId,PcsCode,PcsTerm,PcsType,StartId,EndId,UserName)
VALUES(@accountnumber,@documentId,@code,@docOperation,'Operation',@opStartPos,@opEndPos,@userName)
INSERT INTO dbo.NLP_PcsCodeEvidance (AccountNumber,documentId,PcsCode,PcsTerm,PcsType,StartId,EndId,UserName)
VALUES(@accountnumber,@documentId,@code,@bodyPart,'BodyPart',@bpStartPos,@bpEndPos,@userName)
if(@device !='')
begin
INSERT INTO dbo.NLP_PcsCodeEvidance (AccountNumber,documentId,PcsCode,PcsTerm,PcsType,StartId,EndId,UserName)
VALUES(@accountnumber,@documentId,@code,@device,'Device',@devStartPos,@devEndPos,@userName)
end
if(@qualifier !='')
begin
INSERT INTO dbo.NLP_PcsCodeEvidance (AccountNumber,documentId,PcsCode,PcsTerm,PcsType,StartId,EndId,UserName)
VALUES(@accountnumber,@documentId,@code,@qualifier,'Qualifier',@quaStartPos,@quaEndPos,@userName)
end
if(@approach !='')
begin
INSERT INTO dbo.NLP_PcsCodeEvidance (AccountNumber,documentId,PcsCode,PcsTerm,PcsType,StartId,EndId,UserName)
VALUES(@accountnumber,@documentId,@code,@approach,'Approach',@approachStartPos,@approachEndPos,@userName)
end
end
/*We are giving Transfusion code '30233_1' directly if LabResults Table contains ProductId(TestName) and PhysicianId,date are empty-- Venkatesh -- Harikrishna*/
if exists (select top 1 Result from FTP_Lab where AccountNumber = @AccountNumber and (Testname like '%Product ID' or Testname like '%Product Code'))
begin
Insert into NLP_PcsCodeByDocument (AccountNumber,documentId,PcsDesc,PcsCode,PhysicianID,PcsDate,UserName,SectionHeader,Finding,History)
select distinct @AccountNumber,@documentId,'Transfusion',p.code,'',dbo.convertTimeZoneToUtc(@TimeZoneName,null),'KPAI','Transfusion from SP','Positive','False' from FTP_Lab l
inner join MasterHRCM.dbo.MST_PCSFromReports p on l.Result=p.result and l.TestName like '%'+p.testname
and l.AccountNumber=@AccountNumber and p.code not in (select PcsCode from NLP_PcsCodeByDocument where AccountNumber = @AccountNumber)
end
/*We are giving Hemodialysis code '5A1D70Z' directly if NursingReport Table contains vsqueryvalue(Hemodialysis) -- Venkatesh -- Harikrishna*/
/* FTP_NurseNote schema changed, so below line commented*/
-- if exists (select top 1 EventResult from FTP_NurseNote where AccountNumber = @AccountNumber and EventResult = 'Hemodialysis' and EventDesc like '%Urinary Elimination')
if exists (select top 1 UniqueId from FTP_NurseNote where AccountNumber = @AccountNumber and UniqueId=30821)
begin
if not exists (select top 1 PcsCode from NLP_PcsCodeByDocument where AccountNumber = @AccountNumber and PcsCode = '5A1D70Z')
begin
Insert into NLP_PcsCodeByDocument (AccountNumber,documentId,PcsDesc,PcsCode,PhysicianID,PcsDate,UserName,SectionHeader,Finding,History)
values(@AccountNumber,@documentId,'Performance','5A1D70Z','',dbo.convertTimeZoneToUtc(@TimeZoneName,null),'KPAI','Hemodialysis from SP','Positive','False')
end
end
/*We are giving Ventilation codes '5A19_5Z' directly if Vitals Table contains Standardvalue(Ventilator) and take vitaldate diff get appropriate Pcs code -- Venkatesh -- Harikrishna*/
declare @ventilationCode varchar(50)
if exists (select top 1 VitalSignDate from FTP_VitalSign where AccountNumber=@AccountNumber and Result like'%ventilator%')
begin
select @ventilationCode=case when DATEDIFF(hh,min(VitalSignDate), max(VitalSignDate)) <24 then '5A1935Z'
when DATEDIFF(hh,min(VitalSignDate), max(VitalSignDate)) >96 then '5A1955Z'
else '5A1945Z' end
from FTP_VitalSign where AccountNumber=@AccountNumber and Result like'%ventilator%'
if not exists (select top 1 PcsCode from NLP_PcsCodeByDocument where AccountNumber = @AccountNumber and PCSCode = @ventilationCode)
begin
Insert into NLP_PcsCodeByDocument (AccountNumber,documentId,PcsDesc,PcsCode,PhysicianID,PcsDate,UserName,SectionHeader,Finding,History)
values(@AccountNumber,@documentId,'Performance',@ventilationCode,'',dbo.convertTimeZoneToUtc(@TimeZoneName,null),'KPAI','Ventilation From SP','Positive','False')
end
end
/*We are giving CPAP/BIPAP codes '5A09_57' directly if Vitals Table contains Standardvalue(CPAP/BIPAP) and take vitaldate diff get appropriate Pcs code -- Venkatesh -- Harikrishna -- 05-Jan-2018*/
declare @cpapCode varchar(50)
if exists (select top 1 VitalSignDate from FTP_VitalSign where AccountNumber=@AccountNumber and (Result like '%BIPAP' or Result like '%CPAP'))
begin
select @cpapCode=case when DATEDIFF(hh,min(VitalSignDate), max(VitalSignDate)) <24 then '5A09357'
when DATEDIFF(hh,min(VitalSignDate), max(VitalSignDate)) >96 then '5A09557'
else '5A09457' end
from FTP_VitalSign where AccountNumber=@AccountNumber and (Result like '%BIPAP' or Result like '%CPAP')
if not exists (select top 1 PcsCode from NLP_PcsCodeByDocument where AccountNumber = @AccountNumber and PcsCode = @cpapCode)
begin
Insert into NLP_PcsCodeByDocument (AccountNumber,documentId,PcsDesc,PcsCode,PhysicianID,PcsDate,UserName,SectionHeader,Finding,History)
values(@AccountNumber,@documentId,'Assistance',@cpapCode,'',dbo.convertTimeZoneToUtc(@TimeZoneName,null),'KPAI','CPAP From SP','Positive','False')
end
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo '<Input-Params>','NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertSurgicalHistoryData
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertSurgicalHistoryData] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/06/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertSurgicalHistoryData]
@AccountNumber varchar(30),
@DocumentId int,
@disease varchar(200),
@disType varchar(50),
@history varchar(20),
@finding varchar(20),
@StartId int,
@EndId int,
@DocumentType varchar(20)
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'DocumentID: '+''+cast(@DocumentID as varchar(15))+''+'|'+
'@disease: '+''+@disease+''+'|'+
'@disType: '+''+@disType+''+'|'+
'@history: '+''+@history+''+'|'+
'@finding: '+''+@finding+''+'|'+
'@StartId: '+''+cast(@StartId as varchar(15))+''+'|'+
'@EndId: '+''+cast(@EndId as varchar(15))+''+'|'+
'@DocumentType: '+''+@DocumentType+''
declare @disorderId int
declare @code1 varchar(10)
declare @code2 varchar(10)
declare @dischdate datetime
BEGIN
set @dischdate = null
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
select @dischdate = isnull(DischargeDate,getdate()) from HIM_Visit where AccountNumber = @AccountNumber
if exists(select top 1 Disorder from MasterHRCM.dbo.KB_SurgicalDxCode where Disorder =@disease and status = 0)
begin
select @disorderId = disorderid,@code1=Icdcode1,@code2=Icdcode2 from MasterHRCM.dbo.KB_SurgicalDxCode sd
inner join MasterHRCM.dbo.CMS_DxCodeDesc d on d.ICD10Code = sd.Icdcode1
where Disorder =@disease and d.Status = 1
and @dischdate between d.EffectiveYearFrom and d.EffectiveYearTo
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@code1,@disease,'Y',@finding,'True','KPAI',0,@StartId,@EndId,0,'SurgDis','Y')
if(@code2 is not null and @code2!='')
begin
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@code2,@disease,'Y',@finding,'True','KPAI',0,@StartId,@EndId,0,'SurgDis','Y')
end
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertToFXAnnotations
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertToFXAnnotations] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 03/07/2019
-- Description: Fracture Data Insertion
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertToFXAnnotations]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin try
select fbpart1,fdx,elementname as fbloc1 into #fbloc1 from NLP_FXValues where AccountNumber=@AccountNumber and RStatus=0 and ElementType='fbloc1'
select fbpart1,fdx,elementname as fbloc2 into #fbloc2 from NLP_FXValues where AccountNumber=@AccountNumber and RStatus=0 and ElementType='fbloc2'
select fbpart1,fdx,elementname as ftnt into #ftnt from NLP_FXValues where AccountNumber=@AccountNumber and RStatus=0 and ElementType='ftnt'
select fbpart1,fdx,elementname as feffect into #feffect from NLP_FXValues where AccountNumber=@AccountNumber and RStatus=0 and ElementType='FEffect'
select fbpart1,fdx,elementname as ffb into #ffb from NLP_FXValues where AccountNumber=@AccountNumber and RStatus=0 and ElementType='FFB'
select fbpart1,fdx,elementname as fderm into #fderm from NLP_FXValues where AccountNumber=@AccountNumber and RStatus=0 and ElementType='FDerm'
select fbpart1,fdx,elementname as fdnd into #fdnd from NLP_FXValues where AccountNumber=@AccountNumber and RStatus=0 and ElementType='fdnd'
select fbpart1,fdx,elementname as fstage into #fstage from NLP_FXValues where AccountNumber=@AccountNumber and RStatus=0 and ElementType='fstage'
select fbpart1,fdx,elementname as ftype into #ftype from NLP_FXValues where AccountNumber=@AccountNumber and RStatus=0 and ElementType='ftype'
select fbpart1,fdx,elementname as ftype2 into #ftype2 from NLP_FXValues where AccountNumber=@AccountNumber and RStatus=0 and ElementType='ftype2'
select fbpart1,fdx,elementname as ftype3 into #ftype3 from NLP_FXValues where AccountNumber=@AccountNumber and RStatus=0 and ElementType='ftype3'
select fbpart1,fdx,elementname as fdx2 into #fdx1 from NLP_FXValues where AccountNumber=@AccountNumber and RStatus=0 and ElementType='fdx'
select fbpart1,fdx,elementname as fbpart2 into #fbpart2 from NLP_FXValues where AccountNumber=@AccountNumber and RStatus=0 and ElementType='FBPart2'
insert into NLP_FXAnnotations(AccountNumber,DocumentId,FBpart1,FDx,FBLoc1,FBLoc2,Ftnt,effect,foreignbody,FDermis,FDnd,FStage,Ftype,FType2,FType3,FBPart2)
select distinct @AccountNumber,1234,t1.fbpart1,t12.fdx,t1.fbloc1,t2.fbloc2,t3.ftnt,t4.feffect,t5.ffb,t6.fderm,t7.fdnd,t8.fstage,t9.ftype,t10.ftype2,t11.ftype3,t13.fbpart2
from #fbloc1 t1
inner join #fbloc2 t2 on t1.fbpart1=t2.fbpart1
inner join #ftnt t3 on t1.fbpart1=t3.fbpart1
inner join #feffect t4 on t1.fbpart1=t4.fbpart1
inner join #ffb t5 on t1.fbpart1=t5.fbpart1
inner join #fderm t6 on t1.fbpart1=t6.fbpart1
inner join #fdnd t7 on t1.fbpart1=t7.fbpart1
inner join #fstage t8 on t1.fbpart1=t8.fbpart1
inner join #ftype t9 on t1.fbpart1=t9.fbpart1
inner join #ftype2 t10 on t1.fbpart1=t10.fbpart1
inner join #ftype3 t11 on t1.fbpart1=t11.fbpart1
inner join #fdx1 t12 on t1.fbpart1=t12.fbpart1
inner join #fbpart2 t13 on t1.fbpart1=t13.fbpart1
/*
drop table #fbloc1
drop table #fbloc2
drop table #ftnt
drop table #feffect
drop table #ffb
drop table #fderm
drop table #fdnd
drop table #fstage
drop table #ftype
drop table #ftype2
drop table #ftype3
drop table #fbpart2
drop table #fdx1
*/
End Try
Begin Catch
Exec usp_GetDBErrorInfo @AccountNumber,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertVitalSign
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertVitalSign] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 05/21/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertVitalSign]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DocumentID int,
@VitalSign varchar(150),
@Result varchar(150),
@VitalSignDate varchar(50),
@SectionHeader varchar(200),
@StartId int,
@EndId int,
@HospitalDay int,
@NumericResult float
AS
Declare @TimeZoneName varchar(10)='IST'
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'DocumentID: '+''+cast(@DocumentID as varchar(50))+''+'|'+
'VitalSign: '+''+@VitalSign+''+'|'+
'@Result: '+''+@Result+''+'|'+
'@VitalSignDate: '+''+@VitalSignDate+''+'|'+
'@SectionHeader: '+''+@SectionHeader+''+'|'+
'@StartId: '+''+cast(@StartId as varchar(20))+''+'|'+
'@EndId: '+''+cast(@EndId as varchar(20))+''+'|'+
'@HospitalDay: '+''+cast(@HospitalDay as varchar(5))+''+'|'+
'@NumericResult: '+''+cast(@NumericResult as varchar(10))+''+'|'+
'TimeZoneName: '+''+@TimeZoneName+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
insert into NLP_VitalSign(AccountNumber,DocumentID,VitalSign,Result,NumericResult,VitalSignDate,SectionHeader,StartId,EndId,HospitalDay)
values(@AccountNumber,@DocumentID,@VitalSign,@Result,@NumericResult,dbo.convertTimeZoneToUtc(@TimeZoneName,CONVERT(datetime,@VitalSignDate,101)),@SectionHeader,@StartId,@EndId,@HospitalDay)
/*
update NLP_VitalSign set NumericResult = case when Result like'[A-Za-z]%'
then case when substring(Result,2,charindex(' ',Result,charindex(' ',Result)+1))='' then substring(Result,charindex(' ',Result),len(Result))
else substring(ltrim(rtrim(substring(Result,charindex(' ',Result),len(Result)))),0,charindex(' ',ltrim(rtrim(substring(Result,
charindex(' ',Result),len(Result)))))) end else case when substring(Result,0,charindex(' ',Result))='' then Result else
substring(Result,0,charindex(' ',Result)) end end where DocumentID=@DocumentID and Result like '[A-Za-z]'
update NLP_VitalSign set NumericResult = replace(Result,'%','') where DocumentID=@DocumentID and Result like'%[%]%'
update NLP_VitalSign set NumericResult=REPLACE(RTRIM(Result),'s', '') where DocumentID=@DocumentID and Result like '%[A-Za-z]%'
update NLP_VitalSign set NumericResult=SUBSTRING(Result,1,CHARINDEX('/',Result)-1),NumericResult2=SUBSTRING(Result,CHARINDEX('/',Result)+1,LEN(Result))
where DocumentID=@DocumentID and Result like '%[/]%' and CHARINDEX('/',Result,1)>0
update NLP_VitalSign set NumericResult =NULL where DocumentID=@DocumentID and Result like '%[A-Za-z]%'
--Step : Convert WT from Pounds to KGS
update NLP_VitalSign set NumericResult=cast((0.453592*cast(Result as int))as decimal(10,2)) where DocumentID=@DocumentID
and Result like '%pounds' and VitalSign like '%Weight%'
--BMI Result Insertion to MeditechVitals
insert into FTP_VitalSign(AccountNumber,VitalSignDate,VitalSign,Result,HospitalDay,NumericResult)
select top 1 @AccountNumber,dbo.convertTimeZoneToUtc(@TimeZoneName,VitalSignDate),VitalSign,Result,HospitalDay,NumericResult from NLP_VitalSign
where DocumentId=@DocumentID and AccountNumber=@AccountNumber and VitalSign in ('BMI','Body mass index','Calculated BMI')
*/
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertVseriesCombination
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertVseriesCombination] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/06/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertVseriesCombination]
@AccountNumber varchar(30),
@DocumentId int,
@Vehicle varchar(50),
@OpVehicle varchar(50),
@Person varchar(50),
@Traffic varchar(50),
@Encounter varchar(50),
@Event varchar(50),
@DocumentType varchar(50),
@StartId int,
@EndId int,
@AnnotId int,
@ActualDesc varchar(100)
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'DocumentID: '+''+cast(@DocumentID as varchar(15))+''+'|'+
'@Vehicle: '+''+@Vehicle+''+'|'+
'@OpVehicle: '+''+@OpVehicle+''+'|'+
'@Person: '+''+@Person+''+'|'+
'@Traffic: '+''+@Traffic+''+'|'+
'@Encounter: '+''+@Encounter+''+'|'+
'@Event: '+''+@Event+''+'|'+
'@DocumentType: '+''+@DocumentType+''+'|'+
'@StartId: '+''+cast(@StartId as varchar(15))+''+'|'+
'@EndId: '+''+cast(@EndId as varchar(15))+''+'|'+
'@AnnotId: '+''+cast(@AnnotId as varchar(15))+''+'|'+
'@ActualDesc: '+''+@ActualDesc+''
declare @Tarcode as varchar(15)
declare @shortdesc as varchar(100)
declare @priority as int
declare @tmpIntId as int
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
if exists(select top 1 1 from MasterHRCM.dbo.KB_VSeriesCore where event=@event and Victim=@person and VTVehicle=@Vehicle and OPVehicle=@opVehicle and traffic=@Traffic and encounter='Initial Encounter')
begin
select @Tarcode=code from MasterHRCM.dbo.KB_VSeriesCore where event=@event and Victim=@person and VTVehicle=@Vehicle and OPVehicle=@opVehicle and traffic=@traffic and encounter='Initial Encounter'
select @shortdesc=ShortDesc from MasterHRCM.dbo.CMS_DxCodeDesc where ICD10Code=@Tarcode
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@Tarcode,@ActualDesc,'Y','Positive','False','KPAI',@AnnotId,@StartId,@EndId,0,'VseriesKeyword','Y')
insert into NLP_VSeriesCode(AccountNumber,DocumentId,Event,Victim,VTVehicle,OPVehicle,Traffic,Encounter,Code,Rstatus,UserName)
values(@AccountNumber,@DocumentId,@event,@person,@Vehicle,@opVehicle,@traffic,'Initial Encounter',@Tarcode,0,'KPAI')
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertWSeriesCombination
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertWSeriesCombination] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/06/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertWSeriesCombination]
@AccountNumber varchar(30),
@DocumentId int,
@Keyterm varchar(100),
@Keytype varchar(100),
@Action varchar(50),
@State varchar(50),
@UserName varchar(50),
@DocumentType varchar(20),
@StartId int,
@EndId int,
@AnnotId int
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'DocumentID: '+''+cast(@DocumentID as varchar(15))+''+'|'+
'@Keyterm: '+''+@Keyterm+''+'|'+
'@Keytype: '+''+@Keytype+''+'|'+
'@Action: '+''+@Action+''+'|'+
'@State: '+''+@State+''+'|'+
'@UserName: '+''+@UserName+''+'|'+
'@DocumentType: '+''+@DocumentType+''+'|'+
'@StartId: '+''+cast(@StartId as varchar(15))+''+'|'+
'@EndId: '+''+cast(@EndId as varchar(15))+''+'|'+
'@AnnotId: '+''+cast(@AnnotId as varchar(15))+''
declare @Tarcode as varchar(15)
declare @stddisorder as varchar(100)
declare @shortdesc as varchar(200)
declare @priority as int
declare @tmpIntId as int
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
if exists(select top 1 1 from MasterHRCM.dbo.KB_WSeriesCoreData where keyterm=@keyterm and keytype=@keytype and action=@action and rstatus=0)
begin
select @Tarcode=code,@stddisorder=standarddisorder from MasterHRCM.dbo.KB_WSeriesCoreData
where keyterm=@keyterm and keytype=@keytype and action=@action and rstatus=0
if(@state='subsequent')
begin
select @Tarcode=@Tarcode+CASE len(@Tarcode)
WHEN 3 THEN '.XXXD'
--WHEN 4 THEN '.XXXD'
WHEN 5 THEN 'XXD'
WHEN 6 THEN 'XD'
ELSE 'D' END
end
else if(@state='sequela')
begin
select @Tarcode=@Tarcode+CASE len(@Tarcode)
WHEN 3 THEN '.XXXS'
--WHEN 4 THEN '.XXXS'
WHEN 5 THEN 'XXS'
WHEN 6 THEN 'XS'
ELSE 'S' END
end
else
begin
select @Tarcode=@Tarcode+CASE len(@Tarcode)
WHEN 3 THEN '.XXXA'
--WHEN 4 THEN '.XXXA'
WHEN 5 THEN 'XXA'
WHEN 6 THEN 'XA'
ELSE 'A' END
end
select @shortdesc=ShortDesc from MasterHRCM.dbo.CMS_DxCodeDesc where ICD10Code=@Tarcode
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@Tarcode,@shortdesc,'Y','Positive','False','KPAI',@AnnotId,@StartId,@EndId,0,'WseriesKeyword','Y')
insert into NLP_WSeriesCode(AccountNumber,DocumentId,Keyterm,Keytype,Action,State,UserName,Code,RStatus,StandardDisorder)
values(@AccountNumber,@DocumentId,@keyterm,@keytype,@action,@state,@username,@Tarcode,0,@stddisorder)
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_InsertYSeriesCombination
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_InsertYSeriesCombination] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/06/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_InsertYSeriesCombination]
@AccountNumber varchar(30),
@DocumentId int,
@Activity varchar(50),
@Place varchar(50),
@ExternalStatus varchar(50),
@DocumentType varchar(50),
@StartId int,
@EndId int,
@AnnotId int
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'DocumentID: '+''+cast(@DocumentID as varchar(15))+''+'|'+
'@Activity: '+''+@Activity+''+'|'+
'@Place: '+''+@Place+''+'|'+
'@ExternalStatus: '+''+@ExternalStatus+''+'|'+
'@DocumentType: '+''+@DocumentType+''+'|'+
'@StartId: '+''+cast(@StartId as varchar(15))+''+'|'+
'@EndId: '+''+cast(@EndId as varchar(15))+''+'|'+
'@AnnotId: '+''+cast(@AnnotId as varchar(15))+''
declare @ActivityCode as varchar(15)
declare @PlaceCode as varchar(15)
declare @externalCode as varchar(100)
declare @priority1 as int
declare @priority2 as int
declare @priority3 as int
declare @tmpIntId1 as int
declare @tmpIntId2 as int
declare @tmpIntId3 as int
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
if exists(select top 1 1 from MasterHRCM.dbo.KB_YSeriesActivity where (activity=@activity or place=@place))
begin
if(@activity='Unspecified' and @place='Unspecified')
begin
select @ActivityCode=code from MasterHRCM.dbo.KB_YSeriesActivity where activity='Unspecified Activity' and place='Unspecified Place'
select @PlaceCode=code from MasterHRCM.dbo.KB_YSeriesActivity where activity='Unspecified Place' and place='Unspecified Place'
end
else if(@activity='Unspecified' and @place!='Unspecified')
begin
select @ActivityCode=code from MasterHRCM.dbo.KB_YSeriesActivity where activity=@activity and place=@place
select @PlaceCode=code from MasterHRCM.dbo.KB_YSeriesActivity where activity=@activity and place=@place
end
else
begin
select @ActivityCode=code from MasterHRCM.dbo.KB_YSeriesActivity where activity=@activity and place='Unspecified'
select @PlaceCode=code from MasterHRCM.dbo.KB_YSeriesActivity where activity=@activity and place=@place
end
select @externalCode=code from MasterHRCM.dbo.KB_YSeriesActivity where activity=@externalStatus and place='Unspecified'
if(@PlaceCode is null or @PlaceCode like '%Y93%')
set @PlaceCode='Y92.9'
-- For Place COde
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@PlaceCode,@Place,'Y','Positive','False','KPAI',@AnnotId,@StartId,@EndId,0,'Y92seriesKeyword','Y')
-- For Activity Code
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@ActivityCode,@Activity,'Y','Positive','False','KPAI',@AnnotId,@StartId,@EndId,0,'Y93seriesKeyword','Y')
-- For ExternalStatus Code
insert into NLP_DxCodeByDocument (AccountNumber,DocumentId,DxCode,AnnotationString,Poa,Finding,History,UserName,AnnotationId,StartId,EndId,Rstatus,DxCodeSource,Codable)
values(@AccountNumber,@DocumentId,@externalCode,@ExternalStatus,'Y','Positive','False','KPAI',@AnnotId,@StartId,@EndId,0,'Y99seriesKeyword','Y')
insert into NLP_VSeriesCode(AccountNumber,DocumentId,Event,Code,UserName)
values(@AccountNumber,@DocumentId,@activity,@ActivityCode,'KAPI')
insert into NLP_VSeriesCode(AccountNumber,DocumentId,Event,Code,UserName)
values(@AccountNumber,@DocumentId,@Place,@PlaceCode,'KAPI')
insert into NLP_VSeriesCode(AccountNumber,DocumentId,Event,Code,UserName)
values(@AccountNumber,@DocumentId,@ExternalStatus,@externalCode,'KAPI')
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_RunCHFRulesOverDXCode
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_RunCHFRulesOverDXCode] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/20/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_RunCHFRulesOverDXCode]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DocumentId int,
@DocumentType varchar(20)
AS
Declare @TimeZoneName varchar(10)='IST'
Declare @Digit5 int
Declare @tconcept1 int
Declare @chfdesc varchar(20)
Declare @mainCode varchar(20)
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@DocumentId: '+''+cast(@DocumentId as varchar(15))+''+'|'+
'@DocumentType: '+''+@DocumentType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
select distinct DxCode into #temp111 from NLP_DxCode where AccountNumber=@AccountNumber and DxCode like 'I50.[2-4]%'
and DxExclusionTypeId=0
select @Digit5=max(right(DxCode,1)) from #temp111
select @tconcept1 = max(tc1.TConcept1Id) from NLP_DxCodeByDocument dcd
inner join NLP_DxCode dx on dx.AccountNumber=dcd.AccountNumber and dcd.DxCode=dx.DxCode
inner join NLP_DxAnnotation dxa on dcd.AnnotationId=dxa.AnnotationId
inner join MasterHRCM.dbo.KB_TemporalConcept1 tc1 on tc1.TConcept1=dxa.TConcept1
where dxa.AccountNumber=@AccountNumber and dx.DxCode like 'I50%' and tc1.TConcept1Id<=3
if(@tconcept1>=@Digit5)
begin
update #temp111 set DxCode=LEFT(DxCode,5)+CONVERT(varchar(2),@tconcept1)
select top 1 @chfdesc = ShortDesc from MasterHRCM.dbo.CMS_DxCodeDesc where icd10code in (select DxCode from #temp111)
select @mainCode = max(DxCode) from #temp111
if not exists (select 1 from NLP_DxCode where AccountNumber=@AccountNumber and DxCode in (select DxCode from #temp111))
insert into NLP_DxCode(AccountNumber,DocumentId,DxCode,DxDesc,Poa,DxType,DxPriority,CcMcc,PhysicianId,DxDate,UserName,DxCodeSource)
select @AccountNumber,@DocumentId,@mainCode,@chfdesc as DxDesc,'Y','S',0,NULL as CcMcc,PhysicianID,dbo.convertTimeZoneToUtc(@TimeZoneName,EditDateTime),
'KPAI','ChfRulesOverDxCode' from HIM_Document where DocumentID=@DocumentId
end
drop table #temp111
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_RunDXCodeExclusionByPCSCodeRule
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_RunDXCodeExclusionByPCSCodeRule] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/20/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_RunDXCodeExclusionByPCSCodeRule]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DocumentId int,
@DocumentType varchar(20)
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@DocumentId: '+''+cast(@DocumentId as varchar(15))+''+'|'+
'@DocumentType: '+''+@DocumentType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
/*Updating Status in ICD10Icdpriority*/
update NLP_DxCode set DxExclusionTypeId = 2 where DxCode in (
select distinct dxcode from MasterHRCM.dbo.KB_PcsDxExclusion pcs
inner join NLP_PCSCode pro on pcs.PCSCode=left(pro.PCSCode,4)
where pro.AccountNumber=@AccountNumber
)and AccountNumber=@AccountNumber and DxExclusionTypeId=0
--Log_NLP_DxCode
Insert into Log_NLP_DxCode(DxCodeId,AccountNumber,DocumentId,DxCode,DxDesc,Poa,DxType,DxPriority,CcMcc,PhysicianId,DxDate,UserName,DxCodeSource,DxExclusionTypeId,SourceInsertedDate,SourceModifiedDate)
select DxCodeId,AccountNumber,DocumentId,DxCode,DxDesc,Poa,DxType,DxPriority,CcMcc,PhysicianId,DxDate,UserName,DxCodeSource,DxExclusionTypeId,InsertedDate,ModifiedDate
from NLP_DxCode where AccountNumber=@AccountNumber
--Log_NLP_DxCodeByDocument
Insert into Log_NLP_DxCodeByDocument(DxCodeId,AccountNumber,DocumentId,DxCode,AnnotationString,Poa,SectionHeader,Finding,History,UserName,AnnotationId,StartId,EndId,RStatus,DxCodeSource,Codable,SourceInsertedDate,SourceModifiedDate)
select DxCodeId,AccountNumber,DocumentId,DxCode,AnnotationString,Poa,SectionHeader,Finding,History,UserName,AnnotationId,StartId,EndId,RStatus,DxCodeSource,Codable,InsertedDate,ModifiedDate
from NLP_DxCodeByDocument where AccountNumber=@AccountNumber and DocumentId=@DocumentId
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_RunDXTabExclusion1Rule
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_RunDXTabExclusion1Rule] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/20/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_RunDXTabExclusion1Rule]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DocumentId int,
@DocumentType varchar(20)
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@DocumentId: '+''+cast(@DocumentId as varchar(15))+''+'|'+
'@DocumentType: '+''+@DocumentType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
/*Following line added by Krishnareddy for handling a situation where high priority coded deleted by user then omitted
code of 11 on this code should be back to normal*/
Update NLP_DxCode set DxExclusionTypeId=0 where AccountNumber=@AccountNumber and DxExclusionTypeId=3
select distinct DxCode,0 as rstatus into #extable from NLP_DxCode
where AccountNumber=@AccountNumber and DxExclusionTypeId=0
update #extable set rstatus=3 where DxCode in(
select distinct e.DxCode from #extable e
inner join MasterHRCM.dbo.KB_DxTabExclusion1Code ed on e.DxCode=ed.code1
inner join #extable e2 on ed.code2 = e2.DxCode
where ed.Rstatus=0)
update NLP_DxCode set DxExclusionTypeId=3 where AccountNumber=@AccountNumber and
DxCode in(select DxCode from #extable where rstatus=3)
DROP table #extable
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_RunErrDXCodeExclusionRule
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_RunErrDXCodeExclusionRule] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/20/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_RunErrDXCodeExclusionRule]
-- Add the parameters for the stored procedure here
@AccountNumber varchar (30),
@DocumentId int,
@DocumentType varchar(20)
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@DocumentId: '+''+cast(@DocumentId as varchar(15))+''+'|'+
'@DocumentType: '+''+@DocumentType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
/*
--ERR Exclusion
update NLP_DxCode set DxExclusionTypeId=1 from NLP_DxCode dx
inner join NLP_DxCodeByDocument dcd on dx.AccountNumber=dcd.AccountNumber
where dcd.AccountNumber=@AccountNumber and RStatus=0
and @DocumentType like 'er%' and dcd.History = 'false'and dcd.DxCodeSource not in ('PMH','LongTermDrugDisease')
and dcd.DxCode not in(select DxCode from NLP_DxCodeByDocument where AccountNumber=@AccountNumber and RStatus=0
and Finding = 'positive' and @DocumentType not like 'er%' and DxCode is not null)
and dcd.DxCode not in(select DxCode from NLP_DxCodeByDocument where AccountNumber=@AccountNumber and RStatus=0
and Finding = 'None' and @DocumentType = 'D' and DxCode is not null)
and dcd.DxCode not in (select icd10code from MasterHRCM.dbo.CMS_DxCodeDesc where chronic = 1)
and dcd.AccountNumber not in(select distinct AccountNumber from NLP_DxCodeByDocument where AccountNumber=@AccountNumber
and (DxCode like 'O%' or DxCode like 'z38%'))
*/
Update NLP_DxCode set DxExclusionTypeId=0 where AccountNumber=@AccountNumber and DxExclusionTypeId=1
Update NLP_DxCode set DxExclusionTypeId=1 where AccountNumber=@AccountNumber and DxCode in (
select DxCode from (
select DxCode,SUM(case when idt.InternalDocumentAliasName='ERR' then 0 else 1 end) cnt
from NLP_DxCodeByDocument dcd
inner join HIM_Document hd on hd.AccountNumber=dcd.AccountNumber and hd.DocumentID=dcd.DocumentId
inner join MST_DocumentType mt on mt.DocumentTypeID=hd.DocumentTypeID
inner join MST_InternalDocumentType idt on idt.InternalDocumentTypeID=mt.InternalDocumentTypeID
where dcd.AccountNumber=@AccountNumber and dcd.DxCode is not null and dcd.DxCode!='UnKnown' and dcd.History='false' and dcd.Finding='Positive' and dcd.DxCodeSource not in ('PMH','LongTermDrugDisease')
group by DxCode) a where a.cnt = 0
)
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_RunHIVRulesOverDXCode
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_RunHIVRulesOverDXCode] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/20/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_RunHIVRulesOverDXCode]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DocumentId int,
@DocumentType varchar(20)
AS
Declare @TimeZoneName varchar(10)='IST'
Declare @AidsCode varchar(10)
Declare @History varchar(10)
Declare @FinalCode varchar(10)
Declare @FinalContent varchar(150)
Set @FinalContent = ''
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@DocumentId: '+''+cast(@DocumentId as varchar(15))+''+'|'+
'@DocumentType: '+''+@DocumentType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
CREATE TABLE #temp(DxCode varchar(10) NULL,History varchar(10) NULL);
if exists (select 1 from NLP_DxCode where AccountNumber=@AccountNumber and DxCode='Z21')
Begin
insert into #temp(DxCode,History)
select distinct i.DxCode,History from NLP_DxCode i
inner join NLP_DxCodeByDocument it on it.AccountNumber = i.AccountNumber and it.DxCode = i.DxCode
inner join MasterHRCM.dbo.KB_HivDxCode a on i.DxCode = a.A1Code
where i.AccountNumber = @AccountNumber and a.[Status] = 0
if exists(select 1 from #temp where History='False')
Begin
SET @FinalCode = 'B20'
SET @FinalContent = 'AIDS'
if not exists(select 1 from NLP_DxCode where AccountNumber=@AccountNumber and DxCode=@FinalCode)
insert into NLP_DxCode(AccountNumber,DocumentId,DxCode,DxDesc,Poa,DxType,DxPriority,CcMcc,PhysicianId,DxDate,UserName,DxCodeSource)
select @AccountNumber,@DocumentId,@FinalCode,@FinalContent,'Y','S',0,NULL as CcMcc,PhysicianID,dbo.convertTimeZoneToUtc(@TimeZoneName,EditDateTime),
'KPAI','HivRulesOverDxCode' from HIM_Document where DocumentID=@DocumentId
End
if exists (select 1 from #temp where history = 'true')
update NLP_DxCode set DxExclusionTypeId=5 from NLP_DxCode it
inner join #temp t on t.DxCode = it.DxCode
where t.history = 'true'
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_RunHTNRulesOverDXCode
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_RunHTNRulesOverDXCode] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/18/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_RunHTNRulesOverDXCode]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DocumentId int,
@DocumentType varchar(20)
AS
Declare @TimeZoneName varchar(10)='IST'
Declare @CkdCode varchar(10)
Declare @ChfCode varchar(10)
Declare @FinalCode varchar(10)
Declare @ChfContent varchar(50)
Declare @CkdContent varchar(50)
Declare @FinalContent varchar(150)
Set @FinalContent = ''
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@DocumentId: '+''+cast(@DocumentId as varchar(15))+''+'|'+
'@DocumentType: '+''+@DocumentType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
select distinct d.IcdCode,d.Priority,left(d.IcdCode,3) icdgroup ,i.DxDesc --,t.AnnotationString
into #temp from NLP_DxCode i
--inner join NLP_DxCodeByDocument t on i.DocumentId = t.DocumentId and (i.DxCode = t.DxCode)
inner join MasterHRCM.dbo.KB_DxExclusionCode d on i.DxCode=d.IcdCode
where i.AccountNumber=@AccountNumber and GroupId in(1,5)
order by left(d.IcdCode,3),d.Priority desc
select top 1 @ChfCode = icdcode, @ChfContent = DxDesc from #temp a where ICDGROUP ='I11' AND
priority = (select MAX(priority) from #temp where icdgroup = a.icdgroup) order by icdgroup
select top 1 @CkdCode = icdcode, @CkdContent = DxDesc from #temp a where ICDGROUP ='I12' AND
priority = (select MAX(priority) from #temp where icdgroup = a.icdgroup) order by icdgroup
if(@ChfCode is not null and @CkdCode is not null)
begin
select @FinalCode = FinalCode from MasterHRCM.dbo.KB_HtnDxCode where CHF=@ChfCode and CKD=@CkdCode
select @FinalContent = @ChfContent +' and '+@CkdContent
insert into NLP_DxCode(AccountNumber,DocumentId,DxCode,DxDesc,Poa,DxType,DxPriority,CcMcc,PhysicianId,DxDate,UserName,DxCodeSource)
select @AccountNumber,@DocumentId,@FinalCode,@FinalContent,'Y','S',0,NULL as CcMcc,PhysicianID,dbo.convertTimeZoneToUtc(@TimeZoneName,EditDateTime),
'KPAI','HtnRulesOverDxCode' from HIM_Document where DocumentID=@DocumentId
end
Drop table #temp
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_RunNegativeDXCodeExclusionRule
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_RunNegativeDXCodeExclusionRule] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 05/21/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_RunNegativeDXCodeExclusionRule]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30)
AS
Declare @TimeZoneName varchar(10)='IST'
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'TimeZoneName: '+''+@TimeZoneName+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
--Checking Code is Negative morethan 2
update NLP_DXCode set DxExclusionTypeId=6 where DxCode in(select distinct DxCode from NLP_DxCodeByDocument where AccountNumber=@AccountNumber
and Finding='Negative' and DxCode is not null and DxCode!='unknown' group by DxCode having count(*)>2)
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_RunNeonatalDXCodeExclusionRule
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_RunNeonatalDXCodeExclusionRule] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 05/21/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_RunNeonatalDXCodeExclusionRule]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@AgeInDays int
AS
Declare @TimeZoneName varchar(10)='IST'
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'TimeZoneName: '+''+@TimeZoneName+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
If(@AgeInDays<>0)
Update NLP_DXCode set DxExclusionTypeId=7,DxCodeSource='NeonatalPDXNeg' where AccountNumber=@AccountNumber and DxCode like 'Z38.0%'
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_RunSpecificDXCodeExclusionRule
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_RunSpecificDXCodeExclusionRule] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 06/20/2018
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[NLP_RunSpecificDXCodeExclusionRule]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(20),
@DocumentId int,
@DocumentType varchar(20)
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@DocumentId: '+''+cast(@DocumentId as varchar(15))+''+'|'+
'@DocumentType: '+''+@DocumentType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
update NLP_DxCode set DxExclusionTypeId=0 WHERE AccountNumber=@AccountNumber AND DxExclusionTypeId=2
--update icd10tempdisease set [Status]=0 WHERE accountno=@accountNo AND [Status]=5
update NLP_DxCode set DxExclusionTypeId=2 where DxCode in(
select distinct dis_Icdcode from (
select i.AccountNumber,d.IcdCode dis_Icdcode,d.Priority dis_priority,d.GroupId dis_Groupid,
DENSE_RANK() over(PARTITION by i.AccountNumber,d.groupid order by d.groupid,d.Priority desc) Rank1
from NLP_DxCode i
--inner join NLP_DxCodeByDocument t on i.DocumentId = t.DocumentId and (i.DxCode=t.DxCode)
inner join MasterHRCM.dbo.KB_DxExclusionCode d on i.DxCode = d.IcdCode
where i.AccountNumber=@AccountNumber and i.DxExclusionTypeId=0
) a where Rank1 <> 1
)
and AccountNumber = @AccountNumber and DxExclusionTypeId=0
--exlcuding Leukocyties and fever if Itis or L02 disease existis in ICD10Tempdisease
if exists (
select 1 from NLP_DxCodeByDocument dcd inner join NLP_DxCode dx on dcd.AccountNumber = dx.AccountNumber and dcd.DxCode=dx.DxCode
where dcd.AccountNumber = @AccountNumber and (AnnotationString like '%itis%' or dcd.DxCode like 'L02%')
and Finding = 'Positive' and dx.DxExclusionTypeId<>1
)
update NLP_DxCode set DxExclusionTypeId = 2 where AccountNumber = @AccountNumber and DxCode in ('D72.829','R50.9')
/* any ITIS conditions which are not chronic (Except arthritis and osteoarthritis) --- no need to code */
Update NLP_DxCode set DxExclusionTypeId=2 from NLP_DxCode dx
inner join NLP_DxCodeByDocument dcd on dcd.AccountNumber=dx.AccountNumber and dcd.DxCode=dx.DxCode
inner join NLP_DxAnnotation dxa on dcd.AnnotationId=dxa.AnnotationId
where dcd.AccountNumber=@AccountNumber and AnnotationString like '%itis%' and Finding = 'Positive' and History='true'
and dxa.TConcept1 !='chronic' --Need to Review On Chronic Condition....
and dx.DxExclusionTypeId<>1 and AnnotationString not like'%arthritis%'
/* if icdcode between 'K20' and 'k96' --- no need to code R10% series*/
if exists (
select 1 from NLP_DxCode where AccountNumber=@AccountNumber and DxCode between 'K20' and 'K96'
and DxExclusionTypeId<>1
)
Update NLP_DxCode set DxExclusionTypeId=2 where AccountNumber=@AccountNumber and DxCode like 'R10%'
/* if F10.21(alcohol quit) code is there no need to code alcoholism*/
if exists (select 1 from NLP_DxCode where AccountNumber=@AccountNumber and DxCode='F10.21')
Update NLP_DxCode set DxExclusionTypeId=2 from NLP_DxCode dx
inner join NLP_DxCodeByDocument dcd on dcd.AccountNumber=dx.AccountNumber and dcd.DxCode=dx.DxCode
where dcd.AccountNumber=@AccountNumber and AnnotationString='alcoholism' and History='True'
/*to clear Ambiguity b/w history of CVA(Z86.73) and current CVA(I63.9) */
if exists (
select 1 from NLP_DxCode dx
inner join HIM_Document hd on hd.AccountNumber=dx.AccountNumber and hd.DocumentID=dx.DocumentId
inner join MST_DocumentType mt on mt.DocumentTypeID=hd.DocumentTypeID
where dx.AccountNumber=@AccountNumber and DxCode='I63.9'
and (mt.DocumentAliasName in ('ERR','H') and mt.DocumentAliasName not in ('P','C','O','D'))
)
begin
if exists (select 1 from NLP_DxCode where AccountNumber=@AccountNumber and DxCode='Z86.73')
begin
Update NLP_DxCode set DxExclusionTypeId=0 where AccountNumber=@AccountNumber and DxCode='Z86.73'
Update NLP_DxCode set DxExclusionTypeId=2 where AccountNumber=@AccountNumber and DxCode='I63.9'
end
end
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:NLP_UpdateFXAnnotations
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_UpdateFXAnnotations] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 03/07/2019
-- Description: Fracture Data Insertion
-- =============================================
CREATE PROCEDURE [dbo].[NLP_UpdateFXAnnotations]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
select * into #tempinjurycodes from MasterHRCM.dbo.KB_Injurycodes where bodypart in (
select distinct fbpart1 from NLP_FXAnnotations where AccountNumber=@AccountNumber and FBpart1 is not null) and [Status]=0
declare Fractures cursor for
select distinct fbpart1,fbloc2 from NLP_FXAnnotations where AccountNumber=@AccountNumber and FBpart1 is not null
declare @fbpart1 varchar(50)
declare @fbloc2 varchar(50)
open Fractures
fetch next from Fractures into @fbpart1,@fbloc2
while (@@fetch_Status<>-1)
begin
update NLP_FXAnnotations set fdnd='',RStatus=4 where AccountNumber=@AccountNumber and FXAnnotationId not in (
select f.FXAnnotationId from NLP_FXAnnotations f
inner join #tempinjurycodes i on f.FBpart1=isnull(i.bodypart,'') and isnull(i.bodypartloc2,'')=f.FBLoc2 and f.FDnd= isnull(i.displaced,'')
where AccountNumber=@AccountNumber and f.Rstatus=0 and FBpart1=@fbpart1 and FBLoc2=@fbloc2)
and FBpart1=@fbpart1 and FBLoc2=@fbloc2 and Rstatus=0 and FDnd is not null and FDnd!=''
update NLP_FXAnnotations set fdnd='displaced' from NLP_FXAnnotations f
inner join #tempinjurycodes i on f.FBpart1=isnull(i.bodypart,'') and isnull(i.bodypartloc2,'')=f.FBLoc2
where AccountNumber=@AccountNumber and f.rstatus in (0,4) and fbpart1=@fbpart1 and fbloc2=@fbloc2
and i.displaced='displaced' and f.fdnd='' and f.FDx like '%fracture%'
update NLP_FXAnnotations set FType3='',RStatus=4 where AccountNumber=@AccountNumber and FXAnnotationId not in (
select f.FXAnnotationId from NLP_FXAnnotations f
inner join #tempinjurycodes i on f.fdx=i.fdx and f.FBpart1=isnull(i.bodypart,'') and isnull(i.bodypartloc2,'')=f.FBLoc2 and f.FType3= isnull(i.Type3,'')
where AccountNumber=@AccountNumber and f.Rstatus=0 and f.FDx like '%fracture%' and FBpart1=@fbpart1 and FBLoc2=isnull(@fbloc2,'') )
and FBpart1=@fbpart1 and FBLoc2=@fbloc2 and Rstatus=0 and FType3 is not null and FType3 !='' and FDx like'%fracture%'
fetch next from Fractures into @fbpart1,@fbloc2
end
close Fractures
deallocate Fractures
End Try
Begin Catch
Exec usp_GetDBErrorInfo @AccountNumber,'CRI'
End Catch
--drop table #tempinjurycodes
END
GO
|
======================================================
Procedure Name:NLP_UpdateFxValues
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[NLP_UpdateFxValues] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 03/07/2019
-- Description: Fracture Data Insertion
-- =============================================
CREATE PROCEDURE [dbo].[NLP_UpdateFxValues]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
update NLP_FXValues set elementname=ie.elementname from NLP_FXValues fv
inner join MasterHRCM.dbo.KB_InjuryElements ie on fv.fbpart1=ie.bodypart
inner join MasterHRCM.dbo.KB_FBSynonyms fs on fs.ElementName=ie.elementname and fs.PreferredName=fv.Elementname
where fv.AccountNumber=@AccountNumber and ie.RStatus=0
update NLP_FXValues set RStatus=2 where FXValueId not in(
select fv.FXValueId from NLP_FXValues fv inner join
MasterHRCM.dbo.KB_InjuryElements ie on fv.fbpart1=ie.bodypart and fv.ElementType=ie.elementtype and fv.elementname=ie.elementname
where fv.AccountNumber=@AccountNumber and ie.RStatus=0) and AccountNumber=@AccountNumber and elementtype NOT IN('fdx','ftype','ftype2')
update NLP_FXValues set RStatus=2 where AccountNumber=@AccountNumber and ElementType='fdx' and FXValueId not in
(select fv.FXValueId from NLP_FXValues fv inner join
MasterHRCM.dbo.KB_InjuryElements ie on fv.fbpart1=ie.bodypart and fv.ElementType='fdx' and fv.elementname=ie.fdx where fv.AccountNumber=@AccountNumber
and ie.RStatus=0)
update NLP_FXValues set RStatus=2 where FXValueId in (
select FXValueId from (
select fv.FXValueId,fv.fbpart1,fv.elementname,fe.GroupId,fe.Priority,MAX(priority) over (partition by FBPart1,groupid) max_priority
from NLP_FXValues fv
inner join MasterHRCM.dbo.KB_FractureElements fe on fv.elementtype=fe.element and fv.elementname=fe.ElementName
where AccountNumber=@AccountNumber and fv.RStatus=0
)a
where Priority!=max_priority
)
End Try
Begin Catch
Exec usp_GetDBErrorInfo @AccountNumber,'NLP'
End Catch
END
GO
|
======================================================
Procedure Name:SYNC_InsertPatientDocument
Description:
with help of this to insert Patient documents from HL7database to local facility.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[SYNC_InsertPatientDocument] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SYNC_InsertPatientDocument]
AS
begin
Begin Try
--Begin Transaction
declare @TimeZoneName varchar(10)='IST'
declare @startTime datetime
declare @endTime datetime
declare @Phy_LastName VARCHAR(100)
declare @Phy_MiddleName VARCHAR(100)
declare @Phy_FirstName VARCHAR(100)
select @startTime =convert(varchar,convert(datetime,enddate,121),121) from OTR_SyncProcess where SyncProcessID=1
IF(@startTime = '')
set @startTime='1900-01-01 00:00:00.0'
declare InsertPatientDocument cursor for
select distinct top 50 rd.reportid,v.AccountNumber,v.MRN,wt.DocumentTypeID as DocumentTypeID,rd.AssignedDocumentAuthenticator,rd.PrimaryActivityProviderCodeName,
cast(stuff(stuff(left(rd.ActivityDateTime,12),9,0,' '),12,0,':')as datetime)as ActivityDateTime,
cast(stuff(stuff(left(rd.OriginationDateTime,12),9,0,' '),12,0,':')as datetime)as OriginationDateTime,
cast(stuff(stuff(left(rd.TranscriptionDateTime,12),9,0,' '),12,0,':')as datetime)as TranscriptionDateTime,
case when (rd.EditDateTime='' or rd.EditDateTime is null)
then cast(stuff(stuff(left(rd.TranscriptionDateTime,12),9,0,' '),12,0,':')as datetime)
else cast(stuff(stuff(left(rd.EditDateTime,12),9,0,' '),12,0,':')as datetime) end as EditDateTime,
rd.UniqueDocumentNumber,rd.ParentDocumentNumber,rd.UniqueDocumentFileName,dcs.DocumentCompletionStatusID,
rd.InsertDate as InsertedDate,
case when cast(v.AdmitDate as time) <='18:00:00' then DateAdd(day, Datediff(day, 0, v.AdmitDate) , 0)else DateAdd(day, Datediff(day, 0, v.AdmitDate)+1 , 0) end as AdmissionDay,
rd.LastModify as ModifiedDate,rd.DocumentData as DocumentData,v.AdmitDate as AdmitDate
/*
from [192.168.50.78].HPMCHL7.dbo.ReportsDPTEPIC rd
inner join [192.168.50.78].HPMCHL7.dbo.patients p on rd.PatientId = p.PatientId and p.SiteId=1
inner join [192.168.50.78].HPMCHL7.dbo.Visits v on p.PatientId = v.PatientID and rd.PatientVisitId = v.PatientVisitId and v.SiteId=1
left join [192.168.50.78].HPMCHL7.dbo.HL7Insurance i on i.PatientId = p.PatientId and i.setId = 1 and i.SiteId=1 and
i.PatientVisitId= case when exists (select 1 from [192.168.50.78].HPMCHL7.dbo.HL7Insurance where PatientVisitId=v.PatientVisitId and SetID=1) then
v.PatientVisitId
else 0 end
*/
from ReportsDPTEPIC78 rd
inner join patients78 p on rd.PatientId = p.PatientId and p.SiteId=1
inner join Visits78 v on p.PatientId = v.PatientID and rd.PatientVisitId = v.PatientVisitId and v.SiteId=1
left join HL7Insurance78 i on i.PatientId = p.PatientId and i.setId = 1 and i.SiteId=1 and
i.PatientVisitId= case when exists (select 1 from HL7Insurance78 where PatientVisitId=v.PatientVisitId and SetID=1) then
v.PatientVisitId
else 0 end
left join MST_DocumentType wt on wt.DocumentMnemonic = rd.DocumentType
left join MST_DocumentCompletionStatus dcs on dcs.DocumentCompletionStatus=isnull(rd.DocumentCompletionStatus,'DI')
/*
where rd.reportId in (40289374,40289883,40289950,40294778,40288346,40288674,40289239,40289250,40296963,40289428,40289923,40289421,40289966,40290228,40290229,40293933,40293981,40294902,40295517,40295538,40296050,40310547,40310655,40311689,40311698,40311903,40315122,40315124,40315703,40315705)
and rd.DocumentData is not null and rd.DocumentData !='null' and rd.DocumentData !='' and rd.siteId=1 order by rd.LastModify
*/
where rd.DocumentData is not null and rd.DocumentData !='null' and rd.DocumentData !='' and rd.LastModify > @startTime
and rd.siteId=1 order by rd.LastModify
declare @reportid int
declare @AccountNumber varchar(25)
declare @MRN varchar(25)
declare @DocumentTypeID int
declare @AssignedPhysicianId varchar(30)
declare @PhysicianName varchar(80)
declare @ActivityDateTime datetime
declare @OriginationDateTime datetime
declare @TranscriptionDateTime datetime
declare @EditDateTime datetime
declare @UniqueDocumentNumber varchar(100)
declare @ParentDocumentNumber varchar(100)
declare @UniqueDocumentFileName varchar(200)
declare @DocumentCompletionStatusID int
declare @InsertedDate datetime
declare @AdmissionDay datetime
declare @ModifiedDate datetime
declare @DocumentData varchar(MAX)
declare @AdmitDate datetime
open InsertPatientDocument
fetch next from InsertPatientDocument into @reportid,@AccountNumber,@MRN,@DocumentTypeID,@AssignedPhysicianId,@PhysicianName,@ActivityDateTime,
@OriginationDateTime,@TranscriptionDateTime,@EditDateTime,@UniqueDocumentNumber,@ParentDocumentNumber,@UniqueDocumentFileName,
@DocumentCompletionStatusID,@InsertedDate,@AdmissionDay,@ModifiedDate,@DocumentData,@AdmitDate
while (@@fetch_Status<>-1)
begin
IF (@AssignedPhysicianId is not null)
BEGIN
IF CHARINDEX('~',@AssignedPhysicianId,1)>0
SET @AssignedPhysicianId=SUBSTRING(@AssignedPhysicianId,1,CHARINDEX('~',@AssignedPhysicianId)-1)
select top 1 @Phy_LastName=LastName,@Phy_FirstName=FirstName,@Phy_MiddleName=MiddleName
from MST_Physician where PhysicianId=@AssignedPhysicianId
--HIM_Physician Insertion Here...We are building this file, if facility not send updated Physician Master file to KPAI, preparing one master file at our end
If not exists(select 1 from HIM_Physician where PhysicianID=@AssignedPhysicianId)
begin
insert into HIM_Physician(PhysicianID,LastName,MiddleName,FirstName)values(@AssignedPhysicianId,@Phy_LastName,@Phy_MiddleName,@Phy_FirstName)
end
END
if exists(select DocumentID from dbo.HIM_Document where DocumentID= @reportid)
begin
Update HIM_Document set DocumentID=@reportid,AccountNumber=@AccountNumber,MRN=@MRN,DocumentTypeID=@DocumentTypeID,
PhysicianID=@AssignedPhysicianId,PhysicianName=@PhysicianName,
ActivityDateTime=dbo.convertTimeZoneToUtc(@TimeZoneName,@ActivityDateTime),
OriginationDateTime=dbo.convertTimeZoneToUtc(@TimeZoneName,@OriginationDateTime),
TranscriptionDateTime=dbo.convertTimeZoneToUtc(@TimeZoneName,@TranscriptionDateTime),
EditDateTime=dbo.convertTimeZoneToUtc(@TimeZoneName,@EditDateTime),
UniqueDocumentNumber=@UniqueDocumentNumber,ParentDocumentNumber=@ParentDocumentNumber,UniqueDocumentFileName=@UniqueDocumentFileName,
DocumentCompletionStatusID=@DocumentCompletionStatusID,DocumentRunningStatusID=0,ModifiedDate=dbo.convertTimeZoneToUtc(@TimeZoneName,@ModifiedDate)
where DocumentID= @reportid
update dbo.HIM_DocumentData set DocumentID=@reportid,Document=@DocumentData,ModifiedDate=getUtcDate() where DocumentID=@reportid
--HospitalDay Update Query
update dbo.HIM_Document set HospitalDay=case when DateAdd(day,Datediff(day,0,@TranscriptionDateTime),0)<DateAdd(day,Datediff(day,0,@AdmitDate),0) then 0
when DATEDIFF(day,@AdmissionDay,@TranscriptionDateTime)<1 then 1 else DATEDIFF(day,@AdmissionDay,@TranscriptionDateTime)+1 end
where DocumentID= @reportid and @TranscriptionDateTime is not null and @AdmitDate is not null
--Update a record in DocumentReviewLog table for Non-Reviewed i.e Reviewed Document again get updated and Re Runned the Document.
Update User_DocumentReview Set ReviewStatus=0,ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber and DocumentId=@reportid and ReviewStatus=1
--LOG_HIM_Document Insertion Here
insert into LOG_HIM_Document(DocumentId,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,LogStatus)
select DocumentId,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,'Update' LogStatus
from HIM_Document where DocumentID=@reportid
end
else
begin
--Otherthan EPIC
insert into dbo.HIM_Document(DocumentID,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,
UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,DocumentRunningStatusID,InsertedDate,ModifiedDate)
values(@reportid,@AccountNumber,@MRN,@DocumentTypeID,@AssignedPhysicianId,@PhysicianName,
dbo.convertTimeZoneToUtc(@TimeZoneName,@ActivityDateTime),dbo.convertTimeZoneToUtc(@TimeZoneName,@OriginationDateTime),
dbo.convertTimeZoneToUtc(@TimeZoneName,@TranscriptionDateTime),dbo.convertTimeZoneToUtc(@TimeZoneName,@EditDateTime),
@UniqueDocumentNumber,@ParentDocumentNumber,@UniqueDocumentFileName,@DocumentCompletionStatusID,0,dbo.convertTimeZoneToUtc(@TimeZoneName,@InsertedDate),dbo.convertTimeZoneToUtc(@TimeZoneName,@Modifieddate))
insert into dbo.HIM_DocumentData(DocumentID,Document)values(@reportid,@DocumentData)
--HospitalDay Update Query
update dbo.HIM_Document set HospitalDay=case when DateAdd(day,Datediff(day,0,@TranscriptionDateTime),0)<DateAdd(day,Datediff(day,0,@AdmitDate),0) then 0
when DATEDIFF(day,@AdmissionDay,@TranscriptionDateTime)<1 then 1 else DATEDIFF(day,@AdmissionDay,@TranscriptionDateTime)+1 end
where DocumentID= @reportid and @TranscriptionDateTime is not null and @AdmitDate is not null
--LOG_HIM_Document Insertion Here
insert into LOG_HIM_Document(DocumentId,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,LogStatus)
select DocumentId,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,'Insert' LogStatus
from HIM_Document where DocumentID=@reportid
end
fetch next from InsertPatientDocument into @reportid,@AccountNumber,@MRN,@DocumentTypeID,@AssignedPhysicianId,@PhysicianName,@ActivityDateTime,
@OriginationDateTime,@TranscriptionDateTime,@EditDateTime,@UniqueDocumentNumber,@ParentDocumentNumber,@UniqueDocumentFileName,
@DocumentCompletionStatusID,@InsertedDate,@AdmissionDay,@ModifiedDate,@DocumentData,@AdmitDate
select @endTime=convert(varchar,convert(datetime,@ModifiedDate,121),121)
end
if(@endTime is not null and @endTime!='')
update OTR_SyncProcess set startdate=@startTime,enddate=@endTime,ModifiedDate=getUtcDate() where SyncProcessID=1
close InsertPatientDocument
deallocate InsertPatientDocument
--Commit Transaction
End Try
Begin Catch
--IF(@@TRANCOUNT>0)
--Rollback Transaction
Exec usp_GetDBErrorInfo 'No Input Params','SYNC'
End Catch
end
--Exec [SYNC_InsertPatientDocument]
GO
|
======================================================
Procedure Name:SYNC_InsertPatientDocument_Test
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[SYNC_InsertPatientDocument_Test] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SYNC_InsertPatientDocument_Test]
AS
begin
--Begin Try
declare @TimeZoneName varchar(10)='IST'
declare @startTime datetime
declare @endTime datetime
declare @Phy_LastName VARCHAR(100)
declare @Phy_MiddleName VARCHAR(100)
declare @Phy_FirstName VARCHAR(100)
select @startTime =convert(varchar,convert(datetime,enddate,121),121) from OTR_SyncProcess where SyncProcessID=1
IF(@startTime = '')
set @startTime='1900-01-01 00:00:00.0'
declare InsertPatientDocument cursor for
select distinct top 500 rd.reportid,v.AccountNumber,v.MRN,wt.DocumentTypeID as DocumentTypeID,rd.AssignedDocumentAuthenticator,rd.PrimaryActivityProviderCodeName,
cast(stuff(stuff(left(rd.ActivityDateTime,12),9,0,' '),12,0,':')as datetime)as ActivityDateTime,
cast(stuff(stuff(left(rd.OriginationDateTime,12),9,0,' '),12,0,':')as datetime)as OriginationDateTime,
cast(stuff(stuff(left(rd.TranscriptionDateTime,12),9,0,' '),12,0,':')as datetime)as TranscriptionDateTime,
case when (rd.EditDateTime='' or rd.EditDateTime is null)
then cast(stuff(stuff(left(rd.TranscriptionDateTime,12),9,0,' '),12,0,':')as datetime)
else cast(stuff(stuff(left(rd.EditDateTime,12),9,0,' '),12,0,':')as datetime) end as EditDateTime,
rd.UniqueDocumentNumber,rd.ParentDocumentNumber,rd.UniqueDocumentFileName,dcs.DocumentCompletionStatusID,
rd.InsertDate as InsertedDate,
case when cast(v.AdmitDate as time) <='18:00:00' then DateAdd(day, Datediff(day, 0, v.AdmitDate) , 0)else DateAdd(day, Datediff(day, 0, v.AdmitDate)+1 , 0) end as AdmissionDay,
rd.LastModify as ModifiedDate,rd.DocumentData as DocumentData,v.AdmitDate as AdmitDate
from HPMCHL7.dbo.ReportsDPTEPIC rd
inner join HPMCHL7.dbo.patients p on rd.PatientId = p.PatientId and p.SiteId=1
inner join HPMCHL7.dbo.Visits v on p.PatientId = v.PatientID and rd.PatientVisitId = v.PatientVisitId and v.SiteId=1
left join HPMCHL7.dbo.HL7Insurance i on i.PatientId = p.PatientId and i.setId = 1 and i.SiteId=1 and
i.PatientVisitId= case when exists (select 1 from HPMCHL7.dbo.HL7Insurance where PatientVisitId=v.PatientVisitId and SetID=1) then
v.PatientVisitId else 0 end
left join MST_DocumentType wt on wt.DocumentMnemonic = rd.DocumentType
left join MST_DocumentCompletionStatus dcs on dcs.DocumentCompletionStatus=isnull(rd.DocumentCompletionStatus,'DI')
--where rd.reportId in (40289374,40289883) and rd.DocumentData is not null and rd.DocumentData !='null' and rd.DocumentData !='' and rd.siteId=1 order by rd.LastModify
where rd.LastModify>@startTime and rd.DocumentData is not null and rd.DocumentData !='null' and rd.DocumentData !='' and rd.siteId=1 order by rd.Lastmodify
declare @reportid int
declare @AccountNumber varchar(25)
declare @MRN varchar(25)
declare @DocumentTypeID int
declare @AssignedPhysicianId varchar(30)
declare @PhysicianName varchar(80)
declare @ActivityDateTime datetime
declare @OriginationDateTime datetime
declare @TranscriptionDateTime datetime
declare @EditDateTime datetime
declare @UniqueDocumentNumber varchar(100)
declare @ParentDocumentNumber varchar(100)
declare @UniqueDocumentFileName varchar(200)
declare @DocumentCompletionStatusID int
declare @InsertedDate datetime
declare @AdmissionDay datetime
declare @ModifiedDate datetime
declare @DocumentData varchar(MAX)
declare @AdmitDate datetime
open InsertPatientDocument
fetch next from InsertPatientDocument into @reportid,@AccountNumber,@MRN,@DocumentTypeID,@AssignedPhysicianId,@PhysicianName,@ActivityDateTime,
@OriginationDateTime,@TranscriptionDateTime,@EditDateTime,@UniqueDocumentNumber,@ParentDocumentNumber,@UniqueDocumentFileName,
@DocumentCompletionStatusID,@InsertedDate,@AdmissionDay,@ModifiedDate,@DocumentData,@AdmitDate
while (@@fetch_Status<>-1)
begin
IF (@AssignedPhysicianId is not null)
BEGIN
IF CHARINDEX('~',@AssignedPhysicianId,1)>0
SET @AssignedPhysicianId=SUBSTRING(@AssignedPhysicianId,1,CHARINDEX('~',@AssignedPhysicianId)-1)
select top 1 @Phy_LastName=LastName,@Phy_FirstName=FirstName,@Phy_MiddleName=MiddleName
from MST_Physician where PhysicianId=@AssignedPhysicianId
--HIM_Physician Insertion Here...
If not exists(select 1 from HIM_Physician where PhysicianID=@AssignedPhysicianId)
begin
insert into HIM_Physician(PhysicianID,LastName,MiddleName,FirstName)values(@AssignedPhysicianId,@Phy_LastName,@Phy_MiddleName,@Phy_FirstName)
end
END
if exists(select DocumentID from dbo.HIM_Document where DocumentID= @reportid)
begin
Update HIM_Document set DocumentID=@reportid,AccountNumber=@AccountNumber,MRN=@MRN,DocumentTypeID=@DocumentTypeID,
PhysicianID=@AssignedPhysicianId,PhysicianName=@PhysicianName,
ActivityDateTime=dbo.convertTimeZoneToUtc(@TimeZoneName,@ActivityDateTime),
OriginationDateTime=dbo.convertTimeZoneToUtc(@TimeZoneName,@OriginationDateTime),
TranscriptionDateTime=dbo.convertTimeZoneToUtc(@TimeZoneName,@TranscriptionDateTime),
EditDateTime=dbo.convertTimeZoneToUtc(@TimeZoneName,@EditDateTime),
UniqueDocumentNumber=@UniqueDocumentNumber,ParentDocumentNumber=@ParentDocumentNumber,UniqueDocumentFileName=@UniqueDocumentFileName,
DocumentCompletionStatusID=@DocumentCompletionStatusID,DocumentRunningStatusID=0,ModifiedDate=dbo.convertTimeZoneToUtc(@TimeZoneName,@ModifiedDate)
where DocumentID= @reportid
update dbo.HIM_DocumentData set DocumentID=@reportid,Document=@DocumentData,ModifiedDate=getUtcDate() where DocumentID=@reportid
--HospitalDay Update Query
update dbo.HIM_Document set HospitalDay=case when DateAdd(day,Datediff(day,0,@TranscriptionDateTime),0)<DateAdd(day,Datediff(day,0,@AdmitDate),0) then 0
when DATEDIFF(day,@AdmissionDay,@TranscriptionDateTime)<1 then 1 else DATEDIFF(day,@AdmissionDay,@TranscriptionDateTime)+1 end
where DocumentID= @reportid and @TranscriptionDateTime is not null and @AdmitDate is not null
--Update a record in DocumentReviewLog table for Non-Reviewed i.e Reviewed Document again get updated and Re Runned the Document.
Update User_DocumentReview Set ReviewStatus=0,ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber and DocumentId=@reportid and ReviewStatus=1
--LOG_HIM_Document Insertion Here
insert into LOG_HIM_Document(DocumentId,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,LogStatus)
select DocumentId,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,'Update' LogStatus
from HIM_Document where DocumentID=@reportid
end
else
begin
--Otherthan EPIC
insert into dbo.HIM_Document(DocumentID,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,
UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,DocumentRunningStatusID,InsertedDate,ModifiedDate)
values(@reportid,@AccountNumber,@MRN,@DocumentTypeID,@AssignedPhysicianId,@PhysicianName,
dbo.convertTimeZoneToUtc(@TimeZoneName,@ActivityDateTime),dbo.convertTimeZoneToUtc(@TimeZoneName,@OriginationDateTime),
dbo.convertTimeZoneToUtc(@TimeZoneName,@TranscriptionDateTime),dbo.convertTimeZoneToUtc(@TimeZoneName,@EditDateTime),
@UniqueDocumentNumber,@ParentDocumentNumber,@UniqueDocumentFileName,@DocumentCompletionStatusID,0,dbo.convertTimeZoneToUtc(@TimeZoneName,@InsertedDate),dbo.convertTimeZoneToUtc(@TimeZoneName,@Modifieddate))
insert into dbo.HIM_DocumentData(DocumentID,Document)values(@reportid,@DocumentData)
--HospitalDay Update Query
update dbo.HIM_Document set HospitalDay=case when DateAdd(day,Datediff(day,0,@TranscriptionDateTime),0)<DateAdd(day,Datediff(day,0,@AdmitDate),0) then 0
when DATEDIFF(day,@AdmissionDay,@TranscriptionDateTime)<1 then 1 else DATEDIFF(day,@AdmissionDay,@TranscriptionDateTime)+1 end
where DocumentID= @reportid and @TranscriptionDateTime is not null and @AdmitDate is not null
--LOG_HIM_Document Insertion Here
insert into LOG_HIM_Document(DocumentId,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,LogStatus)
select DocumentId,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,'Insert' LogStatus
from HIM_Document where DocumentID=@reportid
end
fetch next from InsertPatientDocument into @reportid,@AccountNumber,@MRN,@DocumentTypeID,@AssignedPhysicianId,@PhysicianName,@ActivityDateTime,
@OriginationDateTime,@TranscriptionDateTime,@EditDateTime,@UniqueDocumentNumber,@ParentDocumentNumber,@UniqueDocumentFileName,
@DocumentCompletionStatusID,@InsertedDate,@AdmissionDay,@ModifiedDate,@DocumentData,@AdmitDate
SET @endTime=convert(varchar,convert(datetime,@ModifiedDate,121),121)
--update OTR_SyncProcess set startdate=@startTime,enddate=@endTime,ModifiedDate=getUtcDate() where SyncProcessID=1 and @endTime is not null and @endTime!='' and @endTime>EndDate
end
update OTR_SyncProcess set startdate=@startTime,enddate=@endTime,ModifiedDate=getUtcDate() where SyncProcessID=1 and @endTime is not null and @endTime!=''
close InsertPatientDocument
deallocate InsertPatientDocument
/*
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','SYNC'
End Catch*/
end
--Exec [SYNC_InsertPatientDocument_Test]
GO
|
======================================================
Procedure Name:SYNC_InsertPatientRADDocument
Description:
with help of this to insert Patient pathalogy reports from HL7Database to local Facility.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[SYNC_InsertPatientRADDocument] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SYNC_InsertPatientRADDocument]
AS
begin
Begin Try
--Begin Transaction
declare @TimeZoneName varchar(10)='IST'
declare @startTime datetime
declare @endTime datetime
declare @Phy_LastName VARCHAR(100)
declare @Phy_MiddleName VARCHAR(100)
declare @Phy_FirstName VARCHAR(100)
declare @TEMP_AssignedPhysicianId VARCHAR(100)
declare @PhysicianID VARCHAR(100)
select @startTime =convert(varchar,convert(datetime,enddate,121),121) from OTR_SyncProcess where SyncProcessID=2
IF(@startTime = '')
set @startTime='1900-01-01 00:00:00.0'
declare InsertPatientRADDocument cursor for
select distinct top 100 rd.reportid,v.AccountNumber,v.MRN,wt.DocumentTypeID as DocumentTypeID,
rd.OrderingProvider as AssignedDocumentAuthenticator,
cast(stuff(stuff(left(rd.RequestedDateTime,12),9,0,' '),12,0,':')as datetime)as ActivityDateTime,
cast(stuff(stuff(left(rd.SpecimenReceivedDateTime,12),9,0,' '),12,0,':')as datetime)as OriginationDateTime,
cast(stuff(stuff(left(rd.ObservationDateTime,12),9,0,' '),12,0,':')as datetime)as TranscriptionDateTime,
case when (rd.ResultStatusChangeDateTime='' or rd.ResultStatusChangeDateTime is null)
then cast(stuff(stuff(left(rd.ObservationDateTime,12),9,0,' '),12,0,':')as datetime)
else cast(stuff(stuff(left(rd.ResultStatusChangeDateTime,12),9,0,' '),12,0,':')as datetime) end as EditDateTime,
rd.FillerOrderNumber as UniqueDocumentNumber,NULL as ParentDocumentNumber,NULL as UniqueDocumentFileName,
dcs.DocumentCompletionStatusID,rd.InsertDate as InsertedDate,
case when cast(v.AdmitDate as time) <='18:00:00' then DateAdd(day, Datediff(day, 0, v.AdmitDate) , 0)else DateAdd(day, Datediff(day, 0, v.AdmitDate)+1 , 0) end as AdmissionDay,
rd.LastModify as ModifiedDate,CONVERT(varchar(max),rd.ReportData) as DocumentData,v.AdmitDate as AdmitDate
from [192.168.50.78].HPMCHL7.dbo.reportsRadreports rd
inner join [192.168.50.78].HPMCHL7.dbo.patients p on rd.PatientId = p.PatientId and p.SiteId=1
inner join [192.168.50.78].HPMCHL7.dbo.Visits v on p.PatientId = v.PatientID and rd.PatientVisitId = v.PatientVisitId and v.SiteId=1
left join [192.168.50.78].HPMCHL7.dbo.HL7Insurance i on i.PatientId = p.PatientId and i.setId = 1 and i.SiteId=1 and
i.PatientVisitId= case when exists (select 1 from [192.168.50.78].HPMCHL7.dbo.HL7Insurance where PatientVisitId=v.PatientVisitId and SetID=1) then
v.PatientVisitId
else 0 end
left join MST_DocumentType wt on wt.DocumentMnemonic = rd.ReportType
left join MST_DocumentCompletionStatus dcs on dcs.DocumentCompletionStatus='DI'
where rd.ReportData is not null and rd.ReportData !='null' and rd.ReportData !='' and rd.LastModify > @startTime
and rd.siteId=1 and rd.observationdatetime!='00000000000000' order by rd.LastModify
declare @reportid int
declare @AccountNumber varchar(25)
declare @MRN varchar(25)
declare @DocumentTypeID int
declare @AssignedPhysicianId varchar(50)
declare @ActivityDateTime datetime
declare @OriginationDateTime datetime
declare @TranscriptionDateTime datetime
declare @EditDateTime datetime
declare @UniqueDocumentNumber varchar(100)
declare @ParentDocumentNumber varchar(100)
declare @UniqueDocumentFileName varchar(200)
declare @DocumentCompletionStatusID int
declare @InsertedDate datetime
declare @AdmissionDay datetime
declare @ModifiedDate datetime
declare @DocumentData varchar(MAX)
declare @AdmitDate datetime
open InsertPatientRADDocument
fetch next from InsertPatientRADDocument into @reportid,@AccountNumber,@MRN,@DocumentTypeID,@AssignedPhysicianId,@ActivityDateTime,
@OriginationDateTime,@TranscriptionDateTime,@EditDateTime,@UniqueDocumentNumber,@ParentDocumentNumber,@UniqueDocumentFileName,
@DocumentCompletionStatusID,@InsertedDate,@AdmissionDay,@ModifiedDate,@DocumentData,@AdmitDate
while (@@fetch_Status<>-1)
begin
SET @TEMP_AssignedPhysicianId=NULL
SET @PhysicianID=NULL
SET @Phy_LastName=NULL
SET @Phy_FirstName=NULL
SET @Phy_MiddleName=NULL
SET @TEMP_AssignedPhysicianId=@AssignedPhysicianId
--PARSE @DoctorId
IF CHARINDEX('^',@TEMP_AssignedPhysicianId,1)>0
BEGIN
SET @PhysicianID=SUBSTRING(@TEMP_AssignedPhysicianId,1,CHARINDEX('^',@TEMP_AssignedPhysicianId)-1)
SET @TEMP_AssignedPhysicianId=SUBSTRING(@TEMP_AssignedPhysicianId,CHARINDEX('^',@TEMP_AssignedPhysicianId)+1,LEN(@TEMP_AssignedPhysicianId))
END
ELSE
BEGIN
SET @PhysicianID=@TEMP_AssignedPhysicianId
SET @TEMP_AssignedPhysicianId=NULL
END
/*
--PARSE @LatName
IF CHARINDEX('^',@TEMP_AssignedPhysicianId,1)>0
BEGIN
SET @Phy_LastName=SUBSTRING(@TEMP_AssignedPhysicianId,1,CHARINDEX('^',@TEMP_AssignedPhysicianId)-1)
SET @TEMP_AssignedPhysicianId=SUBSTRING(@TEMP_AssignedPhysicianId,CHARINDEX('^',@TEMP_AssignedPhysicianId)+1,LEN(@TEMP_AssignedPhysicianId))
END
ELSE
BEGIN
SET @Phy_LastName=@TEMP_AssignedPhysicianId
SET @TEMP_AssignedPhysicianId=NULL
END
--PARSE @FirstName
IF CHARINDEX('^',@TEMP_AssignedPhysicianId,1)>0
BEGIN
SET @Phy_FirstName=SUBSTRING(@TEMP_AssignedPhysicianId,1,CHARINDEX('^',@TEMP_AssignedPhysicianId)-1)
SET @TEMP_AssignedPhysicianId=SUBSTRING(@TEMP_AssignedPhysicianId,CHARINDEX('^',@TEMP_AssignedPhysicianId)+1,LEN(@TEMP_AssignedPhysicianId))
END
ELSE
BEGIN
SET @Phy_FirstName=@TEMP_AssignedPhysicianId
SET @TEMP_AssignedPhysicianId=NULL
END
*/
IF(@PhysicianID='')
SET @PhysicianID=NULL
IF (@PhysicianID is not null)
BEGIN
select top 1 @Phy_LastName=LastName,@Phy_FirstName=FirstName,@Phy_MiddleName=MiddleName
from MST_Physician where PhysicianId=@PhysicianID
--HIM_Physician Insertion Here...
If not exists(select 1 from HIM_Physician where PhysicianID=@PhysicianID)
begin
insert into HIM_Physician(PhysicianID,LastName,MiddleName,FirstName)values(@PhysicianID,@Phy_LastName,@Phy_MiddleName,@Phy_FirstName)
end
END
if exists(select DocumentID from dbo.HIM_Document where DocumentID= @reportid)
begin
--Otherthan EPIC Documents
Update HIM_Document set DocumentID=@reportid,AccountNumber=@AccountNumber,MRN=@MRN,DocumentTypeID=@DocumentTypeID,
PhysicianID=@PhysicianID,
ActivityDateTime=dbo.convertTimeZoneToUtc(@TimeZoneName,@ActivityDateTime),
OriginationDateTime=dbo.convertTimeZoneToUtc(@TimeZoneName,@OriginationDateTime),
TranscriptionDateTime=dbo.convertTimeZoneToUtc(@TimeZoneName,@TranscriptionDateTime),
EditDateTime=dbo.convertTimeZoneToUtc(@TimeZoneName,@EditDateTime),
UniqueDocumentNumber=@UniqueDocumentNumber,
ParentDocumentNumber=@ParentDocumentNumber,UniqueDocumentFileName=@UniqueDocumentFileName,
DocumentCompletionStatusID=@DocumentCompletionStatusID,DocumentRunningStatusID=0,ModifiedDate=dbo.convertTimeZoneToUtc(@TimeZoneName,@ModifiedDate)
where DocumentID= @reportid
update dbo.HIM_DocumentData set DocumentID=@reportid,Document=@DocumentData,ModifiedDate=getUtcDate() where DocumentID= @reportid
--HospitalDay Update Query
update dbo.HIM_Document set HospitalDay=case when DateAdd(day,Datediff(day,0,@TranscriptionDateTime),0)<DateAdd(day,Datediff(day,0,@AdmitDate),0) then 0
when DATEDIFF(day,@AdmissionDay,@TranscriptionDateTime)<1 then 1 else DATEDIFF(day,@AdmissionDay,@TranscriptionDateTime)+1 end
where DocumentID= @reportid and @TranscriptionDateTime is not null and @AdmitDate is not null
--Update a record in DocumentReviewLog table for Non-Reviewed i.e Reviewed Document again get updated and Re Runned the Document.
Update User_DocumentReview Set ReviewStatus=0,ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber and DocumentId=@reportid and ReviewStatus=1
--LOG_HIM_Document Insertion Here
insert into LOG_HIM_Document(DocumentId,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,LogStatus)
select DocumentId,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,'Update' LogStatus
from HIM_Document where DocumentID=@reportid
end
else
begin
--Otherthan EPIC
insert into dbo.HIM_Document(DocumentID,AccountNumber,MRN,DocumentTypeID,PhysicianID,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,
UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,DocumentRunningStatusID,InsertedDate,ModifiedDate)
values(@reportid,@AccountNumber,@MRN,@DocumentTypeID,@PhysicianID,
dbo.convertTimeZoneToUtc(@TimeZoneName,@ActivityDateTime),dbo.convertTimeZoneToUtc(@TimeZoneName,@OriginationDateTime),
dbo.convertTimeZoneToUtc(@TimeZoneName,@TranscriptionDateTime),dbo.convertTimeZoneToUtc(@TimeZoneName,@EditDateTime),
@UniqueDocumentNumber,@ParentDocumentNumber,@UniqueDocumentFileName,@DocumentCompletionStatusID,0,dbo.convertTimeZoneToUtc(@TimeZoneName,@InsertedDate),dbo.convertTimeZoneToUtc(@TimeZoneName,@Modifieddate))
insert into dbo.HIM_DocumentData(DocumentID,Document)values(@reportid,@DocumentData)
--HospitalDay Update Query
update dbo.HIM_Document set HospitalDay=case when DateAdd(day,Datediff(day,0,@TranscriptionDateTime),0)<DateAdd(day,Datediff(day,0,@AdmitDate),0) then 0
when DATEDIFF(day,@AdmissionDay,@TranscriptionDateTime)<1 then 1 else DATEDIFF(day,@AdmissionDay,@TranscriptionDateTime)+1 end
where DocumentID= @reportid and @TranscriptionDateTime is not null and @AdmitDate is not null
--LOG_HIM_Document Insertion Here
insert into LOG_HIM_Document(DocumentId,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,LogStatus)
select DocumentId,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,'Insert' LogStatus
from HIM_Document where DocumentID=@reportid
end
fetch next from InsertPatientRADDocument into @reportid,@AccountNumber,@MRN,@DocumentTypeID,@AssignedPhysicianId,@ActivityDateTime,
@OriginationDateTime,@TranscriptionDateTime,@EditDateTime,@UniqueDocumentNumber,@ParentDocumentNumber,@UniqueDocumentFileName,
@DocumentCompletionStatusID,@InsertedDate,@AdmissionDay,@ModifiedDate,@DocumentData,@AdmitDate
select @endTime=convert(varchar,convert(datetime,@ModifiedDate,121),121)
end
if(@endTime is not null and @endTime!='')
update OTR_SyncProcess set startdate=@startTime,enddate=@endTime,ModifiedDate=getUtcDate() where SyncProcessID=2
close InsertPatientRADDocument
deallocate InsertPatientRADDocument
--Commit Transaction
End Try
Begin Catch
--IF(@@TRANCOUNT>0)
--Rollback Transaction
Exec usp_GetDBErrorInfo 'No Input Params','SYNC'
End Catch
end
--Exec SYNC_InsertPatientRADDocument
GO
|
======================================================
Procedure Name:SYNC_InsertPatientRADDocument_Test
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[SYNC_InsertPatientRADDocument_Test] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SYNC_InsertPatientRADDocument_Test]
AS
begin
--Begin Try
declare @TimeZoneName varchar(10)='IST'
declare @startTime datetime
declare @endTime datetime
declare @Phy_LastName VARCHAR(100)
declare @Phy_MiddleName VARCHAR(100)
declare @Phy_FirstName VARCHAR(100)
declare @TEMP_AssignedPhysicianId VARCHAR(100)
declare @PhysicianID VARCHAR(100)
select @startTime =convert(varchar,convert(datetime,enddate,121),121) from OTR_SyncProcess where SyncProcessID=2
IF(@startTime = '')
set @startTime='1900-01-01 00:00:00.0'
declare InsertPatientRADDocument cursor for
select distinct top 500 rd.reportid,v.AccountNumber,v.MRN,wt.DocumentTypeID as DocumentTypeID,
rd.OrderingProvider as AssignedDocumentAuthenticator,
cast(stuff(stuff(left(rd.RequestedDateTime,12),9,0,' '),12,0,':')as datetime)as ActivityDateTime,
cast(stuff(stuff(left(rd.SpecimenReceivedDateTime,12),9,0,' '),12,0,':')as datetime)as OriginationDateTime,
cast(stuff(stuff(left(rd.ObservationDateTime,12),9,0,' '),12,0,':')as datetime)as TranscriptionDateTime,
case when (rd.ResultStatusChangeDateTime='' or rd.ResultStatusChangeDateTime is null)
then cast(stuff(stuff(left(rd.ObservationDateTime,12),9,0,' '),12,0,':')as datetime)
else cast(stuff(stuff(left(rd.ResultStatusChangeDateTime,12),9,0,' '),12,0,':')as datetime) end as EditDateTime,
rd.FillerOrderNumber as UniqueDocumentNumber,NULL as ParentDocumentNumber,NULL as UniqueDocumentFileName,
dcs.DocumentCompletionStatusID,rd.InsertDate as InsertedDate,
case when cast(v.AdmitDate as time) <='18:00:00' then DateAdd(day, Datediff(day, 0, v.AdmitDate) , 0)else DateAdd(day, Datediff(day, 0, v.AdmitDate)+1 , 0) end as AdmissionDay,
rd.LastModify as ModifiedDate,CONVERT(varchar(max),rd.ReportData) as DocumentData,v.AdmitDate as AdmitDate
from HPMCHL7.dbo.reportsRadreports rd
inner join HPMCHL7.dbo.patients p on rd.PatientId = p.PatientId and p.SiteId=1
inner join HPMCHL7.dbo.Visits v on p.PatientId = v.PatientID and rd.PatientVisitId = v.PatientVisitId and v.SiteId=1
left join HPMCHL7.dbo.HL7Insurance i on i.PatientId = p.PatientId and i.setId = 1 and i.SiteId=1 and
i.PatientVisitId= case when exists (select 1 from HPMCHL7.dbo.HL7Insurance where PatientVisitId=v.PatientVisitId and SetID=1) then
v.PatientVisitId
else 0 end
left join MST_DocumentType wt on wt.DocumentMnemonic=rd.ReportType
left join MST_DocumentCompletionStatus dcs on dcs.DocumentCompletionStatus='DI'
where rd.LastModify>@StartTime and rd.ReportData is not null and rd.ReportData !='null' and rd.ReportData !='' and rd.siteId=1 and rd.observationdatetime!='00000000000000'
order by rd.Lastmodify
declare @reportid int
declare @AccountNumber varchar(25)
declare @MRN varchar(25)
declare @DocumentTypeID int
declare @AssignedPhysicianId varchar(50)
declare @ActivityDateTime datetime
declare @OriginationDateTime datetime
declare @TranscriptionDateTime datetime
declare @EditDateTime datetime
declare @UniqueDocumentNumber varchar(100)
declare @ParentDocumentNumber varchar(100)
declare @UniqueDocumentFileName varchar(200)
declare @DocumentCompletionStatusID int
declare @InsertedDate datetime
declare @AdmissionDay datetime
declare @ModifiedDate datetime
declare @DocumentData varchar(MAX)
declare @AdmitDate datetime
open InsertPatientRADDocument
fetch next from InsertPatientRADDocument into @reportid,@AccountNumber,@MRN,@DocumentTypeID,@AssignedPhysicianId,@ActivityDateTime,
@OriginationDateTime,@TranscriptionDateTime,@EditDateTime,@UniqueDocumentNumber,@ParentDocumentNumber,@UniqueDocumentFileName,
@DocumentCompletionStatusID,@InsertedDate,@AdmissionDay,@ModifiedDate,@DocumentData,@AdmitDate
while (@@fetch_Status<>-1)
begin
SET @TEMP_AssignedPhysicianId=NULL
SET @PhysicianID=NULL
SET @Phy_LastName=NULL
SET @Phy_FirstName=NULL
SET @Phy_MiddleName=NULL
SET @TEMP_AssignedPhysicianId=@AssignedPhysicianId
--PARSE @DoctorId
IF CHARINDEX('^',@TEMP_AssignedPhysicianId,1)>0
BEGIN
SET @PhysicianID=SUBSTRING(@TEMP_AssignedPhysicianId,1,CHARINDEX('^',@TEMP_AssignedPhysicianId)-1)
SET @TEMP_AssignedPhysicianId=SUBSTRING(@TEMP_AssignedPhysicianId,CHARINDEX('^',@TEMP_AssignedPhysicianId)+1,LEN(@TEMP_AssignedPhysicianId))
END
ELSE
BEGIN
SET @PhysicianID=@TEMP_AssignedPhysicianId
SET @TEMP_AssignedPhysicianId=NULL
END
IF(@PhysicianID='')
SET @PhysicianID=NULL
IF (@PhysicianID is not null)
BEGIN
select top 1 @Phy_LastName=LastName,@Phy_FirstName=FirstName,@Phy_MiddleName=MiddleName
from MST_Physician where PhysicianId=@PhysicianID
--HIM_Physician Insertion Here...
If not exists(select 1 from HIM_Physician where PhysicianID=@PhysicianID)
begin
insert into HIM_Physician(PhysicianID,LastName,MiddleName,FirstName)values(@PhysicianID,@Phy_LastName,@Phy_MiddleName,@Phy_FirstName)
end
END
if exists(select DocumentID from dbo.HIM_Document where DocumentID= @reportid)
begin
--Otherthan EPIC Documents
Update HIM_Document set DocumentID=@reportid,AccountNumber=@AccountNumber,MRN=@MRN,DocumentTypeID=@DocumentTypeID,
PhysicianID=@PhysicianID,
ActivityDateTime=dbo.convertTimeZoneToUtc(@TimeZoneName,@ActivityDateTime),
OriginationDateTime=dbo.convertTimeZoneToUtc(@TimeZoneName,@OriginationDateTime),
TranscriptionDateTime=dbo.convertTimeZoneToUtc(@TimeZoneName,@TranscriptionDateTime),
EditDateTime=dbo.convertTimeZoneToUtc(@TimeZoneName,@EditDateTime),
UniqueDocumentNumber=@UniqueDocumentNumber,
ParentDocumentNumber=@ParentDocumentNumber,UniqueDocumentFileName=@UniqueDocumentFileName,
DocumentCompletionStatusID=@DocumentCompletionStatusID,DocumentRunningStatusID=0,ModifiedDate=dbo.convertTimeZoneToUtc(@TimeZoneName,@ModifiedDate)
where DocumentID= @reportid
update dbo.HIM_DocumentData set DocumentID=@reportid,Document=@DocumentData,ModifiedDate=getUtcDate() where DocumentID=@reportid
--HospitalDay Update Query
update dbo.HIM_Document set HospitalDay=case when DateAdd(day,Datediff(day,0,@TranscriptionDateTime),0)<DateAdd(day,Datediff(day,0,@AdmitDate),0) then 0
when DATEDIFF(day,@AdmissionDay,@TranscriptionDateTime)<1 then 1 else DATEDIFF(day,@AdmissionDay,@TranscriptionDateTime)+1 end
where DocumentID= @reportid and @TranscriptionDateTime is not null and @AdmitDate is not null
--Update a record in DocumentReviewLog table for Non-Reviewed i.e Reviewed Document again get updated and Re Runned the Document.
Update User_DocumentReview Set ReviewStatus=0,ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber and DocumentId=@reportid and ReviewStatus=1
--LOG_HIM_Document Insertion Here
insert into LOG_HIM_Document(DocumentId,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,LogStatus)
select DocumentId,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,'Update' LogStatus
from HIM_Document where DocumentID=@reportid
end
else
begin
--Otherthan EPIC
insert into dbo.HIM_Document(DocumentID,AccountNumber,MRN,DocumentTypeID,PhysicianID,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,
UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,DocumentRunningStatusID,InsertedDate,ModifiedDate)
values(@reportid,@AccountNumber,@MRN,@DocumentTypeID,@PhysicianID,
dbo.convertTimeZoneToUtc(@TimeZoneName,@ActivityDateTime),dbo.convertTimeZoneToUtc(@TimeZoneName,@OriginationDateTime),
dbo.convertTimeZoneToUtc(@TimeZoneName,@TranscriptionDateTime),dbo.convertTimeZoneToUtc(@TimeZoneName,@EditDateTime),
@UniqueDocumentNumber,@ParentDocumentNumber,@UniqueDocumentFileName,@DocumentCompletionStatusID,0,dbo.convertTimeZoneToUtc(@TimeZoneName,@InsertedDate),dbo.convertTimeZoneToUtc(@TimeZoneName,@Modifieddate))
insert into dbo.HIM_DocumentData(DocumentID,Document)values(@reportid,@DocumentData)
--HospitalDay Update Query
update dbo.HIM_Document set HospitalDay=case when DateAdd(day,Datediff(day,0,@TranscriptionDateTime),0)<DateAdd(day,Datediff(day,0,@AdmitDate),0) then 0
when DATEDIFF(day,@AdmissionDay,@TranscriptionDateTime)<1 then 1 else DATEDIFF(day,@AdmissionDay,@TranscriptionDateTime)+1 end
where DocumentID= @reportid and @TranscriptionDateTime is not null and @AdmitDate is not null
--LOG_HIM_Document Insertion Here
insert into LOG_HIM_Document(DocumentId,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,LogStatus)
select DocumentId,AccountNumber,MRN,DocumentTypeID,PhysicianID,PhysicianName,ActivityDateTime,OriginationDateTime,TranscriptionDateTime,EditDateTime,UniqueDocumentNumber,ParentDocumentNumber,UniqueDocumentFileName,DocumentCompletionStatusID,'Insert' LogStatus
from HIM_Document where DocumentID=@reportid
end
fetch next from InsertPatientRADDocument into @reportid,@AccountNumber,@MRN,@DocumentTypeID,@AssignedPhysicianId,@ActivityDateTime,
@OriginationDateTime,@TranscriptionDateTime,@EditDateTime,@UniqueDocumentNumber,@ParentDocumentNumber,@UniqueDocumentFileName,
@DocumentCompletionStatusID,@InsertedDate,@AdmissionDay,@ModifiedDate,@DocumentData,@AdmitDate
SET @endTime=convert(varchar,convert(datetime,@ModifiedDate,121),121)
--update OTR_SyncProcess set startdate=@startTime,enddate=@endTime,ModifiedDate=getUtcDate() where SyncProcessID=2 and @endTime>EndDate and @endTime is not null and @endTime!=''
end
update OTR_SyncProcess set startdate=@startTime,enddate=@endTime,ModifiedDate=getUtcDate() where SyncProcessID=2 and @endTime is not null and @endTime!=''
close InsertPatientRADDocument
deallocate InsertPatientRADDocument
/*
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','SYNC'
End Catch
*/
end
--Exec SYNC_InsertPatientRADDocument_Test
GO
|
======================================================
Procedure Name:SYNC_InsertPatientVisitData
Description:
with help of this to insert patient ADT,Visit,DXCodes,PCSCodes and Insurance information from HL7Database to Local Facility.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[SYNC_InsertPatientVisitData] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SYNC_InsertPatientVisitData]
AS
begin
Begin Try
--Begin Transaction
declare @TimeZoneName varchar(10)='IST'
declare @startTime datetime
declare @endTime datetime
select @startTime =convert(varchar,convert(datetime,enddate,121),121) from OTR_SyncProcess where SyncProcessID=3
IF(@startTime = '')
set @startTime='1900-01-01 00:00:00.0'
declare InsertPatientVisitData cursor for
select top 50 AccountNumber,AttendingDoctor,AdmittingDoctor,ReferringDoctor,ConsultingDoctor,LastModify
from [192.168.50.78].HPMCHL7.dbo.Visits where LastModify>@startTime and SiteId=1 order by lastmodify
declare @AccountNumber varchar(50)
declare @AttendingDoctor varchar(100)
declare @AdmittingDoctor varchar(100)
declare @ReferringDoctor varchar(100)
declare @ConsultingDoctor varchar(500)
declare @LastModify datetime
declare @Phy_LastName VARCHAR(100)
declare @Phy_MiddleName VARCHAR(100)
declare @Phy_FirstName VARCHAR(100)
declare @PhysicinaID varchar(50)
open InsertPatientVisitData
fetch next from InsertPatientVisitData into @AccountNumber,@AttendingDoctor,@AdmittingDoctor,@ReferringDoctor,@ConsultingDoctor,@LastModify
while (@@fetch_Status<>-1)
begin
if(@AttendingDoctor is not null and @AttendingDoctor!='')
begin
IF CHARINDEX('^',@AttendingDoctor,1)>0
SET @PhysicinaID=SUBSTRING(@AttendingDoctor,1,CHARINDEX('^',@AttendingDoctor)-1)
select top 1 @Phy_LastName=LastName,@Phy_FirstName=FirstName,@Phy_MiddleName=MiddleName
from MST_Physician where PhysicianId=@PhysicinaID
--HIM_Physician Insertion Here...
If not exists(select 1 from HIM_Physician where PhysicianID=@PhysicinaID)
begin
insert into HIM_Physician(PhysicianID,LastName,MiddleName,FirstName)values(@PhysicinaID,@Phy_LastName,@Phy_MiddleName,@Phy_FirstName)
end
--HIM_Physician_Visit(PhysicianDetails) Insertion Here
Update HIM_Physician_Visit set Active=0,ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber and PhysicianTypeID=1
insert into HIM_Physician_Visit(AccountNumber,PhysicianID,PhysicianTypeID,PhysicianTypeDesc)
values(@AccountNumber,@PhysicinaID,1,'Attending Doctor')
end
if(@AdmittingDoctor is not null and @AdmittingDoctor!='')
begin
IF CHARINDEX('^',@AdmittingDoctor,1)>0
SET @PhysicinaID=SUBSTRING(@AdmittingDoctor,1,CHARINDEX('^',@AdmittingDoctor)-1)
select top 1 @Phy_LastName=LastName,@Phy_FirstName=FirstName,@Phy_MiddleName=MiddleName
from MST_Physician where PhysicianId=@PhysicinaID
--HIM_Physician Insertion Here...
If not exists(select 1 from HIM_Physician where PhysicianID=@PhysicinaID)
begin
insert into HIM_Physician(PhysicianID,LastName,MiddleName,FirstName)values(@PhysicinaID,@Phy_LastName,@Phy_MiddleName,@Phy_FirstName)
end
--HIM_Physician_Visit(PhysicianDetails) Insertion Here
Update HIM_Physician_Visit set Active=0,ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber and PhysicianTypeID=2
insert into HIM_Physician_Visit(AccountNumber,PhysicianID,PhysicianTypeID,PhysicianTypeDesc)
values(@AccountNumber,@PhysicinaID,2,'Admitting Doctor')
end
if(@ReferringDoctor is not null and @ReferringDoctor!='')
begin
IF CHARINDEX('^',@ReferringDoctor,1)>0
SET @PhysicinaID=SUBSTRING(@ReferringDoctor,1,CHARINDEX('^',@ReferringDoctor)-1)
select top 1 @Phy_LastName=LastName,@Phy_FirstName=FirstName,@Phy_MiddleName=MiddleName
from MST_Physician where PhysicianId=@PhysicinaID
--HIM_Physician Insertion Here...
If not exists(select 1 from HIM_Physician where PhysicianID=@PhysicinaID)
begin
insert into HIM_Physician(PhysicianID,LastName,MiddleName,FirstName)values(@PhysicinaID,@Phy_LastName,@Phy_MiddleName,@Phy_FirstName)
end
--HIM_Physician_Visit(PhysicianDetails) Insertion Here
Update HIM_Physician_Visit set Active=0,ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber and PhysicianTypeID=3
insert into HIM_Physician_Visit(AccountNumber,PhysicianID,PhysicianTypeID,PhysicianTypeDesc)
values(@AccountNumber,@PhysicinaID,3,'Referring Doctor')
end
if(@ConsultingDoctor is not null and @ConsultingDoctor!='')
begin
IF CHARINDEX('^',@ConsultingDoctor,1)>0
SET @PhysicinaID=SUBSTRING(@ConsultingDoctor,1,CHARINDEX('^',@ConsultingDoctor)-1)
select top 1 @Phy_LastName=LastName,@Phy_FirstName=FirstName,@Phy_MiddleName=MiddleName
from MST_Physician where PhysicianId=@PhysicinaID
--HIM_Physician Insertion Here...
If not exists(select 1 from HIM_Physician where PhysicianID=@PhysicinaID)
begin
insert into HIM_Physician(PhysicianID,LastName,MiddleName,FirstName)values(@PhysicinaID,@Phy_LastName,@Phy_MiddleName,@Phy_FirstName)
end
--HIM_Physician_Visit(PhysicianDetails) Insertion Here
Update HIM_Physician_Visit set Active=0,ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber and PhysicianTypeID=4
insert into HIM_Physician_Visit(AccountNumber,PhysicianID,PhysicianTypeID,PhysicianTypeDesc)
values(@AccountNumber,@PhysicinaID,4,'Consulting Doctor')
end
fetch next from InsertPatientVisitData into @AccountNumber,@AttendingDoctor,@AdmittingDoctor,@ReferringDoctor,@ConsultingDoctor,@LastModify
select @endTime=convert(varchar,convert(datetime,@LastModify,121),121)
end
close InsertPatientVisitData
deallocate InsertPatientVisitData
update OTR_SyncProcess set startdate=@startTime,enddate=@endTime,ModifiedDate=getUtcDate() where SyncProcessID=3 and @endTime is not null and @endTime!=''
--HIM_Patient
Update HIM_Patient set PatientId=s.PatientId,MRN=s.InternalPatientID,FirstName=s.PatientFirstName,MiddleName=s.PatientMiddleName,
LastName=s.PatientLastName,PatientAddress=s.Patientaddress,
RaceID=case when CHARINDEX('^',s.Race,1)>0 then SUBSTRING(s.Race,1,CHARINDEX('^',s.Race)-1)else s.Race end,
Race=s.Race,DOB=dbo.convertTimeZoneToUtc(@TimeZoneName,s.DOB),Gender=s.Sex,PrimaryLanguage=s.PrimaryLanguage,
MaritalStatus=s.MaritalStatus,Religion=s.Religion,SSNNumber=s.SSNNumber,InsertedDate=dbo.convertTimeZoneToUtc(@TimeZoneName,s.InsertDate),ModifiedDate=dbo.convertTimeZoneToUtc(@TimeZoneName,s.LastModify)
from HIM_Patient L
inner join [192.168.50.78].HPMCHL7.dbo.Patients s on L.PatientId=s.PatientId
where s.lastmodify between @startTime and @endTime
Insert into HIM_Patient(PatientId,MRN,FirstName,MiddleName,LastName,PatientAddress,RaceID,Race,DOB,Gender,PrimaryLanguage,MaritalStatus,Religion,
SSNNumber,InsertedDate,ModifiedDate)
select PatientId,InternalPatientID,PatientFirstName,PatientMiddleName,PatientLastName,PatientAddress,
case when CHARINDEX('^',Race,1)>0 then SUBSTRING(Race,1,CHARINDEX('^',Race)-1)else Race end as RaceID,Race,dbo.convertTimeZoneToUtc(@TimeZoneName,DOB),Sex,PrimaryLanguage,MaritalStatus,
Religion,SSNNumber,dbo.convertTimeZoneToUtc(@TimeZoneName,InsertDate),dbo.convertTimeZoneToUtc(@TimeZoneName,LastModify)
from [192.168.50.78].HPMCHL7.dbo.Patients where PatientId not in (select distinct PatientId from HIM_Patient)
--HIM_Visit
Update HIM_Visit set VisitID=s.PatientVisitId,PatientID=s.PatientID,AccountNumber=s.AccountNumber,MRN=s.MRN,PatientClass=s.PatientClass,
AdmitDate=dbo.convertTimeZoneToUtc(@TimeZoneName,s.AdmitDate),DischargeDate=dbo.convertTimeZoneToUtc(@TimeZoneName,s.DischargeDate),LocationID=s.PLoc_ID,LocationRoom=s.PLoc_Room,LocationBed=s.PLoc_Bed,
AdmissionType=s.AdmissionType,HospitalService=s.HospitalService,AdmitSource=s.AdmitSource,PatientType=s.PatientType,VIPIndicator=s.VIPIndicator,
FinancialClass=s.FinancialClass,DischargeDisposition=s.DischargeDisposition,--ReasonForVisit=s.ReasonForVisit,
ReasonForVisit=REPLACE(s.ReasonForVisit,'^',''),
AdmissionDay=case when cast(S.AdmitDate as time) <='18:00:00' then dbo.convertTimeZoneToUtc(@TimeZoneName,DateAdd(day, Datediff(day, 0, S.AdmitDate) , 0))
else dbo.convertTimeZoneToUtc(@TimeZoneName,DateAdd(day, Datediff(day, 0, S.AdmitDate)+1 , 0)) end,
InsertedDate=dbo.convertTimeZoneToUtc(@TimeZoneName,s.Insertdate),ModifiedDate=dbo.convertTimeZoneToUtc(@TimeZoneName,s.LastModify)
from HIM_Visit L
inner join [192.168.50.78].HPMCHL7.dbo.Visits s on L.AccountNumber=s.AccountNumber and L.VisitID=s.PatientVisitId and L.PatientID=s.PatientID
where s.lastmodify between @startTime and @endTime
Insert into HIM_Visit(VisitID,PatientID,AccountNumber,MRN,PatientClass,AdmitDate,DischargeDate,LocationID,LocationRoom,LocationBed,AdmissionType,
HospitalService,AdmitSource,PatientType,VIPIndicator,FinancialClass,DischargeDisposition,ReasonForVisit,AdmissionDay,InsertedDate,ModifiedDate)
select PatientVisitId,PatientID,AccountNumber,MRN,PatientClass,dbo.convertTimeZoneToUtc(@TimeZoneName,AdmitDate),dbo.convertTimeZoneToUtc(@TimeZoneName,DischargeDate),PLoc_ID,PLoc_Room,PLoc_Bed,AdmissionType,
HospitalService,AdmitSource,PatientType,VIPIndicator,FinancialClass,DischargeDisposition,REPLACE(ReasonForVisit,'^',''),--ReasonForVisit,
case when cast(AdmitDate as time) <='18:00:00' then dbo.convertTimeZoneToUtc(@TimeZoneName,DateAdd(day, Datediff(day, 0, AdmitDate) , 0))
else dbo.convertTimeZoneToUtc(@TimeZoneName,DateAdd(day, Datediff(day, 0, AdmitDate)+1 , 0)) end AdmissionDay,
dbo.convertTimeZoneToUtc(@TimeZoneName,Insertdate),dbo.convertTimeZoneToUtc(@TimeZoneName,LastModify)
from [192.168.50.78].HPMCHL7.dbo.Visits where PatientVisitId not in (select distinct VisitID from HIM_Visit)
--where AccountNumber not in (select distinct AccountNumber from HIM_Visit)
Update HIM_Visit set CancelVisit=1 where VisitID in (select distinct PatientVisitId from [192.168.50.78].HPMCHL7.dbo.CancelVisits)
--HIM_Insurance
delete from HIM_Insurance where InsuranceId not in (select InsuranceId from [192.168.50.78].HPMCHL7.dbo.HL7Insurance)
Insert into HIM_Insurance(InsuranceID,PatientID,VisitID,AccountNumber,SetID,InsurancePlanID,InsuranceCompanyID,InsuranceCompanyName,
PlanEffectiveDate,PlanEndDate,FinalStatus,InsertedDate,ModifiedDate)
select i.InsuranceId,i.PatientId,i.PatientVisitId,v.AccountNumber,i.SetID,i.InsurancePlanID,i.InsuranceCompanyID,i.InsuranceCompanyName,
dbo.convertTimeZoneToUtc(@TimeZoneName,i.PlanEffectiveDate),dbo.convertTimeZoneToUtc(@TimeZoneName,i.PlanExpirationDate),i.isFinal,
dbo.convertTimeZoneToUtc(@TimeZoneName,i.InsertDate),dbo.convertTimeZoneToUtc(@TimeZoneName,i.LastModify)
from [192.168.50.78].HPMCHL7.dbo.Visits v
left join [192.168.50.78].HPMCHL7.dbo.CancelVisits cv on cv.PatientVisitId=v.PatientVisitId
left join [192.168.50.78].HPMCHL7.dbo.HL7Insurance i on v.PatientID=i.PatientId and i.SetID=1 and i.SiteId=1 and
i.PatientVisitId= case when exists (select 1 from [192.168.50.78].HPMCHL7.dbo.HL7Insurance where PatientVisitId=v.PatientVisitId and SetID=1) then
v.PatientVisitId else 0 end
where cv.PatientVisitId is null and i.PatientVisitId<>0 and i.InsuranceId not in (select distinct InsuranceId from HIM_Insurance)
--HIM_DXCode
delete from HIM_DXCode where AccountNumber in(
select distinct V.AccountNumber from [192.168.50.78].HPMCHL7.dbo.HL7Diagnosis d
inner join [192.168.50.78].HPMCHL7.dbo.Visits V on V.Patientvisitid=d.Patientvisitid and d.[Status]=1
where d.lastmodify between @startTime and @endTime)
insert into HIM_DXCode(AccountNumber,DXCode,DXDesc,DXType,DXPriority,DXDate,UserName,InsertedDate,ModifiedDate)
Select distinct V.AccountNumber,dxcode,dxdescription,d.DxType,d.SetId,dbo.convertTimeZoneToUtc(@TimeZoneName,cast(stuff(stuff(left(d.DXDate,12),9,0,' '),12,0,':')as datetime)) as DXDate,
d.oprId,dbo.convertTimeZoneToUtc(@TimeZoneName,d.InsertDate),dbo.convertTimeZoneToUtc(@TimeZoneName,d.LastModify)
from [192.168.50.78].HPMCHL7.dbo.HL7Diagnosis d
inner join [192.168.50.78].HPMCHL7.dbo.Visits V on d.Patientvisitid=V.Patientvisitid and d.Status=1
where d.lastmodify between @startTime and @endTime order by V.AccountNumber,d.SetId
--HIM_PCSCode
delete from HIM_PCSCode where AccountNumber in(
select distinct V.AccountNumber from [192.168.50.78].HPMCHL7.dbo.HL7Procedure p
inner join [192.168.50.78].HPMCHL7.dbo.Visits V on V.Patientvisitid=p.Patientvisitid and p.[Status]=1
where p.lastmodify between @startTime and @endTime)
insert into HIM_PCSCode(AccountNumber,PCSCode,PCSDesc,PCSType,PCSPriority,PCSDate,UserName,InsertedDate,ModifiedDate)
select distinct V.AccountNumber,PxCode,PxDescription,case when p.SetId=1 then 'P' else 'S' end as PXType,p.SetID,
dbo.convertTimeZoneToUtc(@TimeZoneName,cast(stuff(stuff(left(p.PxDateTime,12),9,0,' '),12,0,':')as datetime)) as PXDateTime,p.oprId,
dbo.convertTimeZoneToUtc(@TimeZoneName,p.InsertDate),dbo.convertTimeZoneToUtc(@TimeZoneName,p.LastModify)
from [192.168.50.78].HPMCHL7.dbo.HL7Procedure P
inner join [192.168.50.78].HPMCHL7.dbo.Visits V on P.Patientvisitid=V.Patientvisitid and p.Status=1
where p.lastmodify between @startTime and @endTime order by V.AccountNumber,p.SetId
--POA Update From FTP_DXCode To HIM_DXCode
update HIM_DXCode set POA=fdx.POA from HIM_DXCode hdx
inner join FTP_DXCode fdx on fdx.AccountNumber=hdx.AccountNumber and fdx.DXCode=hdx.DXCode
where hdx.POA is null
--Commit Transaction
End Try
Begin Catch
--IF(@@TRANCOUNT>0)
--Rollback Transaction
Exec usp_GetDBErrorInfo 'No Input Params','SYNC'
End Catch
end
--Exec SYNC_InsertPatientVisitData
GO
|
======================================================
Procedure Name:SYNC_InsertPatientVisitData_Test
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[SYNC_InsertPatientVisitData_Test] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SYNC_InsertPatientVisitData_Test]
AS
begin
--Begin Try
declare @TimeZoneName varchar(10)='IST'
declare @startTime datetime
declare @endTime datetime
select @startTime =convert(varchar,convert(datetime,enddate,121),121) from OTR_SyncProcess where SyncProcessID=3
declare InsertPatientVisitData cursor for
select Top 500 AccountNumber,AttendingDoctor,AdmittingDoctor,ReferringDoctor,ConsultingDoctor,LastModify
from HPMCHL7.dbo.Visits where LastModify>@startTime and SiteId=1 order by lastmodify
declare @AccountNumber varchar(50)
declare @AttendingDoctor varchar(100)
declare @AdmittingDoctor varchar(100)
declare @ReferringDoctor varchar(100)
declare @ConsultingDoctor varchar(500)
declare @LastModify datetime
declare @Phy_LastName VARCHAR(100)
declare @Phy_MiddleName VARCHAR(100)
declare @Phy_FirstName VARCHAR(100)
declare @PhysicinaID varchar(50)
open InsertPatientVisitData
fetch next from InsertPatientVisitData into @AccountNumber,@AttendingDoctor,@AdmittingDoctor,@ReferringDoctor,@ConsultingDoctor,@LastModify
while (@@fetch_Status<>-1)
begin
if(@AttendingDoctor is not null and @AttendingDoctor!='')
begin
IF CHARINDEX('^',@AttendingDoctor,1)>0
SET @PhysicinaID=SUBSTRING(@AttendingDoctor,1,CHARINDEX('^',@AttendingDoctor)-1)
select top 1 @Phy_LastName=LastName,@Phy_FirstName=FirstName,@Phy_MiddleName=MiddleName
from MST_Physician where PhysicianId=@PhysicinaID
--HIM_Physician Insertion Here...
If not exists(select 1 from HIM_Physician where PhysicianID=@PhysicinaID)
begin
insert into HIM_Physician(PhysicianID,LastName,MiddleName,FirstName)values(@PhysicinaID,@Phy_LastName,@Phy_MiddleName,@Phy_FirstName)
end
--HIM_Physician_Visit(PhysicianDetails) Insertion Here
Update HIM_Physician_Visit set Active=0 where AccountNumber=@AccountNumber and PhysicianTypeID=1
insert into HIM_Physician_Visit(AccountNumber,PhysicianID,PhysicianTypeID,PhysicianTypeDesc)
values(@AccountNumber,@PhysicinaID,1,'Attending Doctor')
end
if(@AdmittingDoctor is not null and @AdmittingDoctor!='')
begin
IF CHARINDEX('^',@AdmittingDoctor,1)>0
SET @PhysicinaID=SUBSTRING(@AdmittingDoctor,1,CHARINDEX('^',@AdmittingDoctor)-1)
select top 1 @Phy_LastName=LastName,@Phy_FirstName=FirstName,@Phy_MiddleName=MiddleName
from MST_Physician where PhysicianId=@PhysicinaID
--HIM_Physician Insertion Here...
If not exists(select 1 from HIM_Physician where PhysicianID=@PhysicinaID)
begin
insert into HIM_Physician(PhysicianID,LastName,MiddleName,FirstName)values(@PhysicinaID,@Phy_LastName,@Phy_MiddleName,@Phy_FirstName)
end
--HIM_Physician_Visit(PhysicianDetails) Insertion Here
Update HIM_Physician_Visit set Active=0 where AccountNumber=@AccountNumber and PhysicianTypeID=2
insert into HIM_Physician_Visit(AccountNumber,PhysicianID,PhysicianTypeID,PhysicianTypeDesc)
values(@AccountNumber,@PhysicinaID,2,'Admitting Doctor')
end
if(@ReferringDoctor is not null and @ReferringDoctor!='')
begin
IF CHARINDEX('^',@ReferringDoctor,1)>0
SET @PhysicinaID=SUBSTRING(@ReferringDoctor,1,CHARINDEX('^',@ReferringDoctor)-1)
select top 1 @Phy_LastName=LastName,@Phy_FirstName=FirstName,@Phy_MiddleName=MiddleName
from MST_Physician where PhysicianId=@PhysicinaID
--HIM_Physician Insertion Here...
If not exists(select 1 from HIM_Physician where PhysicianID=@PhysicinaID)
begin
insert into HIM_Physician(PhysicianID,LastName,MiddleName,FirstName)values(@PhysicinaID,@Phy_LastName,@Phy_MiddleName,@Phy_FirstName)
end
--HIM_Physician_Visit(PhysicianDetails) Insertion Here
Update HIM_Physician_Visit set Active=0 where AccountNumber=@AccountNumber and PhysicianTypeID=3
insert into HIM_Physician_Visit(AccountNumber,PhysicianID,PhysicianTypeID,PhysicianTypeDesc)
values(@AccountNumber,@PhysicinaID,3,'Referring Doctor')
end
if(@ConsultingDoctor is not null and @ConsultingDoctor!='')
begin
IF CHARINDEX('^',@ConsultingDoctor,1)>0
SET @PhysicinaID=SUBSTRING(@ConsultingDoctor,1,CHARINDEX('^',@ConsultingDoctor)-1)
select top 1 @Phy_LastName=LastName,@Phy_FirstName=FirstName,@Phy_MiddleName=MiddleName
from MST_Physician where PhysicianId=@PhysicinaID
--HIM_Physician Insertion Here...
If not exists(select 1 from HIM_Physician where PhysicianID=@PhysicinaID)
begin
insert into HIM_Physician(PhysicianID,LastName,MiddleName,FirstName)values(@PhysicinaID,@Phy_LastName,@Phy_MiddleName,@Phy_FirstName)
end
--HIM_Physician_Visit(PhysicianDetails) Insertion Here
Update HIM_Physician_Visit set Active=0 where AccountNumber=@AccountNumber and PhysicianTypeID=4
insert into HIM_Physician_Visit(AccountNumber,PhysicianID,PhysicianTypeID,PhysicianTypeDesc)
values(@AccountNumber,@PhysicinaID,4,'Consulting Doctor')
end
fetch next from InsertPatientVisitData into @AccountNumber,@AttendingDoctor,@AdmittingDoctor,@ReferringDoctor,@ConsultingDoctor,@LastModify
Set @endTime=convert(varchar,convert(datetime,@LastModify,121),121)
end
update OTR_SyncProcess set startdate=@startTime,enddate=@endTime,ModifiedDate=getUtcDate() where SyncProcessID=3 and @endTime is not null and @endTime!=''
close InsertPatientVisitData
deallocate InsertPatientVisitData
/*
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'No Input Params','SYNC'
End Catch
*/
end
--Exec SYNC_InsertPatientVisitData_Test
GO
|
======================================================
Procedure Name:USER_CompleteCDSAudit
Description:
with help of this to move an CDSAuditQueue AccountNumber from CDSAuditQueue to Post Audit Queue.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_CompleteCDSAudit] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 09/08/2019
-- Description: Move Audit to Post Audit Queue
-- =============================================
CREATE PROCEDURE [dbo].[USER_CompleteCDSAudit]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@CDSId int,
@AuditorId int,
@CDSADSID int,
@SuggestionType varchar(150)
AS
Declare @NotificationFormat varchar(250)
SET @NotificationFormat='Your AccountNumber :'+@AccountNumber+' has been Closed by Auditor '+dbo.fngetUserName(@AuditorId,'FullName')
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Update USER_CDSAuditorSuggestions set ClosedStatus=2 where AccountNumber=@AccountNumber and Auditor=@AuditorId
Insert Into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
values(@AccountNumber,@CDSId,@NotificationFormat,'CDSAuditorSuggestion','CDSAuditorSuggestion',@AccountNumber)
Insert Into LOG_USER_CDSAuditorSuggestions(AccountNumber,LogMessage,InsertedBy,MessageTo,ChangeType,SuggestionID)
values(@AccountNumber,@NotificationFormat,@AuditorId,@CDSId,@SuggestionType,@CDSADSID)
END
GO
|
======================================================
Procedure Name:USER_GetCDSAuditorWorkQueue_Assigned
Description:
with help of this to get complete Account Assigned information about CDSAuditorWorkQueue.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetCDSAuditorWorkQueue_Assigned] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 01/08/2019
-- Description: CDSAuditorSuggestions
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetCDSAuditorWorkQueue_Assigned]
-- Add the parameters for the stored procedure here
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@AuditorId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
inner join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
inner join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
/*
inner join (
select distinct hu.HospitalId,ar.ApplicationRoleId,ar.RoleName,hu.ApplicationUserId
from MasterHRCM.dbo.MST_Hospital_User hu
inner join MasterHRCM.dbo.MST_ApplicationRole ar on hu.ApplicationRoleId=ar.ApplicationRoleId and hu.HospitalId=ar.HospitalId
where hu.Active=1 and ar.Active=1) a on User_AssignedAccount.AssignTo=a.ApplicationUserId
*/
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join USER_CDSAuditorSuggestions USER_CDSAuditorSuggestions on HIM_Visit.AccountNumber=USER_CDSAuditorSuggestions.AccountNumber
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join MST_PrimaryDRGGrouper MST_PrimaryDRGGrouper on MST_PrimaryDRGGrouper.PrimaryDRGGrouperId=MST_Insurance_PrimaryDRGGrouper.PrimaryDRGGrouperId
Left join (select distinct AccountNumber,msDrg,msDrgWeight,msDrgGlos,msDrgALOS,soi,rom,msDrgDesc,aprDrg,aprDrgDesc,aprDrgWeight,aprDrgGLOS,aprDrgALOS,
dbo.fnMSDRGSuffix(MSDRGDesc) MSDRGSuffix,dbo.fnMSDRGSuffix(APRDRGDesc) APRDRGSuffix from NLP_DRG) NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join Log_User_AssignedAccount Log_User_AssignedAccount on HIM_Visit.AccountNumber=Log_User_AssignedAccount.AccountNumber and Log_User_AssignedAccount.AssignmentStatus=2 and Log_User_AssignedAccount.Active=1
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,COUNT(distinct DocumentId) TotalRevDocs,ApplicationUserId from User_DocumentReview where ReviewStatus=1 group by AccountNumber,ApplicationUserId)
User_DocumentReview on User_DocumentReview.AccountNumber=HIM_Visit.AccountNumber and User_DocumentReview.ApplicationUserId='+cast(@AuditorId as varchar)+'
left join (select AccountNumber,LOS,case when PrimaryDRGGrouperAliasName=''MSDRG'' then (MSDRGGLOS-LOS) when PrimaryDRGGrouperAliasName=''APRDRG'' then (APRDRGGLOS-LOS) else 0 end OUStay
from DRGView where SourceType=''NLP'') NLP_DRG1 on NLP_DRG1.AccountNumber=HIM_Visit.AccountNumber
left join MasterHrcm.dbo.MST_ApplicationUser MST_ApplicationUser on User_AssignedAccount.AssignTo=MST_ApplicationUser.ApplicationUserId
Left join (select AccountNumber,COUNT(QueryId) QueryCount from USER_Query where QueryStatusId=1 and Active=1 group by AccountNumber) USER_Query on USER_Query.AccountNumber=HIM_Visit.AccountNumber
Left join (
select AccountNumber,
case when MAX(hd.DocumentCompletionStatusID) in (1,2) then ''Final Discharge Summary on ''+dbo.fnFormatDate(MAX(hd.EditDateTime),''MM/DD/YYYY'')
else ''Final Discharge Summary not Updated'' end as DischargeStatus,
case when MAX(hd.DocumentCompletionStatusID) in (1,2) then 0 else 1 end DocStatus
from HIM_Document hd
inner join MST_DocumentType dt on hd.DocumentTypeID=dt.DocumentTypeID
inner join MST_InternalDocumentType idt on dt.InternalDocumentTypeID=idt.InternalDocumentTypeID
where idt.InternalDocumentTypeID=6 --and hd.DocumentCompletionStatusID in (1,2)
group by AccountNumber
) HIM_Document1 on HIM_Document1.AccountNumber=HIM_Visit.AccountNumber
left join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
where User_AssignedAccount.AssignTo='+cast(@AuditorId as varchar)+' --and a.HospitalId='+cast(@HospitalId as varchar)+' and a.ApplicationRoleId in (16,91)
and USER_CDSAuditorSuggestions.AccountNumber is null'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' and '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'CDSAuditorWorkQueue','USER'
End Catch
END
--Exec USER_GetCDSAuditorWorkQueue_Assigned 'HIM_Visit.AccountNumber,NLP_DRG.MSDRGDesc,NLP_DRG.MSDRGSuffix','','',77,1
GO
|
======================================================
Procedure Name:USER_GetCDSAuditorWorkQueue_Auditor
Description:
with help of this to get complete Auditor Account's information to CDSAuditorWorkQueue.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetCDSAuditorWorkQueue_Auditor] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 01/08/2019
-- Description: CDSAuditorSuggestions
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetCDSAuditorWorkQueue_Auditor]
-- Add the parameters for the stored procedure here
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@AuditorId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
inner join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
inner join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
/*
inner join (
select distinct hu.HospitalId,ar.ApplicationRoleId,ar.RoleName,hu.ApplicationUserId
from MasterHRCM.dbo.MST_Hospital_User hu
inner join MasterHRCM.dbo.MST_ApplicationRole ar on hu.ApplicationRoleId=ar.ApplicationRoleId and hu.HospitalId=ar.HospitalId
where hu.Active=1 and ar.Active=1) a on User_AssignedAccount.AssignTo=a.ApplicationUserId
*/
inner join USER_CDSAuditorSuggestions USER_CDSAuditorSuggestions on HIM_Visit.AccountNumber=USER_CDSAuditorSuggestions.AccountNumber
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join MST_PrimaryDRGGrouper MST_PrimaryDRGGrouper on MST_PrimaryDRGGrouper.PrimaryDRGGrouperId=MST_Insurance_PrimaryDRGGrouper.PrimaryDRGGrouperId
Left join (select distinct AccountNumber,msDrg,msDrgWeight,msDrgGlos,msDrgALOS,soi,rom,msDrgDesc,aprDrg,aprDrgDesc,aprDrgWeight,aprDrgGLOS,aprDrgALOS,
dbo.fnMSDRGSuffix(MSDRGDesc) MSDRGSuffix,dbo.fnMSDRGSuffix(APRDRGDesc) APRDRGSuffix from NLP_DRG) NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join Log_User_AssignedAccount Log_User_AssignedAccount on HIM_Visit.AccountNumber=Log_User_AssignedAccount.AccountNumber and Log_User_AssignedAccount.AssignmentStatus=2 and Log_User_AssignedAccount.Active=1
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,COUNT(distinct DocumentId) TotalRevDocs,ApplicationUserId from User_DocumentReview where ReviewStatus=1 group by AccountNumber,ApplicationUserId)
User_DocumentReview on User_DocumentReview.AccountNumber=HIM_Visit.AccountNumber and User_DocumentReview.ApplicationUserId='+cast(@AuditorId as varchar)+'
left join (select AccountNumber,LOS,case when PrimaryDRGGrouperAliasName=''MSDRG'' then (MSDRGGLOS-LOS) when PrimaryDRGGrouperAliasName=''APRDRG'' then (APRDRGGLOS-LOS) else 0 end OUStay
from DRGView where SourceType=''NLP'') NLP_DRG1 on NLP_DRG1.AccountNumber=HIM_Visit.AccountNumber
left join MasterHrcm.dbo.MST_ApplicationUser MST_ApplicationUser on User_AssignedAccount.AssignTo=MST_ApplicationUser.ApplicationUserId
Left join (select AccountNumber,COUNT(QueryId) QueryCount from USER_Query where QueryStatusId=1 and Active=1 group by AccountNumber) USER_Query on USER_Query.AccountNumber=HIM_Visit.AccountNumber
Left join (
select AccountNumber,
case when MAX(hd.DocumentCompletionStatusID) in (1,2) then ''Final Discharge Summary on ''+dbo.fnFormatDate(MAX(hd.EditDateTime),''MM/DD/YYYY'')
else ''Final Discharge Summary not Updated'' end as DischargeStatus,
case when MAX(hd.DocumentCompletionStatusID) in (1,2) then 0 else 1 end DocStatus
from HIM_Document hd
inner join MST_DocumentType dt on hd.DocumentTypeID=dt.DocumentTypeID
inner join MST_InternalDocumentType idt on dt.InternalDocumentTypeID=idt.InternalDocumentTypeID
where idt.InternalDocumentTypeID=6 --and hd.DocumentCompletionStatusID in (1,2)
group by AccountNumber
) HIM_Document1 on HIM_Document1.AccountNumber=HIM_Visit.AccountNumber
left join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
where User_AssignedAccount.AssignTo='+cast(@AuditorId as varchar)+' --and a.HospitalId='+cast(@HospitalId as varchar)+' and a.ApplicationRoleId in (16,91)
and USER_CDSAuditorSuggestions.ClosedStatus=0'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' and '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'CDSAuditorWorkQueue','USER'
End Catch
END
--Exec USER_GetCDSAuditorWorkQueue_Auditor 'HIM_Visit.AccountNumber','','',8,1
GO
|
======================================================
Procedure Name:USER_GetCDSAuditorWorkQueue_CDSAuditor
Description:
with help of this to get complete CDSAuditor Account's information to CDSAuditorWorkQueue.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetCDSAuditorWorkQueue_CDSAuditor] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 01/08/2019
-- Description: CDSAuditorSuggestions
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetCDSAuditorWorkQueue_CDSAuditor]
-- Add the parameters for the stored procedure here
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@CDSId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
inner join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
inner join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
/*
inner join (
select distinct hu.HospitalId,ar.ApplicationRoleId,ar.RoleName,hu.ApplicationUserId
from MasterHRCM.dbo.MST_Hospital_User hu
inner join MasterHRCM.dbo.MST_ApplicationRole ar on hu.ApplicationRoleId=ar.ApplicationRoleId and hu.HospitalId=ar.HospitalId
where hu.Active=1 and ar.Active=1) a on User_AssignedAccount.AssignTo=a.ApplicationUserId
*/
inner join USER_CDSAuditorSuggestions USER_CDSAuditorSuggestions on HIM_Visit.AccountNumber=USER_CDSAuditorSuggestions.AccountNumber
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join MST_PrimaryDRGGrouper MST_PrimaryDRGGrouper on MST_PrimaryDRGGrouper.PrimaryDRGGrouperId=MST_Insurance_PrimaryDRGGrouper.PrimaryDRGGrouperId
Left join (select distinct AccountNumber,msDrg,msDrgWeight,msDrgGlos,msDrgALOS,soi,rom,msDrgDesc,aprDrg,aprDrgDesc,aprDrgWeight,aprDrgGLOS,aprDrgALOS,
dbo.fnMSDRGSuffix(MSDRGDesc) MSDRGSuffix,dbo.fnMSDRGSuffix(APRDRGDesc) APRDRGSuffix from NLP_DRG) NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join Log_User_AssignedAccount Log_User_AssignedAccount on HIM_Visit.AccountNumber=Log_User_AssignedAccount.AccountNumber and Log_User_AssignedAccount.AssignmentStatus=2 and Log_User_AssignedAccount.Active=1
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,COUNT(distinct DocumentId) TotalRevDocs,ApplicationUserId from User_DocumentReview where ReviewStatus=1 group by AccountNumber,ApplicationUserId)
User_DocumentReview on User_DocumentReview.AccountNumber=HIM_Visit.AccountNumber and User_DocumentReview.ApplicationUserId='+cast(@CDSId as varchar)+'
left join (select AccountNumber,LOS,case when PrimaryDRGGrouperAliasName=''MSDRG'' then (MSDRGGLOS-LOS) when PrimaryDRGGrouperAliasName=''APRDRG'' then (APRDRGGLOS-LOS) else 0 end OUStay
from DRGView where SourceType=''NLP'') NLP_DRG1 on NLP_DRG1.AccountNumber=HIM_Visit.AccountNumber
left join MasterHrcm.dbo.MST_ApplicationUser MST_ApplicationUser on User_AssignedAccount.AssignTo=MST_ApplicationUser.ApplicationUserId
Left join (select AccountNumber,COUNT(QueryId) QueryCount from USER_Query where QueryStatusId=1 and Active=1 group by AccountNumber) USER_Query on USER_Query.AccountNumber=HIM_Visit.AccountNumber
Left join (
select AccountNumber,
case when MAX(hd.DocumentCompletionStatusID) in (1,2) then ''Final Discharge Summary on ''+dbo.fnFormatDate(MAX(hd.EditDateTime),''MM/DD/YYYY'')
else ''Final Discharge Summary not Updated'' end as DischargeStatus,
case when MAX(hd.DocumentCompletionStatusID) in (1,2) then 0 else 1 end DocStatus
from HIM_Document hd
inner join MST_DocumentType dt on hd.DocumentTypeID=dt.DocumentTypeID
inner join MST_InternalDocumentType idt on dt.InternalDocumentTypeID=idt.InternalDocumentTypeID
where idt.InternalDocumentTypeID=6 --and hd.DocumentCompletionStatusID in (1,2)
group by AccountNumber
) HIM_Document1 on HIM_Document1.AccountNumber=HIM_Visit.AccountNumber
left join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
where User_AssignedAccount.AssignTo='+cast(@CDSId as varchar)+' --and a.HospitalId='+cast(@HospitalId as varchar)+' and a.ApplicationRoleId in (16,91)
and USER_CDSAuditorSuggestions.ClosedStatus=0'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' and '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'CDSAuditorWorkQueue','USER'
End Catch
END
--Exec USER_GetCDSAuditorWorkQueue_CDSAuditor 'HIM_Visit.AccountNumber','','',8,1
GO
|
======================================================
Procedure Name:USER_GetCDSAuditorWorkQueue_PostAudited
Description:
with help of this to get complete information about Post Audited Accounts.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetCDSAuditorWorkQueue_PostAudited] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 01/08/2019
-- Description: CDSAuditorSuggestions
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetCDSAuditorWorkQueue_PostAudited]
-- Add the parameters for the stored procedure here
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@AuditorId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
inner join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
inner join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
inner join USER_CDSAuditorSuggestions USER_CDSAuditorSuggestions on HIM_Visit.AccountNumber=USER_CDSAuditorSuggestions.AccountNumber
/*
inner join (
select distinct hu.HospitalId,ar.ApplicationRoleId,ar.RoleName,hu.ApplicationUserId
from MasterHRCM.dbo.MST_Hospital_User hu
inner join MasterHRCM.dbo.MST_ApplicationRole ar on hu.ApplicationRoleId=ar.ApplicationRoleId and hu.HospitalId=ar.HospitalId
where hu.Active=1 and ar.Active=1) a on User_AssignedAccount.AssignTo=a.ApplicationUserId
*/
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join MST_PrimaryDRGGrouper MST_PrimaryDRGGrouper on MST_PrimaryDRGGrouper.PrimaryDRGGrouperId=MST_Insurance_PrimaryDRGGrouper.PrimaryDRGGrouperId
Left join (select distinct AccountNumber,msDrg,msDrgWeight,msDrgGlos,msDrgALOS,soi,rom,msDrgDesc,aprDrg,aprDrgDesc,aprDrgWeight,aprDrgGLOS,aprDrgALOS,
dbo.fnMSDRGSuffix(MSDRGDesc) MSDRGSuffix,dbo.fnMSDRGSuffix(APRDRGDesc) APRDRGSuffix from NLP_DRG) NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join Log_User_AssignedAccount Log_User_AssignedAccount on HIM_Visit.AccountNumber=Log_User_AssignedAccount.AccountNumber and Log_User_AssignedAccount.AssignmentStatus=2 and Log_User_AssignedAccount.Active=1
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,COUNT(distinct DocumentId) TotalRevDocs,ApplicationUserId from User_DocumentReview where ReviewStatus=1 group by AccountNumber,ApplicationUserId)
User_DocumentReview on User_DocumentReview.AccountNumber=HIM_Visit.AccountNumber and User_DocumentReview.ApplicationUserId='+cast(@AuditorId as varchar)+'
left join (select AccountNumber,LOS,case when PrimaryDRGGrouperAliasName=''MSDRG'' then (MSDRGGLOS-LOS) when PrimaryDRGGrouperAliasName=''APRDRG'' then (APRDRGGLOS-LOS) else 0 end OUStay
from DRGView where SourceType=''NLP'') NLP_DRG1 on NLP_DRG1.AccountNumber=HIM_Visit.AccountNumber
left join MasterHrcm.dbo.MST_ApplicationUser MST_ApplicationUser on User_AssignedAccount.AssignTo=MST_ApplicationUser.ApplicationUserId
Left join (select AccountNumber,COUNT(QueryId) QueryCount from USER_Query where QueryStatusId=1 and Active=1 group by AccountNumber) USER_Query on USER_Query.AccountNumber=HIM_Visit.AccountNumber
Left join (
select AccountNumber,
case when MAX(hd.DocumentCompletionStatusID) in (1,2) then ''Final Discharge Summary on ''+dbo.fnFormatDate(MAX(hd.EditDateTime),''MM/DD/YYYY'')
else ''Final Discharge Summary not Updated'' end as DischargeStatus,
case when MAX(hd.DocumentCompletionStatusID) in (1,2) then 0 else 1 end DocStatus
from HIM_Document hd
inner join MST_DocumentType dt on hd.DocumentTypeID=dt.DocumentTypeID
inner join MST_InternalDocumentType idt on dt.InternalDocumentTypeID=idt.InternalDocumentTypeID
where idt.InternalDocumentTypeID=6 --and hd.DocumentCompletionStatusID in (1,2)
group by AccountNumber
) HIM_Document1 on HIM_Document1.AccountNumber=HIM_Visit.AccountNumber
left join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
where User_AssignedAccount.AssignTo='+cast(@AuditorId as varchar)+' --and a.HospitalId='+cast(@HospitalId as varchar)+' and a.ApplicationRoleId in (16,91)
and USER_CDSAuditorSuggestions.ClosedStatus=1'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' and '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'CDSAuditorWorkQueue','USER'
End Catch
END
--Exec USER_GetCDSAuditorWorkQueue_PostAudited 'HIM_Visit.AccountNumber,NLP_DRG.MSDRGDesc,NLP_DRG.MSDRGSuffix','','',78,1
GO
|
======================================================
Procedure Name:USER_GetCDSAuditorWorkQueue_SecondLevelAuditor
Description:
with help of this to get complete Account information about SecondLevelAuditor.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetCDSAuditorWorkQueue_SecondLevelAuditor] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 01/08/2019
-- Description: CDSAuditorSuggestions
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetCDSAuditorWorkQueue_SecondLevelAuditor]
-- Add the parameters for the stored procedure here
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@SecondLevelAuditorId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
inner join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
inner join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
/*
inner join (
select distinct hu.HospitalId,ar.ApplicationRoleId,ar.RoleName,hu.ApplicationUserId
from MasterHRCM.dbo.MST_Hospital_User hu
inner join MasterHRCM.dbo.MST_ApplicationRole ar on hu.ApplicationRoleId=ar.ApplicationRoleId and hu.HospitalId=ar.HospitalId
where hu.Active=1 and ar.Active=1) a on User_AssignedAccount.AssignTo=a.ApplicationUserId
*/
inner join USER_CDSAuditorSuggestions USER_CDSAuditorSuggestions on HIM_Visit.AccountNumber=USER_CDSAuditorSuggestions.AccountNumber
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join MST_PrimaryDRGGrouper MST_PrimaryDRGGrouper on MST_PrimaryDRGGrouper.PrimaryDRGGrouperId=MST_Insurance_PrimaryDRGGrouper.PrimaryDRGGrouperId
Left join (select distinct AccountNumber,msDrg,msDrgWeight,msDrgGlos,msDrgALOS,soi,rom,msDrgDesc,aprDrg,aprDrgDesc,aprDrgWeight,aprDrgGLOS,aprDrgALOS,
dbo.fnMSDRGSuffix(MSDRGDesc) MSDRGSuffix,dbo.fnMSDRGSuffix(APRDRGDesc) APRDRGSuffix from NLP_DRG) NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join Log_User_AssignedAccount Log_User_AssignedAccount on HIM_Visit.AccountNumber=Log_User_AssignedAccount.AccountNumber and Log_User_AssignedAccount.AssignmentStatus=2 and Log_User_AssignedAccount.Active=1
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,COUNT(distinct DocumentId) TotalRevDocs,ApplicationUserId from User_DocumentReview where ReviewStatus=1 group by AccountNumber,ApplicationUserId)
User_DocumentReview on User_DocumentReview.AccountNumber=HIM_Visit.AccountNumber and User_DocumentReview.ApplicationUserId='+cast(@SecondLevelAuditorId as varchar)+'
left join (select AccountNumber,LOS,case when PrimaryDRGGrouperAliasName=''MSDRG'' then (MSDRGGLOS-LOS) when PrimaryDRGGrouperAliasName=''APRDRG'' then (APRDRGGLOS-LOS) else 0 end OUStay
from DRGView where SourceType=''NLP'') NLP_DRG1 on NLP_DRG1.AccountNumber=HIM_Visit.AccountNumber
left join MasterHrcm.dbo.MST_ApplicationUser MST_ApplicationUser on User_AssignedAccount.AssignTo=MST_ApplicationUser.ApplicationUserId
Left join (select AccountNumber,COUNT(QueryId) QueryCount from USER_Query where QueryStatusId=1 and Active=1 group by AccountNumber) USER_Query on USER_Query.AccountNumber=HIM_Visit.AccountNumber
Left join (
select AccountNumber,
case when MAX(hd.DocumentCompletionStatusID) in (1,2) then ''Final Discharge Summary on ''+dbo.fnFormatDate(MAX(hd.EditDateTime),''MM/DD/YYYY'')
else ''Final Discharge Summary not Updated'' end as DischargeStatus,
case when MAX(hd.DocumentCompletionStatusID) in (1,2) then 0 else 1 end DocStatus
from HIM_Document hd
inner join MST_DocumentType dt on hd.DocumentTypeID=dt.DocumentTypeID
inner join MST_InternalDocumentType idt on dt.InternalDocumentTypeID=idt.InternalDocumentTypeID
where idt.InternalDocumentTypeID=6 --and hd.DocumentCompletionStatusID in (1,2)
group by AccountNumber
) HIM_Document1 on HIM_Document1.AccountNumber=HIM_Visit.AccountNumber
left join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
where USER_CDSAuditorSuggestions.SecondLevelAuditor is not null and USER_CDSAuditorSuggestions.Auditor is not null and USER_CDSAuditorSuggestions.ClosedStatus=0
--and a.HospitalId='+cast(@HospitalId as varchar)+' and a.ApplicationRoleId in (16,91)'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' and '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'CDSAuditorWorkQueue','USER'
End Catch
END
--Exec USER_GetCDSAuditorWorkQueue_SecondLevelAuditor 'HIM_Visit.AccountNumber','','',8,1
GO
|
======================================================
Procedure Name:USER_GetCDSAuditorWorkQueue_SecondLevelAuditorUA
Description:
with help of this to get complete UnAssigned Account information about SecondLevelAuditor.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetCDSAuditorWorkQueue_SecondLevelAuditorUA] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 21/08/2019
-- Description: CDSAuditorSuggestions
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetCDSAuditorWorkQueue_SecondLevelAuditorUA]
-- Add the parameters for the stored procedure here
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@SecondLevelAuditorId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
inner join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
inner join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
/*
inner join (
select distinct hu.HospitalId,ar.ApplicationRoleId,ar.RoleName,hu.ApplicationUserId
from MasterHRCM.dbo.MST_Hospital_User hu
inner join MasterHRCM.dbo.MST_ApplicationRole ar on hu.ApplicationRoleId=ar.ApplicationRoleId and hu.HospitalId=ar.HospitalId
where hu.Active=1 and ar.Active=1) a on User_AssignedAccount.AssignTo=a.ApplicationUserId
*/
inner join USER_CDSAuditorSuggestions USER_CDSAuditorSuggestions on HIM_Visit.AccountNumber=USER_CDSAuditorSuggestions.AccountNumber
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join MST_PrimaryDRGGrouper MST_PrimaryDRGGrouper on MST_PrimaryDRGGrouper.PrimaryDRGGrouperId=MST_Insurance_PrimaryDRGGrouper.PrimaryDRGGrouperId
Left join (select distinct AccountNumber,msDrg,msDrgWeight,msDrgGlos,msDrgALOS,soi,rom,msDrgDesc,aprDrg,aprDrgDesc,aprDrgWeight,aprDrgGLOS,aprDrgALOS,
dbo.fnMSDRGSuffix(MSDRGDesc) MSDRGSuffix,dbo.fnMSDRGSuffix(APRDRGDesc) APRDRGSuffix from NLP_DRG) NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join Log_User_AssignedAccount Log_User_AssignedAccount on HIM_Visit.AccountNumber=Log_User_AssignedAccount.AccountNumber and Log_User_AssignedAccount.AssignmentStatus=2 and Log_User_AssignedAccount.Active=1
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,COUNT(distinct DocumentId) TotalRevDocs,ApplicationUserId from User_DocumentReview where ReviewStatus=1 group by AccountNumber,ApplicationUserId)
User_DocumentReview on User_DocumentReview.AccountNumber=HIM_Visit.AccountNumber and User_DocumentReview.ApplicationUserId='+cast(@SecondLevelAuditorId as varchar)+'
left join (select AccountNumber,LOS,case when PrimaryDRGGrouperAliasName=''MSDRG'' then (MSDRGGLOS-LOS) when PrimaryDRGGrouperAliasName=''APRDRG'' then (APRDRGGLOS-LOS) else 0 end OUStay
from DRGView where SourceType=''NLP'') NLP_DRG1 on NLP_DRG1.AccountNumber=HIM_Visit.AccountNumber
left join MasterHrcm.dbo.MST_ApplicationUser MST_ApplicationUser on User_AssignedAccount.AssignTo=MST_ApplicationUser.ApplicationUserId
Left join (select AccountNumber,COUNT(QueryId) QueryCount from USER_Query where QueryStatusId=1 and Active=1 group by AccountNumber) USER_Query on USER_Query.AccountNumber=HIM_Visit.AccountNumber
Left join (
select AccountNumber,
case when MAX(hd.DocumentCompletionStatusID) in (1,2) then ''Final Discharge Summary on ''+dbo.fnFormatDate(MAX(hd.EditDateTime),''MM/DD/YYYY'')
else ''Final Discharge Summary not Updated'' end as DischargeStatus,
case when MAX(hd.DocumentCompletionStatusID) in (1,2) then 0 else 1 end DocStatus
from HIM_Document hd
inner join MST_DocumentType dt on hd.DocumentTypeID=dt.DocumentTypeID
inner join MST_InternalDocumentType idt on dt.InternalDocumentTypeID=idt.InternalDocumentTypeID
where idt.InternalDocumentTypeID=6 --and hd.DocumentCompletionStatusID in (1,2)
group by AccountNumber
) HIM_Document1 on HIM_Document1.AccountNumber=HIM_Visit.AccountNumber
left join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
where USER_CDSAuditorSuggestions.SecondLevelAuditor is null and USER_CDSAuditorSuggestions.Auditor is not null and USER_CDSAuditorSuggestions.ClosedStatus=0
and USER_CDSAuditorSuggestions.CDSAgreementType is not null
--and a.HospitalId='+cast(@HospitalId as varchar)+' and a.ApplicationRoleId in (16,91)'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' and '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'CDSAuditorWorkQueue','USER'
End Catch
END
--Exec USER_GetCDSAuditorWorkQueue_SecondLevelAuditorUA 'HIM_Visit.AccountNumber','','',52,1
GO
|
======================================================
Procedure Name:USER_GetCDSAuditorWorkQueue_UnAssigned
Description:
with help of this to get information about UnAssigned Accounts to this Queue.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetCDSAuditorWorkQueue_UnAssigned] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 01/08/2019
-- Description: CDSAuditorSuggestions
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetCDSAuditorWorkQueue_UnAssigned]
-- Add the parameters for the stored procedure here
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@ApplicationUserId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
inner join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
inner join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
inner join User_AssignedAccount_Summary User_AssignedAccount_Summary on User_AssignedAccount.AccountNumber=User_AssignedAccount_Summary.AccountNumber
/*
inner join (
select distinct hu.HospitalId,ar.ApplicationRoleId,ar.RoleName,hu.ApplicationUserId
from MasterHRCM.dbo.MST_Hospital_User hu
inner join MasterHRCM.dbo.MST_ApplicationRole ar on hu.ApplicationRoleId=ar.ApplicationRoleId and hu.HospitalId=ar.HospitalId
where hu.Active=1 and ar.Active=1) a on User_AssignedAccount.AssignTo=a.ApplicationUserID
*/
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join USER_CDSAuditorSuggestions USER_CDSAuditorSuggestions on HIM_Visit.AccountNumber=USER_CDSAuditorSuggestions.AccountNumber
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join MST_PrimaryDRGGrouper MST_PrimaryDRGGrouper on MST_PrimaryDRGGrouper.PrimaryDRGGrouperId=MST_Insurance_PrimaryDRGGrouper.PrimaryDRGGrouperId
Left join (select distinct AccountNumber,msDrg,msDrgWeight,msDrgGlos,msDrgALOS,soi,rom,msDrgDesc,aprDrg,aprDrgDesc,aprDrgWeight,aprDrgGLOS,aprDrgALOS,
dbo.fnMSDRGSuffix(MSDRGDesc) MSDRGSuffix,dbo.fnMSDRGSuffix(APRDRGDesc) APRDRGSuffix from NLP_DRG) NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join Log_User_AssignedAccount Log_User_AssignedAccount on HIM_Visit.AccountNumber=Log_User_AssignedAccount.AccountNumber and Log_User_AssignedAccount.AssignmentStatus=2 and Log_User_AssignedAccount.Active=1
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,COUNT(distinct DocumentId) TotalRevDocs from User_DocumentReview where ReviewStatus=1 group by AccountNumber)
User_DocumentReview on User_DocumentReview.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,LOS,case when PrimaryDRGGrouperAliasName=''MSDRG'' then (MSDRGGLOS-LOS) when PrimaryDRGGrouperAliasName=''APRDRG'' then (APRDRGGLOS-LOS) else 0 end OUStay
from DRGView where SourceType=''NLP'') NLP_DRG1 on NLP_DRG1.AccountNumber=HIM_Visit.AccountNumber
left join MasterHrcm.dbo.MST_ApplicationUser MST_ApplicationUser on User_AssignedAccount.AssignTo=MST_ApplicationUser.ApplicationUserId
Left join (select AccountNumber,COUNT(QueryId) QueryCount from USER_Query where QueryStatusId=1 and Active=1 group by AccountNumber) USER_Query on USER_Query.AccountNumber=HIM_Visit.AccountNumber
Left join (
select AccountNumber,
case when MAX(hd.DocumentCompletionStatusID) in (1,2) then ''Final Discharge Summary on ''+dbo.fnFormatDate(MAX(hd.EditDateTime),''MM/DD/YYYY'')
else ''Final Discharge Summary not Updated'' end as DischargeStatus,
case when MAX(hd.DocumentCompletionStatusID) in (1,2) then 0 else 1 end DocStatus
from HIM_Document hd
inner join MST_DocumentType dt on hd.DocumentTypeID=dt.DocumentTypeID
inner join MST_InternalDocumentType idt on dt.InternalDocumentTypeID=idt.InternalDocumentTypeID
where idt.InternalDocumentTypeID=6 --and hd.DocumentCompletionStatusID in (1,2)
group by AccountNumber
) HIM_Document1 on HIM_Document1.AccountNumber=HIM_Visit.AccountNumber
left join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
--where a.HospitalId='+cast(@HospitalId as varchar)+' and a.ApplicationRoleId=2 and User_BlockedAccount.AccountNumber is null and HIM_Visit.DischargeDate is not null
where HIM_Visit.DischargeDate is not null and User_BlockedAccount.AccountNumber is null and User_AssignedAccount_Summary.CDS is not null and
User_AssignedAccount_Summary.CDSAuditor is null'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' and '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'CDSAuditorWorkQueue','USER'
End Catch
END
--Exec USER_GetCDSAuditorWorkQueue_UnAssigned 'HIM_Visit.AccountNumber,NLP_DRG.MSDRGDesc,NLP_DRG.MSDRGSuffix,HIM_Document1.DischargeStatus,HIM_Document1.DocStatus,HIM_Visit.DischargeDate','HIM_Visit.PatientClass=''I''','HIM_Visit.DischargeDate desc',8,1
GO
|
======================================================
Procedure Name:USER_GetDiscussion
Description:
with help of this to get complete information about User Discussions.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetDiscussion] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 13/05/2019
-- Description: Info about User Discussions based on AccountNumber
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetDiscussion]
-- Add the parameters for the stored procedure here
@DiscussionId int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
WITH DiscussionCTE AS
(
select AccountNumber,DiscussionId,ParentId,Note,InsertedDate,CreatedBy from User_Discussion where DiscussionID=@DiscussionId
UNION ALL
select ud.AccountNumber,ud.DiscussionId,ud.parentId,ud.Note,ud.InsertedDate,ud.CreatedBy
from User_Discussion ud inner join DiscussionCTE dcte on ud.ParentId=dcte.DiscussionId --and ud.Active=1
)
select cte.AccountNumber,cte.DiscussionID,cte.ParentId,cte.Note,cte.InsertedDate,cte.CreatedBy,
dbo.fngetUserName(cte.CreatedBy,'FullName') FromUser,un.NotificationTo,dbo.fngetUserName(un.NotificationTo,'FullName') ToUser,un.NotificationType
from DiscussionCTE cte inner join User_Notification un on cte.DiscussionID=un.SourceId and un.Source='Discussion';
END
--Exec User_GetDiscussion 4
GO
|
======================================================
Procedure Name:USER_GetEventsByAccountNumber
Description:
With help of this to get information about Patient Events based on AccountNumber.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetEventsByAccountNumber] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Krishna Reddy
-- Create date: July 17th 2019
-- Description: To get Events for given account number
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetEventsByAccountNumber]
@AccountNumber varchar(50)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
create table #Events(EventType varchar(50),
EventDescription varchar(500),EventTo varchar(30),EventBy varchar(30),EventTime datetime)
-- 1.Following are HIM Data event log
-- A. Patient Admission
insert into #Events(EventType,EventDescription,EventTo,EventBy,EventTime)
select 'Patient Admission' EventType,'Patient has been admitted with '+visit.ReasonForVisit,'NA' EventTo,
'HIM' EventBy,visit.AdmitDate EventTime
from HIM_Visit visit
where Visit.AccountNumber=@AccountNumber and visit.AdmitDate is not null
-- B. Patient Discharge
insert into #Events(EventType,EventDescription,EventTo,EventBy,EventTime)
select 'Patient Discharge' EventType,'Patient has been discharged','NA' EventTo,
'HIM' EventBy,visit.DischargeDate EventTime
from HIM_Visit visit
where Visit.AccountNumber=@AccountNumber and visit.DischargeDate is not null
-- C. Patient New Document
insert into #Events(EventType,EventDescription,EventTo,EventBy,EventTime)
select 'New Document' EventType,dt.DocumentName+' By '+logDoc.PhysicianName EventDesc,'NA' EventTo,
'HIM' EventBy,logDoc.InsertedDate EventTime
from Log_HIM_Document logDoc
inner join MST_DocumentType dt on dt.DocumentTypeID=logDoc.DocumentTypeId
where logDoc.AccountNumber=@AccountNumber and logDoc.LogStatus='Insert'
-- D. Patient Document Update
insert into #Events(EventType,EventDescription,EventTo,EventBy,EventTime)
select 'Document Update' EventType,dt.DocumentName+' By '+logDoc.PhysicianName EventDesc,'NA' EventTo,
'HIM' EventBy,logDoc.InsertedDate EventTime
from Log_HIM_Document logDoc
inner join MST_DocumentType dt on dt.DocumentTypeID=logDoc.DocumentTypeId
where logDoc.AccountNumber=@AccountNumber and logDoc.LogStatus='Update'
-- E. Patient Financial Class Change
-- NEDD TO WORK ON THIS -----
-- 2.Following are End User Event Log Over Target Account Number
-- A. Account Assignment/Un-assignment Log
insert into #Events(EventType,EventDescription,EventTo,EventBy,EventTime)
select case when assignLog.AssignmentStatus=1 then 'Account Assigned'
else 'Account Un-Assigned' end EventType,
case when assignLog.AssignmentStatus=1 then 'Account has been assigned to '+assignTo.FullName+' by '+assignBy.FullName
else 'Account has been un-assigned from '+assignTo.FullName+' by '+assignBy.FullName end EventDesc,
assignTo.FullName EventTo,assignBy.FullName EventBy,assignLog.InsertedDate EventTime
from LOG_USER_AssignedAccount assignLog
inner join MasterHRCM.dbo.MST_ApplicationUser assignTo on assignTo.ApplicationUserId=assignLog.AssignTo
inner join MasterHRCM.dbo.MST_ApplicationUser assignBy on assignBy.ApplicationUserId=assignLog.AssignedBy
where assignLog.AccountNumber=@AccountNumber
-- B. Account Review Notes by putting notes
insert into #Events(EventType,EventDescription,EventTo,EventBy,EventTime)
select 'Account Review Notes' EventType,'Review note: '+noteLog.Note EventDesc,'NA' EventTo,appUser.FullName EventBy,
noteLog.InsertedDate EventTime
from USER_AccountNote noteLog
inner join MasterHRCM.dbo.MST_ApplicationUser appUser on appUser.ApplicationUserId=noteLog.NoteBy
where noteLog.AccountNumber=@AccountNumber
-- C. Document Review by viewing document
insert into #Events(EventType,EventDescription,EventTo,EventBy,EventTime)
select 'Document Review' EventType,dt.DocumentName EventDesc,'NA' EventTo,appUser.FullName EventBy,
documentReviewLog.InsertedDate EventTime
from USER_DocumentReview documentReviewLog
inner join HIM_Document documnet on documnet.DocumentID=documentReviewLog.DocumentId
and documnet.AccountNumber=documentReviewLog.AccountNumber
inner join MST_DocumentType dt on dt.DocumentTypeID=documnet.DocumentTypeID
inner join MasterHRCM.dbo.MST_ApplicationUser appUser on appUser.ApplicationUserId=documentReviewLog.ApplicationUserId
where documentReviewLog.AccountNumber=@AccountNumber
-- D. ICD Code Edition Log
insert into #Events(EventType,EventDescription,EventTo,EventBy,EventTime)
select 'ICD Code Edition' EventType,
case when dxCodeLog.RStatus=1 then dxCodeLog.DxCode+' ('+ISNULL(CCMCC,'N')+') added'
when dxCodeLog.RStatus=2 then dxCodeLog.DxCode+' ('+ISNULL(CCMCC,'N')+') deleted'
else '' end EventDesc,
'NA' EventTo,appUser.FullName EventBy,dxCodeLog.InsertedDate EventTime
from LOG_USER_DXCode dxCodeLog
inner join MasterHRCM.dbo.MST_ApplicationUser appUser on appUser.ApplicationUserId=dxCodeLog.ApplicationUserId
where dxCodeLog.AccountNumber=@AccountNumber
-- E. PCS Code Edition Log
insert into #Events(EventType,EventDescription,EventTo,EventBy,EventTime)
select 'PCS Code Edition' EventType,
case when pcsCodeLog.RStatus=1 then pcsCodeLog.PCSCode+' added'
when pcsCodeLog.RStatus=2 then pcsCodeLog.PCSCode+' deleted'
else '' end EventDesc,'NA' EventTo,appUser.FullName EventBy,
pcsCodeLog.InsertedDate EventTime
from LOG_USER_PCSCode pcsCodeLog
inner join MasterHRCM.dbo.MST_ApplicationUser appUser on appUser.ApplicationUserId=pcsCodeLog.ApplicationUserId
where pcsCodeLog.AccountNumber=@AccountNumber
-- F. DRG Change Log
insert into #Events(EventType,EventDescription,EventTo,EventBy,EventTime)
select 'DRG Edition' EventType,'MS-DRG: '+drgLog.MSDRG+' | WT:'+cast(drgLog.MSDRGWeight as varchar)+' | GLOS: '+cast(drgLog.MSDRGGLOS as varchar)
+'<br/>'+'APR-DRG: '+drgLog.APRDRG+' | WT: '+cast(drgLog.APRDRGWeight as varchar)+' | GLOS: '+cast(drgLog.APRDRGGLOS as varchar)+'|SOI: '+cast(drgLog.SOI as varchar)+'|ROM: '+cast(drgLog.ROM as varchar)
EventDesc,'NA' EventTo,appUser.FullName EventBy,drgLog.InsertedDate EventTime
from LOG_USER_DRG drgLog
inner join MasterHRCM.dbo.MST_ApplicationUser appUser on appUser.ApplicationUserId=drgLog.ApplicationUserId
where drgLog.AccountNumber=@AccountNumber
-- G. Account On Hold Event By User
insert into #Events(EventType,EventDescription,EventTo,EventBy,EventTime)
select 'Account Holding Status' EventType,
case when holdingLog.HoldStatus=1 then 'Account has been holded with reason:'+holdingLog.Note
else 'Account has been reverted from holding status with reason:'+holdingLog.Note end EventDesc,
'NA' EventTo,appUser.FullName EventBy,holdingLog.InsertedDate EventTime
from LOG_USER_HoldAccount holdingLog
inner join MasterHRCM.dbo.MST_ApplicationUser appUser on appUser.ApplicationUserId=holdingLog.HoldBy
where holdingLog.AccountNumber=@AccountNumber
-- H. Account Closing Event By User
insert into #Events(EventType,EventDescription,EventTo,EventBy,EventTime)
select 'Account Closed Status' EventType,
case when closedLog.ClosedStatus=1 then 'Account has been closed by assignee'
else 'Account has been reverted from closed status' end EventDesc,'NA' EventTo,appUser.FullName EventBy,
closedLog.InsertedDate EventTime
from LOG_USER_ClosedAccount closedLog
inner join MasterHRCM.dbo.MST_ApplicationUser appUser on appUser.ApplicationUserId=closedLog.ClosedBy
where closedLog.AccountNumber=@AccountNumber
-- I. All User Query Event Logs
insert into #Events(EventType,EventDescription,EventTo,EventBy,EventTime)
select 'Query Event' EventType,queryEvent.QueryName+' '+queryEvent.QueryEventDesc EventDesc,'NA' EventTo,appUser.FullName EventBy,
queryEvent.InsertedDate EventTime
from LOG_USER_QueryEvent queryEvent
inner join MasterHRCM.dbo.MST_ApplicationUser appUser on appUser.ApplicationUserId=queryEvent.EventBy
where queryEvent.AccountNumber=@AccountNumber
-- Patient Sumarry Events
--- NEDD TO WORK ON THIS -----
-- Document Update Log
select EventType,EventDescription,EventBy,dbo.fnFormatDate(EventTime,'mm/dd/yyyy hh:mi')
EventTime
from #Events order by EventTime desc
End Try
Begin Catch
Exec usp_GetDBErrorInfo @AccountNumber,'USER'
End Catch
END
--- exec [dbo].[USER_GetEventsByAccountNumber] '350584076'
--select top 10 * from USER_DocumentReview
GO
|
======================================================
Procedure Name:USER_GetEventsByApplicationUserId
Description:
with help of this to get Events of Given user From Current movement to back 48 hours Will use in Home page Recent Activities Table.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetEventsByApplicationUserId] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Krishna Reddy
-- Create date: July 17th 2019
-- Description: To get Events of Given user From Current movement to back 48 hours
-- Will use in Home page Recent Activities Table
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetEventsByApplicationUserId]
@ApplicationUserId int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
select distinct assign.AccountNumber into #TargetAccountNumbers from USER_AssignedAccount assign
inner join MasterHRCM.dbo.MST_ApplicationUser appUser on appUser.ApplicationUserId=assign.AssignTo
left join USER_ClosedAccount closed on closed.AccountNumber=assign.AccountNumber
where assign.AssignTo=@ApplicationUserId and closed.AccountNumber is null
create table #Events(EventType varchar(50), AccountNumber varchar(50),
EventDescription varchar(500),EventTo varchar(30),EventBy varchar(30),EventTime datetime)
-- 1.Following are HIM Data event log
-- A. Patient Discharge
insert into #Events(EventType,AccountNumber,EventDescription,EventTo,EventBy,EventTime)
select 'Patient Discharge' EventType,taccount.AccountNumber,'Patient has been discharged','NA' EventTo,
'HIM' EventBy,visit.DischargeDate EventTime
from #TargetAccountNumbers taccount
inner join HIM_Visit visit on taccount.AccountNumber=visit.AccountNumber
where visit.DischargeDate is not null and datediff(HOUR,visit.DischargeDate, GETUTCDATE())<=48
-- B. Patient New Document -- Only Discharge Document
insert into #Events(EventType,AccountNumber,EventDescription,EventTo,EventBy,EventTime)
select 'New Disscharge Document' EventType,taccount.AccountNumber,dt.DocumentName+' By '+logDoc.PhysicianName EventDesc,'NA' EventTo,
'HIM' EventBy,logDoc.InsertedDate EventTime
from #TargetAccountNumbers taccount
inner join Log_HIM_Document logDoc on logDoc.AccountNumber=taccount.AccountNumber
inner join MST_DocumentType dt on dt.DocumentTypeID=logDoc.DocumentTypeId
where logDoc.LogStatus='Insert' and dt.InternalDocumentTypeID=6
and datediff(HOUR,logdoc.InsertedDate, GETUTCDATE())<=48
-- C. Patient Document Update
insert into #Events(EventType,AccountNumber,EventDescription,EventTo,EventBy,EventTime)
select 'Discharge Document Update' EventType,taccount.AccountNumber,dt.DocumentName+' By '+logDoc.PhysicianName EventDesc,'NA' EventTo,
'HIM' EventBy,logDoc.InsertedDate EventTime
from #TargetAccountNumbers taccount
inner join Log_HIM_Document logDoc on logDoc.AccountNumber=taccount.AccountNumber
inner join MST_DocumentType dt on dt.DocumentTypeID=logDoc.DocumentTypeId
where logDoc.LogStatus='Update' and dt.InternalDocumentTypeID=6
and datediff(HOUR,logdoc.InsertedDate, GETUTCDATE())<=48
-- E. Patient Financial Class Change
-- NEDD TO WORK ON THIS -----
-- 2.Following are End User Event Log Over Target Account Number
-- A. Account Assignment/Un-assignment Log
insert into #Events(EventType,AccountNumber,EventDescription,EventTo,EventBy,EventTime)
select case when assignLog.AssignmentStatus=1 then 'Account Assigned'
else 'Account Un-Assigned' end EventType,taccount.AccountNumber,
case when assignLog.AssignmentStatus=1 then 'Account has been assigned to '+assignTo.FullName+' by '+assignBy.FullName
else 'Account has been un-assigned from '+assignTo.FullName+' by '+assignBy.FullName end EventDesc,
assignTo.FullName EventTo,assignBy.FullName EventBy,assignLog.InsertedDate EventTime
from #TargetAccountNumbers taccount
inner join LOG_USER_AssignedAccount assignLog on assignLog.AccountNumber=taccount.AccountNumber
inner join MasterHRCM.dbo.MST_ApplicationUser assignTo on assignTo.ApplicationUserId=assignLog.AssignTo
inner join MasterHRCM.dbo.MST_ApplicationUser assignBy on assignBy.ApplicationUserId=assignLog.AssignedBy
where datediff(HOUR,assignLog.InsertedDate, GETUTCDATE())<=48
-- B. Account Review Notes by putting notes
insert into #Events(EventType,AccountNumber,EventDescription,EventTo,EventBy,EventTime)
select 'Account Review Notes' EventType,taccount.AccountNumber,'Review note: '+noteLog.Note EventDesc,'NA' EventTo,appUser.FullName EventBy,
noteLog.InsertedDate EventTime
from #TargetAccountNumbers taccount
inner join USER_AccountNote noteLog on noteLog.AccountNumber=taccount.AccountNumber
inner join MasterHRCM.dbo.MST_ApplicationUser appUser on appUser.ApplicationUserId=noteLog.NoteBy
where datediff(HOUR,noteLog.InsertedDate, GETUTCDATE())<=48
-- C. DRG Change Log
insert into #Events(EventType,AccountNumber,EventDescription,EventTo,EventBy,EventTime)
select 'DRG Edition' EventType,taccount.AccountNumber,'MS-DRG: '+drgLog.MSDRG+' | WT:'+cast(drgLog.MSDRGWeight as varchar)+' | GLOS: '+cast(drgLog.MSDRGGLOS as varchar)
+'<br/>'+'APR-DRG: '+drgLog.APRDRG+' | WT: '+cast(drgLog.APRDRGWeight as varchar)+' | GLOS: '+cast(drgLog.APRDRGGLOS as varchar)+'|SOI: '+cast(drgLog.SOI as varchar)+'|ROM: '+cast(drgLog.ROM as varchar)
EventDesc,'NA' EventTo,appUser.FullName EventBy,drgLog.InsertedDate EventTime
from #TargetAccountNumbers taccount
inner join LOG_USER_DRG drgLog on drgLog.AccountNumber=taccount.AccountNumber
inner join MasterHRCM.dbo.MST_ApplicationUser appUser on appUser.ApplicationUserId=drgLog.ApplicationUserId
where datediff(HOUR,drgLog.InsertedDate, GETUTCDATE())<=48
-- D. Account On Hold Event By User
insert into #Events(EventType,AccountNumber,EventDescription,EventTo,EventBy,EventTime)
select 'Account Holding Status' EventType,taccount.AccountNumber,
case when holdingLog.HoldStatus=1 then 'Account has been holded with reason:'+holdingLog.Note
else 'Account has been reverted from holding status with reason:'+holdingLog.Note end EventDesc,
'NA' EventTo,appUser.FullName EventBy,holdingLog.InsertedDate EventTime
from #TargetAccountNumbers taccount
inner join LOG_USER_HoldAccount holdingLog on taccount.AccountNumber=holdingLog.AccountNumber
inner join MasterHRCM.dbo.MST_ApplicationUser appUser on appUser.ApplicationUserId=holdingLog.HoldBy
where datediff(HOUR,holdingLog.InsertedDate, GETUTCDATE())<=48
-- H. Account Closing Event By User
insert into #Events(EventType,AccountNumber,EventDescription,EventTo,EventBy,EventTime)
select 'Account Closed Status' EventType,taccount.AccountNumber,
case when closedLog.ClosedStatus=1 then 'Account has been closed by assignee'
else 'Account has been reverted from closed status' end EventDesc,'NA' EventTo,appUser.FullName EventBy,
closedLog.InsertedDate EventTime
from #TargetAccountNumbers taccount
inner join LOG_USER_ClosedAccount closedLog on closedLog.AccountNumber=taccount.AccountNumber
inner join MasterHRCM.dbo.MST_ApplicationUser appUser on appUser.ApplicationUserId=closedLog.ClosedBy
where datediff(HOUR,closedLog.InsertedDate, GETUTCDATE())<=48
-- I. All User Query Event Logs
insert into #Events(EventType,AccountNumber,EventDescription,EventTo,EventBy,EventTime)
select 'Query Event' EventType,taccount.AccountNumber,queryEvent.QueryName+' '+queryEvent.QueryEventDesc EventDesc,'NA' EventTo,appUser.FullName EventBy,
queryEvent.InsertedDate EventTime
from #TargetAccountNumbers taccount
inner join LOG_USER_QueryEvent queryEvent on queryEvent.AccountNumber=taccount.AccountNumber
inner join MasterHRCM.dbo.MST_ApplicationUser appUser on appUser.ApplicationUserId=queryEvent.EventBy
where datediff(HOUR,queryEvent.InsertedDate, GETUTCDATE())<=48
-- Patient Sumarry Events
--- NEDD TO WORK ON THIS -----
-- Document Update Log
select EventType,AccountNumber,EventDescription,EventBy,dbo.fnFormatDate(EventTime,'mm/dd/yyyy hh:mi')
EventTime
from #Events order by EventTime desc
End Try
Begin Catch
Exec usp_GetDBErrorInfo @ApplicationUserId,'USER'
End Catch
END
--- exec [dbo].[USER_GetEventsByApplicationUserId] 15
GO
|
======================================================
Procedure Name:USER_GetQueriesCount
Description:
with help of this to get queries count information about PendingQueriesCount,DeletedPendingQueriesCount,RespondedQueriesCount,
QueryAlertsCount and DeletedQueryAlertsCount.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetQueriesCount] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 05/07/2019
-- Description: Info about Pending Queries and QueryAlert counts
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetQueriesCount]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
select
(select COUNT(QueryId) from USER_Query where AccountNumber=@AccountNumber and Active=1 and QueryStatusId!=2 group by AccountNumber) as PendingQueriesCount,
(select COUNT(QueryId) from USER_Query where AccountNumber=@AccountNumber and Active=2 group by AccountNumber) as DeletedPendingQueriesCount,
(select COUNT(QueryId) from USER_Query where AccountNumber=@AccountNumber and Active=1 and QueryStatusId=2 group by AccountNumber) as RespondedQueriesCount,
(select COUNT(distinct QueryAlertId) from AQAS_QueryAlertFinalResult where AccountNumber=@AccountNumber and Active=1 group by AccountNumber) as QueryAlertsCount,
(select COUNT(distinct QueryAlertId) from AQAS_QueryAlertFinalResult where AccountNumber=@AccountNumber and Active=2 group by AccountNumber) as DeletedQueryAlertsCount
End Try
Begin Catch
Exec usp_GetDBErrorInfo @AccountNumber,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:USER_GetQueryAlertCriteriaElements
Description:
with help of this to get Query Alert Name and Details based on Account Number.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetQueryAlertCriteriaElements] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: KrishnaReddy
-- Create date: June 13th 2019
-- Description: To get Query Alert Name and Details By Account Number
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetQueryAlertCriteriaElements]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(50),
@QueryAlertId int,
@Active int
AS
Declare @InputParamQry varchar(200)
BEGIN
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'QueryAlertId: '+''+cast(@QueryAlertId as varchar(50))+''+'|'+
'Active: '+''+cast(@Active as varchar(50))+''
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
Select distinct qr.* from AQAS_QueryAlertElementResult qr
inner join MST_QueryAlertCriteriaElementMapping em on em.CriteriaElementMappingId=qr.CriteriaElementMappingId
inner join MST_QueryAlertCriteriaElement el on el.CriteriaElementId=em.CriteriaElementId
left join HIM_Document document on document.AccountNumber=qr.AccountNumber and document.DocumentID=qr.DocumentId
left Join HIM_Physician phy on phy.PhysicianID=document.PhysicianID
where qr.AccountNumber=@AccountNumber and qr.QueryAlertId=@QueryAlertId and qr.Active=@Active
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:USER_GetQueryAlertNames
Description:
with help of this to get QueryAlertNames and its details based on AccountNumber.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetQueryAlertNames] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: KrishnaReddy
-- Create date: June 13th 2019
-- Description: To get Query Alert Name and Details By Account Number
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetQueryAlertNames]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(50),
@Active int
AS
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'Active: '+''+cast(@Active as varchar(50))+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
select Distinct aqaf.AccountNumber,aqaf.QAFinalResultId,aqaf.QueryAlertId,
mst.QueryAlertName,mst.QueryTypeId,mst.QueryDiagnosisId,MIN(aqaf.InsertedDate) InsertedDate, MAX(aqaf.ModifiedDate) ModifiedDate
from AQAS_QueryAlertFinalResult aqaf
inner join MST_QueryAlert mst on mst.QueryAlertId=aqaf.QueryAlertId
where aqaf.AccountNumber=@AccountNumber and aqaf.Active=@Active
group by aqaf.AccountNumber,aqaf.QAFinalResultId,aqaf.QueryAlertId,
mst.QueryAlertName,mst.QueryTypeId,mst.QueryDiagnosisId
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:USER_GetRespondedQueries
Description:
with help of this to get information about User Responded queries.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetRespondedQueries] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: A.Srinivas
-- Create date: 25/06/1983
-- Description: Getting User Responded Queries
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetRespondedQueries]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@QueryId int
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'QueryId: '+''+cast(@QueryId as varchar(50))+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
/*
select distinct qr.*,STUFF((select ','+cast(SecondaryResponseImpactId as varchar(10)) from USER_QueryResponseSecondaryImpact where AccountNumber=@AccountNumber and QueryId=@QueryId for xml path(''))
,1,1,'')SecondaryResponseImpactIds,d1.MSDRG PreMSDRG,d1.MSDRGDesc PreMSDRGDesc,d1.MSDRGWeight PreMSDRGWeight,d1.MSDRGGLOS PreMSDRGGLOS,d1.MSDRGALOS PreMSDRGALOS,
d1.APRDRG PreAPRDRG,d1.APRDRGDesc PreAPRDRGDesc,d1.APRDRGWeight PreAPRDRGWeight,d1.APRDRGGLOS PreAPRDRGGLOS,d1.APRDRGALOS PreAPRDRGALOS,d1.SOI PreSOI,d1.ROM PreROM,
d2.MSDRG PostMSDRG,d2.MSDRGDesc PostMSDRGDesc,d2.MSDRGWeight PostMSDRGWeight,d2.MSDRGGLOS PostMSDRGGLOS,d2.MSDRGALOS PostMSDRGALOS,d2.APRDRG PostAPRDRG,d2.APRDRGDesc PostAPRDRGDesc,
d2.APRDRGWeight PostAPRDRGWeight,d2.APRDRGGLOS PostAPRDRGGLOS,d2.APRDRGALOS PostAPRDRGALOS,d2.SOI PostSOI,d2.ROM PostROM
from USER_QueryResponse qr
inner join LOG_USER_DRG d1 on qr.AccountNumber=d1.AccountNumber and qr.PreQueryDrgId=d1.DRGID
inner join LOG_USER_DRG d2 on qr.AccountNumber=d2.AccountNumber and qr.PostQueryDrgId=d2.DRGID
where qr.AccountNumber=@AccountNumber and QueryId=@QueryId
*/
select distinct qr.*,d1.MSDRG PreMSDRG,d1.MSDRGDesc PreMSDRGDesc,d1.MSDRGWeight PreMSDRGWeight,d1.MSDRGGLOS PreMSDRGGLOS,d1.MSDRGALOS PreMSDRGALOS,
d1.APRDRG PreAPRDRG,d1.APRDRGDesc PreAPRDRGDesc,d1.APRDRGWeight PreAPRDRGWeight,d1.APRDRGGLOS PreAPRDRGGLOS,d1.APRDRGALOS PreAPRDRGALOS,d1.SOI PreSOI,d1.ROM PreROM,
d2.MSDRG PostMSDRG,d2.MSDRGDesc PostMSDRGDesc,d2.MSDRGWeight PostMSDRGWeight,d2.MSDRGGLOS PostMSDRGGLOS,d2.MSDRGALOS PostMSDRGALOS,d2.APRDRG PostAPRDRG,d2.APRDRGDesc PostAPRDRGDesc,
d2.APRDRGWeight PostAPRDRGWeight,d2.APRDRGGLOS PostAPRDRGGLOS,d2.APRDRGALOS PostAPRDRGALOS,d2.SOI PostSOI,d2.ROM PostROM,phy.FirstName+' '+phy.LastName physicianName
from USER_QueryResponse qr
inner join LOG_USER_DRG d1 on qr.AccountNumber=d1.AccountNumber and qr.PreQueryDrgId=d1.DRGID
inner join LOG_USER_DRG d2 on qr.AccountNumber=d2.AccountNumber and qr.PostQueryDrgId=d2.DRGID
inner join MST_Physician phy on phy.PhysicianID=qr.ResponseBy
where qr.AccountNumber=@AccountNumber and QueryId=@QueryId and qr.Active=1
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'USER'
End Catch
END
--Exec USER_GetRespondedQueries '350585553',74
GO
|
======================================================
Procedure Name:USER_GetWorkQueue_Blocked
Description:
with help of this to get Account information about Blocked to this queue.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetWorkQueue_Blocked] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 01/04/2019
-- Description: DynamicQueryReport Generation
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetWorkQueue_Blocked]
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@ApplicationUserId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
--SET NOCOUNT ON;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
inner join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
inner join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
inner join User_AccountNote User_AccountNote on HIM_Visit.AccountNumber=User_AccountNote.AccountNumber
--left join User_FollowupAccount User_FollowupAccount on HIM_Visit.AccountNumber=User_FollowupAccount.AccountNumber and User_FollowupAccount.Active=1 --At present there is no Followupdate Column to BlockedQueue
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join MST_PrimaryDRGGrouper MST_PrimaryDRGGrouper on MST_PrimaryDRGGrouper.PrimaryDRGGrouperId=MST_Insurance_PrimaryDRGGrouper.PrimaryDRGGrouperId
left join NLP_DRG NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join MST_HospitalService MST_HospitalService on HIM_Visit.HospitalService=MST_HospitalService.HospitalServiceCode
left join FTP_DXCode FTP_DXCode on HIM_Visit.AccountNumber=FTP_DXCode.AccountNumber
left join User_HoldAccount User_HoldAccount on HIM_Visit.AccountNumber=User_HoldAccount.AccountNumber
left join User_ClosedAccount User_ClosedAccount on HIM_Visit.AccountNumber=User_ClosedAccount.AccountNumber
left join HIM_Document HIM_Document1 on HIM_Visit.AccountNumber=HIM_Document1.AccountNumber and HIM_Document1.DocumentTypeId=6
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,COUNT(distinct DocumentId) TotalRevDocs,ApplicationUserId from User_DocumentReview where ReviewStatus=1 group by AccountNumber,ApplicationUserId)
User_DocumentReview on User_DocumentReview.AccountNumber=HIM_Visit.AccountNumber and User_DocumentReview.ApplicationUserId='+cast(@ApplicationUserId as varchar)+'
left join (select AccountNumber,LOS,case when PrimaryDRGGrouperAliasName=''MSDRG'' then (MSDRGGLOS-LOS) when PrimaryDRGGrouperAliasName=''APRDRG'' then (APRDRGGLOS-LOS) else 0 end OUStay
from DRGView where SourceType=''NLP'') NLP_DRG1 on NLP_DRG1.AccountNumber=HIM_Visit.AccountNumber
left join MasterHrcm.dbo.MST_ApplicationUser MST_ApplicationUser on User_AssignedAccount.AssignTo=MST_ApplicationUser.ApplicationUserId
where User_AssignedAccount.AssignTo='+cast(@ApplicationUserId as varchar)+' and User_ClosedAccount.AccountNumber is null
and User_HoldAccount.AccountNumber is null'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' and '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'WorkQueue_Blocked','USER'
End Catch
END
--Exec User_GetWorkQueue_Blocked 'HIM_Visit.AccountNumber,HIM_Visit.AdmitDate','','',15
GO
|
======================================================
Procedure Name:USER_GetWorkQueue_Closed
Description:
with help of this to get Account information about Closed to this queue.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetWorkQueue_Closed] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 01/04/2019
-- Description: DynamicQueryReport Generation
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetWorkQueue_Closed]
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@ApplicationUserId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
--SET NOCOUNT ON;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
inner join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
inner join User_ClosedAccount User_ClosedAccount on HIM_Visit.AccountNumber=User_ClosedAccount.AccountNumber
inner join User_AccountNote User_AccountNote on HIM_Visit.AccountNumber=User_AccountNote.AccountNumber
--left join User_FollowupAccount User_FollowupAccount on HIM_Visit.AccountNumber=User_FollowupAccount.AccountNumber and User_FollowupAccount.Active=1 --At present there is no Followupdate Column to ClosedQueue
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join MST_PrimaryDRGGrouper MST_PrimaryDRGGrouper on MST_PrimaryDRGGrouper.PrimaryDRGGrouperId=MST_Insurance_PrimaryDRGGrouper.PrimaryDRGGrouperId
left join NLP_DRG NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join MST_HospitalService MST_HospitalService on HIM_Visit.HospitalService=MST_HospitalService.HospitalServiceCode
left join FTP_DXCode FTP_DXCode on HIM_Visit.AccountNumber=FTP_DXCode.AccountNumber
left join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
left join User_HoldAccount User_HoldAccount on HIM_Visit.AccountNumber=User_HoldAccount.AccountNumber
left join HIM_Document HIM_Document1 on HIM_Visit.AccountNumber=HIM_Document1.AccountNumber and HIM_Document1.DocumentTypeId=6
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,COUNT(distinct DocumentId) TotalRevDocs,ApplicationUserId from User_DocumentReview where ReviewStatus=1 group by AccountNumber,ApplicationUserId)
User_DocumentReview on User_DocumentReview.AccountNumber=HIM_Visit.AccountNumber and User_DocumentReview.ApplicationUserId='+cast(@ApplicationUserId as varchar)+'
left join (select AccountNumber,LOS,case when PrimaryDRGGrouperAliasName=''MSDRG'' then (MSDRGGLOS-LOS) when PrimaryDRGGrouperAliasName=''APRDRG'' then (APRDRGGLOS-LOS) else 0 end OUStay
from DRGView where SourceType=''NLP'') NLP_DRG1 on NLP_DRG1.AccountNumber=HIM_Visit.AccountNumber
left join MasterHrcm.dbo.MST_ApplicationUser MST_ApplicationUser on User_AssignedAccount.AssignTo=MST_ApplicationUser.ApplicationUserId
where User_AssignedAccount.AssignTo='+cast(@ApplicationUserId as varchar)+'
and HIM_Visit.DischargeDate is not null and User_BlockedAccount.AccountNumber is null and User_HoldAccount.AccountNumber is null'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' and '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'WorkQueue_Closed','USER'
End Catch
END
--Exec User_GetWorkQueue_Closed 'HIM_Visit.AccountNumber,HIM_Visit.AdmitDate,NLP_DRG1.LOS,MST_ApplicationUser.FullName','','',15
GO
|
======================================================
Procedure Name:USER_GetWorkQueue_Count
Description:
with help of this to get All User workqueue counts related information.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetWorkQueue_Count] Script Date: 08/23/2019 14:58:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 09/04/2018
-- Description: WorkQueueCounts
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetWorkQueue_Count]
-- Add the parameters for the stored procedure here
@ApplicationUserId int,
@HospitalId int
AS
BEGIN
SET NOCOUNT OFF;
Begin Try
/*
Create Table #Counts(UnAssigned int,NonReviewed int,Followups int,InProgress int,Discharged int,Reminders int);
--Intial entries
insert into #Counts Select 0,0,0,0,0,0
--UnAssigned Accounts Count
Update #Counts set UnAssigned=(
select COUNT(distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
left join FTP_DXCode dx on v.AccountNumber=dx.AccountNumber
left join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
left join User_BlockedAccount uba on v.AccountNumber=uba.AccountNumber
where uaa.AccountNumber is null and uba.AccountNumber is null)
*/
--UnAssigned Accounts Count
Update USER_WorkQueue_Count set QueueCount=(
select COUNT(distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
left join FTP_DXCode dx on v.AccountNumber=dx.AccountNumber
left join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
left join User_BlockedAccount uba on v.AccountNumber=uba.AccountNumber
where uaa.AccountNumber is null and uba.AccountNumber is null),ModifiedDate=GETUTCDATE()
where PageId=189
--NonReviewed Accounts Count
Update USER_WorkQueue_Count set QueueCount=(
select COUNT(distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
inner join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
left join User_AccountNote uan on v.AccountNumber=uan.AccountNumber and uan.NoteBy=@ApplicationUserId
left join User_FollowupAccount ufa on v.AccountNumber=ufa.AccountNumber
and Convert(datetime,CONVERT(varchar(10),ufa.FollowupDate,20))=Convert(datetime,CONVERT(varchar(10),getDate(),20)) and ufa.Active=1
left join User_BlockedAccount uba on v.AccountNumber=uba.AccountNumber
left join User_ClosedAccount uca on v.AccountNumber=uca.AccountNumber
left join User_HoldAccount uha on v.AccountNumber=uha.AccountNumber
where uaa.AssignTo=@ApplicationUserId and uca.AccountNumber is null and uan.AccountNumber is null and ufa.AccountNumber is null and uba.AccountNumber is null
and uha.AccountNumber is null),ModifiedDate=GETUTCDATE()
where PageId=190
--Followups Accounts Count
Update USER_WorkQueue_Count set QueueCount=(
select COUNT(distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
inner join User_FollowupAccount ufa on v.AccountNumber=ufa.AccountNumber
and Convert(datetime,CONVERT(varchar(10),ufa.followupdate,20))=Convert(datetime,CONVERT(varchar(10),getDate(),20)) and ufa.Active=1
inner join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
inner join User_AccountNote uan on v.AccountNumber=uan.AccountNumber
left join User_BlockedAccount uba on v.AccountNumber=uba.AccountNumber
left join User_ClosedAccount uca on v.AccountNumber=uca.AccountNumber
left join User_HoldAccount uha on v.AccountNumber=uha.AccountNumber
where uaa.AssignTo=@ApplicationUserId and uba.AccountNumber is null and uca.AccountNumber is null
and uha.AccountNumber is null),ModifiedDate=GETUTCDATE()
where PageId=191
--InProgress Accounts Count
Update USER_WorkQueue_Count set QueueCount=(
select COUNT(distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
inner join User_AccountNote uan on v.AccountNumber=uan.AccountNumber
inner join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
left join User_FollowupAccount ufa on v.AccountNumber=ufa.AccountNumber
and Convert(datetime,CONVERT(varchar(10),ufa.followupdate,20))=Convert(datetime,CONVERT(varchar(10),getDate(),20)) and ufa.Active=1
left join User_BlockedAccount uba on v.AccountNumber=uba.AccountNumber
left join User_ClosedAccount uca on v.AccountNumber=uca.AccountNumber
left join User_HoldAccount uha on v.AccountNumber=uha.AccountNumber
where uaa.AssignTo=@ApplicationUserId and v.DischargeDate is null and uca.AccountNumber is null and uba.AccountNumber is null and ufa.AccountNumber is null
and uha.AccountNumber is null)
,ModifiedDate=GETUTCDATE()
where PageId=192
--Discharged Accounts Count
Update USER_WorkQueue_Count set QueueCount=(
select COUNT(distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
inner join User_AccountNote uan on v.AccountNumber=uan.AccountNumber
inner join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
left join User_FollowupAccount ufa on v.AccountNumber=ufa.AccountNumber and ufa.Active=1
left join User_BlockedAccount uba on v.AccountNumber=uba.AccountNumber
left join User_ClosedAccount uca on v.AccountNumber=uca.AccountNumber
left join User_HoldAccount uha on v.AccountNumber=uha.AccountNumber
where uaa.AssignTo=@ApplicationUserId and v.DischargeDate is not null and uca.AccountNumber is null and uba.AccountNumber is null
and uha.AccountNumber is null and ufa.AccountNumber is null and
(ufa.AccountNumber is not null and Convert(datetime,CONVERT(varchar(10),ufa.FollowupDate,20))<>Convert(datetime,CONVERT(varchar(10),getDate(),20)) OR ufa.AccountNumber is null)),
ModifiedDate=GETUTCDATE()
where PageId=193
--On-Hold Accounts Count
Update USER_WorkQueue_Count set QueueCount=(
select COUNT(distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
inner join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
inner join User_AccountNote uan on v.AccountNumber=uan.AccountNumber
inner join User_HoldAccount uha on v.AccountNumber=uha.AccountNumber
left join User_BlockedAccount uba on v.AccountNumber=uba.AccountNumber
left join User_ClosedAccount uca on v.AccountNumber=uca.AccountNumber
where uaa.AssignTo=@ApplicationUserId and uca.AccountNumber is null and uba.AccountNumber is null),ModifiedDate=GETUTCDATE()
where PageId=194
--Closed Accounts Count
Update USER_WorkQueue_Count set QueueCount=(
select COUNT(distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
inner join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
inner join User_AccountNote uan on v.AccountNumber=uan.AccountNumber
inner join User_ClosedAccount uca on v.AccountNumber=uca.AccountNumber
left join User_HoldAccount uha on v.AccountNumber=uha.AccountNumber
left join User_BlockedAccount uba on v.AccountNumber=uba.AccountNumber
where uaa.AssignTo=@ApplicationUserId and v.DischargeDate is not null and uba.AccountNumber is null and uha.AccountNumber is null),ModifiedDate=GETUTCDATE()
where PageId=195
--Blocked Accounts Count
Update USER_WorkQueue_Count set QueueCount=(
select COUNT(distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
inner join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
inner join User_AccountNote uan on v.AccountNumber=uan.AccountNumber
inner join User_BlockedAccount uba on v.AccountNumber=uba.AccountNumber
left join User_ClosedAccount uca on v.AccountNumber=uca.AccountNumber
left join User_HoldAccount uha on v.AccountNumber=uha.AccountNumber
where uaa.AssignTo=@ApplicationUserId and uca.AccountNumber is null and uha.AccountNumber is null),ModifiedDate=GETUTCDATE()
where PageId=220
--Reminders Accounts Count
Update USER_WorkQueue_Count set QueueCount=(
select COUNT(distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
inner join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
inner join User_AccountReminder uar on v.AccountNumber=uar.AccountNumber
left join User_BlockedAccount uba on v.AccountNumber=uba.AccountNumber
left join User_ClosedAccount uca on v.AccountNumber=uca.AccountNumber
left join User_HoldAccount uha on v.AccountNumber=uha.AccountNumber
where uaa.AssignTo=@ApplicationUserId and uca.AccountNumber is null and uha.AccountNumber is null and uba.AccountNumber is null),ModifiedDate=GETUTCDATE()
where PageId=221
--CDS Auditor UnAssigned Accounts Count
Update USER_WorkQueue_Count set QueueCount=(
Select count(Distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
inner join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
inner join User_AssignedAccount_Summary uaas on uaas.AccountNumber=uaa.AccountNumber
left join User_BlockedAccount uba on v.AccountNumber=uba.AccountNumber
where v.DischargeDate is not null and uba.AccountNumber is null and uaas.CDS is not null and uaas.CDSAuditor is null),ModifiedDate=GETUTCDATE()
where PageId=259
--CDS Auditor Assigned Accounts Count
Update USER_WorkQueue_Count set QueueCount=(
Select count(Distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
inner join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
left join USER_CDSAuditorSuggestions cas on v.AccountNumber=cas.AccountNumber
where uaa.AssignTo=@ApplicationUserId and cas.AccountNumber is null),ModifiedDate=GETUTCDATE()
where PageId=261
--CDS Auditor Audited Accounts Count
Update USER_WorkQueue_Count set QueueCount=(
Select count(Distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
inner join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
inner join USER_CDSAuditorSuggestions cas on v.AccountNumber=cas.AccountNumber
where uaa.AssignTo=@ApplicationUserId and cas.ClosedStatus=0),ModifiedDate=GETUTCDATE()
where PageId=260
--CDS Auditor CDS Accounts Count
Update USER_WorkQueue_Count set QueueCount=(
Select count(Distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
inner join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
inner join USER_CDSAuditorSuggestions cas on v.AccountNumber=cas.AccountNumber
where uaa.AssignTo=@ApplicationUserId and cas.ClosedStatus=0),ModifiedDate=GETUTCDATE()
where PageId=271
--CDS Auditor Post Audited Accounts Count
Update USER_WorkQueue_Count set QueueCount=(
Select count(Distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
inner join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
inner join USER_CDSAuditorSuggestions cas on v.AccountNumber=cas.AccountNumber
where uaa.AssignTo=@ApplicationUserId and cas.ClosedStatus=1),ModifiedDate=GETUTCDATE()
where PageId=262
--SecondLevel Auditor Escalated Count
Update USER_WorkQueue_Count set QueueCount=(
Select count(Distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
inner join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
inner join USER_CDSAuditorSuggestions cas on v.AccountNumber=cas.AccountNumber
where cas.Auditor is not null and cas.SecondLevelAuditor is not null and cas.ClosedStatus=0),ModifiedDate=GETUTCDATE()
where PageId=279
--SecondLevel Auditor Not Escalated Count UnAssigned
Update USER_WorkQueue_Count set QueueCount=(
Select count(Distinct v.AccountNumber)
from HIM_Visit v
inner join HospitalServiceView hsv on v.AccountNumber=hsv.AccountNumber
inner join User_AssignedAccount uaa on v.AccountNumber=uaa.AccountNumber
inner join USER_CDSAuditorSuggestions cas on v.AccountNumber=cas.AccountNumber
where cas.Auditor is not null and cas.SecondLevelAuditor is null and cas.ClosedStatus=0 and cas.CDSAgreementType is not null),ModifiedDate=GETUTCDATE()
where PageId=280
Select * from USER_WorkQueue_Count
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'WorkQueue_Count','USER'
End Catch
END
--Exec User_GetWorkQueue_Count 78,1
GO
|
======================================================
Procedure Name:User_GetWorkQueue_Discharged
Description:
with help of this to get Account information about Discharged to this queue.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetWorkQueue_Discharged] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 01/04/2019
-- Description: DynamicQueryReport Generation
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetWorkQueue_Discharged]
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@ApplicationUserId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
--SET NOCOUNT ON;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
inner join User_AccountNote User_AccountNote on HIM_Visit.AccountNumber=User_AccountNote.AccountNumber
inner join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
Left join User_FollowupAccount on HIM_Visit.AccountNumber=User_FollowupAccount.AccountNumber and User_FollowupAccount.Active=1
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join MST_PrimaryDRGGrouper MST_PrimaryDRGGrouper on MST_PrimaryDRGGrouper.PrimaryDRGGrouperId=MST_Insurance_PrimaryDRGGrouper.PrimaryDRGGrouperId
left join NLP_DRG NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join MST_HospitalService MST_HospitalService on HIM_Visit.HospitalService=MST_HospitalService.HospitalServiceCode
left join FTP_DXCode FTP_DXCode on HIM_Visit.AccountNumber=FTP_DXCode.AccountNumber
left join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
left join User_ClosedAccount User_ClosedAccount on HIM_Visit.AccountNumber=User_ClosedAccount.AccountNumber
left join User_HoldAccount User_HoldAccount on HIM_Visit.AccountNumber=User_HoldAccount.AccountNumber
left join HIM_Document HIM_Document1 on HIM_Visit.AccountNumber=HIM_Document1.AccountNumber
and HIM_Document1.DocumentTypeId in (select distinct dt.DocumentTypeID from MST_DocumentType dt inner join MST_InternalDocumentType idt on dt.InternalDocumentTypeID=idt.InternalDocumentTypeID
where idt.InternalDocumentTypeID=6)
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,COUNT(distinct DocumentId) TotalRevDocs,ApplicationUserId from User_DocumentReview where ReviewStatus=1 group by AccountNumber,ApplicationUserId)
User_DocumentReview on User_DocumentReview.AccountNumber=HIM_Visit.AccountNumber and User_DocumentReview.ApplicationUserId='+cast(@ApplicationUserId as varchar)+'
left join (select AccountNumber,LOS,case when PrimaryDRGGrouperAliasName=''MSDRG'' then (MSDRGGLOS-LOS) when PrimaryDRGGrouperAliasName=''APRDRG'' then (APRDRGGLOS-LOS) else 0 end OUStay
from DRGView where SourceType=''NLP'') NLP_DRG1 on NLP_DRG1.AccountNumber=HIM_Visit.AccountNumber
left join MasterHrcm.dbo.MST_ApplicationUser MST_ApplicationUser on User_AssignedAccount.AssignTo=MST_ApplicationUser.ApplicationUserId
where User_AssignedAccount.AssignTo='+cast(@ApplicationUserId as varchar)+' and HIM_Visit.DischargeDate is not null and User_ClosedAccount.AccountNumber is null
and User_BlockedAccount.AccountNumber is null and User_HoldAccount.AccountNumber is null
--and User_FollowupAccount.AccountNumber is null
and(
USER_FollowupAccount.AccountNumber is not null and Convert(datetime,CONVERT(varchar(10),User_FollowupAccount.FollowupDate,20))<>Convert(datetime,CONVERT(varchar(10),getDate(),20))
OR
USER_FollowupAccount.AccountNumber is null)--If AccNo is in Followup then it is not in Discharged and vice versa.
'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' and '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'WorkQueue_Discharged','USER'
End Catch
END
--Exec User_GetWorkQueue_Discharged 'HIM_Visit.AccountNumber,HIM_Visit.AdmitDate,User_DocumentReview.TotalRevDocs','','',77
GO
|
======================================================
Procedure Name:USER_GetWorkQueue_Followups
Description:
with help of this to get Account information about User Followups to this queue.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetWorkQueue_Followups] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 01/04/2019
-- Description: DynamicQueryReport Generation
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetWorkQueue_Followups]
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@ApplicationUserId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
--SET NOCOUNT ON;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
inner join User_FollowupAccount User_FollowupAccount on HIM_Visit.AccountNumber=User_FollowupAccount.AccountNumber and User_FollowupAccount.Active=1
and Convert(datetime,CONVERT(varchar(10),User_FollowupAccount.followupdate,20))=Convert(datetime,CONVERT(varchar(10),getDate(),20))
inner join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
inner join User_AccountNote User_AccountNote on HIM_Visit.AccountNumber=User_AccountNote.AccountNumber
inner join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join MST_PrimaryDRGGrouper MST_PrimaryDRGGrouper on MST_PrimaryDRGGrouper.PrimaryDRGGrouperId=MST_Insurance_PrimaryDRGGrouper.PrimaryDRGGrouperId
left join NLP_DRG NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join MST_HospitalService MST_HospitalService on HIM_Visit.HospitalService=MST_HospitalService.HospitalServiceCode
left join FTP_DXCode FTP_DXCode on HIM_Visit.AccountNumber=FTP_DXCode.AccountNumber
left join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
left join User_ClosedAccount User_ClosedAccount on HIM_Visit.AccountNumber=User_ClosedAccount.AccountNumber
left join User_HoldAccount User_HoldAccount on HIM_Visit.AccountNumber=User_HoldAccount.AccountNumber
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,COUNT(distinct DocumentId) TotalRevDocs,ApplicationUserId from User_DocumentReview where ReviewStatus=1 group by AccountNumber,ApplicationUserId)
User_DocumentReview on User_DocumentReview.AccountNumber=HIM_Visit.AccountNumber and User_DocumentReview.ApplicationUserId='+cast(@ApplicationUserId as varchar)+'
left join (select AccountNumber,LOS,case when PrimaryDRGGrouperAliasName=''MSDRG'' then (MSDRGGLOS-LOS) when PrimaryDRGGrouperAliasName=''APRDRG'' then (APRDRGGLOS-LOS) else 0 end OUStay
from DRGView where SourceType=''NLP'') NLP_DRG1 on NLP_DRG1.AccountNumber=HIM_Visit.AccountNumber
left join MasterHrcm.dbo.MST_ApplicationUser MST_ApplicationUser on User_AssignedAccount.AssignTo=MST_ApplicationUser.ApplicationUserId
where User_AssignedAccount.AssignTo='+cast(@ApplicationUserId as varchar)+'
--and HIM_Visit.Dischargedate is null --Irrespective of Dischargedate to Followup Queue
and User_BlockedAccount.AccountNumber is null and User_ClosedAccount.AccountNumber is null and User_HoldAccount.AccountNumber is null'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' and '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'WorkQueue_Followup','USER'
End Catch
END
--Exec User_GetWorkQueue_Followups 'HIM_Visit.AccountNumber,HIM_Visit.AdmitDate','','',77
GO
|
======================================================
Procedure Name:USER_GetWorkQueue_InProgress
Description:
with help of this to get Account information about InProgress to this queue.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetWorkQueue_InProgress] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 01/04/2019
-- Description: DynamicQueryReport Generation
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetWorkQueue_InProgress]
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@ApplicationUserId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
--SET NOCOUNT ON;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
inner join User_AccountNote User_AccountNote on HIM_Visit.AccountNumber=User_AccountNote.AccountNumber
inner join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
inner join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
left join User_FollowupAccount User_FollowupAccount on HIM_Visit.AccountNumber=User_FollowupAccount.AccountNumber and User_FollowupAccount.Active=1
and Convert(datetime,CONVERT(varchar(10),User_FollowupAccount.FollowupDate,20))=Convert(datetime,CONVERT(varchar(10),getDate(),20))
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join MST_PrimaryDRGGrouper MST_PrimaryDRGGrouper on MST_PrimaryDRGGrouper.PrimaryDRGGrouperId=MST_Insurance_PrimaryDRGGrouper.PrimaryDRGGrouperId
left join NLP_DRG NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join MST_HospitalService MST_HospitalService on HIM_Visit.HospitalService=MST_HospitalService.HospitalServiceCode
left join FTP_DXCode FTP_DXCode on HIM_Visit.AccountNumber=FTP_DXCode.AccountNumber
left join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
left join User_ClosedAccount User_ClosedAccount on HIM_Visit.AccountNumber=User_ClosedAccount.AccountNumber
left join User_HoldAccount User_HoldAccount on HIM_Visit.AccountNumber=User_HoldAccount.AccountNumber
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,COUNT(distinct DocumentId) TotalRevDocs,ApplicationUserId from User_DocumentReview where ReviewStatus=1 group by AccountNumber,ApplicationUserId)
User_DocumentReview on User_DocumentReview.AccountNumber=HIM_Visit.AccountNumber and User_DocumentReview.ApplicationUserId='+cast(@ApplicationUserId as varchar)+'
left join (select AccountNumber,LOS,case when PrimaryDRGGrouperAliasName=''MSDRG'' then (MSDRGGLOS-LOS) when PrimaryDRGGrouperAliasName=''APRDRG'' then (APRDRGGLOS-LOS) else 0 end OUStay
from DRGView where SourceType=''NLP'') NLP_DRG1 on NLP_DRG1.AccountNumber=HIM_Visit.AccountNumber
left join MasterHrcm.dbo.MST_ApplicationUser MST_ApplicationUser on User_AssignedAccount.AssignTo=MST_ApplicationUser.ApplicationUserId
where User_AssignedAccount.AssignTo='+cast(@ApplicationUserId as varchar)+' and User_FollowupAccount.AccountNumber is null
and User_ClosedAccount.AccountNumber is null and HIM_Visit.DischargeDate is null and User_BlockedAccount.AccountNumber is null
and User_HoldAccount.AccountNumber is null'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' and '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'WorkQueue_InProgress','USER'
End Catch
END
--Exec User_GetWorkQueue_InProgress 'HIM_Visit.AccountNumber,HIM_Visit.AdmitDate,User_DocumentReview.TotalRevDocs,NLP_DRG1.LOS','','',77
GO
|
======================================================
Procedure Name:USER_GetWorkQueue_NonReviewed
Description:
with help of this to get complete information about NonReviewed Accounts.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetWorkQueue_NonReviewed] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 01/04/2019
-- Description: DynamicQueryReport Generation
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetWorkQueue_NonReviewed]
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@ApplicationUserId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
--SET NOCOUNT ON;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
inner join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
left join User_AccountNote User_AccountNote on HIM_Visit.AccountNumber=User_AccountNote.AccountNumber
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join MST_PrimaryDRGGrouper MST_PrimaryDRGGrouper on MST_PrimaryDRGGrouper.PrimaryDRGGrouperId=MST_Insurance_PrimaryDRGGrouper.PrimaryDRGGrouperId
left join NLP_DRG NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join MST_HospitalService MST_HospitalService on HIM_Visit.HospitalService=MST_HospitalService.HospitalServiceCode
left join FTP_DXCode FTP_DXCode on HIM_Visit.AccountNumber=FTP_DXCode.AccountNumber
left join User_FollowupAccount User_FollowupAccount on HIM_Visit.AccountNumber=User_FollowupAccount.AccountNumber and User_FollowupAccount.Active=1
and Convert(datetime,CONVERT(varchar(10),User_FollowupAccount.FollowupDate,20))=Convert(datetime,CONVERT(varchar(10),getDate(),20))
left join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
left join User_ClosedAccount User_ClosedAccount on HIM_Visit.AccountNumber=User_ClosedAccount.AccountNumber
left join User_HoldAccount User_HoldAccount on HIM_Visit.AccountNumber=User_HoldAccount.AccountNumber
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,COUNT(distinct DocumentId) TotalRevDocs,ApplicationUserId from User_DocumentReview where ReviewStatus=1 group by AccountNumber,ApplicationUserId)
User_DocumentReview on User_DocumentReview.AccountNumber=HIM_Visit.AccountNumber and User_DocumentReview.ApplicationUserId='+cast(@ApplicationUserId as varchar)+'
left join (select AccountNumber,LOS,case when PrimaryDRGGrouperAliasName=''MSDRG'' then (MSDRGGLOS-LOS) when PrimaryDRGGrouperAliasName=''APRDRG'' then (APRDRGGLOS-LOS) else 0 end OUStay
from DRGView where SourceType=''NLP'') NLP_DRG1 on NLP_DRG1.AccountNumber=HIM_Visit.AccountNumber
left join MasterHrcm.dbo.MST_ApplicationUser MST_ApplicationUser on User_AssignedAccount.AssignTo=MST_ApplicationUser.ApplicationUserId
where User_AssignedAccount.AssignTo='+cast(@ApplicationUserId as varchar)+' and User_BlockedAccount.AccountNumber is null and User_ClosedAccount.AccountNumber is null
and User_AccountNote.AccountNumber is null and User_HoldAccount.AccountNumber is null and User_FollowupAccount.AccountNumber is null'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' and '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'WorkQueue_NonReviewed','USER'
End Catch
END
--Exec User_GetWorkQueue_NonReviewed 'HIM_Visit.AccountNumber,HIM_Visit.AdmitDate,User_AssignedAccount.AccountNumber','','HIM_Visit.AdmitDate',15
GO
|
======================================================
Procedure Name:USER_GetWorkQueue_OnHold
Description:
with help of this to get complete information about Onhold Accounts.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetWorkQueue_OnHold] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 01/04/2019
-- Description: DynamicQueryReport Generation
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetWorkQueue_OnHold]
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@ApplicationUserId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
--SET NOCOUNT ON;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
inner join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
inner join User_HoldAccount User_HoldAccount on HIM_Visit.AccountNumber=User_HoldAccount.AccountNumber
inner join User_AccountNote User_AccountNote on HIM_Visit.AccountNumber=User_AccountNote.AccountNumber
--left join User_FollowupAccount User_FollowupAccount on HIM_Visit.AccountNumber=User_FollowupAccount.AccountNumber and User_FollowupAccount.Active=1 --At Present there is no Followupdate column to onHold queue
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join MST_PrimaryDRGGrouper MST_PrimaryDRGGrouper on MST_PrimaryDRGGrouper.PrimaryDRGGrouperId=MST_Insurance_PrimaryDRGGrouper.PrimaryDRGGrouperId
left join NLP_DRG NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join MST_HospitalService MST_HospitalService on HIM_Visit.HospitalService=MST_HospitalService.HospitalServiceCode
left join FTP_DXCode FTP_DXCode on HIM_Visit.AccountNumber=FTP_DXCode.AccountNumber
left join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
left join User_ClosedAccount User_ClosedAccount on HIM_Visit.AccountNumber=User_ClosedAccount.AccountNumber
left join HIM_Document HIM_Document1 on HIM_Visit.AccountNumber=HIM_Document1.AccountNumber and HIM_Document1.DocumentTypeId=6
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,COUNT(distinct DocumentId) TotalRevDocs,ApplicationUserId from User_DocumentReview where ReviewStatus=1 group by AccountNumber,ApplicationUserId)
User_DocumentReview on User_DocumentReview.AccountNumber=HIM_Visit.AccountNumber and User_DocumentReview.ApplicationUserId='+cast(@ApplicationUserId as varchar)+'
left join (select AccountNumber,LOS,case when PrimaryDRGGrouperAliasName=''MSDRG'' then (MSDRGGLOS-LOS) when PrimaryDRGGrouperAliasName=''APRDRG'' then (APRDRGGLOS-LOS) else 0 end OUStay
from DRGView where SourceType=''NLP'') NLP_DRG1 on NLP_DRG1.AccountNumber=HIM_Visit.AccountNumber
left join MasterHrcm.dbo.MST_ApplicationUser MST_ApplicationUser on User_AssignedAccount.AssignTo=MST_ApplicationUser.ApplicationUserId
where User_AssignedAccount.AssignTo='+cast(@ApplicationUserId as varchar)+' and User_BlockedAccount.AccountNumber is null
and User_ClosedAccount.AccountNumber is null'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' and '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'WorkQueue_OnHold','USER'
End Catch
END
--Exec User_GetWorkQueue_OnHold 'HIM_Visit.AccountNumber,HIM_Visit.AdmitDate,NLP_DRG1.LOS,NLP_DRG1.OUStay','','',15
GO
|
======================================================
Procedure Name:USER_GetWorkQueue_Reminder
Description:
with help of this to get complete information about User reminders.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetWorkQueue_Reminder] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 01/04/2019
-- Description: DynamicQueryReport Generation
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetWorkQueue_Reminder]
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@ApplicationUserId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
--SET NOCOUNT ON;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
inner join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
inner join User_AccountReminder User_AccountReminder on HIM_Visit.AccountNumber=User_AccountReminder.AccountNumber
left join User_AccountNote User_AccountNote on HIM_Visit.AccountNumber=User_AccountNote.AccountNumber
left join User_FollowupAccount User_FollowupAccount on HIM_Visit.AccountNumber=User_FollowupAccount.AccountNumber and User_FollowupAccount.Active=1
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join NLP_DRG NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join MST_HospitalService MST_HospitalService on HIM_Visit.HospitalService=MST_HospitalService.HospitalServiceCode
left join FTP_DXCode FTP_DXCode on HIM_Visit.AccountNumber=FTP_DXCode.AccountNumber
left join User_HoldAccount User_HoldAccount on HIM_Visit.AccountNumber=User_HoldAccount.AccountNumber
left join User_ClosedAccount User_ClosedAccount on HIM_Visit.AccountNumber=User_ClosedAccount.AccountNumber
left join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
left join HIM_Document HIM_Document1 on HIM_Visit.AccountNumber=HIM_Document1.AccountNumber and HIM_Document1.DocumentTypeId=6
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
where User_AssignedAccount.AssignTo='+cast(@ApplicationUserId as varchar)+' and User_HoldAccount.AccountNumber is null and User_BlockedAccount.AccountNumber is null
and User_ClosedAccount.AccountNumber is null'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' and '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'WorkQueue_Reminder','USER'
End Catch
END
--Exec User_GetWorkQueue_Reminder 'HIM_Visit.AccountNumber,HIM_Visit.AdmitDate','','',15
GO
|
======================================================
Procedure Name:USER_GetWorkQueue_UnAssigned
Description:
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_GetWorkQueue_UnAssigned] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 01/04/2019
-- Description: DynamicQueryReport Generation
-- =============================================
CREATE PROCEDURE [dbo].[USER_GetWorkQueue_UnAssigned]
@SelectColumnList varchar(2000),
@FilterColumnList varchar(500),
@OrderColumnList varchar(500),
@ApplicationUserId int,
@HospitalId int
AS
Declare @SelectQuery varchar(2000)=NULL
Declare @BodyQuery varchar(max)
Declare @FilterQuery varchar(500)=NULL
Declare @OrderQuery varchar(500)=NULL
Declare @FinalQuery varchar(max)=NULL
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
--SET NOCOUNT ON;
Begin Try
SET @BodyQuery=' from HIM_Visit HIM_Visit
inner join HIM_Patient HIM_Patient on HIM_Visit.PatientID=HIM_Patient.PatientId
inner join HospitalServiceView HospitalServiceView on HIM_Visit.AccountNumber=HospitalServiceView.AccountNumber
left join HIM_Insurance HIM_Insurance on HIM_Visit.VisitID=HIM_Insurance.VisitID and HIM_Insurance.SetID=1
left join MST_FinancialClass MST_FinancialClass on HIM_Visit.FinancialClass=MST_FinancialClass.FinancialClassID
left join MST_Insurance_PrimaryDRGGrouper MST_Insurance_PrimaryDRGGrouper on HIM_Insurance.InsurancePlanID=MST_Insurance_PrimaryDRGGrouper.InsurancePlanID
left join MST_PrimaryDRGGrouper MST_PrimaryDRGGrouper on MST_PrimaryDRGGrouper.PrimaryDRGGrouperId=MST_Insurance_PrimaryDRGGrouper.PrimaryDRGGrouperId
left join NLP_DRG NLP_DRG on HIM_Visit.AccountNumber=NLP_DRG.AccountNumber
left join MST_HospitalService MST_HospitalService on HIM_Visit.HospitalService=MST_HospitalService.HospitalServiceCode
left join FTP_DXCode FTP_DXCode on HIM_Visit.AccountNumber=FTP_DXCode.AccountNumber
left join User_FollowupAccount User_FollowupAccount on HIM_Visit.AccountNumber=User_FollowupAccount.AccountNumber and User_FollowupAccount.Active=1
left join User_AssignedAccount User_AssignedAccount on HIM_Visit.AccountNumber=User_AssignedAccount.AccountNumber
left join User_BlockedAccount User_BlockedAccount on HIM_Visit.AccountNumber=User_BlockedAccount.AccountNumber
left join User_ClosedAccount User_ClosedAccount on HIM_Visit.AccountNumber=User_ClosedAccount.AccountNumber
left join User_HoldAccount User_HoldAccount on HIM_Visit.AccountNumber=User_HoldAccount.AccountNumber
left join Log_User_AssignedAccount Log_User_AssignedAccount on HIM_Visit.AccountNumber=Log_User_AssignedAccount.AccountNumber and Log_User_AssignedAccount.AssignmentStatus=2 and Log_User_AssignedAccount.Active=1
left join (select AccountNumber,COUNT(*) TotalDocs from HIM_Document group by AccountNumber) HIM_Document on HIM_Document.AccountNumber=HIM_Visit.AccountNumber
left join (select AccountNumber,COUNT(distinct DocumentId) TotalRevDocs,ApplicationUserId from User_DocumentReview where ReviewStatus=1 group by AccountNumber,ApplicationUserId)
User_DocumentReview on User_DocumentReview.AccountNumber=HIM_Visit.AccountNumber and User_DocumentReview.ApplicationUserId='+cast(@ApplicationUserId as varchar)+'
left join (select AccountNumber,LOS,case when PrimaryDRGGrouperAliasName=''MSDRG'' then (MSDRGGLOS-LOS) when PrimaryDRGGrouperAliasName=''APRDRG'' then (APRDRGGLOS-LOS) else 0 end OUStay
from DRGView where SourceType=''NLP'') NLP_DRG1 on NLP_DRG1.AccountNumber=HIM_Visit.AccountNumber
left join MasterHrcm.dbo.MST_ApplicationUser MST_ApplicationUser on User_AssignedAccount.AssignTo=MST_ApplicationUser.ApplicationUserId
where User_AssignedAccount.AccountNumber is null and User_BlockedAccount.AccountNumber is null'
IF(@SelectColumnList is not null and @SelectColumnList!='')
Begin
SET @SelectQuery='Select Distinct '+@SelectColumnList
SET @FinalQuery=@SelectQuery+@BodyQuery
End
IF(@FilterColumnList is not null and @FilterColumnList!='' and @FinalQuery is not null)
Begin
SET @FilterQuery=' and '+@FilterColumnList
SET @FinalQuery=@FinalQuery+@FilterQuery
End
IF(@OrderColumnList is not null and @OrderColumnList!='' and @FinalQuery is not null)
Begin
SET @OrderQuery=' order by '+@OrderColumnList
SET @FinalQuery=@FinalQuery+@OrderQuery
End
--Print (@FinalQuery)
Exec (@FinalQuery)
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'WorkQueue_UnAssigned','USER'
End Catch
END
--Exec User_GetWorkQueue_UnAssigned 'HIM_Visit.AccountNumber,HIM_Visit.AdmitDate,NLP_DRG1.LOS,User_DocumentReview.TotalRevDocs','','',15
GO
|
======================================================
Procedure Name:USER_InsertAccountNote
Description:
with help of this to insert information about User AccountNotes.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_InsertAccountNote] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 18/07/2019
-- Description: User AccountNote Information
-- =============================================
CREATE PROCEDURE [dbo].[USER_InsertAccountNote]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@NoteBy int,
@Note varchar(250)
AS
Declare @InputParamQry varchar(500)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'NoteBy: '+''+cast(@NoteBy as varchar(50))+''+'|'+
'Note: '+''+@Note+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
Insert Into USER_AccountNote(AccountNumber,NoteBy,Note)values(@AccountNumber,@NoteBy,@Note)
If not exists(select 1 from USER_AccountNote where AccountNumber=@AccountNumber and InitialNoteStatus=1)
Begin
--Update USER_AccountNote set InitialNoteStatus=1 where AccountNumber=@AccountNumber
Update USER_AccountNote set InitialNoteStatus=1 from USER_AccountNote a inner join
(select AccountNumber,NoteBy,MIN(InsertedDate) InsertedDate from USER_AccountNote where AccountNumber=@AccountNumber and NoteBy=@NoteBy group by AccountNumber,NoteBy)b on a.AccountNumber=b.AccountNumber and a.NoteBy=b.NoteBy and a.InsertedDate=b.InsertedDate
--where a.AccountNumber='350584941' and a.NoteBy=80
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:USER_InsertAssignedAccount
Description:
with help of this to insert an user AssignedAccount information.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_InsertAssignedAccount] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 18/04/2019
-- Description: Inserting UnAssignedQueue Actions
-- =============================================
CREATE PROCEDURE [dbo].[USER_InsertAssignedAccount]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@ModuleId int,
@PageId int,
@AssignBy int,
@AssignTo int,
@Note varchar(250),
@ActionType varchar(25),
@ApplicationRoleId int
AS
Declare @AssignedId int
Declare @UserName varchar(80)
Declare @InputParamQry varchar(800)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'ModuleId: '+''+cast(@ModuleId as varchar(50))+''+'|'+
'PageId: '+''+cast(@PageId as varchar(50))+''+'|'+
'AssignBy: '+''+cast(@AssignBy as varchar(50))+''+'|'+
'AssignTo: '+''+cast(@AssignTo as varchar(50))+''+'|'+
'Note: '+''+@Note+''+'|'+
'ActionType: '+''+@ActionType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Begin Try
IF(@ActionType='Assign')
Begin
Insert into User_AssignedAccount(AccountNumber,ModuleId,PageId,AssignedBy,AssignTo)
values(@AccountNumber,@ModuleId,@PageId,@AssignBy,@AssignTo)
Update Log_User_AssignedAccount set Active=0,ModifiedDate=getUtcDate()
where AccountNumber=@AccountNumber and ModuleId=@ModuleId and AssignmentStatus=1 and AssignTo=@AssignTo
Insert into Log_User_AssignedAccount(AccountNumber,ModuleId,PageId,AssignedBy,AssignTo,AssignmentStatus)
values(@AccountNumber,@ModuleId,@PageId,@AssignBy,@AssignTo,1)-- 1 For Insertion
If(@AssignBy<>@AssignTo)
Begin
select @UserName=FullName from MasterHRCM.dbo.MST_ApplicationUser where ApplicationUserId=@AssignBy
select @AssignedId=AssignedId from User_AssignedAccount where AccountNumber=@AccountNumber and ModuleId=@ModuleId and AssignedBy=@AssignBy and AssignTo=@AssignTo
insert into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
values(@AccountNumber,@AssignTo,'You got an Account:'+@AccountNumber+' AssignedBy:'+@UserName,'AssignedAccount','AssignedAccount',@AssignedId)
End
If not exists (select 1 from USER_AssignedAccount_Summary where AccountNumber=@AccountNumber)
Begin
If(@ApplicationRoleId=2)
Insert Into USER_AssignedAccount_Summary(AccountNumber,CDS)values(@AccountNumber,@AssignTo)
else If(@ApplicationRoleId=16)
Insert Into USER_AssignedAccount_Summary(AccountNumber,CDSAuditor)values(@AccountNumber,@AssignTo)
End
Else
Begin
If(@ApplicationRoleId=2)
Update USER_AssignedAccount_Summary set CDS=@AssignTo,ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber
else If(@ApplicationRoleId=16)
Update USER_AssignedAccount_Summary set CDSAuditor=@AssignTo,ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber
End
End
else If(@ActionType='UnAssign')
Begin
delete from User_AssignedAccount where AccountNumber=@AccountNumber and ModuleId=@ModuleId and AssignTo=@AssignTo
Delete from dbo.USER_AccountNote where AccountNumber=@AccountNumber
Update Log_User_AssignedAccount set Active=0,ModifiedDate=getUtcDate()
where AccountNumber=@AccountNumber and ModuleId=@ModuleId and AssignmentStatus=2 and AssignTo=@AssignTo
Insert into Log_User_AssignedAccount(AccountNumber,ModuleId,PageId,AssignedBy,AssignTo,AssignmentStatus,Note)
values(@AccountNumber,@ModuleId,@PageId,@AssignBy,@AssignTo,2,@Note)-- 2 For Deletion
Delete from USER_AssignedAccount_Summary where AccountNumber=@AccountNumber
/*
If(@AssignBy<>@AssignTo)
Begin
select @UserName=FullName from MasterHRCM.dbo.MST_ApplicationUser where ApplicationUserId=@AssignBy
select @AssignedId=AssignedId from Log_User_AssignedAccount where AccountNumber=@AccountNumber and ModuleId=@ModuleId and AssignedBy=@AssignBy and AssignTo=@AssignTo
insert into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
values(@AccountNumber,@AssignTo,'You got an Account:'+@AccountNumber+' AssignedBy:'+@UserName,'AssignedAccount','AssignedAccount',@AssignedId)
End*/
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:USER_InsertBlockedAccount
Description:
with help of this to insert an user BlockedAccounts information.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_InsertBlockedAccount] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 23/04/2019
-- Description: Inserting HoldAccountQueue Actions
-- =============================================
CREATE PROCEDURE [dbo].[USER_InsertBlockedAccount]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@ModuleId int,
@PageId int,
@BlockedBy int,
@Note varchar(250),
@ActionType varchar(25)
AS
Declare @InputParamQry varchar(800)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'ModuleId: '+''+cast(@ModuleId as varchar(50))+''+'|'+
'PageId: '+''+cast(@PageId as varchar(50))+''+'|'+
'BlockedBy: '+''+cast(@BlockedBy as varchar(50))+''+'|'+
'Note: '+''+@Note+''+'|'+
'ActionType: '+''+@ActionType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
IF(@ActionType='Block')
Begin
--Reason:When u block an Account you should delete an Account in User_HoldAccount
delete from USER_HoldAccount where AccountNumber=@AccountNumber and HoldBy=@BlockedBy
Insert into User_BlockedAccount(AccountNumber,ModuleId,PageId,BlockedBy,Note)
values(@AccountNumber,@ModuleId,@PageId,@BlockedBy,@Note)
Insert into Log_User_BlockedAccount(AccountNumber,ModuleId,PageId,BlockedBy,Note,BlockedStatus)
values(@AccountNumber,@ModuleId,@PageId,@BlockedBy,@Note,1)-- 1 For Insertion
End
else If(@ActionType='UnBlock')
Begin
delete from User_BlockedAccount where AccountNumber=@AccountNumber and ModuleId=@ModuleId and BlockedBy=@BlockedBy
Insert into Log_User_BlockedAccount(AccountNumber,ModuleId,PageId,BlockedBy,Note,BlockedStatus)
values(@AccountNumber,@ModuleId,@PageId,@BlockedBy,@Note,2)-- 2 For Deletion
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:USER_InsertCDSAuditorSuggestion
Description:
with help of this to insert an information about CDSAuditorSuggestions.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_InsertCDSAuditorSuggestion] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 07/08/2019
-- Description: CDS Suggestions
-- =============================================
CREATE PROCEDURE [dbo].[USER_InsertCDSAuditorSuggestion]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@SuggestionType varchar(150),
@SuggestionImpact varchar(250),
@DRGImpact tinyint,
@SOIImpact tinyint,
@ROMImpact tinyint,
@QualityImpact tinyint,
@OtherImpact tinyint,
@NoImpact tinyint,
@CurrentDRG int,
@SuggestedDRG int,
@DRGType varchar(20),
@Suggestion varchar(250),
@Auditor int,
@AuditorComment varchar(250),
@CDS int
AS
Declare @SuggestionId int
Declare @NotificationFormat varchar(250)
SET @NotificationFormat='You got a CDSAuditorSuggestion to Account:'+@AccountNumber+' from '+dbo.fngetUserName(@Auditor,'FullName')+' as '+@SuggestionType+':'+@Suggestion
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
Insert Into USER_CDSAuditorSuggestions(AccountNumber,SuggestionType,SuggestionImpact,DRGImpact,SOIImpact,ROMImpact,QualityImpact,OtherImpact,NoImpact,CurrentDRG,SuggestedDRG,
DRGType,Suggestion,Auditor,AuditorComment,CDS)
values(@AccountNumber,@SuggestionType,@SuggestionImpact,@DRGImpact,@SOIImpact,@ROMImpact,@QualityImpact,@OtherImpact,@NoImpact,@CurrentDRG,@SuggestedDRG,@DRGType,@Suggestion,
@Auditor,@AuditorComment,@CDS)
Set @SuggestionId=@@IDENTITY
Insert Into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
values(@AccountNumber,@CDS,@NotificationFormat,'CDSAuditorSuggestion','CDSAuditorSuggestion',@SuggestionId)
Insert Into LOG_USER_CDSAuditorSuggestions(AccountNumber,LogMessage,InsertedBy,MessageTo,ChangeType,SuggestionID)
values(@AccountNumber,@NotificationFormat,@Auditor,@CDS,@SuggestionType,@SuggestionId)
End Try
Begin Catch
Exec usp_GetDBErrorInfo @AccountNumber,'CDSAuditorSuggestion'
End Catch
END
GO
|
======================================================
Procedure Name:USER_InsertClosedAccount
Description:
with help of this to insert an information about user's ClosedAccounts.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_InsertClosedAccount] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 23/04/2019
-- Description: Inserting HoldAccountQueue Actions
-- =============================================
CREATE PROCEDURE [dbo].[USER_InsertClosedAccount]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@ModuleId int,
@PageId int,
@ClosedBy int,
@Note varchar(250),
@ActionType varchar(25)
AS
Declare @InputParamQry varchar(800)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'ModuleId: '+''+cast(@ModuleId as varchar(50))+''+'|'+
'PageId: '+''+cast(@PageId as varchar(50))+''+'|'+
'ClosedBy: '+''+cast(@ClosedBy as varchar(50))+''+'|'+
'Note: '+''+@Note+''+'|'+
'ActionType: '+''+@ActionType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
IF(@ActionType='Complete')
Begin
Insert into User_ClosedAccount(AccountNumber,ModuleId,PageId,ClosedBy,Note)
values(@AccountNumber,@ModuleId,@PageId,@ClosedBy,@Note)
Insert into Log_User_ClosedAccount(AccountNumber,ModuleId,PageId,ClosedBy,ClosedStatus,Note)
values(@AccountNumber,@ModuleId,@PageId,@ClosedBy,1,@Note)-- 1 For Insertion
End
else If(@ActionType='Move To InProgress')
Begin
delete from User_ClosedAccount where AccountNumber=@AccountNumber and ModuleId=@ModuleId and ClosedBy=@ClosedBy
Insert into Log_User_ClosedAccount(AccountNumber,ModuleId,PageId,ClosedBy,ClosedStatus,Note)
values(@AccountNumber,@ModuleId,@PageId,@ClosedBy,2,@Note)-- 2 For Deletion
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:USER_InsertDiscussion
Description:
with help of this to insert an information about User's Discussions.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_InsertDiscussion] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 10/05/2019
-- Description: Info about User Discussions
-- =============================================
CREATE PROCEDURE [dbo].[USER_InsertDiscussion]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@ParentId int,
@Note varchar(250),
@UserId int,
--@TargetUserId int,
@TargetUserId varchar(150),
@NotificationType varchar(50)
AS
Declare @InputParamQry varchar(800)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'ParentId: '+''+cast(@ParentId as varchar(50))+''+'|'+
'UserId: '+''+cast(@UserId as varchar(50))+''+'|'+
'TargetUserId: '+''+@TargetUserId+''+'|'+
'Note: '+''+@Note+''+'|'+
'NotificationType: '+''+@NotificationType+''
Declare @NotificationFormat varchar(100)
SET @NotificationFormat='You got a Notification to Account:'+@AccountNumber+' from '+dbo.fngetUserName(@UserId,'FullName')
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
Insert Into User_Discussion(AccountNumber,ParentId,Note,CreatedBy)values(@AccountNumber,@ParentId,@Note,@UserId)
/*
Insert Into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
values(@AccountNumber,@TargetUserId,@NotificationFormat,@NotificationType,@NotificationType,@@IDENTITY)--@@IDENTITY means getting last inserted Identity column of a table.
*/
Insert Into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
select @AccountNumber,val,@NotificationFormat,@NotificationType,@NotificationType,@@IDENTITY from split(@TargetUserId,',')
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:USER_InsertDQView
Description:
with help of this to insert user's DQViews.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_InsertDQView] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Srinivas
-- Create date: 03/04/2019
-- Description: Create New DqView
-- =============================================
CREATE PROCEDURE [dbo].[USER_InsertDQView]
-- Add the parameters for the stored procedure here
@DqViewName varchar(50),
@ModuleId int,
@PageId int,
@ApplicationUserId int,
@Active tinyint
AS
Declare @InputParamQry varchar(800)
SET @InputParamQry='DqViewName: '+''+@DqViewName+''+'|'+
'ModuleId: '+''+cast(@ModuleId as varchar(50))+''+'|'+
'PageId: '+''+cast(@PageId as varchar(50))+''+'|'+
'ApplicationUserId: '+''+cast(@ApplicationUserId as varchar(50))+''+'|'+
'Active: '+''+cast(@Active as varchar(50))+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
--SET NOCOUNT ON;
Begin Try
Insert Into User_DqView(ViewName,ModuleId,PageId,ApplicationUserId,Active)values(@DqViewName,@ModuleId,@PageId,@ApplicationUserId,@Active)
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:USER_InsertDRG
Description:
with help of this to insert infromation about user drg data.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_InsertDRG] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 07/02/2019
-- Description: User Drg Change Log
---- LOG 1 : KrishnaReddy, Srinivas, Ramu
-- Change 1 : To get DXType either it is PDX or SDX and PCs or PCS1 we changed following line from
-- line no:54 case when Udc.DXCodeID<>0 then 'Dx' end as DxType to UDC.DXType
-- Change 2 : To get DXType either it is PDX or SDX and PCs or PCS1 we changed following line from
-- line no:55 case when isnull(Upc.PCSCodeID,0)<>0 then 'Pcs' end as PcsType to UDC.DXType
-- =============================================
CREATE PROCEDURE [dbo].[USER_InsertDRG]
@AccountNumber varchar(25),
@Drg varchar(10),
@DrgDesc varchar(150),
@DrgWeight float,
@Mdc varchar(10),
@Glos float,
@Alos float,
@Soi int,
@Rom int,
@DischargePosition int,
@DrgType varchar(10),
@ApplicationUserId int
AS
Declare @InputParamQry varchar(800)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'Drg: '+''+@Drg+''+'|'+
'DrgType: '+''+@DrgType+''+'|'+
'ApplicationUserId: '+''+cast(@ApplicationUserId as varchar(50))+''
BEGIN
SET NOCOUNT OFF;
Begin Try
IF(@Drg is not null and @Drg!='' and @DrgType='MS-DRG')
Begin
Delete from User_Drg where AccountNumber=@AccountNumber
Insert Into User_Drg(AccountNumber,MSDRG,MSDRGDesc,MSDRGWeight,MSDRGMDC,MSDRGGLOS,MSDRGALOS,DischargePosition,ApplicationUserId)
values(@AccountNumber,@Drg,@DrgDesc,@DrgWeight,@Mdc,@Glos,@Alos,@DischargePosition,@ApplicationUserId)
End
Else IF(@Drg is not null and @Drg!='' and @DrgType='APR-DRG')
Begin
Update User_Drg set APRDRG=@Drg,APRDRGDesc=@DrgDesc,APRDRGWeight=@DrgWeight,APRDRGMDC=@Mdc,APRDRGGLOS=@Glos,APRDRGALOS=@Alos,SOI=@Soi,ROM=@Rom,DischargePosition=@DischargePosition,
ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber
--LOG_USER_DRG
Insert Into LOG_USER_DRG(DRGID,AccountNumber,MSDRG,MSDRGDesc,MSDRGWeight,MSDRGMDC,MSDRGGLOS,MSDRGALOS,APRDRG,APRDRGDesc,APRDRGWeight,APRDRGMDC,APRDRGGLOS,APRDRGALOS,SOI,ROM,
DischargePosition,ApplicationUserId)
select DRGID,AccountNumber,MSDRG,MSDRGDesc,MSDRGWeight,MSDRGMDC,MSDRGGLOS,MSDRGALOS,APRDRG,APRDRGDesc,APRDRGWeight,APRDRGMDC,APRDRGGLOS,APRDRGALOS,SOI,ROM,
DischargePosition,ApplicationUserId from User_Drg where AccountNumber=@AccountNumber
--User_Drg_Code
Insert Into User_Drg_Code(AccountNumber,DrgId,DxId,PcsId,DxType,PcsType)
select distinct udg.AccountNumber,udg.DRGID,udc.DXCodeID,isnull(upc.PCSCodeID,0),
udc.dxtype,Upc.PCSType
from User_Drg udg
inner join User_DxCode udc on udg.AccountNumber=udc.AccountNumber
left join User_PCSCode upc on upc.AccountNumber=udg.AccountNumber
where udg.AccountNumber=@AccountNumber
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:USER_InsertFollowupAccount
Description:
with help of this to insert user followup Account information.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_InsertFollowupAccount] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 31/07/2019
-- Description: User Followup Insertions
-- =============================================
CREATE PROCEDURE [dbo].[USER_InsertFollowupAccount]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@ModuleId int,
@PageId int,
@FollowupBy int,
@FollowupTypeId int,
@FollowupDate date,
@Priority varchar(50),
@Note varchar(500)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Update USER_FollowupAccount set Active=0 where AccountNumber=@AccountNumber and FollowupBy=@FollowupBy
insert into User_FollowupAccount(AccountNumber,ModuleId,PageId,FollowupBy,FollowupTypeId,Followupdate,Priority,Note)
values(@AccountNumber,@ModuleId,@PageId,@FollowupBy,@FollowupTypeId,@FollowupDate,@Priority,@Note)
insert into LOG_USER_FollowupAccount(AccountNumber,ModuleId,PageId,FollowupBy,FollowupTypeId,Followupdate,Priority,Note)
values(@AccountNumber,@ModuleId,@PageId,@FollowupBy,@FollowupTypeId,@FollowupDate,@Priority,@Note)
END
GO
|
======================================================
Procedure Name:USER_InsertHoldAccount
Description:
with help of this to insert Hold Account information.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_InsertHoldAccount] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 23/04/2019
-- Description: Inserting HoldAccountQueue Actions
-- =============================================
CREATE PROCEDURE [dbo].[USER_InsertHoldAccount]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@ModuleId int,
@PageId int,
@HoldBy int,
@Note varchar(250),
@ActionType varchar(25)
AS
Declare @InputParamQry varchar(800)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'ModuleId: '+''+cast(@ModuleId as varchar(50))+''+'|'+
'PageId: '+''+cast(@PageId as varchar(50))+''+'|'+
'HoldBy: '+''+cast(@HoldBy as varchar(50))+''+'|'+
'Note: '+''+@Note+''+'|'+
'ActionType: '+''+@ActionType+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
IF(@ActionType='Hold')
Begin
Insert into User_HoldAccount(AccountNumber,ModuleId,PageId,HoldBy,Note)
values(@AccountNumber,@ModuleId,@PageId,@HoldBy,@Note)
Insert into LOG_USER_HoldAccount(AccountNumber,ModuleId,PageId,HoldBy,Note,HoldStatus)
values(@AccountNumber,@ModuleId,@PageId,@HoldBy,@Note,1)-- 1 For Insertion
End
else If(@ActionType='UnHold')
Begin
delete from User_HoldAccount where AccountNumber=@AccountNumber and ModuleId=@ModuleId and HoldBy=@HoldBy
Insert into LOG_USER_HoldAccount(AccountNumber,ModuleId,PageId,HoldBy,Note,HoldStatus)
values(@AccountNumber,@ModuleId,@PageId,@HoldBy,@Note,2)-- 2 For Deletion
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:USER_InsertNotification
Description:
with help of this to insert data about user notifications.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_InsertNotification] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 26/04/2019
-- Description: Inserting User Reminder Notifications
-- =============================================
CREATE PROCEDURE [dbo].[USER_InsertNotification]
-- Add the parameters for the stored procedure here
--@ApplicationUserId int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
insert into LOG_USER_Notification(NotificationId,AccountNumber,NotificationTo,[Notification],NotificationType,Active,[Source],SourceId,InsertedDate,ModifiedDate)
select NotificationId,AccountNumber,NotificationTo,[Notification],NotificationType,Active,[Source],SourceId,InsertedDate,ModifiedDate
from User_Notification where Source='Reminder' and Active=1
delete from User_Notification where Source='Reminder' and Active=1
--NewDocument Reminder
insert into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
select distinct uar.AccountNumber,uar.CreatedBy,
'New '+idt.InternalDocumentName+' Document has been arrived for Account:'+uar.AccountNumber+' on '+dbo.fnFormatDate(hd.ModifiedDate,'MM/DD/YY'),
uar.ClinicalFieldType,'Reminder',uar.ReminderId
from HIM_Document hd
inner join User_AccountReminder uar on hd.AccountNumber=uar.AccountNumber and uar.ReminderTypeId=4
and(
uar.ClinicalFieldId=2 or
uar.ClinicalFieldId=1 or
uar.ClinicalFieldId=3 or
uar.ClinicalFieldId=4 or
uar.ClinicalFieldId=5 or
(uar.ClinicalFieldId=6 and hd.DocumentCompletionStatusID in (1,2)) or
uar.ClinicalFieldId=7)
inner join MST_DocumentType dt on hd.DocumentTypeID=dt.DocumentTypeID and dt.InternalDocumentTypeID=uar.ClinicalFieldId
inner join MST_InternalDocumentType idt on dt.InternalDocumentTypeID=idt.InternalDocumentTypeID
where uar.Active=1 and hd.ModifiedDate>=uar.InsertedDate
--LabReminder 1
insert into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
select distinct uar.AccountNumber,uar.CreatedBy,
ltv.TestName+':'+ltv.Result+' On Day '+isnull(cast(ltv.HospitalDay as varchar(3)),'')+' for Account:'+uar.AccountNumber+' on '+dbo.fnFormatDate(ltv.LabTestDate,'MM/DD/YY'),
uar.ClinicalFieldType,'Reminder',uar.ReminderId
from LabTestView ltv
inner join User_AccountReminder uar on ltv.AccountNumber=uar.AccountNumber
where ltv.SourceType='FTP' and ltv.UniqueId=uar.ClinicalFieldId and uar.ReminderTypeId=1 and uar.Active=1
and ltv.NumericResult is not null and (ltv.Unit=uar.ClinicalUnit or uar.ClinicalUnit is null)
and uar.Clause='LessThan' and ((uar.ClinicalDay=1 and ltv.HospitalDay in (0,1)) or (uar.ClinicalDay=ltv.HospitalDay) or uar.ClinicalDay=-1)
and ltv.LabTestDate>=uar.InsertedDate and ltv.NumericResult<uar.Value1
--LabReminder 2
insert into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
select distinct uar.AccountNumber,uar.CreatedBy,
ltv.TestName+':'+ltv.Result+' On Day '+isnull(cast(ltv.HospitalDay as varchar(3)),'')+' for Account:'+uar.AccountNumber+' on '+dbo.fnFormatDate(ltv.LabTestDate,'MM/DD/YY'),
uar.ClinicalFieldType,'Reminder',uar.ReminderId
from LabTestView ltv
inner join User_AccountReminder uar on ltv.AccountNumber=uar.AccountNumber
where ltv.SourceType='FTP' and ltv.UniqueId=uar.ClinicalFieldId and uar.ReminderTypeId=1 and uar.Active=1
and ltv.NumericResult is not null and (ltv.Unit=uar.ClinicalUnit or uar.ClinicalUnit is null)
and uar.Clause='GreaterThan' and ((uar.ClinicalDay=1 and ltv.HospitalDay in (0,1)) or (uar.ClinicalDay=ltv.HospitalDay) or uar.ClinicalDay=-1)
and ltv.LabTestDate>=uar.InsertedDate and ltv.NumericResult>uar.Value2
--LabReminder 3
insert into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
select distinct uar.AccountNumber,uar.CreatedBy,
ltv.TestName+':'+ltv.Result+' On Day '+isnull(cast(ltv.HospitalDay as varchar(3)),'')+' for Account:'+uar.AccountNumber+' on '+dbo.fnFormatDate(ltv.LabTestDate,'MM/DD/YY'),
uar.ClinicalFieldType,'Reminder',uar.ReminderId
from LabTestView ltv
inner join User_AccountReminder uar on ltv.AccountNumber=uar.AccountNumber
where ltv.SourceType='FTP' and ltv.UniqueId=uar.ClinicalFieldId and uar.ReminderTypeId=1 and uar.Active=1
and ltv.NumericResult is not null and (ltv.Unit=uar.ClinicalUnit or uar.ClinicalUnit is null)
and uar.Clause='EQuals' and ((uar.ClinicalDay=1 and ltv.HospitalDay in (0,1)) or (uar.ClinicalDay=ltv.HospitalDay) or uar.ClinicalDay=-1)
and ltv.LabTestDate>=uar.InsertedDate and ltv.NumericResult=uar.Value1
--LabReminder 4
insert into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
select distinct uar.AccountNumber,uar.CreatedBy,
ltv.TestName+':'+ltv.Result+' On Day '+isnull(cast(ltv.HospitalDay as varchar(3)),'')+' for Account:'+uar.AccountNumber+' on '+dbo.fnFormatDate(ltv.LabTestDate,'MM/DD/YY'),
uar.ClinicalFieldType,'Reminder',uar.ReminderId
from LabTestView ltv
inner join User_AccountReminder uar on ltv.AccountNumber=uar.AccountNumber
where ltv.SourceType='FTP' and ltv.UniqueId=uar.ClinicalFieldId and uar.ReminderTypeId=1 and uar.Active=1
and ltv.NumericResult is not null and (ltv.Unit=uar.ClinicalUnit or uar.ClinicalUnit is null)
and uar.Clause='Between' and ((uar.ClinicalDay=1 and ltv.HospitalDay in (0,1)) or (uar.ClinicalDay=ltv.HospitalDay) or uar.ClinicalDay=-1)
and ltv.LabTestDate>=uar.InsertedDate and ltv.NumericResult between uar.Value1 and uar.Value2
--MedicationReminder
insert into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
select distinct uar.AccountNumber,uar.CreatedBy,mv.MedicationName,uar.ClinicalFieldType,'Reminder',uar.ReminderId
from MedicationView mv
inner join User_AccountReminder uar on mv.AccountNumber=uar.AccountNumber
where mv.SourceType='FTP_IPMed' and mv.UniqueId=uar.ClinicalFieldId and uar.ReminderTypeId=3 and uar.Active=1
and ((uar.ClinicalDay=1 and mv.HospitalDay in (0,1)) or (uar.ClinicalDay=mv.HospitalDay) or uar.ClinicalDay=-1)
and mv.StartDate>=uar.InsertedDate
--VitalSignReminder 1
insert into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
select distinct uar.AccountNumber,uar.CreatedBy,
vsv.VitalSign+':'+vsv.Result+' On Day '+isnull(cast(vsv.HospitalDay as varchar(3)),'')+' for Account:'+uar.AccountNumber+' on '+dbo.fnFormatDate(vsv.VitalSignDate,'MM/DD/YY'),
uar.ClinicalFieldType,'Reminder',uar.ReminderId
from VitalSignView vsv
inner join User_AccountReminder uar on vsv.AccountNumber=uar.AccountNumber
where vsv.SourceType='FTP' and vsv.UniqueId=uar.ClinicalFieldId and uar.ReminderTypeId=2 and uar.Active=1
and vsv.NumericResult is not null and uar.Clause='LessThan'
and ((uar.ClinicalDay=1 and vsv.HospitalDay in (0,1)) or (uar.ClinicalDay=vsv.HospitalDay) or uar.ClinicalDay=-1)
and vsv.VitalSignDate>=uar.InsertedDate and vsv.NumericResult<uar.Value1
--VitalSignReminder 2
insert into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
select distinct uar.AccountNumber,uar.CreatedBy,
vsv.VitalSign+':'+vsv.Result+' On Day '+isnull(cast(vsv.HospitalDay as varchar(3)),'')+' for Account:'+uar.AccountNumber+' on '+dbo.fnFormatDate(vsv.VitalSignDate,'MM/DD/YY'),
uar.ClinicalFieldType,'Reminder',uar.ReminderId
from VitalSignView vsv
inner join User_AccountReminder uar on vsv.AccountNumber=uar.AccountNumber
where vsv.SourceType='FTP' and vsv.UniqueId=uar.ClinicalFieldId and uar.ReminderTypeId=2 and uar.Active=1
and vsv.NumericResult is not null and uar.Clause='GreateThan'
and ((uar.ClinicalDay=1 and vsv.HospitalDay in (0,1)) or (uar.ClinicalDay=vsv.HospitalDay) or uar.ClinicalDay=-1)
and vsv.VitalSignDate>=uar.InsertedDate and vsv.NumericResult>uar.Value2
--VitalSignReminder 3
insert into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
select distinct uar.AccountNumber,uar.CreatedBy,
vsv.VitalSign+':'+vsv.Result+' On Day '+isnull(cast(vsv.HospitalDay as varchar(3)),'')+' for Account:'+uar.AccountNumber+' on '+dbo.fnFormatDate(vsv.VitalSignDate,'MM/DD/YY'),
uar.ClinicalFieldType,'Reminder',uar.ReminderId
from VitalSignView vsv
inner join User_AccountReminder uar on vsv.AccountNumber=uar.AccountNumber
where vsv.SourceType='FTP' and vsv.UniqueId=uar.ClinicalFieldId and uar.ReminderTypeId=2 and uar.Active=1
and vsv.NumericResult is not null and uar.Clause='EQuals'
and ((uar.ClinicalDay=1 and vsv.HospitalDay in (0,1)) or (uar.ClinicalDay=vsv.HospitalDay) or uar.ClinicalDay=-1)
and vsv.VitalSignDate>=uar.InsertedDate and vsv.NumericResult=uar.Value1
--VitalSignReminder 4
insert into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
select distinct uar.AccountNumber,uar.CreatedBy,
vsv.VitalSign+':'+vsv.Result+' On Day '+isnull(cast(vsv.HospitalDay as varchar(3)),'')+' for Account:'+uar.AccountNumber+' on '+dbo.fnFormatDate(vsv.VitalSignDate,'MM/DD/YY'),
uar.ClinicalFieldType,'Reminder',uar.ReminderId
from VitalSignView vsv
inner join User_AccountReminder uar on vsv.AccountNumber=uar.AccountNumber
where vsv.SourceType='FTP' and vsv.UniqueId=uar.ClinicalFieldId and uar.ReminderTypeId=2 and uar.Active=1
and vsv.NumericResult is not null and uar.Clause='Between'
and ((uar.ClinicalDay=1 and vsv.HospitalDay in (0,1)) or (uar.ClinicalDay=vsv.HospitalDay) or uar.ClinicalDay=-1)
and vsv.VitalSignDate>=uar.InsertedDate and vsv.NumericResult between uar.Value1 and uar.Value2
End Try
Begin Catch
Exec usp_GetDBErrorInfo 'NotificationInsertions','USER'
End Catch
END
--Exec User_InsertNotification
GO
|
======================================================
Procedure Name:USER_InsertQuery
Description:
with help of this to insert user queries.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_InsertQuery] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: ASrinivas
-- Create date: 05/06/2019
-- Description: Inserting a User Query
-- =============================================
CREATE PROCEDURE [dbo].[USER_InsertQuery]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@QueryTypeId int,
@QueryDiagnosisId int,
@QueryName varchar(150),
@CreatedBy int,
@QueryTo varchar(30),
@Priority varchar(25),
@QAFinalResultId int,
@QueryStatusId int,
@SourceType varchar(50)
AS
Declare @TempQueryId int
Declare @DrgId int
Declare @InputParamQry varchar(200)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'@QueryTypeId: '+''+cast(@QueryTypeId as varchar(50))+''+'|'+
'@QueryDiagnosisId: '+''+cast(@QueryDiagnosisId as varchar(50))+''+'|'+
'@CreatedBy: '+''+cast(@CreatedBy as varchar(50))+''+'|'+
'@QAFinalResultId: '+''+cast(@QAFinalResultId as varchar(50))+''+'|'+
'@QueryStatusId: '+''+cast(@QueryStatusId as varchar(50))+''+'|'+
'@QueryName: '+''+@QueryName+''+'|'+
'@QueryTo: '+''+@QueryTo+''+'|'+
'@Priority: '+''+@Priority+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
Insert Into User_Query(AccountNumber,QueryTypeId,QueryDiagnosisId,QueryName,CreatedBy,QueryTo,Priority,QAFinalResultId,QueryStatusId,SourceType)
values(@AccountNumber,@QueryTypeId,@QueryDiagnosisId,@QueryName,@CreatedBy,@QueryTo,@Priority,@QAFinalResultId,@QueryStatusId,@SourceType)
SET @TempQueryId=@@IDENTITY
select @DrgId=DRGID from User_Drg where AccountNumber=@AccountNumber
Insert Into User_QueryResponseDRGImpact(AccountNumber,QueryId,PreQueryDRGId)values(@AccountNumber,@TempQueryId,@DrgId)
select * from User_Query where QueryId=@TempQueryId
End Try
Begin Catch
Exec usp_GetDBErrorInfo @InputParamQry,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:USER_MoveAuditToPostAudit
Description:
with help of this to move an Account from Auditqueue to PostAudit queue.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_MoveAuditToPostAudit] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 09/08/2019
-- Description: Move Audit to Post Audit Queue
-- =============================================
CREATE PROCEDURE [dbo].[USER_MoveAuditToPostAudit]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@CDSADSId int,
@CDSID int,
@AuditorId int,
@SuggestionType varchar(150)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Update USER_CDSAuditorSuggestions set ClosedStatus=1 where AccountNumber=@AccountNumber and CDSADSID=@CDSADSId and Auditor=@AuditorId
Insert Into LOG_USER_CDSAuditorSuggestions(AccountNumber,LogMessage,InsertedBy,MessageTo,ChangeType,SuggestionID)
values(@AccountNumber,'Suggestion has been moved to PostAudit',@AuditorId,@CDSID,@SuggestionType,@CDSADSId)
END
GO
|
======================================================
Procedure Name:USER_UpdateCDSAuditorSuggestion
Description:
with help of this to do modifications which includes updates to CDSAuditorSuggestions corresponding to CDS,Auditor and SecondLevelAuditor.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_UpdateCDSAuditorSuggestion] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 8/08/2019
-- Description: Updates to CDSAuditor Suggestions
-- =============================================
CREATE PROCEDURE [dbo].[USER_UpdateCDSAuditorSuggestion]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@SuggestionType varchar(150),
@SuggestionImpact varchar(250),
@DRGImpact tinyint,
@SOIImpact tinyint,
@ROMImpact tinyint,
@QualityImpact tinyint,
@OtherImpact tinyint,
@NoImpact tinyint,
@CurrentDRG int,
@SuggestedDRG int,
@DRGType varchar(20),
@Suggestion varchar(250),
@AgreementType varchar(100),
@Comment varchar(250),
@CDSID int,
@AuditorId int,
@LoginID int,
@ApplicationRoleId int,
@CDSADSId int
AS
Declare @NotificationTo int
Declare @NotificationFormat varchar(250)
SET @NotificationFormat='Your Suggestion to Account:'+@AccountNumber+' has been Updated by '+dbo.fngetUserName(@LoginID,'FullName')+'. Suggestion:'+@SuggestionType+'/'+@Suggestion
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
If(@ApplicationRoleId=2)--CDS
Begin
Update USER_CDSAuditorSuggestions set CDS=@CDSID,CDSAgreementType=@AgreementType,CDSComment=@Comment,CDSModifiedDate=getUtcDate()
where AccountNumber=@AccountNumber and CDSADSID=@CDSADSId
--Notification and Log to CDSAuditor
Insert Into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
values(@AccountNumber,@AuditorId,@NotificationFormat,'CDSAuditorSuggestion','CDSAuditorSuggestion',@CDSADSId)
Insert Into LOG_USER_CDSAuditorSuggestions(AccountNumber,LogMessage,InsertedBy,MessageTo,ChangeType,SuggestionID)
values(@AccountNumber,@NotificationFormat,@LoginID,@AuditorId,@SuggestionType,@CDSADSId)
End
Else If(@ApplicationRoleId=16)--CDSAuditor
Begin
Update USER_CDSAuditorSuggestions set SuggestionType=@SuggestionType,SuggestionImpact=@SuggestionImpact,DRGImpact=@DRGImpact,SOIImpact=@SOIImpact,ROMImpact=@ROMImpact,
QualityImpact=@QualityImpact,OtherImpact=@OtherImpact,NoImpact=@NoImpact,CurrentDRG=@CurrentDRG,SuggestedDRG=@SuggestedDRG,DRGType=@DRGType,Suggestion=@Suggestion,
Auditor=@AuditorId,AuditorComment=@Comment,AuditorModifiedDate=getUtcDate()
where AccountNumber=@AccountNumber and CDSADSID=@CDSADSId
--Notification and Log to CDS
Insert Into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
values(@AccountNumber,@CDSID,@NotificationFormat,'CDSAuditorSuggestion','CDSAuditorSuggestion',@CDSADSId)
Insert Into LOG_USER_CDSAuditorSuggestions(AccountNumber,LogMessage,InsertedBy,MessageTo,ChangeType,SuggestionID)
values(@AccountNumber,@NotificationFormat,@LoginID,@CDSID,@SuggestionType,@CDSADSId)
End
Else If(@ApplicationRoleId=91)--SecondLevelAuditor
Begin
Update USER_CDSAuditorSuggestions set SecondLevelAuditor=@LoginID,SecondLevelAuditorAgreementType=@AgreementType,SecondLevelAuditorComment=@Comment,
SecondLevelAuditorModifiedDate=getUtcDate() where AccountNumber=@AccountNumber and CDSADSID=@CDSADSId
--Notification and Log to Both CDS and Auditor
Insert Into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
values(@AccountNumber,@CDSID,@NotificationFormat,'CDSAuditorSuggestion','CDSAuditorSuggestion',@CDSADSId)
Insert Into User_Notification(AccountNumber,NotificationTo,[Notification],NotificationType,[Source],SourceId)
values(@AccountNumber,@AuditorId,@NotificationFormat,'CDSAuditorSuggestion','CDSAuditorSuggestion',@CDSADSId)
Insert Into LOG_USER_CDSAuditorSuggestions(AccountNumber,LogMessage,InsertedBy,MessageTo,ChangeType,SuggestionID)
values(@AccountNumber,@NotificationFormat,@LoginID,@CDSID,@SuggestionType,@CDSADSId)
Insert Into LOG_USER_CDSAuditorSuggestions(AccountNumber,LogMessage,InsertedBy,MessageTo,ChangeType,SuggestionID)
values(@AccountNumber,@NotificationFormat,@LoginID,@AuditorId,@SuggestionType,@CDSADSId)
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @AccountNumber,'CDSAuditorSuggestion'
End Catch
END
GO
|
======================================================
Procedure Name:USER_UpdateDXCode
Description:
with help of this to do modifications which includes Adding and Deletion to User DXCodes.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_UpdateDXCode] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 06/05/2019
-- Description: Adding and Deleting to DxCode
-- =============================================
CREATE PROCEDURE [dbo].[USER_UpdateDXCode]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DxCode varchar(10),
@DxDesc varchar(150),
@Poa varchar(5),
@DxType varchar(20),
@DxPriority int,
@CCMCC varchar(10),
@PhysicianId varchar(30),
@DxDate datetime,
@ApplicationUserId int,
@UserAction varchar(10),
@AnnotationString varchar(250),
@DocumentId int,
@Note varchar(250),
@Reason varchar(250),
@StartId int,
@EndId int,
@SourceType varchar(50),
@DXCodeWeight float
AS
declare @DxCodeId int
BEGIN
SET NOCOUNT OFF;
Begin Try
IF(@UserAction='Add' and @DxCode is not null and @DxCode!='')
Begin
Delete from User_DxCode where AccountNumber=@AccountNumber and DXCode=@DxCode
--User_DxCode
Insert Into User_DxCode(AccountNumber,DXCode,DXDesc,POA,DXType,DXPriority,CCMCC,PhysicianID,DXDate,ApplicationUserId,SourceType,DXCodeWeight)
Values(@AccountNumber,@DxCode,@DxDesc,@Poa,@DxType,@DxPriority,@CCMCC,@PhysicianId,@DxDate,@ApplicationUserId,@SourceType,@DXCodeWeight)
--LOG_USER_DXCode
Insert Into LOG_USER_DXCode(DxCodeId,AccountNumber,DXCode,DXDesc,POA,DXType,DXPriority,CCMCC,PhysicianID,DXDate,ApplicationUserId,RStatus,Reason,Note,SourceType,DXCodeWeight)
select distinct DxCodeId,AccountNumber,DXCode,DXDesc,POA,DXType,DXPriority,CCMCC,PhysicianID,DXDate,ApplicationUserId,1,@Reason,@Note,@SourceType,DXCodeWeight
from User_DxCode where AccountNumber=@AccountNumber and DXCode=@DxCode --and ApplicationUserId=@ApplicationUserId and DXDate=@DxDate
--User_DxCodeEvidence
If(@EndId<>0)
Insert Into User_DxCodeEvidence(AccountNumber,DocumentId,DxCode,AnnotationString,StartId,EndId,ApplicationUserId)
values(@AccountNumber,@DocumentId,@DxCode,@AnnotationString,@StartId,@EndId,@ApplicationUserId)
End
Else If(@UserAction='Delete' and @DxCode is not null and @DxCode!='')
Begin
--LOG_USER_DXCode
Insert Into LOG_USER_DXCode(DxCodeId,AccountNumber,DXCode,DXDesc,POA,DXType,DXPriority,CCMCC,PhysicianID,DXDate,ApplicationUserId,RStatus,Reason,Note,SourceType,DXCodeWeight)
select distinct DxCodeId,AccountNumber,DXCode,DXDesc,POA,DXType,DXPriority,CCMCC,PhysicianID,DXDate,ApplicationUserId,2,@Reason,@Note,@SourceType,DXCodeWeight
from User_DxCode where AccountNumber=@AccountNumber and DXCode=@DxCode --and DXDate=@DxDate
--Also need to delete in NLP_DxCode_Audit when User DownVote the code that was already Upvoted
If exists(select 1 from User_DxCode where AccountNumber=@AccountNumber and DXCode=@DxCode and SourceType='NLP')
Begin
select top 1 @DxCodeId=DXCodeID from User_DxCode where AccountNumber=@AccountNumber and DXCode=@DxCode and SourceType='NLP'
Exec NLP_InsertDxCodeAudit @AccountNumber,@DxCode,@DxCodeId,@ApplicationUserId,@Reason,@Note,'NLPDXCodeDownVoteFromUser',@DXCodeWeight
End
Delete from User_DxCode where AccountNumber=@AccountNumber and DXCode=@DxCode
Update User_DxCodeEvidence set RStatus=2,ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber and DXCode=@DxCode
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @AccountNumber,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:USER_UpdatePCSCode
Description:
with help of this to do modifications which includes Adding and Deletion to User PCSCodes.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_UpdatePCSCode] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 06/05/2019
-- Description: Adding and Deleting to PCSCode
-- =============================================
CREATE PROCEDURE [dbo].[USER_UpdatePCSCode]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@PcsCode varchar(10),
@PcsDesc varchar(150),
@PcsType varchar(20),
@PcsPriority int,
@PhysicianId varchar(30),
@PcsDate datetime,
@ApplicationUserId int,
@UserAction varchar(10),
@AnnotationString varchar(250),
@DocumentId int,
@Note varchar(250),
@Reason varchar(250),
@StartId int,
@EndId int,
@SourceType varchar(50)
AS
declare @PCSCodeId int
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
IF(@UserAction='Add' and @PcsCode is not null and @PcsCode!='')
Begin
Delete from User_PCSCode where AccountNumber=@AccountNumber and PCSCode=@PcsCode and PCSDate=@PcsDate
--User_PcsCode
Insert Into User_PCSCode(AccountNumber,PCSCode,PCSDesc,PCSType,PCSPriority,PhysicianID,PCSDate,ApplicationUserId,SourceType)
values(@AccountNumber,@PcsCode,@PcsDesc,@PcsType,@PcsPriority,@PhysicianId,@PcsDate,@ApplicationUserId,@SourceType)
--LOG_USER_PCSCode
Insert Into LOG_USER_PCSCode(PCSCodeID,AccountNumber,PCSCode,PCSDesc,PCSType,PCSPriority,PhysicianID,PCSDate,ApplicationUserId,RStatus,Reason,Note,SourceType)
select distinct PCSCodeID,AccountNumber,PCSCode,PCSDesc,PCSType,PCSPriority,PhysicianID,PCSDate,ApplicationUserId,1,@Reason,@Note,@SourceType
from User_PCSCode where AccountNumber=@AccountNumber and PCSCode=@PcsCode and PCSDate=@PcsDate
--User_PCSCodeEvidence
If(@EndId<>0)
Insert Into User_PCSCodeEvidence(AccountNumber,DocumentId,PCSCode,AnnotationString,StartId,EndId,ApplicationUserId)
values(@AccountNumber,@DocumentId,@PcsCode,@AnnotationString,@StartId,@EndId,@ApplicationUserId)
End
Else IF(@UserAction='Delete' and @PcsCode is not null and @PcsCode!='')
Begin
--LOG_USER_PCSCode
Insert Into LOG_USER_PCSCode(PCSCodeID,AccountNumber,PCSCode,PCSDesc,PCSType,PCSPriority,PhysicianID,PCSDate,ApplicationUserId,RStatus,Reason,Note,SourceType)
select distinct PCSCodeID,AccountNumber,PCSCode,PCSDesc,PCSType,PCSPriority,PhysicianID,PCSDate,ApplicationUserId,2,@Reason,@Note,@SourceType
from User_PCSCode where AccountNumber=@AccountNumber and PCSCode=@PcsCode and PCSDate=@PcsDate
--Also need to delete in NLP_DxCode_Audit when User DownVote the code that was already Upvoted
If exists(select 1 from User_PCSCode where AccountNumber=@AccountNumber and PCSCode=@PcsCode and PCSDate=@PcsDate and SourceType='NLP')
Begin
select top 1 @PCSCodeId=PCSCodeID from User_PCSCode where AccountNumber=@AccountNumber and PCSCode=@PcsCode and PCSDate=@PcsDate and SourceType='NLP'
Exec NLP_InsertPCSCodeAudit @AccountNumber,@PCSCode,@PCSCodeId,@ApplicationUserId,@Reason,@Note,'NLPPCSCodeDownVoteFromUser'
End
Delete from User_PCSCode where AccountNumber=@AccountNumber and PCSCode=@PcsCode and PCSDate=@PcsDate
Update User_PCSCodeEvidence set RStatus=2,ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber and PCSCode=@PcsCode
End
End Try
Begin Catch
Exec usp_GetDBErrorInfo @AccountNumber,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:USER_UpdatePDXCode
Description:
with help of this to do modifications which includes updating PDX type to DXCodes based on AccountNumber.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_UpdatePDXCode] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: SrinivasA
-- Create date: 06/05/2019
-- Description: Updating PDX to DXCode
-- =============================================
CREATE PROCEDURE [dbo].[USER_UpdatePDXCode]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@DxCode varchar(10),
@PcsCode varchar(10),
@ApplicationUserId int
AS
BEGIN
Begin Try
SET NOCOUNT OFF;
Update User_DxCode set DXType='Sdx' where AccountNumber=@AccountNumber and DXType='Pdx' --and ApplicationUserId=@ApplicationUserId
Update User_DxCode set DXType='Pdx',DXPriority=1 where AccountNumber=@AccountNumber and DXCode=@DxCode --and ApplicationUserId=@ApplicationUserId
Update User_PCSCode set PCSType='PCS2' where AccountNumber=@AccountNumber and PCSType='PCS1' --and ApplicationUserId=@ApplicationUserId
Update User_PCSCode set PCSType='PCS1',PCSPriority=1 where AccountNumber=@AccountNumber and PCSCode=@PcsCode --and ApplicationUserId=@ApplicationUserId
End Try
Begin Catch
Exec usp_GetDBErrorInfo @AccountNumber,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:USER_UpdateQueryAlert
Description:
with help of this to do modifications which includes updates to user queryAlerts.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[USER_UpdateQueryAlert] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Srinivas.A
-- Create date: 25/06/2019
-- Description: User deleting Query and QueryAlerts
-- =============================================
CREATE PROCEDURE [dbo].[USER_UpdateQueryAlert]
-- Add the parameters for the stored procedure here
@AccountNumber varchar(30),
@QueryId int,
@RStatus int,
@QuerySource varchar(50),
@DeletedBy int,
@ReasonForDelete varchar(250)
AS
Declare @InputParamQry varchar(800)
SET @InputParamQry='AccountNumber: '+''+@AccountNumber+''+'|'+
'QueryId: '+''+cast(@QueryId as varchar(50))+''+'|'+
'RStatus: '+''+cast(@RStatus as varchar(50))+''+'|'+
'DeletedBy: '+''+cast(@DeletedBy as varchar(50))+''+'|'+
'QuerySource: '+''+@QuerySource+''+'|'+
'ReasonForDelete: '+''+@ReasonForDelete+''
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT OFF;
Begin Try
If(@QuerySource='Query')
Begin
Update USER_QueryElementResult set Active=@RStatus,ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber and QueryId=@QueryId and Active<>3
Update USER_Query set Active=@RStatus,ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber and QueryId=@QueryId
End
Else If(@QuerySource='QueryAlert')
Begin
Update AQAS_QueryAlertElementResult set Active=@RStatus,ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber and QueryAlertId=@QueryId and Active in (1,2)
Update AQAS_QueryAlertFinalResult set Active=@RStatus,ModifiedDate=getUtcDate() where AccountNumber=@AccountNumber and QueryAlertId=@QueryId and Active in (1,2)
End
Update USER_QueryDeletion set Active=0,ModifiedDate=getUtcDate() where QueryId=@QueryId
Insert Into USER_QueryDeletion(QueryId,QuerySource,DeletedBy,ReasonForDelete,RStatus) values(@QueryId,@QuerySource,@DeletedBy,@ReasonForDelete,@RStatus)
End Try
Begin Catch
Exec usp_GetDBErrorInfo @AccountNumber,'USER'
End Catch
END
GO
|
======================================================
Procedure Name:usp_GetDBErrorInfo
Description:
with help of this to get All Database Error log information while user browsing kpai as well as Analysis Application's.
Schema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 | USE [HRCM]
GO
/****** Object: StoredProcedure [dbo].[usp_GetDBErrorInfo] Script Date: 08/23/2019 14:58:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[usp_GetDBErrorInfo]
@ErrorSchemaParam varchar(1000),
@ErrorApplicationParam varchar(20)
AS
Declare @ErrorNumber INT;
Declare @ErrorState INT;
Declare @ErrorSeverity INT;
Declare @ErrorMessage VARCHAR(4000);
Declare @ErrorProcedureName VARCHAR(128);
Declare @Message varchar(500);
Declare @NewLine AS CHAR(2) = CHAR(13) + CHAR(10);
BEGIN
SET @ErrorNumber=ERROR_NUMBER()
SET @ErrorState=ERROR_STATE()
SET @ErrorSeverity=ERROR_SEVERITY()
SET @ErrorMessage=ERROR_MESSAGE()
SET @ErrorProcedureName=ERROR_PROCEDURE()
--LOG Insertion
insert into DBError(ErrorNumber,ErrorState,ErrorMessage,ErrorProcedureName,ErrorSchema,ErrorApplication)
values(@ErrorNumber,@ErrorState,@ErrorMessage,@ErrorProcedureName,@ErrorSchemaParam,@ErrorApplicationParam)
/*
--DBMail Configuration
SET @Message='Hi ALL,'+@NewLine+@NewLine+'Getting DBSchema ErrorMessage For HRCM In DBError Table.'+@NewLine+@NewLine+'-------------****************-------------'+@NewLine++@NewLine+
'ErrorMessage: '+REPLACE(@ErrorMessage,'''','''')+@NewLine++@NewLine+
'ProcedureName: '+ISNULL(@ErrorProcedureName,'')+@NewLine+@NewLine+'Regards,'+@NewLine+'DB JOB Alerts'+@NewLine+'KPAI Team.'
exec msdb.dbo.sp_send_dbmail 'dbmail_profile','krishnareddyn@kpmd.biz;srinivasavula@kpmd.biz',null,null,
'DBErrorMessage',@Message,'text','normal','normal',null,null,null,0,260,1,256,' ',0,0,0,0,null,null,null
*/
--Send an ErrorInfo to Calling Application
If(@ErrorApplicationParam!='CRI')
RAISERROR (@ErrorMessage, -- Message text.
@ErrorSeverity, -- Severity.
@ErrorState-- State.
);
END
GO
|