diff --git a/db/upgrade/rdb_modern/routines/145-sp_nrt_d_disease_site_postprocessing.sql b/db/upgrade/rdb_modern/routines/145-sp_nrt_d_disease_site_postprocessing.sql new file mode 100644 index 00000000..80410591 --- /dev/null +++ b/db/upgrade/rdb_modern/routines/145-sp_nrt_d_disease_site_postprocessing.sql @@ -0,0 +1,453 @@ +CREATE OR ALTER PROCEDURE dbo.sp_nrt_d_disease_site_postprocessing +@phc_uids nvarchar(max), +@debug bit = 'false' +AS +BEGIN + BEGIN TRY + /* Logging */ + + declare @RowCount_no bigint; + declare @proc_step_no float = 0; + declare @proc_step_name varchar(200) = ''; + declare @batch_id bigint; + declare @dataflow_name varchar(200) = 'DISEASE_SITE POST-Processing'; + declare @package_name varchar(200) = 'RDB_MODERN.sp_nrt_disease_site_postprocessing'; + + set @batch_id = cast((format(getdate(),'yyMMddHHmmss')) as bigint); + + SELECT @ROWCOUNT_NO = 0; + + INSERT INTO [DBO].[JOB_FLOW_LOG] + (BATCH_ID, [DATAFLOW_NAME], [PACKAGE_NAME], [STATUS_TYPE], [STEP_NUMBER], [STEP_NAME], [ROW_COUNT], [Msg_Description1]) + VALUES (@BATCH_ID, @dataflow_name, @package_name, 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO, LEFT (@phc_uids, 199)); + +-------------------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'GENERATING #S_DISEASE_SITE_CD_TRANSLATED'; + + IF OBJECT_ID('#S_DISEASE_SITE_CD_TRANSLATED', 'U') IS NOT NULL + drop table #S_DISEASE_SITE_CD_TRANSLATED; + + SELECT + CAST(TB.ACT_UID AS BIGINT) AS TB_PAM_UID, + TB.SEQ_NBR, + TB.DATAMART_COLUMN_NM, + TB.NBS_CASE_ANSWER_UID, + TB.ANSWER_TXT, + TB.CODE_SET_GROUP_ID, + TB.LAST_CHG_TIME, + METADATA.CODE_SET_NM, + CVG.CODE, + CVG.CODE_SHORT_DESC_TXT AS CODE_SHORT_DESC_TXT + INTO #S_DISEASE_SITE_CD_TRANSLATED + FROM DBO.NRT_PAGE_CASE_ANSWER TB with (nolock) + left join dbo.NRT_INVESTIGATION inv with(nolock) + on TB.act_uid = inv.public_health_case_uid + LEFT JOIN DBO.nrt_srte_Codeset_Group_Metadata METADATA with (nolock) + ON METADATA.CODE_SET_GROUP_ID = TB.CODE_SET_GROUP_ID + LEFT JOIN DBO.nrt_srte_CODE_VALUE_GENERAL CVG with (nolock) + ON CVG.CODE_SET_NM = METADATA.CODE_SET_NM + AND CVG.CODE = TB.ANSWER_TXT + WHERE TB.DATAMART_COLUMN_NM <> 'n/a' + and isnull(tb.batch_id, 1) = isnull(inv.batch_id, 1) + AND QUESTION_IDENTIFIER = 'TUB119' + and TB.ACT_UID in (SELECT value FROM STRING_SPLIT(@phc_uids, ',')) + option (MAXDOP 1); + + if + @debug = 'true' + select @Proc_Step_Name as step, * + from #S_DISEASE_SITE_CD_TRANSLATED; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +--------------------------------------------------------------------------------------------------------------------- + + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'GENERATING #S_DISEASE_SITE'; + + IF OBJECT_ID('#S_DISEASE_SITE', 'U') IS NOT NULL + drop table #S_DISEASE_SITE; + + + SELECT + *, + CASE + WHEN CODE_SET_GROUP_ID IS NULL OR CODE_SET_GROUP_ID = '' + THEN ANSWER_TXT + WHEN CODE_SET_GROUP_ID<>'' THEN CODE_SHORT_DESC_TXT + ELSE ANSWER_TXT + END AS VALUE + INTO #S_DISEASE_SITE + FROM #S_DISEASE_SITE_CD_TRANSLATED with (nolock); + + if + @debug = 'true' + select @Proc_Step_Name as step, * + from #S_DISEASE_SITE; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; +------------------------------------------------------------------------------------------- + + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'Insert keys to nrt_disease_site_group_key '; + + INSERT INTO DBO.NRT_DISEASE_SITE_GROUP_KEY(TB_PAM_UID) + SELECT DISEASE_SITE.TB_PAM_UID FROM (SELECT DISTINCT TB_PAM_UID FROM #S_DISEASE_SITE) DISEASE_SITE + LEFT JOIN DBO.NRT_DISEASE_SITE_GROUP_KEY DISEASE_SITE_GROUP_KEY with (nolock) + ON DISEASE_SITE_GROUP_KEY.TB_PAM_UID = DISEASE_SITE.TB_PAM_UID + where DISEASE_SITE_GROUP_KEY.TB_PAM_UID is null; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'Insert keys to dbo.nrt_disease_site_key'; + + INSERT INTO DBO.NRT_DISEASE_SITE_KEY(TB_PAM_UID, NBS_CASE_ANSWER_UID) + SELECT DISEASE_SITE.TB_PAM_UID, DISEASE_SITE.NBS_CASE_ANSWER_UID FROM (SELECT DISTINCT TB_PAM_UID, NBS_CASE_ANSWER_UID FROM #S_DISEASE_SITE) DISEASE_SITE + LEFT JOIN DBO.NRT_DISEASE_SITE_KEY DISEASE_SITE_KEY with (nolock) + ON DISEASE_SITE_KEY.TB_PAM_UID = DISEASE_SITE.TB_PAM_UID + where DISEASE_SITE_KEY.TB_PAM_UID is null; + + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'GENERATING #D_TB_PAM_TEMP'; + + IF OBJECT_ID('#D_TB_PAM_TEMP', 'U') IS NOT NULL + drop table #D_TB_PAM_TEMP; + + + SELECT DISTINCT D_TB_PAM.TB_PAM_UID + INTO #D_TB_PAM_TEMP + FROM (SELECT DISTINCT TB_PAM_UID FROM DBO.D_TB_PAM WHERE TB_PAM_UID IN (SELECT VALUE FROM STRING_SPLIT(@phc_uids, ','))) D_TB_PAM + LEFT JOIN #S_DISEASE_SITE DISEASE_SITE with (nolock) + ON DISEASE_SITE.TB_PAM_UID = D_TB_PAM.TB_PAM_UID; + + if + @debug = 'true' + select @Proc_Step_Name as step, * + from #D_TB_PAM_TEMP; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'GENERATING #L_DISEASE_SITE_GROUP'; + + IF OBJECT_ID('#L_DISEASE_SITE_GROUP', 'U') IS NOT NULL + drop table #L_DISEASE_SITE_GROUP; + + SELECT D_TB_PAM.TB_PAM_UID, NRT_GROUP_KEY.TB_PAM_UID AS D_DISEASE_SITE_UID , NRT_GROUP_KEY.D_DISEASE_SITE_GROUP_KEY + INTO #L_DISEASE_SITE_GROUP + FROM #D_TB_PAM_TEMP D_TB_PAM with (nolock) + LEFT OUTER JOIN DBO.NRT_DISEASE_SITE_GROUP_KEY NRT_GROUP_KEY with (nolock) + ON NRT_GROUP_KEY.TB_PAM_UID=D_TB_PAM.TB_PAM_UID; + + if + @debug = 'true' + select @Proc_Step_Name as step, * + from #L_DISEASE_SITE_GROUP; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'GENERATING #L_DISEASE_SITE'; + + IF OBJECT_ID('#L_DISEASE_SITE', 'U') IS NOT NULL + drop table #L_DISEASE_SITE; + + SELECT LDSG.TB_PAM_UID, + NRT_DISEASE_SITE_KEY.NBS_CASE_ANSWER_UID, + CASE WHEN LDSG.D_DISEASE_SITE_GROUP_KEY IS NULL THEN 1 ELSE LDSG.D_DISEASE_SITE_GROUP_KEY END AS D_DISEASE_SITE_GROUP_KEY, + CASE WHEN NRT_DISEASE_SITE_KEY.D_DISEASE_SITE_KEY IS NULL THEN 1 ELSE NRT_DISEASE_SITE_KEY.D_DISEASE_SITE_KEY END AS D_DISEASE_SITE_KEY + INTO #L_DISEASE_SITE + FROM #L_DISEASE_SITE_GROUP LDSG with (nolock) + LEFT OUTER JOIN DBO.NRT_DISEASE_SITE_KEY NRT_DISEASE_SITE_KEY with (nolock) + ON NRT_DISEASE_SITE_KEY.TB_PAM_UID=LDSG.TB_PAM_UID; + + if + @debug = 'true' + select @Proc_Step_Name as step, * + from #L_DISEASE_SITE; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'GENERATING #TEMP_D_DISEASE_SITE'; + + IF OBJECT_ID('#TEMP_D_DISEASE_SITE', 'U') IS NOT NULL + drop table #TEMP_D_DISEASE_SITE; + + SELECT LDS.TB_PAM_UID, + LDS.D_DISEASE_SITE_KEY, + SDS.SEQ_NBR, + LDS.D_DISEASE_SITE_GROUP_KEY, + SDS.LAST_CHG_TIME, + SDS.VALUE + INTO #TEMP_D_DISEASE_SITE + FROM #L_DISEASE_SITE LDS with (nolock) + LEFT OUTER JOIN #S_DISEASE_SITE SDS with (nolock) + ON SDS.TB_PAM_UID=LDS.TB_PAM_UID + AND SDS.NBS_CASE_ANSWER_UID= LDS.NBS_CASE_ANSWER_UID; + + if + @debug = 'true' + select @Proc_Step_Name as step, * + from #TEMP_D_DISEASE_SITE; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'Insert records to d_disease_site_group'; + + INSERT INTO DBO.D_DISEASE_SITE_GROUP + ([D_DISEASE_SITE_GROUP_KEY]) + SELECT + DISTINCT + T.D_DISEASE_SITE_GROUP_KEY + FROM #TEMP_D_DISEASE_SITE T with (nolock) + LEFT JOIN DBO.D_DISEASE_SITE_GROUP DSG with (nolock) + ON DSG.D_DISEASE_SITE_GROUP_KEY= T.D_DISEASE_SITE_GROUP_KEY + WHERE DSG.D_DISEASE_SITE_GROUP_KEY IS NULL; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'Update d_disease_site'; + + UPDATE DBO.D_DISEASE_SITE + SET + TB_PAM_UID = T.TB_PAM_UID, + SEQ_NBR = T.SEQ_NBR, + LAST_CHG_TIME = T.LAST_CHG_TIME, + VALUE = T.VALUE + FROM #TEMP_D_DISEASE_SITE T with (nolock) + INNER JOIN DBO.D_DISEASE_SITE D_DISEASE_SITE with (nolock) + ON D_DISEASE_SITE.TB_PAM_UID= T.TB_PAM_UID + and D_DISEASE_SITE.D_DISEASE_SITE_KEY = T.D_DISEASE_SITE_KEY + WHERE D_DISEASE_SITE.D_DISEASE_SITE_KEY IS NOT NULL; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'Insert records to d_disease_site'; + + INSERT INTO DBO.D_DISEASE_SITE + ([TB_PAM_UID] + ,[D_DISEASE_SITE_KEY] + ,[SEQ_NBR] + ,[D_DISEASE_SITE_GROUP_KEY] + ,[LAST_CHG_TIME] + ,[VALUE]) + SELECT + T.TB_PAM_UID, + T.D_DISEASE_SITE_KEY, + T.SEQ_NBR, + T.D_DISEASE_SITE_GROUP_KEY, + T.LAST_CHG_TIME, + T.VALUE + FROM #TEMP_D_DISEASE_SITE T with (nolock) + LEFT JOIN DBO.D_DISEASE_SITE D_DISEASE_SITE with (nolock) + ON D_DISEASE_SITE.TB_PAM_UID= T.TB_PAM_UID + and D_DISEASE_SITE.D_DISEASE_SITE_KEY = T.D_DISEASE_SITE_KEY + WHERE D_DISEASE_SITE.TB_PAM_UID IS NULL; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; +------------------------------------------------------------------------------------------- + + SET @Proc_Step_no = 999; + + SET @Proc_Step_Name = 'SP_COMPLETE'; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'COMPLETE', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + +------------------------------------------------------------------------------------------- + END TRY + + BEGIN CATCH + + IF @@TRANCOUNT > 0 + BEGIN + ROLLBACK TRANSACTION; + END; + + DECLARE @FullErrorMessage VARCHAR(8000) = + 'Error Number: ' + CAST(ERROR_NUMBER() AS VARCHAR(10)) + CHAR(13) + CHAR(10) + -- Carriage return and line feed for new lines + 'Error Severity: ' + CAST(ERROR_SEVERITY() AS VARCHAR(10)) + CHAR(13) + CHAR(10) + + 'Error State: ' + CAST(ERROR_STATE() AS VARCHAR(10)) + CHAR(13) + CHAR(10) + + 'Error Line: ' + CAST(ERROR_LINE() AS VARCHAR(10)) + CHAR(13) + CHAR(10) + + 'Error Message: ' + ERROR_MESSAGE(); + + + INSERT INTO dbo.[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[Error_Description] + ,[row_count] + ) + VALUES ( + @batch_id + ,@dataflow_name + ,@package_name + ,'ERROR' + ,@Proc_Step_no + , @Proc_Step_name + , @FullErrorMessage + ,0 + ); + + return -1 ; + + END CATCH + +END; + +---------------------------------------------------END OF PROCEDURE--------------------------------------------------------------------- diff --git a/db/upgrade/rdb_modern/tables/039-alter_table_add_index.sql b/db/upgrade/rdb_modern/tables/039-alter_table_add_index.sql index e09b7d4a..49826a19 100644 --- a/db/upgrade/rdb_modern/tables/039-alter_table_add_index.sql +++ b/db/upgrade/rdb_modern/tables/039-alter_table_add_index.sql @@ -210,5 +210,10 @@ BEGIN CREATE INDEX idx_nrt_inv_notf_notf_uid ON dbo.nrt_investigation_notification (notification_uid); END +IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name = 'idx_nrt_page_case_answer_act_uid' AND object_id = OBJECT_ID('dbo.nrt_page_case_answer')) +BEGIN +CREATE INDEX idx_nrt_page_case_answer_act_uid ON dbo.nrt_page_case_answer (act_uid); +END + diff --git a/db/upgrade/rdb_modern/tables/065-create_nrt_disease_site_group_key.sql b/db/upgrade/rdb_modern/tables/065-create_nrt_disease_site_group_key.sql new file mode 100644 index 00000000..5a814809 --- /dev/null +++ b/db/upgrade/rdb_modern/tables/065-create_nrt_disease_site_group_key.sql @@ -0,0 +1,15 @@ +IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'nrt_disease_site_group_key' and xtype = 'U') + BEGIN + CREATE TABLE dbo.nrt_disease_site_group_key ( + D_DISEASE_SITE_GROUP_KEY bigint IDENTITY (2,1) NOT NULL, + TB_PAM_UID bigint NOT NULL + + ); + + declare @max bigint; + select @max=max(D_DISEASE_SITE_GROUP_KEY)+1 from dbo.d_disease_site_group ; + select @max; + if @max IS NULL --check when max is returned as null + SET @max = 2; -- default to 2 + DBCC CHECKIDENT ('dbo.nrt_disease_site_group_key', RESEED, @max); + END diff --git a/db/upgrade/rdb_modern/tables/070-create_nrt_disease_site_key.sql b/db/upgrade/rdb_modern/tables/070-create_nrt_disease_site_key.sql new file mode 100644 index 00000000..80a4438b --- /dev/null +++ b/db/upgrade/rdb_modern/tables/070-create_nrt_disease_site_key.sql @@ -0,0 +1,16 @@ +IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'nrt_disease_site_key' and xtype = 'U') + BEGIN + CREATE TABLE dbo.nrt_disease_site_key ( + D_DISEASE_SITE_KEY bigint IDENTITY (2,1) NOT NULL, + NBS_Case_Answer_UID bigint NOT NULL, + TB_PAM_UID bigint NOT NULL + + ); + + declare @max bigint; + select @max=max(D_DISEASE_SITE_KEY)+1 from dbo.d_disease_site ; + select @max; + if @max IS NULL --check when max is returned as null + SET @max = 2; -- default to 2 + DBCC CHECKIDENT ('dbo.nrt_disease_site_key', RESEED, @max); + END diff --git a/db/upgrade/rdb_modern/tables/075-create_d_disease_site_group.sql b/db/upgrade/rdb_modern/tables/075-create_d_disease_site_group.sql new file mode 100644 index 00000000..75834632 --- /dev/null +++ b/db/upgrade/rdb_modern/tables/075-create_d_disease_site_group.sql @@ -0,0 +1,15 @@ +--CNDE-2346 +IF NOT EXISTS (SELECT 1 + FROM sysobjects + WHERE name = 'D_DISEASE_SITE_GROUP' + and xtype = 'U') + +BEGIN + CREATE TABLE DBO.D_DISEASE_SITE_GROUP ( + D_DISEASE_SITE_GROUP_KEY BIGINT NOT NULL , + PRIMARY KEY + ( + D_DISEASE_SITE_GROUP_KEY + ) + ); +END; diff --git a/db/upgrade/rdb_modern/tables/080-create_d_disease_site.sql b/db/upgrade/rdb_modern/tables/080-create_d_disease_site.sql new file mode 100644 index 00000000..e05a8ddc --- /dev/null +++ b/db/upgrade/rdb_modern/tables/080-create_d_disease_site.sql @@ -0,0 +1,23 @@ +--CNDE-2346 Foreign key constraints will be added after the completion of TB Datamart migration.*/ +IF NOT EXISTS (SELECT 1 + FROM sysobjects + WHERE name = 'D_DISEASE_SITE' + and xtype = 'U') + +BEGIN + CREATE TABLE DBO.D_DISEASE_SITE ( + TB_PAM_UID BIGINT NOT NULL , + D_DISEASE_SITE_KEY BIGINT NOT NULL , + SEQ_NBR INT NULL , + D_DISEASE_SITE_GROUP_KEY BIGINT NOT NULL , + LAST_CHG_TIME DATETIME NULL , + VALUE VARCHAR (250) NULL , + PRIMARY KEY + ( + D_DISEASE_SITE_KEY, + TB_PAM_UID + ) + ); +END; + + diff --git a/liquibase-service/src/main/resources/db/changelog/db.rdb_modern.changelog-16.1.yaml b/liquibase-service/src/main/resources/db/changelog/db.rdb_modern.changelog-16.1.yaml index c4fd3e25..640af447 100644 --- a/liquibase-service/src/main/resources/db/changelog/db.rdb_modern.changelog-16.1.yaml +++ b/liquibase-service/src/main/resources/db/changelog/db.rdb_modern.changelog-16.1.yaml @@ -1175,4 +1175,44 @@ databaseChangeLog: changes: - sqlFile: path: 140-sp_bmird_strep_pneumo_datamart_postprocessing-001.sql + splitStatements: false + - changeSet: + id: 195 + author: liquibase + runOnChange: true + changes: + - sqlFile: + path: 075-create_d_disease_site_group-001.sql + splitStatements: false + - changeSet: + id: 200 + author: liquibase + runOnChange: true + changes: + - sqlFile: + path: 080-create_d_disease_site-001.sql + splitStatements: false + - changeSet: + id: 205 + author: liquibase + runOnChange: true + changes: + - sqlFile: + path: 065-create_nrt_disease_site_group_key-001.sql + splitStatements: false + - changeSet: + id: 210 + author: liquibase + runOnChange: true + changes: + - sqlFile: + path: 070-create_nrt_disease_site_key-001.sql + splitStatements: false + - changeSet: + id: 215 + author: liquibase + runOnChange: true + changes: + - sqlFile: + path: 145-sp_nrt_d_disease_site_postprocessing-001.sql splitStatements: false \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb_modern/routines/145-sp_nrt_d_disease_site_postprocessing-001.sql b/liquibase-service/src/main/resources/db/rdb_modern/routines/145-sp_nrt_d_disease_site_postprocessing-001.sql new file mode 100644 index 00000000..80410591 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb_modern/routines/145-sp_nrt_d_disease_site_postprocessing-001.sql @@ -0,0 +1,453 @@ +CREATE OR ALTER PROCEDURE dbo.sp_nrt_d_disease_site_postprocessing +@phc_uids nvarchar(max), +@debug bit = 'false' +AS +BEGIN + BEGIN TRY + /* Logging */ + + declare @RowCount_no bigint; + declare @proc_step_no float = 0; + declare @proc_step_name varchar(200) = ''; + declare @batch_id bigint; + declare @dataflow_name varchar(200) = 'DISEASE_SITE POST-Processing'; + declare @package_name varchar(200) = 'RDB_MODERN.sp_nrt_disease_site_postprocessing'; + + set @batch_id = cast((format(getdate(),'yyMMddHHmmss')) as bigint); + + SELECT @ROWCOUNT_NO = 0; + + INSERT INTO [DBO].[JOB_FLOW_LOG] + (BATCH_ID, [DATAFLOW_NAME], [PACKAGE_NAME], [STATUS_TYPE], [STEP_NUMBER], [STEP_NAME], [ROW_COUNT], [Msg_Description1]) + VALUES (@BATCH_ID, @dataflow_name, @package_name, 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO, LEFT (@phc_uids, 199)); + +-------------------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'GENERATING #S_DISEASE_SITE_CD_TRANSLATED'; + + IF OBJECT_ID('#S_DISEASE_SITE_CD_TRANSLATED', 'U') IS NOT NULL + drop table #S_DISEASE_SITE_CD_TRANSLATED; + + SELECT + CAST(TB.ACT_UID AS BIGINT) AS TB_PAM_UID, + TB.SEQ_NBR, + TB.DATAMART_COLUMN_NM, + TB.NBS_CASE_ANSWER_UID, + TB.ANSWER_TXT, + TB.CODE_SET_GROUP_ID, + TB.LAST_CHG_TIME, + METADATA.CODE_SET_NM, + CVG.CODE, + CVG.CODE_SHORT_DESC_TXT AS CODE_SHORT_DESC_TXT + INTO #S_DISEASE_SITE_CD_TRANSLATED + FROM DBO.NRT_PAGE_CASE_ANSWER TB with (nolock) + left join dbo.NRT_INVESTIGATION inv with(nolock) + on TB.act_uid = inv.public_health_case_uid + LEFT JOIN DBO.nrt_srte_Codeset_Group_Metadata METADATA with (nolock) + ON METADATA.CODE_SET_GROUP_ID = TB.CODE_SET_GROUP_ID + LEFT JOIN DBO.nrt_srte_CODE_VALUE_GENERAL CVG with (nolock) + ON CVG.CODE_SET_NM = METADATA.CODE_SET_NM + AND CVG.CODE = TB.ANSWER_TXT + WHERE TB.DATAMART_COLUMN_NM <> 'n/a' + and isnull(tb.batch_id, 1) = isnull(inv.batch_id, 1) + AND QUESTION_IDENTIFIER = 'TUB119' + and TB.ACT_UID in (SELECT value FROM STRING_SPLIT(@phc_uids, ',')) + option (MAXDOP 1); + + if + @debug = 'true' + select @Proc_Step_Name as step, * + from #S_DISEASE_SITE_CD_TRANSLATED; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +--------------------------------------------------------------------------------------------------------------------- + + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'GENERATING #S_DISEASE_SITE'; + + IF OBJECT_ID('#S_DISEASE_SITE', 'U') IS NOT NULL + drop table #S_DISEASE_SITE; + + + SELECT + *, + CASE + WHEN CODE_SET_GROUP_ID IS NULL OR CODE_SET_GROUP_ID = '' + THEN ANSWER_TXT + WHEN CODE_SET_GROUP_ID<>'' THEN CODE_SHORT_DESC_TXT + ELSE ANSWER_TXT + END AS VALUE + INTO #S_DISEASE_SITE + FROM #S_DISEASE_SITE_CD_TRANSLATED with (nolock); + + if + @debug = 'true' + select @Proc_Step_Name as step, * + from #S_DISEASE_SITE; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; +------------------------------------------------------------------------------------------- + + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'Insert keys to nrt_disease_site_group_key '; + + INSERT INTO DBO.NRT_DISEASE_SITE_GROUP_KEY(TB_PAM_UID) + SELECT DISEASE_SITE.TB_PAM_UID FROM (SELECT DISTINCT TB_PAM_UID FROM #S_DISEASE_SITE) DISEASE_SITE + LEFT JOIN DBO.NRT_DISEASE_SITE_GROUP_KEY DISEASE_SITE_GROUP_KEY with (nolock) + ON DISEASE_SITE_GROUP_KEY.TB_PAM_UID = DISEASE_SITE.TB_PAM_UID + where DISEASE_SITE_GROUP_KEY.TB_PAM_UID is null; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'Insert keys to dbo.nrt_disease_site_key'; + + INSERT INTO DBO.NRT_DISEASE_SITE_KEY(TB_PAM_UID, NBS_CASE_ANSWER_UID) + SELECT DISEASE_SITE.TB_PAM_UID, DISEASE_SITE.NBS_CASE_ANSWER_UID FROM (SELECT DISTINCT TB_PAM_UID, NBS_CASE_ANSWER_UID FROM #S_DISEASE_SITE) DISEASE_SITE + LEFT JOIN DBO.NRT_DISEASE_SITE_KEY DISEASE_SITE_KEY with (nolock) + ON DISEASE_SITE_KEY.TB_PAM_UID = DISEASE_SITE.TB_PAM_UID + where DISEASE_SITE_KEY.TB_PAM_UID is null; + + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'GENERATING #D_TB_PAM_TEMP'; + + IF OBJECT_ID('#D_TB_PAM_TEMP', 'U') IS NOT NULL + drop table #D_TB_PAM_TEMP; + + + SELECT DISTINCT D_TB_PAM.TB_PAM_UID + INTO #D_TB_PAM_TEMP + FROM (SELECT DISTINCT TB_PAM_UID FROM DBO.D_TB_PAM WHERE TB_PAM_UID IN (SELECT VALUE FROM STRING_SPLIT(@phc_uids, ','))) D_TB_PAM + LEFT JOIN #S_DISEASE_SITE DISEASE_SITE with (nolock) + ON DISEASE_SITE.TB_PAM_UID = D_TB_PAM.TB_PAM_UID; + + if + @debug = 'true' + select @Proc_Step_Name as step, * + from #D_TB_PAM_TEMP; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'GENERATING #L_DISEASE_SITE_GROUP'; + + IF OBJECT_ID('#L_DISEASE_SITE_GROUP', 'U') IS NOT NULL + drop table #L_DISEASE_SITE_GROUP; + + SELECT D_TB_PAM.TB_PAM_UID, NRT_GROUP_KEY.TB_PAM_UID AS D_DISEASE_SITE_UID , NRT_GROUP_KEY.D_DISEASE_SITE_GROUP_KEY + INTO #L_DISEASE_SITE_GROUP + FROM #D_TB_PAM_TEMP D_TB_PAM with (nolock) + LEFT OUTER JOIN DBO.NRT_DISEASE_SITE_GROUP_KEY NRT_GROUP_KEY with (nolock) + ON NRT_GROUP_KEY.TB_PAM_UID=D_TB_PAM.TB_PAM_UID; + + if + @debug = 'true' + select @Proc_Step_Name as step, * + from #L_DISEASE_SITE_GROUP; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'GENERATING #L_DISEASE_SITE'; + + IF OBJECT_ID('#L_DISEASE_SITE', 'U') IS NOT NULL + drop table #L_DISEASE_SITE; + + SELECT LDSG.TB_PAM_UID, + NRT_DISEASE_SITE_KEY.NBS_CASE_ANSWER_UID, + CASE WHEN LDSG.D_DISEASE_SITE_GROUP_KEY IS NULL THEN 1 ELSE LDSG.D_DISEASE_SITE_GROUP_KEY END AS D_DISEASE_SITE_GROUP_KEY, + CASE WHEN NRT_DISEASE_SITE_KEY.D_DISEASE_SITE_KEY IS NULL THEN 1 ELSE NRT_DISEASE_SITE_KEY.D_DISEASE_SITE_KEY END AS D_DISEASE_SITE_KEY + INTO #L_DISEASE_SITE + FROM #L_DISEASE_SITE_GROUP LDSG with (nolock) + LEFT OUTER JOIN DBO.NRT_DISEASE_SITE_KEY NRT_DISEASE_SITE_KEY with (nolock) + ON NRT_DISEASE_SITE_KEY.TB_PAM_UID=LDSG.TB_PAM_UID; + + if + @debug = 'true' + select @Proc_Step_Name as step, * + from #L_DISEASE_SITE; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'GENERATING #TEMP_D_DISEASE_SITE'; + + IF OBJECT_ID('#TEMP_D_DISEASE_SITE', 'U') IS NOT NULL + drop table #TEMP_D_DISEASE_SITE; + + SELECT LDS.TB_PAM_UID, + LDS.D_DISEASE_SITE_KEY, + SDS.SEQ_NBR, + LDS.D_DISEASE_SITE_GROUP_KEY, + SDS.LAST_CHG_TIME, + SDS.VALUE + INTO #TEMP_D_DISEASE_SITE + FROM #L_DISEASE_SITE LDS with (nolock) + LEFT OUTER JOIN #S_DISEASE_SITE SDS with (nolock) + ON SDS.TB_PAM_UID=LDS.TB_PAM_UID + AND SDS.NBS_CASE_ANSWER_UID= LDS.NBS_CASE_ANSWER_UID; + + if + @debug = 'true' + select @Proc_Step_Name as step, * + from #TEMP_D_DISEASE_SITE; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'Insert records to d_disease_site_group'; + + INSERT INTO DBO.D_DISEASE_SITE_GROUP + ([D_DISEASE_SITE_GROUP_KEY]) + SELECT + DISTINCT + T.D_DISEASE_SITE_GROUP_KEY + FROM #TEMP_D_DISEASE_SITE T with (nolock) + LEFT JOIN DBO.D_DISEASE_SITE_GROUP DSG with (nolock) + ON DSG.D_DISEASE_SITE_GROUP_KEY= T.D_DISEASE_SITE_GROUP_KEY + WHERE DSG.D_DISEASE_SITE_GROUP_KEY IS NULL; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'Update d_disease_site'; + + UPDATE DBO.D_DISEASE_SITE + SET + TB_PAM_UID = T.TB_PAM_UID, + SEQ_NBR = T.SEQ_NBR, + LAST_CHG_TIME = T.LAST_CHG_TIME, + VALUE = T.VALUE + FROM #TEMP_D_DISEASE_SITE T with (nolock) + INNER JOIN DBO.D_DISEASE_SITE D_DISEASE_SITE with (nolock) + ON D_DISEASE_SITE.TB_PAM_UID= T.TB_PAM_UID + and D_DISEASE_SITE.D_DISEASE_SITE_KEY = T.D_DISEASE_SITE_KEY + WHERE D_DISEASE_SITE.D_DISEASE_SITE_KEY IS NOT NULL; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------- + + BEGIN TRANSACTION + + SET + @PROC_STEP_NO = @PROC_STEP_NO + 1; + SET + @PROC_STEP_NAME = 'Insert records to d_disease_site'; + + INSERT INTO DBO.D_DISEASE_SITE + ([TB_PAM_UID] + ,[D_DISEASE_SITE_KEY] + ,[SEQ_NBR] + ,[D_DISEASE_SITE_GROUP_KEY] + ,[LAST_CHG_TIME] + ,[VALUE]) + SELECT + T.TB_PAM_UID, + T.D_DISEASE_SITE_KEY, + T.SEQ_NBR, + T.D_DISEASE_SITE_GROUP_KEY, + T.LAST_CHG_TIME, + T.VALUE + FROM #TEMP_D_DISEASE_SITE T with (nolock) + LEFT JOIN DBO.D_DISEASE_SITE D_DISEASE_SITE with (nolock) + ON D_DISEASE_SITE.TB_PAM_UID= T.TB_PAM_UID + and D_DISEASE_SITE.D_DISEASE_SITE_KEY = T.D_DISEASE_SITE_KEY + WHERE D_DISEASE_SITE.TB_PAM_UID IS NULL; + + SELECT @RowCount_no = @@ROWCOUNT; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'START', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + + COMMIT TRANSACTION; +------------------------------------------------------------------------------------------- + + SET @Proc_Step_no = 999; + + SET @Proc_Step_Name = 'SP_COMPLETE'; + + INSERT INTO [dbo].[job_flow_log] + (batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count]) + VALUES (@batch_id, @dataflow_name, @package_name, 'COMPLETE', @Proc_Step_no, @Proc_Step_Name, + @RowCount_no); + +------------------------------------------------------------------------------------------- + END TRY + + BEGIN CATCH + + IF @@TRANCOUNT > 0 + BEGIN + ROLLBACK TRANSACTION; + END; + + DECLARE @FullErrorMessage VARCHAR(8000) = + 'Error Number: ' + CAST(ERROR_NUMBER() AS VARCHAR(10)) + CHAR(13) + CHAR(10) + -- Carriage return and line feed for new lines + 'Error Severity: ' + CAST(ERROR_SEVERITY() AS VARCHAR(10)) + CHAR(13) + CHAR(10) + + 'Error State: ' + CAST(ERROR_STATE() AS VARCHAR(10)) + CHAR(13) + CHAR(10) + + 'Error Line: ' + CAST(ERROR_LINE() AS VARCHAR(10)) + CHAR(13) + CHAR(10) + + 'Error Message: ' + ERROR_MESSAGE(); + + + INSERT INTO dbo.[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[Error_Description] + ,[row_count] + ) + VALUES ( + @batch_id + ,@dataflow_name + ,@package_name + ,'ERROR' + ,@Proc_Step_no + , @Proc_Step_name + , @FullErrorMessage + ,0 + ); + + return -1 ; + + END CATCH + +END; + +---------------------------------------------------END OF PROCEDURE--------------------------------------------------------------------- diff --git a/liquibase-service/src/main/resources/db/rdb_modern/tables/039-alter_table_add_index-001.sql b/liquibase-service/src/main/resources/db/rdb_modern/tables/039-alter_table_add_index-001.sql index 1b80d16e..5cbb0373 100644 --- a/liquibase-service/src/main/resources/db/rdb_modern/tables/039-alter_table_add_index-001.sql +++ b/liquibase-service/src/main/resources/db/rdb_modern/tables/039-alter_table_add_index-001.sql @@ -210,6 +210,11 @@ BEGIN CREATE INDEX idx_nrt_inv_notf_notf_uid ON dbo.nrt_investigation_notification (notification_uid); END +IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name = 'idx_nrt_page_case_answer_act_uid' AND object_id = OBJECT_ID('dbo.nrt_page_case_answer')) +BEGIN +CREATE INDEX idx_nrt_page_case_answer_act_uid ON dbo.nrt_page_case_answer (act_uid); +END + diff --git a/liquibase-service/src/main/resources/db/rdb_modern/tables/065-create_nrt_disease_site_group_key-001.sql b/liquibase-service/src/main/resources/db/rdb_modern/tables/065-create_nrt_disease_site_group_key-001.sql new file mode 100644 index 00000000..5a814809 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb_modern/tables/065-create_nrt_disease_site_group_key-001.sql @@ -0,0 +1,15 @@ +IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'nrt_disease_site_group_key' and xtype = 'U') + BEGIN + CREATE TABLE dbo.nrt_disease_site_group_key ( + D_DISEASE_SITE_GROUP_KEY bigint IDENTITY (2,1) NOT NULL, + TB_PAM_UID bigint NOT NULL + + ); + + declare @max bigint; + select @max=max(D_DISEASE_SITE_GROUP_KEY)+1 from dbo.d_disease_site_group ; + select @max; + if @max IS NULL --check when max is returned as null + SET @max = 2; -- default to 2 + DBCC CHECKIDENT ('dbo.nrt_disease_site_group_key', RESEED, @max); + END diff --git a/liquibase-service/src/main/resources/db/rdb_modern/tables/070-create_nrt_disease_site_key-001.sql b/liquibase-service/src/main/resources/db/rdb_modern/tables/070-create_nrt_disease_site_key-001.sql new file mode 100644 index 00000000..80a4438b --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb_modern/tables/070-create_nrt_disease_site_key-001.sql @@ -0,0 +1,16 @@ +IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'nrt_disease_site_key' and xtype = 'U') + BEGIN + CREATE TABLE dbo.nrt_disease_site_key ( + D_DISEASE_SITE_KEY bigint IDENTITY (2,1) NOT NULL, + NBS_Case_Answer_UID bigint NOT NULL, + TB_PAM_UID bigint NOT NULL + + ); + + declare @max bigint; + select @max=max(D_DISEASE_SITE_KEY)+1 from dbo.d_disease_site ; + select @max; + if @max IS NULL --check when max is returned as null + SET @max = 2; -- default to 2 + DBCC CHECKIDENT ('dbo.nrt_disease_site_key', RESEED, @max); + END diff --git a/liquibase-service/src/main/resources/db/rdb_modern/tables/075-create_d_disease_site_group-001.sql b/liquibase-service/src/main/resources/db/rdb_modern/tables/075-create_d_disease_site_group-001.sql new file mode 100644 index 00000000..75834632 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb_modern/tables/075-create_d_disease_site_group-001.sql @@ -0,0 +1,15 @@ +--CNDE-2346 +IF NOT EXISTS (SELECT 1 + FROM sysobjects + WHERE name = 'D_DISEASE_SITE_GROUP' + and xtype = 'U') + +BEGIN + CREATE TABLE DBO.D_DISEASE_SITE_GROUP ( + D_DISEASE_SITE_GROUP_KEY BIGINT NOT NULL , + PRIMARY KEY + ( + D_DISEASE_SITE_GROUP_KEY + ) + ); +END; diff --git a/liquibase-service/src/main/resources/db/rdb_modern/tables/080-create_d_disease_site-001.sql b/liquibase-service/src/main/resources/db/rdb_modern/tables/080-create_d_disease_site-001.sql new file mode 100644 index 00000000..e05a8ddc --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb_modern/tables/080-create_d_disease_site-001.sql @@ -0,0 +1,23 @@ +--CNDE-2346 Foreign key constraints will be added after the completion of TB Datamart migration.*/ +IF NOT EXISTS (SELECT 1 + FROM sysobjects + WHERE name = 'D_DISEASE_SITE' + and xtype = 'U') + +BEGIN + CREATE TABLE DBO.D_DISEASE_SITE ( + TB_PAM_UID BIGINT NOT NULL , + D_DISEASE_SITE_KEY BIGINT NOT NULL , + SEQ_NBR INT NULL , + D_DISEASE_SITE_GROUP_KEY BIGINT NOT NULL , + LAST_CHG_TIME DATETIME NULL , + VALUE VARCHAR (250) NULL , + PRIMARY KEY + ( + D_DISEASE_SITE_KEY, + TB_PAM_UID + ) + ); +END; + + diff --git a/post-processing-service/src/main/java/gov/cdc/etldatapipeline/postprocessingservice/repository/InvestigationRepository.java b/post-processing-service/src/main/java/gov/cdc/etldatapipeline/postprocessingservice/repository/InvestigationRepository.java index 5715f306..ac008a97 100644 --- a/post-processing-service/src/main/java/gov/cdc/etldatapipeline/postprocessingservice/repository/InvestigationRepository.java +++ b/post-processing-service/src/main/java/gov/cdc/etldatapipeline/postprocessingservice/repository/InvestigationRepository.java @@ -62,6 +62,9 @@ public interface InvestigationRepository extends JpaRepository processInvestigation(String keyTopic, Entity entity, processTopic(keyTopic, CASE_COUNT, ids, investigationRepository::executeStoredProcForCaseCount); + + if(diseaseSiteEnable){ + processTopic(keyTopic, D_DISEASE_SITE, ids, investigationRepository::executeStoredProcForDDiseaseSite); + } + return dmData; } diff --git a/post-processing-service/src/main/resources/application.yaml b/post-processing-service/src/main/resources/application.yaml index 890c095c..c6522633 100644 --- a/post-processing-service/src/main/resources/application.yaml +++ b/post-processing-service/src/main/resources/application.yaml @@ -39,6 +39,7 @@ spring: javax.persistence.query.timeout: -1 featureFlag: event-metric-enable: ${FF_EVENT_METRIC_ENABLE:false} + disease-site-enable: ${FF_D_DISEASE_SITE_ENABLE:false} service: fixed-delay: cached-ids: ${FIXED_DELAY_ID:20000} diff --git a/post-processing-service/src/test/java/gov/cdc/etldatapipeline/postprocessingservice/service/PostProcessingServiceTest.java b/post-processing-service/src/test/java/gov/cdc/etldatapipeline/postprocessingservice/service/PostProcessingServiceTest.java index d9b06157..47e1748e 100644 --- a/post-processing-service/src/test/java/gov/cdc/etldatapipeline/postprocessingservice/service/PostProcessingServiceTest.java +++ b/post-processing-service/src/test/java/gov/cdc/etldatapipeline/postprocessingservice/service/PostProcessingServiceTest.java @@ -137,6 +137,10 @@ void testPostProcessOrganizationMessage() { void testPostProcessInvestigationMessage() { String topic = "dummy_investigation"; String key = "{\"payload\":{\"public_health_case_uid\":123}}"; + boolean diseaseSiteEnable = true; + + // DISEASE SITE ENABLED + postProcessingServiceMock.setDiseaseSiteEnable(diseaseSiteEnable); postProcessingServiceMock.postProcessMessage(topic, key, key); postProcessingServiceMock.processCachedIds(); @@ -144,11 +148,16 @@ void testPostProcessInvestigationMessage() { String expectedPublicHealthCaseIdsString = "123"; verify(investigationRepositoryMock).executeStoredProcForPublicHealthCaseIds(expectedPublicHealthCaseIdsString); verify(investigationRepositoryMock).executeStoredProcForFPageCase(expectedPublicHealthCaseIdsString); + + if(diseaseSiteEnable) + verify(investigationRepositoryMock).executeStoredProcForDDiseaseSite(expectedPublicHealthCaseIdsString); + verify(investigationRepositoryMock).executeStoredProcForCaseCount(expectedPublicHealthCaseIdsString); verify(investigationRepositoryMock, never()).executeStoredProcForPageBuilder(anyLong(), anyString()); + List logs = listAppender.list; - assertEquals(8, logs.size()); + assertEquals(10, logs.size()); assertTrue(logs.get(2).getFormattedMessage().contains(INVESTIGATION.getStoredProcedure())); assertTrue(logs.get(5).getMessage().contains(PostProcessingService.SP_EXECUTION_COMPLETED)); }