Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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 @@ -42,3 +42,6 @@ databaseChangeLog:
- sqlFile:
path: db/report/execution/libraries/nbs_sr_08.sql
splitStatements: false
- sqlFile:
path: db/report/execution/libraries/qa_01.sql
splitStatements: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
-- Migrate the NBSCUSTOM.SAS library to the nbs_sr_13 python library

USE [NBS_ODSE]

DECLARE @pyLib VARCHAR(50) = 'qa_01'
DECLARE @sasLib VARCHAR(50) = 'QA01.SAS'
DECLARE @desc VARCHAR(300) = 'QA01: QA01: Interview Record Listing Report'

IF EXISTS (SELECT * FROM [dbo].[Report_Library] WHERE UPPER(library_name) = @sasLib)
BEGIN
UPDATE [dbo].[Report_Library]
SET
library_name = @pyLib,
runner = 'python',
desc_txt = @desc,
last_chg_time = CURRENT_TIMESTAMP,
last_chg_user_id = 99999999
WHERE
UPPER(library_name) = @sasLib;
END
ELSE
BEGIN
-- Create a row for this library
INSERT INTO [dbo].[Report_Library] (
library_name,
desc_txt,
runner,
is_builtin_ind,
add_time,
add_user_id,
last_chg_time,
last_chg_user_id
) VALUES (
@pyLib,
@desc,
'python',
'Y',
CURRENT_TIMESTAMP,
99999999,
CURRENT_TIMESTAMP,
99999999
);
END
64 changes: 64 additions & 0 deletions apps/report-execution/src/libraries/qa_01.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
from src.db_transaction import Transaction
from src.models import ReportResult


def execute(
trx: Transaction,
subset_query: str,
data_source_name: str,
**kwargs,
):

"""QA01 STD Program Report: Interview Record Listing

Conversion notes:
* Did not convert columns: name_l, race, sex, i, age
* all dropped columns were either duplicate or remnants of errant SAS code
* Did not sort by PATIENT_NAME
* Did not convert NULL to empty string
* Add IX_DATE_OI to the output
"""

sql_query = f"""
SELECT
shd.investigation_key as "INVESTIGATION_KEY",
inv.add_user_id as "ADD_USER_ID",
inv.provider_quick_code as "PROVIDER_QUICK_CODE",
shd.patient_name as "PATIENT_NAME",
shd.patient_age_reported as "PATIENT_AGE_REPORTED",
shd.patient_sex as "PATIENT_SEX",
shd.patient_race as "PATIENT_RACE",
shd.diagnosis_cd as "DIAGNOSIS_CD",
shd.field_record_number as "RECORD_FIELD_NUMBER",
shd.investigator_interview_qc as "INVESTIGATOR_INTERVIEW_QC",
CASE
WHEN shd.CC_CLOSED_DT IS NULL THEN 'Y'
ELSE 'N'
END AS Open_Status,
CAST(shd.ca_interviewer_assign_dt as DATE) as "ASSIGNED_DT",
CAST(shd.cc_closed_dt as DATE) as "CLOSED_DT",
CAST(shd.ix_date_oi as DATE) as "IX_DATE_OI"
FROM ({subset_query}) shd
LEFT OUTER JOIN
(SELECT i.investigation_key, em.add_user_id, up.provider_quick_code
FROM rdb.dbo.investigation i
JOIN rdb.dbo.event_metric em
ON i.case_uid = em.event_uid
JOIN rdb.dbo.user_profile up
ON em.add_user_id = up.nedss_entry_id) inv
ON shd.investigation_key = inv.investigation_key
WHERE shd.ca_patient_intv_status = 'I - Interviewed'
AND shd.diagnosis_cd IS NOT NULL
AND shd.ix_date_oi IS NOT NULL
"""

content = trx.query(sql_query)

description = 'NEDSS STD Program Activity Report - QA01 Interview Record Listing Report'

return ReportResult(
content_type='table',
content=content,
subheader=None,
description=description,
)
2 changes: 1 addition & 1 deletion apps/report-execution/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ def get_tables_from_faker(schema_name: str) -> tuple[list[str], list[str]]:
schema = yaml.safe_load(f.read())

db_tables = [t['table_name'] for t in schema['tables']]
fk_tables = schema['config']['nbs']['fk_tables']
fk_tables = schema['config'].get('nbs', {}).get('fk_tables', [])

return (db_tables, fk_tables)

Expand Down
Loading
Loading