Skip to content

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

======================================================

Procedure Name:CIRS_GetDocumentsToFormat

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