Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
db71f53
Update column widths for HIV case management and datamart tables
ericnagel Jun 1, 2026
52c3b03
Formatting so it's readable
ericnagel Jun 2, 2026
c6cc846
Make sure the column isn't already varchar(100) NULL before altering
ericnagel Jun 2, 2026
2d9cd46
Just a SQL comment to help trace data
ericnagel Jun 2, 2026
0035db8
conditional logic for fld_foll_up_expected_in
ericnagel Jun 4, 2026
083e923
MODIFY MISMATCHED COLUMN TYPES
ericnagel Jun 4, 2026
b53a239
Needed to increase this column, too
ericnagel Jun 4, 2026
14a0eda
This field needs to be wider, but there isn't enough room to go to 10…
ericnagel Jun 4, 2026
241e0ce
Values and alignment going from nbs_odse.dbo.case_management to [RDB_…
ericnagel Jun 4, 2026
38c032d
86 this commented-out old code
ericnagel Jun 4, 2026
eb055bf
Proper values in [STD_HIV_DATAMART]
ericnagel Jun 4, 2026
ac37f63
Removing some code that I used for this branch, but was a fix for som…
ericnagel Jun 4, 2026
e5780c5
Updates the functional test
ericnagel Jun 4, 2026
7d285dc
More updates to existing functional tests
ericnagel Jun 5, 2026
a4c93dc
Updated notification plans
ericnagel Jun 5, 2026
8c443b3
Do not turn on CDC for tmp_DynDM* tables
ericnagel Jun 5, 2026
e845c9d
We need this to fix the "Operand type clash: date is incompatible wit…
ericnagel Jun 5, 2026
5a0b3e0
Functional test for HIV Investigation
ericnagel Jun 5, 2026
ba3e5b6
Fix the nested queries
ericnagel Jun 5, 2026
828717b
Move this block & formatting
ericnagel Jun 5, 2026
2213ffb
Fighting this formatting
ericnagel Jun 5, 2026
3017a53
Better queries and examine only what we're looking for
ericnagel Jun 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ BEGIN
,[FL_FUP_INIT_ASSGN_DT] = CM.FL_FUP_INIT_ASSGN_DT
,[FL_FUP_INTERNET_OUTCOME_CD] = CM.FL_FUP_INTERNET_OUTCOME_CD
,[FL_FUP_INVESTIGATOR_ASSGN_DT] = CM.FL_FUP_INVESTIGATOR_ASSGN_DT
,[FL_FUP_NOTIFICATION_PLAN] = CM.FL_FUP_NOTIFICATION_PLAN_CD
,[FL_FUP_NOTIFICATION_PLAN] = CM.FLD_FOLL_UP_NOTIFICATION_PLAN
,[FL_FUP_OOJ_OUTCOME] = CM.FL_FUP_OOJ_OUTCOME
,[FL_FUP_PROV_DIAGNOSIS_CD] = SUBSTRING(CM.FL_FUP_PROV_DIAGNOSIS, 1, 3)
,[FL_FUP_PROV_EXM_REASON] = CM.FL_FUP_PROV_EXM_REASON
Expand Down Expand Up @@ -949,7 +949,7 @@ BEGIN
,CM.FL_FUP_INIT_ASSGN_DT
,CM.FL_FUP_INTERNET_OUTCOME_CD
,CM.FL_FUP_INVESTIGATOR_ASSGN_DT
,CM.FL_FUP_NOTIFICATION_PLAN_CD
,CM.FLD_FOLL_UP_NOTIFICATION_PLAN
,CM.FL_FUP_OOJ_OUTCOME
,SUBSTRING(CM.FL_FUP_PROV_DIAGNOSIS, 1, 3)
,CM.FL_FUP_PROV_EXM_REASON
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -646,11 +646,19 @@ BEGIN
from fn_get_value_by_cvg(fld_foll_up_prov_exm_reason, 'PRVDR_EXAM_REASON')) as fl_fup_prov_exm_reason,
fld_foll_up_prov_diagnosis,
LEFT(fld_foll_up_prov_diagnosis, 3) as fl_fup_prov_diagnosis,
fld_foll_up_notification_plan,
(select *
from fn_get_value_by_cvg(fld_foll_up_notification_plan,
'NOTIFICATION_PLAN')) as fl_fup_notification_plan_cd,
fld_foll_up_expected_in,
from fn_get_value_by_cvg(fld_foll_up_notification_plan,
case
when exists (select 1
from nbs_srte.dbo.condition_code cc
where cc.condition_cd = phc.cd
and cc.prog_area_cd = 'HIV')
then 'NOTIFICATION_ACTUAL_METHOD_HIV'
else 'NOTIFICATION_PLAN'
end
)) as fld_foll_up_notification_plan,
fld_foll_up_notification_plan as fl_fup_notification_plan_cd,

(select * from fn_get_value_by_cvg(fld_foll_up_expected_in, 'YN')) as fl_fup_expected_in_ind,
fld_foll_up_expected_date as fl_fup_expected_dt,
fld_foll_up_exam_date as fl_fup_exam_dt,
Expand All @@ -661,7 +669,16 @@ BEGIN
fld_foll_up_dispo_date as fl_fup_dispo_dt,
act_ref_type_cd,
(select *
from fn_get_value_by_cvg(act_ref_type_cd, 'NOTIFICATION_ACTUAL_METHOD_STD')) as fl_fup_actual_ref_type,
from fn_get_value_by_cvg(act_ref_type_cd,
case
when exists (select 1
from nbs_srte.dbo.condition_code cc
where cc.condition_cd = phc.cd
and cc.prog_area_cd = 'HIV')
then 'NOTIFICATION_ACTUAL_METHOD_HIV'
else 'NOTIFICATION_ACTUAL_METHOD_STD'
end
)) as fl_fup_actual_ref_type, -- this returns something like "3 - Dual"
case_review_status,
case_review_status_date,
fld_foll_up_internet_outcome as fl_fup_internet_outcome_cd,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,69 @@ LEFT JOIN dbo.tmp_DynDm_REPEAT_BLOCK_NUMERIC_ALL_' + @datamart_suffix + ' with

COMMIT TRANSACTION;

BEGIN TRANSACTION

SET @Proc_Step_no = @Proc_Step_no + 1;
SET @Proc_Step_Name = 'MODIFY MISMATCHED COLUMN TYPES IN ' + @tgt_table_nm;

-- For columns that exist in both target and source but with different types,
-- SQL Server does not allow ALTER COLUMN between incompatible types (e.g. float -> date).
-- Instead, drop the column from the target and re-add it with the correct type.
-- The UPDATE step that follows will repopulate the values from the incoming data.
set @temp_sql = '
WITH type_mismatch_cte AS (
SELECT
src.COLUMN_NAME,
src.DATA_TYPE AS src_data_type,
src.CHARACTER_MAXIMUM_LENGTH AS src_char_max_len,
src.NUMERIC_PRECISION AS src_num_prec,
src.NUMERIC_SCALE AS src_num_scale
FROM INFORMATION_SCHEMA.COLUMNS src
INNER JOIN INFORMATION_SCHEMA.COLUMNS tgt
ON src.COLUMN_NAME = tgt.COLUMN_NAME
AND src.TABLE_SCHEMA = tgt.TABLE_SCHEMA
WHERE src.TABLE_NAME = ''' + @tmp_DynDm_INCOMING_DATA + '''
AND tgt.TABLE_NAME = ''' + @tgt_table_nm + '''
AND src.TABLE_SCHEMA = ''dbo''
AND tgt.TABLE_SCHEMA = ''dbo''
AND src.DATA_TYPE <> tgt.DATA_TYPE
)
SELECT @altercolsOUT = STRING_AGG(
CAST(
''ALTER TABLE dbo.' + @tgt_table_nm + ' DROP COLUMN '' + QUOTENAME(COLUMN_NAME) + '';'' +
''ALTER TABLE dbo.' + @tgt_table_nm + ' ADD '' + QUOTENAME(COLUMN_NAME) + '' '' + src_data_type +
CASE
WHEN src_data_type IN (''decimal'', ''numeric'')
THEN ''('' + CAST(src_num_prec AS NVARCHAR) + '','' + CAST(src_num_scale AS NVARCHAR) + '')''
WHEN src_data_type = ''varchar''
THEN ''('' + CASE WHEN src_char_max_len = -1 THEN ''MAX'' ELSE CAST(src_char_max_len AS NVARCHAR) END + '')''
ELSE ''''
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what about floats or datetimes, do we need when statements to handle those?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, probably, and I can add them but this modification was a major side-quest to the original issue. I'm not sure how far down that path to go - and I'm not sure how I'd test types that are not part of this process.

END + '' NULL''
AS NVARCHAR(MAX)
),
'';'')
FROM type_mismatch_cte';

DECLARE @altercols_type NVARCHAR(MAX);

if @debug = 'true'
select @Proc_Step_Name, @temp_sql;

exec sp_executesql @temp_sql, N'@altercolsOUT NVARCHAR(MAX) OUTPUT', @altercolsOUT = @altercols_type OUTPUT;

IF (@altercols_type IS NOT NULL)
BEGIN
if @debug = 'true'
select @Proc_Step_Name, @altercols_type;

exec sp_executesql @altercols_type;
END;

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;

IF OBJECT_ID('dbo.tmp_DynDm_Inactive_Investigations_'+@datamart_suffix, 'U') IS NOT NULL
BEGIN
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ CREATE TABLE dbo.nrt_investigation_case_management
cc_closed_dt datetime NULL,
epi_link_id varchar(20) NULL,
field_foll_up_ooj_outcome varchar(20) NULL,
fl_fup_actual_ref_type varchar(15) NULL,
fl_fup_actual_ref_type varchar(100) NULL,
fl_fup_dispo_dt datetime NULL,
fl_fup_disposition_cd varchar(20) NULL,
fl_fup_disposition_desc varchar(44) NULL,
Expand All @@ -33,7 +33,7 @@ CREATE TABLE dbo.nrt_investigation_case_management
fl_fup_internet_outcome varchar(41) NULL,
fl_fup_internet_outcome_cd varchar(10) NULL,
fl_fup_investigator_assgn_dt datetime NULL,
fl_fup_notification_plan_cd varchar(15) NULL,
fl_fup_notification_plan_cd varchar(100) NULL,
fl_fup_ooj_outcome varchar(44) NULL,
fl_fup_prov_diagnosis varchar(3) NULL,
fl_fup_prov_exm_reason varchar(43) NULL,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'STD_HIV_DATAMART' and xtyp
[EPI_LINK_ID] [varchar](20) NULL,
[FACILITY_FLD_FOLLOW_UP_KEY] [bigint] NULL,
[FIELD_RECORD_NUMBER] [varchar](20) NULL,
[FL_FUP_ACTUAL_REF_TYPE] [varchar](15) NULL,
[FL_FUP_ACTUAL_REF_TYPE] [varchar](100) NULL,
[FL_FUP_DISPO_DT] [datetime] NULL,
[FL_FUP_DISPOSITION] [varchar](44) NULL,
[FL_FUP_EXAM_DT] [datetime] NULL,
Expand All @@ -46,7 +46,7 @@ IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'STD_HIV_DATAMART' and xtyp
[FL_FUP_INIT_ASSGN_DT] [datetime] NULL,
[FL_FUP_INTERNET_OUTCOME_CD] [varchar](10) NULL,
[FL_FUP_INVESTIGATOR_ASSGN_DT] [datetime] NULL,
[FL_FUP_NOTIFICATION_PLAN] [varchar](15) NULL,
[FL_FUP_NOTIFICATION_PLAN] [varchar](100) NULL,
[FL_FUP_OOJ_OUTCOME] [varchar](44) NULL,
[FL_FUP_PROV_DIAGNOSIS_CD] [varchar](3) NULL,
[FL_FUP_PROV_EXM_REASON] [varchar](43) NULL,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
IF EXISTS (
SELECT 1
FROM sys.columns
WHERE object_id = OBJECT_ID(N'[dbo].[nrt_investigation_case_management]')
AND name = 'fl_fup_actual_ref_type'
AND system_type_id = 167
AND collation_name IS NOT NULL
AND max_length <> 100
)
BEGIN
ALTER TABLE [dbo].[nrt_investigation_case_management]
ALTER COLUMN [fl_fup_actual_ref_type] varchar(100) NULL;
END;

IF EXISTS (
SELECT 1
FROM sys.columns
WHERE object_id = OBJECT_ID(N'[dbo].[nrt_investigation_case_management]')
AND name = 'fl_fup_notification_plan_cd'
AND system_type_id = 167
AND collation_name IS NOT NULL
AND max_length <> 100
)
BEGIN
ALTER TABLE [dbo].[nrt_investigation_case_management]
ALTER COLUMN [fl_fup_notification_plan_cd] varchar(100) NULL;
END;

IF EXISTS (
SELECT 1
FROM sys.columns
WHERE object_id = OBJECT_ID(N'[dbo].[D_CASE_MANAGEMENT]')
AND name = 'FL_FUP_ACTUAL_REF_TYPE'
AND system_type_id = 167
AND collation_name IS NOT NULL
AND max_length <> 100
)
BEGIN
ALTER TABLE [dbo].[D_CASE_MANAGEMENT]
ALTER COLUMN [FL_FUP_ACTUAL_REF_TYPE] varchar(100) NULL;
END;

IF EXISTS (
SELECT 1
FROM sys.columns
WHERE object_id = OBJECT_ID(N'[dbo].[D_CASE_MANAGEMENT]')
AND name = 'FL_FUP_NOTIFICATION_PLAN_CD'
AND system_type_id = 167
AND collation_name IS NOT NULL
AND max_length <> 100
)
BEGIN
ALTER TABLE [dbo].[D_CASE_MANAGEMENT]
ALTER COLUMN [FL_FUP_NOTIFICATION_PLAN_CD] varchar(100) NULL;
END;

IF EXISTS (
SELECT 1
FROM sys.columns
WHERE object_id = OBJECT_ID(N'[dbo].[STD_HIV_DATAMART]')
AND name = 'FL_FUP_ACTUAL_REF_TYPE'
AND system_type_id = 167
AND collation_name IS NOT NULL
AND max_length <> 100
)
BEGIN
ALTER TABLE [dbo].[STD_HIV_DATAMART]
ALTER COLUMN [FL_FUP_ACTUAL_REF_TYPE] varchar(100) NULL;
END;

IF EXISTS (
SELECT 1
FROM sys.columns
WHERE object_id = OBJECT_ID(N'[dbo].[STD_HIV_DATAMART]')
AND name = 'FL_FUP_NOTIFICATION_PLAN'
AND system_type_id = 167
AND collation_name IS NOT NULL
AND max_length <> 100
)
BEGIN
ALTER TABLE [dbo].[STD_HIV_DATAMART]
ALTER COLUMN [FL_FUP_NOTIFICATION_PLAN] varchar(100) NULL;
END;

IF EXISTS (
SELECT 1
FROM sys.columns
WHERE object_id = OBJECT_ID(N'[dbo].[DM_INV_HIV]')
AND name = 'FL_FUP_ACTUAL_REF_TY'
AND system_type_id = 167
AND collation_name IS NOT NULL
AND max_length <> 25
)
BEGIN
ALTER TABLE [dbo].[DM_INV_HIV]
ALTER COLUMN [FL_FUP_ACTUAL_REF_TY] varchar(25) NULL;
END;
Original file line number Diff line number Diff line change
Expand Up @@ -3225,3 +3225,11 @@ databaseChangeLog:
path: 260-create_labtest-001.sql
splitStatements: true
endDelimiter: GO
- changeSet:
id: app-619-std-hiv-widths
author: liquibase
runOnChange: true
changes:
- sqlFile:
path: 261-alter_std_hiv_case_management_widths-001.sql
splitStatements: false
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ When adding a new functional test, pick the next available range, and add your t
| stdContactTracing | 1000007000 | 1000007028 |
| elrEColi | 1000008000 | 1000008049 |
| stdContactTracingPartTwo | 1000009000 | 1000009028 |
| hivNotificationPlan | 1000010000 | 1000010004 |

## Helper tools

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"0": [
{
"PATIENT_ADDED_BY": "Kent, Ariella",
"PATIENT_ADD_TIME": "2026-06-05T16:09:55.113",
"PATIENT_CITY": "Atlanta",
"PATIENT_COUNTRY": "United States",
"PATIENT_DOB": "1978-08-16T00:00:00.000",
"PATIENT_ENTRY_METHOD": "N",
"PATIENT_FIRST_NAME": "Nil",
"PATIENT_LAST_CHANGE_TIME": "2026-06-05T16:09:55.113",
"PATIENT_LAST_NAME": "Prevost",
"PATIENT_LAST_UPDATED_BY": "Kent, Ariella",
"PATIENT_LOCAL_ID": "PSN1000010000GA01",
"PATIENT_MPR_UID": 1000010000,
"PATIENT_RECORD_STATUS": "ACTIVE",
"PATIENT_STATE": "Georgia",
"PATIENT_STATE_CODE": "13",
"PATIENT_STREET_ADDRESS_1": "91181 Steensland",
"PATIENT_UID": 1000010000,
"PATIENT_ZIP": "30368"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@


-- dbo.D_PATIENT | operations: insert
-- Query: 0
-- Step: 1
-- WHERE clause narrowed to known lookup key: PATIENT_LOCAL_ID
SELECT
[PATIENT_ADDED_BY],
[PATIENT_ADDL_GENDER_INFO],
[PATIENT_ADD_TIME],
[PATIENT_AGE_REPORTED],
[PATIENT_AGE_REPORTED_UNIT],
[PATIENT_ALIAS_NICKNAME],
[PATIENT_BIRTH_COUNTRY],
[PATIENT_BIRTH_SEX],
[PATIENT_CENSUS_TRACT],
[PATIENT_CITY],
[PATIENT_COUNTRY],
[PATIENT_COUNTY],
[PATIENT_COUNTY_CODE],
[PATIENT_CURRENT_SEX],
[PATIENT_CURR_SEX_UNK_RSN],
[PATIENT_DECEASED_DATE],
[PATIENT_DECEASED_INDICATOR],
[PATIENT_DOB],
[PATIENT_EMAIL],
[PATIENT_ENTRY_METHOD],
[PATIENT_ETHNICITY],
[PATIENT_FIRST_NAME],
[PATIENT_GENERAL_COMMENTS],
[PATIENT_LAST_CHANGE_TIME],
[PATIENT_LAST_NAME],
[PATIENT_LAST_UPDATED_BY],
[PATIENT_LOCAL_ID],
[PATIENT_MARITAL_STATUS],
[PATIENT_MIDDLE_NAME],
[PATIENT_MPR_UID],
[PATIENT_NAME_SUFFIX],
[PATIENT_NUMBER],
[PATIENT_NUMBER_AUTH],
[PATIENT_PHONE_CELL],
[PATIENT_PHONE_EXT_HOME],
[PATIENT_PHONE_EXT_WORK],
[PATIENT_PHONE_HOME],
[PATIENT_PHONE_WORK],
[PATIENT_PREFERRED_GENDER],
[PATIENT_PRIMARY_LANGUAGE],
[PATIENT_PRIMARY_OCCUPATION],
[PATIENT_RACE_ALL],
[PATIENT_RACE_AMER_IND_1],
[PATIENT_RACE_AMER_IND_2],
[PATIENT_RACE_AMER_IND_3],
[PATIENT_RACE_AMER_IND_ALL],
[PATIENT_RACE_AMER_IND_GT3_IND],
[PATIENT_RACE_ASIAN_1],
[PATIENT_RACE_ASIAN_2],
[PATIENT_RACE_ASIAN_3],
[PATIENT_RACE_ASIAN_ALL],
[PATIENT_RACE_ASIAN_GT3_IND],
[PATIENT_RACE_BLACK_1],
[PATIENT_RACE_BLACK_2],
[PATIENT_RACE_BLACK_3],
[PATIENT_RACE_BLACK_ALL],
[PATIENT_RACE_BLACK_GT3_IND],
[PATIENT_RACE_CALCULATED],
[PATIENT_RACE_CALC_DETAILS],
[PATIENT_RACE_NAT_HI_1],
[PATIENT_RACE_NAT_HI_2],
[PATIENT_RACE_NAT_HI_3],
[PATIENT_RACE_NAT_HI_ALL],
[PATIENT_RACE_NAT_HI_GT3_IND],
[PATIENT_RACE_WHITE_1],
[PATIENT_RACE_WHITE_2],
[PATIENT_RACE_WHITE_3],
[PATIENT_RACE_WHITE_ALL],
[PATIENT_RACE_WHITE_GT3_IND],
[PATIENT_RECORD_STATUS],
[PATIENT_SPEAKS_ENGLISH],
[PATIENT_SSN],
[PATIENT_STATE],
[PATIENT_STATE_CODE],
[PATIENT_STREET_ADDRESS_1],
[PATIENT_STREET_ADDRESS_2],
[PATIENT_UID],
[PATIENT_UNK_ETHNIC_RSN],
[PATIENT_WITHIN_CITY_LIMITS],
[PATIENT_ZIP]
FROM [RDB_MODERN].[dbo].[D_PATIENT]
WHERE [PATIENT_LOCAL_ID] = N'PSN1000010000GA01'
;
Loading