From 0bd3ade95dcfd34dd196ad217c08fe2fea287d28 Mon Sep 17 00:00:00 2001 From: AnandLoganathan Date: Wed, 24 Jul 2024 12:29:40 -0700 Subject: [PATCH] CNDIT-1589: Liquibase migration to the NEDSS-DataReporting repository --- .../Build-and-deploy-reporting-services.yaml | 32 +- liquibase-service/.dockerignore | 4 + liquibase-service/.gitignore | 43 + liquibase-service/Dockerfile | 25 + liquibase-service/build.gradle | 110 + liquibase-service/build.sh | 48 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 63721 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + liquibase-service/gradlew | 249 ++ liquibase-service/gradlew.bat | 92 + liquibase-service/readme.md | 47 + liquibase-service/settings.gradle | 1 + .../EtlDataPipelineApplication.java | 13 + .../controller/DataPipelineController.java | 25 + .../service/DataPipelineStatusService.java | 20 + .../src/main/resources/application.yaml | 17 + .../changelog/db.master.changelog-16.1.yaml | 8 + .../db/changelog/db.odse.changelog-16.1.yaml | 149 + .../db/changelog/db.rdb.changelog-16.1.yaml | 239 ++ ...n_sql_server_agent_status_override-001.sql | 19 + .../resources/db/odse/000-db-general-001.sql | 3 + .../odse/001-fn_get_value_by_cd_ques-001.sql | 48 + .../db/odse/002-fn_get_value_by_cvg-001.sql | 11 + .../db/odse/003-fn-get_user_name-001.sql | 7 + .../004-fn_get_value_by_cd_codeset-001.sql | 13 + .../db/odse/005-sp_organization_event-001.sql | 198 + .../db/odse/006-sp_provider_event-001.sql | 204 + .../db/odse/007-sp_patient_race_event-001.sql | 924 +++++ .../db/odse/008-sp_patient_event-001.sql | 387 ++ .../db/odse/009-sp_observation_event-001.sql | 295 ++ .../odse/010-sp_investigation_event-001.sql | 2650 ++++++++++++ .../db/odse/011-sp_ldf_provider_event-001.sql | 68 + .../012-sp_ldf_organization_event-001.sql | 70 + .../db/odse/013-sp_ldf_patient_event-001.sql | 69 + .../odse/014-sp_ldf_observation_event-001.sql | 69 + .../db/odse/015-sp_ldf_phc_event-001.sql | 71 + .../016-sp_ldf_intervention_event-001.sql | 70 + .../db/odse/017-sp_ldf_data_event-001.sql | 22 + ...ic_health_case_fact_datamart_event-001.sql | 2745 +++++++++++++ .../db/odse/019-v_inv_form_code_data-001.sql | 25 + .../db/odse/020-fn_get_record_status-001.sql | 14 + .../resources/db/rdb/000-db-general-001.sql | 3 + .../db/rdb/001-create_nrt_batch_log-001.sql | 12 + .../rdb/002-create_nrt_organization-001.sql | 39 + .../003-create_nrt_organization_key-001.sql | 14 + .../db/rdb/004-create_nrt_provider-001.sql | 43 + .../db/rdb/005-create_nrt_provider_key.sql | 14 + .../db/rdb/006-create_nrt_patient-001.sql | 90 + .../db/rdb/007-create_nrt_patient_key-001.sql | 14 + .../rdb/008-create_nrt_investigation-001.sql | 116 + .../009-create_nrt_investigation_key-001.sql | 14 + ...ate_nrt_investigation_confirmation-001.sql | 12 + ...create_nrt_confirmation_method_key-001.sql | 14 + ...eate_nrt_investigation_observation-001.sql | 9 + .../rdb/013-create_nrt_notifications-001.sql | 33 + .../014-create_nrt_notification_key-001.sql | 13 + .../015-create_nrt_page_case_answer-001.sql | 31 + .../rdb/016-create_nrt_ldf_data_key-001.sql | 16 + .../rdb/017-create_nrt_ldf_group_key-001.sql | 14 + .../db/rdb/018-create_nrt_observation-001.sql | 38 + .../db/rdb/019-fn_get_record_status-001.sql | 14 + ...sp_nrt_organization_postprocessing-001.sql | 378 ++ ...021-sp_nrt_provider_postprocessing-001.sql | 356 ++ .../022-sp_nrt_patient_postprocessing-001.sql | 562 +++ ...p_nrt_investigation_postprocessing-001.sql | 620 +++ ...sp_nrt_notification_postprocessing-001.sql | 361 ++ ...25-sp_s_pagebuilder_postprocessing-001.sql | 1474 +++++++ ...26-sp_l_pagebuilder_postprocessing-001.sql | 443 ++ ...27-sp_d_pagebuilder_postprocessing-001.sql | 180 + ...nvestigation_repeat_postprocessing-001.sql | 1354 ++++++ ...029-sp_page_builder_postprocessing-001.sql | 102 + .../030-sp_f_page_case_postprocessing-001.sql | 511 +++ ..._hepatitis_datamart_postprocessing-001.sql | 3624 +++++++++++++++++ .../032-create_nrt_datamart_metadata-001.sql | 14 + .../db/rdb/033-sp_get_date_dim-001.sql | 56 + .../src/main/resources/db/readme.md | 34 + .../EtlDataPipelineApplicationTests.java | 12 + settings.gradle | 2 + 78 files changed, 19746 insertions(+), 1 deletion(-) create mode 100644 liquibase-service/.dockerignore create mode 100644 liquibase-service/.gitignore create mode 100644 liquibase-service/Dockerfile create mode 100644 liquibase-service/build.gradle create mode 100755 liquibase-service/build.sh create mode 100644 liquibase-service/gradle/wrapper/gradle-wrapper.jar create mode 100644 liquibase-service/gradle/wrapper/gradle-wrapper.properties create mode 100755 liquibase-service/gradlew create mode 100644 liquibase-service/gradlew.bat create mode 100644 liquibase-service/readme.md create mode 100644 liquibase-service/settings.gradle create mode 100644 liquibase-service/src/main/java/gov/cdc/etldatapipeline/EtlDataPipelineApplication.java create mode 100644 liquibase-service/src/main/java/gov/cdc/etldatapipeline/controller/DataPipelineController.java create mode 100644 liquibase-service/src/main/java/gov/cdc/etldatapipeline/service/DataPipelineStatusService.java create mode 100644 liquibase-service/src/main/resources/application.yaml create mode 100644 liquibase-service/src/main/resources/db/changelog/db.master.changelog-16.1.yaml create mode 100644 liquibase-service/src/main/resources/db/changelog/db.odse.changelog-16.1.yaml create mode 100644 liquibase-service/src/main/resources/db/changelog/db.rdb.changelog-16.1.yaml create mode 100644 liquibase-service/src/main/resources/db/master/001-fn_sql_server_agent_status_override-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/000-db-general-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/001-fn_get_value_by_cd_ques-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/002-fn_get_value_by_cvg-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/003-fn-get_user_name-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/004-fn_get_value_by_cd_codeset-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/005-sp_organization_event-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/006-sp_provider_event-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/007-sp_patient_race_event-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/008-sp_patient_event-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/009-sp_observation_event-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/010-sp_investigation_event-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/011-sp_ldf_provider_event-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/012-sp_ldf_organization_event-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/013-sp_ldf_patient_event-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/014-sp_ldf_observation_event-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/015-sp_ldf_phc_event-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/016-sp_ldf_intervention_event-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/017-sp_ldf_data_event-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/018-sp_public_health_case_fact_datamart_event-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/019-v_inv_form_code_data-001.sql create mode 100644 liquibase-service/src/main/resources/db/odse/020-fn_get_record_status-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/000-db-general-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/001-create_nrt_batch_log-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/002-create_nrt_organization-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/003-create_nrt_organization_key-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/004-create_nrt_provider-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/005-create_nrt_provider_key.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/006-create_nrt_patient-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/007-create_nrt_patient_key-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/008-create_nrt_investigation-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/009-create_nrt_investigation_key-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/010-create_nrt_investigation_confirmation-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/011-create_nrt_confirmation_method_key-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/012-create_nrt_investigation_observation-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/013-create_nrt_notifications-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/014-create_nrt_notification_key-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/015-create_nrt_page_case_answer-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/016-create_nrt_ldf_data_key-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/017-create_nrt_ldf_group_key-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/018-create_nrt_observation-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/019-fn_get_record_status-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/020-sp_nrt_organization_postprocessing-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/021-sp_nrt_provider_postprocessing-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/022-sp_nrt_patient_postprocessing-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/023-sp_nrt_investigation_postprocessing-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/024-sp_nrt_notification_postprocessing-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/025-sp_s_pagebuilder_postprocessing-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/026-sp_l_pagebuilder_postprocessing-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/027-sp_d_pagebuilder_postprocessing-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/028-sp_sld_investigation_repeat_postprocessing-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/029-sp_page_builder_postprocessing-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/030-sp_f_page_case_postprocessing-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/031-sp_hepatitis_datamart_postprocessing-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/032-create_nrt_datamart_metadata-001.sql create mode 100644 liquibase-service/src/main/resources/db/rdb/033-sp_get_date_dim-001.sql create mode 100644 liquibase-service/src/main/resources/db/readme.md create mode 100644 liquibase-service/src/test/java/gov/cdc/etldatapipeline/EtlDataPipelineApplicationTests.java diff --git a/.github/workflows/Build-and-deploy-reporting-services.yaml b/.github/workflows/Build-and-deploy-reporting-services.yaml index a88e1df2..6b58ee16 100644 --- a/.github/workflows/Build-and-deploy-reporting-services.yaml +++ b/.github/workflows/Build-and-deploy-reporting-services.yaml @@ -6,7 +6,7 @@ on: - master - rel-** # Uncomment the following line only to test the build deploy from private branches. -# - CNDIT-* + - CNDIT-* paths-ignore: - "docker-compose.yml" - "**.md" @@ -186,3 +186,33 @@ jobs: GIT_USER_NAME: ${{secrets.GIT_USER_NAME}} HELM_TOKEN: ${{secrets.HELM_TOKEN}} + # liquibase-microservice + call-build-liquibase-microservice-container-workflow: + name: Build Liquibase Service Container + uses: CDCgov/NEDSS-Workflows/.github/workflows/Build-gradle-microservice-container.yaml@main + with: + microservice_name: liquibase-service + dockerfile_relative_path: -f ./liquibase-service/Dockerfile . + environment_classifier: SNAPSHOT + java_version: "17" + secrets: + CDC_NBS_SANDBOX_SHARED_SERVICES_ACCOUNTID: ${{secrets.CDC_NBS_SANDBOX_SHARED_SERVICES_ACCOUNTID}} + ECR_REPO_BASE_NAME: ${{secrets.ECR_NBS_REPO_BASE_NAME}} + GIT_USER_EMAIL: ${{secrets.GIT_USER_EMAIL}} + GIT_USER_NAME: ${{secrets.GIT_USER_NAME}} + HELM_TOKEN: ${{secrets.HELM_TOKEN}} + + # Helm Update Liquibase service + call-update-helm-for-liquibase-microservice: + needs: call-build-liquibase-microservice-container-workflow + uses: CDCgov/NEDSS-Workflows/.github/workflows/Update-helm-charts.yaml@main + with: + microservice_name: liquibase-service + values_file_with_path: charts/liquibase/values-dts1.yaml + new_image_tag: ${{ needs.call-build-liquibase-microservice-container-workflow.outputs.output_image_tag }} + secrets: + GIT_USER_EMAIL: ${{secrets.GIT_USER_EMAIL}} + GIT_USER_NAME: ${{secrets.GIT_USER_NAME}} + HELM_TOKEN: ${{secrets.HELM_TOKEN}} + + diff --git a/liquibase-service/.dockerignore b/liquibase-service/.dockerignore new file mode 100644 index 00000000..b7b97273 --- /dev/null +++ b/liquibase-service/.dockerignore @@ -0,0 +1,4 @@ +.gradle +.idea +build +*.iml \ No newline at end of file diff --git a/liquibase-service/.gitignore b/liquibase-service/.gitignore new file mode 100644 index 00000000..b1c19c2a --- /dev/null +++ b/liquibase-service/.gitignore @@ -0,0 +1,43 @@ +HELP.md +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ +.idea/ +.gradle/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +## Logs ## +logs/ +*.log diff --git a/liquibase-service/Dockerfile b/liquibase-service/Dockerfile new file mode 100644 index 00000000..b75b807e --- /dev/null +++ b/liquibase-service/Dockerfile @@ -0,0 +1,25 @@ +FROM liquibase/liquibase:latest-alpine + +USER root + +RUN apk add --no-cache wget unzip + +RUN wget "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -O "awscliv2.zip" && \ + unzip awscliv2.zip && rm -rf awscliv2.zip && \ + ./aws/install + + +#Copy sources +COPY liquibase-service/src/main/resources/db/changelog /liquibase/changelog +COPY liquibase-service/src/main/resources/db/master /liquibase/changelog +COPY liquibase-service/src/main/resources/db/odse /liquibase/changelog +COPY liquibase-service/src/main/resources/db/rdb /liquibase/changelog + +#Set the Working Directory +WORKDIR /liquibase/changelog + +USER liquibase + +CMD ["sh", "-c", "tail -f /dev/null"] + + diff --git a/liquibase-service/build.gradle b/liquibase-service/build.gradle new file mode 100644 index 00000000..c81bffa6 --- /dev/null +++ b/liquibase-service/build.gradle @@ -0,0 +1,110 @@ +buildscript { + repositories { + mavenCentral() + gradlePluginPortal() + maven { + url "https://plugins.gradle.org/m2/" + } + } +} + +plugins { + id 'java' + id 'org.springframework.boot' version '3.2.4' + id 'io.spring.dependency-management' version '1.1.4' + id 'org.liquibase.gradle' version '2.2.2' + id 'org.sonarqube' version '4.2.1.3168' +} + +//apply plugin: 'org.owasp.dependencycheck' + +group = 'gov.cdc.eltdatapipeline' +version = '0.0.1-SNAPSHOT' + +java { + sourceCompatibility = JavaVersion.VERSION_17 +} + +ext.isReleaseVersion = !version.endsWith("SNAPSHOT") + +tasks.withType(Jar).configureEach { duplicatesStrategy = DuplicatesStrategy.EXCLUDE } + +configurations { + compileOnly { + extendsFrom annotationProcessor + } +} + +repositories { + mavenLocal() + mavenCentral() +} + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'net.logstash.logback:logstash-logback-encoder:7.4' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + + // Liquibase + liquibaseRuntime 'org.liquibase:liquibase-core:4.27.0' + liquibaseRuntime 'info.picocli:picocli:4.7.5' + liquibaseRuntime 'com.microsoft.sqlserver:mssql-jdbc:12.6.1.jre11' +} + +tasks.named('test') { + useJUnitPlatform() +} + +jar { + manifest { + attributes( + 'Main-Class': 'gov.cdc.etldatapipeline.EtlDataPipelineApplication' + ) + } + zip64 true + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + + // Gather all runtime dependencies + from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } +} + +apply plugin: "org.liquibase.gradle" + +ext { + NBS_DB_VER = '15.1' +} + +liquibase { + activities { + odse_main { + changelogFile "./src/main/resources/db/changelog/db.master.changelog-${NBS_DB_VER}.yaml" + url "jdbc:sqlserver://${System.env.DB_URL}:1433;databaseName=master;encrypt=true;trustServerCertificate=true" + username "${System.env.DB_USERNAME}" + password "${System.env.DB_PASSWORD}" + } + odse_main { + changelogFile "./src/main/resources/db/changelog/db.odse.changelog-${NBS_DB_VER}.yaml" + url "jdbc:sqlserver://${System.env.DB_URL}:1433;databaseName=${System.env.DB_ODSE};encrypt=true;trustServerCertificate=true" + username "${System.env.DB_USERNAME}" + password "${System.env.DB_PASSWORD}" + } + rdb_main { + changelogFile "./src/main/resources/db/changelog/db.rdb.changelog-${NBS_DB_VER}.yaml" + url "jdbc:sqlserver://${System.env.DB_URL}:1433;databaseName=${System.env.DB_RDB};encrypt=true;trustServerCertificate=true" + username "${System.env.DB_USERNAME}" + password "${System.env.DB_PASSWORD}" + } + } +} + +sonarqube { + properties { + property "sonar.sourceEncoding", "UTF-8" + property "sonar.projectKey", "CDCgov_NEDSS-DataAccess" + property "sonar.organization", "cdcgov" + property "sonar.host.url", "https://sonarcloud.io" + property "sonar.coverage.jacoco.xmlReportPaths", "${rootDir}/investigation-service/build/customJacocoReportDir/test/jacocoTestReport.xml," + + "${rootDir}/ldfdata-service/build/customJacocoReportDir/test/jacocoTestReport.xml,${rootDir}/observation-service/build/customJacocoReportDir/test/jacocoTestReport.xml,${rootDir}/person-service/build/customJacocoReportDir/test/jacocoTestReport.xml," + + "${rootDir}/post-processing-service/build/customJacocoReportDir/test/jacocoTestReport.xml" + } +} \ No newline at end of file diff --git a/liquibase-service/build.sh b/liquibase-service/build.sh new file mode 100755 index 00000000..d448022d --- /dev/null +++ b/liquibase-service/build.sh @@ -0,0 +1,48 @@ +#!/bin/sh +set -e + +BASE="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" + +#DA_PATH=$BASE/nedss-dataaccess/builder/ #Uncomment for copying from github repo + +# Clone NEDSSDev +#rm -rf $DA_PATH +#cp -r $HOME/'GitPrj/NEDSS-DataAccess/data-reporting-service/' $DA_PATH + +#VERSION=master +#git clone -b $VERSION git@github.com:cdcent/NEDSS-DataAccess.git $DA_PATH + +# Build and deploy database containers +echo "Building SQL Server database" +docker-compose -f $BASE/docker-compose.yml up nbs-dataaccess-mssql --build -d + +# Build and deploy Zookeeper container +echo "Building Zookeeper" +docker-compose -f $BASE/docker-compose.yml up zookeeper --build -d + +# Build and deploy Kafka Broke container +echo "Building Kafka Broker" +docker-compose -f $BASE/docker-compose.yml up broker --build -d + +# Build and deploy ETL Data pipeline container +echo "Building the Liquibase Service" +docker-compose -f $BASE/docker-compose.yml up liquibase-service --build -d + +echo "Building Person Reporting Service" +docker-compose -f $BASE/docker-compose.yml up person-reporting-service --build -d + +# Cleanup +#rm -rf $DA_PATH + +echo "**** NEDSS DataAccess ETL Data Pipeline build complete ****" +echo "Reporting Service Health Check" +echo "http://localhost:8081/status" +echo "" +echo "Person Reporting Service Health Check" +echo "http://localhost:8090/status" +echo "" +echo "Database: localhost:1433" +echo "DB user: sa" +echo "DB password: fake.fake.fake.1234" +echo "Kafka: localhost:9092" +echo "" \ No newline at end of file diff --git a/liquibase-service/gradle/wrapper/gradle-wrapper.jar b/liquibase-service/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7f93135c49b765f8051ef9d0a6055ff8e46073d8 GIT binary patch literal 63721 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鯊%1Et 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⁢ zv5o9#E7!G0XmdzfsS{efPNi`1b44~SZ4Z8fuX!I}#8g+(wxzQwUT#Xb2(tbY1+EUhGKoT@KEU9Ktl>_0 z%bjDJg;#*gtJZv!-Zs`?^}v5eKmnbjqlvnSzE@_SP|LG_PJ6CYU+6zY6>92%E+ z=j@TZf-iW4(%U{lnYxQA;7Q!b;^brF8n0D>)`q5>|WDDXLrqYU_tKN2>=#@~OE7grMnNh?UOz-O~6 z6%rHy{#h9K0AT+lDC7q4{hw^|q6*Ry;;L%Q@)Ga}$60_q%D)rv(CtS$CQbpq9|y1e zRSrN4;$Jyl{m5bZw`$8TGvb}(LpY{-cQ)fcyJv7l3S52TLXVDsphtv&aPuDk1OzCA z4A^QtC(!11`IsNx_HnSy?>EKpHJWT^wmS~hc^p^zIIh@9f6U@I2 zC=Mve{j2^)mS#U$e{@Q?SO6%LDsXz@SY+=cK_QMmXBIU)j!$ajc-zLx3V60EXJ!qC zi<%2x8Q24YN+&8U@CIlN zrZkcT9yh%LrlGS9`G)KdP(@9Eo-AQz@8GEFWcb7U=a0H^ZVbLmz{+&M7W(nXJ4sN8 zJLR7eeK(K8`2-}j(T7JsO`L!+CvbueT%izanm-^A1Dn{`1Nw`9P?cq;7no+XfC`K(GO9?O^5zNIt4M+M8LM0=7Gz8UA@Z0N+lg+cX)NfazRu z5D)~HA^(u%w^cz+@2@_#S|u>GpB+j4KzQ^&Wcl9f z&hG#bCA(Yk0D&t&aJE^xME^&E-&xGHhXn%}psEIj641H+Nl-}boj;)Zt*t(4wZ5DN z@GXF$bL=&pBq-#vkTkh>7hl%K5|3 z{`Vn9b$iR-SoGENp}bn4;fR3>9sA%X2@1L3aE9yTra;Wb#_`xWwLSLdfu+PAu+o3| zGVnpzPr=ch{uuoHjtw7+_!L_2;knQ!DuDl0R`|%jr+}jFzXtrHIKc323?JO{l&;VF z*L1+}JU7%QJOg|5|Tc|D8fN zJORAg=_vsy{ak|o);@)Yh8Lkcg@$FG3k@ep36BRa^>~UmnRPziS>Z=`Jb2x*Q#`%A zU*i3&Vg?TluO@X0O;r2Jl6LKLUOVhSqg1*qOt^|8*c7 zo(298@+r$k_wQNGHv{|$tW(T8L+4_`FQ{kEW5Jgg{yf7ey4ss_(SNKfz(N9lx&a;< je(UuV8hP?p&}TPdm1I$XmG#(RzlD&B2izSj9sl%y5~4qc literal 0 HcmV?d00001 diff --git a/liquibase-service/gradle/wrapper/gradle-wrapper.properties b/liquibase-service/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..3fa8f862 --- /dev/null +++ b/liquibase-service/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/liquibase-service/gradlew b/liquibase-service/gradlew new file mode 100755 index 00000000..1aa94a42 --- /dev/null +++ b/liquibase-service/gradlew @@ -0,0 +1,249 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/liquibase-service/gradlew.bat b/liquibase-service/gradlew.bat new file mode 100644 index 00000000..93e3f59f --- /dev/null +++ b/liquibase-service/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/liquibase-service/readme.md b/liquibase-service/readme.md new file mode 100644 index 00000000..bd1ead30 --- /dev/null +++ b/liquibase-service/readme.md @@ -0,0 +1,47 @@ + +# MicroService Deployment Steps + +### Docker file creation +* Create a Docker file under your main microservice +Example : ```data-reporting-service/person-service/Dockerfile``` + +### Create a service repository in ECR +* Open a ticket with foundations team to create a repository for the microservice. + * Reference ticket : https://cdc-nbs.atlassian.net/browse/CNAT-168 + +### Update the GitHub Actions file +* Edit and update the GitHub Actions Workflow file in the root of the repository + * ```.github/workflows/Build-and-deploy-reporting-services.yaml ``` + * Make a section under `jobs` for the new microservice + * Update the name of the action, microservice_name and dockerfile_relative_path + * In the on.push.branches section give a private branch name and test if checkins trigger a docker image build and publish to ECR + +### Helm Charts Update +* Create Helm Charts for the microservice in the https://github.com/CDCgov/NEDSS-Helm/ repository + * Reference Person Reporting service as an example : https://github.com/CDCgov/NEDSS-Helm/tree/main/charts/person-reporting-service + * Make sure to Update the environment variable values in the deployment.yaml, values.yaml and values-dts1.yaml + * In the modernization-api [ingress](https://github.com/CDCgov/NEDSS-Helm/blob/main/charts/modernization-api/templates/ingress.yaml) add a section to your microservice entrypoint. + +### Service deployment to EKS using ArgoCd +* Refer here for accessing ArgoCD : + * [ArgoCD setup](https://cdc-nbs.atlassian.net/wiki/spaces/NM/pages/664207380/SpringBoot+Java+MicroService+Deployment+Steps#Service-deployment-to-EKS-using-ArgoCd) +* In ArgoCD, create a new App + * Edit the yaml to copy and paste the scripts from : + * [ArgoCD deployment yaml](https://enquizit.sharepoint.com/sites/CDCNBSProject/Shared%20Documents/Forms/AllItems.aspx) + * Refer the following file : + * [Person Service deployment](https://enquizit.sharepoint.com/:u:/r/sites/CDCNBSProject/Shared%20Documents/General/NBS%20Infrastructure/ArgoCD%20Deployments/dts1/person-reporting-service.yaml) + * Update the name and helm environment variables as appropriate + * Service should be published to the DTS1 EKS cluster + + +### Organization Service DTS1 deployment : + +- [Health Check](https://app.dts1.nbspreview.com/reporting/organization-svc/status) + +### Person Service DTS1 deployment: +- [Health Check](https://app.dts1.nbspreview.com/reporting/person-svc/status) + +### DTS1 Microservice CloudWatch Logs +- [CloudWatach Logs ](https://us-east-1.console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:log-groups/log-group/fluent-bit-cloudwatch) + - Search for the respective microservice in log streams (Eg: person-service) + \ No newline at end of file diff --git a/liquibase-service/settings.gradle b/liquibase-service/settings.gradle new file mode 100644 index 00000000..76b90dbc --- /dev/null +++ b/liquibase-service/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'liquibase-service' \ No newline at end of file diff --git a/liquibase-service/src/main/java/gov/cdc/etldatapipeline/EtlDataPipelineApplication.java b/liquibase-service/src/main/java/gov/cdc/etldatapipeline/EtlDataPipelineApplication.java new file mode 100644 index 00000000..36181237 --- /dev/null +++ b/liquibase-service/src/main/java/gov/cdc/etldatapipeline/EtlDataPipelineApplication.java @@ -0,0 +1,13 @@ +package gov.cdc.etldatapipeline; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class EtlDataPipelineApplication { + + public static void main(String[] args) { + SpringApplication.run(EtlDataPipelineApplication.class, args); + } + +} diff --git a/liquibase-service/src/main/java/gov/cdc/etldatapipeline/controller/DataPipelineController.java b/liquibase-service/src/main/java/gov/cdc/etldatapipeline/controller/DataPipelineController.java new file mode 100644 index 00000000..76e10b60 --- /dev/null +++ b/liquibase-service/src/main/java/gov/cdc/etldatapipeline/controller/DataPipelineController.java @@ -0,0 +1,25 @@ +package gov.cdc.etldatapipeline.controller; + +import gov.cdc.etldatapipeline.service.DataPipelineStatusService; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class DataPipelineController { + + DataPipelineStatusService dataPipelineStatusSvc; + + public DataPipelineController(DataPipelineStatusService dataPipelineStatusSvc) { + this.dataPipelineStatusSvc = dataPipelineStatusSvc; + } + + + @GetMapping("/status") + @ResponseBody + public ResponseEntity getDataPipelineStatusHealth() { + return this.dataPipelineStatusSvc.getHealthStatus(); + } + +} diff --git a/liquibase-service/src/main/java/gov/cdc/etldatapipeline/service/DataPipelineStatusService.java b/liquibase-service/src/main/java/gov/cdc/etldatapipeline/service/DataPipelineStatusService.java new file mode 100644 index 00000000..fe6658fe --- /dev/null +++ b/liquibase-service/src/main/java/gov/cdc/etldatapipeline/service/DataPipelineStatusService.java @@ -0,0 +1,20 @@ +package gov.cdc.etldatapipeline.service; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +@Service +public class DataPipelineStatusService { + private static final Logger LOG = LoggerFactory.getLogger(DataPipelineStatusService.class); + + public DataPipelineStatusService() { + } + + public ResponseEntity getHealthStatus(){ + LOG.info("Status OK"); + return ResponseEntity.status(HttpStatus.OK).body("Status OK"); + } +} diff --git a/liquibase-service/src/main/resources/application.yaml b/liquibase-service/src/main/resources/application.yaml new file mode 100644 index 00000000..2efc1e02 --- /dev/null +++ b/liquibase-service/src/main/resources/application.yaml @@ -0,0 +1,17 @@ +spring: + application: + name: liquibase-service + datasource: + password: ${DB_PASSWORD:-fake.fake.fake.1234} + username: ${DB_USERNAME:-sa} + url: ${DB_URL:localhost} + odse: ${DB_ODSE:NBS_ODSE} + rdb: ${DB_RDB:RDB} +logging: + # Only one config can be active at a time + config: classpath:logback-config.xml + file: + name: DataReportingService.log + path: ${DA_LOG_PATH:logs} +server: + port: '8090' diff --git a/liquibase-service/src/main/resources/db/changelog/db.master.changelog-16.1.yaml b/liquibase-service/src/main/resources/db/changelog/db.master.changelog-16.1.yaml new file mode 100644 index 00000000..56367ff0 --- /dev/null +++ b/liquibase-service/src/main/resources/db/changelog/db.master.changelog-16.1.yaml @@ -0,0 +1,8 @@ +databaseChangeLog: + - changeSet: + id: 0 + author: liquibase + changes: + - sqlFile: + path: 001-fn_sql_server_agent_status_override-001.sql.sql + splitStatements: false \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/changelog/db.odse.changelog-16.1.yaml b/liquibase-service/src/main/resources/db/changelog/db.odse.changelog-16.1.yaml new file mode 100644 index 00000000..d90c912b --- /dev/null +++ b/liquibase-service/src/main/resources/db/changelog/db.odse.changelog-16.1.yaml @@ -0,0 +1,149 @@ +databaseChangeLog: + - changeSet: + id: 0 + author: liquibase + changes: + - sqlFile: + path: 000-db-general-001.sql + splitStatements: false + - changeSet: + id: 1 + author: liquibase + changes: + - sqlFile: + path: 001-fn_get_value_by_cd_ques-001.sql + splitStatements: false + - changeSet: + id: 2 + author: liquibase + changes: + - sqlFile: + path: 002-fn_get_value_by_cvg-001.sql + splitStatements: false + - changeSet: + id: 3 + author: liquibase + changes: + - sqlFile: + path: 003-fn-get_user_name-001.sql + splitStatements: false + - changeSet: + id: 4 + author: liquibase + changes: + - sqlFile: + path: 004-fn_get_value_by_cd_codeset-001.sql + splitStatements: false + - changeSet: + id: 5 + author: liquibase + changes: + - sqlFile: + path: 005-sp_organization_event-001.sql + splitStatements: false + - changeSet: + id: 6 + author: liquibase + changes: + - sqlFile: + path: 006-sp_provider_event-001.sql + splitStatements: false + - changeSet: + id: 7 + author: liquibase + changes: + - sqlFile: + path: 007-sp_patient_race_event-001.sql + splitStatements: false + - changeSet: + id: 8 + author: liquibase + changes: + - sqlFile: + path: 008-sp_patient_event-001.sql + splitStatements: false + - changeSet: + id: 9 + author: liquibase + changes: + - sqlFile: + path: 009-sp_observation_event-001.sql + splitStatements: false + - changeSet: + id: 10 + author: liquibase + changes: + - sqlFile: + path: 010-sp_investigation_event-001.sql + splitStatements: false + - changeSet: + id: 11 + author: liquibase + changes: + - sqlFile: + path: 011-sp_ldf_provider_event-001.sql + splitStatements: false + - changeSet: + id: 12 + author: liquibase + changes: + - sqlFile: + path: 012-sp_ldf_organization_event-001.sql + splitStatements: false + - changeSet: + id: 13 + author: liquibase + changes: + - sqlFile: + path: 013-sp_ldf_patient_event-001.sql + splitStatements: false + - changeSet: + id: 14 + author: liquibase + changes: + - sqlFile: + path: 014-sp_ldf_observation_event-001.sql + splitStatements: false + - changeSet: + id: 15 + author: liquibase + changes: + - sqlFile: + path: 015-sp_ldf_phc_event-001.sql + splitStatements: false + - changeSet: + id: 16 + author: liquibase + changes: + - sqlFile: + path: 016-sp_ldf_intervention_event-001.sql + splitStatements: false + - changeSet: + id: 17 + author: liquibase + changes: + - sqlFile: + path: 017-sp_ldf_data_event-001.sql + splitStatements: false + - changeSet: + id: 18 + author: liquibase + changes: + - sqlFile: + path: 018-sp_public_health_case_fact_datamart_event-001.sql + splitStatements: false + + - changeSet: + id: 19 + author: liquibase + changes: + - sqlFile: + path: 019-v_inv_form_code_data-001.sql + splitStatements: false + - changeSet: + id: 20 + author: liquibase + changes: + - sqlFile: + path: 020-fn_get_record_status-001.sql + splitStatements: false diff --git a/liquibase-service/src/main/resources/db/changelog/db.rdb.changelog-16.1.yaml b/liquibase-service/src/main/resources/db/changelog/db.rdb.changelog-16.1.yaml new file mode 100644 index 00000000..a2ecd57a --- /dev/null +++ b/liquibase-service/src/main/resources/db/changelog/db.rdb.changelog-16.1.yaml @@ -0,0 +1,239 @@ +databaseChangeLog: + - changeSet: + id: 0 + author: liquibase + changes: + - sqlFile: + path: 000-db-general-001.sql + splitStatements: false + - changeSet: + id: 1 + author: liquibase + changes: + - sqlFile: + path: 001-create_nrt_batch_log-001.sql + splitStatements: false + - changeSet: + id: 2 + author: liquibase + changes: + - sqlFile: + path: 002-create_nrt_organization-001.sql + splitStatements: false + - changeSet: + id: 3 + author: liquibase + changes: + - sqlFile: + path: 003-create_nrt_organization_key-001.sql + splitStatements: false + - changeSet: + id: 4 + author: liquibase + changes: + - sqlFile: + path: 004-create_nrt_provider-001.sql + splitStatements: false + - changeSet: + id: 5 + author: liquibase + changes: + - sqlFile: + path: 005-create_nrt_provider_key.sql + splitStatements: false + - changeSet: + id: 6 + author: liquibase + changes: + - sqlFile: + path: 006-create_nrt_patient-001.sql + splitStatements: false + - changeSet: + id: 7 + author: liquibase + changes: + - sqlFile: + path: 007-create_nrt_patient_key-001.sql + splitStatements: false + - changeSet: + id: 8 + author: liquibase + changes: + - sqlFile: + path: 008-create_nrt_investigation-001.sql + splitStatements: false + - changeSet: + id: 9 + author: liquibase + changes: + - sqlFile: + path: 009-create_nrt_investigation_key-001.sql + splitStatements: false + - changeSet: + id: 10 + author: liquibase + changes: + - sqlFile: + path: 010-create_nrt_investigation_confirmation-001.sql + splitStatements: false + - changeSet: + id: 11 + author: liquibase + changes: + - sqlFile: + path: 011-create_nrt_confirmation_method_key-001.sql + splitStatements: false + - changeSet: + id: 12 + author: liquibase + changes: + - sqlFile: + path: 012-create_nrt_investigation_observation-001.sql + splitStatements: false + - changeSet: + id: 13 + author: liquibase + changes: + - sqlFile: + path: 013-create_nrt_notifications-001.sql + splitStatements: false + - changeSet: + id: 14 + author: liquibase + changes: + - sqlFile: + path: 014-create_nrt_notification_key-001.sql + splitStatements: false + - changeSet: + id: 15 + author: liquibase + changes: + - sqlFile: + path: 015-create_nrt_page_case_answer-001.sql + splitStatements: false + - changeSet: + id: 16 + author: liquibase + changes: + - sqlFile: + path: 016-create_nrt_ldf_data_key-001.sql + splitStatements: false + - changeSet: + id: 17 + author: liquibase + changes: + - sqlFile: + path: 017-create_nrt_ldf_group_key-001.sql + splitStatements: false + - changeSet: + id: 18 + author: liquibase + changes: + - sqlFile: + path: 018-create_nrt_observation-001.sql + splitStatements: false + - changeSet: + id: 19 + author: liquibase + changes: + - sqlFile: + path: 019-fn_get_record_status-001.sql + splitStatements: false + - changeSet: + id: 20 + author: liquibase + changes: + - sqlFile: + path: 020-sp_nrt_organization_postprocessing-001.sql + splitStatements: false + - changeSet: + id: 21 + author: liquibase + changes: + - sqlFile: + path: 021-sp_nrt_provider_postprocessing-001.sql + splitStatements: false + - changeSet: + id: 22 + author: liquibase + changes: + - sqlFile: + path: 022-sp_nrt_patient_postprocessing-001.sql + splitStatements: false + - changeSet: + id: 23 + author: liquibase + changes: + - sqlFile: + path: 023-sp_nrt_investigation_postprocessing-001.sql + splitStatements: false + - changeSet: + id: 24 + author: liquibase + changes: + - sqlFile: + path: 024-sp_nrt_notification_postprocessing-001.sql + splitStatements: false + - changeSet: + id: 25 + author: liquibase + changes: + - sqlFile: + path: 025-sp_s_pagebuilder_postprocessing-001.sql + splitStatements: false + - changeSet: + id: 26 + author: liquibase + changes: + - sqlFile: + path: 026-sp_l_pagebuilder_postprocessing-001.sql + splitStatements: false + - changeSet: + id: 27 + author: liquibase + changes: + - sqlFile: + path: 027-sp_d_pagebuilder_postprocessing-001.sql + splitStatements: false + - changeSet: + id: 28 + author: liquibase + changes: + - sqlFile: + path: 028-sp_sld_investigation_repeat_postprocessing-001.sql + splitStatements: false + - changeSet: + id: 29 + author: liquibase + changes: + - sqlFile: + path: 029-sp_page_builder_postprocessing-001.sql + splitStatements: false + - changeSet: + id: 30 + author: liquibase + changes: + - sqlFile: + path: 030-sp_f_page_case_postprocessing-001.sql + splitStatements: false + - changeSet: + id: 31 + author: liquibase + changes: + - sqlFile: + path: 031-sp_hepatitis_datamart_postprocessing-001.sql + splitStatements: false + - changeSet: + id: 32 + author: liquibase + changes: + - sqlFile: + path: 032-create_nrt_datamart_metadata-001.sql + splitStatements: false + - changeSet: + id: 33 + author: liquibase + changes: + - sqlFile: + path: 033-sp_get_date_dim-001.sql + splitStatements: false diff --git a/liquibase-service/src/main/resources/db/master/001-fn_sql_server_agent_status_override-001.sql b/liquibase-service/src/main/resources/db/master/001-fn_sql_server_agent_status_override-001.sql new file mode 100644 index 00000000..4e9d737e --- /dev/null +++ b/liquibase-service/src/main/resources/db/master/001-fn_sql_server_agent_status_override-001.sql @@ -0,0 +1,19 @@ +-- This function needs to be created in master since the Sql Server agent is not exposed +-- We need to override this function in the helm chart distributed properties +CREATE OR ALTER FUNCTION dbo.IsSqlAgentRunning() RETURNS BIT AS +BEGIN + DECLARE @IsRunning BIT = 0; + + IF (EXISTS(SELECT dss.* + FROM sys.dm_server_services dss + WHERE dss.[servicename] LIKE N'SQL Server Agent (%' + AND dss.[status] = 4 -- Running + )) + BEGIN + SET @IsRunning = 1; + END; + + RETURN @IsRunning; +END; + +GRANT VIEW SERVER STATE TO nbs_ods; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/000-db-general-001.sql b/liquibase-service/src/main/resources/db/odse/000-db-general-001.sql new file mode 100644 index 00000000..8d327f7e --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/000-db-general-001.sql @@ -0,0 +1,3 @@ +-- Upgrade compatibility level to allow inbuilt functions such as StringSplit +ALTER DATABASE NBS_ODSE SET COMPATIBILITY_LEVEL = 130; + diff --git a/liquibase-service/src/main/resources/db/odse/001-fn_get_value_by_cd_ques-001.sql b/liquibase-service/src/main/resources/db/odse/001-fn_get_value_by_cd_ques-001.sql new file mode 100644 index 00000000..68ff755a --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/001-fn_get_value_by_cd_ques-001.sql @@ -0,0 +1,48 @@ +CREATE OR ALTER FUNCTION dbo.fn_get_value_by_cd_ques( + @srte_code nvarchar(200), + @ques_identifier nvarchar(200) +) + returns table + as return + +select + cvg.code_short_desc_txt +from + nbs_odse.dbo.nbs_question nq with (nolock) + join nbs_srte.dbo.codeset cd with (nolock) on + cd.code_set_group_id = nq.code_set_group_id + join nbs_srte.dbo.code_value_general cvg with (nolock) on + cvg.code_set_nm = cd.code_set_nm + and nq.question_identifier = (@ques_identifier) + and @srte_code = cvg.code + and @srte_code is not null +UNION +select + cvg.code_short_desc_txt +FROM + nbs_odse.dbo.nbs_question nq with (nolock), + nbs_srte.dbo.codeset cd with (nolock), + nbs_srte.dbo.naics_industry_code cvg with (nolock) +where + nq.question_identifier = (@ques_identifier) +--( 'DEM139') + and @ques_identifier = 'DEM139' + and cd.code_set_group_id = nq.code_set_group_id + and cvg.code_set_nm = cd.code_set_nm + and @srte_code = cvg.code + and @srte_code is not null +UNION +select + cvg.code_short_desc_txt +FROM + nbs_odse.dbo.nbs_question nq with (nolock), + nbs_srte.dbo.codeset cd with (nolock), + nbs_srte.dbo.language_code cvg with (nolock) +where + nq.question_identifier = (@ques_identifier) +--( 'DEM142') + and @ques_identifier = 'DEM142' + and cd.code_set_group_id = nq.code_set_group_id + and cvg.code_set_nm = cd.code_set_nm + and @srte_code = cvg.code + and @srte_code is not null; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/002-fn_get_value_by_cvg-001.sql b/liquibase-service/src/main/resources/db/odse/002-fn_get_value_by_cvg-001.sql new file mode 100644 index 00000000..5c0d51bf --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/002-fn_get_value_by_cvg-001.sql @@ -0,0 +1,11 @@ +CREATE OR ALTER FUNCTION dbo.fn_get_value_by_cvg( + @srte_code nvarchar(200), + @cvg_str nvarchar(200) +) + returns table + as return + select cvg.code_short_desc_txt + from nbs_srte.dbo.code_value_general cvg with (nolock) + where cvg.code_set_nm = @cvg_str + and @srte_code = cvg.code + and @srte_code is not null; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/003-fn-get_user_name-001.sql b/liquibase-service/src/main/resources/db/odse/003-fn-get_user_name-001.sql new file mode 100644 index 00000000..dac1b555 --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/003-fn-get_user_name-001.sql @@ -0,0 +1,7 @@ +CREATE or ALTER FUNCTION dbo.fn_get_user_name(@user_id as bigint) + RETURNS Table + AS RETURN + SELECT CAST((RTRIM(LTRIM(au.user_last_nm)) + ', ' + + RTRIM(LTRIM(au.user_first_nm))) as varchar(150)) as user_full_name + FROM NBS_ODSE.dbo.Auth_user au WITH (NOLOCK) + WHERE au.NEDSS_ENTRY_ID = @user_id; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/004-fn_get_value_by_cd_codeset-001.sql b/liquibase-service/src/main/resources/db/odse/004-fn_get_value_by_cd_codeset-001.sql new file mode 100644 index 00000000..4714bdda --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/004-fn_get_value_by_cd_codeset-001.sql @@ -0,0 +1,13 @@ +CREATE OR ALTER function dbo.fn_get_value_by_cd_codeset( + @srte_code nvarchar(200), + @unique_cd nvarchar(200) +) + returns table + as return + + select cvg.code_short_desc_txt + from nbs_srte.dbo.codeset cd with (nolock) + join nbs_srte.dbo.totalidm tidm with (nolock) on tidm.SRT_reference = cd.code_set_nm and tidm.unique_cd = (@unique_cd) + join nbs_srte.dbo.code_value_general cvg with (nolock) on cvg.code_set_nm = cd.code_set_nm + and cvg.code = @srte_code + and @srte_code is not null; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/005-sp_organization_event-001.sql b/liquibase-service/src/main/resources/db/odse/005-sp_organization_event-001.sql new file mode 100644 index 00000000..600bd848 --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/005-sp_organization_event-001.sql @@ -0,0 +1,198 @@ +CREATE OR ALTER PROCEDURE dbo.sp_organization_event @org_id_list nvarchar(max) +AS +Begin + +BEGIN TRY + DECLARE @batch_id BIGINT; + SET @batch_id = cast((format(getdate(),'yyMMddHHmmss')) as bigint); +INSERT INTO [rdb_modern].[dbo].[job_flow_log] +( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[Msg_Description1] +) +VALUES ( + @batch_id + ,'Organization PRE-Processing Event' + ,'NBS_ODSE.sp_organization_event' + ,'START' + ,0 + ,LEFT('Pre ID-' + @org_id_list,199) + ,0 + ,LEFT(@org_id_list,199) + ); + +SELECT o.organization_uid, + LTRIM(RTRIM(SUBSTRING(o.description,1,1000))) as description, + o.cd, + LTRIM(RTRIM(SUBSTRING(o.electronic_ind,1,1))) as electronic_ind, + LTRIM(RTRIM(SUBSTRING(dbo.fn_get_record_status(o.record_status_cd),1,20))) as record_status_cd, + o.record_status_time, + o.status_cd, + o.status_time, + LTRIM(RTRIM(o.local_id)) as local_id, + o.version_ctrl_nbr, + o.edx_ind, + LTRIM(RTRIM(naics.code_short_desc_txt)) as 'stand_ind_class', + o.add_user_id, + case + when o.add_user_id > 0 then (select * from dbo.fn_get_user_name(o.add_user_id)) + end as add_user_name, + o.last_chg_user_id, + case + when o.last_chg_user_id > 0 then (select * from dbo.fn_get_user_name(o.last_chg_user_id)) + end as last_chg_user_name, + o.add_time, + o.last_chg_time, + nested.name AS 'organization_name', + nested.address AS 'organization_address', + nested.phone AS 'organization_telephone', + nested.fax AS 'organization_fax', + nested.entity_id AS 'organization_entity_id' +FROM NBS_ODSE.dbo.Organization o WITH (NOLOCK) + OUTER apply (SELECT * + FROM + -- address + (SELECT (SELECT elp.cd AS [addr_elp_cd], + elp.use_cd AS [addr_elp_use_cd], + pl.postal_locator_uid AS [addr_pl_uid], + STRING_ESCAPE(pl.street_addr1, 'json') street_addr1, + STRING_ESCAPE(pl.street_addr2, 'json') street_addr2, + STRING_ESCAPE(pl.city_desc_txt, 'json') city, + pl.zip_cd zip, + pl.cnty_cd cnty_cd, + pl.state_cd state, + pl.cntry_cd cntry_cd, + sc.code_desc_txt state_desc, + scc.code_desc_txt county, + pl.within_city_limits_ind within_city_limits_ind, + cc.code_short_desc_txt AS [country], + elp.locator_desc_txt AS [address_comments], + ccv.code_desc_txt as [county_desc] + FROM entity_locator_participation elp with (nolock) + left outer join postal_locator pl with (nolock) + on elp.locator_uid = pl.postal_locator_uid + left outer join nbs_srte.dbo.state_code sc with (nolock) on sc.state_cd = pl.state_cd + left outer join nbs_srte.dbo.state_county_code_value scc with (nolock) + on scc.code = pl.cnty_cd + left outer join nbs_srte.dbo.country_code cc with (nolock) on cc.code = pl.cntry_cd + left outer join nbs_srte.dbo.state_county_code_value ccv with (nolock) + on ccv.code = pl.cnty_cd + WHERE elp.entity_uid = o.organization_uid + AND elp.class_cd = 'PST' + AND elp.use_cd = 'WP' + AND elp.cd = 'O' + FOR json path, INCLUDE_NULL_VALUES) AS address) AS address, + -- org name + (SELECT (SELECT on2.organization_uid AS [on_org_uid], + LTRIM(RTRIM(SUBSTRING(on2.nm_txt, 1, 50))) AS [organization_name] + FROM NBS_ODSE.dbo.Organization_name on2 + WHERE o.organization_uid = on2.organization_uid + FOR json path, INCLUDE_NULL_VALUES) AS name) AS name, + -- org phone + (SELECT (SELECT tl.tele_locator_uid AS [ph_tl_uid], + elp.cd AS [ph_elp_cd], + elp.use_cd AS [ph_elp_use_cd], + REPLACE(REPLACE(tl.phone_nbr_txt, '-', ''), ' ', '') telephone_nbr, + tl.extension_txt extension_txt, + STRING_ESCAPE(tl.email_address, 'json') email_address, + elp.locator_desc_txt as [phone_comments] + FROM Entity_locator_participation elp WITH (NOLOCK) + JOIN Tele_locator tl WITH (NOLOCK) ON elp.locator_uid = tl.tele_locator_uid + WHERE elp.entity_uid = o.organization_uid + AND elp.class_cd = 'TELE' + AND elp.use_cd = 'WP' + AND elp.cd = 'PH' + FOR json path, INCLUDE_NULL_VALUES) AS phone) AS phone, + -- org fax + (SELECT (SELECT tl.tele_locator_uid AS [fax_tl_uid], + elp.cd AS [fax_elp_cd], + elp.use_cd AS [fax_elp_use_cd], + LTRIM(RTRIM(SUBSTRING(tl.phone_nbr_txt, 1, 20))) as [org_fax] + FROM Entity_locator_participation elp WITH (NOLOCK) + JOIN Tele_locator tl WITH (NOLOCK) ON elp.locator_uid = tl.tele_locator_uid + WHERE elp.entity_uid = o.organization_uid + AND elp.class_cd = 'TELE' + AND elp.use_cd = 'WP' + AND elp.cd = 'FAX' + FOR json path, INCLUDE_NULL_VALUES) AS fax) AS fax, + -- Entity id + (SELECT (SELECT ei.entity_uid, + ei.type_cd AS [type_cd], + ei.record_status_cd AS [record_status_cd], + STRING_ESCAPE( + REPLACE(REPLACE(ei.root_extension_txt, '-', ''), ' ', ''), + 'json') AS [root_extension_txt], + ei.entity_id_seq, + ei.assigning_authority_cd, + case + when (ei.type_cd = 'FI' and ei.assigning_authority_cd is not null) + then (select * + from dbo.fn_get_value_by_cvg(ei.assigning_authority_cd, 'EI_AUTH_ORG')) + end as facility_id_auth + FROM entity_id ei WITH (NOLOCK) + WHERE ei.entity_uid = o.organization_uid + FOR json path, INCLUDE_NULL_VALUES) AS entity_id) AS entity_id) AS nested + LEFT JOIN nbs_srte.dbo.NAICS_INDUSTRY_CODE naics ON (NAICS.CODE = o.STANDARD_INDUSTRY_CLASS_CD) +WHERE o.organization_uid in (SELECT value FROM STRING_SPLIT(@org_id_list, ',')) + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] +( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[Msg_Description1] +) +VALUES ( + @batch_id + ,'Organization PRE-Processing Event' + ,'NBS_ODSE.sp_organization_event' + ,'COMPLETE' + ,0 + ,LEFT('Pre ID-' + @org_id_list,199) + ,0 + ,LEFT(@org_id_list,199) + ); + +end try + +BEGIN CATCH + + +IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[Msg_Description1] +) +VALUES ( + @batch_id + ,'Organization PRE-Processing Event' + ,'NBS_ODSE.sp_organization_event' + ,'ERROR: ' + @ErrorMessage + ,0 + ,LEFT('Pre ID-' + @org_id_list,199) + ,0 + ,LEFT(@org_id_list,199) + ); +return @ErrorMessage; + +END CATCH + +end; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/006-sp_provider_event-001.sql b/liquibase-service/src/main/resources/db/odse/006-sp_provider_event-001.sql new file mode 100644 index 00000000..5903bf27 --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/006-sp_provider_event-001.sql @@ -0,0 +1,204 @@ +CREATE OR ALTER PROCEDURE dbo.sp_provider_event @user_id_list nvarchar(max) +AS +BEGIN + + BEGIN TRY + + DECLARE @batch_id BIGINT; + SET @batch_id = cast((format(getdate(), 'yyMMddHHmmss')) as bigint); + + INSERT INTO [rdb_modern].[dbo].[job_flow_log] + (batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[Msg_Description1]) + VALUES (@batch_id + ,'Provider PRE-Processing Event' + ,'NBS_ODSE.sp_provider_event' + ,'START' + ,0 + ,LEFT('Pre ID-' + @user_id_list, 199) + ,0 + ,LEFT(@user_id_list, 199)); + + SELECT p.person_uid, + p.person_parent_uid, + p.description, + p.add_time, + p.first_nm, + p.middle_nm, + p.last_nm, + p.nm_suffix, + p.cd, + p.electronic_ind, + p.last_chg_time, + dbo.fn_get_record_status(p.record_status_cd) as record_status_cd, + p.record_status_time, + p.status_cd, + p.status_time, + p.local_id, + p.version_ctrl_nbr, + p.edx_ind, + p.dedup_match_ind, + p.add_user_id, + case + when p.add_user_id > 0 then (select * from dbo.fn_get_user_name(p.add_user_id)) + end as add_user_name, + p.last_chg_user_id, + case + when p.last_chg_user_id > 0 then (select * from dbo.fn_get_user_name(p.last_chg_user_id)) + end as last_chg_user_name, + nested.name AS 'provider_name', + nested.address AS 'provider_address', + nested.phone AS 'provider_telephone', + nested.email AS 'provider_email', + nested.entity_id AS 'provider_entity' + FROM nbs_odse.dbo.Person p WITH (NOLOCK) + OUTER apply (SELECT * + FROM + -- address + (SELECT (SELECT elp.cd AS [addr_elp_cd], + elp.use_cd AS [addr_elp_use_cd], + pl.postal_locator_uid as [addr_pl_uid], + STRING_ESCAPE(pl.street_addr1, 'json') streetAddr1, + STRING_ESCAPE(pl.street_addr2, 'json') streetAddr2, + STRING_ESCAPE(pl.city_desc_txt, 'json') city, + pl.zip_cd zip, + pl.cnty_cd cntyCd, + pl.state_cd state, + pl.cntry_cd cntryCd, + sc.code_desc_txt state_desc, + scc.code_desc_txt county, + pl.within_city_limits_ind within_city_limits_ind, + cc.code_short_desc_txt country, + elp.locator_desc_txt address_comments + FROM nbs_odse.dbo.Entity_locator_participation elp WITH (NOLOCK) + LEFT OUTER JOIN nbs_odse.dbo.Postal_locator pl WITH (NOLOCK) + ON elp.locator_uid = pl.postal_locator_uid + LEFT OUTER JOIN nbs_srte.dbo.State_code sc with (NOLOCK) ON sc.state_cd = pl.state_cd + LEFT OUTER JOIN nbs_srte.dbo.State_county_code_value scc with (NOLOCK) + ON scc.code = pl.cnty_cd + LEFT OUTER JOIN nbs_srte.dbo.Country_code cc with (nolock) ON cc.CODE = pl.cntry_cd + WHERE elp.entity_uid = p.person_uid + AND elp.class_cd = 'PST' + AND elp.CD = 'O' + AND elp.USE_CD = 'WP' + FOR json path, INCLUDE_NULL_VALUES) AS address) AS address, + -- person phone + (SELECT (SELECT tl.tele_locator_uid AS [ph_tl_uid], + elp.cd AS [ph_elp_cd], + elp.use_cd AS [ph_elp_use_cd], + REPLACE(REPLACE(tl.phone_nbr_txt, '-', ''), ' ', '') telephoneNbr, + tl.extension_txt extensionTxt, + elp.locator_desc_txt phone_comments + FROM nbs_odse.dbo.Entity_locator_participation elp WITH (NOLOCK) + JOIN nbs_odse.dbo.Tele_locator tl WITH (NOLOCK) + ON elp.locator_uid = tl.tele_locator_uid + WHERE elp.entity_uid = p.person_uid + AND elp.CLASS_CD = 'TELE' + AND elp.RECORD_STATUS_CD = 'ACTIVE' + AND tl.phone_nbr_txt IS NOT NULL + FOR json path, INCLUDE_NULL_VALUES) AS phone) AS phone, + -- person email + (SELECT (SELECT tl.tele_locator_uid AS [email_tl_uid], + elp.cd AS [email_elp_cd], + elp.use_cd AS [email_elp_use_cd], + STRING_ESCAPE(tl.email_address, 'json') emailAddress + FROM nbs_odse.dbo.Entity_locator_participation elp WITH (NOLOCK) + JOIN nbs_odse.dbo.Tele_locator tl WITH (NOLOCK) + ON elp.locator_uid = tl.tele_locator_uid + WHERE elp.entity_uid = p.person_uid + AND elp.class_cd = 'TELE' + AND elp.RECORD_STATUS_CD = 'ACTIVE' + AND tl.email_address IS NOT NULL + FOR json path, INCLUDE_NULL_VALUES) AS email) AS email, + -- person names + (SELECT (SELECT pn.person_uid AS [pn_person_uid], + STRING_ESCAPE(REPLACE(pn.last_nm, '-', ' '), 'json') lastNm, + soundex(pn.last_nm) lastNmSndx, + STRING_ESCAPE(pn.middle_nm, 'json') middleNm, + STRING_ESCAPE(pn.first_nm, 'json') firstNm, + soundex(pn.first_nm) firstNmSndx, + pn.nm_use_cd, + --Target length check + pn.nm_suffix nmSuffix, + case + when (pn.nm_suffix is not null or pn.nm_suffix != '') + then (select * from dbo.fn_get_value_by_cd_ques(pn.nm_suffix, 'DEM107')) + end as name_suffix, + pn.nm_prefix nmPrefix, + case + when (pn.nm_prefix is not null or pn.nm_prefix != '') + then (select * from dbo.fn_get_value_by_cd_ques(pn.nm_prefix, 'DEM101')) + end as name_prefix, + pn.nm_degree nmDegree, + pn.person_name_seq AS [pn_person_name_seq], + pn.last_chg_time AS [pn_last_chg_time] + FROM nbs_odse.dbo.person_name pn WITH (NOLOCK) + WHERE person_uid = p.person_uid + FOR json path, INCLUDE_NULL_VALUES) AS name) AS name, + -- Entity id + (SELECT (SELECT ei.entity_uid, + ei.type_cd typeCd, + ei.record_status_cd recordStatusCd, + STRING_ESCAPE( + REPLACE(REPLACE(ei.root_extension_txt, '-', ''), ' ', ''), + 'json') rootExtensionTxt, + ei.entity_id_seq, + ei.assigning_authority_cd + FROM nbs_odse.dbo.entity_id ei WITH (NOLOCK) + WHERE ei.entity_uid = p.person_uid + AND ei.record_status_cd = 'ACTIVE' + FOR json path, INCLUDE_NULL_VALUES) AS entity_id) AS entity_id) AS nested + WHERE p.person_uid in (SELECT value FROM STRING_SPLIT(@user_id_list, ',')) + AND p.cd = 'PRV'; + + INSERT INTO [rdb_modern].[dbo].[job_flow_log] (batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[Msg_Description1]) + VALUES (@batch_id + ,'Provider PRE-Processing Event' + ,'NBS_ODSE.sp_provider_event' + ,'COMPLETE' + ,0 + ,LEFT('Pre ID-' + @user_id_list, 199) + ,0 + ,LEFT(@user_id_list, 199)); + + END TRY + BEGIN CATCH + + + IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + INSERT INTO [rdb_modern].[dbo].[job_flow_log] (batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[Msg_Description1]) + VALUES (@batch_id + ,'Provider PRE-Processing Event' + ,'NBS_ODSE.sp_provider_event' + ,'ERROR: ' + @ErrorMessage + ,0 + ,LEFT('Pre ID-' + @user_id_list, 199) + ,0 + ,LEFT(@user_id_list, 199)); + return @ErrorMessage; + + END CATCH + +END; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/007-sp_patient_race_event-001.sql b/liquibase-service/src/main/resources/db/odse/007-sp_patient_race_event-001.sql new file mode 100644 index 00000000..4d75c0a8 --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/007-sp_patient_race_event-001.sql @@ -0,0 +1,924 @@ +CREATE OR ALTER PROCEDURE dbo.sp_patient_race_event @user_id_list nvarchar(max), @batch_id bigint +AS +BEGIN + + BEGIN TRY + + SELECT pr.PERSON_UID AS 'PATIENT_UID', + RACE_CD, + RACE_CODE.CODE_DESC_TXT, + RACE_CATEGORY_CD, + RACE_CODE.PARENT_IS_CD + into #TMP_S_PERSON_RACE + from NBS_ODSE.dbo.PERSON_RACE pr with (nolock) + LEFT OUTER JOIN NBS_SRTE.dbo.RACE_CODE with (nolock) ON pr.RACE_CD = RACE_CODE.CODE + LEFT OUTER JOIN NBS_SRTE.dbo.RACE_CODE RT with (nolock) ON pr.RACE_CATEGORY_CD = RT.CODE + where pr.person_uid in (SELECT value FROM STRING_SPLIT(@user_id_list, ',')) + ORDER BY PATIENT_UID, CODE_DESC_TXT; + + + SELECT * + into #TMP_PERSON_ROOT_RACE + FROM #TMP_S_PERSON_RACE + WHERE PARENT_IS_CD = 'ROOT' +--ORDER BY PATIENT_UID + ; + + + IF OBJECT_ID('#TMP_S_PERSON_AMER_INDIAN_RACE', 'U') IS NOT NULL + drop table #TMP_S_PERSON_AMER_INDIAN_RACE ; + + + SELECT * + into #TMP_S_PERSON_AMER_INDIAN_RACE + FROM #TMP_S_PERSON_RACE + WHERE RACE_CATEGORY_CD = '1002-5' + AND RACE_CD <> RACE_CATEGORY_CD +--ORDER BY PATIENT_UID + ; + + + IF OBJECT_ID('#TMP_S_PERSON_BLACK_RACE', 'U') IS NOT NULL + drop table #TMP_S_PERSON_BLACK_RACE ; + + + SELECT * + into #TMP_S_PERSON_BLACK_RACE + FROM #TMP_S_PERSON_RACE + WHERE RACE_CATEGORY_CD = '2054-5' + AND RACE_CD <> RACE_CATEGORY_CD +--ORDER BY PATIENT_UID + ; + + + IF OBJECT_ID('#TMP_S_PERSON_WHITE_RACE', 'U') IS NOT NULL + drop table #TMP_S_PERSON_WHITE_RACE ; + + SELECT * + into #TMP_S_PERSON_WHITE_RACE + FROM #TMP_S_PERSON_RACE + WHERE RACE_CATEGORY_CD = '2106-3' + AND RACE_CD <> RACE_CATEGORY_CD +--ORDER BY PATIENT_UID + ; + + + IF OBJECT_ID('#TMP_S_PERSON_ASIAN_RACE', 'U') IS NOT NULL + drop table #TMP_S_PERSON_ASIAN_RACE ; + + SELECT * + into #TMP_S_PERSON_ASIAN_RACE + FROM #TMP_S_PERSON_RACE + WHERE RACE_CATEGORY_CD = '2028-9' + AND RACE_CD <> RACE_CATEGORY_CD +--ORDER BY PATIENT_UID + ; + + + IF OBJECT_ID('#TMP_S_PERSON_HAWAIIAN_RACE', 'U') IS NOT NULL + drop table #TMP_S_PERSON_HAWAIIAN_RACE ; + + SELECT * + into #TMP_S_PERSON_HAWAIIAN_RACE + FROM #TMP_S_PERSON_RACE + WHERE RACE_CATEGORY_CD = '2076-8' + AND RACE_CD <> RACE_CATEGORY_CD +--ORDER BY PATIENT_UID + ; + + +/*Calculate Person Race*/ + + IF OBJECT_ID('#TMP_S_PERSON_ROOT_RACE', 'U') IS NOT NULL + drop table #TMP_S_PERSON_ROOT_RACE; + + select * + into #TMP_S_PERSON_ROOT_RACE + from #TMP_PERSON_ROOT_RACE; + + ALTER TABLE #TMP_S_PERSON_ROOT_RACE + ADD PATIENT_RACE_CALCULATED VARCHAR(2000), + PATIENT_RACE_CALC_DETAILS varchar(4000), + PATIENT_RACE_ALL varchar(4000); + + with cte as (select patient_uid, + (STUFF((SELECT ' | ' + CAST(sppr2.CODE_DESC_TXT AS varchar(2000)) + FROM #TMP_S_PERSON_ROOT_RACE sppr2 + WHERE sppr2.patient_uid = sppr.patient_uid + FOR XML PATH('')), 2, 1, '')) AS CODE_DESC_TXT_List + from #TMP_S_PERSON_ROOT_RACE sppr + where CODE_DESC_TXT is not null + --and RACE_CATEGORY_CD not in ('PHC1175' ,'NASK','U') + group by patient_uid + --having count(*) > 1 + + ) + update sppr + set sppr.PATIENT_RACE_ALL = rtrim(ltrim(cte1.CODE_DESC_TXT_List)) + from #TMP_S_PERSON_ROOT_RACE sppr, + cte cte1 + where sppr.PATIENT_UID = cte1.PATIENT_UID +--and cte1.rn = 1 + ; + + + with cte as (select patient_uid, + (STUFF((SELECT ' | ' + CAST(sppr2.CODE_DESC_TXT AS varchar(2000)) + FROM #TMP_S_PERSON_ROOT_RACE sppr2 + WHERE sppr2.patient_uid = sppr.patient_uid + and RACE_CATEGORY_CD not in ('PHC1175', 'NASK', 'U') + FOR XML PATH('')), 2, 1, '')) AS CODE_DESC_TXT_List + from #TMP_S_PERSON_ROOT_RACE sppr + where CODE_DESC_TXT is not null + --and RACE_CATEGORY_CD not in ('PHC1175' ,'NASK','U') + group by patient_uid + --having count(*) > 1 + + ) + update sppr + set sppr.PATIENT_RACE_CALC_DETAILS = rtrim(ltrim(cte1.CODE_DESC_TXT_List)) + from #TMP_S_PERSON_ROOT_RACE sppr, + cte cte1 + where sppr.PATIENT_UID = cte1.PATIENT_UID +--and cte1.rn = 1 + ; + + + update #TMP_S_PERSON_ROOT_RACE + set PATIENT_RACE_CALCULATED = + case + when len(PATIENT_RACE_CALC_DETAILS) < 1 OR PATIENT_RACE_CALC_DETAILS is null then 'Unknown' + when CHARINDEX('|', PATIENT_RACE_CALC_DETAILS) > 0 then 'Multi-Race' + when CHARINDEX('|', PATIENT_RACE_CALC_DETAILS) = 0 then PATIENT_RACE_CALC_DETAILS + end; + + +/*Person Race Breakdown*/ + ALTER TABLE #TMP_S_PERSON_AMER_INDIAN_RACE + ADD + PATIENT_RACE_AMER_IND_ALL varchar(2000), + PATIENT_RACE_AMER_IND_1 varchar(50), + PATIENT_RACE_AMER_IND_2 varchar(50), + PATIENT_RACE_AMER_IND_3 varchar(50), + PATIENT_RACE_AMER_IND_4 varchar(50), + PATIENT_RACE_AMER_IND_GT3_IND varchar(10); + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_AMER_INDIAN_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_AMER_IND_1] = cte1.code_desc_txt + from #TMP_S_PERSON_AMER_INDIAN_RACE prs, + cte cte1 + where cte1.rn = 1 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_AMER_INDIAN_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_AMER_IND_2] = cte1.code_desc_txt + from #TMP_S_PERSON_AMER_INDIAN_RACE prs, + cte cte1 + where cte1.rn = 2 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_AMER_INDIAN_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_AMER_IND_3] = cte1.code_desc_txt + from #TMP_S_PERSON_AMER_INDIAN_RACE prs, + cte cte1 + where cte1.rn = 3 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_AMER_INDIAN_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_AMER_IND_4] = cte1.code_desc_txt + from #TMP_S_PERSON_AMER_INDIAN_RACE prs, + cte cte1 + where cte1.rn = 4 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + + update #TMP_S_PERSON_AMER_INDIAN_RACE + set [PATIENT_RACE_AMER_IND_GT3_IND] = + case + when [PATIENT_RACE_AMER_IND_4] is not null then 'TRUE' + when [PATIENT_RACE_AMER_IND_4] is null then 'FALSE' + end; + + + IF OBJECT_ID('#TEMP_AMER_IND_RACE_ALL', 'U') IS NOT NULL + drop table #TEMP_AMER_IND_RACE_ALL ; + + + SELECT distinct patient_uid, + STUFF((SELECT distinct ' | ' + code_desc_txt + FROM #TMP_S_PERSON_AMER_INDIAN_RACE t1 + where t1.patient_uid = t2.patient_uid + FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') as PATIENT_RACE_AMER_IND_ALL + into #TEMP_AMER_IND_RACE_ALL + from #TMP_S_PERSON_AMER_INDIAN_RACE t2; + + update p + SET p.PATIENT_RACE_AMER_IND_ALL = SUBSTRING(ps.PATIENT_RACE_AMER_IND_ALL, 2, LEN(ps.PATIENT_RACE_AMER_IND_ALL)) + from #TMP_S_PERSON_AMER_INDIAN_RACE p + INNER JOIN #TEMP_AMER_IND_RACE_ALL ps + on p.PATIENT_UID = ps.PATIENT_UID +--and prs.RACE_CD = cte1.race_cd + ; + + + ALTER TABLE #TMP_S_PERSON_BLACK_RACE + ADD + PATIENT_RACE_BLACK_ALL varchar(2000), + PATIENT_RACE_BLACK_1 varchar(50), + PATIENT_RACE_BLACK_2 varchar(50), + PATIENT_RACE_BLACK_3 varchar(50), + PATIENT_RACE_BLACK_4 varchar(50), + PATIENT_RACE_BLACK_GT3_IND varchar(10); + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_BLACK_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_BLACK_1] = cte1.code_desc_txt + from #TMP_S_PERSON_BLACK_RACE prs, + cte cte1 + where cte1.rn = 1 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_BLACK_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_BLACK_2] = cte1.code_desc_txt + from #TMP_S_PERSON_BLACK_RACE prs, + cte cte1 + where cte1.rn = 2 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_BLACK_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_BLACK_3] = cte1.code_desc_txt + from #TMP_S_PERSON_BLACK_RACE prs, + cte cte1 + where cte1.rn = 3 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_BLACK_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_BLACK_4] = cte1.code_desc_txt + from #TMP_S_PERSON_BLACK_RACE prs, + cte cte1 + where cte1.rn = 4 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + + + update #TMP_S_PERSON_BLACK_RACE + set [PATIENT_RACE_BLACK_GT3_IND] = + case + when [PATIENT_RACE_BLACK_4] is not null then 'TRUE' + when [PATIENT_RACE_BLACK_4] is null then 'FALSE' + end; + + + IF OBJECT_ID('#TEMP_BLACK_RACE_ALL', 'U') IS NOT NULL + drop table #TEMP_BLACK_RACE_ALL ; + + + SELECT distinct patient_uid, + STUFF((SELECT distinct ' | ' + code_desc_txt + FROM #TMP_S_PERSON_BLACK_RACE t1 + where t1.patient_uid = t2.patient_uid + FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') as PATIENT_RACE_BLACK_ALL + into #TEMP_BLACK_RACE_ALL + from #TMP_S_PERSON_BLACK_RACE t2 + + update p + SET p.PATIENT_RACE_BLACK_ALL = SUBSTRING(ps.PATIENT_RACE_BLACK_ALL, 2, LEN(ps.PATIENT_RACE_BLACK_ALL)) + from #TMP_S_PERSON_BLACK_RACE p + INNER JOIN #TEMP_BLACK_RACE_ALL ps + on p.PATIENT_UID = ps.PATIENT_UID +--and prs.RACE_CD = cte1.race_cd + ; + + + ALTER TABLE #TMP_S_PERSON_WHITE_RACE + ADD + PATIENT_RACE_WHITE_ALL varchar(2000), + PATIENT_RACE_WHITE_1 varchar(50), + PATIENT_RACE_WHITE_2 varchar(50), + PATIENT_RACE_WHITE_3 varchar(50), + PATIENT_RACE_WHITE_4 varchar(50), + PATIENT_RACE_WHITE_GT3_IND varchar(10); + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_WHITE_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_WHITE_1] = cte1.code_desc_txt + from #TMP_S_PERSON_WHITE_RACE prs, + cte cte1 + where cte1.rn = 1 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_WHITE_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_WHITE_2] = cte1.code_desc_txt + from #TMP_S_PERSON_WHITE_RACE prs, + cte cte1 + where cte1.rn = 2 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_WHITE_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_WHITE_3] = cte1.code_desc_txt + from #TMP_S_PERSON_WHITE_RACE prs, + cte cte1 + where cte1.rn = 3 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_WHITE_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_WHITE_4] = cte1.code_desc_txt + from #TMP_S_PERSON_WHITE_RACE prs, + cte cte1 + where cte1.rn = 4 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + + + update #TMP_S_PERSON_WHITE_RACE + set [PATIENT_RACE_WHITE_GT3_IND] = + case + when [PATIENT_RACE_WHITE_4] is not null then 'TRUE' + when [PATIENT_RACE_WHITE_4] is null then 'FALSE' + end; + + + IF OBJECT_ID('#TEMP_WHITE_RACE_ALL', 'U') IS NOT NULL + drop table #TEMP_WHITE_RACE_ALL ; + + + SELECT distinct patient_uid, + STUFF((SELECT distinct ' | ' + code_desc_txt + FROM #TMP_S_PERSON_WHITE_RACE t1 + where t1.patient_uid = t2.patient_uid + FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') as PATIENT_RACE_WHITE_ALL + into #TEMP_WHITE_RACE_ALL + from #TMP_S_PERSON_WHITE_RACE t2; + + update p + SET p.PATIENT_RACE_WHITE_ALL = SUBSTRING(ps.PATIENT_RACE_WHITE_ALL, 2, LEN(ps.PATIENT_RACE_WHITE_ALL)) + from #TMP_S_PERSON_WHITE_RACE p + INNER JOIN #TEMP_WHITE_RACE_ALL ps + on p.PATIENT_UID = ps.PATIENT_UID +--and prs.RACE_CD = cte1.race_cd + ; + + + ALTER TABLE #TMP_S_PERSON_ASIAN_RACE + ADD + PATIENT_RACE_ASIAN_ALL varchar(2000), + PATIENT_RACE_ASIAN_1 varchar(50), + PATIENT_RACE_ASIAN_2 varchar(50), + PATIENT_RACE_ASIAN_3 varchar(50), + PATIENT_RACE_ASIAN_4 varchar(50), + PATIENT_RACE_ASIAN_GT3_IND varchar(10); + ; + with cte as (select pr.person_uid + , prs.race_cd + , prs.race_category_cd + , prs.[code_desc_txt] + , row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_ASIAN_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_ASIAN_1] = cte1.code_desc_txt + from #TMP_S_PERSON_ASIAN_RACE prs, + cte cte1 + where cte1.rn = 1 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_ASIAN_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_ASIAN_2] = cte1.code_desc_txt + from #TMP_S_PERSON_ASIAN_RACE prs, + cte cte1 + where cte1.rn = 2 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_ASIAN_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_ASIAN_3] = cte1.code_desc_txt + from #TMP_S_PERSON_ASIAN_RACE prs, + cte cte1 + where cte1.rn = 3 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_ASIAN_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_ASIAN_4] = cte1.code_desc_txt + from #TMP_S_PERSON_ASIAN_RACE prs, + cte cte1 + where cte1.rn = 4 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + + + update #TMP_S_PERSON_ASIAN_RACE + set [PATIENT_RACE_ASIAN_GT3_IND] = + case + when [PATIENT_RACE_ASIAN_4] is not null then 'TRUE' + when [PATIENT_RACE_ASIAN_4] is null then 'FALSE' + end; + + + IF OBJECT_ID('#TEMP_ASIAN_RACE_ALL', 'U') IS NOT NULL + drop table #TEMP_ASIAN_RACE_ALL ; + + + SELECT distinct patient_uid, + STUFF((SELECT distinct ' | ' + code_desc_txt + FROM #TMP_S_PERSON_ASIAN_RACE t1 + where t1.patient_uid = t2.patient_uid + FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') as PATIENT_RACE_ASIAN_ALL + into #TEMP_ASIAN_RACE_ALL + from #TMP_S_PERSON_ASIAN_RACE t2 + + update p + SET p.PATIENT_RACE_ASIAN_ALL = SUBSTRING(ps.PATIENT_RACE_ASIAN_ALL, 2, LEN(ps.PATIENT_RACE_ASIAN_ALL)) + from #TMP_S_PERSON_ASIAN_RACE p + INNER JOIN #TEMP_ASIAN_RACE_ALL ps + on p.PATIENT_UID = ps.PATIENT_UID +--and prs.RACE_CD = cte1.race_cd + ; + + + ALTER TABLE #TMP_S_PERSON_HAWAIIAN_RACE + ADD + PATIENT_RACE_NAT_HI_ALL varchar(2000), + PATIENT_RACE_NAT_HI_1 varchar(50), + PATIENT_RACE_NAT_HI_2 varchar(50), + PATIENT_RACE_NAT_HI_3 varchar(50), + PATIENT_RACE_NAT_HI_4 varchar(50), + PATIENT_RACE_NAT_HI_GT3_IND varchar(10); + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_HAWAIIAN_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_NAT_HI_1] = cte1.code_desc_txt + from #TMP_S_PERSON_HAWAIIAN_RACE prs, + cte cte1 + where cte1.rn = 1 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_HAWAIIAN_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_NAT_HI_2] = cte1.code_desc_txt + from #TMP_S_PERSON_HAWAIIAN_RACE prs, + cte cte1 + where cte1.rn = 2 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_HAWAIIAN_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_NAT_HI_3] = cte1.code_desc_txt + from #TMP_S_PERSON_HAWAIIAN_RACE prs, + cte cte1 + where cte1.rn = 3 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + ; + with cte as (select pr.person_uid, + prs.race_cd, + prs.race_category_cd, + prs.[code_desc_txt], + row_number() OVER (PARTITION BY pr.person_uid ORDER BY pr.person_uid) AS rn + from #TMP_S_PERSON_HAWAIIAN_RACE prs, + NBS_ODSE.dbo.person_race pr with (nolock), + [NBS_SRTE].[dbo].[Race_code] rc with (nolock) + where prs.PATIENT_UID = PR.person_uid + and pr.race_cd = pr.race_category_cd + and rc.code = pr.race_category_cd + group by pr.person_uid, prs.race_cd, prs.race_category_cd, prs.[code_desc_txt]) + update prs + set prs.[PATIENT_RACE_NAT_HI_4] = cte1.code_desc_txt + from #TMP_S_PERSON_HAWAIIAN_RACE prs, + cte cte1 + where cte1.rn = 4 + and prs.PATIENT_UID = cte1.person_uid +--and prs.RACE_CD = cte1.race_cd + ; + + + update #TMP_S_PERSON_HAWAIIAN_RACE + set [PATIENT_RACE_NAT_HI_GT3_IND] = + case + when [PATIENT_RACE_NAT_HI_4] is not null then 'TRUE' + when [PATIENT_RACE_NAT_HI_4] is null then 'FALSE' + end; + + + IF OBJECT_ID('#TEMP_HAWAIIAN_RACE_ALL', 'U') IS NOT NULL + drop table #TEMP_HAWAIIAN_RACE_ALL ; + + + SELECT distinct patient_uid, + STUFF((SELECT distinct ' | ' + code_desc_txt + FROM #TMP_S_PERSON_HAWAIIAN_RACE t1 + where t1.patient_uid = t2.patient_uid + FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') as PATIENT_RACE_NAT_HI_ALL + into #TEMP_HAWAIIAN_RACE_ALL + from #TMP_S_PERSON_HAWAIIAN_RACE t2 + + update p + SET p.PATIENT_RACE_NAT_HI_ALL = SUBSTRING(ps.PATIENT_RACE_NAT_HI_ALL, 2, LEN(ps.PATIENT_RACE_NAT_HI_ALL)) + from #TMP_S_PERSON_HAWAIIAN_RACE p + INNER JOIN #TEMP_HAWAIIAN_RACE_ALL ps + on p.PATIENT_UID = ps.PATIENT_UID +--and prs.RACE_CD = cte1.race_cd + ; + + +/*Person Race Out*/ + IF OBJECT_ID('#TMP_S_PERSON_RACE_OUT', 'U') IS NOT NULL + DROP TABLE #TMP_S_PERSON_RACE_OUT ; + + + select distinct patient_race_calculated as race_calculated + , patient_race_calc_details as race_calc_details + , patient_race_all as race_all + , cast(null as varchar(50)) as race_nat_hi_1 + , cast(null as varchar(50)) as race_nat_hi_2 + , cast(null as varchar(50)) as race_nat_hi_3 + , cast(null as varchar(10)) as race_nat_hi_gt3_ind + , cast(null as varchar(2000)) as race_nat_hi_all + , cast(null as varchar(50)) as race_asian_1 + , cast(null as varchar(50)) as race_asian_2 + , cast(null as varchar(2000)) as race_asian_all + , cast(null as varchar(50)) as race_asian_3 + , cast(null as varchar(10)) as race_asian_gt3_ind + , cast(null as varchar(50)) as race_amer_ind_1 + , cast(null as varchar(50)) as race_amer_ind_2 + , cast(null as varchar(50)) as race_amer_ind_3 + , cast(null as varchar(10)) as race_amer_ind_gt3_ind + , cast(null as varchar(2000)) as race_amer_ind_all + , cast(null as varchar(50)) as race_black_1 + , cast(null as varchar(50)) as race_black_2 + , cast(null as varchar(50)) as race_black_3 + , cast(null as varchar(10)) as race_black_gt3_ind + , cast(null as varchar(2000)) as race_black_all + , cast(null as varchar(50)) as race_white_1 + , cast(null as varchar(50)) as race_white_2 + , cast(null as varchar(50)) as race_white_3 + , cast(null as varchar(10)) as race_white_gt3_ind + , cast(null as varchar(2000)) as race_white_all + , spr.patient_uid as patient_uid_race_out + into #tmp_s_person_race_out + from #tmp_s_person_root_race spr; + + + update spr + set spr.race_amer_ind_1 = sai.patient_race_amer_ind_1, + spr.race_amer_ind_2 = sai.patient_race_amer_ind_2, + spr.race_amer_ind_3 = sai.patient_race_amer_ind_3, + spr.race_amer_ind_gt3_ind = sai.patient_race_amer_ind_gt3_ind, + spr.race_amer_ind_all = left(rtrim(ltrim(sai.patient_race_amer_ind_all)),2000) + from #tmp_s_person_race_out spr + join #tmp_s_person_amer_indian_race sai on spr.patient_uid_race_out = sai.patient_uid; + + + update spr + set spr.race_nat_hi_1 = sai.patient_race_nat_hi_1, + spr.race_nat_hi_2 = sai.patient_race_nat_hi_2, + spr.race_nat_hi_3 = sai.patient_race_nat_hi_3, + spr.race_nat_hi_gt3_ind = sai.patient_race_nat_hi_gt3_ind, + spr.race_nat_hi_all = left(rtrim(ltrim(sai.patient_race_nat_hi_all)),2000) + from #tmp_s_person_race_out spr + join #tmp_s_person_hawaiian_race sai on spr.patient_uid_race_out = sai.patient_uid; + + + update spr + set spr.race_black_1 = sai.patient_race_black_1, + spr.race_black_2 = sai.patient_race_black_2, + spr.race_black_3 = sai.patient_race_black_3, + spr.race_black_gt3_ind = sai.patient_race_black_gt3_ind, + spr.race_black_all = left(rtrim(ltrim(sai.patient_race_black_all)),2000) + from #tmp_s_person_race_out spr + join #tmp_s_person_black_race sai on spr.patient_uid_race_out = sai.patient_uid; + + + update spr + set spr.race_white_1 = sai.patient_race_white_1, + spr.race_white_2 = sai.patient_race_white_2, + spr.race_white_3 = sai.patient_race_white_3, + spr.race_white_gt3_ind = sai.patient_race_white_gt3_ind, + spr.race_white_all = left(rtrim(ltrim(sai.patient_race_white_all)),2000) + from #tmp_s_person_race_out spr + join #tmp_s_person_white_race sai on spr.patient_uid_race_out = sai.patient_uid; + + + update spr + set spr.race_asian_1 = sai.patient_race_asian_1, + spr.race_asian_2 = sai.patient_race_asian_2, + spr.race_asian_3 = sai.patient_race_asian_3, + spr.race_asian_gt3_ind = sai.patient_race_asian_gt3_ind, + spr.race_asian_all = left(rtrim(ltrim(sai.patient_race_asian_all)),2000) + from #tmp_s_person_race_out spr + join #tmp_s_person_asian_race sai on spr.patient_uid_race_out = sai.patient_uid; + + + select left(race_calculated,50) as race_calculated, + left(race_calc_details,4000) as race_calc_details, + left(race_all,4000) as race_all, + left(race_nat_hi_1,50) as race_nat_hi_1, + left(race_nat_hi_2,50) as race_nat_hi_2, + left(race_nat_hi_3,50) as race_nat_hi_3, + left(race_nat_hi_gt3_ind,50) as race_nat_hi_gt3_ind, + left(race_nat_hi_all,2000) as race_nat_hi_all, + left(race_asian_1,50) as race_asian_1, + left(race_asian_2,50) as race_asian_2, + left(race_asian_3,50) as race_asian_3, + left(race_asian_gt3_ind,50) as race_asian_gt3_ind, + left(race_asian_all,2000) as race_asian_all, + left(race_amer_ind_1,50) as race_amer_ind_1, + left(race_amer_ind_2,50) as race_amer_ind_2, + left(race_amer_ind_3,50) as race_amer_ind_3, + left(race_amer_ind_gt3_ind,50) as race_amer_ind_gt3_ind, + left(race_amer_ind_all,2000) as race_amer_ind_all, + left(race_black_1,50) as race_black_1, + left(race_black_2,50) as race_black_2, + left(race_black_3,50) as race_black_3, + left(race_black_gt3_ind,50) as race_black_gt3_ind, + left(race_black_all,2000) as race_black_all, + left(race_white_1,50) as race_white_1, + left(race_white_2,50) as race_white_2, + left(race_white_3,50) as race_white_3, + left(race_white_gt3_ind,50) as race_white_gt3_ind, + left(race_white_all,2000) as race_white_all, + patient_uid_race_out + from #tmp_s_person_race_out; + + + end try + + BEGIN CATCH + + + IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + INSERT INTO [rdb].[dbo].[job_flow_log] + ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[Msg_Description1] + ) + VALUES ( + @batch_id + ,'Patient PRE-Processing Event:Person Race Module' + ,'NBS_ODSE.sp_patient_race_event' + ,'ERROR: ' + @ErrorMessage + ,0 + ,LEFT('Pre ID-' + @user_id_list,199) + ,0 + ,LEFT(@user_id_list,199) + ); + return @ErrorMessage; + + END CATCH + +end; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/008-sp_patient_event-001.sql b/liquibase-service/src/main/resources/db/odse/008-sp_patient_event-001.sql new file mode 100644 index 00000000..9adc962b --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/008-sp_patient_event-001.sql @@ -0,0 +1,387 @@ +CREATE OR ALTER PROCEDURE dbo.sp_patient_event @user_id_list nvarchar(max) +AS +BEGIN + + BEGIN TRY + + DECLARE @batch_id BIGINT; + SET @batch_id = cast((format(getdate(), 'yyMMddHHmmss')) as bigint); + + INSERT INTO [rdb_modern].[dbo].[job_flow_log] + (batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[Msg_Description1]) + VALUES (@batch_id + ,'Patient PRE-Processing Event' + ,'NBS_ODSE.sp_patient_event' + ,'START' + ,0 + ,LEFT('Pre ID-' + @user_id_list, 199) + ,0 + ,LEFT(@user_id_list, 199)); + + create table #temp_race_table + ( + race_calculated varchar(50) null, + race_calc_details varchar(4000) null, + race_all varchar(4000) null, + race_nat_hi_1 varchar(50) null, + race_nat_hi_2 varchar(50) null, + race_nat_hi_3 varchar(50) null, + race_nat_hi_gt3_ind varchar(50) null, + race_nat_hi_all varchar(2000) null, + race_asian_1 varchar(50) null, + race_asian_2 varchar(50) null, + race_asian_3 varchar(50) null, + race_asian_gt3_ind varchar(50) null, + race_asian_all varchar(2000) null, + race_amer_ind_1 varchar(50) null, + race_amer_ind_2 varchar(50) null, + race_amer_ind_3 varchar(50) null, + race_amer_ind_gt3_ind varchar(50) null, + race_amer_ind_all varchar(2000) null, + race_black_1 varchar(50) null, + race_black_2 varchar(50) null, + race_black_3 varchar(50) null, + race_black_gt3_ind varchar(50) null, + race_black_all varchar(2000) null, + race_white_1 varchar(50) null, + race_white_2 varchar(50) null, + race_white_3 varchar(50) null, + race_white_gt3_ind varchar(50) null, + race_white_all varchar(2000) null, + patient_uid_race_out bigint null + ) + + insert into #temp_race_table + (race_calculated, + race_calc_details, + race_all, + race_nat_hi_1, + race_nat_hi_2, + race_nat_hi_3, + race_nat_hi_gt3_ind, + race_nat_hi_all, + race_asian_1, + race_asian_2, + race_asian_3, + race_asian_gt3_ind, + race_asian_all, + race_amer_ind_1, + race_amer_ind_2, + race_amer_ind_3, + race_amer_ind_gt3_ind, + race_amer_ind_all, + race_black_1, + race_black_2, + race_black_3, + race_black_gt3_ind, + race_black_all, + race_white_1, + race_white_2, + race_white_3, + race_white_gt3_ind, + race_white_all, + patient_uid_race_out) + exec nbs_odse.dbo.sp_patient_race_event @user_id_list, @batch_id; + + + SELECT p.person_uid, + p.person_parent_uid, + RTRIM(LTRIM(Replace(Replace(p.description, CHAR(10), ' '), CHAR(13), ' '))) as description, + p.add_time, + p.age_reported, + p.age_reported_unit_cd, + case + when (age_reported_unit_cd is not null or age_reported_unit_cd != '') then (select * + from dbo.fn_get_value_by_cd_ques(p.age_reported_unit_cd, 'DEM218')) + end as age_reported_unit, + p.first_nm, + p.middle_nm, + p.last_nm, + p.nm_suffix, + p.as_of_date_admin, + p.as_of_date_ethnicity, + p.as_of_date_general, + p.as_of_date_morbidity, + p.as_of_date_sex, + p.birth_time, + p.birth_time_calc, + p.cd, + p.curr_sex_cd, + case + when (p.curr_sex_cd is not null or p.curr_sex_cd != '') + then (select * from dbo.fn_get_value_by_cd_ques(p.curr_sex_cd, 'DEM113')) + end as current_sex, + p.deceased_ind_cd, + case + when (p.deceased_ind_cd is not null or p.deceased_ind_cd != '') then (select * + from dbo.fn_get_value_by_cd_ques(p.deceased_ind_cd, 'DEM127')) + end as deceased_indicator, + p.electronic_ind, + p.ethnic_group_ind, + case + when (p.ethnic_group_ind is not null or p.ethnic_group_ind != '') then (select * + from dbo.fn_get_value_by_cd_ques(p.ethnic_group_ind, 'DEM155')) + end as ethnicity, + p.birth_gender_cd, + case + when (p.birth_gender_cd is not null or p.birth_gender_cd != '') then (select * + from dbo.fn_get_value_by_cd_ques(p.birth_gender_cd, 'DEM114')) + end as birth_sex, + p.deceased_time, + p.last_chg_time, + p.marital_status_cd, + case + when (p.marital_status_cd is not null or p.marital_status_cd != '') then (select * + from dbo.fn_get_value_by_cd_ques(p.marital_status_cd, 'DEM140')) + end as marital_status, + -- p.record_status_cd, + dbo.fn_get_record_status(p.record_status_cd) as record_status_cd, + p.record_status_time, + p.status_cd, + p.status_time, + p.local_id, + p.version_ctrl_nbr, + p.edx_ind, + p.dedup_match_ind, + p.speaks_english_cd, + case + when (p.speaks_english_cd is not null or p.speaks_english_cd != '') then (select * + from dbo.fn_get_value_by_cd_ques(p.speaks_english_cd, 'NBS214')) + end as speaks_english, + p.ethnic_unk_reason_cd, + case + when (p.ethnic_unk_reason_cd is not null or p.ethnic_unk_reason_cd != '') then (select * + from dbo.fn_get_value_by_cd_ques(p.ethnic_unk_reason_cd, 'NBS273')) + end as unk_ethnic_rsn, + p.sex_unk_reason_cd, + case + when (p.sex_unk_reason_cd is not null or p.sex_unk_reason_cd != '') then (select * + from dbo.fn_get_value_by_cd_ques(p.sex_unk_reason_cd, 'NBS272')) + end as curr_sex_unk_rsn, + p.preferred_gender_cd, + case + when (p.preferred_gender_cd is not null or p.preferred_gender_cd != '') then (select * + from dbo.fn_get_value_by_cvg( + p.preferred_gender_cd, + 'NBS_STD_GENDER_PARPT')) + end as preferred_gender, + p.additional_gender_cd, + p.occupation_cd, + case + when (p.occupation_cd is not null or p.occupation_cd != '') then (select * + from dbo.fn_get_value_by_cd_ques(p.occupation_cd, 'DEM139')) + end as primary_occupation, + p.prim_lang_cd, + case + when (p.prim_lang_cd is not null or p.prim_lang_cd != '') then (select * + from dbo.fn_get_value_by_cd_ques(p.prim_lang_cd, 'DEM142')) + end as primary_language, + p.multiple_birth_ind, + p.adults_in_house_nbr, + p.birth_order_nbr, + p.children_in_house_nbr, + p.education_level_cd, + p.add_user_id, + case + when p.add_user_id > 0 then (select * from dbo.fn_get_user_name(p.add_user_id)) + end as add_user_name, + p.last_chg_user_id, + case + when p.last_chg_user_id > 0 then (select * from dbo.fn_get_user_name(p.last_chg_user_id)) + end as last_chg_user_name, + nested.name AS 'patient_name', + nested.address AS 'patient_address', + nested.phone AS 'patient_telephone', + nested.email AS 'patient_email', + nested.race AS 'patient_race', + nested.entity_id AS 'patient_entity' + FROM nbs_odse.dbo.Person p WITH (NOLOCK) + OUTER apply (SELECT * + FROM + -- address + (SELECT (SELECT elp.cd AS [addr_elp_cd], + elp.use_cd AS [addr_elp_use_cd], + pl.postal_locator_uid as [addr_pl_uid], + STRING_ESCAPE(pl.street_addr1, 'json') AS [streetAddr1], + STRING_ESCAPE(pl.street_addr2, 'json') AS [streetAddr2], + STRING_ESCAPE(pl.city_desc_txt, 'json') AS [city], + pl.zip_cd AS [zip], + pl.cnty_cd AS [cntyCd], + pl.state_cd AS [state], + pl.cntry_cd AS [cntryCd], + sc.code_desc_txt AS [state_desc], + scc.code_desc_txt AS [county], + pl.census_tract AS [census_tract], + pl.within_city_limits_ind, + case + when elp.use_cd = 'H' + then coalesce(cc.code_short_desc_txt, pl.cntry_cd) + else null end AS [home_country], + case when elp.use_cd = 'BIR' then cc.code_short_desc_txt else null end AS [birth_country] + FROM nbs_odse.dbo.Entity_locator_participation elp WITH (NOLOCK) + LEFT OUTER JOIN nbs_odse.dbo.Postal_locator pl WITH (NOLOCK) + ON elp.locator_uid = pl.postal_locator_uid + LEFT OUTER JOIN nbs_srte.dbo.State_code sc with (NOLOCK) ON sc.state_cd = pl.state_cd + LEFT OUTER JOIN nbs_srte.dbo.State_county_code_value scc with (NOLOCK) + ON scc.code = pl.cnty_cd + LEFT OUTER JOIN nbs_srte.dbo.Country_code cc with (nolock) ON cc.code = pl.cntry_cd + WHERE elp.entity_uid = p.person_uid + AND elp.class_cd = 'PST' + AND elp.RECORD_STATUS_CD = 'ACTIVE' + FOR json path, INCLUDE_NULL_VALUES) AS address) AS address, + -- person phone + (SELECT (SELECT tl.tele_locator_uid AS [ph_tl_uid], + elp.cd AS [ph_elp_cd], + elp.use_cd AS [ph_elp_use_cd], + REPLACE(tl.phone_nbr_txt, ' ', '') AS [telephoneNbr], + tl.extension_txt AS [extensionTxt] + FROM nbs_odse.dbo.Entity_locator_participation elp WITH (NOLOCK) + JOIN nbs_odse.dbo.Tele_locator tl WITH (NOLOCK) + ON elp.locator_uid = tl.tele_locator_uid + WHERE elp.entity_uid = p.person_uid + AND elp.class_cd = 'TELE' + AND elp.record_status_cd = 'ACTIVE' + AND tl.phone_nbr_txt IS NOT NULL + FOR json path, INCLUDE_NULL_VALUES) AS phone) AS phone, + -- person email + (SELECT (SELECT tl.tele_locator_uid AS [email_tl_uid], + elp.cd AS [email_elp_cd], + elp.use_cd AS [email_elp_use_cd], + STRING_ESCAPE(tl.email_address, 'json') AS [emailAddress] + FROM nbs_odse.dbo.Entity_locator_participation elp WITH (NOLOCK) + JOIN nbs_odse.dbo.Tele_locator tl WITH (NOLOCK) + ON elp.locator_uid = tl.tele_locator_uid + WHERE elp.entity_uid = p.person_uid + AND elp.cd = 'NET' + AND elp.class_cd = 'TELE' + AND elp.record_status_cd = 'ACTIVE' + AND tl.email_address IS NOT NULL + FOR json path, INCLUDE_NULL_VALUES) AS email) AS email, + -- person name + (SELECT (SELECT pn.person_uid AS [pn_person_uid], + STRING_ESCAPE(REPLACE(pn.last_nm, '-', ' '), 'json') AS [lastNm], + soundex(pn.last_nm) AS [lastNmSndx], + STRING_ESCAPE(pn.middle_nm, 'json') AS [middleNm], + STRING_ESCAPE(pn.first_nm, 'json') AS [firstNm], + soundex(pn.first_nm) AS [firstNmSndx], + pn.nm_use_cd AS [nm_use_cd], + pn.nm_suffix AS [nmSuffix], + case + when (pn.nm_suffix is not null or pn.nm_suffix != '') + then (select * from dbo.fn_get_value_by_cd_ques(pn.nm_suffix, 'DEM107')) + end as name_suffix, + pn.nm_degree AS [nmDegree], + pn.person_name_seq AS [pn_person_name_seq], + pn.last_chg_time AS [pn_last_chg_time] + FROM nbs_odse.dbo.person_name pn WITH (NOLOCK) + WHERE person_uid = p.person_uid + FOR json path, INCLUDE_NULL_VALUES) AS name) AS name, + -- person race + (SELECT (SELECT pr.person_uid AS [pr_person_uid], + pr.race_cd AS [raceCd], + pr.race_desc_txt AS [raceDescTxt], + pr.race_category_cd AS [raceCategoryCd], + src.code_desc_txt AS [srte_code_desc_txt], + src.parent_is_cd AS [srte_parent_is_cd], + race_calculated, + race_calc_details, + race_amer_ind_1, + race_amer_ind_2, + race_amer_ind_3, + race_amer_ind_gt3_ind, + race_amer_ind_all, + race_asian_1, + race_asian_2, + race_asian_3, + race_asian_gt3_ind, + race_asian_all, + race_black_1, + race_black_2, + race_black_3, + race_black_gt3_ind, + race_black_all, + race_nat_hi_1, + race_nat_hi_2, + race_nat_hi_3, + race_nat_hi_gt3_ind, + race_nat_hi_all, + race_white_1, + race_white_2, + race_white_3, + race_white_gt3_ind, + race_white_all, + race_all + FROM nbs_odse.dbo.person_race pr WITH (NOLOCK) + left outer join nbs_srte.dbo.race_code src ON pr.race_cd = src.code + left outer join #temp_race_table trt on trt.patient_uid_race_out = p.person_uid + WHERE person_uid = p.person_uid + FOR json path, INCLUDE_NULL_VALUES) AS race) AS race, + -- Entity id + (SELECT (SELECT ei.entity_uid AS [entity_uid], + ei.type_cd AS [typeCd], + ei.record_status_cd AS [recordStatusCd], + STRING_ESCAPE(REPLACE(ei.root_extension_txt, ' ', ''), + 'json') AS [rootExtensionTxt], + ei.entity_id_seq AS [entity_id_seq], + ei.assigning_authority_cd AS [assigning_authority_cd] + FROM nbs_odse.dbo.entity_id ei WITH (NOLOCK) + WHERE ei.entity_uid = p.person_uid + FOR json path, INCLUDE_NULL_VALUES) AS entity_id) AS entity_id) AS nested + WHERE p.person_uid in (SELECT value FROM STRING_SPLIT(@user_id_list, ',')) + AND p.cd = 'PAT'; + + + INSERT INTO [rdb_modern].[dbo].[job_flow_log] + (batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[Msg_Description1]) + VALUES (@batch_id + ,'Patient PRE-Processing Event' + ,'NBS_ODSE.sp_patient_event' + ,'COMPLETE' + ,0 + ,LEFT('Pre ID-' + @user_id_list, 199) + ,0 + ,LEFT(@user_id_list, 199)); + + end try + BEGIN CATCH + + + IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + INSERT INTO [rdb_modern].[dbo].[job_flow_log] + (batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[Msg_Description1]) + VALUES (@batch_id + ,'Patient PRE-Processing Event' + ,'NBS_ODSE.sp_patient_event' + ,'ERROR: ' + @ErrorMessage + ,0 + ,LEFT('Pre ID-' + @user_id_list, 199) + ,0 + ,LEFT(@user_id_list, 199)); + return @ErrorMessage; + + END CATCH + +end; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/009-sp_observation_event-001.sql b/liquibase-service/src/main/resources/db/odse/009-sp_observation_event-001.sql new file mode 100644 index 00000000..3ea993c8 --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/009-sp_observation_event-001.sql @@ -0,0 +1,295 @@ +CREATE OR ALTER PROCEDURE dbo.sp_observation_event @obs_id_list nvarchar(max) + AS +BEGIN + +BEGIN TRY + + DECLARE @batch_id BIGINT; + SET @batch_id = cast((format(getdate(),'yyMMddHHmmss')) as bigint) + INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[Msg_Description1] + ) + VALUES ( + @batch_id + ,'Observation PRE-Processing Event' + ,'NBS_ODSE.sp_observation_event' + ,'START' + ,0 + ,LEFT('Pre ID-' + @obs_id_list,199) + ,0 + ,LEFT(@obs_id_list,199) + ); +SELECT act.act_uid, + act.class_cd, + act.mood_cd, + results.* +-- into dbo.Observation_Dim_Event +FROM (SELECT o.observation_uid, + o.obs_domain_cd_st_1, + o.cd_desc_txt, + o.record_status_cd, + o.program_jurisdiction_oid, + o.prog_area_cd, + o.jurisdiction_cd, + o.pregnant_ind_cd, + o.local_id local_id, + o.activity_to_time, + o.effective_from_time, + o.rpt_to_state_time, + o.electronic_ind, + o.version_ctrl_nbr, + o.add_user_id, + case + when o.add_user_id > 0 then (select * from dbo.fn_get_user_name(o.add_user_id)) + end as add_user_name, + o.last_chg_user_id, + case + when o.last_chg_user_id > 0 then (select * from dbo.fn_get_user_name(o.last_chg_user_id)) + end as last_chg_user_name, + -- (select * from dbo.get_user_name(o.add_user_id, o.last_chg_user_id)) as t , + o.add_time add_time, + o.last_chg_time last_chg_time, + nesteddata.person_participations, + nesteddata.organization_participations, + nesteddata.material_participations, + nesteddata.followup_observations, + -- nesteddata.associated_investigations, + nesteddata.act_ids + -- ,nesteddata.ldf_observation + FROM Observation o WITH (NOLOCK) OUTER apply ( + SELECT + * + FROM + ( + -- follow up observations associated with observation + SELECT + ( + SELECT + o2.cd AS [cd], + o2.cd_desc_txt AS [cd_desc_txt], + o2.obs_domain_cd_st_1 AS [domain_cd_st_1], + o2.status_cd AS [status_cd], + o2.alt_cd AS [alt_cd], + STRING_ESCAPE(o2.alt_cd_desc_txt, 'json') AS [alt_cd_desc_txt], + o2.alt_cd_system_cd AS [alt_cd_system_cd], + STRING_ESCAPE(ovc.display_name, 'json') AS [display_name], + ovc.code AS [ovc_code], + ovc.alt_cd AS [ovc_alt_cd], + ovc.alt_cd_desc_txt AS [ovc_alt_cd_desc_txt], + ovc.alt_cd_system_cd AS [ovc_alt_cd_system_cd] + ,o2.observation_uid as [result_observation_uid] + FROM + observation o2 WITH (NOLOCK) + LEFT JOIN Obs_value_coded ovc WITH (NOLOCK) ON ovc.observation_uid = o2.observation_uid + WHERE + o2.observation_uid in( + SELECT + ar.source_act_uid + FROM + act_relationship ar WITH (NOLOCK) + WHERE + ar.target_act_uid = o.observation_uid + ) FOR json path,INCLUDE_NULL_VALUES + ) AS followup_observations + ) AS followup_observations, + ( + -- persons associated with observation + SELECT + ( + SELECT + p.act_uid AS [act_uid], + p.type_cd AS [type_cd], + p.subject_entity_uid AS [entity_id], + p.subject_class_cd AS [subject_class_cd], + p.record_status_cd AS [participation_record_status], + p.last_chg_time AS [participation_last_change_time], + p.type_desc_txt AS [type_desc_txt], + STRING_ESCAPE(person.first_nm, 'json') AS [first_name], + STRING_ESCAPE(person.last_nm, 'json') AS [last_name], + person.local_id AS [local_id], + person.birth_time AS [birth_time], + person.curr_sex_cd AS [curr_sex_cd], + person.cd AS [person_cd], + person.person_parent_uid AS [person_parent_uid], + person.record_status_cd AS [person_record_status], +person.last_chg_time AS [person_last_chg_time] + FROM + participation p WITH (NOLOCK) + JOIN person WITH (NOLOCK) ON person.person_uid = ( + select + person.person_parent_uid + from + dbo.person WITH (NOLOCK) + where + person.person_uid = p.subject_entity_uid + ) + WHERE + p.act_uid = o.observation_uid FOR json path,INCLUDE_NULL_VALUES + ) AS person_participations + ) AS person_participations, + -- organizations associated with observation + ( + SELECT + ( + SELECT + p.act_uid AS [act_uid], + p.type_cd AS [type_cd], + p.subject_entity_uid AS [entity_id], + p.subject_class_cd AS [subject_class_cd], + p.record_status_cd AS [record_status], + p.type_desc_txt AS [type_desc_txt], + p.last_chg_time AS [last_change_time], + STRING_ESCAPE(org.display_nm, 'json') AS [name], + org.last_chg_time AS [org_last_change_time] + FROM + dbo.participation p WITH (NOLOCK) + JOIN dbo.organization org WITH (NOLOCK) ON org.organization_uid = p.subject_entity_uid + WHERE + p.act_uid = o.observation_uid FOR json path,INCLUDE_NULL_VALUES + ) AS organization_participations + ) AS organization_participations, + ( + -- material participations associated with observation + SELECT + ( + SELECT + p.act_uid AS [act_uid], + p.type_cd AS [type_cd], + p.subject_entity_uid AS [entity_id], + p.subject_class_cd AS [subject_class_cd], + p.record_status_cd AS [record_status], + p.type_desc_txt AS [type_desc_txt], + p.last_chg_time AS [last_change_time], + STRING_ESCAPE(m.cd, 'json') AS [material_cd], + m.cd_desc_txt AS [material_cd_desc_txt] + FROM + participation p WITH (NOLOCK) + JOIN material m WITH (NOLOCK) ON m.material_uid = p.subject_entity_uid + WHERE + p.act_uid = o.observation_uid FOR json path,INCLUDE_NULL_VALUES + ) AS material_participations + ) AS material_participations, + -- act_ids associated with observation + ( + SELECT + ( + SELECT + act_uid AS [id], + act_id_seq AS [act_id_seq], + record_status_cd AS [record_status], + STRING_ESCAPE(root_extension_txt, 'json') AS [root_extension_txt], + type_cd AS [type_cd], + type_desc_txt AS [type_desc_txt], + last_chg_time AS [act_last_change_time] + FROM + act_id WITH (NOLOCK) + WHERE + act_uid = o.observation_uid FOR json path,INCLUDE_NULL_VALUES + ) AS act_ids + ) AS act_ids + /* -- ldf_observation associated with observation + ( + SELECT + ( + select * from nbs_odse..v_ldf_observation ldf + WHERE ldf.observation_uid = o.observation_uid + Order By ldf.observation_uid, ldf.display_order_nbr + FOR json path,INCLUDE_NULL_VALUES + ) AS ldf_observation + ) AS ldf_observation*/ + /* , -- public health cases associated with lab report + ( + SELECT + ( + SELECT + phc.public_health_case_uid AS [public_health_case_uid], + phc.last_chg_time AS [last_change_time], + phc.cd_desc_txt AS [cd_desc_txt], + phc.local_id AS [local_id], + ar.last_chg_time AS [act_relationship_last_change_time] + FROM + Public_health_case phc WITH (NOLOCK) + JOIN Act_relationship ar WITH (NOLOCK) ON ar.target_act_uid = phc.public_health_case_uid + WHERE + phc.public_health_case_uid in ( + SELECT + ar.target_act_uid + FROM + Act_relationship ar WITH (NOLOCK) + WHERE + ar.source_act_uid = o.observation_uid + AND source_class_cd = 'OBS' + AND target_class_cd = 'CASE' + ) FOR JSON path,INCLUDE_NULL_VALUES + ) AS associated_investigations + ) as associated_investigations*/ + ) AS nesteddata + WHERE + o.observation_uid in (SELECT value FROM STRING_SPLIT(@obs_id_list + , ','))) as results + JOIN act WITH (NOLOCK) +ON results.observation_uid = act.act_uid +; + +-- select * from dbo.Observation_Dim_Event; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] +( batch_id + , [Dataflow_Name] + , [package_Name] + , [Status_Type] + , [step_number] + , [step_name] + , [row_count] + , [Msg_Description1]) +VALUES ( + @batch_id + , 'Observation PRE-Processing Event' + , 'NBS_ODSE.sp_observation_event' + , 'COMPLETE' + , 0 + , LEFT ('Pre ID-' + @obs_id_list, 199) + , 0 + , LEFT (@obs_id_list, 199) + ); + +END TRY + +BEGIN CATCH + +IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE +@ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); +INSERT INTO [rdb_modern].[dbo].[job_flow_log] +( batch_id + , [Dataflow_Name] + , [package_Name] + , [Status_Type] + , [step_number] + , [step_name] + , [row_count] + , [Msg_Description1]) +VALUES ( + @batch_id + , 'Observation PRE-Processing Event' + , 'NBS_ODSE.sp_observation_event' + , 'ERROR: ' + @ErrorMessage + , 0 + , LEFT ('Pre ID-' + @obs_id_list, 199) + , 0 + , LEFT (@obs_id_list, 199) + ); + +return @ErrorMessage; + +END CATCH + +END; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/010-sp_investigation_event-001.sql b/liquibase-service/src/main/resources/db/odse/010-sp_investigation_event-001.sql new file mode 100644 index 00000000..84fb04ba --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/010-sp_investigation_event-001.sql @@ -0,0 +1,2650 @@ +CREATE OR ALTER PROCEDURE dbo.sp_public_health_case_fact_datamart_event @phc_id_list nvarchar(max) +AS +BEGIN + DECLARE @RowCount_no INT; + DECLARE @Proc_Step_no FLOAT = 0; + DECLARE @Proc_Step_Name VARCHAR(200) = ''; + DECLARE @batch_id BIGINT; + DECLARE @batch_start_time DATETIME2(7) = NULL; + DECLARE @batch_end_time DATETIME2(7) = NULL; + DECLARE @type_code VARCHAR(200) = 'PHCMartETL'; + DECLARE @type_description VARCHAR(200) = 'PHCMartETL Process'; + DECLARE @return_value INT = 0; + +BEGIN TRY + + + --EXEC @return_value = [rdb_modern].[dbo].[sp_nbs_batch_start] @type_code ,@type_description; + + -- SELECT 'Return Value TEST ' = @return_value; +SELECT @batch_id = cast((format(getdate(),'yyMMddHHmmss')) as bigint); + +-- SET @batch_end_time = getdate(); + + +PRINT CAST(@batch_id AS VARCHAR(max)); + + +BEGIN TRANSACTION; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'Start Process' + ,0 + ,@phc_id_list + ,0 + ); + + +SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_INV_FORM_CODE_DATA' ; + + IF OBJECT_ID('#TEMP_INV_FORM_CODE_DATA') IS NOT NULL +DROP TABLE #TEMP_INV_FORM_CODE_DATA; + +-- The below SQL is now a view - nbs_odse.dbo.v_inv_form_code_data +/*SELECT DISTINCT DATA_LOCATION + ,CODESET.CODE_SET_GROUP_ID + ,CODESET.CODE_SET_NM + ,NBS_UI_METADATA.INVESTIGATION_FORM_CD + ,CODE_VALUE_GENERAL.CODE + ,CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT +INTO #TEMP_INV_FORM_CODE_DATA +FROM NBS_ODSE.DBO.NBS_UI_METADATA WITH (NOLOCK) +INNER JOIN NBS_SRTE.DBO.CODESET WITH (NOLOCK) ON NBS_UI_METADATA.CODE_SET_GROUP_ID = CODESET.CODE_SET_GROUP_ID +INNER JOIN NBS_SRTE.DBO.CONDITION_CODE WITH (NOLOCK) ON CONDITION_CODE.INVESTIGATION_FORM_CD = NBS_UI_METADATA.INVESTIGATION_FORM_CD +INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON CODE_VALUE_GENERAL.CODE_SET_NM = CODESET.CODE_SET_NM +WHERE question_identifier in ( + 'DEM218', 'DEM114', 'INV163', 'INV161', 'DEM126', 'DEM113', 'DEM127', 'INV159', 'INV152', 'DEM155', 'NOT112', 'INV109', 'INV107', 'DEM140', 'DEM116_B', 'DEM139', 'INV145', 'INV150', 'INV151', 'NPP063', 'INV144', 'DEM142', 'INV108', 'DEM152', 'DEM238', 'INV187', 'INV112', 'INV174', 'INV107', 'INV2002') + AND CODESET.CODE_SET_GROUP_ID IS NOT NULL +ORDER BY NBS_UI_METADATA.DATA_LOCATION */ + +-- use the view and order by data_location +Select DATA_LOCATION + ,CODE_SET_GROUP_ID + ,CODE_SET_NM + ,INVESTIGATION_FORM_CD + ,CODE + ,CODE_SHORT_DESC_TXT +INTO #TEMP_INV_FORM_CODE_DATA +from nbs_odse.dbo.v_inv_form_code_data +ORDER BY DATA_LOCATION; + + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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 DBO.TEMP_UPDATE_NEW_PATIENT'; + + + IF OBJECT_ID('#TEMP_UPDATE_NEW_PATIENT') IS NOT NULL +DROP TABLE #TEMP_UPDATE_NEW_PATIENT; + +SELECT Public_health_case.PUBLIC_HEALTH_CASE_UID + ,PER.PERSON_UID + ,PER.PERSON_PARENT_UID + ,PER.LOCAL_ID AS PERSON_LOCAL_ID + ,PER.AGE_CATEGORY_CD + ,PER.AGE_REPORTED + ,PER.AGE_REPORTED_TIME + ,PER.AGE_REPORTED_UNIT_CD + ,PER.BIRTH_TIME + ,PER.BIRTH_TIME_CALC + ,PER.CD AS PERSON_CD + ,PER.CD_DESC_TXT AS PERSON_CODE_DESC + ,PER.CURR_SEX_CD + ,PER.DECEASED_IND_CD + ,PER.DECEASED_TIME + ,PER.ETHNIC_GROUP_IND + ,PER.MARITAL_STATUS_CD + ,MPR.MULTIPLE_BIRTH_IND + ,MPR.OCCUPATION_CD + ,MPR.PRIM_LANG_CD + ,MPR.ADULTS_IN_HOUSE_NBR + ,MPR.BIRTH_GENDER_CD + ,MPR.BIRTH_ORDER_NBR + ,MPR.CHILDREN_IN_HOUSE_NBR + ,MPR.EDUCATION_LEVEL_CD + ,MPR.LAST_CHG_TIME AS MPR_LAST_CHG_TIME + ,NOTIFICATION.LAST_CHG_TIME AS NOTIF_LAST_CHG_TIME +INTO #TEMP_UPDATE_NEW_PATIENT +FROM NBS_ODSE.DBO.PERSON PER WITH (NOLOCK) + INNER JOIN NBS_ODSE.DBO.PARTICIPATION PAR WITH (NOLOCK) ON PER.PERSON_UID = PAR.SUBJECT_ENTITY_UID + INNER JOIN NBS_ODSE.DBO.Public_health_case Public_health_case WITH (NOLOCK) ON PAR.act_uid = Public_health_case.public_health_case_uid + INNER JOIN NBS_ODSE.DBO.PERSON MPR WITH (NOLOCK) ON PER.PERSON_PARENT_UID = MPR.PERSON_UID + LEFT JOIN NBS_ODSE.DBO.ACT_RELATIONSHIP WITH (NOLOCK) ON ACT_RELATIONSHIP.TARGET_ACT_UID=PUBLIC_HEALTH_CASE.PUBLIC_HEALTH_CASE_UID + LEFT JOIN NBS_ODSE.DBO.NOTIFICATION WITH (NOLOCK) ON NOTIFICATION.NOTIFICATION_UID=ACT_RELATIONSHIP.SOURCE_ACT_UID + AND NOTIFICATION.CD='NOTF' +WHERE PAR.TYPE_CD = 'SUBJOFPHC' + and Public_health_case.public_health_case_uid in (select value from string_split(@phc_id_list, ',')) + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); +COMMIT TRANSACTION; +-------------------PHCSUBJECT +BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_PHCPATIENTINFO'; + + IF OBJECT_ID('#TEMP_PHCPATIENTINFO') IS NOT NULL +DROP TABLE #TEMP_PHCPATIENTINFO; + +SELECT + PER.* + ,(COALESCE(LTRIM(RTRIM(PNM.LAST_NM)), '') + ', ' + COALESCE(LTRIM(RTRIM(PNM.FIRST_NM)), '')) AS PATIENTNAME + ,case when LTRIM(RTRIM(PST.STATE_CD)) = '' then null else LTRIM(RTRIM(PST.STATE_CD)) end STATE_CD + ,SRT1.code_short_desc_txt AS STATE + ,case when LTRIM(RTRIM(PST.CNTY_CD)) = '' then null else LTRIM(RTRIM(PST.CNTY_CD)) end CNTY_CD + ,SRT3.code_desc_txt AS COUNTY + ,PAR.AWARENESS_CD + ,PAR.AWARENESS_DESC_TXT + ,PAR.TYPE_CD AS PAR_TYPE_CD + ,CVG.CODE_SHORT_DESC_TXT AS EDUCATION_LEVEL_DESC_TXT + ,RTRIM(LTRIM(A.CODE_SHORT_DESC_TXT)) AS ETHNIC_GROUP_IND_DESC + ,CVG2.CODE_SHORT_DESC_TXT AS MARITAL_STATUS_DESC_TXT + ,LNG.CODE_SHORT_DESC_TXT AS PRIM_LANG_DESC_TXT + ,ELP.FROM_TIME AS ELP_FROM_TIME + ,ELP.TO_TIME AS ELP_TO_TIME + ,ELP.CLASS_CD AS ELP_CLASS_CD + ,ELP.USE_CD AS ELP_USE_CD + ,ELP.AS_OF_DATE AS SUB_ADDR_AS_OF_DATE + ,PST.POSTAL_LOCATOR_UID + ,PST.CENSUS_BLOCK_CD + ,PST.CENSUS_MINOR_CIVIL_DIVISION_CD + ,PST.CENSUS_TRACK_CD + ,PST.CITY_CD + ,case when LTRIM(RTRIM(PST.CITY_DESC_TXT)) = '' then null else LTRIM(RTRIM(PST.CITY_DESC_TXT)) end CITY_DESC_TXT + ,case when LTRIM(RTRIM(PST.CNTRY_CD)) = '' then null else LTRIM(RTRIM(PST.CNTRY_CD)) end CNTRY_CD + ,CNTRY_DESC.CODE_SHORT_DESC_TXT AS CNTRY_DESC_TXT + ,PST.REGION_DISTRICT_CD + ,PST.MSA_CONGRESS_DISTRICT_CD + ,case when LTRIM(RTRIM(PST.ZIP_CD)) = '' then null else LTRIM(RTRIM(PST.ZIP_CD)) end ZIP_CD + ,PST.RECORD_STATUS_TIME AS PST_RECORD_STATUS_TIME + ,PST.RECORD_STATUS_CD AS PST_RECORD_STATUS_CD + ,case when LTRIM(RTRIM(PST.STREET_ADDR1)) = '' then null else LTRIM(RTRIM(PST.STREET_ADDR1)) end STREET_ADDR1 + ,case when LTRIM(RTRIM(PST.STREET_ADDR2)) = '' then null else LTRIM(RTRIM(PST.STREET_ADDR2)) end STREET_ADDR2 + ,PAR.ACT_UID + ,CONDITION_CODE.INVESTIGATION_FORM_CD + ,AGE_UNIT.CODE_SHORT_DESC_TXT AS AGE_REPORTED_UNIT_DESC_TXT + ,BIRTH_GENDER.CODE_SHORT_DESC_TXT AS BIRTH_GENDER_DESC_TXT + ,CURR_SEX.CODE_SHORT_DESC_TXT AS CURR_SEX_DESC_TXT + ,OCCUPATION.CODE_SHORT_DESC_TXT AS OCCUPATION_DESC_TXT + ,RN = ROW_NUMBER() OVER ( + PARTITION BY PER.PERSON_UID ORDER BY PER.PERSON_UID + ) + , CASE WHEN (CONDITION_CODE.investigation_form_cd NOT LIKE 'PG_%' or CONDITION_CODE.investigation_form_cd is null) then 1 else 0 end as FLAG1 ---added this as part of optimization (very imp) +INTO #TEMP_PHCPATIENTINFO +FROM #TEMP_UPDATE_NEW_PATIENT PER WITH (NOLOCK) + INNER JOIN NBS_ODSE.DBO.PARTICIPATION PAR WITH (NOLOCK) ON PER.PERSON_UID = PAR.SUBJECT_ENTITY_UID + INNER JOIN NBS_ODSE.DBO.Public_health_case Public_health_case WITH (NOLOCK) ON PAR.act_uid = Public_health_case.public_health_case_uid + INNER JOIN NBS_srte.DBO.Condition_code Condition_code WITH (NOLOCK) ON Condition_code.condition_cd = Public_health_case.cd + LEFT OUTER JOIN NBS_ODSE.DBO.ENTITY_LOCATOR_PARTICIPATION ELP WITH (NOLOCK) ON ELP.ENTITY_UID = PER.PERSON_UID + AND ELP.USE_CD = 'H' + AND ELP.CLASS_CD = 'PST' + AND ELP.RECORD_STATUS_CD = 'ACTIVE' + LEFT OUTER JOIN NBS_ODSE.DBO.POSTAL_LOCATOR PST WITH (NOLOCK) ON ELP.LOCATOR_UID = PST.POSTAL_LOCATOR_UID + AND PST.RECORD_STATUS_CD = 'ACTIVE' + LEFT OUTER JOIN NBS_SRTE.DBO.Code_value_general CNTRY_DESC ON CNTRY_DESC.code=PST.cntry_cd + AND CNTRY_DESC.CODE=PST.CNTRY_CD + AND CNTRY_DESC.CODE_SET_NM='PSL_CNTRY' + LEFT OUTER JOIN NBS_SRTE.DBO.V_state_code SRT1 WITH (NOLOCK) ON PST.STATE_CD = SRT1.CODE + LEFT OUTER JOIN NBS_SRTE.DBO.state_county_code_value SRT3 WITH (NOLOCK) ON PST.CNTY_CD = SRT3.CODE + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA A ON A.CODE=PER.ETHNIC_GROUP_IND + AND A.investigation_form_cd = Condition_code.investigation_form_cd + AND A.DATA_LOCATION LIKE '%.ETHNIC_GROUP_IND' + LEFT OUTER JOIN NBS_ODSE.DBO.PERSON_NAME PNM WITH (NOLOCK) ON PER.PERSON_UID = PNM.PERSON_UID + AND PNM.NM_USE_CD = 'L' + AND PNM.RECORD_STATUS_CD = 'ACTIVE' + + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA AGE_UNIT WITH (NOLOCK) ON PER.age_reported_unit_cd = AGE_UNIT.CODE + AND AGE_UNIT.investigation_form_cd = Condition_code.investigation_form_cd + AND AGE_UNIT.DATA_LOCATION LIKE 'Person.age_reported_unit_cd' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA BIRTH_GENDER WITH (NOLOCK) ON PER.birth_gender_cd = BIRTH_GENDER.CODE + AND BIRTH_GENDER.investigation_form_cd = Condition_code.investigation_form_cd + AND BIRTH_GENDER.DATA_LOCATION LIKE 'Person.birth_gender_cd' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA CURR_SEX WITH (NOLOCK) ON PER.curr_sex_cd = CURR_SEX.CODE + AND CURR_SEX.investigation_form_cd = Condition_code.investigation_form_cd + AND CURR_SEX.DATA_LOCATION LIKE 'Person.curr_sex_cd' + LEFT OUTER JOIN NBS_SRTE.DBO.NAICS_INDUSTRY_CODE OCCUPATION WITH (NOLOCK) ON PER.occupation_cd = OCCUPATION.CODE + LEFT OUTER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL CVG WITH (NOLOCK) ON PER.education_level_cd = CVG.CODE + AND CVG.CODE_SET_NM = 'P_EDUC_LVL' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA CVG2 WITH (NOLOCK) ON PER.MARITAL_STATUS_CD = CVG2.CODE + AND CVG2.investigation_form_cd = Condition_code.investigation_form_cd + AND CVG2.DATA_LOCATION = 'PERSON.MARITAL_STATUS_CD' + LEFT OUTER JOIN NBS_SRTE.DBO.LANGUAGE_CODE LNG WITH (NOLOCK) ON PER.PRIM_LANG_CD = LNG.CODE +where Public_health_case.public_health_case_uid in (select value from string_split(@phc_id_list, ',')) +ORDER BY PAR.ACT_UID + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +DELETE +FROM #TEMP_PHCPATIENTINFO +WHERE RN > 1 + + + PRINT '1. starttime' + LEFT(CONVERT(VARCHAR, @batch_start_time, 120), 10) + PRINT '1. endtime' + LEFT(CONVERT(VARCHAR, @batch_end_time, 120), 10) + + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + +COMMIT TRANSACTION; + +BEGIN TRANSACTION; + +UPDATE #TEMP_PHCPATIENTINFO +SET ETHNIC_GROUP_IND_DESC = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCPATIENTINFO + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON #TEMP_PHCPATIENTINFO.ETHNIC_GROUP_IND = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'P_ETHN_GRP' + AND #TEMP_PHCPATIENTINFO.FLAG1 =1; ---added this optimization + + +UPDATE #TEMP_PHCPATIENTINFO +SET MARITAL_STATUS_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCPATIENTINFO + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON #TEMP_PHCPATIENTINFO.MARITAL_STATUS_CD = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'P_MARITAL' + AND #TEMP_PHCPATIENTINFO.FLAG1 =1; ---added this optimization + + +UPDATE #TEMP_PHCPATIENTINFO +SET BIRTH_GENDER_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCPATIENTINFO + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON #TEMP_PHCPATIENTINFO.birth_gender_cd = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'SEX' + AND BIRTH_GENDER_DESC_TXT IS NULL + AND birth_gender_cd IS NOT NULL + + +UPDATE #TEMP_PHCPATIENTINFO +SET AGE_REPORTED_UNIT_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCPATIENTINFO + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON #TEMP_PHCPATIENTINFO.age_reported_unit_cd = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'AGE_UNIT' + AND #TEMP_PHCPATIENTINFO.FLAG1 =1; ---added this optimization + + +UPDATE #TEMP_PHCPATIENTINFO +SET CURR_SEX_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCPATIENTINFO + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON #TEMP_PHCPATIENTINFO.curr_sex_cd = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'SEX' + AND #TEMP_PHCPATIENTINFO.FLAG1 =1; ---added this optimization + + +COMMIT TRANSACTION; +BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_PHCINFO_INIT'; + IF OBJECT_ID('#TEMP_PHCINFO_INIT') IS NOT NULL +DROP TABLE #TEMP_PHCINFO_INIT; + +SELECT OBSERVATION2.CD, t.PUBLIC_HEALTH_CASE_UID,OBS_VALUE_DATE.FROM_TIME +INTO #TEMP_PHCINFO_INIT +FROM #TEMP_PHCPATIENTINFO t WITH (NOLOCK) + INNER JOIN NBS_ODSE.DBO.ACT_RELATIONSHIP WITH (NOLOCK) ON ACT_RELATIONSHIP.TARGET_ACT_UID=t.PUBLIC_HEALTH_CASE_UID + INNER JOIN NBS_ODSE.DBO.ACT_RELATIONSHIP ACT_RELATIONSHIP2 WITH (NOLOCK) ON ACT_RELATIONSHIP2.TARGET_ACT_UID=ACT_RELATIONSHIP.SOURCE_ACT_UID + LEFT JOIN NBS_ODSE.DBO.OBSERVATION OBSERVATION2 WITH (NOLOCK) ON OBSERVATION2.OBSERVATION_UID =ACT_RELATIONSHIP2.SOURCE_ACT_UID + LEFT JOIN NBS_ODSE.DBO.OBS_VALUE_DATE WITH (NOLOCK) ON OBSERVATION2.OBSERVATION_UID =OBS_VALUE_DATE.OBSERVATION_UID +WHERE OBSERVATION2.CD IN ('INV132', 'INV133') AND ACT_RELATIONSHIP.TYPE_CD ='PHCInvForm'; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_PHCINFO_LEGACY_HOSP'; + IF OBJECT_ID('#TEMP_PHCINFO_LEGACY_HOSP') IS NOT NULL +DROP TABLE #TEMP_PHCINFO_LEGACY_HOSP; + +SELECT OBSERVATION2.CD, t.PUBLIC_HEALTH_CASE_UID,OBS_VALUE_CODED.CODE +INTO #TEMP_PHCINFO_LEGACY_HOSP +FROM #TEMP_PHCPATIENTINFO t WITH (NOLOCK) + INNER JOIN NBS_ODSE.DBO.ACT_RELATIONSHIP WITH (NOLOCK) ON ACT_RELATIONSHIP.TARGET_ACT_UID=t.PUBLIC_HEALTH_CASE_UID + INNER JOIN NBS_ODSE.DBO.ACT_RELATIONSHIP ACT_RELATIONSHIP2 WITH (NOLOCK) ON ACT_RELATIONSHIP2.TARGET_ACT_UID=ACT_RELATIONSHIP.SOURCE_ACT_UID + INNER JOIN NBS_ODSE.DBO.OBSERVATION AS OBSERVATION2 WITH (NOLOCK) ON ACT_RELATIONSHIP2.SOURCE_ACT_UID =OBSERVATION2.OBSERVATION_UID + INNER JOIN NBS_ODSE.DBO.OBS_VALUE_CODED WITH (NOLOCK) ON ACT_RELATIONSHIP2.SOURCE_ACT_UID =OBS_VALUE_CODED.OBSERVATION_UID +WHERE OBSERVATION2.CD IN ('INV128') AND ACT_RELATIONSHIP.TYPE_CD ='PHCInvForm'; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_PHCINFO1'; + + IF OBJECT_ID('#TEMP_PHCINFO1') IS NOT NULL +DROP TABLE #TEMP_PHCINFO1; + +SELECT PHC.PUBLIC_HEALTH_CASE_UID + ,PHC.CASE_TYPE_CD + ,PHC.DIAGNOSIS_TIME AS DIAGNOSIS_DATE + ,PHC.CD AS PHC_CODE + ,PHC.CD_DESC_TXT AS PHC_CODE_DESC + ,ISNULL(PHC.CASE_CLASS_CD, '') CASE_CLASS_CD + ,PHC.CD_SYSTEM_CD + ,PHC.CD_SYSTEM_DESC_TXT + ,PHC.CONFIDENTIALITY_CD + ,PHC.CONFIDENTIALITY_DESC_TXT + ,case when ltrim(rtrim(PHC.DETECTION_METHOD_CD)) = '' then null else ltrim(rtrim(PHC.DETECTION_METHOD_CD)) end detection_method_cd + , + /*PHC.DETECTION_METHOD_DESC_TXT,*/ + case when ltrim(rtrim(PHC.DISEASE_IMPORTED_CD)) = '' then null else ltrim(rtrim(PHC.DISEASE_IMPORTED_CD)) end DISEASE_IMPORTED_CD + , + /*PHC.DISEASE_IMPORTED_DESC_TXT,*/ + PHC.GROUP_CASE_CNT + ,PHC.INVESTIGATION_STATUS_CD + ,PHC.JURISDICTION_CD + ,JURISDICTION_CODE.CODE_DESC_TXT AS JURISDICTION + ,case when SUBSTRING(ltrim(rtrim(PHC.MMWR_WEEK)), 1, 4) = '' then null else SUBSTRING(ltrim(rtrim(PHC.MMWR_WEEK)), 1, 4) end MMWR_WEEK + ,case when SUBSTRING(ltrim(rtrim(PHC.MMWR_YEAR)), 1, 4) = '' then null else SUBSTRING(ltrim(rtrim(PHC.MMWR_YEAR)), 1, 4) end MMWR_YEAR + ,case when ltrim(rtrim(PHC.OUTBREAK_IND)) = '' then null else ltrim(rtrim(PHC.OUTBREAK_IND)) end OUTBREAK_IND + ,case when ltrim(rtrim(PHC.OUTBREAK_FROM_TIME)) = '' then null else ltrim(rtrim(PHC.OUTBREAK_FROM_TIME)) end OUTBREAK_FROM_TIME + ,case when ltrim(rtrim(PHC.OUTBREAK_TO_TIME)) = '' then null else ltrim(rtrim(PHC.OUTBREAK_TO_TIME)) end OUTBREAK_TO_TIME + ,case when ltrim(rtrim(PHC.OUTBREAK_NAME)) = '' then null else ltrim(rtrim(PHC.OUTBREAK_NAME)) end OUTBREAK_NAME + ,case when ltrim(rtrim(PHC.OUTCOME_CD)) = '' then null else ltrim(rtrim(PHC.OUTCOME_CD)) end OUTCOME_CD + ,case when SUBSTRING(ltrim(rtrim(PHC.PAT_AGE_AT_ONSET)), 1, 4) = '' then null else SUBSTRING(ltrim(rtrim(PHC.PAT_AGE_AT_ONSET)), 1, 4) end PAT_AGE_AT_ONSET + ,case when ltrim(rtrim(PHC.PAT_AGE_AT_ONSET_UNIT_CD)) = '' then null else ltrim(rtrim(PHC.PAT_AGE_AT_ONSET_UNIT_CD)) end PAT_AGE_AT_ONSET_UNIT_CD + ,PHC.PROG_AREA_CD + ,PHC.RECORD_STATUS_CD + ,PHC.RPT_CNTY_CD + ,PHC.RPT_FORM_CMPLT_TIME + ,case when ltrim(rtrim(PHC.RPT_SOURCE_CD)) = '' then null else ltrim(rtrim(PHC.RPT_SOURCE_CD)) end RPT_SOURCE_CD + , + /*PHC.RPT_SOURCE_CD_DESC_TXT*/ + PHC.RPT_TO_COUNTY_TIME + ,PHC.RPT_TO_STATE_TIME + ,PHC.STATUS_CD + ,PHC.EFFECTIVE_FROM_TIME AS ONSETDATE + ,PHC.ACTIVITY_FROM_TIME AS INVESTIGATIONSTARTDATE + ,PHC.ADD_TIME AS PHC_ADD_TIME + ,PHC.PROGRAM_JURISDICTION_OID + ,PHC.SHARED_IND + ,PHC.IMPORTED_COUNTRY_CD AS IMPORTED_COUNTRY_CODE + ,PHC.IMPORTED_STATE_CD AS IMPORTED_STATE_CODE + ,PHC.IMPORTED_COUNTY_CD AS IMPORTED_COUNTY_CODE + ,PHC.INVESTIGATOR_ASSIGNED_TIME AS INVESTIGATOR_ASSIGN_DATE + ,PHC.HOSPITALIZED_ADMIN_TIME AS HSPTL_ADMISSION_DT + ,PHC.HOSPITALIZED_DISCHARGE_TIME AS HSPTL_DISCHARGE_DT + ,PHC.HOSPITALIZED_DURATION_AMT + ,PHC.IMPORTED_CITY_DESC_TXT + ,PHC.DECEASED_TIME AS INVESTIGATION_DEATH_DATE + ,PHC.LOCAL_ID AS LOCAL_ID + ,PHC.LAST_CHG_TIME AS LASTUPDATE + ,case when ltrim(rtrim(PHC.TXT)) = '' then null else ltrim(rtrim(PHC.TXT)) end PHCTXT + ,FOOD_HANDLER_IND_CD + ,case when ltrim(rtrim(hospitalized_ind_cd)) = '' then null else ltrim(rtrim(hospitalized_ind_cd)) end HOSPITALIZED_IND + ,DAY_CARE_IND_CD + ,PREGNANT_IND_CD + ,CONDITION_CODE.INVESTIGATION_FORM_CD + ,TEMP_PHCINFO_INITA.FROM_TIME AS LEGACY_HSPTL_ADMISSION_DT + ,TEMP_PHCINFO_INITb.FROM_TIME AS LEGACY_HSPTL_DISCHARGE_DT + ,NOTIF_LAST_CHG_TIME + ,t.CODE AS LEGACY_HOSP_IND +INTO #TEMP_PHCINFO1 +FROM NBS_ODSE.DBO.PUBLIC_HEALTH_CASE PHC WITH (NOLOCK) + INNER JOIN #TEMP_PHCPATIENTINFO t1 ON PHC.PUBLIC_HEALTH_CASE_UID = t1.ACT_UID + LEFT OUTER JOIN NBS_SRTE.DBO.JURISDICTION_CODE WITH (NOLOCK) ON JURISDICTION_CODE.CODE = PHC.jurisdiction_cd + INNER JOIN NBS_SRTE.DBO.Condition_code ON PHC.CD=Condition_code.condition_cd + LEFT OUTER JOIN #TEMP_PHCINFO_INIT TEMP_PHCINFO_INITA ON PHC.PUBLIC_HEALTH_CASE_UID = TEMP_PHCINFO_INITA.PUBLIC_HEALTH_CASE_UID + AND TEMP_PHCINFO_INITA.CD='INV132' + LEFT OUTER JOIN #TEMP_PHCINFO_INIT TEMP_PHCINFO_INITB ON PHC.PUBLIC_HEALTH_CASE_UID = TEMP_PHCINFO_INITB.PUBLIC_HEALTH_CASE_UID + AND TEMP_PHCINFO_INITB.CD='INV133' + LEFT OUTER JOIN #TEMP_PHCINFO_LEGACY_HOSP t ON PHC.PUBLIC_HEALTH_CASE_UID = t.PUBLIC_HEALTH_CASE_UID + AND t.CD='INV128' +where PHC.public_health_case_uid in (select value from string_split(@phc_id_list, ',')) + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +PRINT @ROWCOUNT_NO; + +UPDATE #TEMP_PHCINFO1 +SET HSPTL_ADMISSION_DT = LEGACY_HSPTL_ADMISSION_DT +WHERE LEGACY_HSPTL_ADMISSION_DT IS NOT NULL; + +UPDATE #TEMP_PHCINFO1 +SET HOSPITALIZED_IND = LEGACY_HOSP_IND +WHERE LEGACY_HOSP_IND IS NOT NULL; + +UPDATE #TEMP_PHCINFO1 +SET HSPTL_DISCHARGE_DT = LEGACY_HSPTL_DISCHARGE_DT +WHERE LEGACY_HSPTL_DISCHARGE_DT IS NOT NULL; + + +ALTER TABLE #TEMP_PHCINFO1 DROP column LEGACY_HSPTL_DISCHARGE_DT, LEGACY_HSPTL_ADMISSION_DT; +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + +COMMIT TRANSACTION; +BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Remove Updated records'; + +DELETE +FROM NBS_ODSE.DBO.SubjectRaceInfo +WHERE public_health_case_uid IN ( + SELECT public_health_case_uid + FROM #TEMP_PHCINFO1 +); + +DELETE +FROM NBS_ODSE.DBO.PublicHealthCaseFact +WHERE public_health_case_uid IN ( + SELECT public_health_case_uid + FROM #TEMP_PHCINFO1 +); + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_PHCINFO2'; + + IF OBJECT_ID('#TEMP_PHCINFO2') IS NOT NULL +DROP TABLE #TEMP_PHCINFO2; + +SELECT A.* + ,NBS_CASE_ANSWER.ANSWER_TXT AS THERAPY_DATE +INTO #TEMP_PHCINFO2 +FROM #TEMP_PHCINFO1 A WITH (NOLOCK) + LEFT OUTER JOIN NBS_ODSE.DBO.NBS_CASE_ANSWER WITH (NOLOCK) ON A.PUBLIC_HEALTH_CASE_UID = NBS_CASE_ANSWER.ACT_UID + AND NBS_CASE_ANSWER.NBS_QUESTION_UID IN ( + SELECT NBS_QUESTION_UID + FROM NBS_ODSE.DBO.NBS_QUESTION WITH (NOLOCK) + WHERE QUESTION_IDENTIFIER = 'TUB170' + ); + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_PHCINFO3'; + + IF OBJECT_ID('#TEMP_PHCINFO3') IS NOT NULL +DROP TABLE #TEMP_PHCINFO3; + +SELECT A.* + ,case when ltrim(rtrim(AID.ROOT_EXTENSION_TXT)) = '' then null else ltrim(rtrim(AID.ROOT_EXTENSION_TXT)) end AS STATE_CASE_ID +INTO #TEMP_PHCINFO3 +FROM #TEMP_PHCINFO2 A WITH (NOLOCK) + LEFT OUTER JOIN NBS_ODSE.DBO.ACT_ID AID WITH (NOLOCK) ON A.PUBLIC_HEALTH_CASE_UID = AID.ACT_UID + AND ACT_ID_SEQ = 1 +WHERE A.RECORD_STATUS_CD <> 'LOG_DEL' +ORDER BY A.PUBLIC_HEALTH_CASE_UID; + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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 TEMP_PHCINFO3'; + + /*UPDATE #TEMP_PHCINFO3 + SET STATE_CASE_ID = NULL + WHERE STATE_CASE_ID = LTRIM(RTRIM(''));*/ + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_PHCINFO'; + + IF OBJECT_ID('#TEMP_PHCINFO') IS NOT NULL +DROP TABLE #TEMP_PHCINFO; + +SELECT PUBLIC_HEALTH_CASE_UID + ,CASE_TYPE_CD + ,DIAGNOSIS_DATE + ,PHC_CODE + ,case when PHC_CODE_DESC = null then A.condition_short_nm else PHC_CODE_DESC end as PHC_CODE_DESC + ,CASE_CLASS_CD + ,CD_SYSTEM_CD + ,THERAPY_DATE + ,STATE_CASE_ID + ,CD_SYSTEM_DESC_TXT + ,CONFIDENTIALITY_CD + ,CONFIDENTIALITY_DESC_TXT + ,DETECTION_METHOD_CD + ,DISEASE_IMPORTED_CD + ,GROUP_CASE_CNT + ,INVESTIGATION_STATUS_CD + ,JURISDICTION + ,JURISDICTION_CD + ,MMWR_WEEK + ,MMWR_YEAR + ,OUTBREAK_IND + ,OUTBREAK_FROM_TIME + ,OUTBREAK_TO_TIME + ,OUTBREAK_NAME + ,OUTCOME_CD + ,PAT_AGE_AT_ONSET + ,PAT_AGE_AT_ONSET_UNIT_CD + ,t3.PROG_AREA_CD + ,RECORD_STATUS_CD + ,RPT_CNTY_CD + ,RPT_FORM_CMPLT_TIME + ,RPT_SOURCE_CD + ,RPT_TO_COUNTY_TIME + ,RPT_TO_STATE_TIME + ,t3.STATUS_CD + ,ONSETDATE + ,INVESTIGATIONSTARTDATE + ,PHC_ADD_TIME + ,PROGRAM_JURISDICTION_OID + ,SHARED_IND + ,IMPORTED_COUNTRY_CODE + ,IMPORTED_STATE_CODE + ,IMPORTED_COUNTY_CODE + ,INVESTIGATOR_ASSIGN_DATE + ,HSPTL_ADMISSION_DT + ,HSPTL_DISCHARGE_DT + ,HOSPITALIZED_DURATION_AMT + ,IMPORTED_CITY_DESC_TXT + ,INVESTIGATION_DEATH_DATE + ,LOCAL_ID + ,HOSPITALIZED_IND + ,DAY_CARE_IND_CD AS CASE_DAY_CARE_IND_CD + ,PREGNANT_IND_CD + ,LASTUPDATE + ,case when ltrim(rtrim(PHCTXT))='' then null else ltrim(rtrim(PHCTXT)) end as PHCTXT + ,A.CONDITION_CD + ,A.investigation_form_cd + ,A.condition_short_nm AS PHC_CODE_SHORT_DESC + ,B.CODE_SHORT_DESC_TXT AS DISEASE_IMPORTED_DESC_TXT + ,C.CODE_SHORT_DESC_TXT AS DETECTION_METHOD_DESC_TXT + ,D.CODE_SHORT_DESC_TXT AS RPT_SOURCE_DESC_TXT + ,E.CODE_SHORT_DESC_TXT AS HOSPITALIZED + ,F.CODE_SHORT_DESC_TXT AS PREGNANT + ,G.CODE_SHORT_DESC_TXT AS DAY_CARE_IND_CD + ,H.CODE_SHORT_DESC_TXT AS FOOD_HANDLER_IND_CD + ,I.CODE_SHORT_DESC_TXT AS IMPORTED_COUNTRY_CD + ,J.CODE_SHORT_DESC_TXT AS IMPORTED_COUNTY_CD + ,K.CODE_SHORT_DESC_TXT AS IMPORTED_STATE_CD + ,L.CODE_SHORT_DESC_TXT AS CASE_CLASS_DESC_TXT + ,M.CODE_SHORT_DESC_TXT AS investigation_status_desc_txt + ,N.CODE_SHORT_DESC_TXT AS outcome_desc_txt + ,O.CODE_SHORT_DESC_TXT AS pat_age_at_onset_unit_desc_txt + ,P.prog_area_desc_txt AS prog_area_desc_txt + ,Q.CODE_SHORT_DESC_TXT AS rpt_cnty_desc_txt + ,R.CODE_SHORT_DESC_TXT AS outbreak_name_desc + ,NOTIF_LAST_CHG_TIME + , CASE WHEN (A.investigation_form_cd NOT LIKE 'PG_%' or A.investigation_form_cd is null) then 1 else 0 end as FLAG2 /* Optimization (very imp) */ +INTO #TEMP_PHCINFO +FROM #TEMP_PHCINFO3 t3 + LEFT OUTER JOIN NBS_SRTE.DBO.CONDITION_CODE A WITH (NOLOCK) ON A.CONDITION_CD = t3.PHC_CODE + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA B WITH (NOLOCK) ON t3.DISEASE_IMPORTED_CD = B.CODE + AND t3.investigation_form_cd = B.investigation_form_cd + AND B.DATA_LOCATION LIKE '%.DISEASE_IMPORTED_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA C WITH (NOLOCK) ON t3.DETECTION_METHOD_CD = C.CODE + AND t3.investigation_form_cd = C.investigation_form_cd + AND C.DATA_LOCATION LIKE '%.DETECTION_METHOD_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA D WITH (NOLOCK) ON t3.RPT_SOURCE_CD = D.CODE + AND t3.investigation_form_cd = D.investigation_form_cd + AND D.DATA_LOCATION LIKE '%.RPT_SOURCE_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA E WITH (NOLOCK) ON t3.HOSPITALIZED_IND = E.CODE + AND t3.investigation_form_cd = E.investigation_form_cd + AND E.DATA_LOCATION LIKE '%.HOSPITALIZED_IND_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA F WITH (NOLOCK) ON t3.PREGNANT_IND_CD = F.CODE + AND t3.investigation_form_cd = F.investigation_form_cd + AND F.DATA_LOCATION LIKE '%.PREGNANT_IND_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA G WITH (NOLOCK) ON t3.DAY_CARE_IND_CD = G.CODE + AND t3.investigation_form_cd = G.investigation_form_cd + AND G.DATA_LOCATION LIKE '%.DAY_CARE_IND_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA H WITH (NOLOCK) ON t3.FOOD_HANDLER_IND_CD = H.CODE + AND t3.investigation_form_cd = H.investigation_form_cd + AND H.DATA_LOCATION LIKE '%.FOOD_HANDLER_IND_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA I WITH (NOLOCK) ON t3.IMPORTED_COUNTRY_CODE = I.CODE + AND t3.investigation_form_cd = I.investigation_form_cd + AND I.DATA_LOCATION LIKE '%.IMPORTED_COUNTRY_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA J WITH (NOLOCK) ON t3.IMPORTED_COUNTY_CODE = J.CODE + AND t3.investigation_form_cd = J.investigation_form_cd + AND J.DATA_LOCATION LIKE '%.IMPORTED_COUNTY_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA K WITH (NOLOCK) ON t3.IMPORTED_STATE_CODE = K.CODE + AND t3.INVESTIGATION_FORM_CD = K.INVESTIGATION_FORM_CD + AND K.DATA_LOCATION LIKE '%.IMPORTED_STATE_CD' + LEFT OUTER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL L WITH (NOLOCK) ON t3.CASE_CLASS_CD = L.CODE + AND L.CODE_SET_NM = 'PHC_CLASS' + LEFT OUTER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL M WITH (NOLOCK) ON t3.INVESTIGATION_STATUS_CD = M.CODE + AND M.CODE_SET_NM = 'PHC_IN_STS' + LEFT OUTER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL N WITH (NOLOCK) ON t3.OUTCOME_CD = N.CODE + AND N.CODE_SET_NM = 'YNU' + LEFT OUTER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL O WITH (NOLOCK) ON t3.PAT_AGE_AT_ONSET_UNIT_CD = O.CODE + AND O.CODE_SET_NM = 'AGE_UNIT' + LEFT OUTER JOIN NBS_SRTE.DBO.PROGRAM_AREA_CODE P WITH (NOLOCK) ON t3.PROG_AREA_CD = P.PROG_AREA_CD + AND P.CODE_SET_NM = 'S_PROGRA_C' + LEFT OUTER JOIN NBS_SRTE.DBO.V_STATE_COUNTY_CODE_VALUE Q WITH (NOLOCK) ON t3.RPT_CNTY_CD = Q.CODE + AND Q.CODE_SET_NM = 'COUNTY_CCD' + LEFT OUTER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL R WITH (NOLOCK) ON t3.OUTBREAK_NAME = R.CODE + AND R.CODE_SET_NM = 'OUTBREAK_NM' + + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + +UPDATE t +SET DISEASE_IMPORTED_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.DISEASE_IMPORTED_CD = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'PHC_IMPRT' + AND FLAG2=1; /* Optimization */ + +UPDATE t +SET DETECTION_METHOD_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.detection_method_cd = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'PHC_DET_MT' + AND FLAG2=1; /* Optimization */ + +UPDATE t +SET RPT_SOURCE_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.rpt_source_cd = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'PHC_RPT_SRC_T' + AND FLAG2=1; /* Optimization */ + +UPDATE t +SET HOSPITALIZED = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.HOSPITALIZED_IND = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'YNU' + AND FLAG2=1; /* Optimization */ + +UPDATE t +SET PREGNANT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.pregnant_ind_cd = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'YNU' + AND FLAG2=1; /* Optimization */ + +UPDATE t +SET DAY_CARE_IND_CD = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.CASE_DAY_CARE_IND_CD = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'YNU' + AND FLAG2=1; /* Optimization */ + +UPDATE t +SET FOOD_HANDLER_IND_CD = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.FOOD_HANDLER_IND_CD = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'YNU' + AND FLAG2=1; /* Optimization */ + +UPDATE t +SET DISEASE_IMPORTED_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.DISEASE_IMPORTED_CD = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'PHC_IMPRT' + AND FLAG2=1; /* Optimization */ + +UPDATE t +SET IMPORTED_COUNTRY_CD = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.IMPORTED_COUNTRY_CODE = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'PSL_CNTRY' + AND FLAG2=1; /* Optimization */ + +UPDATE t +SET IMPORTED_STATE_CD = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.IMPORTED_STATE_CD = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'STATE_CCD' + AND FLAG2=1; /* Optimization */ + +UPDATE t +SET IMPORTED_STATE_CD = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.IMPORTED_STATE_CD = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'YNU' + AND FLAG2=1; /* Optimization */ + + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + +COMMIT TRANSACTION; + +BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Cleanup process'; + + + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@Proc_Step_no + ,@Proc_Step_Name + ,0 + ); + +COMMIT TRANSACTION; + +BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_PHCSUBJECT'; + + IF OBJECT_ID('#TEMP_PHCSUBJECT') IS NOT NULL +DROP TABLE #TEMP_PHCSUBJECT; + +SELECT --PUBLIC_HEALTH_CASE_UID, + CASE_TYPE_CD + ,DIAGNOSIS_DATE + ,PHC_CODE + ,PHC_CODE_DESC + ,CASE_CLASS_CD + ,CD_SYSTEM_CD + ,THERAPY_DATE + ,STATE_CASE_ID + ,CD_SYSTEM_DESC_TXT + ,CONFIDENTIALITY_CD + ,CONFIDENTIALITY_DESC_TXT + ,DETECTION_METHOD_CD + ,HSPTL_ADMISSION_DT + ,HSPTL_DISCHARGE_DT + ,DISEASE_IMPORTED_CD + ,GROUP_CASE_CNT + ,INVESTIGATION_STATUS_CD + ,JURISDICTION + ,JURISDICTION_CD + ,MMWR_WEEK + ,MMWR_YEAR + ,OUTBREAK_IND + ,OUTBREAK_FROM_TIME + ,OUTBREAK_TO_TIME + ,OUTBREAK_NAME + ,OUTCOME_CD + ,PAT_AGE_AT_ONSET + ,PAT_AGE_AT_ONSET_UNIT_CD + ,PROG_AREA_CD + ,RECORD_STATUS_CD + ,RPT_CNTY_CD + ,RPT_FORM_CMPLT_TIME + ,RPT_SOURCE_CD + ,RPT_TO_COUNTY_TIME + ,RPT_TO_STATE_TIME + ,STATUS_CD + ,ONSETDATE + ,INVESTIGATIONSTARTDATE + ,PHC_ADD_TIME + ,PROGRAM_JURISDICTION_OID + ,SHARED_IND + ,IMPORTED_COUNTRY_CODE + ,IMPORTED_STATE_CODE + ,IMPORTED_COUNTY_CODE + ,INVESTIGATOR_ASSIGN_DATE + ,HOSPITALIZED_DURATION_AMT + ,IMPORTED_CITY_DESC_TXT + ,INVESTIGATION_DEATH_DATE + ,LOCAL_ID + ,HOSPITALIZED_IND + ,PREGNANT_IND_CD + ,PHC_CODE_SHORT_DESC + ,DISEASE_IMPORTED_DESC_TXT + ,DETECTION_METHOD_DESC_TXT + ,RPT_SOURCE_DESC_TXT + ,HOSPITALIZED + ,PREGNANT + ,RPT_CNTY_DESC_TXT + ,DAY_CARE_IND_CD + ,FOOD_HANDLER_IND_CD + ,IMPORTED_COUNTRY_CD + ,IMPORTED_COUNTY_CD + ,IMPORTED_STATE_CD + ,CASE_CLASS_DESC_TXT + ,INVESTIGATION_STATUS_DESC_TXT + ,OUTCOME_DESC_TXT + ,PAT_AGE_AT_ONSET_UNIT_DESC_TXT + ,OUTBREAK_NAME_DESC + ,LASTUPDATE + ,PHCTXT + ,PROG_AREA_DESC_TXT + ,t.* +INTO #TEMP_PHCSUBJECT +FROM #TEMP_PHCINFO t1 WITH (NOLOCK) + INNER JOIN #TEMP_PHCPATIENTINFO t WITH (NOLOCK) ON t1.PUBLIC_HEALTH_CASE_UID = t.PUBLIC_HEALTH_CASE_UID + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + +COMMIT TRANSACTION; + +-----------------------------------------SMMARY +----TODO NEEDS TO CHECK MERGE LOGIC +BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_SUMMARYUID'; + + IF OBJECT_ID('#TEMP_SUMMARYUID') IS NOT NULL +DROP TABLE #TEMP_SUMMARYUID; + +SELECT PHC.PUBLIC_HEALTH_CASE_UID + ,SRT1.PARENT_IS_CD AS STATE_CD + ,SRT2.CODE_DESC_TXT AS STATE + ,PHC.RPT_CNTY_CD AS CNTY_CD + ,SRT1.CODE_DESC_TXT AS COUNTY +INTO #TEMP_SUMMARYUID +FROM NBS_ODSE.DBO.PUBLIC_HEALTH_CASE PHC WITH (NOLOCK) + LEFT OUTER JOIN NBS_SRTE.DBO.STATE_COUNTY_CODE_VALUE SRT1 WITH (NOLOCK) ON PHC.RPT_CNTY_CD = SRT1.CODE + LEFT OUTER JOIN NBS_SRTE.DBO.STATE_CODE SRT2 WITH (NOLOCK) ON SRT1.PARENT_IS_CD = SRT2.STATE_CD + LEFT JOIN NBS_ODSE.DBO.ACT_RELATIONSHIP ARN WITH (NOLOCK) ON ARN.TARGET_ACT_UID=PHC.PUBLIC_HEALTH_CASE_UID + LEFT JOIN NBS_ODSE.DBO.NOTIFICATION WITH (NOLOCK) ON NOTIFICATION.NOTIFICATION_UID=ARN.SOURCE_ACT_UID + AND NOTIFICATION.CD='NOTF' +WHERE CASE_TYPE_CD IS NOT NULL + AND CASE_TYPE_CD = 'S' + and PHC.public_health_case_uid in (select value from string_split(@phc_id_list, ',')) + + +ORDER BY PUBLIC_HEALTH_CASE_UID; + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_CASECNT'; + + IF OBJECT_ID('#TEMP_CASECNT') IS NOT NULL +DROP TABLE #TEMP_CASECNT; + +SELECT AR2.TARGET_ACT_UID AS PUBLIC_HEALTH_CASE_UID + ,AR2.SOURCE_ACT_UID AS SUM_REPORT_FORM_UID + ,AR1.TARGET_ACT_UID AS AR1_SUM_REPORT_FORM_UID + , + /*--SUMMARY_REPORT_FORM OBS_UID*/ + AR1.SOURCE_ACT_UID AS AR1_SUM107_UID + , + /*--SUM107 OBS_UID*/ + OB1.OBSERVATION_UID AS OB1_SUM107_UID + ,OB1.CD AS OB1_CD + ,OB2.OBSERVATION_UID AS OB2_SUM_REPORT_FORM_UID + ,OB2.CD AS OB2_CD + ,OVN.NUMERIC_VALUE_1 AS GROUP_CASE_CNT + ,AR1.TYPE_CD AS AR1_TYPE_CD + ,AR1.SOURCE_CLASS_CD AS AR1_SOURCE_CLASS_CD + ,AR1.TARGET_CLASS_CD AS AR1_TARGET_CLASS_CD + ,AR2.TYPE_CD AS AR2_TYPE_CD + ,AR2.SOURCE_CLASS_CD AS AR2_SOURCE_CLASS_CD + ,AR2.TARGET_CLASS_CD AS AR2_TARGET_CLASS_CD +INTO #TEMP_CASECNT +FROM NBS_ODSE.DBO.ACT_RELATIONSHIP AS AR1 WITH (NOLOCK) + ,NBS_ODSE.DBO.OBSERVATION AS OB1 WITH (NOLOCK) + ,NBS_ODSE.DBO.OBSERVATION AS OB2 WITH (NOLOCK) + ,NBS_ODSE.DBO.OBS_VALUE_NUMERIC AS OVN WITH (NOLOCK) + ,NBS_ODSE.DBO.ACT_RELATIONSHIP AS AR2 WITH (NOLOCK) +WHERE AR1.SOURCE_ACT_UID = OB1.OBSERVATION_UID + AND AR1.TARGET_ACT_UID = OB2.OBSERVATION_UID + AND AR1.TYPE_CD = 'SUMMARYFRMQ' + AND OB1.CD = 'SUM107' + AND OB2.CD = 'SUMMARY_REPORT_FORM' + AND OB1.OBSERVATION_UID = OVN.OBSERVATION_UID + AND OB2.OBSERVATION_UID = AR2.SOURCE_ACT_UID + AND AR2.TYPE_CD = 'SUMMARYFORM' + and AR2.TARGET_ACT_UID in (select value from string_split(@phc_id_list, ',')) + + + +ORDER BY PUBLIC_HEALTH_CASE_UID; + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + +COMMIT TRANSACTION; + +---TODO PENDING CODE LOGIC +-----------------------NOTIFICATION +BEGIN TRANSACTION; + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_SAS_LATEST_NOT'; + + IF OBJECT_ID('#TEMP_SAS_LATEST_NOT') IS NOT NULL +DROP TABLE #TEMP_SAS_LATEST_NOT; + +SELECT TARGET_ACT_UID AS PUBLIC_HEALTH_CASE_UID + ,ar.SOURCE_ACT_UID + ,SOURCE_CLASS_CD + ,NF.RECORD_STATUS_CD AS NOTIFCURRENTSTATE + , NF.txt + ,NF.local_id AS NOTIFICATION_LOCAL_ID +INTO #TEMP_SAS_LATEST_NOT +FROM NBS_ODSE.DBO.ACT_RELATIONSHIP AR WITH (NOLOCK) + ,NBS_ODSE.DBO.NOTIFICATION NF WITH (NOLOCK) +WHERE AR.SOURCE_ACT_UID = NF.NOTIFICATION_UID + AND SOURCE_CLASS_CD = 'NOTF' + AND TARGET_CLASS_CD = 'CASE' + AND ( + NF.RECORD_STATUS_CD = 'COMPLETED' + OR NF.RECORD_STATUS_CD = 'PEND_APPR' + OR NF.RECORD_STATUS_CD = 'APPROVED' + ) + AND AR.TARGET_ACT_UID IN (SELECT PUBLIC_HEALTH_CASE_UID FROM #TEMP_PHCSUBJECT WITH (NOLOCK)) + + + COMMIT TRANSACTION; +BEGIN TRANSACTION; + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_SAS_NOTIFICATION'; + + IF OBJECT_ID('#TEMP_SAS_NOTIFICATION') IS NOT NULL +DROP TABLE #TEMP_SAS_NOTIFICATION; + +SELECT DISTINCT TARGET_ACT_UID AS PUBLIC_HEALTH_CASE_UID + ,TARGET_CLASS_CD + ,SOURCE_ACT_UID + ,SOURCE_CLASS_CD + ,NF.VERSION_CTRL_NBR + ,NF.ADD_TIME + ,NF.ADD_USER_ID + ,NF.RPT_SENT_TIME + ,NF.RECORD_STATUS_CD + ,NF.RECORD_STATUS_TIME + ,NF.LAST_CHG_TIME + ,NF.LAST_CHG_USER_ID + ,'Y' AS HIST_IND + , NF.txt + ,CAST(NULL AS INT) AS NOTIFSENTCOUNT + ,CAST(NULL AS INT) AS NOTIFREJECTEDCOUNT + ,CAST(NULL AS INT) AS NOTIFCREATEDCOUNT + ,CAST(NULL AS INT) AS X1 + ,CAST(NULL AS INT) AS X2 + ,CAST(NULL AS DATETIME) AS FIRSTNOTIFICATIONSENDDATE + ,CAST(NULL AS DATETIME) AS NOTIFICATIONDATE +INTO #TEMP_SAS_NOTIFICATION +FROM NBS_ODSE.DBO.ACT_RELATIONSHIP AR WITH (NOLOCK) + INNER JOIN NBS_ODSE.DBO.NOTIFICATION_HIST NF WITH (NOLOCK) ON AR.SOURCE_ACT_UID = NF.NOTIFICATION_UID +WHERE + SOURCE_CLASS_CD = 'NOTF' + AND TARGET_CLASS_CD = 'CASE' + AND NF.CD='NOTF' + AND ( + NF.RECORD_STATUS_CD = 'COMPLETED' + OR NF.RECORD_STATUS_CD = 'MSG_FAIL' + OR NF.RECORD_STATUS_CD = 'REJECTED' + OR NF.RECORD_STATUS_CD = 'PEND_APPR' + OR NF.RECORD_STATUS_CD = 'APPROVED' + ) + and AR.TARGET_ACT_UID IN (SELECT PUBLIC_HEALTH_CASE_UID FROM #TEMP_PHCSUBJECT WITH (NOLOCK)) + + +UNION + +SELECT TARGET_ACT_UID + ,TARGET_CLASS_CD + ,SOURCE_ACT_UID + ,SOURCE_CLASS_CD + ,NF.VERSION_CTRL_NBR + ,NF.ADD_TIME + ,NF.ADD_USER_ID + ,NF.RPT_SENT_TIME + ,NF.RECORD_STATUS_CD + ,NF.RECORD_STATUS_TIME + ,NF.LAST_CHG_TIME + ,NF.LAST_CHG_USER_ID + ,'N' AS HIST_IND + , NULL AS TXT + ,CAST(NULL AS INT) AS NOTIFSENTCOUNT + ,CAST(NULL AS INT) AS NOTIFREJECTEDCOUNT + ,CAST(NULL AS INT) AS NOTIFCREATEDCOUNT + ,CAST(NULL AS INT) AS X1 + ,CAST(NULL AS INT) AS X2 + ,CAST(NULL AS DATETIME) AS FIRSTNOTIFICATIONSENDDATE + ,CAST(NULL AS DATETIME) AS NOTIFICATIONDATE +FROM NBS_ODSE.DBO.ACT_RELATIONSHIP AR WITH (NOLOCK) + ,NBS_ODSE.DBO.NOTIFICATION NF WITH (NOLOCK) +WHERE AR.SOURCE_ACT_UID = NF.NOTIFICATION_UID + AND SOURCE_CLASS_CD = 'NOTF' + AND TARGET_CLASS_CD = 'CASE' + AND NF.CD='NOTF' + AND ( + NF.RECORD_STATUS_CD = 'COMPLETED' + OR NF.RECORD_STATUS_CD = 'MSG_FAIL' + OR NF.RECORD_STATUS_CD = 'REJECTED' + OR NF.RECORD_STATUS_CD = 'PEND_APPR' + OR NF.RECORD_STATUS_CD = 'APPROVED' + ) + and AR.TARGET_ACT_UID IN (SELECT PUBLIC_HEALTH_CASE_UID FROM #TEMP_PHCSUBJECT WITH (NOLOCK)) + +ORDER BY TARGET_ACT_UID + ,LAST_CHG_TIME; + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_PHCFACT'; + + IF OBJECT_ID('#TEMP_PHCFACT') IS NOT NULL +DROP TABLE #TEMP_PHCFACT; + +SELECT t.* + ,TARGET_CLASS_CD + ,tn.SOURCE_ACT_UID + ,tn.SOURCE_CLASS_CD + ,VERSION_CTRL_NBR + ,ADD_TIME + ,ADD_USER_ID + ,RPT_SENT_TIME + ,RECORD_STATUS_CD + ,RECORD_STATUS_TIME + ,LAST_CHG_TIME + ,LAST_CHG_USER_ID + ,HIST_IND + ,NOTIFSENTCOUNT + ,NOTIFCREATEDCOUNT + ,FIRSTNOTIFICATIONSENDDATE + ,NOTIFICATIONDATE +INTO #TEMP_PHCFACT +FROM #TEMP_CASECNT t WITH (NOLOCK) + LEFT JOIN #TEMP_SAS_NOTIFICATION tn WITH (NOLOCK) ON tn.PUBLIC_HEALTH_CASE_UID = t.PUBLIC_HEALTH_CASE_UID; + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_MIN_MAX_NOTIFICATION'; + +IF OBJECT_ID('#TEMP_MIN_MAX_NOTIFICATION') IS NOT NULL +DROP TABLE #TEMP_MIN_MAX_NOTIFICATION; + +SELECT DISTINCT MIN(CASE + WHEN VERSION_CTRL_NBR = 1 + THEN RECORD_STATUS_CD + END) AS FIRSTNOTIFICATIONSTATUS + , + + SUM(CASE + WHEN RECORD_STATUS_CD = 'REJECTED' + THEN 1 + ELSE 0 + END) NOTIFREJECTEDCOUNT + ,SUM(CASE + WHEN RECORD_STATUS_CD = 'APPROVED' + OR RECORD_STATUS_CD = 'PEND_APPR' + THEN 1 + WHEN RECORD_STATUS_CD = 'REJECTED' + THEN -1 + ELSE 0 + END) NOTIFCREATEDCOUNT + ,SUM(CASE + WHEN RECORD_STATUS_CD = 'COMPLETED' + THEN 1 + ELSE 0 + END) NOTIFSENTCOUNT + ,MIN(CASE + WHEN RECORD_STATUS_CD = 'COMPLETED' + THEN RPT_SENT_TIME + END) AS FIRSTNOTIFICATIONSENDDATE + , + SUM(CASE + WHEN RECORD_STATUS_CD = 'PEND_APPR' + THEN 1 + ELSE 0 + END) NOTIFCREATEDPENDINGSCOUNT + ,MAX(CASE + WHEN RECORD_STATUS_CD = 'APPROVED' + OR RECORD_STATUS_CD = 'PEND_APPR' + THEN LAST_CHG_TIME + END) AS LASTNOTIFICATIONDATE + , + --DONE? + MAX(CASE + WHEN RECORD_STATUS_CD = 'COMPLETED' + THEN RPT_SENT_TIME + END) AS LASTNOTIFICATIONSENDDATE + , + --DONE? + MIN(ADD_TIME) AS FIRSTNOTIFICATIONDATE + , + --DONE + MIN(ADD_USER_ID) AS FIRSTNOTIFICATIONSUBMITTEDBY + , + --DONE + MIN(ADD_USER_ID) AS LASTNOTIFICATIONSUBMITTEDBY + --DONE + --MIN(CASE WHEN RECORD_STATUS_CD='COMPLETED' THEN LAST_CHG_USER_ID END) AS FIRSTNOTIFICATIONSUBMITTEDBY, + ,MIN(CASE + WHEN RECORD_STATUS_CD = 'COMPLETED' + AND RPT_SENT_TIME IS NOT NULL + THEN RPT_SENT_TIME + END) AS NOTIFICATIONDATE + ,PUBLIC_HEALTH_CASE_UID +INTO #TEMP_MIN_MAX_NOTIFICATION +FROM #TEMP_SAS_NOTIFICATION WITH (NOLOCK) +GROUP BY PUBLIC_HEALTH_CASE_UID; + +UPDATE #TEMP_MIN_MAX_NOTIFICATION set NOTIFCREATEDCOUNT = NOTIFCREATEDCOUNT-1 where NOTIFCREATEDPENDINGSCOUNT>0 and NOTIFCREATEDCOUNT>0; +UPDATE #TEMP_MIN_MAX_NOTIFICATION set NOTIFCREATEDCOUNT = 1 where NOTIFCREATEDPENDINGSCOUNT>0 and NOTIFCREATEDCOUNT=0 and NOTIFREJECTEDCOUNT=0; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@Proc_Step_no + ,@Proc_Step_Name + ,0 + ); + +COMMIT TRANSACTION; + +BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_SUB_CASE_NOTIF'; + + IF OBJECT_ID('#TEMP_SUB_CASE_NOTIF') IS NOT NULL +DROP TABLE #TEMP_SUB_CASE_NOTIF; + +SELECT DISTINCT ts.* + ,NOTIFCREATEDCOUNT + ,NOTIFSENTCOUNT + ,NOTIFICATIONDATE + ,FIRSTNOTIFICATIONSTATUS + ,FIRSTNOTIFICATIONSENDDATE + ,LASTNOTIFICATIONDATE + ,LASTNOTIFICATIONSENDDATE + ,FIRSTNOTIFICATIONDATE + ,FIRSTNOTIFICATIONSUBMITTEDBY + ,LASTNOTIFICATIONSUBMITTEDBY + ,t.TXT AS NOTITXT + ,t.NOTIFICATION_LOCAL_ID + ,t.NOTIFCURRENTSTATE + ,ROWN = ROW_NUMBER() OVER ( + PARTITION BY ts.PUBLIC_HEALTH_CASE_UID ORDER BY ts.PUBLIC_HEALTH_CASE_UID + ) +INTO #TEMP_SUB_CASE_NOTIF +FROM #TEMP_PHCSUBJECT ts WITH (NOLOCK) + LEFT JOIN #TEMP_MIN_MAX_NOTIFICATION tn WITH (NOLOCK) ON tn.PUBLIC_HEALTH_CASE_UID = ts.PUBLIC_HEALTH_CASE_UID + LEFT JOIN #TEMP_SAS_LATEST_NOT t WITH (NOLOCK) ON t.PUBLIC_HEALTH_CASE_UID = ts.PUBLIC_HEALTH_CASE_UID; + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +DELETE +FROM #TEMP_SUB_CASE_NOTIF +WHERE ROWN > 1 + --IF OBJECT_ID ('TEMP_PHCFACT') IS NOT NULL DROP TABLE TEMP_PHCFACT; + --IF OBJECT_ID ('TEMP_MIN_MAX_NOTIFICATION') IS NOT NULL DROP TABLE TEMP_MIN_MAX_NOTIFICATION; + INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_CONFIRM'; + + IF OBJECT_ID('#TEMP_CONFIRM') IS NOT NULL +DROP TABLE #TEMP_CONFIRM; + +SELECT CONFIRMATION_METHOD.PUBLIC_HEALTH_CASE_UID + ,A.CONFIRMATION_METHOD_TIME + ,CONFIRMATION_METHOD_CD + ,tc.CODE_SHORT_DESC_TXT AS CONFIRMATION_METHOD_DESC_TXT + ,tc.investigation_form_cd +INTO #TEMP_CONFIRM +FROM ( + SELECT CONFIRMATION_METHOD.PUBLIC_HEALTH_CASE_UID + ,MAX(CONFIRMATION_METHOD_TIME) AS CONFIRMATION_METHOD_TIME + FROM NBS_ODSE.DBO.CONFIRMATION_METHOD WITH (NOLOCK) + GROUP BY CONFIRMATION_METHOD.PUBLIC_HEALTH_CASE_UID + ) A + INNER JOIN #TEMP_PHCINFO t WITH (NOLOCK) ON t.PUBLIC_HEALTH_CASE_UID = A.PUBLIC_HEALTH_CASE_UID + INNER JOIN NBS_ODSE.DBO.CONFIRMATION_METHOD WITH (NOLOCK) ON A.PUBLIC_HEALTH_CASE_UID = CONFIRMATION_METHOD.PUBLIC_HEALTH_CASE_UID + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA tc WITH (NOLOCK) ON CONFIRMATION_METHOD.CONFIRMATION_METHOD_CD = tc.CODE + AND tc.investigation_form_cd = t.investigation_form_cd + AND tc.CODE_SET_NM= 'PHC_CONF_M' +GROUP BY CONFIRMATION_METHOD.PUBLIC_HEALTH_CASE_UID + ,CONFIRMATION_METHOD_CD + ,A.CONFIRMATION_METHOD_TIME + ,CONFIRMATION_METHOD_DESC_TXT + ,tc.CODE_SHORT_DESC_TXT + ,tc.investigation_form_cd; + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + +UPDATE t +SET CONFIRMATION_METHOD_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_CONFIRM t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.CONFIRMATION_METHOD_CD = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM= 'PHC_CONF_M' +where t.INVESTIGATION_FORM_CD NOT LIKE 'PG_%' or INVESTIGATION_FORM_CD is null + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_CONFIRM_CONCAT'; + + IF OBJECT_ID('#TEMP_CONFIRM_CONCAT') IS NOT NULL +DROP TABLE #TEMP_CONFIRM_CONCAT; + +SELECT DISTINCT PUBLIC_HEALTH_CASE_UID + ,CONFIRMATION_METHOD_TIME = ( + SELECT TOP 1 CONFIRMATION_METHOD_TIME + FROM #TEMP_CONFIRM WITH (NOLOCK) +WHERE PUBLIC_HEALTH_CASE_UID = T.PUBLIC_HEALTH_CASE_UID + ) + ,CONFIRMATION_METHOD_DESC_TXT = STUFF(( + SELECT ', ' + CONFIRMATION_METHOD_DESC_TXT + FROM #TEMP_CONFIRM WITH (NOLOCK) + WHERE PUBLIC_HEALTH_CASE_UID = T.PUBLIC_HEALTH_CASE_UID + FOR XML PATH('') + ), 1, 1, '') + ,CONFIRMATION_METHOD_CD = STUFF(( + SELECT ', ' + CONFIRMATION_METHOD_CD + FROM #TEMP_CONFIRM WITH (NOLOCK) + WHERE PUBLIC_HEALTH_CASE_UID = T.PUBLIC_HEALTH_CASE_UID + FOR XML PATH('') + ), 1, 1, '') +INTO #TEMP_CONFIRM_CONCAT +FROM #TEMP_CONFIRM AS T; + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_SUB_CASE_CONF_NOTIF'; + + IF OBJECT_ID('#TEMP_SUB_CASE_CONF_NOTIF') IS NOT NULL +DROP TABLE #TEMP_SUB_CASE_CONF_NOTIF; + +SELECT t.* + ,CONFIRMATION_METHOD_TIME + ,CONFIRMATION_METHOD_CD + ,CONFIRMATION_METHOD_DESC_TXT +INTO #TEMP_SUB_CASE_CONF_NOTIF +FROM #TEMP_SUB_CASE_NOTIF t WITH (NOLOCK) + LEFT OUTER JOIN #TEMP_CONFIRM_CONCAT tc WITH (NOLOCK) ON t.PUBLIC_HEALTH_CASE_UID = tc.PUBLIC_HEALTH_CASE_UID; + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + +COMMIT TRANSACTION; + +----------------------PHCREPORTER +BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_PHCREPORTER'; + + IF OBJECT_ID('#TEMP_PHCREPORTER') IS NOT NULL +DROP TABLE #TEMP_PHCREPORTER; + +SELECT PAR.ACT_UID + ,PNM.PERSON_UID AS ENTITY_UID + ,TYPE_CD + ,TEL.PHONE_NBR_TXT + ,PAR.FROM_TIME + ,isnull(RTRIM(LTRIM(PNM.LAST_NM)), '') + ', ' + isnull(PNM.FIRST_NM, '') AS NAME +INTO #TEMP_PHCREPORTER +FROM NBS_ODSE.DBO.PARTICIPATION AS PAR WITH (NOLOCK) + INNER JOIN #TEMP_PHCINFO t on t.public_health_CASE_UID =PAR.ACT_UID + INNER JOIN NBS_ODSE.DBO.PERSON AS P WITH (NOLOCK) ON P.PERSON_UID = PAR.SUBJECT_ENTITY_UID + LEFT JOIN NBS_ODSE.DBO.PERSON_NAME AS PNM WITH (NOLOCK) ON PNM.PERSON_UID = PAR.SUBJECT_ENTITY_UID + AND PNM.NM_USE_CD = 'L' + AND PNM.RECORD_STATUS_CD = 'ACTIVE' + LEFT JOIN NBS_ODSE.DBO.ENTITY_LOCATOR_PARTICIPATION AS ELP WITH (NOLOCK) ON ELP.ENTITY_UID = PAR.SUBJECT_ENTITY_UID + AND ELP.CLASS_CD = 'TELE' + AND ELP.USE_CD = 'WP' /*WORK PLACE*/ + AND ELP.CD = 'PH' /*PHONE*/ + AND ELP.RECORD_STATUS_CD = 'ACTIVE' + LEFT JOIN NBS_ODSE.DBO.TELE_LOCATOR AS TEL WITH (NOLOCK) ON ELP.LOCATOR_UID = TEL.TELE_LOCATOR_UID +/*AND (TEL.RECORD_STATUS_CD IS NOT NULL AND TEL.RECORD_STATUS_CD ='ACTIVE')*/ +WHERE ( + PAR.TYPE_CD IN ( + 'OrgAsReporterOfPHC' + ,'InvestgrOfPHC' + ,'PerAsReporterOfPHC' + ,'PhysicianOfPHC' + ) + ) +UNION + +SELECT PAR2.ACT_UID + ,ORG.ORGANIZATION_UID AS ENTITY_UID + ,TYPE_CD + ,' ' AS PHONE_NBR_TXT + ,PAR2.FROM_TIME + ,ORG.NM_TXT AS NAME +FROM NBS_ODSE.DBO.PARTICIPATION AS PAR2 WITH (NOLOCK) + INNER JOIN #TEMP_PHCINFO t on t.public_health_CASE_UID =PAR2.ACT_UID + INNER JOIN NBS_ODSE.DBO.ORGANIZATION_NAME AS ORG WITH (NOLOCK) ON ORG.ORGANIZATION_UID = PAR2.SUBJECT_ENTITY_UID + INNER JOIN NBS_ODSE.DBO.ORGANIZATION WITH (NOLOCK) ON ORGANIZATION.ORGANIZATION_UID = ORG.ORGANIZATION_UID +WHERE PAR2.RECORD_STATUS_CD = 'ACTIVE' + AND PAR2.TYPE_CD = 'OrgAsReporterOfPHC' + AND LTRIM(RTRIM(NM_TXT)) <> '' +ORDER BY ACT_UID + ,TYPE_CD; + +IF OBJECT_ID('#TEMP_ENTITY') IS NOT NULL +DROP TABLE #TEMP_ENTITY; + +SELECT ACT_UID + ,PROVIDERNAME = MAX(CASE + WHEN TYPE_CD = 'PhysicianOfPHC' + THEN NAME + END) + ,PROVIDERPHONE = MAX(CASE + WHEN TYPE_CD = 'PhysicianOfPHC' + THEN PHONE_NBR_TXT + END) + ,REPORTERNAME = MAX(CASE + WHEN TYPE_CD = 'PerAsReporterOfPHC' + THEN NAME + END) + ,REPORTERPHONE = MAX(CASE + WHEN TYPE_CD = 'PerAsReporterOfPHC' + THEN PHONE_NBR_TXT + END) + ,INVESTIGATORNAME = MAX(CASE + WHEN TYPE_CD = 'InvestgrOfPHC' + THEN NAME + END) + ,INVESTIGATORPHONE = MAX(CASE + WHEN TYPE_CD = 'InvestgrOfPHC' + THEN PHONE_NBR_TXT + END) + ,INVESTIGATORASSIGNEDDATE = MAX(CASE + WHEN TYPE_CD = 'InvestgrOfPHC' + THEN FROM_TIME + END) + ,ORGANIZATIONNAME = MAX(CASE + WHEN TYPE_CD = 'OrgAsReporterOfPHC' + THEN NAME + END) +INTO #TEMP_ENTITY +FROM #TEMP_PHCREPORTER WITH (NOLOCK) +GROUP BY ACT_UID + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_CASE_ENTITY'; + + IF OBJECT_ID('#TEMP_CASE_ENTITY') IS NOT NULL +DROP TABLE #TEMP_CASE_ENTITY; + +SELECT tn.* + ,te.PROVIDERNAME + ,te.PROVIDERPHONE + ,te.REPORTERNAME + ,te.REPORTERPHONE + ,te.INVESTIGATORNAME + ,te.INVESTIGATORPHONE + ,te.INVESTIGATORASSIGNEDDATE + ,te.ORGANIZATIONNAME +INTO #TEMP_CASE_ENTITY +FROM #TEMP_SUB_CASE_CONF_NOTIF tn WITH (NOLOCK) + LEFT OUTER JOIN #TEMP_ENTITY te WITH (NOLOCK) ON tn.PUBLIC_HEALTH_CASE_UID = te.ACT_UID; + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + +COMMIT TRANSACTION; + +-------------------------PHCPERSONRACE +BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_PHCPERSONRACE'; + + IF OBJECT_ID('#TEMP_PHCPERSONRACE') IS NOT NULL +DROP TABLE #TEMP_PHCPERSONRACE; + +SELECT DISTINCT PER.PERSON_UID + ,PER.RACE_CATEGORY_CD + ,CODE_SHORT_DESC_TXT AS RACE_DESC_TXT +INTO #TEMP_PHCPERSONRACE +FROM NBS_ODSE.DBO.PERSON_RACE AS PER WITH (NOLOCK) + ,NBS_SRTE.DBO.RACE_CODE AS RAC WITH (NOLOCK) + ,#TEMP_UPDATE_NEW_PATIENT t WITH (NOLOCK) +WHERE PER.RACE_CD = PER.RACE_CATEGORY_CD /*CONCATENATE ONLY CATEGORY CD AND DESC*/ + AND t.PERSON_UID=PER.PERSON_UID + AND PER.RACE_CD = RAC.CODE + AND RAC.PARENT_IS_CD = 'ROOT' + AND RAC.CODE_SET_NM = 'P_RACE_CAT' +UNION + +SELECT DISTINCT PER.PERSON_UID + ,PER.RACE_CATEGORY_CD + ,CODE_SHORT_DESC_TXT AS RACE_DESC_TXT +--INTO TEMP_RACE1 +FROM NBS_ODSE.DBO.PERSON_RACE AS PER WITH (NOLOCK) + ,NBS_SRTE.DBO.RACE_CODE AS RAC WITH (NOLOCK) + ,#TEMP_UPDATE_NEW_PATIENT t WITH (NOLOCK) +WHERE PER.RACE_CD = 'ROOT' + AND t.PERSON_UID=PER.PERSON_UID + AND PER.RACE_CATEGORY_CD = RAC.CODE + + IF OBJECT_ID('#TEMP_PHCPERSONRACE_CONCAT') IS NOT NULL +DROP TABLE #TEMP_PHCPERSONRACE_CONCAT; + +SELECT DISTINCT PERSON_UID + ,RACE_CONCATENATED_DESC_TXT = STUFF(( + SELECT ', ' + RACE_DESC_TXT + FROM #TEMP_PHCPERSONRACE WITH (NOLOCK) + WHERE PERSON_UID = T.PERSON_UID + FOR XML PATH('') + ), 1, 1, '') + ,RACE_CONCATENATED_TXT = STUFF(( + SELECT ', ' + RACE_CATEGORY_CD + FROM #TEMP_PHCPERSONRACE WITH (NOLOCK) + WHERE PERSON_UID = T.PERSON_UID + FOR XML PATH('') + ), 1, 1, '') +INTO #TEMP_PHCPERSONRACE_CONCAT +FROM #TEMP_PHCPERSONRACE AS T; + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_PHC_FACT'; + + IF OBJECT_ID('#TEMP_PHC_FACT') IS NOT NULL +DROP TABLE #TEMP_PHC_FACT; + +SELECT te.* + ,RACE_CONCATENATED_DESC_TXT + ,RACE_CONCATENATED_TXT + ,cast(null as varchar(20)) EVENT_TYPE + ,cast(null as datetime) EVENT_DATE + ,cast(null as datetime) REPORT_DATE + ,cast(null as datetime) MART_RECORD_CREATION_TIME +INTO #TEMP_PHC_FACT +FROM #TEMP_CASE_ENTITY te + LEFT OUTER JOIN #TEMP_PHCPERSONRACE_CONCAT tc WITH (NOLOCK) ON te.PERSON_UID = tc.PERSON_UID; + +---------------------- +-- Moved this column above SQL +-- ALTER TABLE #TEMP_PHC_FACT ADD EVENT_TYPE VARCHAR(20); + +-- ALTER TABLE #TEMP_PHC_FACT ADD EVENT_DATE DATETIME; + +-- ALTER TABLE #TEMP_PHC_FACT ADD REPORT_DATE DATETIME; + +-- ALTER TABLE #TEMP_PHC_FACT ADD MART_RECORD_CREATION_TIME DATETIME; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@Proc_Step_no + ,@Proc_Step_Name + ,0 + ); + +COMMIT TRANSACTION; + +BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Updating TEMP_PHC_FACT'; + +UPDATE #TEMP_PHC_FACT +SET EVENT_TYPE = ( + CASE + WHEN ONSETDATE IS NOT NULL + THEN 'O' + WHEN ONSETDATE IS NULL + AND DIAGNOSIS_DATE IS NOT NULL + THEN 'D' + WHEN ONSETDATE IS NULL + AND DIAGNOSIS_DATE IS NULL + AND RPT_TO_COUNTY_TIME IS NOT NULL + THEN 'C' + WHEN ONSETDATE IS NULL + AND DIAGNOSIS_DATE IS NULL + AND RPT_TO_COUNTY_TIME IS NULL + AND RPT_TO_STATE_TIME IS NOT NULL + THEN 'S' + WHEN PHC_CODE IN ('10220') + AND THERAPY_DATE IS NOT NULL + THEN 'RVCT_DTS' + WHEN PHC_CODE IN ('10220') + AND THERAPY_DATE IS NULL + AND RPT_FORM_CMPLT_TIME IS NOT NULL + THEN 'RVCT_DR' + ELSE 'P' + END + ) + ,EVENT_DATE = ( + CASE + WHEN ONSETDATE IS NOT NULL + THEN ONSETDATE + WHEN ONSETDATE IS NULL + AND DIAGNOSIS_DATE IS NOT NULL + THEN DIAGNOSIS_DATE + WHEN ONSETDATE IS NULL + AND DIAGNOSIS_DATE IS NULL + AND RPT_TO_COUNTY_TIME IS NOT NULL + THEN RPT_TO_COUNTY_TIME + WHEN ONSETDATE IS NULL + AND DIAGNOSIS_DATE IS NULL + AND RPT_TO_COUNTY_TIME IS NULL + AND RPT_TO_STATE_TIME IS NOT NULL + THEN RPT_TO_STATE_TIME + WHEN PHC_CODE IN ('10220') + AND THERAPY_DATE IS NOT NULL + THEN THERAPY_DATE + WHEN PHC_CODE IN ('10220') + AND THERAPY_DATE IS NULL + AND RPT_FORM_CMPLT_TIME IS NOT NULL + THEN RPT_FORM_CMPLT_TIME + ELSE PHC_ADD_TIME + END + ) + ,REPORT_DATE = ( + CASE + WHEN RPT_TO_COUNTY_TIME is not null + THEN RPT_TO_COUNTY_TIME + WHEN RPT_TO_STATE_TIME IS NOT NULL AND RPT_TO_COUNTY_TIME IS NULL + THEN RPT_TO_STATE_TIME + ELSE PHC_ADD_TIME + END + ) + ,DECEASED_TIME = ( + CASE + WHEN PHC_CODE IN ( + '10220' + ,'10030' + ) + THEN INVESTIGATION_DEATH_DATE + ELSE DECEASED_TIME + END + ) + ,INVESTIGATORASSIGNEDDATE = ( + CASE + WHEN PHC_CODE IN ( + '10220' + ,'10030' + ) + THEN INVESTIGATOR_ASSIGN_DATE + ELSE INVESTIGATORASSIGNEDDATE + END + ) + ,MART_RECORD_CREATION_TIME = getDate();; + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +-- the below 4 update's are already covered in the above sql +-- so commenting the below 4 sql +-- UPDATE #TEMP_PHC_FACT SET EVENT_DATE = THERAPY_DATE WHERE PHC_CODE ='10220' and THERAPY_DATE is not null ; +-- UPDATE #TEMP_PHC_FACT SET EVENT_DATE = rpt_form_cmplt_time WHERE PHC_CODE ='10220' and THERAPY_DATE is null and rpt_form_cmplt_time is not null; +-- UPDATE #TEMP_PHC_FACT SET EVENT_TYPE = 'RVCT_DTS' WHERE PHC_CODE ='10220' and THERAPY_DATE is not null ; +-- UPDATE #TEMP_PHC_FACT SET EVENT_TYPE = 'RVCT_DR' WHERE PHC_CODE ='10220' and THERAPY_DATE is null and rpt_form_cmplt_time is not null; + +-- below sql are now in the corresponding select clause +-- UPDATE #TEMP_PHC_FACT SET State_cd = NULL WHERE State_cd = LTRIM(RTRIM('')); +-- UPDATE #TEMP_PHC_FACT SET phctxt = NULL WHERE phctxt = LTRIM(RTRIM('')); +-- UPDATE #TEMP_PHC_FACT SET cntry_cd = NULL WHERE cntry_cd = LTRIM(RTRIM('')); + + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + +COMMIT TRANSACTION; + +BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Cleanup temp tables'; +/* + IF OBJECT_ID('#TEMP_UPDATE_NEW_PATIENT') IS NOT NULL + DROP TABLE #TEMP_UPDATE_NEW_PATIENT; + + IF OBJECT_ID('#TEMP_PHCINFO1') IS NOT NULL + DROP TABLE #TEMP_PHCINFO1; + + IF OBJECT_ID('#TEMP_PHCINFO2') IS NOT NULL + DROP TABLE #TEMP_PHCINFO2; + + IF OBJECT_ID('#TEMP_PHCINFO3') IS NOT NULL + DROP TABLE #TEMP_PHCINFO3; + + IF OBJECT_ID('#TEMP_INV_FORM_CODE_DATA') IS NOT NULL + DROP TABLE #TEMP_INV_FORM_CODE_DATA; + + IF OBJECT_ID('#TEMP_PHCPATIENTINFO') IS NOT NULL + DROP TABLE #TEMP_PHCPATIENTINFO; + + IF OBJECT_ID('#TEMP_PHCSUBJECT') IS NOT NULL + DROP TABLE #TEMP_PHCSUBJECT; + + IF OBJECT_ID('#TEMP_PHCINFO') IS NOT NULL + DROP TABLE #TEMP_PHCINFO; + + IF OBJECT_ID('#TEMP_SUMMARYUID') IS NOT NULL + DROP TABLE #TEMP_SUMMARYUID; + + IF OBJECT_ID('#TEMP_CASECNT') IS NOT NULL + DROP TABLE #TEMP_CASECNT; + IF OBJECT_ID('#TEMP_SAS_LATEST_NOT') IS NOT NULL + DROP TABLE #TEMP_SAS_LATEST_NOT; + + IF OBJECT_ID('#TEMP_SAS_NOTIFICATION') IS NOT NULL + DROP TABLE #TEMP_SAS_NOTIFICATION; + + IF OBJECT_ID('#TEMP_CASECNT') IS NOT NULL + DROP TABLE #TEMP_CASECNT; + + IF OBJECT_ID('#TEMP_MIN_MAX_NOTIFICATION') IS NOT NULL + DROP TABLE #TEMP_MIN_MAX_NOTIFICATION; + + IF OBJECT_ID('#TEMP_PHCFACT') IS NOT NULL + DROP TABLE #TEMP_PHCFACT; + + IF OBJECT_ID('#TEMP_SUB_CASE_NOTIF') IS NOT NULL + DROP TABLE #TEMP_SUB_CASE_NOTIF; + + IF OBJECT_ID('#TEMP_CONFIRM') IS NOT NULL + DROP TABLE #TEMP_CONFIRM; + + IF OBJECT_ID('#TEMP_PHCREPORTER') IS NOT NULL + DROP TABLE #TEMP_PHCREPORTER; + + IF OBJECT_ID('#TEMP_ENTITY') IS NOT NULL + DROP TABLE #TEMP_ENTITY; + + IF OBJECT_ID('#TEMP_CASE_ENTITY') IS NOT NULL + DROP TABLE #TEMP_CASE_ENTITY; + + IF OBJECT_ID('#TEMP_PHCPERSONRACE') IS NOT NULL + DROP TABLE #TEMP_PHCPERSONRACE; + + IF OBJECT_ID('#TEMP_PHCPERSONRACE_CONCAT') IS NOT NULL + DROP TABLE #TEMP_PHCPERSONRACE_CONCAT; +*/ +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'STEP-AVOIDED' + ,@Proc_Step_no + ,@Proc_Step_Name + ,0 + ); + +COMMIT TRANSACTION; + +BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Updating PublicHealthCaseFact'; + +INSERT INTO NBS_ODSE.DBO.PUBLICHEALTHCASEFACT ( + PUBLIC_HEALTH_CASE_UID + ,ADULTS_IN_HOUSE_NBR + ,HSPTL_ADMISSION_DT + ,HSPTL_DISCHARGE_DT + ,AGE_CATEGORY_CD + ,AGE_REPORTED_TIME + ,AGE_REPORTED_UNIT_CD + ,AGE_REPORTED + ,AWARENESS_CD + ,AWARENESS_DESC_TXT + ,BIRTH_GENDER_CD + ,BIRTH_ORDER_NBR + ,BIRTH_TIME + ,BIRTH_TIME_CALC + , + --,BIRTH_TIME_STD + CASE_CLASS_CD + ,CASE_TYPE_CD + ,CD_SYSTEM_CD + ,CD_SYSTEM_DESC_TXT + ,CENSUS_BLOCK_CD + ,CENSUS_MINOR_CIVIL_DIVISION_CD + ,CENSUS_TRACK_CD + , + --,CNTY_CODE_DESC_TXT + CHILDREN_IN_HOUSE_NBR + ,CITY_CD + ,CITY_DESC_TXT + ,CONFIDENTIALITY_CD + ,CONFIDENTIALITY_DESC_TXT + ,CONFIRMATION_METHOD_CD + ,CONFIRMATION_METHOD_TIME + ,COUNTY + ,CNTRY_CD + ,CNTY_CD + ,CURR_SEX_CD + ,DECEASED_IND_CD + ,DECEASED_TIME + ,DETECTION_METHOD_CD + ,DETECTION_METHOD_DESC_TXT + ,DIAGNOSIS_DATE + ,DISEASE_IMPORTED_CD + ,DISEASE_IMPORTED_DESC_TXT + ,EDUCATION_LEVEL_CD + ,ELP_CLASS_CD + ,ELP_FROM_TIME + ,ELP_TO_TIME + ,ETHNIC_GROUP_IND + ,ETHNIC_GROUP_IND_DESC + ,EVENT_DATE + ,EVENT_TYPE + ,EDUCATION_LEVEL_DESC_TXT + ,FIRSTNOTIFICATIONSENDDATE + ,FIRSTNOTIFICATIONDATE + ,FIRSTNOTIFICATIONSTATUS + ,FIRSTNOTIFICATIONSUBMITTEDBY + , + --,GEOLATITUDE + --,GEOLONGITUDE + GROUP_CASE_CNT + ,INVESTIGATION_STATUS_CD + ,INVESTIGATORASSIGNEDDATE + ,INVESTIGATORNAME + ,INVESTIGATORPHONE + ,JURISDICTION_CD + ,LASTNOTIFICATIONDATE + ,LASTNOTIFICATIONSENDDATE + ,LASTNOTIFICATIONSUBMITTEDBY + ,MARITAL_STATUS_CD + ,MARITAL_STATUS_DESC_TXT + , + --,MART_RECORD_CREATION_DATE + MART_RECORD_CREATION_TIME + ,MMWR_WEEK + ,MMWR_YEAR + ,MSA_CONGRESS_DISTRICT_CD + ,MULTIPLE_BIRTH_IND + ,NOTIFCREATEDCOUNT + ,NOTIFICATIONDATE + ,NOTIFSENTCOUNT + ,OCCUPATION_CD + ,ONSETDATE + ,ORGANIZATIONNAME + ,OUTCOME_CD + ,OUTBREAK_FROM_TIME + ,OUTBREAK_IND + ,OUTBREAK_NAME + ,OUTBREAK_TO_TIME + ,PAR_TYPE_CD + ,PAT_AGE_AT_ONSET + ,PAT_AGE_AT_ONSET_UNIT_CD + ,POSTAL_LOCATOR_UID + ,PERSON_CD + ,PERSON_CODE_DESC + ,PERSON_UID + ,PHC_ADD_TIME + ,PHC_CODE + ,PHC_CODE_DESC + ,PHC_CODE_SHORT_DESC + ,PRIM_LANG_CD + ,PRIM_LANG_DESC_TXT + ,PROG_AREA_CD + ,PROVIDERPHONE + ,PROVIDERNAME + ,PST_RECORD_STATUS_TIME + ,PST_RECORD_STATUS_CD + ,RACE_CONCATENATED_TXT + ,RACE_CONCATENATED_DESC_TXT + ,REGION_DISTRICT_CD + ,RECORD_STATUS_CD + ,REPORTERNAME + ,REPORTERPHONE + ,RPT_CNTY_CD + ,RPT_FORM_CMPLT_TIME + ,RPT_SOURCE_CD + ,RPT_SOURCE_DESC_TXT + ,RPT_TO_COUNTY_TIME + ,RPT_TO_STATE_TIME + ,SHARED_IND + ,STATE + ,STATE_CD + , + --,STATE_CODE_SHORT_DESC_TXT + STATUS_CD + ,STREET_ADDR1 + ,STREET_ADDR2 + ,ELP_USE_CD + ,ZIP_CD + ,PATIENTNAME + ,JURISDICTION + ,INVESTIGATIONSTARTDATE + ,PROGRAM_JURISDICTION_OID + ,REPORT_DATE + ,PERSON_PARENT_UID + ,PERSON_LOCAL_ID + ,SUB_ADDR_AS_OF_DATE + ,STATE_CASE_ID + ,LOCAL_ID + ,AGE_REPORTED_UNIT_DESC_TXT + ,BIRTH_GENDER_DESC_TXT + ,CASE_CLASS_DESC_TXT + ,CNTRY_DESC_TXT + ,CURR_SEX_DESC_TXT + ,INVESTIGATION_STATUS_DESC_TXT + ,OCCUPATION_DESC_TXT + ,OUTCOME_DESC_TXT + ,PAT_AGE_AT_ONSET_UNIT_DESC_TXT + ,PROG_AREA_DESC_TXT + ,RPT_CNTY_DESC_TXT + ,OUTBREAK_NAME_DESC + ,CONFIRMATION_METHOD_DESC_TXT + ,LASTUPDATE + ,PHCTXT + ,NOTITXT + ,NOTIFICATION_LOCAL_ID + ,NOTIFCURRENTSTATE + ,HOSPITALIZED_IND +) ( + SELECT PUBLIC_HEALTH_CASE_UID + ,ADULTS_IN_HOUSE_NBR + ,HSPTL_ADMISSION_DT + ,HSPTL_DISCHARGE_DT + ,AGE_CATEGORY_CD + ,AGE_REPORTED_TIME + ,AGE_REPORTED_UNIT_CD + ,CONVERT(NUMERIC, substring(RTRIM(LTRIM(AGE_REPORTED)), 1, 3)) + ,AWARENESS_CD + ,AWARENESS_DESC_TXT + ,BIRTH_GENDER_CD + ,BIRTH_ORDER_NBR + ,BIRTH_TIME + ,BIRTH_TIME_CALC + , + --,BIRTH_TIME_STD + CASE_CLASS_CD + ,CASE_TYPE_CD + ,CD_SYSTEM_CD + ,CD_SYSTEM_DESC_TXT + ,CENSUS_BLOCK_CD + ,CENSUS_MINOR_CIVIL_DIVISION_CD + ,CENSUS_TRACK_CD + , + --,CNTY_CODE_DESC_TXT + CHILDREN_IN_HOUSE_NBR + ,CITY_CD + ,CITY_DESC_TXT + ,CONFIDENTIALITY_CD + ,CONFIDENTIALITY_DESC_TXT + ,substring(RTRIM(LTRIM(CONFIRMATION_METHOD_CD)), 1, 300) + ,CONFIRMATION_METHOD_TIME + ,COUNTY + ,CNTRY_CD + ,CNTY_CD + ,CURR_SEX_CD + ,DECEASED_IND_CD + ,DECEASED_TIME + ,DETECTION_METHOD_CD + ,DETECTION_METHOD_DESC_TXT + ,DIAGNOSIS_DATE + ,DISEASE_IMPORTED_CD + ,DISEASE_IMPORTED_DESC_TXT + ,EDUCATION_LEVEL_CD + ,ELP_CLASS_CD + ,ELP_FROM_TIME + ,ELP_TO_TIME + ,ETHNIC_GROUP_IND + ,RTRIM(LTRIM(substring(ETHNIC_GROUP_IND_DESC, 1, 50))) + ,EVENT_DATE + ,substring(EVENT_TYPE, 1, 10) + ,EDUCATION_LEVEL_DESC_TXT + ,FIRSTNOTIFICATIONSENDDATE + ,FIRSTNOTIFICATIONDATE + ,FIRSTNOTIFICATIONSTATUS + ,FIRSTNOTIFICATIONSUBMITTEDBY + , + --,GEOLATITUDE + --,GEOLONGITUDE + GROUP_CASE_CNT + ,INVESTIGATION_STATUS_CD + ,INVESTIGATORASSIGNEDDATE + ,INVESTIGATORNAME + ,INVESTIGATORPHONE + ,JURISDICTION_CD + ,LASTNOTIFICATIONDATE + ,LASTNOTIFICATIONSENDDATE + ,LASTNOTIFICATIONSUBMITTEDBY + ,MARITAL_STATUS_CD + ,MARITAL_STATUS_DESC_TXT + , + --,MART_RECORD_CREATION_DATE + MART_RECORD_CREATION_TIME + ,MMWR_WEEK + ,MMWR_YEAR + ,MSA_CONGRESS_DISTRICT_CD + ,MULTIPLE_BIRTH_IND + ,NOTIFCREATEDCOUNT + ,NOTIFICATIONDATE + ,NOTIFSENTCOUNT + ,OCCUPATION_CD + ,ONSETDATE + ,ORGANIZATIONNAME + ,OUTCOME_CD + ,OUTBREAK_FROM_TIME + ,OUTBREAK_IND + ,OUTBREAK_NAME + ,OUTBREAK_TO_TIME + ,PAR_TYPE_CD + ,PAT_AGE_AT_ONSET + ,PAT_AGE_AT_ONSET_UNIT_CD + ,POSTAL_LOCATOR_UID + ,PERSON_CD + ,PERSON_CODE_DESC + ,PERSON_UID + ,PHC_ADD_TIME + ,PHC_CODE + ,PHC_CODE_DESC + ,substring(PHC_CODE_SHORT_DESC, 1, 50) + ,PRIM_LANG_CD + ,PRIM_LANG_DESC_TXT + ,PROG_AREA_CD + ,PROVIDERPHONE + ,PROVIDERNAME + ,PST_RECORD_STATUS_TIME + ,PST_RECORD_STATUS_CD + ,substring(RTRIM(LTRIM(RACE_CONCATENATED_TXT)), 1, 100) + ,substring(RTRIM(LTRIM(RACE_CONCATENATED_DESC_TXT)), 1, 500) + ,REGION_DISTRICT_CD + ,RECORD_STATUS_CD + ,REPORTERNAME + ,REPORTERPHONE + ,RPT_CNTY_CD + ,RPT_FORM_CMPLT_TIME + ,RPT_SOURCE_CD + ,RPT_SOURCE_DESC_TXT + ,RPT_TO_COUNTY_TIME + ,RPT_TO_STATE_TIME + ,SHARED_IND + ,STATE + ,STATE_CD + , + --,STATE_CODE_SHORT_DESC_TXT + STATUS_CD + ,STREET_ADDR1 + ,STREET_ADDR2 + ,ELP_USE_CD + ,ZIP_CD + ,RTRIM(LTRIM(PATIENTNAME)) + ,substring(JURISDICTION, 1, 50) + ,INVESTIGATIONSTARTDATE + ,PROGRAM_JURISDICTION_OID + ,REPORT_DATE + ,PERSON_PARENT_UID + ,PERSON_LOCAL_ID + ,SUB_ADDR_AS_OF_DATE + ,STATE_CASE_ID + ,LOCAL_ID + ,AGE_REPORTED_UNIT_DESC_TXT + ,BIRTH_GENDER_DESC_TXT + ,CASE_CLASS_DESC_TXT + ,CNTRY_DESC_TXT + ,CURR_SEX_DESC_TXT + ,INVESTIGATION_STATUS_DESC_TXT + ,OCCUPATION_DESC_TXT + ,OUTCOME_DESC_TXT + ,PAT_AGE_AT_ONSET_UNIT_DESC_TXT + ,PROG_AREA_DESC_TXT + ,RPT_CNTY_DESC_TXT + ,OUTBREAK_NAME_DESC + ,CONFIRMATION_METHOD_DESC_TXT + ,LASTUPDATE + ,PHCTXT + ,NOTITXT + ,NOTIFICATION_LOCAL_ID + ,NOTIFCURRENTSTATE + ,HOSPITALIZED_IND + FROM #TEMP_PHC_FACT WITH (NOLOCK) +); + +SELECT @ROWCOUNT_NO = @@ROWCOUNT; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + +COMMIT TRANSACTION; + +BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Updating SubjectRaceInfo'; + +INSERT INTO NBS_ODSE.DBO.SUBJECTRACEINFO ( + PUBLIC_HEALTH_CASE_UID + ,MORBREPORT_UID + ,RACE_CD + ,RACE_CATEGORY_CD + ,RACE_DESC_TXT +) ( + SELECT PUBLIC_HEALTH_CASE_UID + ,0 AS MORBREPORT_UID + ,RACE_CD + ,RACE_CATEGORY_CD + ,RACE_DESC_TXT FROM NBS_ODSE.DBO.PERSON_RACE AS PR WITH (NOLOCK) + ,#TEMP_PHC_FACT AS PF WITH (NOLOCK) WHERE PR.PERSON_UID = PF.PERSON_UID +); +SELECT @ROWCOUNT_NO = @@ROWCOUNT; +IF OBJECT_ID('#TEMP_PHC_FACT') IS NOT NULL +DROP TABLE #TEMP_PHC_FACT; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@Proc_Step_no + ,@Proc_Step_Name + ,@ROWCOUNT_NO + ); + +COMMIT TRANSACTION; + +BEGIN TRANSACTION; + + SET @Proc_Step_no = 999; + SET @Proc_Step_Name = 'SP_COMPLETE'; + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] +) +VALUES ( + @batch_id + ,'PCHMartETL' + ,'PCHMartETL' + ,'COMPLETE' + ,@Proc_Step_no + ,@Proc_Step_name + ,@RowCount_no + ); + +COMMIT TRANSACTION; + +-- EXEC [rdb_modern].[dbo].[sp_nbs_batch_complete] @type_code; + +Select 'SUCCESS' +END TRY + +BEGIN CATCH +IF @@TRANCOUNT > 0 + ROLLBACK TRANSACTION; + + DECLARE @ErrorNumber INT = ERROR_NUMBER(); + DECLARE @ErrorLine INT = ERROR_LINE(); + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + DECLARE @ErrorSeverity INT = ERROR_SEVERITY(); + DECLARE @ErrorState INT = ERROR_STATE(); + +INSERT INTO [rdb_modern].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[Error_Description] + ,[row_count] +) +VALUES ( + @batch_id + ,'PCHMartETL' + ,'PCHMartETL' + ,'ERROR' + ,@Proc_Step_no + ,'ERROR - ' + @Proc_Step_name + ,'Step -' + CAST(@Proc_Step_no AS VARCHAR(3)) + ' -' + CAST(@ErrorMessage AS VARCHAR(500)) + ,0 + ); + +RETURN 'ERROR - ' + @ErrorMessage; +END CATCH +END; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/011-sp_ldf_provider_event-001.sql b/liquibase-service/src/main/resources/db/odse/011-sp_ldf_provider_event-001.sql new file mode 100644 index 00000000..03c47dfb --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/011-sp_ldf_provider_event-001.sql @@ -0,0 +1,68 @@ +CREATE OR ALTER PROCEDURE dbo.sp_ldf_provider_event @ldf_uid_list nvarchar(max), @bus_obj_uid_list nvarchar(max) +AS +Begin + + BEGIN TRY + + /*select * from dbo.v_ldf_provider ldf + WHERE ldf.ldf_uid in (SELECT value FROM STRING_SPLIT(@ldf_uid_list, ',')) + and ldf.business_object_uid in (SELECT value FROM STRING_SPLIT(@bus_obj_uid_list, ',')) + Order By ldf.business_object_uid, ldf.display_order_nbr;*/ +select distinct m.ldf_uid, +m.active_ind, +m.add_time ldf_meta_data_add_time, +m.admin_comment, +m.business_object_nm ldf_meta_data_business_object_nm, +m.category_type, +m.cdc_national_id, +m.class_cd, +m.code_set_nm, +m.condition_cd, +m.condition_desc_txt, +m.data_type, +m.deployment_cd, +m.display_order_nbr, +m.field_size, +m.label_txt, +m.ldf_page_id, +m.required_ind, +m.state_cd, +m.validation_txt, +m.validation_jscript_txt, +p.record_status_time, +dbo.fn_get_record_status(p.record_status_cd) as record_status_cd, +m.custom_subform_metadata_uid, +m.html_tag, +m.import_version_nbr, +m.nnd_ind, +m.ldf_oid, +m.version_ctrl_nbr ldf_meta_data_version_ctrl_num, +m.NBS_QUESTION_UID, d.business_object_uid, +d.add_time ldf_data_field_add_time, +d.business_object_nm ldf_field_data_business_object_nm, +d.last_chg_time ldf_data_last_chg_time, +d.ldf_value, +d.version_ctrl_nbr ldf_field_data_version_ctrl_num , cvg.code_desc_txt as LDF_COLUMN_TYPE + from nbs_odse.dbo.State_Defined_Field_MetaData m + join nbs_odse.dbo.State_Defined_Field_Data d on m.ldf_uid = d.ldf_uid and d.business_object_nm = 'PRV' + and d.business_object_uid in (SELECT value FROM STRING_SPLIT(@bus_obj_uid_list, ',')) + and d.ldf_uid in (SELECT value FROM STRING_SPLIT(@ldf_uid_list, ',')) + join nbs_srte.dbo.code_value_general cvg on cvg.code = m.data_type and cvg.code_set_nm = 'LDF_DATA_TYPE' + join nbs_odse.dbo.Person p on d.business_object_uid=p.person_uid and p.person_uid<>p.person_parent_uid + and p.cd='PRV' + + Order By business_object_uid, display_order_nbr + end try + + BEGIN CATCH + + + IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + + return @ErrorMessage; + + END CATCH + +end; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/012-sp_ldf_organization_event-001.sql b/liquibase-service/src/main/resources/db/odse/012-sp_ldf_organization_event-001.sql new file mode 100644 index 00000000..7f756a1e --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/012-sp_ldf_organization_event-001.sql @@ -0,0 +1,70 @@ +CREATE OR ALTER PROCEDURE dbo.sp_ldf_organization_event @ldf_uid_list nvarchar(max), @bus_obj_uid_list nvarchar(max) +AS +Begin + + BEGIN TRY + /* + select * from dbo.v_ldf_organization ldf + WHERE ldf.ldf_uid in (SELECT value FROM STRING_SPLIT(@ldf_uid_list, ',')) + and ldf.business_object_uid in (SELECT value FROM STRING_SPLIT(@bus_obj_uid_list, ',')) + Order By ldf.business_object_uid, ldf.display_order_nbr;*/ + + + select distinct m.ldf_uid, +m.active_ind, +m.add_time ldf_meta_data_add_time, +m.admin_comment, +m.business_object_nm ldf_meta_data_business_object_nm, +m.category_type, +m.cdc_national_id, +m.class_cd, +m.code_set_nm, +m.condition_cd, +m.condition_desc_txt, +m.data_type, +m.deployment_cd, +m.display_order_nbr, +m.field_size, +m.label_txt, +m.ldf_page_id, +m.required_ind, +m.state_cd, +m.validation_txt, +m.validation_jscript_txt, +o.record_status_time, +dbo.fn_get_record_status(o.record_status_cd) as record_status_cd, +m.custom_subform_metadata_uid, +m.html_tag, +m.import_version_nbr, +m.nnd_ind, +m.ldf_oid, +m.version_ctrl_nbr ldf_meta_data_version_ctrl_num, +m.NBS_QUESTION_UID, d.business_object_uid, +d.add_time ldf_data_field_add_time, +d.business_object_nm ldf_field_data_business_object_nm, +d.last_chg_time ldf_data_last_chg_time, +d.ldf_value, +d.version_ctrl_nbr ldf_field_data_version_ctrl_num , cvg.code_desc_txt as LDF_COLUMN_TYPE + from nbs_odse.dbo.State_Defined_Field_MetaData m + join nbs_odse.dbo.State_Defined_Field_Data d on m.ldf_uid = d.ldf_uid and d.business_object_nm = 'ORG' + and d.business_object_uid in (SELECT value FROM STRING_SPLIT(@bus_obj_uid_list, ',')) + and d.ldf_uid in (SELECT value FROM STRING_SPLIT(@ldf_uid_list, ',')) + join nbs_srte.dbo.code_value_general cvg on cvg.code = m.data_type and cvg.code_set_nm = 'LDF_DATA_TYPE' + join nbs_odse.dbo.Organization o on d.business_object_uid=o.organization_uid + Order By business_object_uid, display_order_nbr + + + end try + + BEGIN CATCH + + + IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + + return @ErrorMessage; + + END CATCH + +end; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/013-sp_ldf_patient_event-001.sql b/liquibase-service/src/main/resources/db/odse/013-sp_ldf_patient_event-001.sql new file mode 100644 index 00000000..ef473525 --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/013-sp_ldf_patient_event-001.sql @@ -0,0 +1,69 @@ +CREATE OR ALTER PROCEDURE dbo.sp_ldf_patient_event @ldf_uid_list nvarchar(max), @bus_obj_uid_list nvarchar(max) +AS +Begin + + BEGIN TRY + + /*select * from dbo.v_ldf_patient ldf + WHERE ldf.ldf_uid in (SELECT value FROM STRING_SPLIT(@ldf_uid_list, ',')) + and ldf.business_object_uid in (SELECT value FROM STRING_SPLIT(@bus_obj_uid_list, ',')) + Order By ldf.business_object_uid, ldf.display_order_nbr;*/ + + select distinct m.ldf_uid, +m.active_ind, +m.add_time ldf_meta_data_add_time, +m.admin_comment, +m.business_object_nm ldf_meta_data_business_object_nm, +m.category_type, +m.cdc_national_id, +m.class_cd, +m.code_set_nm, +m.condition_cd, +m.condition_desc_txt, +m.data_type, +m.deployment_cd, +m.display_order_nbr, +m.field_size, +m.label_txt, +m.ldf_page_id, +m.required_ind, +m.state_cd, +m.validation_txt, +m.validation_jscript_txt, +p.record_status_time, +dbo.fn_get_record_status(p.record_status_cd) as record_status_cd, +m.custom_subform_metadata_uid, +m.html_tag, +m.import_version_nbr, +m.nnd_ind, +m.ldf_oid, +m.version_ctrl_nbr ldf_meta_data_version_ctrl_num, +m.NBS_QUESTION_UID, d.business_object_uid, +d.add_time ldf_data_field_add_time, +d.business_object_nm ldf_field_data_business_object_nm, +d.last_chg_time ldf_data_last_chg_time, +d.ldf_value, +d.version_ctrl_nbr ldf_field_data_version_ctrl_num , cvg.code_desc_txt as LDF_COLUMN_TYPE + from nbs_odse.dbo.State_Defined_Field_MetaData m + join nbs_odse.dbo.State_Defined_Field_Data d on m.ldf_uid = d.ldf_uid and d.business_object_nm = 'PAT' + and d.business_object_uid in (SELECT value FROM STRING_SPLIT(@bus_obj_uid_list, ',')) + and d.ldf_uid in (SELECT value FROM STRING_SPLIT(@ldf_uid_list, ',')) + join nbs_srte.dbo.code_value_general cvg on cvg.code = m.data_type and cvg.code_set_nm = 'LDF_DATA_TYPE' + join nbs_odse.dbo.Person p on d.business_object_uid=p.person_uid and p.person_uid<>p.person_parent_uid + and p.cd='PAT' + Order By business_object_uid, display_order_nbr + + end try + + BEGIN CATCH + + + IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + + return @ErrorMessage; + + END CATCH + +end; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/014-sp_ldf_observation_event-001.sql b/liquibase-service/src/main/resources/db/odse/014-sp_ldf_observation_event-001.sql new file mode 100644 index 00000000..41e35bb9 --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/014-sp_ldf_observation_event-001.sql @@ -0,0 +1,69 @@ +CREATE OR ALTER PROCEDURE dbo.sp_ldf_observation_event @ldf_uid_list nvarchar(max), @bus_obj_uid_list nvarchar(max) +AS +Begin + + BEGIN TRY + +/* select * from dbo.v_ldf_observation ldf + WHERE ldf.ldf_uid in (SELECT value FROM STRING_SPLIT(@ldf_uid_list, ',')) + and ldf.business_object_uid in (SELECT value FROM STRING_SPLIT(@bus_obj_uid_list, ',')) + Order By ldf.business_object_uid, ldf.display_order_nbr; +*/ + +select distinct m.ldf_uid, +m.active_ind, +m.add_time ldf_meta_data_add_time, +m.admin_comment, +m.business_object_nm ldf_meta_data_business_object_nm, +m.category_type, +m.cdc_national_id, +m.class_cd, +m.code_set_nm, +m.condition_cd, +m.condition_desc_txt, +m.data_type, +m.deployment_cd, +m.display_order_nbr, +m.field_size, +m.label_txt, +m.ldf_page_id, +m.required_ind, +m.state_cd, +m.validation_txt, +m.validation_jscript_txt, +o.record_status_time, +dbo.fn_get_record_status(o.record_status_cd) as record_status_cd, +m.custom_subform_metadata_uid, +m.html_tag, +m.import_version_nbr, +m.nnd_ind, +m.ldf_oid, +m.version_ctrl_nbr ldf_meta_data_version_ctrl_num, +m.NBS_QUESTION_UID, d.business_object_uid, +d.add_time ldf_data_field_add_time, +d.business_object_nm ldf_field_data_business_object_nm, +d.last_chg_time ldf_data_last_chg_time, +d.ldf_value, +d.version_ctrl_nbr ldf_field_data_version_ctrl_num , cvg.code_desc_txt as LDF_COLUMN_TYPE + from nbs_odse.dbo.State_Defined_Field_MetaData m + join nbs_odse.dbo.State_Defined_Field_Data d on m.ldf_uid = d.ldf_uid and d.business_object_nm = 'LAB' + and d.business_object_uid in (SELECT value FROM STRING_SPLIT(@bus_obj_uid_list, ',')) + and d.ldf_uid in (SELECT value FROM STRING_SPLIT(@ldf_uid_list, ',')) + join nbs_srte.dbo.code_value_general cvg on cvg.code = m.data_type and cvg.code_set_nm = 'LDF_DATA_TYPE' + join nbs_odse.dbo.Observation o on d.business_object_uid=o.observation_uid + + Order By business_object_uid, display_order_nbr + end try + + BEGIN CATCH + + + IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + + return @ErrorMessage; + + END CATCH + +end; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/015-sp_ldf_phc_event-001.sql b/liquibase-service/src/main/resources/db/odse/015-sp_ldf_phc_event-001.sql new file mode 100644 index 00000000..801c5088 --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/015-sp_ldf_phc_event-001.sql @@ -0,0 +1,71 @@ +CREATE OR ALTER PROCEDURE dbo.sp_ldf_phc_event @ldf_uid_list nvarchar(max), @bus_obj_uid_list nvarchar(max) +AS +Begin + + BEGIN TRY + /* + select * from dbo.v_ldf_phc ldf + WHERE ldf.ldf_uid in (SELECT value FROM STRING_SPLIT(@ldf_uid_list, ',')) + and ldf.business_object_uid in (SELECT value FROM STRING_SPLIT(@bus_obj_uid_list, ',')) + + Order By ldf.business_object_uid, ldf.display_order_nbr; +*/ + + select distinct m.ldf_uid, +m.active_ind, +m.add_time ldf_meta_data_add_time, +m.admin_comment, +m.business_object_nm ldf_meta_data_business_object_nm, +m.category_type, +m.cdc_national_id, +m.class_cd, +m.code_set_nm, +m.condition_cd, +m.condition_desc_txt, +m.data_type, +m.deployment_cd, +m.display_order_nbr, +m.field_size, +m.label_txt, +m.ldf_page_id, +m.required_ind, +m.state_cd, +m.validation_txt, +m.validation_jscript_txt, +p.record_status_time, +dbo.fn_get_record_status(p.record_status_cd) as record_status_cd, +m.custom_subform_metadata_uid, +m.html_tag, +m.import_version_nbr, +m.nnd_ind, +m.ldf_oid, +m.version_ctrl_nbr ldf_meta_data_version_ctrl_num, +m.NBS_QUESTION_UID, d.business_object_uid, +d.add_time ldf_data_field_add_time, +d.business_object_nm ldf_field_data_business_object_nm, +d.last_chg_time ldf_data_last_chg_time, +d.ldf_value, +d.version_ctrl_nbr ldf_field_data_version_ctrl_num , cvg.code_desc_txt as LDF_COLUMN_TYPE + from nbs_odse.dbo.State_Defined_Field_MetaData m + join nbs_odse.dbo.State_Defined_Field_Data d on m.ldf_uid = d.ldf_uid and d.business_object_nm = 'PHC' + and d.business_object_uid in (SELECT value FROM STRING_SPLIT(@bus_obj_uid_list, ',')) + and d.ldf_uid in (SELECT value FROM STRING_SPLIT(@ldf_uid_list, ',')) + join nbs_srte.dbo.code_value_general cvg on cvg.code = m.data_type and cvg.code_set_nm = 'LDF_DATA_TYPE' + join nbs_odse.dbo.public_health_case p on d.business_object_uid=p.public_health_case_uid + + Order By business_object_uid, display_order_nbr + + end try + + BEGIN CATCH + + + IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + + return @ErrorMessage; + + END CATCH + +end; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/016-sp_ldf_intervention_event-001.sql b/liquibase-service/src/main/resources/db/odse/016-sp_ldf_intervention_event-001.sql new file mode 100644 index 00000000..cbe9b7a9 --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/016-sp_ldf_intervention_event-001.sql @@ -0,0 +1,70 @@ +CREATE OR ALTER PROCEDURE dbo.sp_ldf_intervention_event @ldf_uid_list nvarchar(max), @bus_obj_uid_list nvarchar(max) +AS +Begin + +BEGIN TRY + + /*select * from dbo.v_ldf_intervention ldf + WHERE ldf.ldf_uid in (SELECT value FROM STRING_SPLIT(@ldf_uid_list, ',')) + and ldf.business_object_uid in (SELECT value FROM STRING_SPLIT(@bus_obj_uid_list, ',')) + Order By ldf.business_object_uid, ldf.display_order_nbr;*/ + + select distinct m.ldf_uid, +m.active_ind, +m.add_time ldf_meta_data_add_time, +m.admin_comment, +m.business_object_nm ldf_meta_data_business_object_nm, +m.category_type, +m.cdc_national_id, +m.class_cd, +m.code_set_nm, +m.condition_cd, +m.condition_desc_txt, +m.data_type, +m.deployment_cd, +m.display_order_nbr, +m.field_size, +m.label_txt, +m.ldf_page_id, +m.required_ind, +m.state_cd, +m.validation_txt, +m.validation_jscript_txt, +i.record_status_time, +dbo.fn_get_record_status(i.record_status_cd) as record_status_cd, +m.custom_subform_metadata_uid, +m.html_tag, +m.import_version_nbr, +m.nnd_ind, +m.ldf_oid, +m.version_ctrl_nbr ldf_meta_data_version_ctrl_num, +m.NBS_QUESTION_UID, d.business_object_uid, +d.add_time ldf_data_field_add_time, +d.business_object_nm ldf_field_data_business_object_nm, +d.last_chg_time ldf_data_last_chg_time, +d.ldf_value, +d.version_ctrl_nbr ldf_field_data_version_ctrl_num , cvg.code_desc_txt as LDF_COLUMN_TYPE + from nbs_odse.dbo.State_Defined_Field_MetaData m + join nbs_odse.dbo.State_Defined_Field_Data d on m.ldf_uid = d.ldf_uid and d.business_object_nm = 'VAC' + and d.business_object_uid in (SELECT value FROM STRING_SPLIT(@bus_obj_uid_list, ',')) + and d.ldf_uid in (SELECT value FROM STRING_SPLIT(@ldf_uid_list, ',')) + join nbs_srte.dbo.code_value_general cvg on cvg.code = m.data_type and cvg.code_set_nm = 'LDF_DATA_TYPE' + join nbs_odse.dbo.Intervention i on d.business_object_uid=i.intervention_uid + + Order By business_object_uid, display_order_nbr + + + end try + + BEGIN CATCH + + + IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + + return @ErrorMessage; + + END CATCH + +end; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/017-sp_ldf_data_event-001.sql b/liquibase-service/src/main/resources/db/odse/017-sp_ldf_data_event-001.sql new file mode 100644 index 00000000..cfeb03bb --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/017-sp_ldf_data_event-001.sql @@ -0,0 +1,22 @@ +CREATE OR ALTER PROCEDURE dbo.sp_ldf_data_event @bus_obj_nm varchar(20), @ldf_uid nvarchar(max), @bus_obj_uid_list nvarchar(max) +AS +begin + begin try + if @bus_obj_nm = 'PAT' exec dbo.sp_ldf_patient_event @ldf_uid, @bus_obj_uid_list + else if @bus_obj_nm = 'PRV' exec dbo.sp_ldf_provider_event @ldf_uid , @bus_obj_uid_list + else if @bus_obj_nm = 'ORG' exec dbo.sp_ldf_organization_event @ldf_uid, @bus_obj_uid_list + else if @bus_obj_nm = 'LAB' exec dbo.sp_ldf_observation_event @ldf_uid, @bus_obj_uid_list + else if @bus_obj_nm = 'PHC' exec dbo.sp_ldf_phc_event @ldf_uid, @bus_obj_uid_list + else if @bus_obj_nm = 'VAC' exec dbo.sp_ldf_intervention_event @ldf_uid, @bus_obj_uid_list + end try + + BEGIN CATCH + + IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + + return 'ERROR : ' + @ErrorMessage; + + END CATCH +end diff --git a/liquibase-service/src/main/resources/db/odse/018-sp_public_health_case_fact_datamart_event-001.sql b/liquibase-service/src/main/resources/db/odse/018-sp_public_health_case_fact_datamart_event-001.sql new file mode 100644 index 00000000..8f2e183e --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/018-sp_public_health_case_fact_datamart_event-001.sql @@ -0,0 +1,2745 @@ +CREATE OR ALTER PROCEDURE dbo.sp_public_health_case_fact_datamart_event @phc_id_list nvarchar(max) +AS +BEGIN + DECLARE @RowCount_no INT; + DECLARE @Proc_Step_no FLOAT = 0; + DECLARE @Proc_Step_Name VARCHAR(200) = ''; + DECLARE @batch_id BIGINT; + DECLARE @batch_start_time DATETIME2(7) = NULL; + DECLARE @batch_end_time DATETIME2(7) = NULL; + DECLARE @type_code VARCHAR(200) = 'PHCMartETL'; + DECLARE @type_description VARCHAR(200) = 'PHCMartETL Process'; + DECLARE @return_value INT = 0; + + BEGIN TRY + EXEC @return_value = [rdb].[dbo].[sp_nbs_batch_start] @type_code + ,@type_description; + + -- SELECT 'Return Value TEST ' = @return_value; + + SELECT @batch_id = batch_id + ,@batch_start_time = batch_start_dttm --, + -- @batch_end_time = batch_end_dttm + FROM [rdb].[dbo].[job_batch_log] + WHERE type_code = 'PHCMartETL' + AND status_type = 'start' + + SET @batch_end_time = getdate(); + + PRINT 'starttime' + LEFT(CONVERT(VARCHAR, @batch_start_time, 120), 10) + PRINT 'endtime' + LEFT(CONVERT(VARCHAR, @batch_end_time, 120), 10) + PRINT CAST(@batch_id AS VARCHAR(max)) + + BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_INV_FORM_CODE_DATA'; + + IF OBJECT_ID('#TEMP_INV_FORM_CODE_DATA') IS NOT NULL + DROP TABLE #TEMP_INV_FORM_CODE_DATA; + + -- The below SQL is now a view - nbs_odse.dbo.v_inv_form_code_data + /*SELECT DISTINCT DATA_LOCATION + ,CODESET.CODE_SET_GROUP_ID + ,CODESET.CODE_SET_NM + ,NBS_UI_METADATA.INVESTIGATION_FORM_CD + ,CODE_VALUE_GENERAL.CODE + ,CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + INTO #TEMP_INV_FORM_CODE_DATA + FROM NBS_ODSE.DBO.NBS_UI_METADATA WITH (NOLOCK) + INNER JOIN NBS_SRTE.DBO.CODESET WITH (NOLOCK) ON NBS_UI_METADATA.CODE_SET_GROUP_ID = CODESET.CODE_SET_GROUP_ID + INNER JOIN NBS_SRTE.DBO.CONDITION_CODE WITH (NOLOCK) ON CONDITION_CODE.INVESTIGATION_FORM_CD = NBS_UI_METADATA.INVESTIGATION_FORM_CD + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON CODE_VALUE_GENERAL.CODE_SET_NM = CODESET.CODE_SET_NM + WHERE question_identifier in ( + 'DEM218', 'DEM114', 'INV163', 'INV161', 'DEM126', 'DEM113', 'DEM127', 'INV159', 'INV152', 'DEM155', 'NOT112', 'INV109', 'INV107', 'DEM140', 'DEM116_B', 'DEM139', 'INV145', 'INV150', 'INV151', 'NPP063', 'INV144', 'DEM142', 'INV108', 'DEM152', 'DEM238', 'INV187', 'INV112', 'INV174', 'INV107', 'INV2002') + AND CODESET.CODE_SET_GROUP_ID IS NOT NULL + ORDER BY NBS_UI_METADATA.DATA_LOCATION */ + + -- use the view and order by data_location + Select DATA_LOCATION + ,CODE_SET_GROUP_ID + ,CODE_SET_NM + ,INVESTIGATION_FORM_CD + ,CODE + ,CODE_SHORT_DESC_TXT + INTO #TEMP_INV_FORM_CODE_DATA + from nbs_odse.dbo.v_inv_form_code_data + ORDER BY DATA_LOCATION; + + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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 DBO.TEMP_UPDATE_NEW_PATIENT'; + + + IF OBJECT_ID('#TEMP_UPDATE_NEW_PATIENT') IS NOT NULL + DROP TABLE #TEMP_UPDATE_NEW_PATIENT; + + SELECT Public_health_case.PUBLIC_HEALTH_CASE_UID + ,PER.PERSON_UID + ,PER.PERSON_PARENT_UID + ,PER.LOCAL_ID AS PERSON_LOCAL_ID + ,PER.AGE_CATEGORY_CD + ,PER.AGE_REPORTED + ,PER.AGE_REPORTED_TIME + ,PER.AGE_REPORTED_UNIT_CD + ,PER.BIRTH_TIME + ,PER.BIRTH_TIME_CALC + ,PER.CD AS PERSON_CD + ,PER.CD_DESC_TXT AS PERSON_CODE_DESC + ,PER.CURR_SEX_CD + ,PER.DECEASED_IND_CD + ,PER.DECEASED_TIME + ,PER.ETHNIC_GROUP_IND + ,PER.MARITAL_STATUS_CD + ,MPR.MULTIPLE_BIRTH_IND + ,MPR.OCCUPATION_CD + ,MPR.PRIM_LANG_CD + ,MPR.ADULTS_IN_HOUSE_NBR + ,MPR.BIRTH_GENDER_CD + ,MPR.BIRTH_ORDER_NBR + ,MPR.CHILDREN_IN_HOUSE_NBR + ,MPR.EDUCATION_LEVEL_CD + ,MPR.LAST_CHG_TIME AS MPR_LAST_CHG_TIME + ,NOTIFICATION.LAST_CHG_TIME AS NOTIF_LAST_CHG_TIME + INTO #TEMP_UPDATE_NEW_PATIENT + FROM NBS_ODSE.DBO.PERSON PER WITH (NOLOCK) + INNER JOIN NBS_ODSE.DBO.PARTICIPATION PAR WITH (NOLOCK) ON PER.PERSON_UID = PAR.SUBJECT_ENTITY_UID + INNER JOIN NBS_ODSE.DBO.Public_health_case Public_health_case WITH (NOLOCK) ON PAR.act_uid = Public_health_case.public_health_case_uid + INNER JOIN NBS_ODSE.DBO.PERSON MPR WITH (NOLOCK) ON PER.PERSON_PARENT_UID = MPR.PERSON_UID + LEFT JOIN NBS_ODSE.DBO.ACT_RELATIONSHIP WITH (NOLOCK) ON ACT_RELATIONSHIP.TARGET_ACT_UID=PUBLIC_HEALTH_CASE.PUBLIC_HEALTH_CASE_UID + LEFT JOIN NBS_ODSE.DBO.NOTIFICATION WITH (NOLOCK) ON NOTIFICATION.NOTIFICATION_UID=ACT_RELATIONSHIP.SOURCE_ACT_UID + AND NOTIFICATION.CD='NOTF' + WHERE PAR.TYPE_CD = 'SUBJOFPHC' + and Public_health_case.public_health_case_uid in (select value from string_split(@phc_id_list, ',')) + /* AND ( + (PER.LAST_CHG_TIME >= @batch_start_time + AND PER.LAST_CHG_TIME< @batch_end_time) + OR (MPR.LAST_CHG_TIME >= @batch_start_time + AND MPR.LAST_CHG_TIME< @batch_end_time) + OR (NOTIFICATION.LAST_CHG_TIME >= @batch_start_time + AND NOTIFICATION.LAST_CHG_TIME< @batch_end_time) + ) + */ + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + COMMIT TRANSACTION; + -------------------PHCSUBJECT + BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_PHCPATIENTINFO'; + + IF OBJECT_ID('#TEMP_PHCPATIENTINFO') IS NOT NULL + DROP TABLE #TEMP_PHCPATIENTINFO; + + SELECT + PER.* + ,(COALESCE(LTRIM(RTRIM(PNM.LAST_NM)), '') + ', ' + COALESCE(LTRIM(RTRIM(PNM.FIRST_NM)), '')) AS PATIENTNAME + ,case when LTRIM(RTRIM(PST.STATE_CD)) = '' then null else LTRIM(RTRIM(PST.STATE_CD)) end STATE_CD + ,SRT1.code_short_desc_txt AS STATE + ,case when LTRIM(RTRIM(PST.CNTY_CD)) = '' then null else LTRIM(RTRIM(PST.CNTY_CD)) end CNTY_CD + ,SRT3.code_desc_txt AS COUNTY + ,PAR.AWARENESS_CD + ,PAR.AWARENESS_DESC_TXT + ,PAR.TYPE_CD AS PAR_TYPE_CD + ,CVG.CODE_SHORT_DESC_TXT AS EDUCATION_LEVEL_DESC_TXT + ,RTRIM(LTRIM(A.CODE_SHORT_DESC_TXT)) AS ETHNIC_GROUP_IND_DESC + ,CVG2.CODE_SHORT_DESC_TXT AS MARITAL_STATUS_DESC_TXT + ,LNG.CODE_SHORT_DESC_TXT AS PRIM_LANG_DESC_TXT + ,ELP.FROM_TIME AS ELP_FROM_TIME + ,ELP.TO_TIME AS ELP_TO_TIME + ,ELP.CLASS_CD AS ELP_CLASS_CD + ,ELP.USE_CD AS ELP_USE_CD + ,ELP.AS_OF_DATE AS SUB_ADDR_AS_OF_DATE + ,PST.POSTAL_LOCATOR_UID + ,PST.CENSUS_BLOCK_CD + ,PST.CENSUS_MINOR_CIVIL_DIVISION_CD + ,PST.CENSUS_TRACK_CD + ,PST.CITY_CD + ,case when LTRIM(RTRIM(PST.CITY_DESC_TXT)) = '' then null else LTRIM(RTRIM(PST.CITY_DESC_TXT)) end CITY_DESC_TXT + ,case when LTRIM(RTRIM(PST.CNTRY_CD)) = '' then null else LTRIM(RTRIM(PST.CNTRY_CD)) end CNTRY_CD + ,CNTRY_DESC.CODE_SHORT_DESC_TXT AS CNTRY_DESC_TXT + ,PST.REGION_DISTRICT_CD + ,PST.MSA_CONGRESS_DISTRICT_CD + ,case when LTRIM(RTRIM(PST.ZIP_CD)) = '' then null else LTRIM(RTRIM(PST.ZIP_CD)) end ZIP_CD + ,PST.RECORD_STATUS_TIME AS PST_RECORD_STATUS_TIME + ,PST.RECORD_STATUS_CD AS PST_RECORD_STATUS_CD + ,case when LTRIM(RTRIM(PST.STREET_ADDR1)) = '' then null else LTRIM(RTRIM(PST.STREET_ADDR1)) end STREET_ADDR1 + ,case when LTRIM(RTRIM(PST.STREET_ADDR2)) = '' then null else LTRIM(RTRIM(PST.STREET_ADDR2)) end STREET_ADDR2 + ,PAR.ACT_UID + ,CONDITION_CODE.INVESTIGATION_FORM_CD + ,AGE_UNIT.CODE_SHORT_DESC_TXT AS AGE_REPORTED_UNIT_DESC_TXT + ,BIRTH_GENDER.CODE_SHORT_DESC_TXT AS BIRTH_GENDER_DESC_TXT + ,CURR_SEX.CODE_SHORT_DESC_TXT AS CURR_SEX_DESC_TXT + ,OCCUPATION.CODE_SHORT_DESC_TXT AS OCCUPATION_DESC_TXT + ,RN = ROW_NUMBER() OVER ( + PARTITION BY PER.PERSON_UID ORDER BY PER.PERSON_UID + ) + , CASE WHEN (CONDITION_CODE.investigation_form_cd NOT LIKE 'PG_%' or CONDITION_CODE.investigation_form_cd is null) then 1 else 0 end as FLAG1 ---added this as part of optimization (very imp) + INTO #TEMP_PHCPATIENTINFO + FROM #TEMP_UPDATE_NEW_PATIENT PER WITH (NOLOCK) + INNER JOIN NBS_ODSE.DBO.PARTICIPATION PAR WITH (NOLOCK) ON PER.PERSON_UID = PAR.SUBJECT_ENTITY_UID + INNER JOIN NBS_ODSE.DBO.Public_health_case Public_health_case WITH (NOLOCK) ON PAR.act_uid = Public_health_case.public_health_case_uid + INNER JOIN NBS_srte.DBO.Condition_code Condition_code WITH (NOLOCK) ON Condition_code.condition_cd = Public_health_case.cd + LEFT OUTER JOIN NBS_ODSE.DBO.ENTITY_LOCATOR_PARTICIPATION ELP WITH (NOLOCK) ON ELP.ENTITY_UID = PER.PERSON_UID + AND ELP.USE_CD = 'H' + AND ELP.CLASS_CD = 'PST' + AND ELP.RECORD_STATUS_CD = 'ACTIVE' + LEFT OUTER JOIN NBS_ODSE.DBO.POSTAL_LOCATOR PST WITH (NOLOCK) ON ELP.LOCATOR_UID = PST.POSTAL_LOCATOR_UID + AND PST.RECORD_STATUS_CD = 'ACTIVE' + LEFT OUTER JOIN NBS_SRTE.DBO.Code_value_general CNTRY_DESC ON CNTRY_DESC.code=PST.cntry_cd + AND CNTRY_DESC.CODE=PST.CNTRY_CD + AND CNTRY_DESC.CODE_SET_NM='PSL_CNTRY' + LEFT OUTER JOIN NBS_SRTE.DBO.V_state_code SRT1 WITH (NOLOCK) ON PST.STATE_CD = SRT1.CODE + LEFT OUTER JOIN NBS_SRTE.DBO.state_county_code_value SRT3 WITH (NOLOCK) ON PST.CNTY_CD = SRT3.CODE + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA A ON A.CODE=PER.ETHNIC_GROUP_IND + AND A.investigation_form_cd = Condition_code.investigation_form_cd + AND A.DATA_LOCATION LIKE '%.ETHNIC_GROUP_IND' + LEFT OUTER JOIN NBS_ODSE.DBO.PERSON_NAME PNM WITH (NOLOCK) ON PER.PERSON_UID = PNM.PERSON_UID + AND PNM.NM_USE_CD = 'L' + AND PNM.RECORD_STATUS_CD = 'ACTIVE' + + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA AGE_UNIT WITH (NOLOCK) ON PER.age_reported_unit_cd = AGE_UNIT.CODE + AND AGE_UNIT.investigation_form_cd = Condition_code.investigation_form_cd + AND AGE_UNIT.DATA_LOCATION LIKE 'Person.age_reported_unit_cd' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA BIRTH_GENDER WITH (NOLOCK) ON PER.birth_gender_cd = BIRTH_GENDER.CODE + AND BIRTH_GENDER.investigation_form_cd = Condition_code.investigation_form_cd + AND BIRTH_GENDER.DATA_LOCATION LIKE 'Person.birth_gender_cd' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA CURR_SEX WITH (NOLOCK) ON PER.curr_sex_cd = CURR_SEX.CODE + AND CURR_SEX.investigation_form_cd = Condition_code.investigation_form_cd + AND CURR_SEX.DATA_LOCATION LIKE 'Person.curr_sex_cd' + LEFT OUTER JOIN NBS_SRTE.DBO.NAICS_INDUSTRY_CODE OCCUPATION WITH (NOLOCK) ON PER.occupation_cd = OCCUPATION.CODE + LEFT OUTER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL CVG WITH (NOLOCK) ON PER.education_level_cd = CVG.CODE + AND CVG.CODE_SET_NM = 'P_EDUC_LVL' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA CVG2 WITH (NOLOCK) ON PER.MARITAL_STATUS_CD = CVG2.CODE + AND CVG2.investigation_form_cd = Condition_code.investigation_form_cd + AND CVG2.DATA_LOCATION = 'PERSON.MARITAL_STATUS_CD' + LEFT OUTER JOIN NBS_SRTE.DBO.LANGUAGE_CODE LNG WITH (NOLOCK) ON PER.PRIM_LANG_CD = LNG.CODE + where Public_health_case.public_health_case_uid in (select value from string_split(@phc_id_list, ',')) + ORDER BY PAR.ACT_UID + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + DELETE + FROM #TEMP_PHCPATIENTINFO + WHERE RN > 1 + + /* -- moved to the above sql + UPDATE #TEMP_PHCPATIENTINFO + SET city_desc_txt = NULL + WHERE city_desc_txt = LTRIM(RTRIM('')); + + UPDATE #TEMP_PHCPATIENTINFO + SET STREET_ADDR1 = NULL + WHERE STREET_ADDR1 = LTRIM(RTRIM('')); + + UPDATE #TEMP_PHCPATIENTINFO + SET STREET_ADDR2 = NULL + WHERE STREET_ADDR2 = LTRIM(RTRIM('')); + + UPDATE #TEMP_PHCPATIENTINFO + SET cntry_cd = NULL + WHERE cntry_cd = LTRIM(RTRIM('')); + + + UPDATE #TEMP_PHCPATIENTINFO + SET ZIP_CD = NULL + WHERE ZIP_CD = LTRIM(RTRIM('')); + + UPDATE #TEMP_PHCPATIENTINFO + SET CNTY_CD = NULL + WHERE CNTY_CD = LTRIM(RTRIM('')); + + + */ + + + PRINT '1. starttime' + LEFT(CONVERT(VARCHAR, @batch_start_time, 120), 10) + PRINT '1. endtime' + LEFT(CONVERT(VARCHAR, @batch_end_time, 120), 10) + + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + UPDATE #TEMP_PHCPATIENTINFO + SET ETHNIC_GROUP_IND_DESC = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCPATIENTINFO + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON #TEMP_PHCPATIENTINFO.ETHNIC_GROUP_IND = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'P_ETHN_GRP' + AND #TEMP_PHCPATIENTINFO.FLAG1 =1; ---added this optimization + + + UPDATE #TEMP_PHCPATIENTINFO + SET MARITAL_STATUS_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCPATIENTINFO + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON #TEMP_PHCPATIENTINFO.MARITAL_STATUS_CD = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'P_MARITAL' + AND #TEMP_PHCPATIENTINFO.FLAG1 =1; ---added this optimization + + + UPDATE #TEMP_PHCPATIENTINFO + SET BIRTH_GENDER_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCPATIENTINFO + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON #TEMP_PHCPATIENTINFO.birth_gender_cd = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'SEX' + AND BIRTH_GENDER_DESC_TXT IS NULL + AND birth_gender_cd IS NOT NULL + + + UPDATE #TEMP_PHCPATIENTINFO + SET AGE_REPORTED_UNIT_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCPATIENTINFO + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON #TEMP_PHCPATIENTINFO.age_reported_unit_cd = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'AGE_UNIT' + AND #TEMP_PHCPATIENTINFO.FLAG1 =1; ---added this optimization + + + UPDATE #TEMP_PHCPATIENTINFO + SET CURR_SEX_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCPATIENTINFO + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON #TEMP_PHCPATIENTINFO.curr_sex_cd = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'SEX' + AND #TEMP_PHCPATIENTINFO.FLAG1 =1; ---added this optimization + + + COMMIT TRANSACTION; + BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_PHCINFO_INIT'; + IF OBJECT_ID('#TEMP_PHCINFO_INIT') IS NOT NULL + DROP TABLE #TEMP_PHCINFO_INIT; + + SELECT OBSERVATION2.CD, t.PUBLIC_HEALTH_CASE_UID,OBS_VALUE_DATE.FROM_TIME + INTO #TEMP_PHCINFO_INIT + FROM #TEMP_PHCPATIENTINFO t WITH (NOLOCK) + INNER JOIN NBS_ODSE.DBO.ACT_RELATIONSHIP WITH (NOLOCK) ON ACT_RELATIONSHIP.TARGET_ACT_UID=t.PUBLIC_HEALTH_CASE_UID + INNER JOIN NBS_ODSE.DBO.ACT_RELATIONSHIP ACT_RELATIONSHIP2 WITH (NOLOCK) ON ACT_RELATIONSHIP2.TARGET_ACT_UID=ACT_RELATIONSHIP.SOURCE_ACT_UID + LEFT JOIN NBS_ODSE.DBO.OBSERVATION OBSERVATION2 WITH (NOLOCK) ON OBSERVATION2.OBSERVATION_UID =ACT_RELATIONSHIP2.SOURCE_ACT_UID + LEFT JOIN NBS_ODSE.DBO.OBS_VALUE_DATE WITH (NOLOCK) ON OBSERVATION2.OBSERVATION_UID =OBS_VALUE_DATE.OBSERVATION_UID + WHERE OBSERVATION2.CD IN ('INV132', 'INV133') AND ACT_RELATIONSHIP.TYPE_CD ='PHCInvForm'; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_PHCINFO_LEGACY_HOSP'; + IF OBJECT_ID('#TEMP_PHCINFO_LEGACY_HOSP') IS NOT NULL + DROP TABLE #TEMP_PHCINFO_LEGACY_HOSP; + + SELECT OBSERVATION2.CD, t.PUBLIC_HEALTH_CASE_UID,OBS_VALUE_CODED.CODE + INTO #TEMP_PHCINFO_LEGACY_HOSP + FROM #TEMP_PHCPATIENTINFO t WITH (NOLOCK) + INNER JOIN NBS_ODSE.DBO.ACT_RELATIONSHIP WITH (NOLOCK) ON ACT_RELATIONSHIP.TARGET_ACT_UID=t.PUBLIC_HEALTH_CASE_UID + INNER JOIN NBS_ODSE.DBO.ACT_RELATIONSHIP ACT_RELATIONSHIP2 WITH (NOLOCK) ON ACT_RELATIONSHIP2.TARGET_ACT_UID=ACT_RELATIONSHIP.SOURCE_ACT_UID + INNER JOIN NBS_ODSE.DBO.OBSERVATION AS OBSERVATION2 WITH (NOLOCK) ON ACT_RELATIONSHIP2.SOURCE_ACT_UID =OBSERVATION2.OBSERVATION_UID + INNER JOIN NBS_ODSE.DBO.OBS_VALUE_CODED WITH (NOLOCK) ON ACT_RELATIONSHIP2.SOURCE_ACT_UID =OBS_VALUE_CODED.OBSERVATION_UID + WHERE OBSERVATION2.CD IN ('INV128') AND ACT_RELATIONSHIP.TYPE_CD ='PHCInvForm'; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_PHCINFO1'; + + IF OBJECT_ID('#TEMP_PHCINFO1') IS NOT NULL + DROP TABLE #TEMP_PHCINFO1; + + SELECT PHC.PUBLIC_HEALTH_CASE_UID + ,PHC.CASE_TYPE_CD + ,PHC.DIAGNOSIS_TIME AS DIAGNOSIS_DATE + ,PHC.CD AS PHC_CODE + ,PHC.CD_DESC_TXT AS PHC_CODE_DESC + ,ISNULL(PHC.CASE_CLASS_CD, '') CASE_CLASS_CD + ,PHC.CD_SYSTEM_CD + ,PHC.CD_SYSTEM_DESC_TXT + ,PHC.CONFIDENTIALITY_CD + ,PHC.CONFIDENTIALITY_DESC_TXT + ,case when ltrim(rtrim(PHC.DETECTION_METHOD_CD)) = '' then null else ltrim(rtrim(PHC.DETECTION_METHOD_CD)) end detection_method_cd + , + /*PHC.DETECTION_METHOD_DESC_TXT,*/ + case when ltrim(rtrim(PHC.DISEASE_IMPORTED_CD)) = '' then null else ltrim(rtrim(PHC.DISEASE_IMPORTED_CD)) end DISEASE_IMPORTED_CD + , + /*PHC.DISEASE_IMPORTED_DESC_TXT,*/ + PHC.GROUP_CASE_CNT + ,PHC.INVESTIGATION_STATUS_CD + ,PHC.JURISDICTION_CD + ,JURISDICTION_CODE.CODE_DESC_TXT AS JURISDICTION + ,case when SUBSTRING(ltrim(rtrim(PHC.MMWR_WEEK)), 1, 4) = '' then null else SUBSTRING(ltrim(rtrim(PHC.MMWR_WEEK)), 1, 4) end MMWR_WEEK + ,case when SUBSTRING(ltrim(rtrim(PHC.MMWR_YEAR)), 1, 4) = '' then null else SUBSTRING(ltrim(rtrim(PHC.MMWR_YEAR)), 1, 4) end MMWR_YEAR + ,case when ltrim(rtrim(PHC.OUTBREAK_IND)) = '' then null else ltrim(rtrim(PHC.OUTBREAK_IND)) end OUTBREAK_IND + ,case when ltrim(rtrim(PHC.OUTBREAK_FROM_TIME)) = '' then null else ltrim(rtrim(PHC.OUTBREAK_FROM_TIME)) end OUTBREAK_FROM_TIME + ,case when ltrim(rtrim(PHC.OUTBREAK_TO_TIME)) = '' then null else ltrim(rtrim(PHC.OUTBREAK_TO_TIME)) end OUTBREAK_TO_TIME + ,case when ltrim(rtrim(PHC.OUTBREAK_NAME)) = '' then null else ltrim(rtrim(PHC.OUTBREAK_NAME)) end OUTBREAK_NAME + ,case when ltrim(rtrim(PHC.OUTCOME_CD)) = '' then null else ltrim(rtrim(PHC.OUTCOME_CD)) end OUTCOME_CD + ,case when SUBSTRING(ltrim(rtrim(PHC.PAT_AGE_AT_ONSET)), 1, 4) = '' then null else SUBSTRING(ltrim(rtrim(PHC.PAT_AGE_AT_ONSET)), 1, 4) end PAT_AGE_AT_ONSET + ,case when ltrim(rtrim(PHC.PAT_AGE_AT_ONSET_UNIT_CD)) = '' then null else ltrim(rtrim(PHC.PAT_AGE_AT_ONSET_UNIT_CD)) end PAT_AGE_AT_ONSET_UNIT_CD + ,PHC.PROG_AREA_CD + ,PHC.RECORD_STATUS_CD + ,PHC.RPT_CNTY_CD + ,PHC.RPT_FORM_CMPLT_TIME + ,case when ltrim(rtrim(PHC.RPT_SOURCE_CD)) = '' then null else ltrim(rtrim(PHC.RPT_SOURCE_CD)) end RPT_SOURCE_CD + , + /*PHC.RPT_SOURCE_CD_DESC_TXT*/ + PHC.RPT_TO_COUNTY_TIME + ,PHC.RPT_TO_STATE_TIME + ,PHC.STATUS_CD + ,PHC.EFFECTIVE_FROM_TIME AS ONSETDATE + ,PHC.ACTIVITY_FROM_TIME AS INVESTIGATIONSTARTDATE + ,PHC.ADD_TIME AS PHC_ADD_TIME + ,PHC.PROGRAM_JURISDICTION_OID + ,PHC.SHARED_IND + ,PHC.IMPORTED_COUNTRY_CD AS IMPORTED_COUNTRY_CODE + ,PHC.IMPORTED_STATE_CD AS IMPORTED_STATE_CODE + ,PHC.IMPORTED_COUNTY_CD AS IMPORTED_COUNTY_CODE + ,PHC.INVESTIGATOR_ASSIGNED_TIME AS INVESTIGATOR_ASSIGN_DATE + ,PHC.HOSPITALIZED_ADMIN_TIME AS HSPTL_ADMISSION_DT + ,PHC.HOSPITALIZED_DISCHARGE_TIME AS HSPTL_DISCHARGE_DT + ,PHC.HOSPITALIZED_DURATION_AMT + ,PHC.IMPORTED_CITY_DESC_TXT + ,PHC.DECEASED_TIME AS INVESTIGATION_DEATH_DATE + ,PHC.LOCAL_ID AS LOCAL_ID + ,PHC.LAST_CHG_TIME AS LASTUPDATE + ,case when ltrim(rtrim(PHC.TXT)) = '' then null else ltrim(rtrim(PHC.TXT)) end PHCTXT + ,FOOD_HANDLER_IND_CD + ,case when ltrim(rtrim(hospitalized_ind_cd)) = '' then null else ltrim(rtrim(hospitalized_ind_cd)) end HOSPITALIZED_IND + ,DAY_CARE_IND_CD + ,PREGNANT_IND_CD + ,CONDITION_CODE.INVESTIGATION_FORM_CD + ,TEMP_PHCINFO_INITA.FROM_TIME AS LEGACY_HSPTL_ADMISSION_DT + ,TEMP_PHCINFO_INITb.FROM_TIME AS LEGACY_HSPTL_DISCHARGE_DT + ,NOTIF_LAST_CHG_TIME + ,t.CODE AS LEGACY_HOSP_IND + INTO #TEMP_PHCINFO1 + FROM NBS_ODSE.DBO.PUBLIC_HEALTH_CASE PHC WITH (NOLOCK) + INNER JOIN #TEMP_PHCPATIENTINFO t1 ON PHC.PUBLIC_HEALTH_CASE_UID = t1.ACT_UID + LEFT OUTER JOIN NBS_SRTE.DBO.JURISDICTION_CODE WITH (NOLOCK) ON JURISDICTION_CODE.CODE = PHC.jurisdiction_cd + INNER JOIN NBS_SRTE.DBO.Condition_code ON PHC.CD=Condition_code.condition_cd + LEFT OUTER JOIN #TEMP_PHCINFO_INIT TEMP_PHCINFO_INITA ON PHC.PUBLIC_HEALTH_CASE_UID = TEMP_PHCINFO_INITA.PUBLIC_HEALTH_CASE_UID + AND TEMP_PHCINFO_INITA.CD='INV132' + LEFT OUTER JOIN #TEMP_PHCINFO_INIT TEMP_PHCINFO_INITB ON PHC.PUBLIC_HEALTH_CASE_UID = TEMP_PHCINFO_INITB.PUBLIC_HEALTH_CASE_UID + AND TEMP_PHCINFO_INITB.CD='INV133' + LEFT OUTER JOIN #TEMP_PHCINFO_LEGACY_HOSP t ON PHC.PUBLIC_HEALTH_CASE_UID = t.PUBLIC_HEALTH_CASE_UID + AND t.CD='INV128' + where PHC.public_health_case_uid in (select value from string_split(@phc_id_list, ',')) + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + PRINT @ROWCOUNT_NO; + + UPDATE #TEMP_PHCINFO1 + SET HSPTL_ADMISSION_DT = LEGACY_HSPTL_ADMISSION_DT + WHERE LEGACY_HSPTL_ADMISSION_DT IS NOT NULL; + + UPDATE #TEMP_PHCINFO1 + SET HOSPITALIZED_IND = LEGACY_HOSP_IND + WHERE LEGACY_HOSP_IND IS NOT NULL; + + UPDATE #TEMP_PHCINFO1 + SET HSPTL_DISCHARGE_DT = LEGACY_HSPTL_DISCHARGE_DT + WHERE LEGACY_HSPTL_DISCHARGE_DT IS NOT NULL; +/* + UPDATE #TEMP_PHCINFO1 + SET detection_method_cd = NULL + WHERE detection_method_cd = LTRIM(RTRIM('')); + + UPDATE #TEMP_PHCINFO1 + SET outcome_cd = NULL + WHERE outcome_cd = LTRIM(RTRIM('')); + + UPDATE #TEMP_PHCINFO1 + SET outbreak_from_time = NULL + WHERE outbreak_from_time = LTRIM(RTRIM('')); + + UPDATE #TEMP_PHCINFO1 + SET outbreak_ind = NULL + WHERE outbreak_ind = LTRIM(RTRIM('')); + + UPDATE #TEMP_PHCINFO1 + SET outbreak_name = NULL + WHERE outbreak_name = LTRIM(RTRIM('')); + + UPDATE #TEMP_PHCINFO1 + SET disease_imported_cd = NULL + WHERE disease_imported_cd = LTRIM(RTRIM('')); + + UPDATE #TEMP_PHCINFO1 + SET PAT_AGE_AT_ONSET = NULL + WHERE PAT_AGE_AT_ONSET = LTRIM(RTRIM('')); + + UPDATE #TEMP_PHCINFO1 + SET PAT_AGE_AT_ONSET_UNIT_CD = NULL + WHERE PAT_AGE_AT_ONSET_UNIT_CD = LTRIM(RTRIM('')); + + UPDATE #TEMP_PHCINFO1 + SET MMWR_YEAR = NULL + WHERE MMWR_YEAR = LTRIM(RTRIM('')); + + UPDATE #TEMP_PHCINFO1 + SET MMWR_WEEK = NULL + WHERE MMWR_WEEK = LTRIM(RTRIM('')); + + UPDATE #TEMP_PHCINFO1 + SET RPT_SOURCE_CD = NULL + WHERE RPT_SOURCE_CD = LTRIM(RTRIM('')); + + UPDATE #TEMP_PHCINFO1 + SET HOSPITALIZED_IND = NULL + WHERE HOSPITALIZED_IND = LTRIM(RTRIM('')); +*/ + ALTER TABLE #TEMP_PHCINFO1 DROP column LEGACY_HSPTL_DISCHARGE_DT, LEGACY_HSPTL_ADMISSION_DT; + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + + COMMIT TRANSACTION; + BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Remove Updated records'; + + DELETE + FROM NBS_ODSE.DBO.SubjectRaceInfo + WHERE public_health_case_uid IN ( + SELECT public_health_case_uid + FROM #TEMP_PHCINFO1 + ); + + DELETE + FROM NBS_ODSE.DBO.PublicHealthCaseFact + WHERE public_health_case_uid IN ( + SELECT public_health_case_uid + FROM #TEMP_PHCINFO1 + ); + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_PHCINFO2'; + + IF OBJECT_ID('#TEMP_PHCINFO2') IS NOT NULL + DROP TABLE #TEMP_PHCINFO2; + + SELECT A.* + ,NBS_CASE_ANSWER.ANSWER_TXT AS THERAPY_DATE + INTO #TEMP_PHCINFO2 + FROM #TEMP_PHCINFO1 A WITH (NOLOCK) + LEFT OUTER JOIN NBS_ODSE.DBO.NBS_CASE_ANSWER WITH (NOLOCK) ON A.PUBLIC_HEALTH_CASE_UID = NBS_CASE_ANSWER.ACT_UID + AND NBS_CASE_ANSWER.NBS_QUESTION_UID IN ( + SELECT NBS_QUESTION_UID + FROM NBS_ODSE.DBO.NBS_QUESTION WITH (NOLOCK) + WHERE QUESTION_IDENTIFIER = 'TUB170' + ); + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_PHCINFO3'; + + IF OBJECT_ID('#TEMP_PHCINFO3') IS NOT NULL + DROP TABLE #TEMP_PHCINFO3; + + SELECT A.* + ,case when ltrim(rtrim(AID.ROOT_EXTENSION_TXT)) = '' then null else ltrim(rtrim(AID.ROOT_EXTENSION_TXT)) end AS STATE_CASE_ID + INTO #TEMP_PHCINFO3 + FROM #TEMP_PHCINFO2 A WITH (NOLOCK) + LEFT OUTER JOIN NBS_ODSE.DBO.ACT_ID AID WITH (NOLOCK) ON A.PUBLIC_HEALTH_CASE_UID = AID.ACT_UID + AND ACT_ID_SEQ = 1 + WHERE A.RECORD_STATUS_CD <> 'LOG_DEL' + ORDER BY A.PUBLIC_HEALTH_CASE_UID; + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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 TEMP_PHCINFO3'; + + /*UPDATE #TEMP_PHCINFO3 + SET STATE_CASE_ID = NULL + WHERE STATE_CASE_ID = LTRIM(RTRIM(''));*/ + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_PHCINFO'; + + IF OBJECT_ID('#TEMP_PHCINFO') IS NOT NULL + DROP TABLE #TEMP_PHCINFO; + + SELECT PUBLIC_HEALTH_CASE_UID + ,CASE_TYPE_CD + ,DIAGNOSIS_DATE + ,PHC_CODE + ,case when PHC_CODE_DESC = null then A.condition_short_nm else PHC_CODE_DESC end as PHC_CODE_DESC + ,CASE_CLASS_CD + ,CD_SYSTEM_CD + ,THERAPY_DATE + ,STATE_CASE_ID + ,CD_SYSTEM_DESC_TXT + ,CONFIDENTIALITY_CD + ,CONFIDENTIALITY_DESC_TXT + ,DETECTION_METHOD_CD + ,DISEASE_IMPORTED_CD + ,GROUP_CASE_CNT + ,INVESTIGATION_STATUS_CD + ,JURISDICTION + ,JURISDICTION_CD + ,MMWR_WEEK + ,MMWR_YEAR + ,OUTBREAK_IND + ,OUTBREAK_FROM_TIME + ,OUTBREAK_TO_TIME + ,OUTBREAK_NAME + ,OUTCOME_CD + ,PAT_AGE_AT_ONSET + ,PAT_AGE_AT_ONSET_UNIT_CD + ,t3.PROG_AREA_CD + ,RECORD_STATUS_CD + ,RPT_CNTY_CD + ,RPT_FORM_CMPLT_TIME + ,RPT_SOURCE_CD + ,RPT_TO_COUNTY_TIME + ,RPT_TO_STATE_TIME + ,t3.STATUS_CD + ,ONSETDATE + ,INVESTIGATIONSTARTDATE + ,PHC_ADD_TIME + ,PROGRAM_JURISDICTION_OID + ,SHARED_IND + ,IMPORTED_COUNTRY_CODE + ,IMPORTED_STATE_CODE + ,IMPORTED_COUNTY_CODE + ,INVESTIGATOR_ASSIGN_DATE + ,HSPTL_ADMISSION_DT + ,HSPTL_DISCHARGE_DT + ,HOSPITALIZED_DURATION_AMT + ,IMPORTED_CITY_DESC_TXT + ,INVESTIGATION_DEATH_DATE + ,LOCAL_ID + ,HOSPITALIZED_IND + ,DAY_CARE_IND_CD AS CASE_DAY_CARE_IND_CD + ,PREGNANT_IND_CD + ,LASTUPDATE + ,case when ltrim(rtrim(PHCTXT))='' then null else ltrim(rtrim(PHCTXT)) end as PHCTXT + ,A.CONDITION_CD + ,A.investigation_form_cd + ,A.condition_short_nm AS PHC_CODE_SHORT_DESC + ,B.CODE_SHORT_DESC_TXT AS DISEASE_IMPORTED_DESC_TXT + ,C.CODE_SHORT_DESC_TXT AS DETECTION_METHOD_DESC_TXT + ,D.CODE_SHORT_DESC_TXT AS RPT_SOURCE_DESC_TXT + ,E.CODE_SHORT_DESC_TXT AS HOSPITALIZED + ,F.CODE_SHORT_DESC_TXT AS PREGNANT + ,G.CODE_SHORT_DESC_TXT AS DAY_CARE_IND_CD + ,H.CODE_SHORT_DESC_TXT AS FOOD_HANDLER_IND_CD + ,I.CODE_SHORT_DESC_TXT AS IMPORTED_COUNTRY_CD + ,J.CODE_SHORT_DESC_TXT AS IMPORTED_COUNTY_CD + ,K.CODE_SHORT_DESC_TXT AS IMPORTED_STATE_CD + ,L.CODE_SHORT_DESC_TXT AS CASE_CLASS_DESC_TXT + ,M.CODE_SHORT_DESC_TXT AS investigation_status_desc_txt + ,N.CODE_SHORT_DESC_TXT AS outcome_desc_txt + ,O.CODE_SHORT_DESC_TXT AS pat_age_at_onset_unit_desc_txt + ,P.prog_area_desc_txt AS prog_area_desc_txt + ,Q.CODE_SHORT_DESC_TXT AS rpt_cnty_desc_txt + ,R.CODE_SHORT_DESC_TXT AS outbreak_name_desc + ,NOTIF_LAST_CHG_TIME + , CASE WHEN (A.investigation_form_cd NOT LIKE 'PG_%' or A.investigation_form_cd is null) then 1 else 0 end as FLAG2 /* Optimization (very imp) */ + INTO #TEMP_PHCINFO + FROM #TEMP_PHCINFO3 t3 + LEFT OUTER JOIN NBS_SRTE.DBO.CONDITION_CODE A WITH (NOLOCK) ON A.CONDITION_CD = t3.PHC_CODE + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA B WITH (NOLOCK) ON t3.DISEASE_IMPORTED_CD = B.CODE + AND t3.investigation_form_cd = B.investigation_form_cd + AND B.DATA_LOCATION LIKE '%.DISEASE_IMPORTED_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA C WITH (NOLOCK) ON t3.DETECTION_METHOD_CD = C.CODE + AND t3.investigation_form_cd = C.investigation_form_cd + AND C.DATA_LOCATION LIKE '%.DETECTION_METHOD_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA D WITH (NOLOCK) ON t3.RPT_SOURCE_CD = D.CODE + AND t3.investigation_form_cd = D.investigation_form_cd + AND D.DATA_LOCATION LIKE '%.RPT_SOURCE_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA E WITH (NOLOCK) ON t3.HOSPITALIZED_IND = E.CODE + AND t3.investigation_form_cd = E.investigation_form_cd + AND E.DATA_LOCATION LIKE '%.HOSPITALIZED_IND_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA F WITH (NOLOCK) ON t3.PREGNANT_IND_CD = F.CODE + AND t3.investigation_form_cd = F.investigation_form_cd + AND F.DATA_LOCATION LIKE '%.PREGNANT_IND_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA G WITH (NOLOCK) ON t3.DAY_CARE_IND_CD = G.CODE + AND t3.investigation_form_cd = G.investigation_form_cd + AND G.DATA_LOCATION LIKE '%.DAY_CARE_IND_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA H WITH (NOLOCK) ON t3.FOOD_HANDLER_IND_CD = H.CODE + AND t3.investigation_form_cd = H.investigation_form_cd + AND H.DATA_LOCATION LIKE '%.FOOD_HANDLER_IND_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA I WITH (NOLOCK) ON t3.IMPORTED_COUNTRY_CODE = I.CODE + AND t3.investigation_form_cd = I.investigation_form_cd + AND I.DATA_LOCATION LIKE '%.IMPORTED_COUNTRY_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA J WITH (NOLOCK) ON t3.IMPORTED_COUNTY_CODE = J.CODE + AND t3.investigation_form_cd = J.investigation_form_cd + AND J.DATA_LOCATION LIKE '%.IMPORTED_COUNTY_CD' + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA K WITH (NOLOCK) ON t3.IMPORTED_STATE_CODE = K.CODE + AND t3.INVESTIGATION_FORM_CD = K.INVESTIGATION_FORM_CD + AND K.DATA_LOCATION LIKE '%.IMPORTED_STATE_CD' + LEFT OUTER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL L WITH (NOLOCK) ON t3.CASE_CLASS_CD = L.CODE + AND L.CODE_SET_NM = 'PHC_CLASS' + LEFT OUTER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL M WITH (NOLOCK) ON t3.INVESTIGATION_STATUS_CD = M.CODE + AND M.CODE_SET_NM = 'PHC_IN_STS' + LEFT OUTER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL N WITH (NOLOCK) ON t3.OUTCOME_CD = N.CODE + AND N.CODE_SET_NM = 'YNU' + LEFT OUTER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL O WITH (NOLOCK) ON t3.PAT_AGE_AT_ONSET_UNIT_CD = O.CODE + AND O.CODE_SET_NM = 'AGE_UNIT' + LEFT OUTER JOIN NBS_SRTE.DBO.PROGRAM_AREA_CODE P WITH (NOLOCK) ON t3.PROG_AREA_CD = P.PROG_AREA_CD + AND P.CODE_SET_NM = 'S_PROGRA_C' + LEFT OUTER JOIN NBS_SRTE.DBO.V_STATE_COUNTY_CODE_VALUE Q WITH (NOLOCK) ON t3.RPT_CNTY_CD = Q.CODE + AND Q.CODE_SET_NM = 'COUNTY_CCD' + LEFT OUTER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL R WITH (NOLOCK) ON t3.OUTBREAK_NAME = R.CODE + AND R.CODE_SET_NM = 'OUTBREAK_NM' + + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + /* -- Moved to SELECT SQL above + UPDATE #TEMP_PHCINFO + SET PHC_CODE_DESC = PHC_CODE_SHORT_DESC + WHERE PHC_CODE_DESC IS NULL;*/ + + + UPDATE t + SET DISEASE_IMPORTED_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.DISEASE_IMPORTED_CD = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'PHC_IMPRT' + AND FLAG2=1; /* Optimization */ + + UPDATE t + SET DETECTION_METHOD_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.detection_method_cd = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'PHC_DET_MT' + AND FLAG2=1; /* Optimization */ + + UPDATE t + SET RPT_SOURCE_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.rpt_source_cd = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'PHC_RPT_SRC_T' + AND FLAG2=1; /* Optimization */ + + UPDATE t + SET HOSPITALIZED = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.HOSPITALIZED_IND = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'YNU' + AND FLAG2=1; /* Optimization */ + + UPDATE t + SET PREGNANT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.pregnant_ind_cd = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'YNU' + AND FLAG2=1; /* Optimization */ + + UPDATE t + SET DAY_CARE_IND_CD = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.CASE_DAY_CARE_IND_CD = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'YNU' + AND FLAG2=1; /* Optimization */ + + UPDATE t + SET FOOD_HANDLER_IND_CD = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.FOOD_HANDLER_IND_CD = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'YNU' + AND FLAG2=1; /* Optimization */ + + UPDATE t + SET DISEASE_IMPORTED_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.DISEASE_IMPORTED_CD = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'PHC_IMPRT' + AND FLAG2=1; /* Optimization */ + + UPDATE t + SET IMPORTED_COUNTRY_CD = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.IMPORTED_COUNTRY_CODE = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'PSL_CNTRY' + AND FLAG2=1; /* Optimization */ + + UPDATE t + SET IMPORTED_STATE_CD = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.IMPORTED_STATE_CD = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'STATE_CCD' + AND FLAG2=1; /* Optimization */ + + UPDATE t + SET IMPORTED_STATE_CD = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_PHCINFO t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.IMPORTED_STATE_CD = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM = 'YNU' + AND FLAG2=1; /* Optimization */ + + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Cleanup process'; + + + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@Proc_Step_no + ,@Proc_Step_Name + ,0 + ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_PHCSUBJECT'; + + IF OBJECT_ID('#TEMP_PHCSUBJECT') IS NOT NULL + DROP TABLE #TEMP_PHCSUBJECT; + + SELECT --PUBLIC_HEALTH_CASE_UID, + CASE_TYPE_CD + ,DIAGNOSIS_DATE + ,PHC_CODE + ,PHC_CODE_DESC + ,CASE_CLASS_CD + ,CD_SYSTEM_CD + ,THERAPY_DATE + ,STATE_CASE_ID + ,CD_SYSTEM_DESC_TXT + ,CONFIDENTIALITY_CD + ,CONFIDENTIALITY_DESC_TXT + ,DETECTION_METHOD_CD + ,HSPTL_ADMISSION_DT + ,HSPTL_DISCHARGE_DT + ,DISEASE_IMPORTED_CD + ,GROUP_CASE_CNT + ,INVESTIGATION_STATUS_CD + ,JURISDICTION + ,JURISDICTION_CD + ,MMWR_WEEK + ,MMWR_YEAR + ,OUTBREAK_IND + ,OUTBREAK_FROM_TIME + ,OUTBREAK_TO_TIME + ,OUTBREAK_NAME + ,OUTCOME_CD + ,PAT_AGE_AT_ONSET + ,PAT_AGE_AT_ONSET_UNIT_CD + ,PROG_AREA_CD + ,RECORD_STATUS_CD + ,RPT_CNTY_CD + ,RPT_FORM_CMPLT_TIME + ,RPT_SOURCE_CD + ,RPT_TO_COUNTY_TIME + ,RPT_TO_STATE_TIME + ,STATUS_CD + ,ONSETDATE + ,INVESTIGATIONSTARTDATE + ,PHC_ADD_TIME + ,PROGRAM_JURISDICTION_OID + ,SHARED_IND + ,IMPORTED_COUNTRY_CODE + ,IMPORTED_STATE_CODE + ,IMPORTED_COUNTY_CODE + ,INVESTIGATOR_ASSIGN_DATE + ,HOSPITALIZED_DURATION_AMT + ,IMPORTED_CITY_DESC_TXT + ,INVESTIGATION_DEATH_DATE + ,LOCAL_ID + ,HOSPITALIZED_IND + ,PREGNANT_IND_CD + ,PHC_CODE_SHORT_DESC + ,DISEASE_IMPORTED_DESC_TXT + ,DETECTION_METHOD_DESC_TXT + ,RPT_SOURCE_DESC_TXT + ,HOSPITALIZED + ,PREGNANT + ,RPT_CNTY_DESC_TXT + ,DAY_CARE_IND_CD + ,FOOD_HANDLER_IND_CD + ,IMPORTED_COUNTRY_CD + ,IMPORTED_COUNTY_CD + ,IMPORTED_STATE_CD + ,CASE_CLASS_DESC_TXT + ,INVESTIGATION_STATUS_DESC_TXT + ,OUTCOME_DESC_TXT + ,PAT_AGE_AT_ONSET_UNIT_DESC_TXT + ,OUTBREAK_NAME_DESC + ,LASTUPDATE + ,PHCTXT + ,PROG_AREA_DESC_TXT + ,t.* + INTO #TEMP_PHCSUBJECT + FROM #TEMP_PHCINFO t1 WITH (NOLOCK) + INNER JOIN #TEMP_PHCPATIENTINFO t WITH (NOLOCK) ON t1.PUBLIC_HEALTH_CASE_UID = t.PUBLIC_HEALTH_CASE_UID + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + + COMMIT TRANSACTION; + + -----------------------------------------SMMARY + ----TODO NEEDS TO CHECK MERGE LOGIC + BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_SUMMARYUID'; + + IF OBJECT_ID('#TEMP_SUMMARYUID') IS NOT NULL + DROP TABLE #TEMP_SUMMARYUID; + + SELECT PHC.PUBLIC_HEALTH_CASE_UID + ,SRT1.PARENT_IS_CD AS STATE_CD + ,SRT2.CODE_DESC_TXT AS STATE + ,PHC.RPT_CNTY_CD AS CNTY_CD + ,SRT1.CODE_DESC_TXT AS COUNTY + INTO #TEMP_SUMMARYUID + FROM NBS_ODSE.DBO.PUBLIC_HEALTH_CASE PHC WITH (NOLOCK) + LEFT OUTER JOIN NBS_SRTE.DBO.STATE_COUNTY_CODE_VALUE SRT1 WITH (NOLOCK) ON PHC.RPT_CNTY_CD = SRT1.CODE + LEFT OUTER JOIN NBS_SRTE.DBO.STATE_CODE SRT2 WITH (NOLOCK) ON SRT1.PARENT_IS_CD = SRT2.STATE_CD + LEFT JOIN NBS_ODSE.DBO.ACT_RELATIONSHIP ARN WITH (NOLOCK) ON ARN.TARGET_ACT_UID=PHC.PUBLIC_HEALTH_CASE_UID + LEFT JOIN NBS_ODSE.DBO.NOTIFICATION WITH (NOLOCK) ON NOTIFICATION.NOTIFICATION_UID=ARN.SOURCE_ACT_UID + AND NOTIFICATION.CD='NOTF' + WHERE CASE_TYPE_CD IS NOT NULL + AND CASE_TYPE_CD = 'S' + and PHC.public_health_case_uid in (select value from string_split(@phc_id_list, ',')) + + /* AND (PHC.[last_chg_time] >= @batch_start_time + AND PHC.[last_chg_time] < @batch_end_time) + OR (NOTIFICATION.LAST_CHG_TIME >= @batch_start_time + AND NOTIFICATION.LAST_CHG_TIME < @batch_end_time) */ + + ORDER BY PUBLIC_HEALTH_CASE_UID; + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_CASECNT'; + + IF OBJECT_ID('#TEMP_CASECNT') IS NOT NULL + DROP TABLE #TEMP_CASECNT; + + SELECT AR2.TARGET_ACT_UID AS PUBLIC_HEALTH_CASE_UID + ,AR2.SOURCE_ACT_UID AS SUM_REPORT_FORM_UID + ,AR1.TARGET_ACT_UID AS AR1_SUM_REPORT_FORM_UID + , + /*--SUMMARY_REPORT_FORM OBS_UID*/ + AR1.SOURCE_ACT_UID AS AR1_SUM107_UID + , + /*--SUM107 OBS_UID*/ + OB1.OBSERVATION_UID AS OB1_SUM107_UID + ,OB1.CD AS OB1_CD + ,OB2.OBSERVATION_UID AS OB2_SUM_REPORT_FORM_UID + ,OB2.CD AS OB2_CD + ,OVN.NUMERIC_VALUE_1 AS GROUP_CASE_CNT + ,AR1.TYPE_CD AS AR1_TYPE_CD + ,AR1.SOURCE_CLASS_CD AS AR1_SOURCE_CLASS_CD + ,AR1.TARGET_CLASS_CD AS AR1_TARGET_CLASS_CD + ,AR2.TYPE_CD AS AR2_TYPE_CD + ,AR2.SOURCE_CLASS_CD AS AR2_SOURCE_CLASS_CD + ,AR2.TARGET_CLASS_CD AS AR2_TARGET_CLASS_CD + INTO #TEMP_CASECNT + FROM NBS_ODSE.DBO.ACT_RELATIONSHIP AS AR1 WITH (NOLOCK) + ,NBS_ODSE.DBO.OBSERVATION AS OB1 WITH (NOLOCK) + ,NBS_ODSE.DBO.OBSERVATION AS OB2 WITH (NOLOCK) + ,NBS_ODSE.DBO.OBS_VALUE_NUMERIC AS OVN WITH (NOLOCK) + ,NBS_ODSE.DBO.ACT_RELATIONSHIP AS AR2 WITH (NOLOCK) + WHERE AR1.SOURCE_ACT_UID = OB1.OBSERVATION_UID + AND AR1.TARGET_ACT_UID = OB2.OBSERVATION_UID + AND AR1.TYPE_CD = 'SUMMARYFRMQ' + AND OB1.CD = 'SUM107' + AND OB2.CD = 'SUMMARY_REPORT_FORM' + AND OB1.OBSERVATION_UID = OVN.OBSERVATION_UID + AND OB2.OBSERVATION_UID = AR2.SOURCE_ACT_UID + AND AR2.TYPE_CD = 'SUMMARYFORM' + and AR2.TARGET_ACT_UID in (select value from string_split(@phc_id_list, ',')) + + /*AND (AR1.[last_chg_time] >= @batch_start_time + AND AR1.[last_chg_time] < @batch_end_time)*/ + + ORDER BY PUBLIC_HEALTH_CASE_UID; + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + + COMMIT TRANSACTION; + + ---TODO PENDING CODE LOGIC + -----------------------NOTIFICATION + BEGIN TRANSACTION; + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_SAS_LATEST_NOT'; + + IF OBJECT_ID('#TEMP_SAS_LATEST_NOT') IS NOT NULL + DROP TABLE #TEMP_SAS_LATEST_NOT; + + SELECT TARGET_ACT_UID AS PUBLIC_HEALTH_CASE_UID + ,ar.SOURCE_ACT_UID + ,SOURCE_CLASS_CD + ,NF.RECORD_STATUS_CD AS NOTIFCURRENTSTATE + , NF.txt + ,NF.local_id AS NOTIFICATION_LOCAL_ID + INTO #TEMP_SAS_LATEST_NOT + FROM NBS_ODSE.DBO.ACT_RELATIONSHIP AR WITH (NOLOCK) + ,NBS_ODSE.DBO.NOTIFICATION NF WITH (NOLOCK) + WHERE AR.SOURCE_ACT_UID = NF.NOTIFICATION_UID + AND SOURCE_CLASS_CD = 'NOTF' + AND TARGET_CLASS_CD = 'CASE' + AND ( + NF.RECORD_STATUS_CD = 'COMPLETED' + OR NF.RECORD_STATUS_CD = 'PEND_APPR' + OR NF.RECORD_STATUS_CD = 'APPROVED' + ) + AND AR.TARGET_ACT_UID IN (SELECT PUBLIC_HEALTH_CASE_UID FROM #TEMP_PHCSUBJECT WITH (NOLOCK)) + /* AND ((NF.[last_chg_time] >= @batch_start_time + AND NF.[last_chg_time] < @batch_end_time) + OR AR.TARGET_ACT_UID IN (SELECT PUBLIC_HEALTH_CASE_UID FROM #TEMP_PHCSUBJECT WITH (NOLOCK)) + )*/ + + COMMIT TRANSACTION; + BEGIN TRANSACTION; + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_SAS_NOTIFICATION'; + + IF OBJECT_ID('#TEMP_SAS_NOTIFICATION') IS NOT NULL + DROP TABLE #TEMP_SAS_NOTIFICATION; + + SELECT DISTINCT TARGET_ACT_UID AS PUBLIC_HEALTH_CASE_UID + ,TARGET_CLASS_CD + ,SOURCE_ACT_UID + ,SOURCE_CLASS_CD + ,NF.VERSION_CTRL_NBR + ,NF.ADD_TIME + ,NF.ADD_USER_ID + ,NF.RPT_SENT_TIME + ,NF.RECORD_STATUS_CD + ,NF.RECORD_STATUS_TIME + ,NF.LAST_CHG_TIME + ,NF.LAST_CHG_USER_ID + ,'Y' AS HIST_IND + , NF.txt + ,CAST(NULL AS INT) AS NOTIFSENTCOUNT + ,CAST(NULL AS INT) AS NOTIFREJECTEDCOUNT + ,CAST(NULL AS INT) AS NOTIFCREATEDCOUNT + ,CAST(NULL AS INT) AS X1 + ,CAST(NULL AS INT) AS X2 + ,CAST(NULL AS DATETIME) AS FIRSTNOTIFICATIONSENDDATE + ,CAST(NULL AS DATETIME) AS NOTIFICATIONDATE + INTO #TEMP_SAS_NOTIFICATION + FROM NBS_ODSE.DBO.ACT_RELATIONSHIP AR WITH (NOLOCK) + INNER JOIN NBS_ODSE.DBO.NOTIFICATION_HIST NF WITH (NOLOCK) ON AR.SOURCE_ACT_UID = NF.NOTIFICATION_UID + WHERE + SOURCE_CLASS_CD = 'NOTF' + AND TARGET_CLASS_CD = 'CASE' + AND NF.CD='NOTF' + AND ( + NF.RECORD_STATUS_CD = 'COMPLETED' + OR NF.RECORD_STATUS_CD = 'MSG_FAIL' + OR NF.RECORD_STATUS_CD = 'REJECTED' + OR NF.RECORD_STATUS_CD = 'PEND_APPR' + OR NF.RECORD_STATUS_CD = 'APPROVED' + ) + and AR.TARGET_ACT_UID IN (SELECT PUBLIC_HEALTH_CASE_UID FROM #TEMP_PHCSUBJECT WITH (NOLOCK)) + /*AND ((NF.[last_chg_time] >= @batch_start_time + AND NF.[last_chg_time] < @batch_end_time) + OR AR.TARGET_ACT_UID IN (SELECT PUBLIC_HEALTH_CASE_UID FROM #TEMP_PHCSUBJECT WITH (NOLOCK)) + )*/ + + UNION + + SELECT TARGET_ACT_UID + ,TARGET_CLASS_CD + ,SOURCE_ACT_UID + ,SOURCE_CLASS_CD + ,NF.VERSION_CTRL_NBR + ,NF.ADD_TIME + ,NF.ADD_USER_ID + ,NF.RPT_SENT_TIME + ,NF.RECORD_STATUS_CD + ,NF.RECORD_STATUS_TIME + ,NF.LAST_CHG_TIME + ,NF.LAST_CHG_USER_ID + ,'N' AS HIST_IND + , NULL AS TXT + ,CAST(NULL AS INT) AS NOTIFSENTCOUNT + ,CAST(NULL AS INT) AS NOTIFREJECTEDCOUNT + ,CAST(NULL AS INT) AS NOTIFCREATEDCOUNT + ,CAST(NULL AS INT) AS X1 + ,CAST(NULL AS INT) AS X2 + ,CAST(NULL AS DATETIME) AS FIRSTNOTIFICATIONSENDDATE + ,CAST(NULL AS DATETIME) AS NOTIFICATIONDATE + FROM NBS_ODSE.DBO.ACT_RELATIONSHIP AR WITH (NOLOCK) + ,NBS_ODSE.DBO.NOTIFICATION NF WITH (NOLOCK) + WHERE AR.SOURCE_ACT_UID = NF.NOTIFICATION_UID + AND SOURCE_CLASS_CD = 'NOTF' + AND TARGET_CLASS_CD = 'CASE' + AND NF.CD='NOTF' + AND ( + NF.RECORD_STATUS_CD = 'COMPLETED' + OR NF.RECORD_STATUS_CD = 'MSG_FAIL' + OR NF.RECORD_STATUS_CD = 'REJECTED' + OR NF.RECORD_STATUS_CD = 'PEND_APPR' + OR NF.RECORD_STATUS_CD = 'APPROVED' + ) + and AR.TARGET_ACT_UID IN (SELECT PUBLIC_HEALTH_CASE_UID FROM #TEMP_PHCSUBJECT WITH (NOLOCK)) + /* + AND ((NF.[last_chg_time] >= @batch_start_time + AND NF.[last_chg_time] < @batch_end_time) + OR AR.TARGET_ACT_UID IN (SELECT PUBLIC_HEALTH_CASE_UID FROM #TEMP_PHCSUBJECT WITH (NOLOCK))) + */ + ORDER BY TARGET_ACT_UID + ,LAST_CHG_TIME; + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_PHCFACT'; + + IF OBJECT_ID('#TEMP_PHCFACT') IS NOT NULL + DROP TABLE #TEMP_PHCFACT; + + SELECT t.* + ,TARGET_CLASS_CD + ,tn.SOURCE_ACT_UID + ,tn.SOURCE_CLASS_CD + ,VERSION_CTRL_NBR + ,ADD_TIME + ,ADD_USER_ID + ,RPT_SENT_TIME + ,RECORD_STATUS_CD + ,RECORD_STATUS_TIME + ,LAST_CHG_TIME + ,LAST_CHG_USER_ID + ,HIST_IND + ,NOTIFSENTCOUNT + ,NOTIFCREATEDCOUNT + ,FIRSTNOTIFICATIONSENDDATE + ,NOTIFICATIONDATE + INTO #TEMP_PHCFACT + FROM #TEMP_CASECNT t WITH (NOLOCK) + LEFT JOIN #TEMP_SAS_NOTIFICATION tn WITH (NOLOCK) ON tn.PUBLIC_HEALTH_CASE_UID = t.PUBLIC_HEALTH_CASE_UID; + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_MIN_MAX_NOTIFICATION'; + +IF OBJECT_ID('#TEMP_MIN_MAX_NOTIFICATION') IS NOT NULL + DROP TABLE #TEMP_MIN_MAX_NOTIFICATION; + + SELECT DISTINCT MIN(CASE + WHEN VERSION_CTRL_NBR = 1 + THEN RECORD_STATUS_CD + END) AS FIRSTNOTIFICATIONSTATUS + , + + SUM(CASE + WHEN RECORD_STATUS_CD = 'REJECTED' + THEN 1 + ELSE 0 + END) NOTIFREJECTEDCOUNT + ,SUM(CASE + WHEN RECORD_STATUS_CD = 'APPROVED' + OR RECORD_STATUS_CD = 'PEND_APPR' + THEN 1 + WHEN RECORD_STATUS_CD = 'REJECTED' + THEN -1 + ELSE 0 + END) NOTIFCREATEDCOUNT + ,SUM(CASE + WHEN RECORD_STATUS_CD = 'COMPLETED' + THEN 1 + ELSE 0 + END) NOTIFSENTCOUNT + ,MIN(CASE + WHEN RECORD_STATUS_CD = 'COMPLETED' + THEN RPT_SENT_TIME + END) AS FIRSTNOTIFICATIONSENDDATE + , + SUM(CASE + WHEN RECORD_STATUS_CD = 'PEND_APPR' + THEN 1 + ELSE 0 + END) NOTIFCREATEDPENDINGSCOUNT + ,MAX(CASE + WHEN RECORD_STATUS_CD = 'APPROVED' + OR RECORD_STATUS_CD = 'PEND_APPR' + THEN LAST_CHG_TIME + END) AS LASTNOTIFICATIONDATE + , + --DONE? + MAX(CASE + WHEN RECORD_STATUS_CD = 'COMPLETED' + THEN RPT_SENT_TIME + END) AS LASTNOTIFICATIONSENDDATE + , + --DONE? + MIN(ADD_TIME) AS FIRSTNOTIFICATIONDATE + , + --DONE + MIN(ADD_USER_ID) AS FIRSTNOTIFICATIONSUBMITTEDBY + , + --DONE + MIN(ADD_USER_ID) AS LASTNOTIFICATIONSUBMITTEDBY + --DONE + --MIN(CASE WHEN RECORD_STATUS_CD='COMPLETED' THEN LAST_CHG_USER_ID END) AS FIRSTNOTIFICATIONSUBMITTEDBY, + ,MIN(CASE + WHEN RECORD_STATUS_CD = 'COMPLETED' + AND RPT_SENT_TIME IS NOT NULL + THEN RPT_SENT_TIME + END) AS NOTIFICATIONDATE + ,PUBLIC_HEALTH_CASE_UID + INTO #TEMP_MIN_MAX_NOTIFICATION + FROM #TEMP_SAS_NOTIFICATION WITH (NOLOCK) + GROUP BY PUBLIC_HEALTH_CASE_UID; + + UPDATE #TEMP_MIN_MAX_NOTIFICATION set NOTIFCREATEDCOUNT = NOTIFCREATEDCOUNT-1 where NOTIFCREATEDPENDINGSCOUNT>0 and NOTIFCREATEDCOUNT>0; + UPDATE #TEMP_MIN_MAX_NOTIFICATION set NOTIFCREATEDCOUNT = 1 where NOTIFCREATEDPENDINGSCOUNT>0 and NOTIFCREATEDCOUNT=0 and NOTIFREJECTEDCOUNT=0; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@Proc_Step_no + ,@Proc_Step_Name + ,0 + ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_SUB_CASE_NOTIF'; + + IF OBJECT_ID('#TEMP_SUB_CASE_NOTIF') IS NOT NULL + DROP TABLE #TEMP_SUB_CASE_NOTIF; + + SELECT DISTINCT ts.* + ,NOTIFCREATEDCOUNT + ,NOTIFSENTCOUNT + ,NOTIFICATIONDATE + ,FIRSTNOTIFICATIONSTATUS + ,FIRSTNOTIFICATIONSENDDATE + ,LASTNOTIFICATIONDATE + ,LASTNOTIFICATIONSENDDATE + ,FIRSTNOTIFICATIONDATE + ,FIRSTNOTIFICATIONSUBMITTEDBY + ,LASTNOTIFICATIONSUBMITTEDBY + ,t.TXT AS NOTITXT + ,t.NOTIFICATION_LOCAL_ID + ,t.NOTIFCURRENTSTATE + ,ROWN = ROW_NUMBER() OVER ( + PARTITION BY ts.PUBLIC_HEALTH_CASE_UID ORDER BY ts.PUBLIC_HEALTH_CASE_UID + ) + INTO #TEMP_SUB_CASE_NOTIF + FROM #TEMP_PHCSUBJECT ts WITH (NOLOCK) + LEFT JOIN #TEMP_MIN_MAX_NOTIFICATION tn WITH (NOLOCK) ON tn.PUBLIC_HEALTH_CASE_UID = ts.PUBLIC_HEALTH_CASE_UID + LEFT JOIN #TEMP_SAS_LATEST_NOT t WITH (NOLOCK) ON t.PUBLIC_HEALTH_CASE_UID = ts.PUBLIC_HEALTH_CASE_UID; + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + DELETE + FROM #TEMP_SUB_CASE_NOTIF + WHERE ROWN > 1 + --IF OBJECT_ID ('TEMP_PHCFACT') IS NOT NULL DROP TABLE TEMP_PHCFACT; + --IF OBJECT_ID ('TEMP_MIN_MAX_NOTIFICATION') IS NOT NULL DROP TABLE TEMP_MIN_MAX_NOTIFICATION; + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_CONFIRM'; + + IF OBJECT_ID('#TEMP_CONFIRM') IS NOT NULL + DROP TABLE #TEMP_CONFIRM; + + SELECT CONFIRMATION_METHOD.PUBLIC_HEALTH_CASE_UID + ,A.CONFIRMATION_METHOD_TIME + ,CONFIRMATION_METHOD_CD + ,tc.CODE_SHORT_DESC_TXT AS CONFIRMATION_METHOD_DESC_TXT + ,tc.investigation_form_cd + INTO #TEMP_CONFIRM + FROM ( + SELECT CONFIRMATION_METHOD.PUBLIC_HEALTH_CASE_UID + ,MAX(CONFIRMATION_METHOD_TIME) AS CONFIRMATION_METHOD_TIME + FROM NBS_ODSE.DBO.CONFIRMATION_METHOD WITH (NOLOCK) + GROUP BY CONFIRMATION_METHOD.PUBLIC_HEALTH_CASE_UID + ) A + INNER JOIN #TEMP_PHCINFO t WITH (NOLOCK) ON t.PUBLIC_HEALTH_CASE_UID = A.PUBLIC_HEALTH_CASE_UID + INNER JOIN NBS_ODSE.DBO.CONFIRMATION_METHOD WITH (NOLOCK) ON A.PUBLIC_HEALTH_CASE_UID = CONFIRMATION_METHOD.PUBLIC_HEALTH_CASE_UID + LEFT OUTER JOIN #TEMP_INV_FORM_CODE_DATA tc WITH (NOLOCK) ON CONFIRMATION_METHOD.CONFIRMATION_METHOD_CD = tc.CODE + AND tc.investigation_form_cd = t.investigation_form_cd + AND tc.CODE_SET_NM= 'PHC_CONF_M' + GROUP BY CONFIRMATION_METHOD.PUBLIC_HEALTH_CASE_UID + ,CONFIRMATION_METHOD_CD + ,A.CONFIRMATION_METHOD_TIME + ,CONFIRMATION_METHOD_DESC_TXT + ,tc.CODE_SHORT_DESC_TXT + ,tc.investigation_form_cd; + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + + UPDATE t + SET CONFIRMATION_METHOD_DESC_TXT = CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT + FROM #TEMP_CONFIRM t + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON t.CONFIRMATION_METHOD_CD = CODE_VALUE_GENERAL.CODE + AND CODE_SET_NM= 'PHC_CONF_M' + where t.INVESTIGATION_FORM_CD NOT LIKE 'PG_%' or INVESTIGATION_FORM_CD is null + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_CONFIRM_CONCAT'; + + IF OBJECT_ID('#TEMP_CONFIRM_CONCAT') IS NOT NULL + DROP TABLE #TEMP_CONFIRM_CONCAT; + + SELECT DISTINCT PUBLIC_HEALTH_CASE_UID + ,CONFIRMATION_METHOD_TIME = ( + SELECT TOP 1 CONFIRMATION_METHOD_TIME + FROM #TEMP_CONFIRM WITH (NOLOCK) + WHERE PUBLIC_HEALTH_CASE_UID = T.PUBLIC_HEALTH_CASE_UID + ) + ,CONFIRMATION_METHOD_DESC_TXT = STUFF(( + SELECT ', ' + CONFIRMATION_METHOD_DESC_TXT + FROM #TEMP_CONFIRM WITH (NOLOCK) + WHERE PUBLIC_HEALTH_CASE_UID = T.PUBLIC_HEALTH_CASE_UID + FOR XML PATH('') + ), 1, 1, '') + ,CONFIRMATION_METHOD_CD = STUFF(( + SELECT ', ' + CONFIRMATION_METHOD_CD + FROM #TEMP_CONFIRM WITH (NOLOCK) + WHERE PUBLIC_HEALTH_CASE_UID = T.PUBLIC_HEALTH_CASE_UID + FOR XML PATH('') + ), 1, 1, '') + INTO #TEMP_CONFIRM_CONCAT + FROM #TEMP_CONFIRM AS T; + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_SUB_CASE_CONF_NOTIF'; + + IF OBJECT_ID('#TEMP_SUB_CASE_CONF_NOTIF') IS NOT NULL + DROP TABLE #TEMP_SUB_CASE_CONF_NOTIF; + + SELECT t.* + ,CONFIRMATION_METHOD_TIME + ,CONFIRMATION_METHOD_CD + ,CONFIRMATION_METHOD_DESC_TXT + INTO #TEMP_SUB_CASE_CONF_NOTIF + FROM #TEMP_SUB_CASE_NOTIF t WITH (NOLOCK) + LEFT OUTER JOIN #TEMP_CONFIRM_CONCAT tc WITH (NOLOCK) ON t.PUBLIC_HEALTH_CASE_UID = tc.PUBLIC_HEALTH_CASE_UID; + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + + COMMIT TRANSACTION; + + ----------------------PHCREPORTER + BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_PHCREPORTER'; + + IF OBJECT_ID('#TEMP_PHCREPORTER') IS NOT NULL + DROP TABLE #TEMP_PHCREPORTER; + + SELECT PAR.ACT_UID + ,PNM.PERSON_UID AS ENTITY_UID + ,TYPE_CD + ,TEL.PHONE_NBR_TXT + ,PAR.FROM_TIME + ,isnull(RTRIM(LTRIM(PNM.LAST_NM)), '') + ', ' + isnull(PNM.FIRST_NM, '') AS NAME + INTO #TEMP_PHCREPORTER + FROM NBS_ODSE.DBO.PARTICIPATION AS PAR WITH (NOLOCK) + INNER JOIN #TEMP_PHCINFO t on t.public_health_CASE_UID =PAR.ACT_UID + INNER JOIN NBS_ODSE.DBO.PERSON AS P WITH (NOLOCK) ON P.PERSON_UID = PAR.SUBJECT_ENTITY_UID + LEFT JOIN NBS_ODSE.DBO.PERSON_NAME AS PNM WITH (NOLOCK) ON PNM.PERSON_UID = PAR.SUBJECT_ENTITY_UID + AND PNM.NM_USE_CD = 'L' + AND PNM.RECORD_STATUS_CD = 'ACTIVE' + LEFT JOIN NBS_ODSE.DBO.ENTITY_LOCATOR_PARTICIPATION AS ELP WITH (NOLOCK) ON ELP.ENTITY_UID = PAR.SUBJECT_ENTITY_UID + AND ELP.CLASS_CD = 'TELE' + AND ELP.USE_CD = 'WP' /*WORK PLACE*/ + AND ELP.CD = 'PH' /*PHONE*/ + AND ELP.RECORD_STATUS_CD = 'ACTIVE' + LEFT JOIN NBS_ODSE.DBO.TELE_LOCATOR AS TEL WITH (NOLOCK) ON ELP.LOCATOR_UID = TEL.TELE_LOCATOR_UID + /*AND (TEL.RECORD_STATUS_CD IS NOT NULL AND TEL.RECORD_STATUS_CD ='ACTIVE')*/ + WHERE ( + PAR.TYPE_CD IN ( + 'OrgAsReporterOfPHC' + ,'InvestgrOfPHC' + ,'PerAsReporterOfPHC' + ,'PhysicianOfPHC' + ) + ) + UNION + + SELECT PAR2.ACT_UID + ,ORG.ORGANIZATION_UID AS ENTITY_UID + ,TYPE_CD + ,' ' AS PHONE_NBR_TXT + ,PAR2.FROM_TIME + ,ORG.NM_TXT AS NAME + FROM NBS_ODSE.DBO.PARTICIPATION AS PAR2 WITH (NOLOCK) + INNER JOIN #TEMP_PHCINFO t on t.public_health_CASE_UID =PAR2.ACT_UID + INNER JOIN NBS_ODSE.DBO.ORGANIZATION_NAME AS ORG WITH (NOLOCK) ON ORG.ORGANIZATION_UID = PAR2.SUBJECT_ENTITY_UID + INNER JOIN NBS_ODSE.DBO.ORGANIZATION WITH (NOLOCK) ON ORGANIZATION.ORGANIZATION_UID = ORG.ORGANIZATION_UID + WHERE PAR2.RECORD_STATUS_CD = 'ACTIVE' + AND PAR2.TYPE_CD = 'OrgAsReporterOfPHC' + AND LTRIM(RTRIM(NM_TXT)) <> '' + /*AND (ORGANIZATION.[last_chg_time] >= @batch_start_time + AND ORGANIZATION.[last_chg_time] < @batch_end_time) + OR( t.LASTUPDATE >= @batch_start_time + AND t.LASTUPDATE < @batch_end_time) + OR (NOTIF_LAST_CHG_TIME >= @batch_start_time + AND NOTIF_LAST_CHG_TIME < @batch_end_time) */ + ORDER BY ACT_UID + ,TYPE_CD; + + IF OBJECT_ID('#TEMP_ENTITY') IS NOT NULL + DROP TABLE #TEMP_ENTITY; + + SELECT ACT_UID + ,PROVIDERNAME = MAX(CASE + WHEN TYPE_CD = 'PhysicianOfPHC' + THEN NAME + END) + ,PROVIDERPHONE = MAX(CASE + WHEN TYPE_CD = 'PhysicianOfPHC' + THEN PHONE_NBR_TXT + END) + ,REPORTERNAME = MAX(CASE + WHEN TYPE_CD = 'PerAsReporterOfPHC' + THEN NAME + END) + ,REPORTERPHONE = MAX(CASE + WHEN TYPE_CD = 'PerAsReporterOfPHC' + THEN PHONE_NBR_TXT + END) + ,INVESTIGATORNAME = MAX(CASE + WHEN TYPE_CD = 'InvestgrOfPHC' + THEN NAME + END) + ,INVESTIGATORPHONE = MAX(CASE + WHEN TYPE_CD = 'InvestgrOfPHC' + THEN PHONE_NBR_TXT + END) + ,INVESTIGATORASSIGNEDDATE = MAX(CASE + WHEN TYPE_CD = 'InvestgrOfPHC' + THEN FROM_TIME + END) + ,ORGANIZATIONNAME = MAX(CASE + WHEN TYPE_CD = 'OrgAsReporterOfPHC' + THEN NAME + END) + INTO #TEMP_ENTITY + FROM #TEMP_PHCREPORTER WITH (NOLOCK) + GROUP BY ACT_UID + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_CASE_ENTITY'; + + IF OBJECT_ID('#TEMP_CASE_ENTITY') IS NOT NULL + DROP TABLE #TEMP_CASE_ENTITY; + + SELECT tn.* + ,te.PROVIDERNAME + ,te.PROVIDERPHONE + ,te.REPORTERNAME + ,te.REPORTERPHONE + ,te.INVESTIGATORNAME + ,te.INVESTIGATORPHONE + ,te.INVESTIGATORASSIGNEDDATE + ,te.ORGANIZATIONNAME + INTO #TEMP_CASE_ENTITY + FROM #TEMP_SUB_CASE_CONF_NOTIF tn WITH (NOLOCK) + LEFT OUTER JOIN #TEMP_ENTITY te WITH (NOLOCK) ON tn.PUBLIC_HEALTH_CASE_UID = te.ACT_UID; + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + + COMMIT TRANSACTION; + + -------------------------PHCPERSONRACE + BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Generating TEMP_PHCPERSONRACE'; + + IF OBJECT_ID('#TEMP_PHCPERSONRACE') IS NOT NULL + DROP TABLE #TEMP_PHCPERSONRACE; + + SELECT DISTINCT PER.PERSON_UID + ,PER.RACE_CATEGORY_CD + ,CODE_SHORT_DESC_TXT AS RACE_DESC_TXT + INTO #TEMP_PHCPERSONRACE + FROM NBS_ODSE.DBO.PERSON_RACE AS PER WITH (NOLOCK) + ,NBS_SRTE.DBO.RACE_CODE AS RAC WITH (NOLOCK) + ,#TEMP_UPDATE_NEW_PATIENT t WITH (NOLOCK) + WHERE PER.RACE_CD = PER.RACE_CATEGORY_CD /*CONCATENATE ONLY CATEGORY CD AND DESC*/ + AND t.PERSON_UID=PER.PERSON_UID + AND PER.RACE_CD = RAC.CODE + AND RAC.PARENT_IS_CD = 'ROOT' + AND RAC.CODE_SET_NM = 'P_RACE_CAT' + UNION + + SELECT DISTINCT PER.PERSON_UID + ,PER.RACE_CATEGORY_CD + ,CODE_SHORT_DESC_TXT AS RACE_DESC_TXT + --INTO TEMP_RACE1 + FROM NBS_ODSE.DBO.PERSON_RACE AS PER WITH (NOLOCK) + ,NBS_SRTE.DBO.RACE_CODE AS RAC WITH (NOLOCK) + ,#TEMP_UPDATE_NEW_PATIENT t WITH (NOLOCK) + WHERE PER.RACE_CD = 'ROOT' + AND t.PERSON_UID=PER.PERSON_UID + AND PER.RACE_CATEGORY_CD = RAC.CODE + + IF OBJECT_ID('#TEMP_PHCPERSONRACE_CONCAT') IS NOT NULL + DROP TABLE #TEMP_PHCPERSONRACE_CONCAT; + + SELECT DISTINCT PERSON_UID + ,RACE_CONCATENATED_DESC_TXT = STUFF(( + SELECT ', ' + RACE_DESC_TXT + FROM #TEMP_PHCPERSONRACE WITH (NOLOCK) + WHERE PERSON_UID = T.PERSON_UID + FOR XML PATH('') + ), 1, 1, '') + ,RACE_CONCATENATED_TXT = STUFF(( + SELECT ', ' + RACE_CATEGORY_CD + FROM #TEMP_PHCPERSONRACE WITH (NOLOCK) + WHERE PERSON_UID = T.PERSON_UID + FOR XML PATH('') + ), 1, 1, '') + INTO #TEMP_PHCPERSONRACE_CONCAT + FROM #TEMP_PHCPERSONRACE AS T; + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@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_PHC_FACT'; + + IF OBJECT_ID('#TEMP_PHC_FACT') IS NOT NULL + DROP TABLE #TEMP_PHC_FACT; + + SELECT te.* + ,RACE_CONCATENATED_DESC_TXT + ,RACE_CONCATENATED_TXT + ,cast(null as varchar(20)) EVENT_TYPE + ,cast(null as datetime) EVENT_DATE + ,cast(null as datetime) REPORT_DATE + ,cast(null as datetime) MART_RECORD_CREATION_TIME + INTO #TEMP_PHC_FACT + FROM #TEMP_CASE_ENTITY te + LEFT OUTER JOIN #TEMP_PHCPERSONRACE_CONCAT tc WITH (NOLOCK) ON te.PERSON_UID = tc.PERSON_UID; + + ---------------------- + -- Moved this column above SQL + -- ALTER TABLE #TEMP_PHC_FACT ADD EVENT_TYPE VARCHAR(20); + + -- ALTER TABLE #TEMP_PHC_FACT ADD EVENT_DATE DATETIME; + + -- ALTER TABLE #TEMP_PHC_FACT ADD REPORT_DATE DATETIME; + + -- ALTER TABLE #TEMP_PHC_FACT ADD MART_RECORD_CREATION_TIME DATETIME; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@Proc_Step_no + ,@Proc_Step_Name + ,0 + ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Updating TEMP_PHC_FACT'; + + UPDATE #TEMP_PHC_FACT + SET EVENT_TYPE = ( + CASE + WHEN ONSETDATE IS NOT NULL + THEN 'O' + WHEN ONSETDATE IS NULL + AND DIAGNOSIS_DATE IS NOT NULL + THEN 'D' + WHEN ONSETDATE IS NULL + AND DIAGNOSIS_DATE IS NULL + AND RPT_TO_COUNTY_TIME IS NOT NULL + THEN 'C' + WHEN ONSETDATE IS NULL + AND DIAGNOSIS_DATE IS NULL + AND RPT_TO_COUNTY_TIME IS NULL + AND RPT_TO_STATE_TIME IS NOT NULL + THEN 'S' + WHEN PHC_CODE IN ('10220') + AND THERAPY_DATE IS NOT NULL + THEN 'RVCT_DTS' + WHEN PHC_CODE IN ('10220') + AND THERAPY_DATE IS NULL + AND RPT_FORM_CMPLT_TIME IS NOT NULL + THEN 'RVCT_DR' + ELSE 'P' + END + ) + ,EVENT_DATE = ( + CASE + WHEN ONSETDATE IS NOT NULL + THEN ONSETDATE + WHEN ONSETDATE IS NULL + AND DIAGNOSIS_DATE IS NOT NULL + THEN DIAGNOSIS_DATE + WHEN ONSETDATE IS NULL + AND DIAGNOSIS_DATE IS NULL + AND RPT_TO_COUNTY_TIME IS NOT NULL + THEN RPT_TO_COUNTY_TIME + WHEN ONSETDATE IS NULL + AND DIAGNOSIS_DATE IS NULL + AND RPT_TO_COUNTY_TIME IS NULL + AND RPT_TO_STATE_TIME IS NOT NULL + THEN RPT_TO_STATE_TIME + WHEN PHC_CODE IN ('10220') + AND THERAPY_DATE IS NOT NULL + THEN THERAPY_DATE + WHEN PHC_CODE IN ('10220') + AND THERAPY_DATE IS NULL + AND RPT_FORM_CMPLT_TIME IS NOT NULL + THEN RPT_FORM_CMPLT_TIME + ELSE PHC_ADD_TIME + END + ) + ,REPORT_DATE = ( + CASE + WHEN RPT_TO_COUNTY_TIME is not null + THEN RPT_TO_COUNTY_TIME + WHEN RPT_TO_STATE_TIME IS NOT NULL AND RPT_TO_COUNTY_TIME IS NULL + THEN RPT_TO_STATE_TIME + ELSE PHC_ADD_TIME + END + ) + ,DECEASED_TIME = ( + CASE + WHEN PHC_CODE IN ( + '10220' + ,'10030' + ) + THEN INVESTIGATION_DEATH_DATE + ELSE DECEASED_TIME + END + ) + ,INVESTIGATORASSIGNEDDATE = ( + CASE + WHEN PHC_CODE IN ( + '10220' + ,'10030' + ) + THEN INVESTIGATOR_ASSIGN_DATE + ELSE INVESTIGATORASSIGNEDDATE + END + ) + ,MART_RECORD_CREATION_TIME = getDate();; + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + -- the below 4 update's are already covered in the above sql + -- so commenting the below 4 sql + -- UPDATE #TEMP_PHC_FACT SET EVENT_DATE = THERAPY_DATE WHERE PHC_CODE ='10220' and THERAPY_DATE is not null ; + -- UPDATE #TEMP_PHC_FACT SET EVENT_DATE = rpt_form_cmplt_time WHERE PHC_CODE ='10220' and THERAPY_DATE is null and rpt_form_cmplt_time is not null; + -- UPDATE #TEMP_PHC_FACT SET EVENT_TYPE = 'RVCT_DTS' WHERE PHC_CODE ='10220' and THERAPY_DATE is not null ; + -- UPDATE #TEMP_PHC_FACT SET EVENT_TYPE = 'RVCT_DR' WHERE PHC_CODE ='10220' and THERAPY_DATE is null and rpt_form_cmplt_time is not null; + + -- below sql are now in the corresponding select clause + -- UPDATE #TEMP_PHC_FACT SET State_cd = NULL WHERE State_cd = LTRIM(RTRIM('')); + -- UPDATE #TEMP_PHC_FACT SET phctxt = NULL WHERE phctxt = LTRIM(RTRIM('')); + -- UPDATE #TEMP_PHC_FACT SET cntry_cd = NULL WHERE cntry_cd = LTRIM(RTRIM('')); + + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Cleanup temp tables'; +/* + IF OBJECT_ID('#TEMP_UPDATE_NEW_PATIENT') IS NOT NULL + DROP TABLE #TEMP_UPDATE_NEW_PATIENT; + + IF OBJECT_ID('#TEMP_PHCINFO1') IS NOT NULL + DROP TABLE #TEMP_PHCINFO1; + + IF OBJECT_ID('#TEMP_PHCINFO2') IS NOT NULL + DROP TABLE #TEMP_PHCINFO2; + + IF OBJECT_ID('#TEMP_PHCINFO3') IS NOT NULL + DROP TABLE #TEMP_PHCINFO3; + + IF OBJECT_ID('#TEMP_INV_FORM_CODE_DATA') IS NOT NULL + DROP TABLE #TEMP_INV_FORM_CODE_DATA; + + IF OBJECT_ID('#TEMP_PHCPATIENTINFO') IS NOT NULL + DROP TABLE #TEMP_PHCPATIENTINFO; + + IF OBJECT_ID('#TEMP_PHCSUBJECT') IS NOT NULL + DROP TABLE #TEMP_PHCSUBJECT; + + IF OBJECT_ID('#TEMP_PHCINFO') IS NOT NULL + DROP TABLE #TEMP_PHCINFO; + + IF OBJECT_ID('#TEMP_SUMMARYUID') IS NOT NULL + DROP TABLE #TEMP_SUMMARYUID; + + IF OBJECT_ID('#TEMP_CASECNT') IS NOT NULL + DROP TABLE #TEMP_CASECNT; + IF OBJECT_ID('#TEMP_SAS_LATEST_NOT') IS NOT NULL + DROP TABLE #TEMP_SAS_LATEST_NOT; + + IF OBJECT_ID('#TEMP_SAS_NOTIFICATION') IS NOT NULL + DROP TABLE #TEMP_SAS_NOTIFICATION; + + IF OBJECT_ID('#TEMP_CASECNT') IS NOT NULL + DROP TABLE #TEMP_CASECNT; + + IF OBJECT_ID('#TEMP_MIN_MAX_NOTIFICATION') IS NOT NULL + DROP TABLE #TEMP_MIN_MAX_NOTIFICATION; + + IF OBJECT_ID('#TEMP_PHCFACT') IS NOT NULL + DROP TABLE #TEMP_PHCFACT; + + IF OBJECT_ID('#TEMP_SUB_CASE_NOTIF') IS NOT NULL + DROP TABLE #TEMP_SUB_CASE_NOTIF; + + IF OBJECT_ID('#TEMP_CONFIRM') IS NOT NULL + DROP TABLE #TEMP_CONFIRM; + + IF OBJECT_ID('#TEMP_PHCREPORTER') IS NOT NULL + DROP TABLE #TEMP_PHCREPORTER; + + IF OBJECT_ID('#TEMP_ENTITY') IS NOT NULL + DROP TABLE #TEMP_ENTITY; + + IF OBJECT_ID('#TEMP_CASE_ENTITY') IS NOT NULL + DROP TABLE #TEMP_CASE_ENTITY; + + IF OBJECT_ID('#TEMP_PHCPERSONRACE') IS NOT NULL + DROP TABLE #TEMP_PHCPERSONRACE; + + IF OBJECT_ID('#TEMP_PHCPERSONRACE_CONCAT') IS NOT NULL + DROP TABLE #TEMP_PHCPERSONRACE_CONCAT; +*/ + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'STEP-AVOIDED' + ,@Proc_Step_no + ,@Proc_Step_Name + ,0 + ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Updating PublicHealthCaseFact'; + + INSERT INTO NBS_ODSE.DBO.PUBLICHEALTHCASEFACT ( + PUBLIC_HEALTH_CASE_UID + ,ADULTS_IN_HOUSE_NBR + ,HSPTL_ADMISSION_DT + ,HSPTL_DISCHARGE_DT + ,AGE_CATEGORY_CD + ,AGE_REPORTED_TIME + ,AGE_REPORTED_UNIT_CD + ,AGE_REPORTED + ,AWARENESS_CD + ,AWARENESS_DESC_TXT + ,BIRTH_GENDER_CD + ,BIRTH_ORDER_NBR + ,BIRTH_TIME + ,BIRTH_TIME_CALC + , + --,BIRTH_TIME_STD + CASE_CLASS_CD + ,CASE_TYPE_CD + ,CD_SYSTEM_CD + ,CD_SYSTEM_DESC_TXT + ,CENSUS_BLOCK_CD + ,CENSUS_MINOR_CIVIL_DIVISION_CD + ,CENSUS_TRACK_CD + , + --,CNTY_CODE_DESC_TXT + CHILDREN_IN_HOUSE_NBR + ,CITY_CD + ,CITY_DESC_TXT + ,CONFIDENTIALITY_CD + ,CONFIDENTIALITY_DESC_TXT + ,CONFIRMATION_METHOD_CD + ,CONFIRMATION_METHOD_TIME + ,COUNTY + ,CNTRY_CD + ,CNTY_CD + ,CURR_SEX_CD + ,DECEASED_IND_CD + ,DECEASED_TIME + ,DETECTION_METHOD_CD + ,DETECTION_METHOD_DESC_TXT + ,DIAGNOSIS_DATE + ,DISEASE_IMPORTED_CD + ,DISEASE_IMPORTED_DESC_TXT + ,EDUCATION_LEVEL_CD + ,ELP_CLASS_CD + ,ELP_FROM_TIME + ,ELP_TO_TIME + ,ETHNIC_GROUP_IND + ,ETHNIC_GROUP_IND_DESC + ,EVENT_DATE + ,EVENT_TYPE + ,EDUCATION_LEVEL_DESC_TXT + ,FIRSTNOTIFICATIONSENDDATE + ,FIRSTNOTIFICATIONDATE + ,FIRSTNOTIFICATIONSTATUS + ,FIRSTNOTIFICATIONSUBMITTEDBY + , + --,GEOLATITUDE + --,GEOLONGITUDE + GROUP_CASE_CNT + ,INVESTIGATION_STATUS_CD + ,INVESTIGATORASSIGNEDDATE + ,INVESTIGATORNAME + ,INVESTIGATORPHONE + ,JURISDICTION_CD + ,LASTNOTIFICATIONDATE + ,LASTNOTIFICATIONSENDDATE + ,LASTNOTIFICATIONSUBMITTEDBY + ,MARITAL_STATUS_CD + ,MARITAL_STATUS_DESC_TXT + , + --,MART_RECORD_CREATION_DATE + MART_RECORD_CREATION_TIME + ,MMWR_WEEK + ,MMWR_YEAR + ,MSA_CONGRESS_DISTRICT_CD + ,MULTIPLE_BIRTH_IND + ,NOTIFCREATEDCOUNT + ,NOTIFICATIONDATE + ,NOTIFSENTCOUNT + ,OCCUPATION_CD + ,ONSETDATE + ,ORGANIZATIONNAME + ,OUTCOME_CD + ,OUTBREAK_FROM_TIME + ,OUTBREAK_IND + ,OUTBREAK_NAME + ,OUTBREAK_TO_TIME + ,PAR_TYPE_CD + ,PAT_AGE_AT_ONSET + ,PAT_AGE_AT_ONSET_UNIT_CD + ,POSTAL_LOCATOR_UID + ,PERSON_CD + ,PERSON_CODE_DESC + ,PERSON_UID + ,PHC_ADD_TIME + ,PHC_CODE + ,PHC_CODE_DESC + ,PHC_CODE_SHORT_DESC + ,PRIM_LANG_CD + ,PRIM_LANG_DESC_TXT + ,PROG_AREA_CD + ,PROVIDERPHONE + ,PROVIDERNAME + ,PST_RECORD_STATUS_TIME + ,PST_RECORD_STATUS_CD + ,RACE_CONCATENATED_TXT + ,RACE_CONCATENATED_DESC_TXT + ,REGION_DISTRICT_CD + ,RECORD_STATUS_CD + ,REPORTERNAME + ,REPORTERPHONE + ,RPT_CNTY_CD + ,RPT_FORM_CMPLT_TIME + ,RPT_SOURCE_CD + ,RPT_SOURCE_DESC_TXT + ,RPT_TO_COUNTY_TIME + ,RPT_TO_STATE_TIME + ,SHARED_IND + ,STATE + ,STATE_CD + , + --,STATE_CODE_SHORT_DESC_TXT + STATUS_CD + ,STREET_ADDR1 + ,STREET_ADDR2 + ,ELP_USE_CD + ,ZIP_CD + ,PATIENTNAME + ,JURISDICTION + ,INVESTIGATIONSTARTDATE + ,PROGRAM_JURISDICTION_OID + ,REPORT_DATE + ,PERSON_PARENT_UID + ,PERSON_LOCAL_ID + ,SUB_ADDR_AS_OF_DATE + ,STATE_CASE_ID + ,LOCAL_ID + ,AGE_REPORTED_UNIT_DESC_TXT + ,BIRTH_GENDER_DESC_TXT + ,CASE_CLASS_DESC_TXT + ,CNTRY_DESC_TXT + ,CURR_SEX_DESC_TXT + ,INVESTIGATION_STATUS_DESC_TXT + ,OCCUPATION_DESC_TXT + ,OUTCOME_DESC_TXT + ,PAT_AGE_AT_ONSET_UNIT_DESC_TXT + ,PROG_AREA_DESC_TXT + ,RPT_CNTY_DESC_TXT + ,OUTBREAK_NAME_DESC + ,CONFIRMATION_METHOD_DESC_TXT + ,LASTUPDATE + ,PHCTXT + ,NOTITXT + ,NOTIFICATION_LOCAL_ID + ,NOTIFCURRENTSTATE + ,HOSPITALIZED_IND + ) ( + SELECT PUBLIC_HEALTH_CASE_UID + ,ADULTS_IN_HOUSE_NBR + ,HSPTL_ADMISSION_DT + ,HSPTL_DISCHARGE_DT + ,AGE_CATEGORY_CD + ,AGE_REPORTED_TIME + ,AGE_REPORTED_UNIT_CD + ,CONVERT(NUMERIC, substring(RTRIM(LTRIM(AGE_REPORTED)), 1, 3)) + ,AWARENESS_CD + ,AWARENESS_DESC_TXT + ,BIRTH_GENDER_CD + ,BIRTH_ORDER_NBR + ,BIRTH_TIME + ,BIRTH_TIME_CALC + , + --,BIRTH_TIME_STD + CASE_CLASS_CD + ,CASE_TYPE_CD + ,CD_SYSTEM_CD + ,CD_SYSTEM_DESC_TXT + ,CENSUS_BLOCK_CD + ,CENSUS_MINOR_CIVIL_DIVISION_CD + ,CENSUS_TRACK_CD + , + --,CNTY_CODE_DESC_TXT + CHILDREN_IN_HOUSE_NBR + ,CITY_CD + ,CITY_DESC_TXT + ,CONFIDENTIALITY_CD + ,CONFIDENTIALITY_DESC_TXT + ,substring(RTRIM(LTRIM(CONFIRMATION_METHOD_CD)), 1, 300) + ,CONFIRMATION_METHOD_TIME + ,COUNTY + ,CNTRY_CD + ,CNTY_CD + ,CURR_SEX_CD + ,DECEASED_IND_CD + ,DECEASED_TIME + ,DETECTION_METHOD_CD + ,DETECTION_METHOD_DESC_TXT + ,DIAGNOSIS_DATE + ,DISEASE_IMPORTED_CD + ,DISEASE_IMPORTED_DESC_TXT + ,EDUCATION_LEVEL_CD + ,ELP_CLASS_CD + ,ELP_FROM_TIME + ,ELP_TO_TIME + ,ETHNIC_GROUP_IND + ,RTRIM(LTRIM(substring(ETHNIC_GROUP_IND_DESC, 1, 50))) + ,EVENT_DATE + ,substring(EVENT_TYPE, 1, 10) + ,EDUCATION_LEVEL_DESC_TXT + ,FIRSTNOTIFICATIONSENDDATE + ,FIRSTNOTIFICATIONDATE + ,FIRSTNOTIFICATIONSTATUS + ,FIRSTNOTIFICATIONSUBMITTEDBY + , + --,GEOLATITUDE + --,GEOLONGITUDE + GROUP_CASE_CNT + ,INVESTIGATION_STATUS_CD + ,INVESTIGATORASSIGNEDDATE + ,INVESTIGATORNAME + ,INVESTIGATORPHONE + ,JURISDICTION_CD + ,LASTNOTIFICATIONDATE + ,LASTNOTIFICATIONSENDDATE + ,LASTNOTIFICATIONSUBMITTEDBY + ,MARITAL_STATUS_CD + ,MARITAL_STATUS_DESC_TXT + , + --,MART_RECORD_CREATION_DATE + MART_RECORD_CREATION_TIME + ,MMWR_WEEK + ,MMWR_YEAR + ,MSA_CONGRESS_DISTRICT_CD + ,MULTIPLE_BIRTH_IND + ,NOTIFCREATEDCOUNT + ,NOTIFICATIONDATE + ,NOTIFSENTCOUNT + ,OCCUPATION_CD + ,ONSETDATE + ,ORGANIZATIONNAME + ,OUTCOME_CD + ,OUTBREAK_FROM_TIME + ,OUTBREAK_IND + ,OUTBREAK_NAME + ,OUTBREAK_TO_TIME + ,PAR_TYPE_CD + ,PAT_AGE_AT_ONSET + ,PAT_AGE_AT_ONSET_UNIT_CD + ,POSTAL_LOCATOR_UID + ,PERSON_CD + ,PERSON_CODE_DESC + ,PERSON_UID + ,PHC_ADD_TIME + ,PHC_CODE + ,PHC_CODE_DESC + ,substring(PHC_CODE_SHORT_DESC, 1, 50) + ,PRIM_LANG_CD + ,PRIM_LANG_DESC_TXT + ,PROG_AREA_CD + ,PROVIDERPHONE + ,PROVIDERNAME + ,PST_RECORD_STATUS_TIME + ,PST_RECORD_STATUS_CD + ,substring(RTRIM(LTRIM(RACE_CONCATENATED_TXT)), 1, 100) + ,substring(RTRIM(LTRIM(RACE_CONCATENATED_DESC_TXT)), 1, 500) + ,REGION_DISTRICT_CD + ,RECORD_STATUS_CD + ,REPORTERNAME + ,REPORTERPHONE + ,RPT_CNTY_CD + ,RPT_FORM_CMPLT_TIME + ,RPT_SOURCE_CD + ,RPT_SOURCE_DESC_TXT + ,RPT_TO_COUNTY_TIME + ,RPT_TO_STATE_TIME + ,SHARED_IND + ,STATE + ,STATE_CD + , + --,STATE_CODE_SHORT_DESC_TXT + STATUS_CD + ,STREET_ADDR1 + ,STREET_ADDR2 + ,ELP_USE_CD + ,ZIP_CD + ,RTRIM(LTRIM(PATIENTNAME)) + ,substring(JURISDICTION, 1, 50) + ,INVESTIGATIONSTARTDATE + ,PROGRAM_JURISDICTION_OID + ,REPORT_DATE + ,PERSON_PARENT_UID + ,PERSON_LOCAL_ID + ,SUB_ADDR_AS_OF_DATE + ,STATE_CASE_ID + ,LOCAL_ID + ,AGE_REPORTED_UNIT_DESC_TXT + ,BIRTH_GENDER_DESC_TXT + ,CASE_CLASS_DESC_TXT + ,CNTRY_DESC_TXT + ,CURR_SEX_DESC_TXT + ,INVESTIGATION_STATUS_DESC_TXT + ,OCCUPATION_DESC_TXT + ,OUTCOME_DESC_TXT + ,PAT_AGE_AT_ONSET_UNIT_DESC_TXT + ,PROG_AREA_DESC_TXT + ,RPT_CNTY_DESC_TXT + ,OUTBREAK_NAME_DESC + ,CONFIRMATION_METHOD_DESC_TXT + ,LASTUPDATE + ,PHCTXT + ,NOTITXT + ,NOTIFICATION_LOCAL_ID + ,NOTIFCURRENTSTATE + ,HOSPITALIZED_IND + FROM #TEMP_PHC_FACT WITH (NOLOCK) + ); + + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@PROC_STEP_NO + ,@PROC_STEP_NAME + ,@ROWCOUNT_NO + ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + SET @Proc_Step_no = @Proc_Step_no + 1; + SET @Proc_Step_Name = 'Updating SubjectRaceInfo'; + + INSERT INTO NBS_ODSE.DBO.SUBJECTRACEINFO ( + PUBLIC_HEALTH_CASE_UID + ,MORBREPORT_UID + ,RACE_CD + ,RACE_CATEGORY_CD + ,RACE_DESC_TXT + ) ( + SELECT PUBLIC_HEALTH_CASE_UID + ,0 AS MORBREPORT_UID + ,RACE_CD + ,RACE_CATEGORY_CD + ,RACE_DESC_TXT FROM NBS_ODSE.DBO.PERSON_RACE AS PR WITH (NOLOCK) + ,#TEMP_PHC_FACT AS PF WITH (NOLOCK) WHERE PR.PERSON_UID = PF.PERSON_UID + ); + SELECT @ROWCOUNT_NO = @@ROWCOUNT; + IF OBJECT_ID('#TEMP_PHC_FACT') IS NOT NULL + DROP TABLE #TEMP_PHC_FACT; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @Batch_id + ,'PCHMartETL' + ,'NBS_ODSE.PublicHealthCaseFact' + ,'COMPLETED' + ,@Proc_Step_no + ,@Proc_Step_Name + ,@ROWCOUNT_NO + ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 999; + SET @Proc_Step_Name = 'SP_COMPLETE'; + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ) + VALUES ( + @batch_id + ,'PCHMartETL' + ,'PCHMartETL' + ,'COMPLETE' + ,@Proc_Step_no + ,@Proc_Step_name + ,@RowCount_no + ); + + COMMIT TRANSACTION; + + EXEC [rdb].[dbo].[sp_nbs_batch_complete] @type_code; + + Select 'SUCCESS' + END TRY + + BEGIN CATCH + IF @@TRANCOUNT > 0 + ROLLBACK TRANSACTION; + + DECLARE @ErrorNumber INT = ERROR_NUMBER(); + DECLARE @ErrorLine INT = ERROR_LINE(); + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + DECLARE @ErrorSeverity INT = ERROR_SEVERITY(); + DECLARE @ErrorState INT = ERROR_STATE(); + + INSERT INTO [rdb].[dbo].[job_flow_log] ( + batch_id + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[Error_Description] + ,[row_count] + ) + VALUES ( + @batch_id + ,'PCHMartETL' + ,'PCHMartETL' + ,'ERROR' + ,@Proc_Step_no + ,'ERROR - ' + @Proc_Step_name + ,'Step -' + CAST(@Proc_Step_no AS VARCHAR(3)) + ' -' + CAST(@ErrorMessage AS VARCHAR(500)) + ,0 + ); + + RETURN 'ERROR - ' + @ErrorMessage; + END CATCH +END; diff --git a/liquibase-service/src/main/resources/db/odse/019-v_inv_form_code_data-001.sql b/liquibase-service/src/main/resources/db/odse/019-v_inv_form_code_data-001.sql new file mode 100644 index 00000000..7c55059b --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/019-v_inv_form_code_data-001.sql @@ -0,0 +1,25 @@ +-- dbo.v_inv_form_code_data source + +-- dbo.v_inv_form_code_data source + +-- dbo.v_inv_form_code_data source + +-- dbo.v_inv_form_code_data source + +CREATE OR ALTER VIEW dbo.v_inv_form_code_data AS + +SELECT DISTINCT DATA_LOCATION + ,CODESET.CODE_SET_GROUP_ID + ,CODESET.CODE_SET_NM + ,NBS_UI_METADATA.INVESTIGATION_FORM_CD,NBS_UI_METADATA.Last_chg_time + ,CODE_VALUE_GENERAL.CODE + ,CODE_VALUE_GENERAL.CODE_SHORT_DESC_TXT +-- INTO #TEMP_INV_FORM_CODE_DATA +FROM NBS_ODSE.DBO.NBS_UI_METADATA WITH (NOLOCK) + INNER JOIN NBS_SRTE.DBO.CODESET WITH (NOLOCK) ON NBS_UI_METADATA.CODE_SET_GROUP_ID = CODESET.CODE_SET_GROUP_ID + INNER JOIN NBS_SRTE.DBO.CONDITION_CODE WITH (NOLOCK) ON CONDITION_CODE.INVESTIGATION_FORM_CD = NBS_UI_METADATA.INVESTIGATION_FORM_CD + INNER JOIN NBS_SRTE.DBO.CODE_VALUE_GENERAL WITH (NOLOCK) ON CODE_VALUE_GENERAL.CODE_SET_NM = CODESET.CODE_SET_NM + WHERE question_identifier in ( + 'DEM218', 'DEM114', 'INV163', 'INV161', 'DEM126', 'DEM113', 'DEM127', 'INV159', 'INV152', 'DEM155', 'NOT112', 'INV109', 'INV107', 'DEM140', 'DEM116_B', 'DEM139', 'INV145', 'INV150', 'INV151', 'NPP063', 'INV144', 'DEM142', 'INV108', 'DEM152', 'DEM238', 'INV187', 'INV112', 'INV174', 'INV107', 'INV2002') + AND CODESET.CODE_SET_GROUP_ID IS NOT NULL +-- ORDER BY NBS_UI_METADATA.DATA_LOCATION; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/odse/020-fn_get_record_status-001.sql b/liquibase-service/src/main/resources/db/odse/020-fn_get_record_status-001.sql new file mode 100644 index 00000000..6872565d --- /dev/null +++ b/liquibase-service/src/main/resources/db/odse/020-fn_get_record_status-001.sql @@ -0,0 +1,14 @@ +CREATE OR ALTER FUNCTION dbo.fn_get_record_status (@record_status_cd nvarchar(100)) + RETURNS nvarchar(200) + AS +begin + -- get the record status by code + -- Other than LOG_DEL rest of them are all ACTIVE +select @record_status_cd = + case + when @record_status_cd = 'LOG_DEL' then 'INACTIVE' + when @record_status_cd = 'SUPERCEDED' then 'INACTIVE' + else 'ACTIVE' + end + RETURN @record_status_cd +end; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/000-db-general-001.sql b/liquibase-service/src/main/resources/db/rdb/000-db-general-001.sql new file mode 100644 index 00000000..f3c826de --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/000-db-general-001.sql @@ -0,0 +1,3 @@ +-- Upgrade compatibility level to allow inbuilt functions such as StringSplit +ALTER DATABASE RDB_MODERN SET COMPATIBILITY_LEVEL = 130; + diff --git a/liquibase-service/src/main/resources/db/rdb/001-create_nrt_batch_log-001.sql b/liquibase-service/src/main/resources/db/rdb/001-create_nrt_batch_log-001.sql new file mode 100644 index 00000000..9441fe8c --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/001-create_nrt_batch_log-001.sql @@ -0,0 +1,12 @@ + +IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'nrt_batch_log' and xtype = 'U') +CREATE TABLE dbo.nrt_batch_log( + batch_id bigint IDENTITY(1,1) NOT NULL PRIMARY KEY, + batch_start_time datetime DEFAULT (getdate()) NULL, + batch_end_time datetime NULL, + procedure_name varchar(500) NULL, + param_id_list nvarchar(max) NULL, + status varchar(50) NULL, + log_detail nvarchar(max) NULL, + error_log nvarchar(max) NULL +); \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/002-create_nrt_organization-001.sql b/liquibase-service/src/main/resources/db/rdb/002-create_nrt_organization-001.sql new file mode 100644 index 00000000..33f3443d --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/002-create_nrt_organization-001.sql @@ -0,0 +1,39 @@ + +IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'nrt_organization' and xtype = 'U') +CREATE TABLE dbo.nrt_organization +( + organization_uid bigint NOT NULL, + local_id varchar(50) NULL, + record_status varchar(50) NULL, + organization_name varchar(50) NULL, + general_comments varchar(2000) NULL, + quick_code varchar(50) NULL, + stand_ind_class varchar(50) NULL, + facility_id varchar(50) NULL, + facility_id_auth varchar(199) NULL, + street_address_1 varchar(50) NULL, + street_address_2 varchar(50) NULL, + city varchar(50) NULL, + state varchar(50) NULL, + state_code varchar(50) NULL, + zip varchar(10) NULL, + county varchar(50) NULL, + county_code varchar(50) NULL, + country varchar(50) NULL, + address_comments varchar(2000) NULL, + phone_work varchar(50) NULL, + phone_ext_work varchar(50) NULL, + email varchar(50) NULL, + phone_comments varchar(2000) NULL, + fax varchar(50) NULL, + entry_method varchar(50) NULL, + add_user_id bigint NULL, + add_user_name varchar(50) NULL, + add_time datetime NULL, + last_chg_user_id bigint NULL, + last_chg_user_name varchar(50) NULL, + last_chg_time datetime NULL, + refresh_datetime datetime2(7) GENERATED ALWAYS AS ROW START NOT NULL, + max_datetime datetime2(7) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL, + PERIOD FOR SYSTEM_TIME (refresh_datetime, max_datetime) +); diff --git a/liquibase-service/src/main/resources/db/rdb/003-create_nrt_organization_key-001.sql b/liquibase-service/src/main/resources/db/rdb/003-create_nrt_organization_key-001.sql new file mode 100644 index 00000000..b10ff2bd --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/003-create_nrt_organization_key-001.sql @@ -0,0 +1,14 @@ + +drop table if exists dbo.nrt_organization_key; + +CREATE TABLE dbo.nrt_organization_key ( + d_organization_key bigint IDENTITY (1,1) NOT NULL, + organization_uid bigint NULL +); + +declare @max bigint; +select @max=max(organization_key)+1 from dbo.D_ORGANIZATION ; +select @max; +if @max IS NULL --check when max is returned as null + SET @max = 1 +DBCC CHECKIDENT ('dbo.nrt_organization_key', RESEED, @max); \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/004-create_nrt_provider-001.sql b/liquibase-service/src/main/resources/db/rdb/004-create_nrt_provider-001.sql new file mode 100644 index 00000000..ffe1e7e2 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/004-create_nrt_provider-001.sql @@ -0,0 +1,43 @@ + +IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'nrt_provider' and xtype = 'U') +create table dbo.nrt_provider +( + provider_uid bigint not null primary key, + local_id varchar(50) null, + record_status varchar(50) null, + name_prefix varchar(50) null, + first_name varchar(50) null, + middle_name varchar(50) null, + last_name varchar(50) null, + name_suffix varchar(50) null, + name_degree varchar(50) null, + general_comments varchar(2000) null, + quick_code varchar(50) null, + provider_registration_num varchar(50) null, + provider_registration_num_auth varchar(199) null, + street_address_1 varchar(50) null, + street_address_2 varchar(50) null, + city varchar(50) null, + state varchar(50) null, + state_code varchar(50) null, + zip varchar(50) null, + county varchar(50) null, + county_code varchar(50) null, + country varchar(50) null, + address_comments varchar(2000) null, + phone_work varchar(50) null, + phone_ext_work varchar(50) null, + email_work varchar(50) null, + phone_comments varchar(2000) null, + phone_cell varchar(50) null, + entry_method varchar(50) null, + add_user_id bigint null, + add_user_name varchar(50) null, + add_time datetime null, + last_chg_user_id bigint null, + last_chg_user_name varchar(50) null, + last_chg_time datetime null, + refresh_datetime datetime2 generated always as row start not null, + max_datetime datetime2 generated always as row end hidden not null, + period for system_time (refresh_datetime,max_datetime) +); diff --git a/liquibase-service/src/main/resources/db/rdb/005-create_nrt_provider_key.sql b/liquibase-service/src/main/resources/db/rdb/005-create_nrt_provider_key.sql new file mode 100644 index 00000000..d2b2a405 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/005-create_nrt_provider_key.sql @@ -0,0 +1,14 @@ + +drop table if exists dbo.nrt_provider_key; + +CREATE TABLE dbo.nrt_provider_key ( + d_provider_key bigint IDENTITY (1,1) NOT NULL, + provider_uid bigint NULL +); + +declare @max bigint; +select @max=max(provider_key)+1 from dbo.d_provider; +select @max; +if @max IS NULL --check when max is returned as null + SET @max = 1 +DBCC CHECKIDENT ('dbo.nrt_provider_key', RESEED, @max); \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/006-create_nrt_patient-001.sql b/liquibase-service/src/main/resources/db/rdb/006-create_nrt_patient-001.sql new file mode 100644 index 00000000..a079fd84 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/006-create_nrt_patient-001.sql @@ -0,0 +1,90 @@ + +IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'nrt_patient' and xtype = 'U') +create table dbo.nrt_patient +( + patient_uid bigint not null primary key, + patient_mpr_uid bigint null, + record_status varchar(50) null, + local_id varchar(50) null, + general_comments varchar(2000) null, + first_name varchar(50) null, + middle_name varchar(50) null, + last_name varchar(50) null, + name_suffix varchar(50) null, + alias_nickname varchar(50) null, + street_address_1 varchar(50) null, + street_address_2 varchar(50) null, + city varchar(50) null, + state varchar(50) null, + state_code varchar(50) null, + zip varchar(50) null, + county varchar(50) null, + county_code varchar(50) null, + country varchar(50) null, + within_city_limits varchar(10) null, + phone_home varchar(50) null, + phone_ext_home varchar(50) null, + phone_work varchar(50) null, + phone_ext_work varchar(50) null, + phone_cell varchar(50) null, + email varchar(100) null, + dob datetime null, + age_reported numeric(18, 0) null, + age_reported_unit varchar(20) null, + birth_sex varchar(50) null, + current_sex varchar(50) null, + deceased_indicator varchar(50) null, + deceased_date datetime null, + marital_status varchar(50) null, + ssn varchar(50) null, + ethnicity varchar(50) null, + race_calculated varchar(50) null, + race_calc_details varchar(4000) null, + race_amer_ind_1 varchar(50) null, + race_amer_ind_2 varchar(50) null, + race_amer_ind_3 varchar(50) null, + race_amer_ind_gt3_ind varchar(50) null, + race_amer_ind_all varchar(2000) null, + race_asian_1 varchar(50) null, + race_asian_2 varchar(50) null, + race_asian_3 varchar(50) null, + race_asian_gt3_ind varchar(50) null, + race_asian_all varchar(2000) null, + race_black_1 varchar(50) null, + race_black_2 varchar(50) null, + race_black_3 varchar(50) null, + race_black_gt3_ind varchar(50) null, + race_black_all varchar(2000) null, + race_nat_hi_1 varchar(50) null, + race_nat_hi_2 varchar(50) null, + race_nat_hi_3 varchar(50) null, + race_nat_hi_gt3_ind varchar(50) null, + race_nat_hi_all varchar(2000) null, + race_white_1 varchar(50) null, + race_white_2 varchar(50) null, + race_white_3 varchar(50) null, + race_white_gt3_ind varchar(50) null, + race_white_all varchar(2000) null, + patient_number varchar(50) null, + patient_number_auth varchar(199) null, + entry_method varchar(50) null, + speaks_english varchar(100) null, + unk_ethnic_rsn varchar(100) null, + curr_sex_unk_rsn varchar(100) null, + preferred_gender varchar(100) null, + addl_gender_info varchar(100) null, + census_tract varchar(100) null, + race_all varchar(4000) null, + birth_country varchar(50) null, + primary_occupation varchar(50) null, + primary_language varchar(50) null, + add_user_id bigint null, + add_user_name varchar(50) null, + add_time datetime null, + last_chg_user_id bigint null, + last_chg_user_name varchar(50) null, + last_chg_time datetime null, + refresh_datetime datetime2 generated always as row start not null, + max_datetime datetime2 generated always as row end hidden not null, + period for system_time (refresh_datetime,max_datetime) +); diff --git a/liquibase-service/src/main/resources/db/rdb/007-create_nrt_patient_key-001.sql b/liquibase-service/src/main/resources/db/rdb/007-create_nrt_patient_key-001.sql new file mode 100644 index 00000000..4c491934 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/007-create_nrt_patient_key-001.sql @@ -0,0 +1,14 @@ + +drop table if exists dbo.nrt_patient_key; + +CREATE TABLE dbo.nrt_patient_key ( + d_patient_key bigint IDENTITY(1,1) NOT NULL, + patient_uid bigint NULL +); + +declare @max bigint; +select @max=max(patient_key)+1 from dbo.d_patient; +select @max; +if @max IS NULL --check when max is returned as null + SET @max = 1 +DBCC CHECKIDENT ('dbo.nrt_patient_key', RESEED, @max); \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/008-create_nrt_investigation-001.sql b/liquibase-service/src/main/resources/db/rdb/008-create_nrt_investigation-001.sql new file mode 100644 index 00000000..4d7b51ef --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/008-create_nrt_investigation-001.sql @@ -0,0 +1,116 @@ +USE RDB_MODERN; +IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'nrt_investigation' and xtype = 'U') +CREATE TABLE dbo.nrt_investigation ( + public_health_case_uid bigint NOT NULL PRIMARY KEY, + program_jurisdiction_oid bigint NULL, + local_id varchar(50) NULL, + shared_ind varchar(50) NULL, + outbreak_name varchar(100) NULL, + investigation_status varchar(50) NULL, + inv_case_status varchar(50) NULL, + case_type_cd char(1) NULL, + txt varchar(2000) NULL, + jurisdiction_cd varchar(20) NULL, + jurisdiction_nm varchar(100) NULL, + earliest_rpt_to_phd_dt datetime NULL, + effective_from_time datetime NULL, + effective_to_time datetime NULL, + rpt_form_cmplt_time datetime NULL, + activity_from_time datetime NULL, + rpt_src_cd_desc varchar(100) NULL, + rpt_to_county_time datetime NULL, + rpt_to_state_time datetime NULL, + mmwr_week varchar(10) NULL, + mmwr_year varchar(10) NULL, + disease_imported_ind varchar(100) NULL, + imported_from_country varchar(50) NULL, + imported_from_state varchar(50) NULL, + imported_from_county varchar(50) NULL, + imported_city_desc_txt varchar(2000) NULL, + earliest_rpt_to_cdc_dt datetime NULL, + rpt_source_cd varchar(20) NULL, + imported_country_cd varchar(20) NULL, + imported_state_cd varchar(20) NULL, + imported_county_cd varchar(20) NULL, + import_frm_city_cd varchar(50) NULL, + diagnosis_time datetime NULL, + hospitalized_admin_time datetime NULL, + hospitalized_discharge_time datetime NULL, + hospitalized_duration_amt numeric(18, 0) NULL, + outbreak_ind varchar(50) NULL, + outbreak_ind_val varchar(300) NULL, + hospitalized_ind varchar(50) NULL, + hospitalized_ind_cd varchar(20) NULL, + city_county_case_nbr varchar(50) NULL, + transmission_mode_cd varchar(20) NULL, + transmission_mode varchar(50) NULL, + record_status_cd varchar(20) NULL, + pregnant_ind_cd varchar(20) NULL, + pregnant_ind varchar(50) NULL, + die_frm_this_illness_ind varchar(50) NULL, + day_care_ind varchar(50) NULL, + day_care_ind_cd varchar(20) NULL, + food_handler_ind_cd varchar(20) NULL, + food_handler_ind varchar(50) NULL, + deceased_time datetime NULL, + pat_age_at_onset varchar(20) NULL, + pat_age_at_onset_unit_cd varchar(20) NULL, + pat_age_at_onset_unit varchar(20) NULL, + investigator_assigned_time datetime NULL, + detection_method_desc_txt varchar(50) NULL, + effective_duration_amt varchar(50) NULL, + effective_duration_unit_cd varchar(20) NULL, + illness_duration_unit varchar(50) NULL, + contact_inv_txt varchar(2000) NULL, + contact_inv_priority varchar(20) NULL, + infectious_from_date datetime NULL, + infectious_to_date datetime NULL, + contact_inv_status varchar(20) NULL, + activity_to_time datetime NULL, + program_area_description varchar(50) NULL, + add_user_id bigint NULL, + add_user_name varchar(50) NULL, + add_time datetime NULL, + last_chg_user_id bigint NULL, + last_chg_user_name varchar(50) NULL, + last_chg_time datetime NULL, + referral_basis_cd varchar(20) NULL, + referral_basis varchar(100) NULL, + curr_process_state varchar(100) NULL, + inv_priority_cd varchar(100) NULL, + coinfection_id varchar(100) NULL, + legacy_case_id varchar(100) NULL, + curr_process_state_cd varchar(20) NULL, + investigation_status_cd varchar(20) NULL, + notification_local_id varchar(50) NULL, + notification_add_time datetime NULL, + notification_record_status_cd varchar(20) NULL, + notification_last_chg_time datetime NULL, + investigator_id bigint NULL, + physician_id bigint NULL, + patient_id bigint NULL, + organization_id bigint NULL, + phc_inv_form_id bigint NULL, + outcome_cd varchar(20) NULL, + disease_imported_cd varchar(20) NULL, + mood_cd varchar(10) NULL, + class_cd varchar(10) NULL, + case_class_cd varchar(20) NULL, + cd varchar(50) NULL, + cd_desc_txt varchar(100) NULL, + prog_area_cd varchar(20) NULL, + jurisdiction_code varchar(20) NULL, + jurisdiction_code_desc_txt varchar(255) NULL, + inv_state_case_id varchar(199) NULL, + rdb_table_name_list nvarchar(max) NULL, + case_management_uid bigint NULL, + nac_page_case_uid bigint NULL, + nac_last_chg_time datetime NULL, + nac_add_time datetime NULL, + person_as_reporter_uid bigint NULL, + hospital_uid bigint NULL, + ordering_facility_uid bigint NULL, + refresh_datetime datetime2(7) GENERATED ALWAYS AS ROW START NOT NULL, + max_datetime datetime2(7) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL, + PERIOD FOR SYSTEM_TIME (refresh_datetime, max_datetime) +); \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/009-create_nrt_investigation_key-001.sql b/liquibase-service/src/main/resources/db/rdb/009-create_nrt_investigation_key-001.sql new file mode 100644 index 00000000..1c6a1c78 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/009-create_nrt_investigation_key-001.sql @@ -0,0 +1,14 @@ + +drop table if exists dbo.nrt_investigation_key; + +CREATE TABLE dbo.nrt_investigation_key ( + d_investigation_key bigint IDENTITY(1,1) NOT NULL, + case_uid bigint NULL +); + +declare @max bigint; +select @max=max(INVESTIGATION_KEY)+1 from dbo.INVESTIGATION; +select @max; +if @max IS NULL --check when max is returned as null + SET @max = 1 +DBCC CHECKIDENT ('dbo.nrt_investigation_key', RESEED, @max); \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/010-create_nrt_investigation_confirmation-001.sql b/liquibase-service/src/main/resources/db/rdb/010-create_nrt_investigation_confirmation-001.sql new file mode 100644 index 00000000..678e7c47 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/010-create_nrt_investigation_confirmation-001.sql @@ -0,0 +1,12 @@ + +IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'nrt_investigation_confirmation' and xtype = 'U') +CREATE TABLE dbo.nrt_investigation_confirmation +( + public_health_case_uid bigint NULL, + confirmation_method_cd varchar(50) NULL, + confirmation_method_desc_txt varchar(150) NULL, + confirmation_method_time datetime NULL, + refresh_datetime datetime2(7) GENERATED ALWAYS AS ROW START NOT NULL, + max_datetime datetime2(7) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL, + PERIOD FOR SYSTEM_TIME (refresh_datetime, max_datetime) +); diff --git a/liquibase-service/src/main/resources/db/rdb/011-create_nrt_confirmation_method_key-001.sql b/liquibase-service/src/main/resources/db/rdb/011-create_nrt_confirmation_method_key-001.sql new file mode 100644 index 00000000..0a50e527 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/011-create_nrt_confirmation_method_key-001.sql @@ -0,0 +1,14 @@ + +drop table if exists dbo.nrt_confirmation_method_key; + +CREATE TABLE dbo.nrt_confirmation_method_key ( + d_confirmation_method_key bigint IDENTITY(1,1) NOT NULL, + confirmation_method_cd varchar(50) NULL +); + +declare @max bigint; +select @max=max(confirmation_method_key)+1 from dbo.confirmation_method; +select @max; +if @max IS NULL --check when max is returned as null + SET @max = 1 +DBCC CHECKIDENT ('dbo.nrt_confirmation_method_key', RESEED, @max); diff --git a/liquibase-service/src/main/resources/db/rdb/012-create_nrt_investigation_observation-001.sql b/liquibase-service/src/main/resources/db/rdb/012-create_nrt_investigation_observation-001.sql new file mode 100644 index 00000000..e056ea8f --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/012-create_nrt_investigation_observation-001.sql @@ -0,0 +1,9 @@ + +IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'nrt_investigation_observation' and xtype = 'U') +CREATE TABLE dbo.nrt_investigation_observation ( + public_health_case_uid bigint NULL, + observation_id bigint NULL, + refresh_datetime datetime2(7) GENERATED ALWAYS AS ROW START NOT NULL, + max_datetime datetime2(7) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL, + PERIOD FOR SYSTEM_TIME (refresh_datetime, max_datetime) +); \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/013-create_nrt_notifications-001.sql b/liquibase-service/src/main/resources/db/rdb/013-create_nrt_notifications-001.sql new file mode 100644 index 00000000..4f152c18 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/013-create_nrt_notifications-001.sql @@ -0,0 +1,33 @@ + +IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'nrt_notifications' and xtype = 'U') +CREATE TABLE dbo.nrt_notifications ( + source_act_uid bigint NOT NULL, + public_health_case_uid bigint NULL, + source_class_cd varchar(10) NULL, + target_class_cd varchar(10) NULL, + act_type_cd varchar(50) NULL, + status_cd char(1) NULL, + notification_uid bigint NOT NULL, + prog_area_cd varchar(20) NULL, + program_jurisdiction_oid bigint NULL, + jurisdiction_cd varchar(20) NULL, + record_status_time datetime NULL, + status_time datetime NULL, + rpt_sent_time datetime NULL, + notif_status varchar(20) NULL, + notif_local_id varchar(50) NULL, + notif_comments varchar(1000) NULL, + notif_add_time datetime NULL, + notif_add_user_id bigint NULL, + notif_add_user_name varchar(50) NULL, + notif_last_chg_user_id bigint NULL, + notif_last_chg_user_name varchar(50) NULL, + notif_last_chg_time datetime NULL, + local_patient_id varchar(50) NULL, + local_patient_uid bigint NULL, + condition_cd varchar(50) NULL, + condition_desc varchar(100) NULL, + refresh_datetime datetime2(7) GENERATED ALWAYS AS ROW START NOT NULL, + max_datetime datetime2(7) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL, + PERIOD FOR SYSTEM_TIME (refresh_datetime, max_datetime) +); diff --git a/liquibase-service/src/main/resources/db/rdb/014-create_nrt_notification_key-001.sql b/liquibase-service/src/main/resources/db/rdb/014-create_nrt_notification_key-001.sql new file mode 100644 index 00000000..9f1ba483 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/014-create_nrt_notification_key-001.sql @@ -0,0 +1,13 @@ + +drop table if exists dbo.nrt_notification_key; + +CREATE TABLE dbo.nrt_notification_key ( + d_notification_key bigint IDENTITY (1,1) NOT NULL, + notification_uid bigint NULL +); +declare @max bigint; +select @max=max(notification_key)+1 from dbo.NOTIFICATION ; +select @max; +if @max IS NULL --check when max is returned as null + SET @max = 1; +DBCC CHECKIDENT ('dbo.nrt_notification_key', RESEED, @max); diff --git a/liquibase-service/src/main/resources/db/rdb/015-create_nrt_page_case_answer-001.sql b/liquibase-service/src/main/resources/db/rdb/015-create_nrt_page_case_answer-001.sql new file mode 100644 index 00000000..ac252dbc --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/015-create_nrt_page_case_answer-001.sql @@ -0,0 +1,31 @@ + +IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'nrt_page_case_answer' and xtype = 'U') +CREATE TABLE dbo.nrt_page_case_answer +( + act_uid bigint NOT NULL, + nbs_case_answer_uid bigint NOT NULL, + nbs_ui_metadata_uid bigint NOT NULL, + nbs_rdb_metadata_uid bigint NOT NULL, + nbs_question_uid bigint NOT NULL, + rdb_table_nm varchar(30) NULL, + rdb_column_nm varchar(30) NULL, + answer_txt varchar(2000) NULL, + answer_group_seq_nbr varchar(20) NULL, + investigation_form_cd varchar(50) NULL, + unit_value varchar(50) NULL, + question_identifier varchar(50) NULL, + data_location varchar(150) NULL, + question_label varchar(300) NULL, + other_value_ind_cd char(1) NULL, + unit_type_cd varchar(20) NULL, + mask varchar(50) NULL, + data_type varchar(20) NULL, + question_group_seq_nbr int NULL, + code_set_group_id bigint NULL, + block_nm varchar(30) NULL, + last_chg_time datetime NULL, + record_status_cd varchar(20) NOT NULL, + refresh_datetime datetime2(7) GENERATED ALWAYS AS ROW START NOT NULL, + max_datetime datetime2(7) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL, + PERIOD FOR SYSTEM_TIME (refresh_datetime, max_datetime) +); diff --git a/liquibase-service/src/main/resources/db/rdb/016-create_nrt_ldf_data_key-001.sql b/liquibase-service/src/main/resources/db/rdb/016-create_nrt_ldf_data_key-001.sql new file mode 100644 index 00000000..6b99d84e --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/016-create_nrt_ldf_data_key-001.sql @@ -0,0 +1,16 @@ + +drop table if exists dbo.nrt_ldf_data_key; + +CREATE TABLE dbo.nrt_ldf_data_key( + d_ldf_data_key bigint IDENTITY (1,1) NOT NULL, + d_ldf_group_key bigint NULL, + business_object_uid bigint NULL, + ldf_uid bigint null +); + +declare @max bigint; +select @max=max(ldf_data_key)+1 from dbo.ldf_data; +select @max; +if @max IS NULL --check when max is returned as null + SET @max = 1 +DBCC CHECKIDENT ('dbo.nrt_ldf_data_key', RESEED, @max); \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/017-create_nrt_ldf_group_key-001.sql b/liquibase-service/src/main/resources/db/rdb/017-create_nrt_ldf_group_key-001.sql new file mode 100644 index 00000000..94e52e31 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/017-create_nrt_ldf_group_key-001.sql @@ -0,0 +1,14 @@ + +drop table if exists dbo.nrt_ldf_group_key; + +CREATE TABLE dbo.nrt_ldf_group_key ( + d_ldf_group_key bigint IDENTITY(1,1) NOT NULL, + business_object_uid bigint NULL +); + +declare @max bigint; +select @max=max(ldf_group_key)+1 from dbo.ldf_group; +select @max; +if @max IS NULL --check when max is returned as null + SET @max = 1 +DBCC CHECKIDENT ('dbo.nrt_ldf_group_key', RESEED, @max); \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/018-create_nrt_observation-001.sql b/liquibase-service/src/main/resources/db/rdb/018-create_nrt_observation-001.sql new file mode 100644 index 00000000..f9245bdc --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/018-create_nrt_observation-001.sql @@ -0,0 +1,38 @@ + +IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'nrt_observation' and xtype = 'U') +CREATE TABLE dbo.nrt_observation +( + observation_uid bigint NOT NULL PRIMARY KEY, + class_cd varchar(10) NULL, + mood_cd varchar(10) NULL, + act_uid bigint NULL, + cd_desc_text varchar(1000) NULL, + record_status_cd varchar(20) NULL, + jurisdiction_cd varchar(20) NULL, + program_jurisdiction_oid bigint NULL, + prog_area_cd varchar(20) NULL, + pregnant_ind_cd varchar(20) NULL, + local_id varchar(50) NULL, + activity_to_time datetime NULL, + effective_from_time datetime NULL, + rpt_to_state_time datetime NULL, + electronic_ind char(1) NULL, + version_ctrl_nbr smallint NOT NULL, + ordering_person_id bigint NULL, + patient_id bigint NULL, + result_observation_uid bigint NULL, + author_organization_id bigint NULL, + ordering_organization_id bigint NULL, + performing_organization_id bigint NULL, + material_id bigint NULL, + add_user_id bigint NULL, + add_user_name varchar(50) NULL, + add_time datetime NULL, + last_chg_user_id bigint NULL, + last_chg_user_name varchar(50) NULL, + last_chg_time datetime NULL, + refresh_datetime datetime2(7) GENERATED ALWAYS AS ROW START NOT NULL, + max_datetime datetime2(7) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL, + PERIOD FOR SYSTEM_TIME (refresh_datetime, max_datetime) +); + diff --git a/liquibase-service/src/main/resources/db/rdb/019-fn_get_record_status-001.sql b/liquibase-service/src/main/resources/db/rdb/019-fn_get_record_status-001.sql new file mode 100644 index 00000000..a2215467 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/019-fn_get_record_status-001.sql @@ -0,0 +1,14 @@ +CREATE OR ALTER FUNCTION dbo.fn_get_record_status (@record_status_cd nvarchar(100)) + RETURNS nvarchar(200) + AS +begin + -- get the record status by code + -- Other than LOG_DEL rest of them are all ACTIVE +select @record_status_cd = + case + when @record_status_cd = 'LOG_DEL' then 'INACTIVE' + when @record_status_cd = 'SUPERCEDED' then 'INACTIVE' + else 'ACTIVE' + end + RETURN @record_status_cd +end; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/020-sp_nrt_organization_postprocessing-001.sql b/liquibase-service/src/main/resources/db/rdb/020-sp_nrt_organization_postprocessing-001.sql new file mode 100644 index 00000000..4b290ee8 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/020-sp_nrt_organization_postprocessing-001.sql @@ -0,0 +1,378 @@ +CREATE OR ALTER PROCEDURE dbo.sp_nrt_organization_postprocessing @id_list nvarchar(max), @debug bit = 'false' +AS +BEGIN + +BEGIN TRY + + /* Logging */ + declare @rowcount bigint; + declare @proc_step_no float = 0; + declare @proc_step_name varchar(200) = ''; + declare @batch_id bigint; + declare @create_dttm datetime2(7) = current_timestamp ; + declare @update_dttm datetime2(7) = current_timestamp ; + declare @dataflow_name varchar(200) = 'Organization POST-Processing'; + declare @package_name varchar(200) = 'sp_nrt_organization_postprocessing'; + + set @batch_id = cast((format(getdate(),'yyMMddHHmmss')) as bigint); + +INSERT INTO [dbo].[job_flow_log] ( + batch_id + ,[create_dttm] + ,[update_dttm] + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[msg_description1] + ,[row_count] +) +VALUES ( + @batch_id + ,@create_dttm + ,@update_dttm + ,@dataflow_name + ,@package_name + ,'START' + ,0 + ,'SP_Start' + ,LEFT(@id_list,500) + ,0 + ); + +SET @proc_step_name='Create ORGANIZATION Temp table for -'+ LEFT(@id_list,165); + SET @proc_step_no = 1; + + /* Temp organization table creation*/ +select + ORGANIZATION_KEY, + nrt.organization_uid as ORGANIZATION_UID, + nrt.local_id as ORGANIZATION_LOCAL_ID, + nrt.record_status as ORGANIZATION_RECORD_STATUS, + nrt.organization_name as ORGANIZATION_NAME, + nrt.general_comments as ORGANIZATION_GENERAL_COMMENTS, + nrt.quick_code as ORGANIZATION_QUICK_CODE, + nrt.stand_ind_class as ORGANIZATION_STAND_IND_CLASS, + nrt.facility_id as ORGANIZATION_FACILITY_ID, + nrt.facility_id_auth as ORGANIZATION_FACILITY_ID_AUTH, + nrt.street_address_1 as ORGANIZATION_STREET_ADDRESS_1, + nrt.street_address_2 as ORGANIZATION_STREET_ADDRESS_2, + nrt.city as ORGANIZATION_CITY, + nrt.state as ORGANIZATION_STATE, + nrt.state_code as ORGANIZATION_STATE_CODE, + nrt.zip as ORGANIZATION_ZIP, + nrt.county as ORGANIZATION_COUNTY, + nrt.county_code as ORGANIZATION_COUNTY_CODE, + nrt.country as ORGANIZATION_COUNTRY, + nrt.address_comments as ORGANIZATION_ADDRESS_COMMENTS, + nrt.phone_work as ORGANIZATION_PHONE_WORK, + nrt.phone_ext_work as ORGANIZATION_PHONE_EXT_WORK, + nrt.email as ORGANIZATION_EMAIL, + nrt.phone_comments as ORGANIZATION_PHONE_COMMENTS, + nrt.fax as ORGANIZATION_FAX, + nrt.entry_method as ORGANIZATION_ENTRY_METHOD, + nrt.add_user_name as ORGANIZATION_ADDED_BY, + nrt.add_time as ORGANIZATION_ADD_TIME, + nrt.last_chg_user_name as ORGANIZATION_LAST_UPDATED_BY, + nrt.last_chg_time as ORGANIZATION_LAST_CHANGE_TIME +into #temp_org_table +from dbo.nrt_organization nrt + left join dbo.d_organization o on o.organization_uid = nrt.organization_uid +where nrt.organization_uid in (SELECT value FROM STRING_SPLIT(@id_list, ',')); + +/* Logging */ +set @rowcount=@@rowcount + 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 + ,LEFT(@id_list,500) + ); + + + /* D_Organization Update Operation */ +BEGIN TRANSACTION; + SET @proc_step_name='Update D_ORAGANIZATION Dimension'; + SET @proc_step_no = 2; +update dbo.d_organization +set [ORGANIZATION_KEY] = org.ORGANIZATION_KEY, + [ORGANIZATION_UID] = org.ORGANIZATION_UID, + [ORGANIZATION_LOCAL_ID] = org.ORGANIZATION_LOCAL_ID, + [ORGANIZATION_RECORD_STATUS] = org.ORGANIZATION_RECORD_STATUS, + [ORGANIZATION_NAME] = CASE WHEN (substring(org.ORGANIZATION_NAME,1,50)) is null then null else substring(org.ORGANIZATION_NAME,1,50) end, + [ORGANIZATION_GENERAL_COMMENTS] = org.ORGANIZATION_GENERAL_COMMENTS, + ORGANIZATION_QUICK_CODE = CASE WHEN (substring(org.ORGANIZATION_QUICK_CODE,1,50)) is null then null else substring(org.ORGANIZATION_QUICK_CODE,1,50) end, + [ORGANIZATION_STAND_IND_CLASS] = org.ORGANIZATION_STAND_IND_CLASS, + [ORGANIZATION_FACILITY_ID] = CASE when (substring(org.ORGANIZATION_FACILITY_ID,1,50)) is null then null else substring(org.ORGANIZATION_FACILITY_ID,1,50) end, + [ORGANIZATION_FACILITY_ID_AUTH] = CASE WHEN (substring(org.ORGANIZATION_FACILITY_ID_AUTH,1,50)) is null then null else substring(org.ORGANIZATION_FACILITY_ID_AUTH,1,50) end, + [ORGANIZATION_STREET_ADDRESS_1] = substring(org.[ORGANIZATION_STREET_ADDRESS_1] ,1,50), + [ORGANIZATION_STREET_ADDRESS_2] = substring(org.[ORGANIZATION_STREET_ADDRESS_2] ,1,50), + [ORGANIZATION_CITY] = substring(org.[ORGANIZATION_CITY],1,50), + [ORGANIZATION_STATE] = org.[ORGANIZATION_STATE], + [ORGANIZATION_STATE_CODE] = org.[ORGANIZATION_STATE_CODE], + [ORGANIZATION_ZIP] = org.[ORGANIZATION_ZIP] , + [ORGANIZATION_COUNTY] = org.[ORGANIZATION_COUNTY] , + [ORGANIZATION_COUNTY_CODE] = org.[ORGANIZATION_COUNTY_CODE] , + [ORGANIZATION_COUNTRY] = org.[ORGANIZATION_COUNTRY], + [ORGANIZATION_ADDRESS_COMMENTS] = org.[ORGANIZATION_ADDRESS_COMMENTS], + [ORGANIZATION_PHONE_WORK] = org.[ORGANIZATION_PHONE_WORK] , + [ORGANIZATION_PHONE_EXT_WORK] = org.[ORGANIZATION_PHONE_EXT_WORK] , + [ORGANIZATION_EMAIL] = substring(org.[ORGANIZATION_EMAIL],1,50), + [ORGANIZATION_PHONE_COMMENTS] = org.[ORGANIZATION_PHONE_COMMENTS] , + [ORGANIZATION_ENTRY_METHOD] = org.[ORGANIZATION_ENTRY_METHOD] , + [ORGANIZATION_LAST_CHANGE_TIME] = org.[ORGANIZATION_LAST_CHANGE_TIME], + [ORGANIZATION_ADD_TIME] = org.[ORGANIZATION_ADD_TIME] , + [ORGANIZATION_ADDED_BY] = org.[ORGANIZATION_ADDED_BY] , + [ORGANIZATION_LAST_UPDATED_BY] = org.[ORGANIZATION_LAST_UPDATED_BY], + [ORGANIZATION_FAX] = org.[ORGANIZATION_FAX] + from #temp_org_table org + inner join dbo.d_organization o on org.organization_uid = o.organization_uid + and org.organization_key = o.organization_key + and o.organization_key is not null; + + /* Logging */ + set @rowcount=@@rowcount + 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 + ,LEFT(@id_list,500) + ); + + SET @proc_step_name='Insert into D_ORAGANIZATION Dimension'; + SET @proc_step_no = 3; + + /* D_Organization Insert Operation */ + -- delete from the key table to generate new keys for the resulting new data to be inserted +begin try + +delete from dbo.nrt_organization_key ; +insert into dbo.nrt_organization_key(organization_uid) +select organization_uid from #temp_org_table where organization_key is null order by organization_uid; + +insert into dbo.d_organization +([ORGANIZATION_KEY] + ,[ORGANIZATION_UID] + ,[ORGANIZATION_LOCAL_ID] + ,[ORGANIZATION_RECORD_STATUS] + ,[ORGANIZATION_NAME] + ,[ORGANIZATION_GENERAL_COMMENTS] + ,[ORGANIZATION_QUICK_CODE] + ,[ORGANIZATION_STAND_IND_CLASS] + ,[ORGANIZATION_FACILITY_ID] + ,[ORGANIZATION_FACILITY_ID_AUTH] + ,[ORGANIZATION_STREET_ADDRESS_1] + ,[ORGANIZATION_STREET_ADDRESS_2] + ,[ORGANIZATION_CITY] + ,[ORGANIZATION_STATE] + ,[ORGANIZATION_STATE_CODE] + ,[ORGANIZATION_ZIP] + ,[ORGANIZATION_COUNTY] + ,[ORGANIZATION_COUNTY_CODE] + ,[ORGANIZATION_COUNTRY] + ,[ORGANIZATION_ADDRESS_COMMENTS] + ,[ORGANIZATION_PHONE_WORK] + ,[ORGANIZATION_PHONE_EXT_WORK] + ,[ORGANIZATION_EMAIL] + ,[ORGANIZATION_PHONE_COMMENTS] + ,[ORGANIZATION_ENTRY_METHOD] + ,[ORGANIZATION_LAST_CHANGE_TIME] + ,[ORGANIZATION_ADD_TIME] + ,[ORGANIZATION_ADDED_BY] + ,[ORGANIZATION_LAST_UPDATED_BY] + ,[ORGANIZATION_FAX]) +SELECT k.d_organization_key as ORGANIZATION_KEY + ,org.[ORGANIZATION_UID] + ,org.[ORGANIZATION_LOCAL_ID] + ,org.[ORGANIZATION_RECORD_STATUS] + ,cast(org.ORGANIZATION_NAME as varchar(50)) as ORGANIZATION_NAME + ,org.[ORGANIZATION_GENERAL_COMMENTS] + ,isnull(NULLIF(cast(org.[ORGANIZATION_QUICK_CODE] as varchar(50)),''),NULL) as ORGANIZATION_QUICK_CODE + ,org.[ORGANIZATION_STAND_IND_CLASS] + ,cast(org.[ORGANIZATION_FACILITY_ID] as varchar(50)) as ORGANIZATION_FACILITY_ID + ,cast(org.ORGANIZATION_FACILITY_ID_AUTH as varchar(50)) as ORGANIZATION_FACILITY_ID_AUTH + ,case when cast (org.[ORGANIZATION_STREET_ADDRESS_1] as varchar(50)) is null then null else cast(org.[ORGANIZATION_STREET_ADDRESS_1] as varchar(50)) end + ,case when cast (org.[ORGANIZATION_STREET_ADDRESS_2] as varchar(50)) is null then null else cast(org.[ORGANIZATION_STREET_ADDRESS_2] as varchar(50)) end + ,isnull(NULLIF(cast(org.[ORGANIZATION_CITY] as varchar(50)),''),NULL) as ORGANIZATION_CITY + ,isnull(NULLIF(org.[ORGANIZATION_STATE],''),NULL) as ORGANIZATION_STATE + ,isnull(NULLIF(org.[ORGANIZATION_STATE_CODE],''),NULL) as ORGANIZATION_STATE_CODE + ,isnull(NULLIF(cast(org.[ORGANIZATION_ZIP] as varchar(10)),''),NULL) as ORGANIZATION_ZIP + ,isnull(NULLIF(org.[ORGANIZATION_COUNTY],''),NULL) as ORGANIZATION_COUNTY + ,isnull(NULLIF(org.[ORGANIZATION_COUNTY_CODE] ,''),NULL) as ORGANIZATION_COUNTY_CODE + ,isnull(NULLIF(org.[ORGANIZATION_COUNTRY],''),NULL) as ORGANIZATION_COUNTRY + ,case when org.[ORGANIZATION_ADDRESS_COMMENTS] is null then null else RTRIM(LTRIM(org.[ORGANIZATION_ADDRESS_COMMENTS])) end + ,case when org.[ORGANIZATION_PHONE_WORK]is null then null else org.[ORGANIZATION_PHONE_WORK] end + ,case when org.[ORGANIZATION_PHONE_EXT_WORK] is null then null else org.[ORGANIZATION_PHONE_EXT_WORK] end + ,isnull(NULLIF(cast(org.[ORGANIZATION_EMAIL] as varchar(50)),''),NULL) as ORGANIZATION_EMAIL + ,case when org.[ORGANIZATION_PHONE_COMMENTS] is null then null else RTRIM(LTRIM(org.[ORGANIZATION_PHONE_COMMENTS])) end + ,org.[ORGANIZATION_ENTRY_METHOD] + ,org.[ORGANIZATION_LAST_CHANGE_TIME] + ,org.[ORGANIZATION_ADD_TIME] + ,org.[ORGANIZATION_ADDED_BY] + ,org.[ORGANIZATION_LAST_UPDATED_BY] + ,org.[ORGANIZATION_FAX] +FROM #temp_org_table org + join dbo.nrt_organization_key k on org.organization_uid = k.organization_uid +where org.organization_key is null; + +end try +begin catch +IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + /* Logging */ +INSERT INTO [dbo].[job_flow_log] ( + batch_id + ,[create_dttm] + ,[update_dttm] + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[msg_description1] +) +VALUES + ( + @batch_id + ,current_timestamp + ,current_timestamp + ,@dataflow_name + ,@package_name + ,'ERROR' + ,@Proc_Step_no + , 'Step -' +CAST(@Proc_Step_no AS VARCHAR(3))+' -' +CAST(ERROR_MESSAGE() AS VARCHAR(500)) + ,0 + ,LEFT(@id_list,500) + ); + +return ERROR_MESSAGE(); +end catch + + /* Logging */ +set @rowcount=@@rowcount + 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 + ,LEFT(@id_list,500) + ); + +select 'Success'; + + +COMMIT TRANSACTION; + +SET @proc_step_name='SP_COMPLETE'; + SET @proc_step_no = 4; + +INSERT INTO [dbo].[job_flow_log] ( + batch_id + ,[create_dttm] + ,[update_dttm] + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[msg_description1] +) +VALUES ( + @batch_id + ,current_timestamp + ,current_timestamp + ,@dataflow_name + ,@package_name + ,'COMPLETE' + ,@proc_step_no + ,@proc_step_name + ,0 + ,LEFT(@id_list,500) + ); + +END TRY + +BEGIN CATCH + +IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + + /* Logging */ +INSERT INTO [dbo].[job_flow_log] ( + batch_id + ,[create_dttm] + ,[update_dttm] + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[msg_description1] +) +VALUES + ( + @batch_id + ,current_timestamp + ,current_timestamp + ,@dataflow_name + ,@package_name + ,'ERROR' + ,@Proc_Step_no + , 'Step -' +CAST(@Proc_Step_no AS VARCHAR(3))+' -' +CAST(@ErrorMessage AS VARCHAR(500)) + ,0 + ,LEFT(@id_list,500) + ); + +return @ErrorMessage; + +END CATCH + +END; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/021-sp_nrt_provider_postprocessing-001.sql b/liquibase-service/src/main/resources/db/rdb/021-sp_nrt_provider_postprocessing-001.sql new file mode 100644 index 00000000..9877800e --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/021-sp_nrt_provider_postprocessing-001.sql @@ -0,0 +1,356 @@ +CREATE OR ALTER PROCEDURE dbo.sp_nrt_provider_postprocessing @id_list nvarchar(max), @debug bit = 'false' +AS +BEGIN + +BEGIN TRY + + /* Logging */ + declare +@rowcount bigint; + declare +@proc_step_no float = 0; + declare +@proc_step_name varchar(200) = ''; + declare +@batch_id bigint; + declare +@create_dttm datetime2(7) = current_timestamp ; + declare +@update_dttm datetime2(7) = current_timestamp ; + declare +@dataflow_name varchar(200) = 'Provider POST-Processing'; + declare +@package_name varchar(200) = 'sp_nrt_provider_postprocessing'; + + set @batch_id = cast((format(getdate(),'yyMMddHHmmss')) as bigint); + +INSERT INTO [dbo].[job_flow_log] +( batch_id + ,[create_dttm] + ,[update_dttm] + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[msg_description1] + ,[row_count]) +VALUES ( + @batch_id + , @create_dttm + , @update_dttm + , @dataflow_name + , @package_name + , 'START' + , 0 + , 'SP_Start' + , LEFT (@id_list, 500) + , 0 + ); + + SET @proc_step_name='Create PROVIDER Temp tables for -'+ LEFT(@id_list,165); + SET @proc_step_no = 1; + + /* Temp Provider Table*/ + select PROVIDER_KEY, + nrt.provider_uid as PROVIDER_UID, + local_id as PROVIDER_LOCAL_ID, + record_status as PROVIDER_RECORD_STATUS, + name_prefix as PROVIDER_NAME_PREFIX, + first_name as PROVIDER_FIRST_NAME, + middle_name as PROVIDER_MIDDLE_NAME, + last_name as PROVIDER_LAST_NAME, + name_suffix as PROVIDER_NAME_SUFFIX, + name_degree as PROVIDER_NAME_DEGREE, + general_comments as PROVIDER_GENERAL_COMMENTS, + case when rtrim(ltrim(quick_code)) = '' then null + else quick_code end AS PROVIDER_QUICK_CODE, + nrt.provider_registration_num as PROVIDER_REGISTRATION_NUM, + case when rtrim(ltrim(provider_registration_num_auth)) = '' then null + else provider_registration_num_auth end AS PROVIDER_REGISRATION_NUM_AUTH, + case when rtrim(ltrim(street_address_1)) = '' then null + else street_address_1 end AS PROVIDER_STREET_ADDRESS_1, + case when rtrim(ltrim(street_address_2)) = '' then null + else street_address_2 end AS PROVIDER_STREET_ADDRESS_2, + city as PROVIDER_CITY, + state as PROVIDER_STATE, + state_code as PROVIDER_STATE_CODE, + zip as PROVIDER_ZIP, + county as PROVIDER_COUNTY, + case when rtrim(ltrim(county_code)) = '' then null + else county_code end AS PROVIDER_COUNTY_CODE, + country as PROVIDER_COUNTRY, + case when rtrim(ltrim(address_comments)) = '' then null + else address_comments end AS PROVIDER_ADDRESS_COMMENTS, + case when rtrim(ltrim(phone_work)) = '' then null + else phone_work end AS PROVIDER_PHONE_WORK, + case when rtrim(ltrim(phone_ext_work)) = '' then null + else phone_ext_work end AS PROVIDER_PHONE_EXT_WORK, + email_work as PROVIDER_EMAIL_WORK, + case when rtrim(ltrim(phone_comments)) = '' then null + else phone_comments end AS PROVIDER_PHONE_COMMENTS, + phone_cell as PROVIDER_PHONE_CELL, + entry_method as PROVIDER_ENTRY_METHOD, + add_user_name as PROVIDER_ADDED_BY, + add_time as PROVIDER_ADD_TIME, + last_chg_user_name as PROVIDER_LAST_UPDATED_BY, + last_chg_time as PROVIDER_LAST_CHANGE_TIME + into #temp_prv_table + from dbo.nrt_provider nrt + left join dbo.d_provider p on p.provider_uid = nrt.provider_uid + where nrt.provider_uid in (SELECT value FROM STRING_SPLIT(@id_list, ',')) + + /* Logging */ + set @rowcount=@@rowcount + 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 + , LEFT (@id_list, 500) + ); + + SET @proc_step_name='Update D_PROVIDER Dimension'; + SET @proc_step_no = 2; + + /* D_Provider Update Operation */ + BEGIN TRANSACTION; + update dbo.d_provider + set [PROVIDER_UID] = prv.[PROVIDER_UID], [PROVIDER_KEY] = prv.[PROVIDER_KEY], [PROVIDER_LOCAL_ID] = prv.[PROVIDER_LOCAL_ID], [PROVIDER_RECORD_STATUS] = prv.[PROVIDER_RECORD_STATUS], [PROVIDER_NAME_PREFIX] = prv.[PROVIDER_NAME_PREFIX], [PROVIDER_FIRST_NAME] = prv.[PROVIDER_FIRST_NAME], [PROVIDER_MIDDLE_NAME] = prv.[PROVIDER_MIDDLE_NAME], [PROVIDER_LAST_NAME] = prv.[PROVIDER_LAST_NAME], [PROVIDER_NAME_SUFFIX] = prv.[PROVIDER_NAME_SUFFIX], [PROVIDER_NAME_DEGREE] = prv.[PROVIDER_NAME_DEGREE], [PROVIDER_GENERAL_COMMENTS] = prv.[PROVIDER_GENERAL_COMMENTS], [PROVIDER_QUICK_CODE] = substring (prv.[PROVIDER_QUICK_CODE], 1, 50), [PROVIDER_REGISTRATION_NUM] = substring (prv.[PROVIDER_REGISTRATION_NUM], 1, 50), [PROVIDER_REGISRATION_NUM_AUTH] = substring (prv.[PROVIDER_REGISRATION_NUM_AUTH], 1, 50), [PROVIDER_STREET_ADDRESS_1] = substring (prv.[PROVIDER_STREET_ADDRESS_1], 1, 50), [PROVIDER_STREET_ADDRESS_2] = substring (prv.[PROVIDER_STREET_ADDRESS_2], 1, 50), [PROVIDER_CITY] = substring (prv.[PROVIDER_CITY], 1, 50), [PROVIDER_STATE] = prv.[PROVIDER_STATE], [PROVIDER_STATE_CODE] = prv.[PROVIDER_STATE_CODE], [PROVIDER_ZIP] = prv.[PROVIDER_ZIP], [PROVIDER_COUNTY] = prv.[PROVIDER_COUNTY], [PROVIDER_COUNTY_CODE] = prv.[PROVIDER_COUNTY_CODE], [PROVIDER_COUNTRY] = prv.[PROVIDER_COUNTRY], [PROVIDER_ADDRESS_COMMENTS] = prv.[PROVIDER_ADDRESS_COMMENTS], [PROVIDER_PHONE_WORK] = prv.[PROVIDER_PHONE_WORK], [PROVIDER_PHONE_EXT_WORK] = prv.[PROVIDER_PHONE_EXT_WORK], [PROVIDER_EMAIL_WORK] = substring (prv.[PROVIDER_EMAIL_WORK], 1, 50), [PROVIDER_PHONE_COMMENTS] = prv.[PROVIDER_PHONE_COMMENTS], [PROVIDER_PHONE_CELL] = prv.[PROVIDER_PHONE_CELL], [PROVIDER_ENTRY_METHOD] = prv.[PROVIDER_ENTRY_METHOD], [PROVIDER_LAST_CHANGE_TIME] = prv.[PROVIDER_LAST_CHANGE_TIME], [PROVIDER_ADD_TIME] = prv.[PROVIDER_ADD_TIME], [PROVIDER_ADDED_BY] = prv.[PROVIDER_ADDED_BY], [PROVIDER_LAST_UPDATED_BY] = prv.[PROVIDER_LAST_UPDATED_BY] + from #temp_prv_table prv + inner join dbo.d_provider p + on prv.provider_uid = p.provider_uid + and prv.provider_key = p.provider_key + and p.provider_key is not null; + + + /* Logging */ + set @rowcount=@@rowcount + 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 + ,LEFT(@id_list,500) + ); + + SET +@proc_step_name='Insert into D_PROVIDER Dimension'; + SET +@proc_step_no = 3; + + /* D_Provider Insert Operation */ + + -- delete from the key table to generate new keys for the resulting new data to be inserted +delete from dbo.nrt_provider_key; +insert into dbo.nrt_provider_key(provider_uid) +select provider_uid +from #temp_prv_table +where provider_key is null +order by provider_uid; + +insert into dbo.d_provider +([ PROVIDER_UID] + ,[PROVIDER_KEY] + ,[PROVIDER_LOCAL_ID] + ,[PROVIDER_RECORD_STATUS] + ,[PROVIDER_NAME_PREFIX] + ,[PROVIDER_FIRST_NAME] + ,[PROVIDER_MIDDLE_NAME] + ,[PROVIDER_LAST_NAME] + ,[PROVIDER_NAME_SUFFIX] + ,[PROVIDER_NAME_DEGREE] + ,[PROVIDER_GENERAL_COMMENTS] + ,[PROVIDER_QUICK_CODE] + ,[PROVIDER_REGISTRATION_NUM] + ,[PROVIDER_REGISRATION_NUM_AUTH] + ,[PROVIDER_STREET_ADDRESS_1] + ,[PROVIDER_STREET_ADDRESS_2] + ,[PROVIDER_CITY] + ,[PROVIDER_STATE] + ,[PROVIDER_ZIP] + ,[PROVIDER_COUNTY] + ,[PROVIDER_COUNTRY] + ,[PROVIDER_ADDRESS_COMMENTS] + ,[PROVIDER_PHONE_WORK] + ,[PROVIDER_PHONE_EXT_WORK] + ,[PROVIDER_EMAIL_WORK] + ,[PROVIDER_PHONE_COMMENTS] + ,[PROVIDER_PHONE_CELL] + ,[PROVIDER_ENTRY_METHOD] + ,[PROVIDER_LAST_CHANGE_TIME] + ,[PROVIDER_ADD_TIME] + ,[PROVIDER_ADDED_BY] + ,[PROVIDER_LAST_UPDATED_BY] + ,[PROVIDER_STATE_CODE] + ,[PROVIDER_COUNTY_CODE]) +SELECT prv.[PROVIDER_UID] + , k.[d_PROVIDER_KEY] as PROVIDER_KEY + , prv.[PROVIDER_LOCAL_ID] + , prv.[PROVIDER_RECORD_STATUS] + , prv.[PROVIDER_NAME_PREFIX] + , prv.[PROVIDER_FIRST_NAME] + , prv.[PROVIDER_MIDDLE_NAME] + , prv.[PROVIDER_LAST_NAME] + , prv.[PROVIDER_NAME_SUFFIX] + , prv.[PROVIDER_NAME_DEGREE] + , prv.[PROVIDER_GENERAL_COMMENTS] + , case when cast(prv.PROVIDER_QUICK_CODE as varchar(50)) = '' then null + else cast(prv.PROVIDER_QUICK_CODE as varchar(50)) end + , case when cast(prv.[PROVIDER_REGISTRATION_NUM] as varchar(50)) = '' then null + else cast(prv.[PROVIDER_REGISTRATION_NUM] as varchar(50)) end + , case when cast(prv.[PROVIDER_REGISRATION_NUM_AUTH] as varchar(50)) = '' then null + else cast(prv.[PROVIDER_REGISRATION_NUM_AUTH] as varchar(50)) end + , case when cast(prv.[PROVIDER_STREET_ADDRESS_1] as varchar(50)) = '' then null + else cast(prv.[PROVIDER_STREET_ADDRESS_1] as varchar(50)) end + , case when cast(prv.[PROVIDER_STREET_ADDRESS_2] as varchar(50)) = '' then null + else cast(prv.[PROVIDER_STREET_ADDRESS_2] as varchar(50)) end + , case when cast(prv.[PROVIDER_CITY] as varchar(50)) = '' then null + else cast(prv.[PROVIDER_CITY] as varchar(50)) end + , prv.[PROVIDER_STATE] + , prv.[PROVIDER_ZIP] + , prv.[PROVIDER_COUNTY] + , prv.[PROVIDER_COUNTRY] + , case when prv.[PROVIDER_ADDRESS_COMMENTS] = '' then null else prv.[PROVIDER_ADDRESS_COMMENTS] end + , case when prv.[PROVIDER_PHONE_WORK] = '' then null else prv.[PROVIDER_PHONE_WORK] end + , case when prv.[PROVIDER_PHONE_EXT_WORK] = '' then null else prv.[PROVIDER_PHONE_EXT_WORK] end + , case when cast(prv.[PROVIDER_EMAIL_WORK] as varchar(50)) = '' then null + else cast(prv.[PROVIDER_EMAIL_WORK] as varchar(50)) end + , case when prv.[PROVIDER_PHONE_COMMENTS] = '' then null else prv.[PROVIDER_PHONE_COMMENTS] end + , prv.[PROVIDER_PHONE_CELL] + , prv.[PROVIDER_ENTRY_METHOD] + , prv.[PROVIDER_LAST_CHANGE_TIME] + , prv.[PROVIDER_ADD_TIME] + , prv.[PROVIDER_ADDED_BY] + , prv.[PROVIDER_LAST_UPDATED_BY] + , prv.[PROVIDER_STATE_CODE] + , case when prv.[PROVIDER_COUNTY_CODE] = '' then null else prv.[PROVIDER_COUNTY_CODE] end +FROM #temp_prv_table prv + join dbo.nrt_provider_key k on prv.provider_uid = k.provider_uid +where prv.provider_key is null; + +/* Logging */ +set +@rowcount=@@rowcount + 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 + ,LEFT(@id_list,500) + ); + +select 'Success'; + +COMMIT TRANSACTION; + +SET +@proc_step_name='SP_COMPLETE'; + SET +@proc_step_no = 4; + +INSERT INTO [dbo].[job_flow_log] +( batch_id + ,[create_dttm] + ,[update_dttm] + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[msg_description1]) +VALUES ( + @batch_id + , current_timestamp + , current_timestamp + , @dataflow_name + , @package_name + , 'COMPLETE' + , @proc_step_no + , @proc_step_name + , 0 + , LEFT (@id_list, 500) + ); + +END TRY + +BEGIN CATCH + +IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE +@ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + + /* Logging */ +INSERT INTO [dbo].[job_flow_log] +( batch_id + ,[create_dttm] + ,[update_dttm] + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[msg_description1]) +VALUES + ( + @batch_id + , current_timestamp + , current_timestamp + , @dataflow_name + , @package_name + , 'ERROR' + , @Proc_Step_no + , 'Step -' + CAST (@Proc_Step_no AS VARCHAR (3))+' -' + CAST (@ErrorMessage AS VARCHAR (500)) + , 0 + , LEFT (@id_list, 500) + ); + +return @ErrorMessage; + +END CATCH + +END; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/022-sp_nrt_patient_postprocessing-001.sql b/liquibase-service/src/main/resources/db/rdb/022-sp_nrt_patient_postprocessing-001.sql new file mode 100644 index 00000000..b82b8e45 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/022-sp_nrt_patient_postprocessing-001.sql @@ -0,0 +1,562 @@ +CREATE OR ALTER PROCEDURE dbo.sp_nrt_patient_postprocessing @id_list nvarchar(max), @debug bit = 'false' +AS +BEGIN + +BEGIN TRY + + /* Logging */ + declare @rowcount bigint; + declare @proc_step_no float = 0; + declare @proc_step_name varchar(200) = ''; + declare @batch_id bigint; + declare @create_dttm datetime2(7) = current_timestamp ; + declare @update_dttm datetime2(7) = current_timestamp ; + declare @dataflow_name varchar(200) = 'Patient POST-Processing'; + declare @package_name varchar(200) = 'RDB_MODERN.sp_nrt_patient_postprocessing'; + + set @batch_id = cast((format(getdate(),'yyMMddHHmmss')) as bigint); + +INSERT INTO [dbo].[job_flow_log] +( + batch_id + ,[create_dttm] + ,[update_dttm] + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[msg_description1] + ,[row_count] +) +VALUES ( + @batch_id + ,@create_dttm + ,@update_dttm + ,@dataflow_name + ,@package_name + ,'START' + ,0 + ,'SP_Start' + ,LEFT(@id_list,500) + ,0 + ); + +SET @proc_step_name='Create PATIENT Temp tables for -'+ LEFT(@id_list,165); + SET @proc_step_no = 1; + + /* Temp patient table creation*/ +select + PATIENT_KEY, + nrt.patient_uid AS PATIENT_UID, + nrt.patient_mpr_uid AS PATIENT_MPR_UID, + record_status AS PATIENT_RECORD_STATUS, + local_id AS PATIENT_LOCAL_ID, + case when rtrim(ltrim(general_comments)) = '' then null + else general_comments end AS PATIENT_GENERAL_COMMENTS, + first_name AS PATIENT_FIRST_NAME, + case when rtrim(ltrim(middle_name)) = '' then null + else middle_name end AS PATIENT_MIDDLE_NAME, + last_name AS PATIENT_LAST_NAME, + name_suffix AS PATIENT_NAME_SUFFIX, + alias_nickname AS PATIENT_ALIAS_NICKNAME, + case when rtrim(ltrim(street_address_1)) = '' then null + else street_address_1 end AS PATIENT_STREET_ADDRESS_1, + case when rtrim(ltrim(street_address_2)) = '' then null + else street_address_2 end AS PATIENT_STREET_ADDRESS_2, + case when rtrim(ltrim(city)) = '' then null + else city end AS PATIENT_CITY, + state AS PATIENT_STATE, + case when rtrim(ltrim(state_code)) = '' then null + else state_code end AS PATIENT_STATE_CODE, + case when rtrim(ltrim(zip)) = '' then null + else zip end AS PATIENT_ZIP, + case when rtrim(ltrim(county_code)) = '' then null + else county_code end AS PATIENT_COUNTY_CODE, + county AS PATIENT_COUNTY, + case when rtrim(ltrim(country)) = '' then null + else country end AS PATIENT_COUNTRY, + case when rtrim(ltrim(within_city_limits)) = '' then null + else within_city_limits end AS PATIENT_WITHIN_CITY_LIMITS, + case when rtrim(ltrim(phone_home)) = '' then null + else phone_home end AS PATIENT_PHONE_HOME, + case when rtrim(ltrim(phone_ext_home)) = '' then null + else phone_ext_home end AS PATIENT_PHONE_EXT_HOME, + case when rtrim(ltrim(phone_work)) = '' then null + else phone_work end AS PATIENT_PHONE_WORK, + case when rtrim(ltrim(phone_ext_work)) = '' then null + else phone_ext_work end AS PATIENT_PHONE_EXT_WORK, + phone_cell AS PATIENT_PHONE_CELL, + email AS PATIENT_EMAIL, + dob AS PATIENT_DOB, + age_reported AS PATIENT_AGE_REPORTED, + age_reported_unit AS PATIENT_AGE_REPORTED_UNIT, + birth_sex AS PATIENT_BIRTH_SEX, + current_sex AS PATIENT_CURRENT_SEX, + deceased_indicator AS PATIENT_DECEASED_INDICATOR, + deceased_date AS PATIENT_DECEASED_DATE, + marital_status AS PATIENT_MARITAL_STATUS, + case when rtrim(ltrim(ssn)) = '' then null + else ssn end AS PATIENT_SSN, + ethnicity AS PATIENT_ETHNICITY, + race_calculated AS PATIENT_RACE_CALCULATED, + race_calc_details AS PATIENT_RACE_CALC_DETAILS, + race_amer_ind_1 AS PATIENT_RACE_AMER_IND_1, + race_amer_ind_2 AS PATIENT_RACE_AMER_IND_2, + race_amer_ind_3 AS PATIENT_RACE_AMER_IND_3, + race_amer_ind_gt3_ind AS PATIENT_RACE_AMER_IND_GT3_IND, + race_amer_ind_all AS PATIENT_RACE_AMER_IND_ALL, + race_asian_1 AS PATIENT_RACE_ASIAN_1, + race_asian_2 AS PATIENT_RACE_ASIAN_2, + race_asian_3 AS PATIENT_RACE_ASIAN_3, + race_asian_gt3_ind AS PATIENT_RACE_ASIAN_GT3_IND, + race_asian_all AS PATIENT_RACE_ASIAN_ALL, + race_black_1 AS PATIENT_RACE_BLACK_1, + race_black_2 AS PATIENT_RACE_BLACK_2, + race_black_3 AS PATIENT_RACE_BLACK_3, + race_black_gt3_ind AS PATIENT_RACE_BLACK_GT3_IND, + race_black_all AS PATIENT_RACE_BLACK_ALL, + race_nat_hi_1 AS PATIENT_RACE_NAT_HI_1, + race_nat_hi_2 AS PATIENT_RACE_NAT_HI_2, + race_nat_hi_3 AS PATIENT_RACE_NAT_HI_3, + race_nat_hi_gt3_ind AS PATIENT_RACE_NAT_HI_GT3_IND, + race_nat_hi_all AS PATIENT_RACE_NAT_HI_ALL, + race_white_1 AS PATIENT_RACE_WHITE_1, + race_white_2 AS PATIENT_RACE_WHITE_2, + race_white_3 AS PATIENT_RACE_WHITE_3, + race_white_gt3_ind AS PATIENT_RACE_WHITE_GT3_IND, + race_white_all AS PATIENT_RACE_WHITE_ALL, + nrt.patient_number AS PATIENT_NUMBER, + nrt.patient_number_auth AS PATIENT_NUMBER_AUTH, + entry_method AS PATIENT_ENTRY_METHOD, + speaks_english AS PATIENT_SPEAKS_ENGLISH, + unk_ethnic_rsn AS PATIENT_UNK_ETHNIC_RSN, + curr_sex_unk_rsn AS PATIENT_CURR_SEX_UNK_RSN, + preferred_gender AS PATIENT_PREFERRED_GENDER, + addl_gender_info AS PATIENT_ADDL_GENDER_INFO, + census_tract AS PATIENT_CENSUS_TRACT, + race_all AS PATIENT_RACE_ALL, + birth_country AS PATIENT_BIRTH_COUNTRY, + primary_occupation AS PATIENT_PRIMARY_OCCUPATION, + primary_language AS PATIENT_PRIMARY_LANGUAGE, + add_user_name AS PATIENT_ADDED_BY, + add_time AS PATIENT_ADD_TIME, + last_chg_user_name AS PATIENT_LAST_UPDATED_BY, + last_chg_time AS PATIENT_LAST_CHANGE_TIME +into #temp_patient_table +from dbo.nrt_patient nrt + left join dbo.d_patient p on p.patient_uid = nrt.patient_uid +where + nrt.patient_uid in (SELECT value FROM STRING_SPLIT(@id_list, ',')); + +/* Logging */ +set @rowcount=@@rowcount + 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 + ,LEFT(@id_list,500) + ); + + SET @proc_step_name='Update D_PATIENT Dimension'; + SET @proc_step_no = 2; + + /* D_Patient Update Operation */ +BEGIN TRANSACTION; +update dbo.d_patient +set [PATIENT_KEY] = tpt.[PATIENT_KEY] , + [PATIENT_MPR_UID] = tpt.[PATIENT_MPR_UID] , + [PATIENT_RECORD_STATUS] = tpt.[PATIENT_RECORD_STATUS] , + [PATIENT_LOCAL_ID] = tpt.[PATIENT_LOCAL_ID] , + [PATIENT_GENERAL_COMMENTS] = substring(tpt.[PATIENT_GENERAL_COMMENTS] ,1,2000) , + [PATIENT_FIRST_NAME] = tpt.[PATIENT_FIRST_NAME] , + [PATIENT_MIDDLE_NAME] = tpt.[PATIENT_MIDDLE_NAME] , + [PATIENT_LAST_NAME] = tpt.[PATIENT_LAST_NAME] , + [PATIENT_NAME_SUFFIX] = tpt.[PATIENT_NAME_SUFFIX] , + [PATIENT_ALIAS_NICKNAME] = tpt.[PATIENT_ALIAS_NICKNAME] , + [PATIENT_STREET_ADDRESS_1] = substring(tpt.[PATIENT_STREET_ADDRESS_1],1,50) , + [PATIENT_STREET_ADDRESS_2] = substring(tpt.[PATIENT_STREET_ADDRESS_2],1,50) , + [PATIENT_CITY] = substring(tpt.[PATIENT_CITY] ,1,50) , + [PATIENT_STATE] = tpt.[PATIENT_STATE] , + [PATIENT_STATE_CODE] = tpt.[PATIENT_STATE_CODE] , + [PATIENT_ZIP] = tpt.[PATIENT_ZIP] , + [PATIENT_COUNTY] = substring(tpt.[PATIENT_COUNTY] ,1,50), + [PATIENT_COUNTY_CODE] = tpt.[PATIENT_COUNTY_CODE] , + [PATIENT_COUNTRY] = tpt.[PATIENT_COUNTRY] , + [PATIENT_WITHIN_CITY_LIMITS] = tpt.[PATIENT_WITHIN_CITY_LIMITS] , + [PATIENT_PHONE_HOME] = tpt.[PATIENT_PHONE_HOME] , + [PATIENT_PHONE_EXT_HOME] = tpt.[PATIENT_PHONE_EXT_HOME] , + [PATIENT_PHONE_WORK] = tpt.[PATIENT_PHONE_WORK] , + [PATIENT_PHONE_EXT_WORK] = tpt.[PATIENT_PHONE_EXT_WORK] , + [PATIENT_PHONE_CELL] = tpt.[PATIENT_PHONE_CELL] , + [PATIENT_EMAIL] = tpt.[PATIENT_EMAIL] , + [PATIENT_DOB] = tpt.[PATIENT_DOB] , + [PATIENT_AGE_REPORTED] = tpt.[PATIENT_AGE_REPORTED], + [PATIENT_AGE_REPORTED_UNIT] = substring(tpt.[PATIENT_AGE_REPORTED_UNIT] ,1,20) , + [PATIENT_BIRTH_SEX] = substring(tpt.[PATIENT_BIRTH_SEX] ,1,50) , + [PATIENT_CURRENT_SEX] = substring(tpt.[PATIENT_CURRENT_SEX] ,1,50), + [PATIENT_DECEASED_INDICATOR] = substring(tpt.[PATIENT_DECEASED_INDICATOR] ,1,50), + [PATIENT_DECEASED_DATE] = tpt.[PATIENT_DECEASED_DATE] , + [PATIENT_MARITAL_STATUS] = substring(tpt.[PATIENT_MARITAL_STATUS] ,1,50), + [PATIENT_SSN] = substring(tpt.[PATIENT_SSN] ,1,50) , + [PATIENT_ETHNICITY] = substring(tpt.[PATIENT_ETHNICITY] ,1,50), + [PATIENT_RACE_CALCULATED] = substring(tpt.[PATIENT_RACE_CALCULATED] ,1,50), + [PATIENT_RACE_CALC_DETAILS] = tpt.[PATIENT_RACE_CALC_DETAILS] , + [PATIENT_RACE_AMER_IND_1] = tpt.[PATIENT_RACE_AMER_IND_1] , + [PATIENT_RACE_AMER_IND_2] = tpt.[PATIENT_RACE_AMER_IND_2] , + [PATIENT_RACE_AMER_IND_3] = tpt.[PATIENT_RACE_AMER_IND_3] , + [PATIENT_RACE_AMER_IND_GT3_IND] = tpt.[PATIENT_RACE_AMER_IND_GT3_IND] , + [PATIENT_RACE_AMER_IND_ALL] = tpt.[PATIENT_RACE_AMER_IND_ALL] , + [PATIENT_RACE_ASIAN_1] = tpt.[PATIENT_RACE_ASIAN_1] , + [PATIENT_RACE_ASIAN_2] = tpt.[PATIENT_RACE_ASIAN_2] , + [PATIENT_RACE_ASIAN_3] = tpt.[PATIENT_RACE_ASIAN_3] , + [PATIENT_RACE_ASIAN_GT3_IND] = tpt.[PATIENT_RACE_ASIAN_GT3_IND] , + [PATIENT_RACE_ASIAN_ALL] = tpt.[PATIENT_RACE_ASIAN_ALL] , + [PATIENT_RACE_BLACK_1] = tpt.[PATIENT_RACE_BLACK_1] , + [PATIENT_RACE_BLACK_2] = tpt.[PATIENT_RACE_BLACK_2] , + [PATIENT_RACE_BLACK_3] = tpt.[PATIENT_RACE_BLACK_3] , + [PATIENT_RACE_BLACK_GT3_IND] = tpt.[PATIENT_RACE_BLACK_GT3_IND] , + [PATIENT_RACE_BLACK_ALL] = tpt.[PATIENT_RACE_BLACK_ALL] , + [PATIENT_RACE_NAT_HI_1] = tpt.[PATIENT_RACE_NAT_HI_1] , + [PATIENT_RACE_NAT_HI_2] = tpt.[PATIENT_RACE_NAT_HI_2] , + [PATIENT_RACE_NAT_HI_3] = tpt.[PATIENT_RACE_NAT_HI_3] , + [PATIENT_RACE_NAT_HI_GT3_IND] = tpt.[PATIENT_RACE_NAT_HI_GT3_IND] , + [PATIENT_RACE_NAT_HI_ALL] = tpt.[PATIENT_RACE_NAT_HI_ALL] , + [PATIENT_RACE_WHITE_1] = tpt.[PATIENT_RACE_WHITE_1] , + [PATIENT_RACE_WHITE_2] = tpt.[PATIENT_RACE_WHITE_2] , + [PATIENT_RACE_WHITE_3] = tpt.[PATIENT_RACE_WHITE_3] , + [PATIENT_RACE_WHITE_GT3_IND] = tpt.[PATIENT_RACE_WHITE_GT3_IND] , + [PATIENT_RACE_WHITE_ALL] = tpt.[PATIENT_RACE_WHITE_ALL] , + [PATIENT_NUMBER] = substring(tpt.[PATIENT_NUMBER] ,1,50), + [PATIENT_NUMBER_AUTH] = tpt.[PATIENT_NUMBER_AUTH] , + [PATIENT_ENTRY_METHOD] = tpt.[PATIENT_ENTRY_METHOD] , + [PATIENT_LAST_CHANGE_TIME] = tpt.[PATIENT_LAST_CHANGE_TIME] , + [PATIENT_ADD_TIME] = tpt.[PATIENT_ADD_TIME] , + [PATIENT_ADDED_BY] = tpt.[PATIENT_ADDED_BY] , + [PATIENT_LAST_UPDATED_BY] = tpt.[PATIENT_LAST_UPDATED_BY] , + [PATIENT_SPEAKS_ENGLISH] = tpt.[PATIENT_SPEAKS_ENGLISH] , + [PATIENT_UNK_ETHNIC_RSN] = tpt.[PATIENT_UNK_ETHNIC_RSN] , + [PATIENT_CURR_SEX_UNK_RSN] = tpt.[PATIENT_CURR_SEX_UNK_RSN] , + [PATIENT_PREFERRED_GENDER] = tpt.[PATIENT_PREFERRED_GENDER] , + [PATIENT_ADDL_GENDER_INFO] = tpt.[PATIENT_ADDL_GENDER_INFO] , + [PATIENT_CENSUS_TRACT] = tpt.[PATIENT_CENSUS_TRACT] , + [PATIENT_RACE_ALL] = tpt.[PATIENT_RACE_ALL] , + [PATIENT_BIRTH_COUNTRY] = substring(tpt.[PATIENT_BIRTH_COUNTRY] ,1,50) , + [PATIENT_PRIMARY_OCCUPATION] = substring(tpt.[PATIENT_PRIMARY_OCCUPATION] ,1,50), + [PATIENT_PRIMARY_LANGUAGE] = substring(tpt.[PATIENT_PRIMARY_LANGUAGE] ,1,50) +from #temp_patient_table tpt + inner join dbo.d_patient p on tpt.patient_uid = p.patient_uid + and tpt.patient_key = p.patient_key + and p.patient_key is not null; + +/* Logging */ +set @rowcount=@@rowcount + 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 + ,LEFT(@id_list,500) + ); + + SET @proc_step_name='Insert into D_PATIENT Dimension'; + SET @proc_step_no = 3; + + /* D_Patient Insert Operation */ + -- declare @max_key bigint; + -- select @max_key = max(patient_key) from dbo.d_patient; + + -- delete from the key table to generate new keys for the resulting new data to be inserted +delete from dbo.nrt_patient_key ; +insert into dbo.nrt_patient_key(patient_uid) +select patient_uid from #temp_patient_table where patient_key is null order by patient_uid; + +insert into dbo.d_patient +([PATIENT_KEY] + ,[PATIENT_MPR_UID] + ,[PATIENT_RECORD_STATUS] + ,[PATIENT_LOCAL_ID] + ,[PATIENT_GENERAL_COMMENTS] + ,[PATIENT_FIRST_NAME] + ,[PATIENT_MIDDLE_NAME] + ,[PATIENT_LAST_NAME] + ,[PATIENT_NAME_SUFFIX] + ,[PATIENT_ALIAS_NICKNAME] + ,[PATIENT_STREET_ADDRESS_1] + ,[PATIENT_STREET_ADDRESS_2] + ,[PATIENT_CITY] + ,[PATIENT_STATE] + ,[PATIENT_STATE_CODE] + ,[PATIENT_ZIP] + ,[PATIENT_COUNTY] + ,[PATIENT_COUNTY_CODE] + ,[PATIENT_COUNTRY] + ,[PATIENT_WITHIN_CITY_LIMITS] + ,[PATIENT_PHONE_HOME] + ,[PATIENT_PHONE_EXT_HOME] + ,[PATIENT_PHONE_WORK] + ,[PATIENT_PHONE_EXT_WORK] + ,[PATIENT_PHONE_CELL] + ,[PATIENT_EMAIL] + ,[PATIENT_DOB] + ,[PATIENT_AGE_REPORTED] + ,[PATIENT_AGE_REPORTED_UNIT] + ,[PATIENT_BIRTH_SEX] + ,[PATIENT_CURRENT_SEX] + ,[PATIENT_DECEASED_INDICATOR] + ,[PATIENT_DECEASED_DATE] + ,[PATIENT_MARITAL_STATUS] + ,[PATIENT_SSN] + ,[PATIENT_ETHNICITY] + ,[PATIENT_RACE_CALCULATED] + ,[PATIENT_RACE_CALC_DETAILS] + ,[PATIENT_RACE_AMER_IND_1] + ,[PATIENT_RACE_AMER_IND_2] + ,[PATIENT_RACE_AMER_IND_3] + ,[PATIENT_RACE_AMER_IND_GT3_IND] + ,[PATIENT_RACE_AMER_IND_ALL] + ,[PATIENT_RACE_ASIAN_1] + ,[PATIENT_RACE_ASIAN_2] + ,[PATIENT_RACE_ASIAN_3] + ,[PATIENT_RACE_ASIAN_GT3_IND] + ,[PATIENT_RACE_ASIAN_ALL] + ,[PATIENT_RACE_BLACK_1] + ,[PATIENT_RACE_BLACK_2] + ,[PATIENT_RACE_BLACK_3] + ,[PATIENT_RACE_BLACK_GT3_IND] + ,[PATIENT_RACE_BLACK_ALL] + ,[PATIENT_RACE_NAT_HI_1] + ,[PATIENT_RACE_NAT_HI_2] + ,[PATIENT_RACE_NAT_HI_3] + ,[PATIENT_RACE_NAT_HI_GT3_IND] + ,[PATIENT_RACE_NAT_HI_ALL] + ,[PATIENT_RACE_WHITE_1] + ,[PATIENT_RACE_WHITE_2] + ,[PATIENT_RACE_WHITE_3] + ,[PATIENT_RACE_WHITE_GT3_IND] + ,[PATIENT_RACE_WHITE_ALL] + ,[PATIENT_NUMBER] + ,[PATIENT_NUMBER_AUTH] + ,[PATIENT_ENTRY_METHOD] + ,[PATIENT_LAST_CHANGE_TIME] + ,[PATIENT_UID] + ,[PATIENT_ADD_TIME] + ,[PATIENT_ADDED_BY] + ,[PATIENT_LAST_UPDATED_BY] + ,[PATIENT_SPEAKS_ENGLISH] + ,[PATIENT_UNK_ETHNIC_RSN] + ,[PATIENT_CURR_SEX_UNK_RSN] + ,[PATIENT_PREFERRED_GENDER] + ,[PATIENT_ADDL_GENDER_INFO] + ,[PATIENT_CENSUS_TRACT] + ,[PATIENT_RACE_ALL] + ,[PATIENT_BIRTH_COUNTRY] + ,[PATIENT_PRIMARY_OCCUPATION] + ,[PATIENT_PRIMARY_LANGUAGE] ) +SELECT distinct k.[d_PATIENT_KEY] as PATIENT_KEY + ,tpt.[PATIENT_MPR_UID] + ,tpt.[PATIENT_RECORD_STATUS] + ,tpt.[PATIENT_LOCAL_ID] + ,substring(tpt.[PATIENT_GENERAL_COMMENTS] ,1,2000) + ,tpt.[PATIENT_FIRST_NAME] + ,tpt.[PATIENT_MIDDLE_NAME] + ,tpt.[PATIENT_LAST_NAME] + ,tpt.[PATIENT_NAME_SUFFIX] + ,tpt.[PATIENT_ALIAS_NICKNAME] + ,substring(tpt.[PATIENT_STREET_ADDRESS_1],1,50) + ,substring(tpt.[PATIENT_STREET_ADDRESS_2],1,50) + ,substring(tpt.[PATIENT_CITY],1,50) + ,tpt.[PATIENT_STATE] + ,tpt.[PATIENT_STATE_CODE] + ,tpt.[PATIENT_ZIP] + ,substring(tpt.[PATIENT_COUNTY],1,50) + ,tpt.[PATIENT_COUNTY_CODE] + ,tpt.[PATIENT_COUNTRY] + ,tpt.[PATIENT_WITHIN_CITY_LIMITS] + ,tpt.[PATIENT_PHONE_HOME] + ,tpt.[PATIENT_PHONE_EXT_HOME] + ,tpt.[PATIENT_PHONE_WORK] + ,tpt.[PATIENT_PHONE_EXT_WORK] + ,tpt.[PATIENT_PHONE_CELL] + ,tpt.[PATIENT_EMAIL] + ,tpt.[PATIENT_DOB] + ,tpt.[PATIENT_AGE_REPORTED] + ,substring(tpt.[PATIENT_AGE_REPORTED_UNIT] ,1,20) + ,substring(tpt.[PATIENT_BIRTH_SEX] ,1,50) + ,substring(tpt.[PATIENT_CURRENT_SEX] ,1,50) + ,substring(tpt.[PATIENT_DECEASED_INDICATOR] ,1,50) + ,tpt.[PATIENT_DECEASED_DATE] + ,substring(tpt.[PATIENT_MARITAL_STATUS] ,1,50) + ,substring(tpt.[PATIENT_SSN] ,1,50) + ,substring(tpt.[PATIENT_ETHNICITY] ,1,50) + ,substring(tpt.[PATIENT_RACE_CALCULATED] ,1,50) + ,tpt.[PATIENT_RACE_CALC_DETAILS] + ,tpt.[PATIENT_RACE_AMER_IND_1] + ,tpt.[PATIENT_RACE_AMER_IND_2] + ,tpt.[PATIENT_RACE_AMER_IND_3] + ,tpt.[PATIENT_RACE_AMER_IND_GT3_IND] + ,tpt.[PATIENT_RACE_AMER_IND_ALL] + ,tpt.[PATIENT_RACE_ASIAN_1] + ,tpt.[PATIENT_RACE_ASIAN_2] + ,tpt.[PATIENT_RACE_ASIAN_3] + ,tpt.[PATIENT_RACE_ASIAN_GT3_IND] + ,tpt.[PATIENT_RACE_ASIAN_ALL] + ,tpt.[PATIENT_RACE_BLACK_1] + ,tpt.[PATIENT_RACE_BLACK_2] + ,tpt.[PATIENT_RACE_BLACK_3] + ,tpt.[PATIENT_RACE_BLACK_GT3_IND] + ,tpt.[PATIENT_RACE_BLACK_ALL] + ,tpt.[PATIENT_RACE_NAT_HI_1] + ,tpt.[PATIENT_RACE_NAT_HI_2] + ,tpt.[PATIENT_RACE_NAT_HI_3] + ,tpt.[PATIENT_RACE_NAT_HI_GT3_IND] + ,tpt.[PATIENT_RACE_NAT_HI_ALL] + ,tpt.[PATIENT_RACE_WHITE_1] + ,tpt.[PATIENT_RACE_WHITE_2] + ,tpt.[PATIENT_RACE_WHITE_3] + ,tpt.[PATIENT_RACE_WHITE_GT3_IND] + ,tpt.[PATIENT_RACE_WHITE_ALL] + ,substring(tpt.[PATIENT_NUMBER] ,1,50) + ,tpt.[PATIENT_NUMBER_AUTH] + ,tpt.[PATIENT_ENTRY_METHOD] + ,tpt.[PATIENT_LAST_CHANGE_TIME] + ,tpt.[PATIENT_UID] + ,tpt.[PATIENT_ADD_TIME] + ,tpt.[PATIENT_ADDED_BY] + ,tpt.[PATIENT_LAST_UPDATED_BY] + ,tpt.[PATIENT_SPEAKS_ENGLISH] + ,tpt.[PATIENT_UNK_ETHNIC_RSN] + ,tpt.[PATIENT_CURR_SEX_UNK_RSN] + ,tpt.[PATIENT_PREFERRED_GENDER] + ,tpt.[PATIENT_ADDL_GENDER_INFO] + ,tpt.[PATIENT_CENSUS_TRACT] + ,tpt.[PATIENT_RACE_ALL] + ,substring(tpt.[PATIENT_BIRTH_COUNTRY] ,1,50) + ,substring(tpt.[PATIENT_PRIMARY_OCCUPATION] ,1,50) + ,substring(tpt.[PATIENT_PRIMARY_LANGUAGE] ,1,50) +FROM #temp_patient_table tpt + join dbo.nrt_patient_key k on tpt.patient_uid = k.patient_uid +where tpt.patient_key is null; + +/* Logging */ +set @rowcount=@@rowcount + 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 + ,LEFT(@id_list,500) + ); + +select 'Success'; + +COMMIT TRANSACTION; + +SET @proc_step_name='SP_COMPLETE'; + SET @proc_step_no = 4; + +INSERT INTO [dbo].[job_flow_log] ( + batch_id + ,[create_dttm] + ,[update_dttm] + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[msg_description1] +) +VALUES ( + @batch_id + ,current_timestamp + ,current_timestamp + ,@dataflow_name + ,@package_name + ,'COMPLETE' + ,@proc_step_no + ,@proc_step_name + ,0 + ,LEFT(@id_list,500) + ); + +END TRY + +BEGIN CATCH + +IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + + /* Logging */ +INSERT INTO [dbo].[job_flow_log] ( + batch_id + ,[create_dttm] + ,[update_dttm] + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[msg_description1] +) +VALUES + ( + @batch_id + ,current_timestamp + ,current_timestamp + ,@dataflow_name + ,@package_name + ,'ERROR' + ,@Proc_Step_no + , 'Step -' +CAST(@Proc_Step_no AS VARCHAR(3))+' -' +CAST(@ErrorMessage AS VARCHAR(500)) + ,0 + ,LEFT(@id_list,500) + ); + +return @ErrorMessage; + +END CATCH + +END; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/023-sp_nrt_investigation_postprocessing-001.sql b/liquibase-service/src/main/resources/db/rdb/023-sp_nrt_investigation_postprocessing-001.sql new file mode 100644 index 00000000..3eb7dd09 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/023-sp_nrt_investigation_postprocessing-001.sql @@ -0,0 +1,620 @@ +CREATE OR ALTER PROCEDURE dbo.sp_nrt_investigation_postprocessing @id_list nvarchar(max),@debug bit = 'false' +AS +BEGIN + + BEGIN TRY + + /* Logging */ + declare @rowcount bigint; + declare @proc_step_no float = 0; + declare @proc_step_name varchar(200) = ''; + declare @batch_id bigint; + declare @create_dttm datetime2(7) = current_timestamp; + declare @update_dttm datetime2(7) = current_timestamp; + declare @dataflow_name varchar(200) = 'Investigation POST-Processing'; + declare @package_name varchar(200) = 'sp_nrt_investigation_postprocessing'; + + set @batch_id = cast((format(getdate(), 'yyMMddHHmmss')) as bigint); + + INSERT INTO [dbo].[job_flow_log] + (batch_id + ,[create_dttm] + ,[update_dttm] + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[msg_description1] + ,[row_count]) + VALUES (@batch_id + ,@create_dttm + ,@update_dttm + ,@dataflow_name + ,@package_name + ,'START' + ,0 + ,'SP_Start' + ,LEFT(@id_list, 500) + ,0); + + SET @proc_step_name = 'Create INVESTIGATION Temp table -' + LEFT(@id_list, 160); + SET @proc_step_no = 1; + + /* Temp investigation table creation*/ + select INVESTIGATION_KEY, + public_health_case_uid as CASE_UID, + program_jurisdiction_oid as CASE_OID, + nrt.local_id as INV_LOCAL_ID, + nrt.shared_ind as INV_SHARE_IND, + nrt.outbreak_name as OUTBREAK_NAME, + nrt.investigation_status as INVESTIGATION_STATUS, + nrt.inv_case_status as INV_CASE_STATUS, + nrt.case_type_cd as CASE_TYPE, + nrt.txt as INV_COMMENTS, + nrt.jurisdiction_cd as JURISDICTION_CD, + nrt.jurisdiction_nm as JURISDICTION_NM, + nrt.earliest_rpt_to_phd_dt as EARLIEST_RPT_TO_PHD_DT, + nrt.effective_from_time as ILLNESS_ONSET_DT, + nrt.effective_to_time as ILLNESS_END_DT, + nrt.rpt_form_cmplt_time as INV_RPT_DT, + nrt.activity_from_time as INV_START_DT, + nrt.rpt_src_cd_desc as RPT_SRC_CD_DESC, + nrt.rpt_to_county_time as EARLIEST_RPT_TO_CNTY_DT, + nrt.rpt_to_state_time as EARLIEST_RPT_TO_STATE_DT, + nrt.mmwr_week as CASE_RPT_MMWR_WK, + nrt.mmwr_year as CASE_RPT_MMWR_YR, + nrt.disease_imported_ind as DISEASE_IMPORTED_IND, + nrt.imported_from_country as IMPORT_FRM_CNTRY, + nrt.imported_from_state as IMPORT_FRM_STATE, + nrt.imported_from_county as IMPORT_FRM_CNTY, + nrt.imported_city_desc_txt as IMPORT_FRM_CITY, + nrt.earliest_rpt_to_cdc_dt as EARLIEST_RPT_TO_CDC_DT, + nrt.rpt_source_cd as RPT_SRC_CD, + nrt.imported_country_cd as IMPORT_FRM_CNTRY_CD, + nrt.imported_state_cd as IMPORT_FRM_STATE_CD, + nrt.imported_county_cd as IMPORT_FRM_CNTY_CD, + nrt.import_frm_city_cd as IMPORT_FRM_CITY_CD, + nrt.diagnosis_time as DIAGNOSIS_DT, + nrt.hospitalized_admin_time as HSPTL_ADMISSION_DT, + nrt.hospitalized_discharge_time as HSPTL_DISCHARGE_DT, + nrt.hospitalized_duration_amt as HSPTL_DURATION_DAYS, + nrt.outbreak_ind_val as OUTBREAK_IND, + nrt.hospitalized_ind as HSPTLIZD_IND, + nrt.inv_state_case_id as INV_STATE_CASE_ID, + nrt.city_county_case_nbr as CITY_COUNTY_CASE_NBR, + nrt.transmission_mode as TRANSMISSION_MODE, + nrt.record_status_cd as RECORD_STATUS_CD, + nrt.pregnant_ind as PATIENT_PREGNANT_IND, + nrt.die_frm_this_illness_ind as DIE_FRM_THIS_ILLNESS_IND, + nrt.day_care_ind as DAYCARE_ASSOCIATION_IND, + nrt.food_handler_ind as FOOD_HANDLR_IND, + nrt.deceased_time as INVESTIGATION_DEATH_DATE, + case + when isnumeric(nrt.pat_age_at_onset) = 1 then cast(nrt.pat_age_at_onset as int) + else null + end as PATIENT_AGE_AT_ONSET, + nrt.pat_age_at_onset_unit as PATIENT_AGE_AT_ONSET_UNIT, + nrt.investigator_assigned_time as INV_ASSIGNED_DT, + nrt.detection_method_desc_txt as DETECTION_METHOD_DESC_TXT, + case + when isnumeric(nrt.effective_duration_amt) = 1 then cast(nrt.effective_duration_amt as int) + else null + end as ILLNESS_DURATION, + nrt.illness_duration_unit as ILLNESS_DURATION_UNIT, + nrt.contact_inv_txt as CONTACT_INV_COMMENTS, + nrt.contact_inv_priority as CONTACT_INV_PRIORITY, + nrt.infectious_from_date as CONTACT_INFECTIOUS_FROM_DATE, + nrt.infectious_to_date as CONTACT_INFECTIOUS_TO_DATE, + nrt.contact_inv_status as CONTACT_INV_STATUS, + nrt.activity_to_time as INV_CLOSE_DT, + nrt.program_area_description as PROGRAM_AREA_DESCRIPTION, + nrt.add_time as ADD_TIME, + nrt.last_chg_time as LAST_CHG_TIME, + nrt.add_user_name as INVESTIGATION_ADDED_BY, + nrt.last_chg_user_name as INVESTIGATION_LAST_UPDATED_BY, + nrt.referral_basis as REFERRAL_BASIS, + nrt.curr_process_state as CURR_PROCESS_STATE, + nrt.inv_priority_cd as INV_PRIORITY_CD, + nrt.coinfection_id as COINFECTION_ID, + nrt.legacy_case_id as LEGACY_CASE_ID, + nrt.outbreak_name as OUTBREAK_NAME_DESC + into #temp_inv_table + from dbo.nrt_investigation nrt + left join dbo.investigation i on i.case_uid = nrt.public_health_case_uid + where nrt.public_health_case_uid in (SELECT value FROM STRING_SPLIT(@id_list, ',')); + + if @debug = 'true' select * from #temp_inv_table; + + /* Logging */ + set @rowcount = @@rowcount + 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 + ,LEFT(@id_list, 500)); + + /* Investigation Update Operation */ + BEGIN TRANSACTION; + SET @proc_step_name = 'Update INVESTIGATION Dimension'; + SET @proc_step_no = 2; + + update dbo.INVESTIGATION + set [INVESTIGATION_KEY] = inv.INVESTIGATION_KEY, + [CASE_OID] = inv.CASE_OID, + [CASE_UID] = inv.CASE_UID, + [INV_LOCAL_ID] = inv.INV_LOCAL_ID, + [INV_SHARE_IND] = inv.INV_SHARE_IND, + [OUTBREAK_NAME] = inv.OUTBREAK_NAME, + [INVESTIGATION_STATUS] = inv.INVESTIGATION_STATUS, + [INV_CASE_STATUS] = inv.INV_CASE_STATUS, + [CASE_TYPE] = inv.CASE_TYPE, + [INV_COMMENTS] = inv.INV_COMMENTS, + [JURISDICTION_CD] = inv.JURISDICTION_CD, + [JURISDICTION_NM] = inv.JURISDICTION_NM, + [EARLIEST_RPT_TO_PHD_DT] = inv.EARLIEST_RPT_TO_PHD_DT, + [ILLNESS_ONSET_DT] = inv.ILLNESS_ONSET_DT, + [ILLNESS_END_DT] = inv.ILLNESS_END_DT, + [INV_RPT_DT] = inv.INV_RPT_DT, + [INV_START_DT] = inv.INV_START_DT, + [RPT_SRC_CD_DESC] = inv.RPT_SRC_CD_DESC, + [EARLIEST_RPT_TO_CNTY_DT] = inv.EARLIEST_RPT_TO_CNTY_DT, + [EARLIEST_RPT_TO_STATE_DT] = inv.EARLIEST_RPT_TO_STATE_DT, + [CASE_RPT_MMWR_WK] = inv.CASE_RPT_MMWR_WK, + [CASE_RPT_MMWR_YR] = inv.CASE_RPT_MMWR_YR, + [DISEASE_IMPORTED_IND] = inv.DISEASE_IMPORTED_IND, + [IMPORT_FRM_CNTRY] = inv.IMPORT_FRM_CNTRY, + [IMPORT_FRM_STATE] = inv.IMPORT_FRM_STATE, + [IMPORT_FRM_CNTY] = inv.IMPORT_FRM_CNTY, + [IMPORT_FRM_CITY] = inv.IMPORT_FRM_CITY, + [EARLIEST_RPT_TO_CDC_DT] = inv.EARLIEST_RPT_TO_CDC_DT, + [RPT_SRC_CD] = inv.RPT_SRC_CD, + [IMPORT_FRM_CNTRY_CD] = inv.IMPORT_FRM_CNTRY_CD, + [IMPORT_FRM_STATE_CD] = inv.IMPORT_FRM_STATE_CD, + [IMPORT_FRM_CNTY_CD] = inv.IMPORT_FRM_CNTY_CD, + [IMPORT_FRM_CITY_CD] = inv.IMPORT_FRM_CITY_CD, + [DIAGNOSIS_DT] = inv.DIAGNOSIS_DT, + [HSPTL_ADMISSION_DT] = inv.HSPTL_ADMISSION_DT, + [HSPTL_DISCHARGE_DT] = inv.HSPTL_DISCHARGE_DT, + [HSPTL_DURATION_DAYS] = inv.HSPTL_DURATION_DAYS, + [OUTBREAK_IND] = inv.OUTBREAK_IND, + [HSPTLIZD_IND] = inv.HSPTLIZD_IND, + [INV_STATE_CASE_ID] = inv.INV_STATE_CASE_ID, + [CITY_COUNTY_CASE_NBR] = inv.CITY_COUNTY_CASE_NBR, + [TRANSMISSION_MODE] = inv.TRANSMISSION_MODE, + [RECORD_STATUS_CD] = inv.RECORD_STATUS_CD, + [PATIENT_PREGNANT_IND] = inv.PATIENT_PREGNANT_IND, + [DIE_FRM_THIS_ILLNESS_IND] = inv.DIE_FRM_THIS_ILLNESS_IND, + [DAYCARE_ASSOCIATION_IND] = inv.DAYCARE_ASSOCIATION_IND, + [FOOD_HANDLR_IND] = inv.FOOD_HANDLR_IND, + [INVESTIGATION_DEATH_DATE] = inv.INVESTIGATION_DEATH_DATE, + [PATIENT_AGE_AT_ONSET] = inv.PATIENT_AGE_AT_ONSET, + [PATIENT_AGE_AT_ONSET_UNIT] = inv.PATIENT_AGE_AT_ONSET_UNIT, + [INV_ASSIGNED_DT] = inv.INV_ASSIGNED_DT, + [DETECTION_METHOD_DESC_TXT] = inv.DETECTION_METHOD_DESC_TXT, + [ILLNESS_DURATION] = inv.ILLNESS_DURATION, + [ILLNESS_DURATION_UNIT] = inv.ILLNESS_DURATION_UNIT, + [CONTACT_INV_COMMENTS] = inv.CONTACT_INV_COMMENTS, + [CONTACT_INV_PRIORITY] = inv.CONTACT_INV_PRIORITY, + [CONTACT_INFECTIOUS_FROM_DATE] = inv.CONTACT_INFECTIOUS_FROM_DATE, + [CONTACT_INFECTIOUS_TO_DATE] = inv.CONTACT_INFECTIOUS_TO_DATE, + [CONTACT_INV_STATUS] = inv.CONTACT_INV_STATUS, + [PROGRAM_AREA_DESCRIPTION] = inv.PROGRAM_AREA_DESCRIPTION, + [ADD_TIME] = inv.ADD_TIME, + [LAST_CHG_TIME] = inv.LAST_CHG_TIME, + [INVESTIGATION_ADDED_BY] = inv.INVESTIGATION_ADDED_BY, + [INVESTIGATION_LAST_UPDATED_BY] = inv.INVESTIGATION_LAST_UPDATED_BY, + [REFERRAL_BASIS] = inv.REFERRAL_BASIS, + [CURR_PROCESS_STATE] = inv.CURR_PROCESS_STATE, + [INV_PRIORITY_CD] = inv.INV_PRIORITY_CD, + [COINFECTION_ID] = inv.COINFECTION_ID, + [LEGACY_CASE_ID] = inv.LEGACY_CASE_ID, + [OUTBREAK_NAME_DESC] = inv.OUTBREAK_NAME_DESC + from #temp_inv_table inv + inner join dbo.investigation i on inv.case_uid = i.case_uid + and inv.investigation_key = i.investigation_key + and i.investigation_key is not null; + + /* Logging */ + set @rowcount = @@rowcount + 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 + ,LEFT(@id_list, 500)); + + + /* Investigation Insert Operation */ + SET @proc_step_name = 'Insert into INVESTIGATION Dimension'; + SET @proc_step_no = 3; + + -- delete from the key table to generate new keys for the resulting new data to be inserted + delete from dbo.nrt_investigation_key; + insert into dbo.nrt_investigation_key(case_uid) + select case_uid + from #temp_inv_table + where investigation_key is null + order by case_uid; + + insert into dbo.INVESTIGATION + ([INVESTIGATION_KEY], + [CASE_OID], + [CASE_UID], + [INV_LOCAL_ID], + [INV_SHARE_IND], + [OUTBREAK_NAME], + [INVESTIGATION_STATUS], + [INV_CASE_STATUS], + [CASE_TYPE], + [INV_COMMENTS], + [JURISDICTION_CD], + [JURISDICTION_NM], + [EARLIEST_RPT_TO_PHD_DT], + [ILLNESS_ONSET_DT], + [ILLNESS_END_DT], + [INV_RPT_DT], + [INV_START_DT], + [RPT_SRC_CD_DESC], + [EARLIEST_RPT_TO_CNTY_DT], + [EARLIEST_RPT_TO_STATE_DT], + [CASE_RPT_MMWR_WK], + [CASE_RPT_MMWR_YR], + [DISEASE_IMPORTED_IND], + [IMPORT_FRM_CNTRY], + [IMPORT_FRM_STATE], + [IMPORT_FRM_CNTY], + [IMPORT_FRM_CITY], + [EARLIEST_RPT_TO_CDC_DT], + [RPT_SRC_CD], + [IMPORT_FRM_CNTRY_CD], + [IMPORT_FRM_STATE_CD], + [IMPORT_FRM_CNTY_CD], + [IMPORT_FRM_CITY_CD], + [DIAGNOSIS_DT], + [HSPTL_ADMISSION_DT], + [HSPTL_DISCHARGE_DT], + [HSPTL_DURATION_DAYS], + [OUTBREAK_IND], + [HSPTLIZD_IND], + [INV_STATE_CASE_ID], + [CITY_COUNTY_CASE_NBR], + [TRANSMISSION_MODE], + [RECORD_STATUS_CD], + [PATIENT_PREGNANT_IND], + [DIE_FRM_THIS_ILLNESS_IND], + [DAYCARE_ASSOCIATION_IND], + [FOOD_HANDLR_IND], + [INVESTIGATION_DEATH_DATE], + [PATIENT_AGE_AT_ONSET], + [PATIENT_AGE_AT_ONSET_UNIT], + [INV_ASSIGNED_DT], + [DETECTION_METHOD_DESC_TXT], + [ILLNESS_DURATION], + [ILLNESS_DURATION_UNIT], + [CONTACT_INV_COMMENTS], + [CONTACT_INV_PRIORITY], + [CONTACT_INFECTIOUS_FROM_DATE], + [CONTACT_INFECTIOUS_TO_DATE], + [CONTACT_INV_STATUS], + [PROGRAM_AREA_DESCRIPTION], + [ADD_TIME], + [LAST_CHG_TIME], + [INVESTIGATION_ADDED_BY], + [INVESTIGATION_LAST_UPDATED_BY], + [REFERRAL_BASIS], + [CURR_PROCESS_STATE], + [INV_PRIORITY_CD], + [COINFECTION_ID], + [LEGACY_CASE_ID], + [OUTBREAK_NAME_DESC]) + select k.[d_INVESTIGATION_KEY] as INVESTIGATION_KEY, + inv.CASE_OID, + inv.CASE_UID, + inv.INV_LOCAL_ID, + inv.INV_SHARE_IND, + inv.OUTBREAK_NAME, + inv.INVESTIGATION_STATUS, + inv.INV_CASE_STATUS, + inv.CASE_TYPE, + inv.INV_COMMENTS, + inv.JURISDICTION_CD, + inv.JURISDICTION_NM, + inv.EARLIEST_RPT_TO_PHD_DT, + inv.ILLNESS_ONSET_DT, + inv.ILLNESS_END_DT, + inv.INV_RPT_DT, + inv.INV_START_DT, + inv.RPT_SRC_CD_DESC, + inv.EARLIEST_RPT_TO_CNTY_DT, + inv.EARLIEST_RPT_TO_STATE_DT, + inv.CASE_RPT_MMWR_WK, + inv.CASE_RPT_MMWR_YR, + inv.DISEASE_IMPORTED_IND, + inv.IMPORT_FRM_CNTRY, + inv.IMPORT_FRM_STATE, + inv.IMPORT_FRM_CNTY, + inv.IMPORT_FRM_CITY, + inv.EARLIEST_RPT_TO_CDC_DT, + inv.RPT_SRC_CD, + inv.IMPORT_FRM_CNTRY_CD, + inv.IMPORT_FRM_STATE_CD, + inv.IMPORT_FRM_CNTY_CD, + inv.IMPORT_FRM_CITY_CD, + inv.DIAGNOSIS_DT, + inv.HSPTL_ADMISSION_DT, + inv.HSPTL_DISCHARGE_DT, + inv.HSPTL_DURATION_DAYS, + inv.OUTBREAK_IND, + inv.HSPTLIZD_IND, + inv.INV_STATE_CASE_ID, + inv.CITY_COUNTY_CASE_NBR, + inv.TRANSMISSION_MODE, + inv.RECORD_STATUS_CD, + inv.PATIENT_PREGNANT_IND, + inv.DIE_FRM_THIS_ILLNESS_IND, + inv.DAYCARE_ASSOCIATION_IND, + inv.FOOD_HANDLR_IND, + inv.INVESTIGATION_DEATH_DATE, + inv.PATIENT_AGE_AT_ONSET, + inv.PATIENT_AGE_AT_ONSET_UNIT, + inv.INV_ASSIGNED_DT, + inv.DETECTION_METHOD_DESC_TXT, + inv.ILLNESS_DURATION, + inv.ILLNESS_DURATION_UNIT, + inv.CONTACT_INV_COMMENTS, + inv.CONTACT_INV_PRIORITY, + inv.CONTACT_INFECTIOUS_FROM_DATE, + inv.CONTACT_INFECTIOUS_TO_DATE, + inv.CONTACT_INV_STATUS, + inv.PROGRAM_AREA_DESCRIPTION, + inv.ADD_TIME, + inv.LAST_CHG_TIME, + inv.INVESTIGATION_ADDED_BY, + inv.INVESTIGATION_LAST_UPDATED_BY, + inv.REFERRAL_BASIS, + inv.CURR_PROCESS_STATE, + inv.INV_PRIORITY_CD, + inv.COINFECTION_ID, + inv.LEGACY_CASE_ID, + inv.OUTBREAK_NAME_DESC + FROM #temp_inv_table inv + join dbo.nrt_investigation_key k on inv.case_uid = k.case_uid + where inv.investigation_key is null; + + COMMIT TRANSACTION; + /* Logging */ + set @rowcount = @@rowcount + 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 + ,LEFT(@id_list, 500)); + + BEGIN TRANSACTION; + + SET @proc_step_name = 'Update CONFIRMATION_METHOD and CONFIRMATION_METHOD_GROUP'; + SET @proc_step_no = 3; + + /*Temp Confirmation Method Table*/ + select distinct nrt.PUBLIC_HEALTH_CASE_UID, + i.INVESTIGATION_KEY, + nrt.CONFIRMATION_METHOD_CD, + nrt.CONFIRMATION_METHOD_DESC_TXT, + nrt.CONFIRMATION_METHOD_TIME as CONFIRMATION_DT, + cm.CONFIRMATION_METHOD_KEY + into #temp_cm_table + from dbo.nrt_investigation_confirmation nrt + left join dbo.confirmation_method cm on cm.confirmation_method_cd = nrt.confirmation_method_cd + left join dbo.investigation i on i.case_uid = nrt.public_health_case_uid + where nrt.public_health_case_uid in (select value FROM STRING_SPLIT(@id_list, ',')); + + if @debug = 'true' select * from #temp_cm_table; + + -- if confirmation_method_key for the cd exists get the key or insert a new row to rdb.confirmation_method + + /*Update Operation for confirmation_method and confirmation_method_group*/ + update cm + set cm.CONFIRMATION_METHOD_DESC = cmt.CONFIRMATION_METHOD_DESC_TXT + from #temp_cm_table cmt + inner join dbo.confirmation_method cm + on cmt.confirmation_method_key = cm.confirmation_method_key + and cmt.CONFIRMATION_METHOD_KEY is not null; + + update cmg + set cmg.CONFIRMATION_DT = cmt.CONFIRMATION_DT + from #temp_cm_table cmt + inner join dbo.confirmation_method_group cmg + on cmt.investigation_key = cmg.investigation_key + and cmt.confirmation_method_key = cmg.confirmation_method_key + and cmt.CONFIRMATION_METHOD_KEY is not null; + +/*Logging*/ + SET @rowcount = @@rowcount + 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 + ,LEFT(@id_list, 500)); + + + SET @proc_step_name = 'Insert into CONFIRMATION_METHOD and CONFIRMATION_METHOD_GROUP'; + SET @proc_step_no = 4; + + -- generate new CONFIRMATION_METHOD_KEY for the corresponding cd + delete from dbo.nrt_confirmation_method_key; + + insert into dbo.nrt_confirmation_method_key(confirmation_method_cd) + select distinct cmt.confirmation_method_cd + from #temp_cm_table cmt + where cmt.CONFIRMATION_METHOD_KEY is null + and not exists (select confirmation_method_cd + from dbo.confirmation_method cd + where cd.confirmation_method_cd = cmt.confirmation_method_cd); + + /* Insert confirmation_method */ + insert into dbo.confirmation_method(CONFIRMATION_METHOD_KEY,CONFIRMATION_METHOD_CD,CONFIRMATION_METHOD_DESC) + select distinct cmk.D_CONFIRMATION_METHOD_KEY, cmt.confirmation_method_cd, cmt.CONFIRMATION_METHOD_DESC_TXT + from #temp_cm_table cmt + join dbo.nrt_confirmation_method_key cmk on cmk.confirmation_method_cd = cmt.confirmation_method_cd + where cmt.CONFIRMATION_METHOD_KEY is null + and not exists (select confirmation_method_cd + from dbo.confirmation_method cd + where cd.confirmation_method_cd = cmt.confirmation_method_cd); + + + insert into dbo.CONFIRMATION_METHOD_GROUP ([INVESTIGATION_KEY],[CONFIRMATION_METHOD_KEY],[CONFIRMATION_DT]) + select cmt.INVESTIGATION_KEY, cm.CONFIRMATION_METHOD_KEY, cmt.CONFIRMATION_DT + from #temp_cm_table cmt + left outer join dbo.confirmation_method cm on cmt.confirmation_method_cd = cm.confirmation_method_cd + left outer join dbo.confirmation_method_group cmg on cmt.investigation_key = cmg.investigation_key + where cmg.investigation_key is null + and cmg.confirmation_method_key is null; + + /* Logging */ + set @rowcount = @@rowcount + 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 + ,LEFT(@id_list, 500)); + + COMMIT TRANSACTION; + + + SET @proc_step_name = 'Get Topic for Datamart'; + SET @proc_step_no = 5; + + INSERT INTO [dbo].[job_flow_log] + (batch_id + ,[create_dttm] + ,[update_dttm] + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[msg_description1]) + VALUES (@batch_id + ,current_timestamp + ,current_timestamp + ,@dataflow_name + ,@package_name + ,'COMPLETE' + ,@proc_step_no + ,@proc_step_name + ,0 + ,LEFT(@id_list, 500)); + + + SELECT nrt.public_health_case_uid AS public_health_case_uid, + nrt.patient_id AS patient_uid, + COALESCE(inv.INVESTIGATION_KEY, 1) AS investigation_key, + COALESCE(pat.PATIENT_KEY, 1) AS patient_key, + nrt.cd AS condition_cd, + dtm.Datamart AS datamart, + dtm.Stored_Procedure AS stored_procedure + FROM dbo.nrt_investigation nrt + LEFT JOIN INVESTIGATION inv ON inv.CASE_UID = nrt.public_health_case_uid + LEFT JOIN D_PATIENT pat ON pat.PATIENT_UID = nrt.patient_id + LEFT JOIN dbo.nrt_datamart_metadata dtm ON dtm.condition_cd = nrt.cd + WHERE nrt.public_health_case_uid in + (SELECT value FROM STRING_SPLIT(@id_list, ',')); + + END TRY + BEGIN CATCH + + + IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + + /* Logging */ + INSERT INTO [dbo].[job_flow_log] + (batch_id + ,[create_dttm] + ,[update_dttm] + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[msg_description1]) + VALUES (@batch_id + ,current_timestamp + ,current_timestamp + ,@dataflow_name + ,@package_name + ,'ERROR' + ,@Proc_Step_no + ,'Step -' + CAST(@Proc_Step_no AS VARCHAR(3)) + ' -' + CAST(@ErrorMessage AS VARCHAR(500)) + ,0 + ,LEFT(@id_list, 500)); + + + return @ErrorMessage; + + END CATCH + +END; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/024-sp_nrt_notification_postprocessing-001.sql b/liquibase-service/src/main/resources/db/rdb/024-sp_nrt_notification_postprocessing-001.sql new file mode 100644 index 00000000..75d7288f --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/024-sp_nrt_notification_postprocessing-001.sql @@ -0,0 +1,361 @@ +CREATE OR ALTER PROCEDURE [dbo].[sp_nrt_notification_postprocessing] @notification_id_list nvarchar(max), @debug bit = 'false' +AS +BEGIN + + BEGIN TRY + + /* Logging */ + declare @rowcount bigint; + declare @proc_step_no float = 0; + declare @proc_step_name varchar(200) = ''; + declare @batch_id bigint; + declare @create_dttm datetime2(7) = current_timestamp ; + declare @update_dttm datetime2(7) = current_timestamp ; + declare @dataflow_name varchar(200) = 'Notification POST-Processing'; + declare @package_name varchar(200) = 'sp_nrt_notification_postprocessing'; + + set @batch_id = cast((format(getdate(),'yyMMddHHmmss')) as bigint); + + INSERT INTO [dbo].[job_flow_log] + ( + batch_id + ,[create_dttm] + ,[update_dttm] + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[msg_description1] + ,[row_count] + ) + VALUES ( + @batch_id + ,@create_dttm + ,@update_dttm + ,@dataflow_name + ,@package_name + ,'START' + ,0 + ,'SP_Start' + ,LEFT(@notification_id_list,500) + ,0 + ); + + SET @proc_step_name='Create NOTIFICATION and NOTIFICATION_EVENT Temp tables-'+ LEFT(@notification_id_list,105); + SET @proc_step_no = 1; + + /* Temp notification table creation */ + SELECT nrt.notification_uid, + nrt.notif_status AS NOTIFICATION_STATUS, + nrt.notif_comments AS NOTIFICATION_COMMENTS, + nk.d_notification_key AS NOTIFICATION_KEY, + nrt.notif_local_id AS NOTIFICATION_LOCAL_ID, + nrt.notif_add_user_id AS NOTIFICATION_SUBMITTED_BY, + nrt.notif_last_chg_time AS NOTIFICATION_LAST_CHANGE_TIME + INTO #temp_ntf_table + FROM dbo.nrt_notifications nrt + LEFT JOIN dbo.nrt_notification_key nk ON nrt.notification_uid = nk.notification_uid + WHERE nrt.notification_uid in (SELECT value FROM STRING_SPLIT(@notification_id_list, ',')); + + /* Temp notification_event table creation */ + SELECT nrt.notification_uid, + COALESCE(p.PATIENT_KEY, 1) AS PATIENT_KEY, + COALESCE(drpt.DATE_KEY, 1) AS NOTIFICATION_SENT_DT_KEY, + COALESCE(dsub.DATE_KEY, 1) AS NOTIFICATION_SUBMIT_DT_KEY, + eve.NOTIFICATION_KEY AS NOTIFICATION_KEY, + 1 AS COUNT, + inv.INVESTIGATION_KEY, + cnd.CONDITION_KEY, + COALESCE(dupd.DATE_KEY, 1) AS NOTIFICATION_UPD_DT_KEY + INTO #temp_ntf_event_table + FROM dbo.nrt_notifications nrt + LEFT JOIN dbo.nrt_notification_key nk ON nrt.notification_uid = nk.notification_uid + LEFT JOIN dbo.NOTIFICATION_EVENT eve ON eve.NOTIFICATION_KEY = nk.d_notification_key + LEFT JOIN dbo.INVESTIGATION inv ON nrt.public_health_case_uid = inv.CASE_UID + LEFT JOIN dbo.D_PATIENT p ON nrt.local_patient_uid = p.PATIENT_UID + LEFT JOIN dbo.RDB_DATE drpt ON CAST(nrt.rpt_sent_time AS DATE) = drpt.DATE_MM_DD_YYYY + LEFT JOIN dbo.RDB_DATE dsub ON CAST(nrt.notif_add_time AS DATE) = dsub.DATE_MM_DD_YYYY + LEFT JOIN dbo.RDB_DATE dupd ON CAST(nrt.notif_last_chg_time AS DATE) = dupd.DATE_MM_DD_YYYY + LEFT JOIN dbo.CONDITION cnd ON nrt.condition_cd = cnd.CONDITION_CD + WHERE nrt.notification_uid in (SELECT value FROM STRING_SPLIT(@notification_id_list, ',')); + + /* Logging */ + set @rowcount=@@rowcount + 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 + ,LEFT(@notification_id_list,500) + ); + + BEGIN TRANSACTION; + SET @proc_step_name='Update NOTIFICATION Dimension'; + SET @proc_step_no = 2; + + /* Notification Update Operation */ + UPDATE dbo.NOTIFICATION + SET NOTIFICATION_STATUS = ntf.NOTIFICATION_STATUS + ,NOTIFICATION_COMMENTS = ntf.NOTIFICATION_COMMENTS + ,NOTIFICATION_LOCAL_ID = ntf.NOTIFICATION_LOCAL_ID + ,NOTIFICATION_SUBMITTED_BY = ntf.NOTIFICATION_SUBMITTED_BY + ,NOTIFICATION_LAST_CHANGE_TIME = ntf.NOTIFICATION_LAST_CHANGE_TIME + FROM #temp_ntf_table ntf + INNER JOIN dbo.NOTIFICATION n ON ntf.NOTIFICATION_KEY = n.NOTIFICATION_KEY + AND ntf.NOTIFICATION_KEY IS NOT NULL; + + /* Logging */ + SET @rowcount=@@rowcount + 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 + ,LEFT(@notification_id_list,500) + ); + + SET @proc_step_name='Update NOTIFICATION_EVENT Dimension'; + SET @proc_step_no = 3; + + /* Notification_Event Update Operation */ + UPDATE dbo.NOTIFICATION_EVENT + SET PATIENT_KEY = ntfe.PATIENT_KEY + ,NOTIFICATION_SENT_DT_KEY = ntfe.NOTIFICATION_SENT_DT_KEY + ,NOTIFICATION_SUBMIT_DT_KEY = ntfe.NOTIFICATION_SUBMIT_DT_KEY + ,COUNT = ntfe.COUNT + ,INVESTIGATION_KEY = ntfe.INVESTIGATION_KEY + ,CONDITION_KEY = ntfe.CONDITION_KEY + ,NOTIFICATION_UPD_DT_KEY = ntfe.NOTIFICATION_UPD_DT_KEY + FROM #temp_ntf_event_table ntfe + INNER JOIN dbo.NOTIFICATION_EVENT ne ON ntfe.NOTIFICATION_KEY = ne.NOTIFICATION_KEY + AND ntfe.NOTIFICATION_KEY IS NOT NULL; + + /* Logging */ + set @rowcount=@@rowcount + 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 + ,LEFT(@notification_id_list,500) + ); + + SET @proc_step_name='Insert into NOTIFICATION Dimension'; + SET @proc_step_no = 4; + + /* Notification Insert Operation */ + -- delete from the key table to generate new keys for the resulting new data to be inserted + -- delete from dbo.nrt_notification_key; + insert into dbo.nrt_notification_key(notification_uid) + select notification_uid from #temp_ntf_table where notification_key is null order by notification_uid; + + INSERT INTO dbo.NOTIFICATION + (NOTIFICATION_STATUS + ,NOTIFICATION_COMMENTS + ,NOTIFICATION_KEY + ,NOTIFICATION_LOCAL_ID + ,NOTIFICATION_SUBMITTED_BY + ,NOTIFICATION_LAST_CHANGE_TIME + ) + SELECT ntf.NOTIFICATION_STATUS + ,ntf.NOTIFICATION_COMMENTS + ,k.d_notification_key + ,ntf.NOTIFICATION_LOCAL_ID + ,ntf.NOTIFICATION_SUBMITTED_BY + ,ntf.NOTIFICATION_LAST_CHANGE_TIME + FROM #temp_ntf_table ntf + JOIN dbo.nrt_notification_key k ON ntf.notification_uid = k.notification_uid + WHERE ntf.NOTIFICATION_KEY IS NULL; + + /* Logging */ + set @rowcount=@@rowcount + 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 + ,LEFT(@notification_id_list,500) + ); + + SET @proc_step_name='Insert into NOTIFICATION_EVENT Dimension'; + SET @proc_step_no = 5; + + INSERT INTO dbo.NOTIFICATION_EVENT + (PATIENT_KEY + ,NOTIFICATION_SENT_DT_KEY + ,NOTIFICATION_SUBMIT_DT_KEY + ,NOTIFICATION_KEY + ,COUNT + ,INVESTIGATION_KEY + ,CONDITION_KEY + ,NOTIFICATION_UPD_DT_KEY + ) + SELECT ntfe.PATIENT_KEY + ,ntfe.NOTIFICATION_SENT_DT_KEY + ,ntfe.NOTIFICATION_SUBMIT_DT_KEY + ,k.d_notification_key + ,ntfe.COUNT + ,ntfe.INVESTIGATION_KEY + ,ntfe.CONDITION_KEY + ,ntfe.NOTIFICATION_UPD_DT_KEY + FROM #temp_ntf_event_table ntfe + JOIN dbo.nrt_notification_key k ON ntfe.notification_uid = k.notification_uid + WHERE ntfe.NOTIFICATION_KEY IS NULL + + /* Logging */ + set @rowcount=@@rowcount + 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 + ,LEFT(@notification_id_list,500) + ); + + + + COMMIT TRANSACTION; + + SET @proc_step_name='SP_COMPLETE'; + SET @proc_step_no = 6; + + INSERT INTO [dbo].[job_flow_log] + ( + batch_id + ,[create_dttm] + ,[update_dttm] + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[msg_description1] + ) + VALUES ( + @batch_id + ,current_timestamp + ,current_timestamp + ,@dataflow_name + ,@package_name + ,'COMPLETE' + ,@proc_step_no + ,@proc_step_name + ,0 + ,LEFT(@notification_id_list,500) + ); + + select 'Success'; + + END TRY + + BEGIN CATCH + + IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + + /* Logging */ + INSERT INTO [dbo].[job_flow_log] + ( + batch_id + ,[create_dttm] + ,[update_dttm] + ,[Dataflow_Name] + ,[package_Name] + ,[Status_Type] + ,[step_number] + ,[step_name] + ,[row_count] + ,[msg_description1] + ) + VALUES + ( + @batch_id + ,current_timestamp + ,current_timestamp + ,@dataflow_name + ,@package_name + ,'ERROR' + ,@Proc_Step_no + , 'Step -' +CAST(@Proc_Step_no AS VARCHAR(3))+' -' +CAST(@ErrorMessage AS VARCHAR(500)) + ,0 + ,LEFT(@notification_id_list,500) + ); + + + RETURN @ErrorMessage; + + END CATCH +END; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/025-sp_s_pagebuilder_postprocessing-001.sql b/liquibase-service/src/main/resources/db/rdb/025-sp_s_pagebuilder_postprocessing-001.sql new file mode 100644 index 00000000..5e9fc23d --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/025-sp_s_pagebuilder_postprocessing-001.sql @@ -0,0 +1,1474 @@ +CREATE OR ALTER PROCEDURE dbo.sp_s_pagebuilder_postprocessing + @Batch_id bigint, + @phc_id bigint, + @rdb_table_name varchar(250) = 'D_INV_ADMINISTRATIVE', + @category varchar(250) = 'INV_ADMINISTRATIVE', + @debug bit = 'false' +AS +BEGIN + DECLARE @RowCount_no int; + DECLARE @Proc_Step_no float= 0; + DECLARE @Proc_Step_Name varchar(200)= ''; + DECLARE @batch_start_time datetime2(7)= NULL; + DECLARE @batch_end_time datetime2(7)= NULL; + + BEGIN TRY + SET @Proc_Step_no = 1; + SET @Proc_Step_Name = 'SP_Start'; + + BEGIN TRANSACTION; + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @Batch_id, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, 0 ); + + COMMIT TRANSACTION; + + SELECT @batch_start_time = batch_start_dttm, @batch_end_time = batch_end_dttm + FROM [dbo].[job_batch_log] + WHERE status_type = 'start' AND + type_code = 'MasterETL'; + + ---****************************************************************** + ---** START PROCESSING TEXT BASED QUESTIONS AND ANSWERS ************* + + + BEGIN TRANSACTION; + SET @Proc_Step_no = 3; + SET @Proc_Step_Name = ' Generating text_data_'+@category; + + IF OBJECT_ID('#text_data_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #text_data_INV; + END; + + + SELECT DISTINCT + NBS_CASE_ANSWER_UID, nrt_page.CODE_SET_GROUP_ID, nrt_page.RDB_COLUMN_NM, CAST(REPLACE(ANSWER_TXT, CHAR(13) + CHAR(10), ' ') AS varchar(2000)) AS ANSWER_TXT, COALESCE(ACT_UID, 1) AS PAGE_CASE_UID_TEXT, nrt_page.RECORD_STATUS_CD, nrt_page.NBS_QUESTION_UID + INTO #text_data_INV + FROM dbo.nrt_page_case_answer AS nrt_page WITH(NOLOCK) --2 + INNER JOIN + NBS_SRTE.dbo.CODE_VALUE_GENERAL AS CVG WITH(NOLOCK) + ON UPPER(CVG.CODE) = UPPER(nrt_page.DATA_TYPE) + WHERE + nrt_page.act_uid = @phc_id + AND nrt_page.ANSWER_GROUP_SEQ_NBR IS NULL + AND (nrt_page.RDB_TABLE_NM = @rdb_table_name AND nrt_page.QUESTION_GROUP_SEQ_NBR IS NULL AND UPPER(nrt_page.DATA_TYPE) = 'TEXT') + OR (nrt_page.RDB_TABLE_NM = @rdb_table_name AND nrt_page.QUESTION_GROUP_SEQ_NBR IS NULL AND nrt_page.RDB_COLUMN_NM LIKE '%_CD') + AND CVG.CODE_SET_NM = 'NBS_DATA_TYPE' + AND CODE IN( 'CODED', 'TEXT' ) + ORDER BY NBS_CASE_ANSWER_UID, nrt_page.CODE_SET_GROUP_ID, nrt_page.RDB_COLUMN_NM, CAST(REPLACE(ANSWER_TXT, CHAR(13) + CHAR(10), ' ') AS varchar(2000)), COALESCE(ACT_UID, 1), nrt_page.RECORD_STATUS_CD, nrt_page.NBS_QUESTION_UID; + + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + if @debug = 'true' + select * from #text_data_INV; + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + DECLARE @text_output_table_name varchar(500) = '' + SET @Proc_Step_no = 4; + SET @text_output_table_name = '##text_data_INV_out_'+@category+'_'+CAST(@Batch_id as varchar(50)); + + SET @Proc_Step_Name = ' Generating '+@text_output_table_name; + + EXEC ('IF OBJECT_ID(''tempdb..'+@text_output_table_name+''', ''U'') IS NOT NULL + BEGIN + DROP TABLE '+@text_output_table_name+'; + END;') + + DECLARE @columns nvarchar(max); + DECLARE @sql nvarchar(max); + SET @columns = N''; + SELECT @columns+=N', p.' + QUOTENAME(LTRIM(RTRIM([RDB_COLUMN_NM]))) + FROM + ( + SELECT [RDB_COLUMN_NM] + FROM #text_data_INV AS p + GROUP BY [RDB_COLUMN_NM] + ) AS x; + SET @sql = N' + SELECT [PAGE_CASE_UID_text] as PAGE_CASE_UID_text, ' + STUFF(@columns, 1, 2, '') + ' into '+@text_output_table_name +' FROM ( + SELECT [PAGE_CASE_UID_text], [answer_txt] , [RDB_COLUMN_NM] + FROM #text_data_INV + group by [PAGE_CASE_UID_text], [answer_txt] , [RDB_COLUMN_NM] + ) AS j PIVOT (max(answer_txt) FOR [RDB_COLUMN_NM] in + (' + STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '') + ')) AS p;'; + + if @debug = 'true' + PRINT @sql; + + EXEC sp_executesql @sql; + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + --- If the #text_data_inv table does not have any records create the table with default column + EXEC ('IF OBJECT_ID(''tempdb..'+@text_output_table_name+''', ''U'') IS NULL + BEGIN + CREATE TABLE '+@text_output_table_name+' + ( + [PAGE_CASE_UID_text] [bigint] NULL, + ) + + END;') + + if @debug = 'true' + EXEC ('select * from '+@text_output_table_name) + + COMMIT TRANSACTION; + + ---************************************************************* + ---** START PROCESSING CODED QUESTIONS AND ANSWERS ************* + + + BEGIN TRANSACTION; + SET @Proc_Step_no = 5; + SET @Proc_Step_Name = ' Generating CODED rdb_ui_metadata_'+@category; + -- CREATE TABLE CODED_TABLE AS + IF OBJECT_ID('#CASE_ANSWER_PHC_UIDS', 'U') IS NOT NULL + BEGIN + DROP TABLE #CASE_ANSWER_PHC_UIDS; + END; + + SELECT DISTINCT + NBS_CASE_ANSWER_UID, nrt_page.RECORD_STATUS_CD, nrt_page.ACT_UID AS 'PAGE_CASE_UID', nrt_page.INVESTIGATION_FORM_CD, ANSWER_TXT, nrt_page.nbs_question_uid, + nrt_page.RDB_COLUMN_NM, nrt_page.CODE_SET_GROUP_ID, nrt_page.unit_value, CODE_SET_GROUP_ID AS CODE_SET_GROUP_ID1, QUESTION_GROUP_SEQ_NBR, DATA_TYPE, OTHER_VALUE_IND_CD + INTO #CASE_ANSWER_PHC_UIDS + FROM dbo.nrt_page_case_answer as nrt_page WITH(NOLOCK) --2 + WHERE nrt_page.act_uid=@phc_id + AND nrt_page.ANSWER_GROUP_SEQ_NBR IS NULL + AND UPPER(nrt_page.data_type) = 'CODED' + AND ANSWER_GROUP_SEQ_NBR IS NULL + AND nrt_page.rdb_table_nm = @rdb_table_name + AND QUESTION_GROUP_SEQ_NBR IS NULL AND + ( UPPER(DATA_TYPE) = 'CODED' OR + UPPER(UNIT_TYPE_CD) = 'CODED' OR + mask = 'NUM_TEMP' + ) AND + RDB_COLUMN_NM NOT LIKE '%_CD' + ORDER BY nrt_page.NBS_QUESTION_UID, nrt_page.RDB_COLUMN_NM, nrt_page.CODE_SET_GROUP_ID, nrt_page.unit_value DESC; + + + CREATE NONCLUSTERED INDEX [idx_CASE_ANSWER_PHC_UIDS] + ON #CASE_ANSWER_PHC_UIDS ([INVESTIGATION_FORM_CD],[nbs_question_uid]) + INCLUDE ([NBS_CASE_ANSWER_UID],[RECORD_STATUS_CD],[PAGE_CASE_UID],[ANSWER_TXT]) + ; + + + IF OBJECT_ID('#CODED_TABLE_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_INV; + END; + SELECT DISTINCT + NBS_CASE_ANSWER_UID, PA.CODE_SET_GROUP_ID, PA.RDB_COLUMN_NM, CAST(ANSWER_TXT AS varchar(2000)) AS ANSWER_TXT, + PAGE_CASE_UID, PA.RECORD_STATUS_CD, PA.NBS_QUESTION_UID, OTHER_VALUE_IND_CD, CAST(NULL AS [varchar](256)) AS ANSWER_OTH, + CAST(NULL AS [varchar](256)) AS ANSWER_TXT1, PA.INVESTIGATION_FORM_CD + INTO #CODED_TABLE_INV + FROM #CASE_ANSWER_PHC_UIDS AS PA WITH(NOLOCK) + INNER JOIN + NBS_SRTE.dbo.CODE_VALUE_GENERAL AS CVG WITH(NOLOCK) + ON UPPER(CVG.CODE) = UPPER(PA.DATA_TYPE) + WHERE CVG.CODE_SET_NM = 'NBS_DATA_TYPE' + AND UPPER(data_type) = 'CODED' + ORDER BY PAGE_CASE_UID, NBS_CASE_ANSWER_UID, PA.CODE_SET_GROUP_ID; + + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + COMMIT TRANSACTION; + + + BEGIN TRANSACTION; + SET @Proc_Step_no = 7; + SET @Proc_Step_Name = ' Update CODED rdb_ui_metadata_'+@category; + UPDATE #coded_table_INV + SET ANSWER_OTH = SUBSTRING(ANSWER_TXT, CHARINDEX('^', ANSWER_TXT) + 1, LEN(RTRIM(LTRIM(ANSWER_TXT)))) + WHERE CHARINDEX('^', ANSWER_TXT) > 0; + UPDATE #coded_table_INV + SET ANSWER_TXT = SUBSTRING(ANSWER_TXT, 1, ( CHARINDEX('^', ANSWER_TXT) - 1 )) + WHERE CHARINDEX('^', ANSWER_TXT) > 0; + UPDATE #coded_table_INV + SET ANSWER_TXT = 'OTH' + WHERE UPPER(ANSWER_TXT) LIKE 'OTH^%'; + SELECT @RowCount_no = -1; + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @Batch_id, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 8; + SET @Proc_Step_Name = ' Create table CODED_TABLE_OTHER_EMPTY_'+@category; + --CREATE TABLE CODED_TABLE_OTHER_EMPTY + IF OBJECT_ID('#CODED_TABLE_OTHER_EMPTY_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_OTHER_EMPTY_INV; + END; + + SELECT DISTINCT + CODED.CODE_SET_GROUP_ID, PAGE_CASE_UID, NBS_QUESTION_UID, RDB_COLUMN_NM, NBS_CASE_ANSWER_UID, '' AS ANSWER_TXT, ANSWER_OTH AS ANSWER_DESC11, OTHER_VALUE_IND_CD + INTO #CODED_TABLE_OTHER_EMPTY_INV + FROM #CODED_TABLE_INV AS CODED + WHERE OTHER_VALUE_IND_CD = 'T' AND + ( COALESCE(ANSWER_TXT, '') <> 'OTH' OR + LEN(COALESCE(answer_txt, '')) = 0 + ); + --ORDER BY NBS_CASE_ANSWER_UID, RDB_COLUMN_NM + SELECT @RowCount_no = @@ROWCOUNT; + CREATE NONCLUSTERED INDEX [RDB_PERF_INTERNAL_03] + ON #CODED_TABLE_OTHER_EMPTY_INV + ( [PAGE_CASE_UID] ASC, [RDB_COLUMN_NM] ASC + ); + + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @Batch_id, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 9; + SET @Proc_Step_Name = ' create table CODED_TABLE_OTHER_NONEMPTY_'+@category; + -- CREATE TABLE CODED_TABLE_OTHER_NONEMPTY + IF OBJECT_ID('#CODED_TABLE_OTHER_NONEMPTY_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_OTHER_NONEMPTY_INV; + END; + + SELECT DISTINCT + CODED.CODE_SET_GROUP_ID, PAGE_CASE_UID, NBS_QUESTION_UID, RDB_COLUMN_NM, NBS_CASE_ANSWER_UID, ANSWER_TXT, ANSWER_OTH AS ANSWER_DESC11, OTHER_VALUE_IND_CD + INTO #CODED_TABLE_OTHER_NONEMPTY_INV + FROM #CODED_TABLE_INV AS CODED + WHERE OTHER_VALUE_IND_CD = 'T' AND + ( ANSWER_OTH IS NOT NULL OR + ANSWER_TXT LIKE 'OTH^%' + ) + ORDER BY NBS_CASE_ANSWER_UID, RDB_COLUMN_NM; + SELECT @RowCount_no = @@ROWCOUNT; + CREATE NONCLUSTERED INDEX [RDB_PERF_INTERNAL_03] + ON #CODED_TABLE_OTHER_NONEMPTY_INV + ( [PAGE_CASE_UID] ASC, [RDB_COLUMN_NM] ASC + ); + + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @Batch_id, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + if @debug = 'true' + select * from #CODED_TABLE_OTHER_NONEMPTY_INV + + + + BEGIN TRANSACTION; + SET @Proc_Step_no = 10; + SET @Proc_Step_Name = ' delete from CODED_TABLE_OTHER_NONEMPTY_'+@category; + DELETE #CODED_TABLE_OTHER_EMPTY_INV + FROM #CODED_TABLE_OTHER_EMPTY_INV A + INNER JOIN + #CODED_TABLE_OTHER_NONEMPTY_INV B + ON A.PAGE_CASE_UID = B.PAGE_CASE_UID AND + A.RDB_COLUMN_NM = B.RDB_COLUMN_NM; + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 11; + SET @Proc_Step_Name = ' create table CODED_TABLE_OTHER_'+@category; + IF OBJECT_ID('#CODED_TABLE_OTHER_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_OTHER_INV; + END; + + SELECT COALESCE(cne.[NBS_QUESTION_UID], ce.[NBS_QUESTION_UID]) AS [NBS_QUESTION_UID], COALESCE(cne.[RDB_COLUMN_NM], ce.[RDB_COLUMN_NM]) AS [RDB_COLUMN_NM], COALESCE(cne.[CODE_SET_GROUP_ID], ce.[CODE_SET_GROUP_ID]) AS [CODE_SET_GROUP_ID], COALESCE(cne.[PAGE_CASE_UID], ce.[PAGE_CASE_UID]) AS [PAGE_CASE_UID], COALESCE(cne.[NBS_CASE_ANSWER_UID], ce.[NBS_CASE_ANSWER_UID]) AS [NBS_CASE_ANSWER_UID], COALESCE(cne.[ANSWER_TXT], ce.[ANSWER_TXT]) AS [ANSWER_TXT], COALESCE(cne.[ANSWER_DESC11], ce.[ANSWER_DESC11]) AS [ANSWER_DESC11], COALESCE(cne.[OTHER_VALUE_IND_CD], ce.[OTHER_VALUE_IND_CD]) AS [OTHER_VALUE_IND_CD], CAST(NULL AS [varchar](30)) AS RDB_COLUMN_NM2 + INTO #CODED_TABLE_OTHER_INV + FROM #CODED_TABLE_OTHER_NONEMPTY_INV AS cne + FULL OUTER JOIN + #CODED_TABLE_OTHER_EMPTY_INV AS ce + ON cne.NBS_CASE_ANSWER_UID = ce.NBS_CASE_ANSWER_UID AND + cne.[RDB_COLUMN_NM] = ce.[RDB_COLUMN_NM]; + SELECT @RowCount_no = @@ROWCOUNT; + CREATE NONCLUSTERED INDEX [RDB_PERF_INTERNAL_01] + ON #CODED_TABLE_OTHER_INV + ( [OTHER_VALUE_IND_CD] + ) + INCLUDE( [RDB_COLUMN_NM] ); + + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @Batch_id, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 12; + SET @Proc_Step_Name = ' update table CODED_TABLE_OTHER_'+@category; + UPDATE #CODED_TABLE_OTHER_INV + SET RDB_COLUMN_NM = REPLACE(SUBSTRING(RDB_COLUMN_NM, 1, 26), ' ', '') + '_OTH' + WHERE OTHER_VALUE_IND_CD = 'T'; + UPDATE #CODED_TABLE_OTHER_INV + SET ANSWER_TXT = '' + WHERE( OTHER_VALUE_IND_CD = 'T' AND + ANSWER_TXT <> 'OTH' + ); + SELECT @RowCount_no = -1; + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @Batch_id, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 12; + SET @Proc_Step_Name = ' create table CODED_TABLE_STD_'+@category; + --CREATE TABLE CODED_TABLE_STD + IF OBJECT_ID('#CODED_TABLE_STD_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_STD_INV; + END; + SELECT DISTINCT + CODED.CODE_SET_GROUP_ID, PAGE_CASE_UID, coded.NBS_QUESTION_UID, NBS_CASE_ANSWER_UID, ANSWER_TXT, METADATA.CODE_SET_NM, RDB_COLUMN_NM, ANSWER_OTH, METADATA.CODE, CODE_SHORT_DESC_TXT AS ANSWER_TXT1 + INTO #CODED_TABLE_STD_INV + FROM #coded_table_INV AS CODED WITH(NOLOCK) LEFT + OUTER JOIN + REF_FORMCODE_TRANSLATION AS METADATA WITH(NOLOCK) + ON METADATA.INVESTIGATION_FORM_CD = CODED.INVESTIGATION_FORM_CD AND + METADATA.CODE_SET_GROUP_ID = CODED.CODE_SET_GROUP_ID AND + METADATA.CODE = CODED.ANSWER_TXT and METADATA.NBS_QUESTION_UID=coded.NBS_QUESTION_UID + + UNION + SELECT DISTINCT + CODED.CODE_SET_GROUP_ID, PAGE_CASE_UID, NBS_QUESTION_UID, NBS_CASE_ANSWER_UID, ANSWER_TXT, 'COUNTY_CCD' AS CODE_SET_NM, RDB_COLUMN_NM, ANSWER_OTH, CODED.ANSWER_TXT, '' AS ANSWER_TXT1 + FROM #coded_table_INV AS CODED WITH(NOLOCK) + WHERE CODED.CODE_SET_GROUP_ID IN + ( + SELECT code_set_group_id + FROM nbs_srte..codeset + WHERE CLASS_CD = 'V_State_county_code_value' + ) + ORDER BY NBS_CASE_ANSWER_UID, RDB_COLUMN_NM; + + DELETE FROM #CODED_TABLE_STD_INV + WHERE ANSWER_TXT IS NOT NULL AND + ANSWER_TXT1 IS NULL AND + CODE_SET_NM 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + + BEGIN TRANSACTION; + SET @Proc_Step_no = 15; + SET @Proc_Step_Name = ' Create table CODED_TABLE_SNTEMP_'+@category; + -- CREATE TABLE CODED_TABLE_SNTEMP AS + IF OBJECT_ID('#CODED_TABLE_SNTEMP_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_SNTEMP_INV; + END; + + SELECT NBS_CASE_ANSWER_UID, + case when (RTRIM(CODE_SET_GROUP_ID) IS NULL AND (UNIT_TYPE_CD = 'CODED')) then nrt_page.unit_value + else CODE_SET_GROUP_ID end as CODE_SET_GROUP_ID, + nrt_page.RDB_COLUMN_NM, CAST(ANSWER_TXT AS varchar(2000)) AS ANSWER_TXT, ACT_UID AS 'PAGE_CASE_UID', nrt_page.RECORD_STATUS_CD, nrt_page.NBS_QUESTION_UID, nrt_page.MASK, CAST(NULL AS [varchar](2000)) AS ANSWER_TXT_CODE, CAST(NULL AS [varchar](2000)) AS ANSWER_VALUE, nrt_page.INVESTIGATION_FORM_CD, + nrt_page.UNIT_VALUE, CODE_SET_GROUP_ID AS CODE_SET_GROUP_ID1, QUESTION_GROUP_SEQ_NBR, DATA_TYPE, UNIT_VALUE AS UNIT_VALUE1, UNIT_TYPE_CD + INTO #CODED_TABLE_SNTEMP_INV + FROM dbo.nrt_page_case_answer AS nrt_page WITH(NOLOCK) --3 + INNER JOIN + NBS_SRTE.dbo.CODE_VALUE_GENERAL AS CVG WITH(NOLOCK) + ON UPPER(CVG.CODE) = UPPER(nrt_page.DATA_TYPE) + WHERE nrt_page.act_uid = @phc_id + AND nrt_page.ANSWER_GROUP_SEQ_NBR IS NULL + AND CVG.CODE_SET_NM = 'NBS_DATA_TYPE' + AND UPPER(nrt_page.data_type) = 'NUMERIC' + AND nrt_page.RDB_TABLE_NM = @rdb_table_name AND + QUESTION_GROUP_SEQ_NBR IS NULL AND + ( ( UPPER(DATA_TYPE) = 'NUMERIC' AND + UNIT_VALUE IS NOT NULL AND + unit_type_cd != 'LITERAL' + ) OR + ( UPPER(DATA_TYPE) = 'NUMERIC' AND + UPPER(mask) = 'NUM' AND + unit_type_cd = 'LITERAL' + ) + ) AND + RDB_COLUMN_NM NOT LIKE '%_CD' + ORDER BY ACT_UID, NBS_CASE_ANSWER_UID, nrt_page.CODE_SET_GROUP_ID; + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + + + BEGIN TRANSACTION; + SET @Proc_Step_no = 17; + SET @Proc_Step_Name = ' Ceate TABLE CODED_TABLE_SNTEMP_'+@category; + UPDATE #CODED_TABLE_SNTEMP_INV + SET ANSWER_TXT_CODE = SUBSTRING(ANSWER_TXT, CHARINDEX('^', ANSWER_TXT) + 1, LEN(RTRIM(ANSWER_TXT))), ANSWER_VALUE = REPLACE(SUBSTRING(ANSWER_TXT, 1, ( CHARINDEX('^', ANSWER_TXT) - 1 )), ',', '') + WHERE CHARINDEX('^', ANSWER_TXT) > 0; + UPDATE #CODED_TABLE_SNTEMP_INV + SET ANSWER_VALUE = answer_txt + WHERE ISNUMERIC(answer_txt) = 1; + + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 18; + SET @Proc_Step_Name = ' LOG Invalid Numeric data INTO ETL_DQ_LOG'; + + INSERT INTO dbo.ETL_DQ_LOG( EVENT_TYPE, EVENT_LOCAL_ID, EVENT_UID, DQ_ISSUE_CD, DQ_ISSUE_DESC_TXT, DQ_ISSUE_QUESTION_IDENTIFIER, DQ_ISSUE_ANSWER_TXT, DQ_ISSUE_RDB_LOCATION, JOB_BATCH_LOG_UID, DQ_ETL_PROCESS_TABLE, DQ_ETL_PROCESS_COLUMN, DQ_STATUS_TIME, DQ_ISSUE_SOURCE_LOCATION, DQ_ISSUE_SOURCE_QUESTION_LABEL ) + ( + SELECT DISTINCT 'INVESTIGATION', inv.LOCAL_ID, inv.PUBLIC_HEALTH_CASE_UID, + 'INVALID_NUMERIC_VALUE', 'BAD NUMERIC VALUE: A non-numeric value exists in a field expecting a numeric value and requires update. Please correct the bad numeric value so that it can be properly written to the reporting database during the next ETL run', + nrt_page.QUESTION_IDENTIFIER, ANSWER_VALUE, nrt_page.DATA_LOCATION, @Batch_id, nrt_page.rdb_table_nm, nrt_page.RDB_COLUMN_NM, + GETDATE(), nrt_page.DATA_LOCATION, QUESTION_LABEL + FROM #CODED_TABLE_SNTEMP_INV + INNER JOIN + dbo.nrt_investigation inv + on #CODED_TABLE_SNTEMP_INV.page_case_uid = inv.public_health_case_uid + INNER JOIN + NBS_SRTE.DBO.CONDITION_CODE + ON CONDITION_CODE.CONDITION_CD = inv.CD + INNER JOIN + dbo.nrt_page_case_answer nrt_page + ON nrt_page.act_uid = inv.public_health_case_uid + WHERE nrt_page.act_uid = @phc_id + AND (isNumeric(ANSWER_VALUE) != 1) + AND ANSWER_VALUE 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 19; + SET @Proc_Step_Name = ' Update CODED_TABLE_SNTEMP_TRANS_A_'+@category; + --CREATE TABLE CODED_TABLE_SNTEMP_TRANS_A + IF OBJECT_ID('#CODED_TABLE_SNTEMP_TRANS_A_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_SNTEMP_TRANS_A_INV; + END; + + SELECT + --CODED.CODE_SET_GROUP_ID, + PAGE_CASE_UID, ANSWER_TXT_CODE, ANSWER_VALUE, NBS_CASE_ANSWER_UID, METADATA.CODE_SET_NM, RDB_COLUMN_NM, METADATA.CODE, CODE_SHORT_DESC_TXT AS 'ANSWER_TXT2', MASK, coded.NBS_QUESTION_UID, CAST(NULL AS varchar(2000)) AS ANSWER_TXT, METADATA.INVESTIGATION_FORM_CD + INTO #CODED_TABLE_SNTEMP_TRANS_A_INV + FROM #CODED_TABLE_SNTEMP_INV AS CODED WITH(NOLOCK) LEFT + JOIN + REF_FORMCODE_TRANSLATION AS METADATA WITH(NOLOCK) + ON METADATA.INVESTIGATION_FORM_CD = CODED.INVESTIGATION_FORM_CD AND + METADATA.CODE_SET_GROUP_ID = CODED.CODE_SET_GROUP_ID AND + METADATA.CODE = CODED.ANSWER_TXT_CODE + ORDER BY NBS_CASE_ANSWER_UID, RDB_COLUMN_NM; + SELECT @RowCount_no = @@ROWCOUNT; + UPDATE #CODED_TABLE_SNTEMP_TRANS_A_INV SET ANSWER_VALUE=NULL WHERE ISNUMERIC(ANSWER_VALUE)!=1; + UPDATE #CODED_TABLE_SNTEMP_TRANS_A_INV + SET CODE_SET_NM = a.CODE_SET_NM, ANSWER_TXT_CODE = '', ANSWER_TXT2 = '', code = '' + FROM + ( + SELECT TOP 1 CODE_SET_NM, NBS_QUESTION_UID + FROM #CODED_TABLE_SNTEMP_TRANS_A_INV + WHERE CODE_SET_NM IS NOT NULL + ) AS a + WHERE #CODED_TABLE_SNTEMP_TRANS_A_INV.NBS_QUESTION_UID = a.NBS_QUESTION_UID AND + #CODED_TABLE_SNTEMP_TRANS_A_INV.code_set_nm IS NULL; + + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @Batch_id, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + + COMMIT TRANSACTION; + + + BEGIN TRANSACTION; + SET @Proc_Step_no = 20; + SET @Proc_Step_Name = ' UPDATE TABLE CODED_TABLE_SNTEMP_TRANS_A_'+@category; + + UPDATE #CODED_TABLE_SNTEMP_TRANS_A_INV + SET ANSWER_TXT = REPLACE(ANSWER_VALUE, ' ', '') + WHERE LEN(mask) > 0; + UPDATE #CODED_TABLE_SNTEMP_TRANS_A_INV + SET ANSWER_TXT = REPLACE(ANSWER_VALUE, ' ', '') + ' ' + REPLACE(ANSWER_TXT2, ' ', '') + WHERE LEN(mask) = 0; + SELECT @RowCount_no = -1; + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @Batch_id, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 21; + SET @Proc_Step_Name = ' UPDATE TABLE CODED_TABLE_SNTEMP_TRANS_CODE_'+@category; + IF OBJECT_ID('#CODED_TABLE_SNTEMP_TRANS_CODE_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_SNTEMP_TRANS_CODE_INV; + END; + + SELECT * + INTO #CODED_TABLE_SNTEMP_TRANS_CODE_INV + FROM #CODED_TABLE_SNTEMP_TRANS_A_INV; + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 22; + SET @Proc_Step_Name = ' UPDATE TABLE CODED_TABLE_SNTEMP_TRANS_CODE_'+@category; + UPDATE #CODED_TABLE_SNTEMP_TRANS_CODE_INV + SET RDB_COLUMN_NM = REPLACE(SUBSTRING(RDB_COLUMN_NM, 1, 25) + '_UNIT', ' ', ''), ANSWER_TXT = REPLACE(ANSWER_TXT2, ' ', ' ') + WHERE LEN(mask) > 0; + --alter table dbo.CODED_TABLE_SNTEMP_TRANS_CODE_INV_HIV drop column CODE_SET_GROUP_ID ; + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 23; + SET @Proc_Step_Name = ' CREATE TABLE CODED_TABLE_'+@category; + IF OBJECT_ID('#CODED_TABLE_TEMP_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_TEMP_INV; + END; + + IF OBJECT_ID('#CODED_TABLE_CAT_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_CAT_INV; + END; + + SELECT COALESCE(csnta.NBS_CASE_ANSWER_UID, csntc.NBS_CASE_ANSWER_UID) AS NBS_CASE_ANSWER_UID, COALESCE(csnta.RDB_COLUMN_NM, csntc.RDB_COLUMN_NM) AS RDB_COLUMN_NM, COALESCE(csnta.PAGE_CASE_UID, csntc.PAGE_CASE_UID) AS PAGE_CASE_UID, COALESCE(csnta.ANSWER_TXT_CODE, csntc.ANSWER_TXT_CODE) AS ANSWER_TXT_CODE, COALESCE(csnta.ANSWER_VALUE, csntc.ANSWER_VALUE) AS ANSWER_VALUE, COALESCE(csnta.CODE_SET_NM, csntc.CODE_SET_NM) AS CODE_SET_NM, COALESCE(csnta.CODE, csntc.CODE) AS CODE, COALESCE(csnta.ANSWER_TXT2, csntc.ANSWER_TXT2) AS ANSWER_TXT2, COALESCE(csnta.MASK, csntc.MASK) AS MASK, COALESCE(csnta.ANSWER_TXT, csntc.ANSWER_TXT) AS ANSWER_TXT, COALESCE(csnta.nbs_question_uid, csntc.nbs_question_uid) AS nbs_question_uid + INTO #CODED_TABLE_TEMP_INV + FROM #CODED_TABLE_SNTEMP_TRANS_A_INV AS csnta + FULL OUTER JOIN + #CODED_TABLE_SNTEMP_TRANS_CODE_INV AS csntc + ON csnta.NBS_CASE_ANSWER_UID = csntc.NBS_CASE_ANSWER_UID AND + csnta.[RDB_COLUMN_NM] = csntc.[RDB_COLUMN_NM]; + SELECT CODE_SET_GROUP_ID, COALESCE(csnta.PAGE_CASE_UID, csntt.[PAGE_CASE_UID]) AS [PAGE_CASE_UID], COALESCE(csnta.NBS_QUESTION_UID, csntt.NBS_QUESTION_UID) AS [NBS_QUESTION_UID], COALESCE(csnta.NBS_QUESTION_UID, csntt.[NBS_CASE_ANSWER_UID]) AS [NBS_CASE_ANSWER_UID], COALESCE(csnta.ANSWER_TXT, csntt.[ANSWER_TXT]) AS [ANSWER_TXT], COALESCE(csnta.CODE_SET_NM, csntt.[CODE_SET_NM]) AS [CODE_SET_NM], COALESCE(csnta.RDB_COLUMN_NM, csntt.[RDB_COLUMN_NM]) AS [RDB_COLUMN_NM], ANSWER_OTH, COALESCE(csnta.CODE, csntt.[CODE]) AS [CODE], csnta.ANSWER_TXT1, csntt.[ANSWER_TXT_CODE], csntt.[ANSWER_VALUE], csntt.[ANSWER_TXT2], csntt.[MASK] + INTO #CODED_TABLE_CAT_INV + FROM #CODED_TABLE_STD_INV AS csnta + FULL OUTER JOIN + #CODED_TABLE_TEMP_INV AS csntt + ON csnta.NBS_CASE_ANSWER_UID = csntt.NBS_CASE_ANSWER_UID AND + csnta.[RDB_COLUMN_NM] = csntt.[RDB_COLUMN_NM]; + SELECT @RowCount_no = @@ROWCOUNT; + + CREATE NONCLUSTERED INDEX [RDB_PERF_INTERNAL_02] + ON #CODED_TABLE_CAT_INV + ( [CODE_SET_GROUP_ID] + ) + INCLUDE( [PAGE_CASE_UID], [NBS_QUESTION_UID], [NBS_CASE_ANSWER_UID], [ANSWER_TXT], [RDB_COLUMN_NM], [ANSWER_OTH] ); + + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @Batch_id, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 24; + SET @Proc_Step_Name = ' UPDATE TABLE CODED_TABLE_'+@category; + UPDATE #CODED_TABLE_CAT_INV + SET ANSWER_TXT1 = ANSWER_TXT + WHERE RTRIM(ANSWER_TXT1) = ''; + + if @debug = 'true' + select * from #CODED_TABLE_CAT_INV + + IF OBJECT_ID('#CODED_TABLE_DESC_INV_TEMP', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_DESC_INV_TEMP; + END; + + SELECT p1.PAGE_CASE_UID, p1.NBS_QUESTION_UID, STUFF( + ( + SELECT TOP 10 ' | ' + ANSWER_TXT1 + FROM #CODED_TABLE_CAT_INV AS p2 + WHERE p2.PAGE_CASE_UID = p1.PAGE_CASE_UID AND + p2.nbs_question_uid = p1.NBS_QUESTION_UID + ORDER BY PAGE_CASE_UID, NBS_QUESTION_UID, NBS_CASE_ANSWER_UID FOR XML PATH(''), TYPE + ).value( '.', 'varchar(2000)' ), 1, 3, '') AS ANSWER_DESC11 + INTO #CODED_TABLE_DESC_INV_TEMP + FROM #CODED_TABLE_CAT_INV AS p1 + --where nbs_question_uid is not null + GROUP BY PAGE_CASE_UID, RDB_COLUMN_NM, NBS_QUESTION_UID; + + if @debug = 'true' + select * from #CODED_TABLE_DESC_INV_TEMP + + IF OBJECT_ID('#CODED_TABLE_DESC_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_DESC_INV; + END; + + SELECT ct.*, COALESCE(ctt.answer_desc11, ct.answer_txt1) AS answer_desc11 + INTO #CODED_TABLE_DESC_INV + FROM #CODED_TABLE_CAT_INV AS ct LEFT + OUTER JOIN + #CODED_TABLE_DESC_INV_TEMP AS ctt + ON ct.PAGE_CASE_UID = ctt.PAGE_CASE_UID AND + ct.NBS_QUESTION_UID = ctt.NBS_QUESTION_UID; + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + if @debug = 'true' + select * from #CODED_TABLE_DESC_INV + + BEGIN TRANSACTION; + SET @Proc_Step_no = 26; + SET @Proc_Step_Name = 'CREATE TABLE CODED_COUNTY_TABLE_'+@category; + --CREATE TABLE CODED_COUNTY_TABLE + IF OBJECT_ID('#CODED_COUNTY_TABLE_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_COUNTY_TABLE_INV; + END; + + SELECT CODED.CODE_SET_GROUP_ID, PAGE_CASE_UID, NBS_QUESTION_UID, NBS_CASE_ANSWER_UID, ANSWER_TXT, CVG.CODE_SET_NM, RDB_COLUMN_NM, ANSWER_OTH, CVG.CODE, CODE_SHORT_DESC_TXT AS 'ANSWER_TXT1' + INTO #CODED_COUNTY_TABLE_INV + FROM #CODED_TABLE_INV AS CODED WITH(NOLOCK) LEFT + JOIN + NBS_SRTE.dbo.CODESET_GROUP_METADATA AS METADATA WITH(NOLOCK) + ON METADATA.CODE_SET_GROUP_ID = CODED.CODE_SET_GROUP_ID LEFT + JOIN + NBS_SRTE.dbo.V_STATE_COUNTY_CODE_VALUE AS CVG WITH(NOLOCK) + ON CVG.CODE_SET_NM = METADATA.CODE_SET_NM AND + CVG.CODE = CODED.ANSWER_TXT + WHERE METADATA.CODE_SET_NM = 'COUNTY_CCD'; + + IF OBJECT_ID('#CODED_COUNTY_TABLE_DESC_INV_TEMP', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_COUNTY_TABLE_DESC_INV_TEMP; + END; + + SELECT p1.PAGE_CASE_UID, p1.NBS_QUESTION_UID, STUFF( + ( + SELECT TOP 10 ' |' + ANSWER_TXT1 + FROM #CODED_COUNTY_TABLE_INV AS p2 + WHERE p2.PAGE_CASE_UID = p1.PAGE_CASE_UID AND + p2.nbs_question_uid = p1.NBS_QUESTION_UID + ORDER BY PAGE_CASE_UID, NBS_QUESTION_UID, NBS_CASE_ANSWER_UID FOR XML PATH(''), TYPE + ).value( '.', 'varchar(2000)' ), 1, 2, '') AS ANSWER_DESC11 + INTO #CODED_COUNTY_TABLE_DESC_INV_TEMP + FROM #CODED_COUNTY_TABLE_INV AS p1 + GROUP BY PAGE_CASE_UID, NBS_QUESTION_UID; + + IF OBJECT_ID('#CODED_COUNTY_TABLE_DESC_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_COUNTY_TABLE_DESC_INV; + END; + + SELECT cct.*, cctt.answer_desc11 + INTO #CODED_COUNTY_TABLE_DESC_INV + FROM #CODED_COUNTY_TABLE_INV AS cct LEFT + OUTER JOIN + #CODED_COUNTY_TABLE_DESC_INV_TEMP AS cctt + ON cct.PAGE_CASE_UID = cctt.PAGE_CASE_UID AND + cct.NBS_QUESTION_UID = cctt.NBS_QUESTION_UID; + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 27; + SET @Proc_Step_Name = 'CREATE TABLE CODED_TABLE_MERGED_'+@category; + IF OBJECT_ID('#CODED_TABLE_MERGED_TEMP_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_MERGED_TEMP_INV; + END; + IF OBJECT_ID('#CODED_TABLE_MERGED_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_MERGED_INV; + END; + + SELECT temp_tbl.* + INTO #CODED_TABLE_MERGED_INV + FROM + ( + SELECT [CODE_SET_GROUP_ID], [PAGE_CASE_UID], [NBS_QUESTION_UID], [NBS_CASE_ANSWER_UID], [ANSWER_TXT], [CODE_SET_NM], [RDB_COLUMN_NM], [ANSWER_OTH], [CODE], [ANSWER_TXT1], [answer_desc11], [ANSWER_TXT_CODE], [ANSWER_VALUE], [ANSWER_TXT2], [MASK], NULL AS OTHER_VALUE_IND_CD, NULL AS RDB_COLUMN_NM2 + FROM #CODED_TABLE_DESC_INV + UNION ALL + SELECT [CODE_SET_GROUP_ID], [PAGE_CASE_UID], [NBS_QUESTION_UID], [NBS_CASE_ANSWER_UID], [ANSWER_TXT], [CODE_SET_NM], [RDB_COLUMN_NM], [ANSWER_OTH], [CODE], [ANSWER_TXT1], [answer_desc11], NULL, NULL, NULL, NULL, NULL, NULL + FROM #CODED_COUNTY_TABLE_DESC_INV + UNION ALL + SELECT [CODE_SET_GROUP_ID], [PAGE_CASE_UID], [NBS_CASE_ANSWER_UID], [NBS_QUESTION_UID], [ANSWER_TXT], NULL, [RDB_COLUMN_NM], NULL, NULL, NULL, [ANSWER_DESC11], NULL, NULL, NULL, NULL, [OTHER_VALUE_IND_CD], [RDB_COLUMN_NM2] + FROM #CODED_TABLE_OTHER_INV + ) AS temp_tbl; + + CREATE NONCLUSTERED INDEX [RDB_PERF_INTERNAL_04] + ON #CODED_TABLE_MERGED_INV + ( [RDB_COLUMN_NM] + ); + + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + if @debug = 'true' + select * from #CODED_TABLE_MERGED_INV; + + + BEGIN TRANSACTION; + SET @Proc_Step_no = 31; + SET @Proc_Step_Name = ' CREATE TABLE DATE_DATA_'+@category; + -- CREATE TABLE DATE_DATA AS + IF OBJECT_ID('#DATE_DATA_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #DATE_DATA_INV; + END; + + SELECT NBS_CASE_ANSWER_UID, nrt_page.CODE_SET_GROUP_ID, nrt_page.RDB_COLUMN_NM, + (CASE + WHEN ISDATE(ANSWER_TXT) = 1 THEN ANSWER_TXT + ELSE NULL + END ) AS ANSWER_TXT1, ACT_UID AS PAGE_CASE_UID, nrt_page.RECORD_STATUS_CD, + nrt_page.NBS_QUESTION_UID, ( CASE + WHEN ISDATE(ANSWER_TXT) = 1 THEN ANSWER_TXT + ELSE NULL + END ) AS ANSWER_TXT, + nrt_page.INVESTIGATION_FORM_CD, CODE_SET_GROUP_ID AS CODE_SET_GROUP_ID1, QUESTION_GROUP_SEQ_NBR, DATA_TYPE + INTO #DATE_DATA_INV + FROM dbo.nrt_page_case_answer AS nrt_page WITH(NOLOCK) --4 + LEFT OUTER JOIN + NBS_SRTE.dbo.CODE_VALUE_GENERAL AS CVG WITH(NOLOCK) + ON UPPER(CVG.CODE) = UPPER(nrt_page.DATA_TYPE) + WHERE nrt_page.act_uid = @phc_id + AND nrt_page.ANSWER_GROUP_SEQ_NBR IS NULL + AND CVG.CODE_SET_NM = 'NBS_DATA_TYPE' + AND CODE IN( 'DATETIME', 'DATE' ) + AND nrt_page.RDB_TABLE_NM = @rdb_table_name AND + QUESTION_GROUP_SEQ_NBR IS NULL AND + DATA_TYPE IN( 'Date/Time', 'Date', 'DATETIME', 'DATE' ) + ORDER BY ACT_UID, NBS_CASE_ANSWER_UID, nrt_page.CODE_SET_GROUP_ID; + + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + INSERT INTO dbo.ETL_DQ_LOG( EVENT_TYPE, EVENT_LOCAL_ID, EVENT_UID, DQ_ISSUE_CD, DQ_ISSUE_DESC_TXT, DQ_ISSUE_QUESTION_IDENTIFIER, DQ_ISSUE_ANSWER_TXT, DQ_ISSUE_RDB_LOCATION, JOB_BATCH_LOG_UID, DQ_ETL_PROCESS_TABLE, DQ_ETL_PROCESS_COLUMN, DQ_STATUS_TIME, DQ_ISSUE_SOURCE_LOCATION, DQ_ISSUE_SOURCE_QUESTION_LABEL ) + ( + SELECT 'INVESTIGATION', inv.LOCAL_ID, inv.PUBLIC_HEALTH_CASE_UID, 'INVALID_DATE', 'BAD DATE: A poorly formatted date exists and requires update. Please correct the bad date so that it can be properly written to the reporting database during the next ETL run.', nrt_page.QUESTION_IDENTIFIER, ANSWER_TXT, nrt_page.DATA_LOCATION, @Batch_id, nrt_page.rdb_table_nm, nrt_page.RDB_COLUMN_NM, GETDATE(), nrt_page.DATA_LOCATION, nrt_page.QUESTION_LABEL + FROM dbo.nrt_page_case_answer nrt_page + INNER JOIN + dbo.nrt_investigation inv + ON nrt_page.ACT_UID = inv.PUBLIC_HEALTH_CASE_UID + INNER JOIN + NBS_SRTE.DBO.CONDITION_CODE + ON CONDITION_CODE.CONDITION_CD = inv.CD + WHERE nrt_page.act_uid = @phc_id + AND DATA_TYPE IN ( 'Date/Time', 'Date', 'DATETIME', 'DATE' ) AND + (ISDATE(ANSWER_TXT) != 1) AND + UPPER(nrt_page.DATA_LOCATION) = 'NBS_CASE_ANSWER.ANSWER_TXT' AND + ANSWER_TXT IS NOT NULL AND + nrt_page.rdb_table_nm = @rdb_table_name + AND CONDITION_CODE.INVESTIGATION_FORM_CD = nrt_page.INVESTIGATION_FORM_CD + ); + + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 32; + SET @Proc_Step_Name = ' UPDATE TABLE date_data_INV'; + UPDATE #DATE_DATA_INV + SET ANSWER_TXT1 = FORMAT(CAST([ANSWER_TXT] AS date), 'MM/dd/yy') + ' 00:00:00'; + --SET ANSWER_TXT=dhms(input(ANSWER_TXT1,MMDDYY10.),0,0,0); + --DROP ANSWER_TXT; + --RENAME ANSWER_TXT=ANSWER_TXT1; + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + + BEGIN TRANSACTION; + SET @Proc_Step_no = 36; + SET @Proc_Step_Name = ' CREATE TABLE PAGE_DATE_TABLE_'+@category; + IF OBJECT_ID('#PAGE_DATE_TABLE_INV', 'U') IS NOT NULL + BEGIN + DROP TABLE #PAGE_DATE_TABLE_INV; + END; + + CREATE TABLE #PAGE_DATE_TABLE_INV + ( + NBS_CASE_ANSWER_UID bigint, CODE_SET_GROUP_ID bigint, RDB_COLUMN_NM char(40), ANSWER_TXT1 date, PAGE_CASE_UID bigint, LAST_CHG_TIME date, RECORD_STATUS_CD char(40) + ); + + --IF PAGE_CASE_UID=. THEN PAGE_CASE_UID= 1; + UPDATE #DATE_DATA_INV + SET PAGE_CASE_UID = 1 + WHERE PAGE_CASE_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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 37; + SET @Proc_Step_Name = ' UPDATE TABLE PAGE_DATE_TABLE_'+@category; + --%DBLOAD (PAGE_DATE_TABLE, DATE_DATA); + INSERT INTO #PAGE_DATE_TABLE_INV( NBS_CASE_ANSWER_UID, CODE_SET_GROUP_ID, RDB_COLUMN_NM, ANSWER_TXT1, PAGE_CASE_UID, RECORD_STATUS_CD ) + SELECT NBS_CASE_ANSWER_UID, CODE_SET_GROUP_ID, RDB_COLUMN_NM, CAST(ANSWER_TXT1 AS datetime), PAGE_CASE_UID, + -- LAST_CHG_TIME , + RECORD_STATUS_CD + FROM #DATE_DATA_INV; + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + DECLARE @date_output_table_name varchar(500) = '' + SET @Proc_Step_no = 39; + SET @date_output_table_name = '##date_data_INV_out_'+@category+'_'+CAST(@Batch_id as varchar(50)); + + SET @Proc_Step_Name = ' Generating FINAL TABLE FOR '+@date_output_table_name; + + EXEC ('IF OBJECT_ID(''tempdb..'+@date_output_table_name+''', ''U'') IS NOT NULL + BEGIN + DROP TABLE '+@date_output_table_name+'; + END;') + + SET @columns = N''; + SELECT @columns+=N', p.' + QUOTENAME(LTRIM(RTRIM([RDB_COLUMN_NM]))) + FROM + ( + SELECT [RDB_COLUMN_NM] + FROM #PAGE_DATE_TABLE_INV AS p + GROUP BY [RDB_COLUMN_NM] + ) AS x; + + SET @sql = N' + SELECT [PAGE_CASE_UID] as PAGE_CASE_UID_date, ' + STUFF(@columns, 1, 2, '') + ' into '+@date_output_table_name + ' FROM ( + SELECT [PAGE_CASE_UID], [answer_txt1] , [RDB_COLUMN_NM] + FROM #PAGE_DATE_TABLE_INV + group by [PAGE_CASE_UID], [answer_txt1] , [RDB_COLUMN_NM] + ) AS j PIVOT (max(answer_txt1) FOR [RDB_COLUMN_NM] in + (' + STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '') + ')) AS p;'; + + if @debug = 'true' + PRINT @sql; + + EXEC sp_executesql @sql; + + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + --- If the #PAGE_date_table_inv table does not have any records create the table with default column + EXEC ('IF OBJECT_ID(''tempdb..'+@date_output_table_name+''', ''U'') IS NULL + BEGIN + CREATE TABLE '+@date_output_table_name+' + ( + [PAGE_CASE_UID_date] [bigint] NULL, + ) + + END;') + + if @debug = 'true' + EXEC ('select * from '+@date_output_table_name) + + COMMIT TRANSACTION; + + ---************************************************************* + ---** START PROCESSING NUMERIC QUESTIONS AND ANSWERS ************* + + BEGIN TRANSACTION; + SET @Proc_Step_no = 41; + SET @Proc_Step_Name = ' CREATE TABLE NUMERIC_BASE_DATA_INV_CAT'; + IF OBJECT_ID('#NUMERIC_BASE_DATA_INV_CAT', 'U') IS NOT NULL + BEGIN + DROP TABLE #NUMERIC_BASE_DATA_INV_CAT; + END; + + SELECT NBS_CASE_ANSWER_UID, nrt_page.CODE_SET_GROUP_ID, nrt_page.RDB_COLUMN_NM, CAST(ANSWER_TXT AS varchar(2000)) AS ANSWER_TXT, ACT_UID AS PAGE_CASE_UID, nrt_page.RECORD_STATUS_CD, nrt_page.NBS_QUESTION_UID, LEN(RTRIM(ANSWER_TXT)) AS TXT_LEN, CAST(NULL AS [varchar](2000)) AS ANSWER_UNIT, CAST(NULL AS int) AS LENCODED, + CAST(NULL AS [varchar](2000)) AS ANSWER_CODED, CAST(NULL AS [varchar](2000)) AS UNIT_VALUE1, CAST(NULL AS [varchar](30)) AS RDB_COLUMN_NM2, + CODE_SET_GROUP_ID AS CODE_SET_GROUP_ID1, QUESTION_GROUP_SEQ_NBR, DATA_TYPE + INTO #NUMERIC_BASE_DATA_INV_CAT + FROM dbo.nrt_page_case_answer AS nrt_page WITH(NOLOCK) --5 + INNER JOIN + NBS_SRTE.dbo.CODE_VALUE_GENERAL AS CVG WITH(NOLOCK) + ON UPPER(CVG.CODE) = UPPER(nrt_page.DATA_TYPE) + WHERE nrt_page.act_uid=@phc_id + AND nrt_page.ANSWER_GROUP_SEQ_NBR IS NULL + AND CVG.CODE_SET_NM = 'NBS_DATA_TYPE' + AND CODE IN( 'Numeric', 'NUMERIC' ) + AND nrt_page.RDB_TABLE_NM = @rdb_table_name AND + nrt_page.QUESTION_GROUP_SEQ_NBR IS NULL AND + nrt_page.DATA_TYPE IN( 'Numeric', 'NUMERIC' ) AND + nrt_page.nbs_question_uid NOT IN + ( + SELECT nbs_question_uid + FROM #CODED_TABLE_SNTEMP_TRANS_A_INV + ) + ORDER BY ACT_UID, NBS_CASE_ANSWER_UID, nrt_page.CODE_SET_GROUP_ID; + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 43; + SET @Proc_Step_Name = ' UPDATE TABLE #NUMERIC_BASE_DATA_INV_CAT'; + + UPDATE #NUMERIC_BASE_DATA_INV_CAT + SET ANSWER_UNIT = SUBSTRING(ANSWER_TXT, 1, ( CHARINDEX('^', ANSWER_TXT) - 1 )) + WHERE CHARINDEX('^', ANSWER_TXT) > 0; + UPDATE #NUMERIC_BASE_DATA_INV_CAT + SET LENCODED = LEN(RTRIM(ANSWER_UNIT)) + WHERE CHARINDEX('^', ANSWER_TXT) > 0; + UPDATE #NUMERIC_BASE_DATA_INV_CAT + SET ANSWER_CODED = SUBSTRING(ANSWER_TXT, ( LENCODED + 2 ), TXT_LEN) + WHERE CHARINDEX('^', ANSWER_TXT) > 0; + UPDATE #NUMERIC_BASE_DATA_INV_CAT + SET UNIT_VALUE1 = REPLACE(ANSWER_UNIT, ',', '') + WHERE CHARINDEX('^', ANSWER_TXT) > 0; + UPDATE #NUMERIC_BASE_DATA_INV_CAT + SET RDB_COLUMN_NM2 = SUBSTRING(RTRIM(RDB_COLUMN_NM), 1, 25) + ' UNIT' + WHERE LEN(RTRIM(ANSWER_CODED)) > 0; + IF OBJECT_ID('#NUMERIC_DATA_2_INV_CAT', 'U') IS NOT NULL + BEGIN + DROP TABLE #NUMERIC_DATA_2_INV_CAT; + END; + + SELECT * + INTO #NUMERIC_DATA_2_INV_CAT + FROM #NUMERIC_BASE_DATA_INV_CAT; + UPDATE #NUMERIC_DATA_2_INV_CAT + SET RDB_COLUMN_NM = RDB_COLUMN_NM2 + WHERE LEN(RTRIM(RDB_COLUMN_NM2)) > 0; + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + + BEGIN TRANSACTION; + SET @Proc_Step_no = 44; + SET @Proc_Step_Name = ' CREATE TABLE NUMERIC_DATA_MERGED_INV_CAT'; + IF OBJECT_ID('#NUMERIC_DATA_MERGED_INV_CAT', 'U') IS NOT NULL + BEGIN + DROP TABLE #NUMERIC_DATA_MERGED_INV_CAT; + END; + + SELECT COALESCE(nbd.NBS_CASE_ANSWER_UID, nd2.NBS_CASE_ANSWER_UID) AS NBS_CASE_ANSWER_UID, COALESCE(nbd.[RDB_COLUMN_NM2], nd2.[RDB_COLUMN_NM2]) AS [RDB_COLUMN_NM2], COALESCE(nbd.[CODE_SET_GROUP_ID], nd2.[CODE_SET_GROUP_ID]) AS [CODE_SET_GROUP_ID], COALESCE(nbd.[RDB_COLUMN_NM], nd2.[RDB_COLUMN_NM]) AS [RDB_COLUMN_NM], COALESCE(nbd.[ANSWER_TXT], nd2.[ANSWER_TXT]) AS [ANSWER_TXT], COALESCE(nbd.[PAGE_CASE_UID], nd2.[PAGE_CASE_UID]) AS [PAGE_CASE_UID], COALESCE(nbd.[RECORD_STATUS_CD], nd2.[RECORD_STATUS_CD]) AS [RECORD_STATUS_CD], COALESCE(nbd.[NBS_QUESTION_UID], nd2.[NBS_QUESTION_UID]) AS [NBS_QUESTION_UID], COALESCE(nbd.[TXT_LEN], nd2.[TXT_LEN]) AS [TXT_LEN], COALESCE(nbd.[ANSWER_UNIT], nd2.[ANSWER_UNIT]) AS [ANSWER_UNIT], COALESCE(nbd.[LENCODED], nd2.[LENCODED]) AS [LENCODED], COALESCE(nbd.[ANSWER_CODED], nd2.[ANSWER_CODED]) AS [ANSWER_CODED], COALESCE(nbd.[UNIT_VALUE1], nd2.[UNIT_VALUE1]) AS [UNIT_VALUE1] + INTO #NUMERIC_DATA_MERGED_INV_CAT + FROM #NUMERIC_BASE_DATA_INV_CAT AS nbd + FULL OUTER JOIN + #NUMERIC_DATA_2_INV_CAT AS nd2 + ON nbd.NBS_CASE_ANSWER_UID = nd2.NBS_CASE_ANSWER_UID AND + nbd.[RDB_COLUMN_NM] = nd2.[RDB_COLUMN_NM]; + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 45; + SET @Proc_Step_Name = ' CREATE TABLE NUMERIC_DATA_TRANS_INV_CAT'; + --CREATE TABLE NUMERIC_DATA_TRANS AS + IF OBJECT_ID('#NUMERIC_DATA_TRANS_INV_CAT', 'U') IS NOT NULL + BEGIN + DROP TABLE #NUMERIC_DATA_TRANS_INV_CAT; + END; + + SELECT PAGE_CASE_UID, NBS_QUESTION_UID, NBS_CASE_ANSWER_UID, ANSWER_UNIT, ANSWER_CODED, CVG.CODE_SET_NM, RDB_COLUMN_NM, ANSWER_TXT, CODE, CODE_SHORT_DESC_TXT AS UNIT, CAST(NULL AS [varchar](2000)) AS ANSWER_TXT_F + INTO #NUMERIC_DATA_TRANS_INV_CAT + FROM #NUMERIC_DATA_MERGED_INV_CAT AS CODED WITH(NOLOCK) LEFT + JOIN + NBS_SRTE.dbo.CODESET_GROUP_METADATA AS METADATA WITH(NOLOCK) + ON METADATA.CODE_SET_GROUP_ID = CODED.CODE_SET_GROUP_ID LEFT + JOIN + NBS_SRTE.dbo.CODE_VALUE_GENERAL AS CVG WITH(NOLOCK) + ON CVG.CODE_SET_NM = METADATA.CODE_SET_NM + WHERE CVG.CODE = CODED.ANSWER_CODED OR + ANSWER_CODED IS NULL + ORDER BY PAGE_CASE_UID; + UPDATE #NUMERIC_DATA_TRANS_INV_CAT + SET PAGE_CASE_UID = COALESCE(PAGE_CASE_UID, 1), ANSWER_TXT_F = CASE + WHEN COALESCE(RTRIM(UNIT), '') = '' THEN ANSWER_TXT + WHEN CHARINDEX(' UNIT', RDB_COLUMN_NM) > 0 THEN UNIT + ELSE ANSWER_UNIT + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 48; + SET @Proc_Step_Name = ' UPDATE TABLE CODED_TABLE_SNTEMP_TRANS_A_INV_CAT'; + + IF OBJECT_ID('#NUMERIC_DATA_TRANS1_INV_CAT', 'U') IS NOT NULL + BEGIN + DROP TABLE #NUMERIC_DATA_TRANS1_INV_CAT; + END; + /** + IF OBJECT_ID('#CODED_TABLE_MERGED_INV', 'U') IS NULL + BEGIN + CREATE TABLE #CODED_TABLE_MERGED_INV + ( + [RDB_COLUMN_NM] [varchar](30) NULL, [ANSWER_TXT] [varchar](2000) NULL + ) + ON [PRIMARY]; + END; + **/ + + SELECT DISTINCT + ndtis.PAGE_CASE_UID, ndtis.RDB_COLUMN_NM, ANSWER_UNIT, ANSWER_TXT_F AS ANSWER_TXT + INTO #NUMERIC_DATA_TRANS1_INV_CAT + FROM #NUMERIC_DATA_TRANS_INV_CAT AS ndtis LEFT + OUTER JOIN + #CODED_TABLE_MERGED_INV AS ctmis + ON ndtis.RDB_COLUMN_NM = ctmis.RDB_COLUMN_NM AND + ctmis.answer_txt IS NOT NULL AND + ctmis.RDB_COLUMN_NM IS NULL; + + + COMMIT TRANSACTION; + + if @debug = 'true' + select * from #NUMERIC_DATA_TRANS1_INV_CAT; + + BEGIN TRANSACTION; + WITH lst + AS (SELECT ndtis.rdb_column_nm, + CASE + WHEN ndtis.answer_txt IS NOT NULL THEN 1 + ELSE 0 + END AS Ans_null + FROM #NUMERIC_DATA_TRANS1_INV_CAT AS ndtis LEFT + OUTER JOIN + #CODED_TABLE_MERGED_INV AS ctmis + ON ndtis.RDB_COLUMN_NM = ctmis.RDB_COLUMN_NM AND + ctmis.answer_txt IS NOT NULL AND + ctmis.RDB_COLUMN_NM IS NULL) + DELETE FROM #CODED_TABLE_MERGED_INV + WHERE RDB_COLUMN_NM IN + ( + SELECT rdb_column_nm + FROM lst + WHERE ans_null != 0 + ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + WITH lst + AS (SELECT rdb_column_nm, + CASE + WHEN answer_txt IS NOT NULL THEN 1 + ELSE 0 + END AS Ans_null + FROM #NUMERIC_DATA_TRANS1_INV_CAT + WHERE RDB_COLUMN_NM IN + ( + SELECT RDB_COLUMN_NM + FROM #CODED_TABLE_MERGED_INV + GROUP BY rdb_column_nm + ) + GROUP BY rdb_column_nm, + CASE + WHEN answer_txt IS NOT NULL THEN 1 + ELSE 0 + END) + DELETE FROM #NUMERIC_DATA_TRANS1_INV_CAT + WHERE rdb_column_nm IN + ( + SELECT rdb_column_nm + FROM lst + WHERE ans_null = 0 + EXCEPT + SELECT rdb_column_nm + FROM lst + WHERE ans_null = 1 + ); + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + DECLARE @coded_output_table_name varchar(500) = '' + + SET @Proc_Step_no = 49; + + SET @coded_output_table_name = '##CODED_DATA_INV_CAT_out_'+@category+'_'+CAST(@Batch_id as varchar(50)); + + SET @Proc_Step_Name = ' Generating '+@coded_output_table_name; + + EXEC ('IF OBJECT_ID(''tempdb..'+@coded_output_table_name+''', ''U'') IS NOT NULL + BEGIN + DROP TABLE '+@coded_output_table_name+'; + END;') + + IF OBJECT_ID('#CODED_TABLE_MERGED_INV', 'U') IS NOT NULL + BEGIN + UPDATE #CODED_TABLE_MERGED_INV + SET answer_desc11 = NULL + WHERE answer_desc11 = ''; + END; + + IF OBJECT_ID('#CODED_TABLE_MERGED_INV', 'U') IS NOT NULL + BEGIN + UPDATE #CODED_TABLE_MERGED_INV + SET answer_desc11 = ANSWER_VALUE + WHERE ANSWER_OTH IS NOT NULL AND + ANSWER_VALUE IS NOT NULL AND + answer_desc11 IS NULL AND + answer_oth IS NOT NULL; + END; + + IF OBJECT_ID('#CODED_TABLE_MERGED_INV', 'U') IS NOT NULL + BEGIN + UPDATE #CODED_TABLE_MERGED_INV + SET answer_desc11 = ANSWER_TXT + WHERE ANSWER_OTH IS NULL AND + ANSWER_TXT2 IS NOT NULL AND + ( answer_desc11 IS NULL + ) AND + answer_oth IS NULL AND + LEN(ANSWER_TXT2) > 0; + END; + + IF OBJECT_ID('#CODED_TABLE_MERGED_INV', 'U') IS NOT NULL + BEGIN + UPDATE #CODED_TABLE_MERGED_INV + SET answer_desc11 = ANSWER_TXT + WHERE ANSWER_OTH IS NULL AND + ANSWER_TXT2 IS NOT NULL AND + ( answer_desc11 IS NULL + ) AND + answer_oth IS NULL AND + LEN(ANSWER_TXT) > 0; + END; + + + + IF OBJECT_ID('#CODED_TABLE_MERGED_INV', 'U') IS NOT NULL + BEGIN + UPDATE #CODED_TABLE_MERGED_INV + SET answer_desc11 = ANSWER_VALUE + WHERE ANSWER_OTH IS NULL AND + ANSWER_VALUE IS NOT NULL AND + answer_desc11 IS NULL AND + answer_txt IS NOT NULL AND + code = ''; + END; + + IF OBJECT_ID('#CODED_TABLE_MERGED_INV', 'U') IS NOT NULL + BEGIN + UPDATE #CODED_TABLE_MERGED_INV + SET answer_desc11 = ANSWER_TXT + WHERE answer_desc11 IS NULL AND + ANSWER_OTH IS NULL AND + ANSWER_TXT2 IS NULL AND + answer_oth IS NULL AND + ANSWER_TXT IS NOT NULL AND + ANSWER_TXT <> '' + END; + + SET @columns = N''; + SELECT @columns+=N', p.' + QUOTENAME(LTRIM(RTRIM([RDB_COLUMN_NM]))) + FROM + ( + SELECT [RDB_COLUMN_NM] + FROM #CODED_TABLE_MERGED_INV AS p + GROUP BY [RDB_COLUMN_NM] + ) AS x; + SET @sql = N' + SELECT [PAGE_CASE_UID] as PAGE_CASE_UID_coded, ' + STUFF(@columns, 1, 2, '') + ' into '+@coded_output_table_name+' FROM ( + SELECT [PAGE_CASE_UID], [ANSWER_DESC11] , [RDB_COLUMN_NM] + FROM #CODED_TABLE_MERGED_INV + group by [PAGE_CASE_UID], [ANSWER_DESC11] , [RDB_COLUMN_NM] + ) AS j PIVOT (max(ANSWER_DESC11) FOR [RDB_COLUMN_NM] in + (' + STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '') + ')) AS p;'; + + if @debug = 'true' + PRINT @sql; + + EXEC sp_executesql @sql; + + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + --- If the #text_data_inv table does not have any records create the table with default column + EXEC ('IF OBJECT_ID(''tempdb..'+@coded_output_table_name+''', ''U'') IS NULL + BEGIN + CREATE TABLE '+@coded_output_table_name+' + ( + [PAGE_CASE_UID_coded] [bigint] NULL, + ) + + END;') + + if @debug = 'true' + EXEC ('select * from '+@coded_output_table_name) + + + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 49; + SET @Proc_Step_Name = ' LOG Invalid Numeric data INTO ETL_DQ_LOG'; + + INSERT INTO dbo.ETL_DQ_LOG( EVENT_TYPE, EVENT_LOCAL_ID, EVENT_UID, DQ_ISSUE_CD, DQ_ISSUE_DESC_TXT, DQ_ISSUE_QUESTION_IDENTIFIER, DQ_ISSUE_ANSWER_TXT, DQ_ISSUE_RDB_LOCATION, JOB_BATCH_LOG_UID, DQ_ETL_PROCESS_TABLE, DQ_ETL_PROCESS_COLUMN, DQ_STATUS_TIME, DQ_ISSUE_SOURCE_LOCATION, DQ_ISSUE_SOURCE_QUESTION_LABEL ) + ( + SELECT DISTINCT 'INVESTIGATION', inv.LOCAL_ID, inv.PUBLIC_HEALTH_CASE_UID, + 'INVALID_NUMERIC_VALUE', 'BAD NUMERIC VALUE: A non-numeric value exists in a field expecting a numeric value and requires update. Please correct the bad numeric value so that it can be properly written to the reporting database during the next ETL run', + nrt_page.QUESTION_IDENTIFIER, numeric_inv.ANSWER_TXT, nrt_page.DATA_LOCATION, @Batch_id, nrt_page.rdb_table_nm, nrt_page.RDB_COLUMN_NM, + GETDATE(), nrt_page.DATA_LOCATION, QUESTION_LABEL + FROM #NUMERIC_DATA_TRANS1_INV_CAT numeric_inv + INNER JOIN + dbo.nrt_investigation inv + ON numeric_inv.page_case_uid = inv.PUBLIC_HEALTH_CASE_UID + INNER JOIN + NBS_SRTE.DBO.CONDITION_CODE + ON CONDITION_CODE.CONDITION_CD = inv.CD + INNER JOIN + dbo.nrt_page_case_answer nrt_page + ON nrt_page.act_uid = inv.public_health_case_uid + WHERE nrt_page.act_uid = @phc_id + AND (isNumeric(numeric_inv.ANSWER_TXT) != 1) AND + numeric_inv.ANSWER_TXT IS NOT NULL AND + CONDITION_CODE.INVESTIGATION_FORM_CD = nrt_page.INVESTIGATION_FORM_CD); + + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + DECLARE @numeric_output_table_name varchar(500) = '' + SET @Proc_Step_no = 50; + SET @numeric_output_table_name = '##NUMERIC_DATA_PIVOT_INV_CAT_'+@category+'_'+CAST(@Batch_id as varchar(50)); + + SET @Proc_Step_Name = ' Generating FINAL TABLE FOR NUmeric '+@numeric_output_table_name; + + EXEC ('IF OBJECT_ID(''tempdb..'+@numeric_output_table_name+''', ''U'') IS NOT NULL + BEGIN + DROP TABLE '+@numeric_output_table_name+'; + END;') + + + SET @columns = N''; + SELECT @columns+=N', p.' + QUOTENAME(LTRIM(RTRIM([RDB_COLUMN_NM]))) + FROM + ( + SELECT [RDB_COLUMN_NM] + FROM #NUMERIC_DATA_TRANS1_INV_CAT AS p + GROUP BY [RDB_COLUMN_NM] + ) AS x; + + SET @sql = N' + SELECT [PAGE_CASE_UID] as PAGE_CASE_UID_NUMERIC, ' + STUFF(@columns, 1, 2, '') + ' into '+@numeric_output_table_name+' FROM ( + SELECT [PAGE_CASE_UID], [answer_txt] , [RDB_COLUMN_NM] + FROM #NUMERIC_DATA_TRANS1_INV_CAT + WHERE (isNumeric(ANSWER_TXT) = 1) AND ANSWER_TXT IS NOT NULL + group by [PAGE_CASE_UID], [answer_txt] , [RDB_COLUMN_NM] + ) AS j PIVOT (max(answer_txt) FOR [RDB_COLUMN_NM] in + (' + STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '') + ')) AS p;'; + + if @debug = 'true' + PRINT @sql; + + EXEC sp_executesql @sql; + + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + --- If the #text_data_inv table does not have any records create the table with default column + EXEC ('IF OBJECT_ID(''tempdb..'+@numeric_output_table_name+''', ''U'') IS NULL + BEGIN + CREATE TABLE '+@numeric_output_table_name+' + ( + [PAGE_CASE_UID_numeric] [bigint] NULL, + ) + + END;') + + if @debug = 'true' + EXEC ('select * from '+@numeric_output_table_name) + + + COMMIT TRANSACTION; + + + BEGIN TRANSACTION; + SET @Proc_Step_no = 53; + SET @Proc_Step_Name = ' Generating STAGING_KEY_INV_CAT'; + --create table STAGING_KEY AS + IF OBJECT_ID('#STAGING_KEY_INV_CAT', 'U') IS NOT NULL + BEGIN + DROP TABLE #STAGING_KEY_INV_CAT; + END; + + SELECT ACT_UID AS PAGE_CASE_UID, NBS_CASE_ANSWER_UID, nrt_page.LAST_CHG_TIME + INTO #STAGING_KEY_INV_CAT + FROM dbo.nrt_page_case_answer AS nrt_page WITH(NOLOCK) --6 + WHERE + nrt_page.act_uid=@phc_id + AND ANSWER_GROUP_SEQ_NBR IS NULL + AND nrt_page.RDB_TABLE_NM = @rdb_table_name AND + QUESTION_GROUP_SEQ_NBR IS NULL + GROUP BY ACT_UID, NBS_CASE_ANSWER_UID, nrt_page.LAST_CHG_TIME; + + IF OBJECT_ID('#STAGING_KEY_INV_CAT_FINAL', 'U') IS NOT NULL + BEGIN + DROP TABLE #STAGING_KEY_INV_CAT_FINAL; + END; + + SELECT * + INTO #STAGING_KEY_INV_CAT_FINAL + FROM + ( + SELECT *, ROW_NUMBER() OVER(PARTITION BY [page_case_uid] + ORDER BY [page_case_uid], NBS_CASE_ANSWER_UID) AS rowid + FROM #STAGING_KEY_INV_CAT + ) AS Der + WHERE rowid = 1; + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + + COMMIT TRANSACTION; + + if @debug = 'true' + select * from #STAGING_KEY_INV_CAT_FINAL; + EXEC ('select * from '+@numeric_output_table_name); + EXEC ('select * from '+@date_output_table_name); + EXEC ('select * from '+@coded_output_table_name); + EXEC ('select * from '+@text_output_table_name); + + + + BEGIN TRANSACTION; + SET @Proc_Step_no = 54; + SET @Proc_Step_Name = ' Creating Table S_'+@category; + + + declare @final_table_name varchar(250); + declare @drop_sql nvarchar(1000); + declare @final_insert nvarchar(2500); + declare @drop_columns nvarchar(2000); + + set @final_table_name = 'dbo.S_'+@category + + set @drop_sql = ' + IF OBJECT_ID('''+@final_table_name+''', ''U'') IS NOT NULL + BEGIN + DROP TABLE '+@final_table_name+'; + END;' + + if @debug = 'true' + print @drop_sql + + exec sp_executesql @drop_sql + + + set @final_insert = + 'SELECT sk.*, ndo.*, ddo.*, cdo.*, tdo.* + INTO '+@final_table_name+' + FROM #STAGING_KEY_INV_CAT_FINAL AS sk + LEFT OUTER JOIN (select * from '+@numeric_output_table_name+' where PAGE_CASE_UID_numeric > 0) AS ndo + ON ndo.PAGE_CASE_UID_NUMERIC = sk.PAGE_CASE_UID + LEFT OUTER JOIN '+@date_output_table_name+' AS ddo + ON ddo.PAGE_CASE_UID_date = sk.PAGE_CASE_UID + LEFT OUTER JOIN '+@coded_output_table_name+' AS cdo + ON cdo.PAGE_CASE_UID_coded = sk.PAGE_CASE_UID + LEFT OUTER JOIN '+@text_output_table_name+' AS tdo + ON tdo.PAGE_CASE_UID_text = sk.PAGE_CASE_UID; ' + + + if @debug = 'true' + print @final_insert + + exec sp_executesql @final_insert + + + 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, @category, 'S_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + + COMMIT TRANSACTION; + + if @debug = 'true' + EXEC ('select * from '+@final_table_name) + + + set @drop_columns = 'ALTER TABLE '+@final_table_name+' DROP COLUMN rowid,PAGE_CASE_UID_numeric,PAGE_CASE_UID_date,PAGE_CASE_UID_coded,PAGE_CASE_UID_text ' + + if @debug = 'true' + print @drop_columns + + exec sp_executesql @drop_columns + + + if @debug = 'false' + EXEC (' drop table '+@numeric_output_table_name+'; + drop table '+@date_output_table_name+'; + drop table '+@text_output_table_name+'; + drop table '+@coded_output_table_name+'; + ') + + + + BEGIN 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, @category, 'S_'+@category, 'COMPLETE', @Proc_Step_no, @Proc_Step_name, @RowCount_no ); + + COMMIT TRANSACTION; + + + END TRY + BEGIN CATCH + IF @@TRANCOUNT > 0 + BEGIN + ROLLBACK TRANSACTION; + END; + DECLARE @ErrorNumber int= ERROR_NUMBER(); + DECLARE @ErrorLine int= ERROR_LINE(); + DECLARE @ErrorMessage nvarchar(4000)= ERROR_MESSAGE(); + DECLARE @ErrorSeverity int= ERROR_SEVERITY(); + DECLARE @ErrorState int= ERROR_STATE(); + 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, @category, @final_table_name, 'ERROR', @Proc_Step_no, 'ERROR - ' + @Proc_Step_name, 'Step -' + CAST(@Proc_Step_no AS varchar(3)) + ' -' + CAST(@ErrorMessage AS varchar(500)), 0 ); + RETURN -1; + END CATCH; + +END; diff --git a/liquibase-service/src/main/resources/db/rdb/026-sp_l_pagebuilder_postprocessing-001.sql b/liquibase-service/src/main/resources/db/rdb/026-sp_l_pagebuilder_postprocessing-001.sql new file mode 100644 index 00000000..1dd16bbb --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/026-sp_l_pagebuilder_postprocessing-001.sql @@ -0,0 +1,443 @@ +CREATE OR ALTER PROCEDURE dbo.sp_l_pagebuilder_postprocessing + @Batch_id bigint, + @phc_id bigint, + @rdb_TABLE_NAME varchar(250), + @category varchar(250), + @debug bit = 'false' + +AS +BEGIN + DECLARE @RowCount_no int; + DECLARE @Proc_Step_no float= 0; + DECLARE @Proc_Step_Name varchar(200)= ''; + DECLARE @batch_start_time datetime2(7)= NULL; + DECLARE @batch_end_time datetime2(7)= NULL; + + BEGIN TRY + + SET @Proc_Step_no = 1; + SET @Proc_Step_Name = 'SP_Start'; + + + BEGIN TRANSACTION; + + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @Batch_id, @category, 'L_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, 0 ); + + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 2; + SET @Proc_Step_Name = 'CREATE TABLE #LOOKUP_TABLE1_'+@category; + + DECLARE @exec_sql nvarchar(2000); + DECLARE @S_CAT_TABLE_NAME varchar(100) = ''; + DECLARE @L_CAT_TABLE_NAME varchar(100) = ''; + DECLARE @PHC_UID_TABLE_NAME varchar(100) = ''; + DECLARE @LOOKUP_TABLE1_CAT_TABLE_NAME varchar(100) = ''; + + SET @S_CAT_TABLE_NAME = 'S_'+@category; + SET @L_CAT_TABLE_NAME = 'L_'+@category; + SET @LOOKUP_TABLE1_CAT_TABLE_NAME = '##LOOKUP_TABLE1_'+@category+'_'+CAST(@Batch_id as varchar(50)); + --SET @PHC_UID_TABLE_NAME = '#PHC_UIDS_'+@category+'_'+CAST(@Batch_id as varchar(50)); + + --CREATE TABLE LOOKUP_TABLE1_INV_{Category} AS + --*** Keys for New Page case where no Staging Category enteries + + EXEC ('IF OBJECT_ID(''tempdb..'+@LOOKUP_TABLE1_CAT_TABLE_NAME+''', ''U'') IS NOT NULL + BEGIN + DROP TABLE '+@LOOKUP_TABLE1_CAT_TABLE_NAME+'; + END;') + + + CREATE TABLE #PHC_UIDS (page_case_uid BIGINT) + + INSERT INTO #PHC_UIDS + SELECT inv.public_health_case_uid page_case_uid + FROM dbo.nrt_investigation inv + WHERE inv.public_health_case_uid = @phc_id + + + SET @exec_sql ='IF OBJECT_ID(''dbo.'+@S_CAT_TABLE_NAME+''', ''U'') IS NULL + BEGIN + CREATE TABLE '+QUOTENAME(@S_CAT_TABLE_NAME) +' ( [PAGE_CASE_UID] [numeric](20, 0) NULL + )ON [PRIMARY]; + + CREATE INDEX '+@S_CAT_TABLE_NAME+' + ON [dbo].'+@S_CAT_TABLE_NAME+' + ( PAGE_CASE_UID + ); + END;' + + EXEC sp_executesql @exec_sql; + if @debug = 'true' SELECT @exec_sql; + + + SET @exec_sql = 'IF OBJECT_ID(''dbo.L_'+@category+''', ''U'') IS NULL + BEGIN + CREATE TABLE '+QUOTENAME(@L_CAT_TABLE_NAME)+' + ( + [D_'+@category+'_KEY] [float] NULL, [PAGE_CASE_UID] [float] NULL + ) + ON [PRIMARY]; + + CREATE INDEX L_'+@category+' + ON dbo.'+QUOTENAME(@L_CAT_TABLE_NAME)+' + ( PAGE_CASE_UID + ); + CREATE NONCLUSTERED INDEX [L_RDB_PERF_04082021_01] + ON dbo.'+QUOTENAME(@L_CAT_TABLE_NAME)+' + ( [D_'+@category+'_KEY] + + ) + INCLUDE( [PAGE_CASE_UID] ); + + END;' + + EXEC sp_executesql @exec_sql; + if @debug = 'true' SELECT @exec_sql; + + + + SET @exec_sql = 'WITH lst + AS (SELECT PAGE_CASE_UID + FROM #PHC_UIDS + EXCEPT + ( + SELECT PAGE_CASE_UID + FROM '+QUOTENAME(@S_CAT_TABLE_NAME)+' + UNION + SELECT PAGE_CASE_UID + FROM '+QUOTENAME(@L_CAT_TABLE_NAME)+' + + )) + SELECT *, 1 AS D_NE_KEY + INTO '+QUOTENAME(@LOOKUP_TABLE1_CAT_TABLE_NAME)+' + FROM lst;' + + EXEC sp_executesql @exec_sql; + if @debug = 'true' SELECT @exec_sql; + + 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, @category, 'L_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 3; + SET @Proc_Step_Name = 'ADD TO TABLE '+@LOOKUP_TABLE1_CAT_TABLE_NAME; + + -- Insert into LOOKUP_TABLE1_INV_MOTHER where D_INV Key is not equal to 1 for the given PHC uids + + /* + INSERT INTO #LOOKUP_TABLE1_INV_CAT + SELECT pcuid.PAGE_CASE_UID, ladmin.D_INV_CAT_KEY + FROM #PHC_UIDS AS pcuid, ##L_INV_PHC_IDS AS ladmin + WHERE pcuid.PAGE_CASE_UID = ladmin.PAGE_CASE_UID AND + ladmin.D_INV_CAT_KEY != 1; + */ + + SET @exec_sql = 'INSERT INTO '+QUOTENAME(@LOOKUP_TABLE1_CAT_TABLE_NAME)+' + SELECT pcuid.PAGE_CASE_UID, ladmin.D_'+@category+'_KEY + FROM #PHC_UIDS AS pcuid, '+QUOTENAME(@L_CAT_TABLE_NAME)+' AS ladmin + WHERE pcuid.PAGE_CASE_UID = ladmin.PAGE_CASE_UID AND + ladmin.D_'+@category+'_KEY != 1;' + + EXEC sp_executesql @exec_sql; + + + 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, 'INV_'+@category, 'L_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + if @debug = 'true' + select * from #LOOKUP_TABLE1_INV_CAT + + COMMIT TRANSACTION; + + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 4; + DECLARE @LOOKUP_TABLE_D_REMOVE_TABLE_NAME varchar(100) = ''; + SET @LOOKUP_TABLE_D_REMOVE_TABLE_NAME = '##LOOKUP_TABLE_D_REMOVE_'+@category+'_'+CAST(@Batch_id as varchar(50)); + SET @Proc_Step_Name = 'CREATE TABLE '+@LOOKUP_TABLE_D_REMOVE_TABLE_NAME; + + --CREATE TABLE LOOKUP_TABLE1_INV_MOTHER AS + --*** Keys for New Page case where no Stgaing MOTHER enteries + EXEC ('IF OBJECT_ID(''tempdb.'+@LOOKUP_TABLE_D_REMOVE_TABLE_NAME+''', ''U'') IS NOT NULL + BEGIN + DROP TABLE '+@LOOKUP_TABLE_D_REMOVE_TABLE_NAME+'; + END;') + + + -- Insert into LOOKUP_TABLE_D_REMOVE_INV_MOTHER where D_INV Key is not equal to 1 for the given PHC uids + + /* + SELECT pcuid.PAGE_CASE_UID, ladmin.D_INV_CAT_KEY + INTO #LOOKUP_TABLE_D_REMOVE_INV_CAT + FROM #PHC_UIDS AS pcuid, ##L_INV_PHC_IDS AS ladmin + WHERE pcuid.PAGE_CASE_UID = ladmin.PAGE_CASE_UID AND + ladmin.D_INV_CAT_KEY != 1; + */ + + SET @exec_sql = 'SELECT pcuid.PAGE_CASE_UID, ladmin.D_'+@category+'_KEY + INTO '+@LOOKUP_TABLE_D_REMOVE_TABLE_NAME+' + FROM #PHC_UIDS AS pcuid, '+QUOTENAME(@L_CAT_TABLE_NAME)+' AS ladmin + WHERE pcuid.PAGE_CASE_UID = ladmin.PAGE_CASE_UID AND + ladmin.D_'+@category+'_KEY != 1;' + + EXEC sp_executesql @exec_sql; + + + SELECT @RowCount_no = @@ROWCOUNT; + /* + CREATE NONCLUSTERED INDEX [L_RDB_PREF_INTERNAL_03] + ON [dbo].[LOOKUP_TABLE_D_REMOVE_INV_MOTHER] + ( [D_INV_MOTHER_KEY] + ); + */ + + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @Batch_id, @category, 'L_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + + COMMIT TRANSACTION; + + + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 5; + SET @Proc_Step_Name = ' INSERT INTO LOOKUP_TABLE_N_'+@CATEGORY; + DECLARE @LOOKUP_N_CAT_TABLE_NAME varchar(100) = ''; + SET @LOOKUP_N_CAT_TABLE_NAME = 'LOOKUP_TABLE_N_'+@category; + + EXEC ('DELETE FROM dbo.'+@LOOKUP_N_CAT_TABLE_NAME); + + SET @exec_sql = 'INSERT INTO dbo.'+QUOTENAME(@LOOKUP_N_CAT_TABLE_NAME)+' + SELECT PAGE_CASE_UID + FROM #PHC_UIDS + EXCEPT + SELECT PAGE_CASE_UID + FROM '+@LOOKUP_TABLE1_CAT_TABLE_NAME+';' + + EXEC sp_executesql @exec_sql; + + + 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, @category, 'L_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + if @debug ='true' + exec ('select * from '+@LOOKUP_N_CAT_TABLE_NAME+';') + + + COMMIT TRANSACTION; + + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 6; + DECLARE @LOOKUP_TABLE_INC_TABLE_NAME varchar(100) = ''; + SET @LOOKUP_TABLE_INC_TABLE_NAME = 'L_'+@category+'_INC'; + SET @Proc_Step_Name = 'CREATE TABLE '+@LOOKUP_TABLE_INC_TABLE_NAME; + + --CREATE TABLE L_INV_MOTHER_INC AS + + EXEC ('IF OBJECT_ID(''dbo.'+@LOOKUP_TABLE_INC_TABLE_NAME+''', ''U'') IS NOT NULL + BEGIN + DROP TABLE dbo.'+@LOOKUP_TABLE_INC_TABLE_NAME+'; + END;') + + + + --Fix: Persist _INC table, full join persisted LOOKUP_TABLE_N_INV_UNDER_CONDITION + SET @exec_sql = 'SELECT ltn.PAGE_CASE_UID AS PAGE_CASE_UID_N, lt1.PAGE_CASE_UID AS PAGE_CASE_UID_NE, ltn.D_'+@category+'_KEY AS D_'+@category+'_KEY_N, + lt1.D_NE_KEY, CAST(NULL AS bigint) AS PAGE_CASE_UID, CAST(NULL AS bigint) AS D_'+@category+'_KEY + INTO '+QUOTENAME(@LOOKUP_TABLE_INC_TABLE_NAME)+' + FROM '+QUOTENAME(@LOOKUP_TABLE1_CAT_TABLE_NAME)+' AS lt1 + FULL JOIN + '+QUOTENAME(@LOOKUP_N_CAT_TABLE_NAME)+' AS ltn + ON lt1.PAGE_CASE_UID = ltn.PAGE_CASE_UID;' + EXEC sp_executesql @exec_sql + + + 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, @category, 'L_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 7; + SET @Proc_Step_Name = 'UPDATE TABLE '+@LOOKUP_TABLE_INC_TABLE_NAME; + + EXEC ('UPDATE '+@LOOKUP_TABLE_INC_TABLE_NAME+' + SET PAGE_CASE_UID = COALESCE(PAGE_CASE_UID_N, PAGE_CASE_UID_NE);') + + SET @exec_sql = 'UPDATE '+QUOTENAME(@LOOKUP_TABLE_INC_TABLE_NAME)+' + SET D_'+@category+'_KEY = COALESCE(D_'+@category+'_KEY_N, D_NE_KEY);' + + EXEC sp_executesql @exec_sql; + + if @debug ='true' + PRINT @LOOKUP_TABLE_INC_TABLE_NAME; + + SELECT @RowCount_no = -1; + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @Batch_id, @category, 'L_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 8; + SET @Proc_Step_Name = 'Delete from L_'+@category+' where existing default entry'; + + SET @exec_sql = 'DELETE ladmin FROM '+QUOTENAME(@L_CAT_TABLE_NAME)+' ladmin + JOIN '+QUOTENAME(@LOOKUP_TABLE_INC_TABLE_NAME)+' ladminI + ON ladmin.PAGE_CASE_UID = ladminI.PAGE_CASE_UID + WHERE ladmin.D_'+@category+'_KEY = 1;' + + EXEC sp_executesql @exec_sql; + + 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, @category, 'L_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 9; + SET @Proc_Step_Name = 'Insert into L_'+@category+' new default key entry'; + + SET @exec_sql = 'INSERT INTO '+QUOTENAME(@L_CAT_TABLE_NAME)+'( [PAGE_CASE_UID], [D_'+@category+'_KEY] ) + SELECT PAGE_CASE_UID, D_'+@category+'_KEY + FROM '+QUOTENAME(@LOOKUP_TABLE_INC_TABLE_NAME)+' + WHERE D_'+@category+'_KEY = 1;' + + EXEC sp_executesql @exec_sql + + 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, @category, 'L_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 10; + SET @Proc_Step_Name = 'Insert into L_'+@category+' new key entry'; + + SET @exec_sql = 'INSERT INTO [dbo].'+QUOTENAME(@L_CAT_TABLE_NAME)+'( [PAGE_CASE_UID], [D_'+@category+'_KEY] ) + SELECT PAGE_CASE_UID,D_'+@category+'_KEY + FROM '+QUOTENAME(@LOOKUP_N_CAT_TABLE_NAME)+';' + + EXEC sp_executesql @exec_sql + + 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, @category, 'L_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + + COMMIT TRANSACTION; + + + BEGIN TRANSACTION; + SET @Proc_Step_no = 11; + SET @Proc_Step_Name = 'Delete from D_' + +@category +' where existing default entry'; + + DECLARE @D_TABLE_NAME varchar(200); + DECLARE @D_key_column_name varchar(200); + + SET @D_TABLE_NAME = 'D_'+@category; + SET @D_key_column_name = 'D_'+@category+'_KEY'; + + SET @exec_sql = 'IF OBJECT_ID(''dbo.'+QUOTENAME(@D_TABLE_NAME)+''', ''U'') IS NULL + BEGIN + CREATE TABLE dbo.'+QUOTENAME(@D_TABLE_NAME)+' + ( + '+@D_key_column_name+' FLOAT NULL + ) + ON [PRIMARY]; + END;' + + + EXEC sp_executesql @exec_sql; + + + SET @exec_sql = ' DELETE dadmin FROM '+ QUOTENAME(@D_TABLE_NAME) +' dadmin '+ + ' JOIN '+QUOTENAME(@LOOKUP_TABLE_D_REMOVE_TABLE_NAME)+' ladminI + ON dadmin.d_'+@category+'_key = ladminI.D_'+@category+'_KEY; ' + + EXEC sp_executesql @exec_sql; + + + if @debug = 'false' + EXEC (' drop table '+@LOOKUP_TABLE_D_REMOVE_TABLE_NAME+'; + drop table '+@LOOKUP_TABLE1_CAT_TABLE_NAME+'; + ') + + 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, @category, 'L_'+@category, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + + COMMIT TRANSACTION; + + + BEGIN 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, @category, 'L_'+@category, 'COMPLETE', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + + COMMIT TRANSACTION; + END TRY + BEGIN CATCH + + + IF @@TRANCOUNT > 0 + BEGIN + ROLLBACK TRANSACTION; + END; + + + + DECLARE @ErrorNumber int= ERROR_NUMBER(); + DECLARE @ErrorLine int= ERROR_LINE(); + DECLARE @ErrorMessage nvarchar(4000)= ERROR_MESSAGE(); + DECLARE @ErrorSeverity int= ERROR_SEVERITY(); + DECLARE @ErrorState int= ERROR_STATE(); + + + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @Batch_id, @category, 'L_'+@category, 'ERROR', @Proc_Step_no, 'Step -' + CAST(@Proc_Step_no AS varchar(3)) + ' -' + CAST(@ErrorMessage AS varchar(500)), 0 ); + + + RETURN -1; + END CATCH; + +END; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/027-sp_d_pagebuilder_postprocessing-001.sql b/liquibase-service/src/main/resources/db/rdb/027-sp_d_pagebuilder_postprocessing-001.sql new file mode 100644 index 00000000..58e52c5a --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/027-sp_d_pagebuilder_postprocessing-001.sql @@ -0,0 +1,180 @@ +CREATE OR ALTER PROCEDURE dbo.sp_d_pagebuilder_postprocessing + @Batch_id bigint, + @phc_id bigint, + @rdb_table_name varchar(250) = 'D_INV_ADMINISTRATIVE', + @category varchar(250) = 'INV_ADMINISTRATIVE', + @debug bit = 'false' +AS +BEGIN + DECLARE @RowCount_no int; + DECLARE @Proc_Step_no float= 0; + DECLARE @Proc_Step_Name varchar(200)= ''; + DECLARE @batch_start_time datetime2(7)= NULL; + DECLARE @batch_end_time datetime2(7)= NULL; + + BEGIN TRY + + SET @Proc_Step_no = 1; + SET @Proc_Step_Name = 'SP_Start'; + + BEGIN TRANSACTION; + + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @Batch_id, @category, '' + @rdb_table_name, 'START', @Proc_Step_no, @Proc_Step_Name, 0 ); + + + SET @Proc_Step_no = 2; + SET @Proc_Step_Name = ' Add new columns to table ' + @rdb_table_name; + + -- create table rdb_ui_metadata_INV_ADMINISTRATIVE as + + Create Table #Temp_Query_Table + ( + ID int IDENTITY(1, 1), QUERY_stmt varchar(5000) + ); + DECLARE @column_query varchar(5000); + DECLARE @Max_Query_No int; + DECLARE @Curr_Query_No int; + DECLARE @ColumnList varchar(5000); + + INSERT INTO #Temp_Query_Table + SELECT 'ALTER TABLE dbo.' + @rdb_table_name +' ADD ['+COLUMN_NAME+'] '+DATA_TYPE+CASE + WHEN DATA_TYPE IN( 'char', 'varchar', 'nchar', 'nvarchar' ) THEN ' ('+COALESCE(CAST(NULLIF(CHARACTER_MAXIMUM_LENGTH, -1) AS varchar(10)), CAST(CHARACTER_MAXIMUM_LENGTH as varchar(10)))+')' + ELSE '' + END+CASE + WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' + ELSE ' NULL' + END + FROM INFORMATION_SCHEMA.COLUMNS AS c + WHERE TABLE_NAME = 'S_' + @category AND + NOT EXISTS + ( + SELECT 1 + FROM INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_NAME = @rdb_table_name AND + COLUMN_NAME = c.COLUMN_NAME + ) AND + LOWER(COLUMN_NAME) NOT IN( LOWER('PAGE_CASE_UID'), 'last_chg_time' ); + + if @debug = 'true' select * from #Temp_Query_Table; + + SET @Max_Query_No = + ( + SELECT MAX(ID) + FROM #Temp_Query_Table AS t + ); + + SET @Curr_Query_No = 0; + + WHILE @Max_Query_No > @Curr_Query_No + + BEGIN + SET @Curr_Query_No = @Curr_Query_No + 1; + + SET @column_query = + ( + SELECT QUERY_stmt + FROM #Temp_Query_Table AS t + WHERE ID = @Curr_Query_No + ); + + if @debug = 'true' SELECT @column_query; + + EXEC (@column_query); + + 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, @category, '' + @rdb_table_name, 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + + SET @Proc_Step_no = 3; + SET @Proc_Step_Name = ' Inserting data in to ' + @rdb_table_name; + + DECLARE @check_query nvarchar(max); + + SET @check_query = 'IF NOT EXISTS + ( + SELECT d_' + @category + '_key + FROM [dbo].' + @rdb_table_name +' + WHERE d_' + @category + '_key = 1 + ) + BEGIN + INSERT INTO [dbo].' + @rdb_table_name + '( [D_' + @category + '_KEY] ) + VALUES( 1 ); + END + '; + if @debug = 'true' SELECT @check_query; + + EXEC sp_executesql @check_query; + + -- SELECT @RowCount_no = @@ROWCOUNT; + + DECLARE @insert_query nvarchar(max); + + SET @insert_query = + ( + SELECT 'INSERT INTO [dbo].' + @rdb_table_name + '( [D_' + @category + '_KEY] ,'+STUFF( + ( + SELECT ', ['+name+']' + FROM syscolumns + WHERE id = OBJECT_ID('S_' + @category) AND + LOWER(NAME) NOT IN( LOWER('PAGE_CASE_UID'), 'last_chg_time' ) + FOR XML PATH('') + ), 1, 1, '')+' ) select [D_' + @category + '_KEY] , '+STUFF( + ( + SELECT ', ['+name+']' + FROM syscolumns + WHERE id = OBJECT_ID('S_' + @category ) AND + LOWER(NAME) NOT IN( LOWER('PAGE_CASE_UID'), 'last_chg_time' ) + FOR XML PATH('') + ), 1, 1, '')+' + FROM dbo.L_' + @category + '_INC LINV + INNER JOIN dbo.S_' + @category + ' SINV ON SINV.PAGE_CASE_UID=LINV.PAGE_CASE_UID + and SINV.PAGE_CASE_UID = ' + CAST(@phc_id AS NVARCHAR(10)) + ' and LINV.PAGE_CASE_UID = ' + CAST(@phc_id AS NVARCHAR(10)) + + ' where linv.D_' + @category + '_KEY != 1' + ); + + if @debug = 'true' SELECT @insert_query; + + EXEC sp_executesql @insert_query; + + + 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, @category + '-' + cast(@phc_id as varchar(20)), @rdb_table_name + '-' + cast(@phc_id as varchar(20)), 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + + 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, @category + '-' + cast(@phc_id as varchar(20)), @rdb_table_name + '-' + cast(@phc_id as varchar(20)), 'COMPLETE', @Proc_Step_no, @Proc_Step_name, @RowCount_no ); + + COMMIT TRANSACTION; + END TRY + BEGIN CATCH + + IF @@TRANCOUNT > 0 + BEGIN + ROLLBACK TRANSACTION; + END; + + DECLARE @ErrorNumber int= ERROR_NUMBER(); + DECLARE @ErrorLine int= ERROR_LINE(); + DECLARE @ErrorMessage nvarchar(4000)= ERROR_MESSAGE(); + DECLARE @ErrorSeverity int= ERROR_SEVERITY(); + DECLARE @ErrorState int= ERROR_STATE(); + + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @Batch_id, @category + '-' + cast(@phc_id as varchar(20)), @rdb_table_name + '-' + cast(@phc_id as varchar(20)), 'ERROR', @Proc_Step_no, 'Step -'+CAST(@Proc_Step_no AS varchar(3))+'-'+CAST(@ErrorMessage AS varchar(500)), 0 ); + + RETURN -1; + END CATCH; + +END; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/028-sp_sld_investigation_repeat_postprocessing-001.sql b/liquibase-service/src/main/resources/db/rdb/028-sp_sld_investigation_repeat_postprocessing-001.sql new file mode 100644 index 00000000..4e522d29 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/028-sp_sld_investigation_repeat_postprocessing-001.sql @@ -0,0 +1,1354 @@ +CREATE OR ALTER PROCEDURE dbo.sp_sld_investigation_repeat_postprocessing + @Batch_id bigint, + @phc_id bigint, + @debug bit = 'false' +AS +BEGIN + DECLARE @RowCount_no int; + DECLARE @Proc_Step_no float= 0; + DECLARE @Proc_Step_Name varchar(200)= ''; + DECLARE @batch_start_time datetime2(7)= NULL; + DECLARE @batch_end_time datetime2(7)= NULL; + + BEGIN TRY + + SET @Proc_Step_no = 1; + SET @Proc_Step_Name = 'SP_Start'; + + + BEGIN TRANSACTION; + + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @batch_id, 'INVESTIGATION_REPEAT', 'SLD_INVESTIGATION_REPEAT', 'START', @Proc_Step_no, @Proc_Step_Name, 0 ); + + + + COMMIT TRANSACTION; + + SELECT @batch_start_time = batch_start_dttm, @batch_end_time = batch_end_dttm + FROM [dbo].[job_batch_log] + WHERE type_code = 'MasterETL' AND + status_type = 'start'; + + BEGIN TRANSACTION; + + /* BEGIN - Check to see if there is an entry in job_batch_rebuild_log table to rebuild PB Repeating Questions dimension*/ + + IF OBJECT_ID('job_batch_rebuild_log') IS NOT NULL + BEGIN + DECLARE @count int; + SET @count = + ( + SELECT COUNT(*) + FROM job_batch_rebuild_log + WHERE Status_Type = 'start' AND + type_code = 'PB_RPT_DIMENSION' + ); + IF(@count > 0) + BEGIN + SET @batch_start_time = + ( + SELECT MAX(batch_start_dttm) + FROM job_batch_rebuild_log + WHERE type_code = 'PB_RPT_DIMENSION' AND + status_type = 'start' + ); + END; + UPDATE job_batch_rebuild_log + SET batch_end_dttm = @batch_end_time, status_type = 'complete' + WHERE type_code = 'PB_RPT_DIMENSION' AND + status_type = 'start'; + END; + + /* END - Check to see if there is an entry in job_batch_rebuild_log table to rebuild PB Repeating Questions dimension*/ + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 2; + SET @Proc_Step_Name = ' Generating phc_uids_REPT'; + + IF OBJECT_ID('#phc_uids_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #phc_uids_REPT; + END; + + /*NRT integration: Removing batch time condition*/ + SELECT inv.PUBLIC_HEALTH_CASE_UID AS 'PAGE_CASE_UID', INVESTIGATION_FORM_CD, CD, LAST_CHG_TIME + INTO #phc_uids_REPT + FROM dbo.nrt_investigation as inv WITH(NOLOCK), NBS_SRTE.dbo.CONDITION_CODE WITH(NOLOCK) + WHERE inv.public_health_case_uid = @phc_id + AND CONDITION_CODE.CONDITION_CD = inv.CD + AND INVESTIGATION_FORM_CD NOT IN( 'INV_FORM_BMDGAS', 'INV_FORM_BMDGBS', 'INV_FORM_BMDGEN', 'INV_FORM_BMDNM', 'INV_FORM_BMDSP', 'INV_FORM_GEN', 'INV_FORM_HEPA', 'INV_FORM_HEPBV', 'INV_FORM_HEPCV', 'INV_FORM_HEPGEN', 'INV_FORM_MEA', 'INV_FORM_PER', 'INV_FORM_RUB', 'INV_FORM_RVCT', 'INV_FORM_VAR' ) + + if @debug = 'true' + select * from #phc_uids_REPT; + + 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, 'INVESTIGATION_REPEAT', 'SLD_INVESTIGATION_REPEAT', 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 3; + SET @Proc_Step_Name = ' Generating TEXT_METADATA_REPT'; + + + IF OBJECT_ID('#NBS_CASE_ANSWER_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #NBS_CASE_ANSWER_REPT; + END; + + -- CREATE TABLE NBS_CASE_ANSWER AS + SELECT nrt_page.* + INTO #NBS_CASE_ANSWER_REPT + FROM dbo.nrt_page_case_answer AS nrt_page WITH(NOLOCK) + INNER JOIN + #phc_uids_REPT AS inv + ON inv.PAGE_CASE_UID = nrt_page.ACT_UID AND + nrt_page.ANSWER_GROUP_SEQ_NBR IS NOT NULL + WHERE nrt_page.ACT_UID = @phc_id + --AND inv.INVESTIGATION_FORM_CD = nrt_page.INVESTIGATION_FORM_CD; + + + if @debug = 'true' + select * from #NBS_CASE_ANSWER_REPT; + + + SELECT DISTINCT + NBS_CASE_ANSWER_UID, nrt_page.ANSWER_GROUP_SEQ_NBR, CAST(REPLACE(ANSWER_TXT, CHAR(13) + CHAR(10), ' ') AS varchar(2000)) AS ANSWER_TXT, COALESCE(ACT_UID, 0) AS PAGE_CASE_UID_TEXT, nrt_page.RECORD_STATUS_CD, + nrt_page.QUESTION_GROUP_SEQ_NBR, nrt_page.NBS_QUESTION_UID, nrt_page.CODE_SET_GROUP_ID, LTRIM(RTRIM(RDB_COLUMN_NM)) AS RDB_COLUMN_NM, nrt_page.INVESTIGATION_FORM_CD, nrt_page.BLOCK_NM, nrt_page.QUESTION_GROUP_SEQ_NBR AS QUESTION_GROUP_SEQ_NBR1 + INTO #TEXT_DATA_REPT + FROM #NBS_CASE_ANSWER_REPT as nrt_page + INNER JOIN + NBS_SRTE.dbo.CODE_VALUE_GENERAL AS CVG WITH(NOLOCK) + ON UPPER(CVG.CODE) = UPPER(nrt_page.DATA_TYPE) + WHERE nrt_page.ANSWER_GROUP_SEQ_NBR IS NOT NULL + AND CVG.CODE_SET_NM = 'NBS_DATA_TYPE' AND + CODE = 'TEXT' AND + QUESTION_GROUP_SEQ_NBR IS NOT NULL + ORDER BY NBS_QUESTION_UID; + + + + DECLARE @text_output_table_name varchar(500) = '' + SET @text_output_table_name = '##TEXT_DATA_REPT_out_'+CAST(@Batch_id as varchar(50)); + + EXEC ('IF OBJECT_ID(''tempdb..'+@text_output_table_name+''', ''U'') IS NOT NULL + BEGIN + DROP TABLE '+@text_output_table_name+'; + END;') + + + DECLARE @columns nvarchar(max); + DECLARE @sql nvarchar(max); + + SET @columns = N''; + + SELECT @columns+=N', p.' + QUOTENAME([RDB_COLUMN_NM]) + FROM + ( + SELECT [RDB_COLUMN_NM] + FROM #text_data_REPT AS p + GROUP BY [RDB_COLUMN_NM] + ) AS x; + SET @sql = N' + SELECT [PAGE_CASE_UID_text] as PAGE_CASE_UID_text, + BLOCK_NM as BLOCK_NM_text, ANSWER_GROUP_SEQ_NBR as ANSWER_GROUP_SEQ_NBR_text, ' + STUFF(@columns, 1, 2, '') + ' into '+@text_output_table_name +' FROM ( + SELECT [PAGE_CASE_UID_text], BLOCK_NM, ANSWER_GROUP_SEQ_NBR, [answer_txt] , [RDB_COLUMN_NM] + FROM #text_data_REPT + where PAGE_CASE_UID_text > 0 + group by [PAGE_CASE_UID_text], BLOCK_NM, ANSWER_GROUP_SEQ_NBR, [answer_txt] , [RDB_COLUMN_NM] + ) AS j PIVOT (max(answer_txt) FOR [RDB_COLUMN_NM] in + (' + STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '') + ')) AS p;'; + + if @debug = 'true' + PRINT @sql; + + EXEC sp_executesql @sql; + 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, 'INVESTIGATION_REPEAT', 'SLD_INVESTIGATION_REPEAT', 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 4; + SET @Proc_Step_Name = ' Generating CODED_TABLE_TEMP_REPT'; + + + IF OBJECT_ID('#CODED_TABLE_TEMP_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_TEMP_REPT; + END; + + + SELECT DISTINCT + NBS_CASE_ANSWER_UID, nrt_page.ANSWER_GROUP_SEQ_NBR, CAST(ANSWER_TXT AS varchar(2000)) AS ANSWER_TXT, ACT_UID AS 'PAGE_CASE_UID', nrt_page.RECORD_STATUS_CD, nrt_page.QUESTION_GROUP_SEQ_NBR, nrt_page.NBS_QUESTION_UID, nrt_page.CODE_SET_GROUP_ID, UPPER(LTRIM(RTRIM(nrt_page.RDB_COLUMN_NM))) AS RDB_COLUMN_NM, nrt_page.QUESTION_GROUP_SEQ_NBR AS QUESTION_GROUP_SEQ_NBR1, nrt_page.INVESTIGATION_FORM_CD, nrt_page.BLOCK_NM, nrt_page.OTHER_VALUE_IND_CD, + CAST(NULL AS [varchar](30)) AS RDB_COLUMN_NM2, CAST(NULL AS [varchar](256)) AS ANSWER_OTH + INTO #CODED_TABLE_TEMP_REPT + FROM #NBS_CASE_ANSWER_REPT AS nrt_page + INNER JOIN + NBS_SRTE.dbo.CODE_VALUE_GENERAL AS CVG WITH(NOLOCK) + ON UPPER(CVG.CODE) = UPPER(nrt_page.DATA_TYPE) + WHERE nrt_page.ANSWER_GROUP_SEQ_NBR IS NOT NULL AND + CVG.CODE_SET_NM = 'NBS_DATA_TYPE' AND + CODE = 'CODED' AND + QUESTION_GROUP_SEQ_NBR IS NOT NULL + ORDER BY ACT_UID; + + if @debug = 'true' + select * from #CODED_TABLE_TEMP_REPT; + + + UPDATE #coded_table_TEMP_REPT + SET ANSWER_OTH = SUBSTRING(ANSWER_TXT, CHARINDEX('^', ANSWER_TXT) + 1, LEN(RTRIM(LTRIM(ANSWER_TXT)))) + WHERE CHARINDEX('^', ANSWER_TXT) > 0; + + UPDATE #coded_table_TEMP_REPT + SET ANSWER_TXT = SUBSTRING(ANSWER_TXT, 1, ( CHARINDEX('^', ANSWER_TXT) - 1 )) + WHERE CHARINDEX('^', ANSWER_TXT) > 0; + + UPDATE #coded_table_TEMP_REPT + SET RDB_COLUMN_NM2 = SUBSTRING(RDB_COLUMN_NM, 1, 22) + WHERE OTHER_VALUE_IND_CD = 'T'; + + UPDATE #coded_table_TEMP_REPT + SET ANSWER_TXT = 'OTH' + WHERE UPPER(ANSWER_TXT) LIKE 'OTH^%'; + + IF OBJECT_ID('#CODED_TABLE_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_REPT; + END; + + -- CREATE TABLE CODED_TABLE AS + SELECT DISTINCT + ANSWER_GROUP_SEQ_NBR, CODED.CODE_SET_GROUP_ID, PAGE_CASE_UID, NBS_QUESTION_UID, NBS_CASE_ANSWER_UID, CAST(ANSWER_TXT AS varchar(2000)) AS ANSWER_TXT, CVG.CODE_SET_NM, RDB_COLUMN_NM, ANSWER_OTH, RDB_COLUMN_NM2, CODE, CODE_SHORT_DESC_TXT AS 'ANSWER_TXT1', INVESTIGATION_FORM_CD, BLOCK_NM, OTHER_VALUE_IND_CD + INTO #CODED_TABLE_REPT + FROM #CODED_TABLE_TEMP_REPT AS CODED LEFT + JOIN + NBS_SRTE.dbo.CODESET_GROUP_METADATA AS METADATA + ON METADATA.CODE_SET_GROUP_ID = CODED.CODE_SET_GROUP_ID LEFT + JOIN + NBS_SRTE.dbo.CODE_VALUE_GENERAL AS CVG + ON CVG.CODE_SET_NM = METADATA.CODE_SET_NM AND + CVG.CODE = CODED.ANSWER_TXT; + /* + CREATE NONCLUSTERED INDEX [RDB_PERF_INTERNAL_01] +ON #CODED_TABLE_REPT + ( [CODE_SET_GROUP_ID] + ) + INCLUDE( [ANSWER_GROUP_SEQ_NBR], [PAGE_CASE_UID], [NBS_QUESTION_UID], [NBS_CASE_ANSWER_UID], [ANSWER_TXT], [RDB_COLUMN_NM], [ANSWER_OTH], [RDB_COLUMN_NM2], [INVESTIGATION_FORM_CD], [BLOCK_NM] ); + + */ + IF OBJECT_ID('#CODED_TABLE_DESC_REPT_TEMP', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_DESC_REPT_TEMP; + END; + + + SELECT p1.PAGE_CASE_UID, p1.ANSWER_GROUP_SEQ_NBR, p1.NBS_QUESTION_UID, STUFF( + ( + SELECT TOP 10 ' | ' + ANSWER_TXT1 + FROM #CODED_TABLE_REPT AS p2 + WHERE p2.PAGE_CASE_UID = p1.PAGE_CASE_UID AND + p2.nbs_question_uid = p1.NBS_QUESTION_UID AND + p2.ANSWER_GROUP_SEQ_NBR = p1.ANSWER_GROUP_SEQ_NBR AND + p2.ANSWER_GROUP_SEQ_NBR = p1.ANSWER_GROUP_SEQ_NBR + ORDER BY PAGE_CASE_UID, ANSWER_GROUP_SEQ_NBR, NBS_QUESTION_UID, NBS_CASE_ANSWER_UID DESC FOR XML PATH(''), TYPE + ).value( '.', 'varchar(2000)' ), 1, 3, '') AS ANSWER_DESC11 + INTO #CODED_TABLE_DESC_REPT_TEMP + FROM #CODED_TABLE_REPT AS p1 + --where nbs_question_uid is not null + GROUP BY PAGE_CASE_UID, RDB_COLUMN_NM, NBS_QUESTION_UID, ANSWER_GROUP_SEQ_NBR; + + IF OBJECT_ID('#CODED_TABLE_DESC_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_DESC_REPT; + END; + + SELECT ct.*, COALESCE(ctt.answer_desc11, ct.answer_txt1) AS answer_desc11 + INTO #CODED_TABLE_DESC_REPT + FROM #CODED_TABLE_REPT AS ct LEFT + OUTER JOIN + #CODED_TABLE_DESC_REPT_TEMP AS ctt + ON ct.PAGE_CASE_UID = ctt.PAGE_CASE_UID AND + ct.NBS_QUESTION_UID = ctt.NBS_QUESTION_UID AND + ct.ANSWER_GROUP_SEQ_NBR = ctt.ANSWER_GROUP_SEQ_NBR; + + if @debug = 'true' + select * from #CODED_TABLE_DESC_REPT; + + IF OBJECT_ID('#CODED_COUNTY_TABLE_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_COUNTY_TABLE_REPT; + END; + + SELECT ANSWER_GROUP_SEQ_NBR, CODED.CODE_SET_GROUP_ID, PAGE_CASE_UID, NBS_QUESTION_UID, NBS_CASE_ANSWER_UID, CAST(ANSWER_TXT AS varchar(2000)) AS ANSWER_TXT, CVG.CODE_SET_NM, RDB_COLUMN_NM, ANSWER_OTH, RDB_COLUMN_NM2, CVG.CODE, CODE_SHORT_DESC_TXT AS 'ANSWER_TXT1', INVESTIGATION_FORM_CD, BLOCK_NM + INTO #CODED_COUNTY_TABLE_REPT + FROM #CODED_TABLE_REPT AS CODED WITH(NOLOCK) LEFT + JOIN + NBS_SRTE.dbo.CODESET_GROUP_METADATA AS METADATA WITH(NOLOCK) + ON METADATA.CODE_SET_GROUP_ID = CODED.CODE_SET_GROUP_ID LEFT + JOIN + NBS_SRTE.dbo.V_STATE_COUNTY_CODE_VALUE AS CVG WITH(NOLOCK) + ON CVG.CODE_SET_NM = METADATA.CODE_SET_NM AND + CVG.CODE = CODED.ANSWER_TXT + WHERE METADATA.CODE_SET_NM = 'COUNTY_CCD'; + + IF OBJECT_ID('#CODED_COUNTY_TABLE_DESC_REPT_TEMP', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_COUNTY_TABLE_DESC_REPT_TEMP; + END; + + SELECT p1.PAGE_CASE_UID, p1.ANSWER_GROUP_SEQ_NBR, p1.NBS_QUESTION_UID, STUFF( + ( + SELECT TOP 10 ' |' + ANSWER_TXT1 + FROM #CODED_COUNTY_TABLE_REPT AS p2 + WHERE p2.PAGE_CASE_UID = p1.PAGE_CASE_UID AND + p2.nbs_question_uid = p1.NBS_QUESTION_UID AND + p2.ANSWER_GROUP_SEQ_NBR = p1.ANSWER_GROUP_SEQ_NBR + ORDER BY PAGE_CASE_UID, ANSWER_GROUP_SEQ_NBR, NBS_QUESTION_UID, NBS_CASE_ANSWER_UID DESC FOR XML PATH(''), TYPE + ).value( '.', 'varchar(2000)' ), 1, 2, '') AS ANSWER_DESC11 + INTO #CODED_COUNTY_TABLE_DESC_REPT_TEMP + FROM #CODED_COUNTY_TABLE_REPT AS p1 + GROUP BY PAGE_CASE_UID, ANSWER_GROUP_SEQ_NBR, NBS_QUESTION_UID; + + IF OBJECT_ID('#CODED_COUNTY_TABLE_DESC_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_COUNTY_TABLE_DESC_REPT; + END; + + SELECT cct.*, CAST(NULL AS char(1)) AS OTHER_VALUE_IND_CD, cctt.answer_desc11 + INTO #CODED_COUNTY_TABLE_DESC_REPT + FROM #CODED_COUNTY_TABLE_REPT AS cct LEFT + OUTER JOIN + #CODED_COUNTY_TABLE_DESC_REPT_TEMP AS cctt + ON cct.PAGE_CASE_UID = cctt.PAGE_CASE_UID AND + cct.ANSWER_GROUP_SEQ_NBR = cctt.ANSWER_GROUP_SEQ_NBR AND + cct.NBS_QUESTION_UID = cctt.NBS_QUESTION_UID; + + IF OBJECT_ID('#CODED_TABLE_OTH_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_OTH_REPT; + END; + + -- CREATE TABLE CODED_TABLE_OTH_REPT AS + SELECT *, CAST(NULL AS [varchar](2000)) AS ANSWER_DESC11 + INTO #CODED_TABLE_OTH_REPT + FROM #CODED_TABLE_REPT + WHERE OTHER_VALUE_IND_CD = 'T'; + + UPDATE #CODED_TABLE_OTH_REPT + SET ANSWER_TXT = '', PAGE_CASE_UID = '', NBS_CASE_ANSWER_UID = '' + WHERE ANSWER_TXT NOT LIKE 'OTH%'; + + --DATA CODED_TABLE_OTH; + UPDATE #CODED_TABLE_OTH_REPT + SET RDB_COLUMN_NM = RTRIM(LTRIM(RDB_COLUMN_NM2)) + '_OTH'; + + UPDATE #CODED_TABLE_OTH_REPT + SET ANSWER_TXT = 'OTH' + WHERE UPPER(ANSWER_TXT) LIKE 'OTH%'; + + UPDATE #CODED_TABLE_OTH_REPT + SET ANSWER_DESC11 = ANSWER_OTH + WHERE(LEN(LTRIM(RTRIM(RDB_COLUMN_NM2))) > 0); + + --- ************************************************ + + + + IF OBJECT_ID('#CODED_TABLE_SNTEMP_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_SNTEMP_REPT; + END; + + --CREATE TABLE CODED_TABLE_SNTEMP AS + SELECT NBS_CASE_ANSWER_UID, ANSWER_GROUP_SEQ_NBR, nrt_page.CODE_SET_GROUP_ID, RDB_COLUMN_NM, CAST(ANSWER_TXT AS varchar(2000)) AS ANSWER_TXT, ACT_UID AS 'PAGE_CASE_UID', nrt_page.RECORD_STATUS_CD, nrt_page.NBS_QUESTION_UID, nrt_page.INVESTIGATION_FORM_CD, nrt_page.BLOCK_NM, UNIT_TYPE_CD, CAST(NULL AS [varchar](100)) AS ANSWER_TXT_CODE, CAST(NULL AS [varchar](256)) AS ANSWER_VALUE + INTO #CODED_TABLE_SNTEMP_REPT + FROM #NBS_CASE_ANSWER_REPT AS nrt_page + INNER JOIN + NBS_SRTE.dbo.CODE_VALUE_GENERAL AS CVG WITH(NOLOCK) + ON UPPER(CVG.CODE) = UPPER(nrt_page.DATA_TYPE) + INNER JOIN #phc_uids_REPT phc + ON phc.PAGE_CASE_UID = nrt_page.act_uid + WHERE QUESTION_GROUP_SEQ_NBR IS NOT NULL AND + ( UPPER(DATA_TYPE) = 'NUMERIC' AND + UPPER(unit_type_cd) = 'CODED' + ) + AND CVG.CODE_SET_NM = 'NBS_DATA_TYPE' + AND (nrt_page.investigation_form_cd IS NULL + ) + AND QUESTION_GROUP_SEQ_NBR IS NOT NULL + AND --revisit + ( phc.LAST_CHG_TIME <= nrt_page.last_chg_time OR + nrt_page.act_uid IS NULL + ); + + UPDATE #CODED_TABLE_SNTEMP_REPT + SET ANSWER_TXT_CODE = SUBSTRING(ANSWER_TXT, CHARINDEX('^', ANSWER_TXT) + 1, LEN(RTRIM(ANSWER_TXT))), ANSWER_VALUE = REPLACE(SUBSTRING(ANSWER_TXT, 1, ( CHARINDEX('^', ANSWER_TXT) - 1 )), ',', '') + WHERE CHARINDEX('^', ANSWER_TXT) > 0; + + UPDATE #CODED_TABLE_SNTEMP_REPT + SET ANSWER_VALUE = ANSWER_TXT + WHERE CHARINDEX('^', ANSWER_TXT) = 0; + + if @debug = 'true' + select * from #CODED_TABLE_SNTEMP_REPT; + + IF OBJECT_ID('#CODED_TABLE_SNTEMP_TRANS_A_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_SNTEMP_TRANS_A_REPT; + END; + + --CREATE TABLE CODED_TABLE_SNTEMP_TRANS_A AS + SELECT CODED.CODE_SET_GROUP_ID, PAGE_CASE_UID, ANSWER_TXT_CODE, ANSWER_VALUE, NBS_CASE_ANSWER_UID, CVG.CODE_SET_NM, RDB_COLUMN_NM, CVG.CODE, CODE_SHORT_DESC_TXT AS ANSWER_TXT2, INVESTIGATION_FORM_CD, BLOCK_NM, ANSWER_GROUP_SEQ_NBR, UNIT_TYPE_CD, CAST(NULL AS varchar(100)) AS ANSWER_DESC11 + INTO #CODED_TABLE_SNTEMP_TRANS_A_REPT + FROM #CODED_TABLE_SNTEMP_REPT AS CODED LEFT + JOIN + NBS_SRTE.dbo.CODESET_GROUP_METADATA AS METADATA + ON METADATA.CODE_SET_GROUP_ID = CODED.CODE_SET_GROUP_ID LEFT + JOIN + NBS_SRTE.dbo.CODE_VALUE_GENERAL AS CVG + ON CVG.CODE_SET_NM = METADATA.CODE_SET_NM AND + CVG.CODE = CODED.ANSWER_TXT_CODE + ORDER BY NBS_CASE_ANSWER_UID, RDB_COLUMN_NM; + + + UPDATE #CODED_TABLE_SNTEMP_TRANS_A_REPT + SET ANSWER_DESC11 = LTRIM(RTRIM(ANSWER_VALUE)) + WHERE LEN(UNIT_TYPE_CD) > 0 AND + UPPER(UNIT_TYPE_CD) = 'CODED' AND + isNumeric(ANSWER_VALUE) = 1 + ; + + + 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, 'INVESTIGATION_REPEAT', 'SLD_INVESTIGATION_REPEAT', 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + + BEGIN TRANSACTION; + BEGIN + + SET @Proc_Step_no = 5; + SET @Proc_Step_Name = ' LOG Invalid Numeric data INTO ETL_DQ_LOG'; + + INSERT INTO dbo.ETL_DQ_LOG( EVENT_TYPE, EVENT_LOCAL_ID, EVENT_UID, DQ_ISSUE_CD, DQ_ISSUE_DESC_TXT, DQ_ISSUE_QUESTION_IDENTIFIER, DQ_ISSUE_ANSWER_TXT, DQ_ISSUE_RDB_LOCATION, JOB_BATCH_LOG_UID, DQ_ETL_PROCESS_TABLE, DQ_ETL_PROCESS_COLUMN, DQ_STATUS_TIME, DQ_ISSUE_SOURCE_LOCATION, DQ_ISSUE_SOURCE_QUESTION_LABEL ) + ( + SELECT distinct 'INVESTIGATION', inv.LOCAL_ID, inv.public_health_case_uid, + 'INVALID_NUMERIC_VALUE', 'BAD NUMERIC VALUE: A non-numeric value exists in a field expecting a numeric value and requires update. Please correct the bad numeric value so that it can be properly written to the reporting database during the next ETL run', + nrt_page.QUESTION_IDENTIFIER, ANSWER_VALUE, nrt_page.DATA_LOCATION, + @Batch_id, nrt_page.rdb_table_nm, nrt_page.RDB_COLUMN_NM, + GETDATE(), nrt_page.DATA_LOCATION, nrt_page.QUESTION_LABEL + FROM #CODED_TABLE_SNTEMP_REPT as rept WITH(NOLOCK) + INNER JOIN dbo.nrt_investigation as inv WITH(NOLOCK) + ON inv.public_health_case_uid = rept.page_case_uid + INNER JOIN dbo.nrt_page_case_answer as nrt_page WITH(NOLOCK) + ON nrt_page.act_uid = inv.public_health_case_uid + WHERE nrt_page.act_uid = @phc_id + AND (isNumeric(ANSWER_VALUE) != 1) + AND ltrim(rtrim(ANSWER_VALUE))<>'' + AND nrt_page.QUESTION_GROUP_SEQ_NBR 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, 'INVESTIGATION_REPEAT', 'SLD_INVESTIGATION_REPEAT', 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + END + + COMMIT TRANSACTION; + + + BEGIN TRANSACTION; + + DECLARE @coded_output_table_name varchar(500) = '' + SET @Proc_Step_no = 6; + SET @coded_output_table_name = '##CODED_DATA_INV_CAT_out_'+CAST(@Batch_id as varchar(50)); + SET @Proc_Step_Name = ' Generating '+@coded_output_table_name; + + + IF OBJECT_ID('#CODED_TABLE_SNTEMP_TRANS_CODE_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_SNTEMP_TRANS_CODE_REPT; + END; + + SELECT * + INTO #CODED_TABLE_SNTEMP_TRANS_CODE_REPT + FROM #CODED_TABLE_SNTEMP_TRANS_A_REPT where (isNumeric(ANSWER_VALUE) = 1) OR ANSWER_VALUE is null; + + UPDATE #CODED_TABLE_SNTEMP_TRANS_CODE_REPT + SET RDB_COLUMN_NM = REPLACE(SUBSTRING(RDB_COLUMN_NM, 1, 21) + '_UNIT', ' ', ''), ANSWER_DESC11 = LTRIM(RTRIM(ANSWER_TXT2)) + WHERE LEN(UNIT_TYPE_CD) > 0 AND + UPPER(UNIT_TYPE_CD) = 'CODED'; + + IF OBJECT_ID('#CODED_TABLE_SNTEMP_TRANS_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_SNTEMP_TRANS_REPT; + END; + SELECT * + INTO #CODED_TABLE_SNTEMP_TRANS_REPT + FROM #CODED_TABLE_SNTEMP_TRANS_A_REPT + UNION + SELECT * + FROM #CODED_TABLE_SNTEMP_TRANS_CODE_REPT; + + ALTER TABLE #CODED_TABLE_SNTEMP_TRANS_REPT + ADD [NBS_QUESTION_UID] [bigint] NULL, [ANSWER_TXT] [varchar](100) NULL, [ANSWER_OTH] [varchar](256) NULL, [RDB_COLUMN_NM2] [varchar](30) NULL, [ANSWER_TXT1] [varchar](100) NULL, [OTHER_VALUE_IND_CD] [char](1) NULL; + + IF OBJECT_ID('#CODED_TABLE_MERGED_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_TABLE_MERGED_REPT; + END; + SELECT * + INTO #CODED_TABLE_MERGED_REPT + FROM #CODED_TABLE_DESC_REPT + UNION + SELECT * + FROM #CODED_TABLE_OTH_REPT + UNION + SELECT * + FROM #CODED_COUNTY_TABLE_DESC_REPT + UNION + SELECT [ANSWER_GROUP_SEQ_NBR], [CODE_SET_GROUP_ID], [PAGE_CASE_UID], [NBS_QUESTION_UID], [NBS_CASE_ANSWER_UID], [ANSWER_TXT], [CODE_SET_NM], [RDB_COLUMN_NM], [ANSWER_OTH], [RDB_COLUMN_NM2], [CODE], [ANSWER_TXT1], [INVESTIGATION_FORM_CD], [BLOCK_NM], [OTHER_VALUE_IND_CD], [ANSWER_DESC11] + FROM #CODED_TABLE_SNTEMP_TRANS_REPT; + + if @debug = 'true' + select * from #CODED_TABLE_MERGED_REPT; + + IF OBJECT_ID('#CODED_DATA_REPT_OUT', 'U') IS NOT NULL + BEGIN + DROP TABLE #CODED_DATA_REPT_OUT; + END; + + SET @columns = N''; + + SELECT @columns+=N', p.' + QUOTENAME(RTRIM([RDB_COLUMN_NM])) + FROM + ( + SELECT [RDB_COLUMN_NM] + FROM #CODED_TABLE_MERGED_REPT AS p + GROUP BY [RDB_COLUMN_NM] + ) AS x; + SET @sql = N' + SELECT [PAGE_CASE_UID] as PAGE_CASE_UID_coded, + BLOCK_NM as BLOCK_NM_coded, ANSWER_GROUP_SEQ_NBR as ANSWER_GROUP_SEQ_NBR_coded,' + STUFF(@columns, 1, 2, '') + ' into '+ @coded_output_table_name +' FROM ( + SELECT [PAGE_CASE_UID], BLOCK_NM, ANSWER_GROUP_SEQ_NBR, [ANSWER_DESC11] , [RDB_COLUMN_NM] + FROM #CODED_TABLE_MERGED_REPT + where PAGE_CASE_UID > 0 + group by + PAGE_CASE_UID, BLOCK_NM, ANSWER_GROUP_SEQ_NBR, [ANSWER_DESC11] , [RDB_COLUMN_NM] + ) AS j PIVOT (max(ANSWER_DESC11) FOR [RDB_COLUMN_NM] in + (' + STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '') + ')) AS p;'; + + + EXEC sp_executesql @sql; + + if @debug = 'true' + PRINT @coded_output_table_name; + + 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, 'INVESTIGATION_REPEAT', 'SLD_INVESTIGATION_REPEAT', 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + DECLARE @date_output_table_name varchar(500) = '' + SET @Proc_Step_no = 7; + SET @date_output_table_name = '##date_data_INV_out_'+CAST(@Batch_id as varchar(50)); + SET @Proc_Step_Name = ' Generating '+@date_output_table_name; + + + --CREATE TABLE DATE_DATA AS + /* + IF OBJECT_ID('#DATE_DATA_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #DATE_DATA_REPT; + END; + */ + + SELECT DISTINCT + NBS_CASE_ANSWER_UID, nrt_page.ANSWER_GROUP_SEQ_NBR, ( CASE + WHEN ISDATE(ANSWER_TXT) = 1 THEN( FORMAT(CAST([ANSWER_TXT] AS date), 'MM/dd/yy') + ' 00:00:00' ) + ELSE NULL + END ) AS ANSWER_TXT1, ACT_UID AS 'PAGE_CASE_UID', nrt_page.RECORD_STATUS_CD, + nrt_page.QUESTION_GROUP_SEQ_NBR, nrt_page.NBS_QUESTION_UID, nrt_page.CODE_SET_GROUP_ID, UPPER(RTRIM(LTRIM(nrt_page.RDB_COLUMN_NM))) AS RDB_COLUMN_NM, nrt_page.INVESTIGATION_FORM_CD, nrt_page.BLOCK_NM, nrt_page.QUESTION_GROUP_SEQ_NBR AS QUESTION_GROUP_SEQ_NBR1 + INTO #DATE_DATA_REPT + FROM #NBS_CASE_ANSWER_REPT as nrt_page + INNER JOIN + NBS_SRTE.dbo.CODE_VALUE_GENERAL AS CVG WITH(NOLOCK) + ON UPPER(CVG.CODE) = UPPER(nrt_page.DATA_TYPE) + WHERE + CVG.CODE_SET_NM = 'NBS_DATA_TYPE' AND + CODE IN( 'DATETIME', 'DATE' ) AND + QUESTION_GROUP_SEQ_NBR IS NOT NULL + ORDER BY ACT_UID; + + if @debug = 'true' + select * from #DATE_DATA_REPT; + + + + INSERT INTO dbo.ETL_DQ_LOG( EVENT_TYPE, EVENT_LOCAL_ID, EVENT_UID, DQ_ISSUE_CD, DQ_ISSUE_DESC_TXT, DQ_ISSUE_QUESTION_IDENTIFIER, DQ_ISSUE_ANSWER_TXT, DQ_ISSUE_RDB_LOCATION, JOB_BATCH_LOG_UID, DQ_ETL_PROCESS_TABLE, DQ_ETL_PROCESS_COLUMN, DQ_STATUS_TIME, DQ_ISSUE_SOURCE_LOCATION, DQ_ISSUE_SOURCE_QUESTION_LABEL ) + ( + SELECT 'INVESTIGATION', inv.LOCAL_ID, PUBLIC_HEALTH_CASE_UID, 'INVALID_DATE', 'BAD DATE: A poorly formatted date exists and requires update. Please correct the bad date so that it can be properly written to the reporting database during the next ETL run.', + nrt_page.QUESTION_IDENTIFIER, ANSWER_TXT, nrt_page.DATA_LOCATION, @Batch_id, nrt_page.rdb_table_nm, nrt_page.RDB_COLUMN_NM, GETDATE(), nrt_page.DATA_LOCATION, QUESTION_LABEL + FROM dbo.nrt_page_case_answer as nrt_page + INNER JOIN + dbo.nrt_investigation as inv + ON nrt_page.ACT_UID = inv.PUBLIC_HEALTH_CASE_UID + INNER JOIN + NBS_SRTE.DBO.CONDITION_CODE + ON CONDITION_CODE.CONDITION_CD = inv.CD + WHERE + nrt_page.act_uid = @phc_id + AND DATA_TYPE IN( 'Date/Time', 'Date', 'DATETIME', 'DATE' ) AND + (ISDATE(ANSWER_TXT) != 1) AND + UPPER(nrt_page.DATA_LOCATION) = 'NBS_CASE_ANSWER.ANSWER_TXT' AND + ANSWER_TXT IS NOT NULL AND + nrt_page.rdb_table_nm = 'D_INVESTIGATION_REPEAT' + ); + + + + IF OBJECT_ID('#PAGE_DATE_TABLE_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #PAGE_DATE_TABLE_REPT; + END; + + CREATE TABLE #PAGE_DATE_TABLE_REPT + ( + NBS_CASE_ANSWER_UID bigint, CODE_SET_GROUP_ID bigint, RDB_COLUMN_NM char(40), INVESTIGATION_FORM_CD char(250), BLOCK_NM char(30), ANSWER_TXT1 date, PAGE_CASE_UID bigint, LAST_CHG_TIME date, RECORD_STATUS_CD char(40), ANSWER_GROUP_SEQ_NBR bigint, NBS_QUESTION_UID bigint + ); + + + INSERT INTO #PAGE_DATE_TABLE_REPT( NBS_CASE_ANSWER_UID, CODE_SET_GROUP_ID, RDB_COLUMN_NM, INVESTIGATION_FORM_CD, BLOCK_NM, ANSWER_TXT1, PAGE_CASE_UID, + -- LAST_CHG_TIME , + RECORD_STATUS_CD, ANSWER_GROUP_SEQ_NBR, NBS_QUESTION_UID ) + SELECT NBS_CASE_ANSWER_UID, CODE_SET_GROUP_ID, RDB_COLUMN_NM, INVESTIGATION_FORM_CD, BLOCK_NM, ANSWER_TXT1, PAGE_CASE_UID, + -- LAST_CHG_TIME , + RECORD_STATUS_CD, ANSWER_GROUP_SEQ_NBR, NBS_QUESTION_UID + FROM #DATE_DATA_REPT; + + + + CREATE NONCLUSTERED INDEX [RDB_PERF_INTERNAL_03] + ON #PAGE_DATE_TABLE_REPT + ( [PAGE_CASE_UID] + ) + INCLUDE( [RDB_COLUMN_NM], [BLOCK_NM], [ANSWER_TXT1], [ANSWER_GROUP_SEQ_NBR] ); + + + EXEC ('IF OBJECT_ID(''tempdb..'+@date_output_table_name+''', ''U'') IS NOT NULL + BEGIN + DROP TABLE '+@date_output_table_name+'; + END;') + + + SET @columns = N''; + + SELECT @columns+=N', p.' + QUOTENAME(RTRIM([RDB_COLUMN_NM])) + FROM + ( + SELECT [RDB_COLUMN_NM] + FROM #PAGE_DATE_TABLE_REPT AS p + GROUP BY [RDB_COLUMN_NM] + ) AS x; + SET @sql = N' + SELECT [PAGE_CASE_UID] as PAGE_CASE_UID_date, + BLOCK_NM as BLOCK_NM_date, ANSWER_GROUP_SEQ_NBR as ANSWER_GROUP_SEQ_NBR_date,' + STUFF(@columns, 1, 2, '') + ' into '+@date_output_table_name + ' FROM ( + SELECT [PAGE_CASE_UID], BLOCK_NM, ANSWER_GROUP_SEQ_NBR, [answer_txt1] , [RDB_COLUMN_NM] + FROM #PAGE_DATE_TABLE_REPT + where PAGE_CASE_UID > 0 + group by PAGE_CASE_UID, BLOCK_NM, ANSWER_GROUP_SEQ_NBR, [answer_txt1] , [RDB_COLUMN_NM] + ) AS j PIVOT (max(answer_txt1) FOR [RDB_COLUMN_NM] in + (' + STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '') + ')) AS p;'; + + EXEC sp_executesql @sql; + + if @debug = 'true' + PRINT @sql; + + 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, 'INVESTIGATION_REPEAT', 'SLD_INVESTIGATION_REPEAT', 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 8; + SET @Proc_Step_Name = 'Begin Numeric Section'; + + + /*** NUMERIC SECTION******/ + + + --CREATE TABLE NUMERIC_BASE_DATA AS + + IF OBJECT_ID('#NUMERIC_BASE_DATA_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #NUMERIC_BASE_DATA_REPT; + END; + + + SELECT DISTINCT + NBS_CASE_ANSWER_UID, nrt_page.ANSWER_GROUP_SEQ_NBR, ANSWER_TXT, ACT_UID AS 'PAGE_CASE_UID', nrt_page.RECORD_STATUS_CD, + nrt_page.QUESTION_GROUP_SEQ_NBR, nrt_page.NBS_QUESTION_UID, nrt_page.UNIT_VALUE AS 'CODE_SET_GROUP_ID', UPPER(LTRIM(RTRIM(nrt_page.RDB_COLUMN_NM))) AS RDB_COLUMN_NM, nrt_page.INVESTIGATION_FORM_CD, nrt_page.BLOCK_NM, nrt_page.QUESTION_GROUP_SEQ_NBR AS QUESTION_GROUP_SEQ_NBR1, + LEN(RTRIM(ANSWER_TXT)) AS TXT_LEN, CAST(NULL AS [varchar](100)) AS ANSWER_UNIT, CAST(NULL AS int) AS LENCODED, CAST(NULL AS [varchar](100)) AS ANSWER_CODED, CAST(NULL AS [varchar](100)) AS UNIT_VALUE1, CAST(NULL AS [varchar](30)) AS RDB_COLUMN_NM2 + INTO #NUMERIC_BASE_DATA_REPT + FROM #NBS_CASE_ANSWER_REPT as nrt_page + INNER JOIN + NBS_SRTE.dbo.CODE_VALUE_GENERAL AS CVG WITH(NOLOCK) + ON UPPER(CVG.CODE) = UPPER(nrt_page.DATA_TYPE) + WHERE ANSWER_GROUP_SEQ_NBR IS NOT NULL + AND CVG.CODE_SET_NM = 'NBS_DATA_TYPE' + AND CODE = 'NUMERIC' AND + ( UNIT_TYPE_CD IS NULL OR + UNIT_TYPE_CD = 'LITERAL' + ) AND + QUESTION_GROUP_SEQ_NBR IS NOT NULL; + + + IF OBJECT_ID('#NUMERIC_DATA1_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #NUMERIC_DATA1_REPT; + END; + + SELECT * + INTO #NUMERIC_DATA1_REPT + FROM #NUMERIC_BASE_DATA_REPT; + + UPDATE #NUMERIC_DATA1_REPT + SET ANSWER_UNIT = SUBSTRING(ANSWER_TXT, 1, ( CHARINDEX('^', ANSWER_TXT) - 1 )) + WHERE CHARINDEX('^', ANSWER_TXT) > 0; + + UPDATE #NUMERIC_DATA1_REPT + SET LENCODED = LEN(RTRIM(ANSWER_UNIT)) + WHERE CHARINDEX('^', ANSWER_TXT) > 0; + + UPDATE #NUMERIC_DATA1_REPT + SET ANSWER_CODED = SUBSTRING(ANSWER_TXT, ( LENCODED + 2 ), TXT_LEN) + WHERE CHARINDEX('^', ANSWER_TXT) > 0; + + + UPDATE #NUMERIC_DATA1_REPT + SET UNIT_VALUE1 = REPLACE(ANSWER_UNIT, ',', '') + WHERE CHARINDEX('^', ANSWER_TXT) > 0; + + UPDATE #NUMERIC_DATA1_REPT + SET ANSWER_UNIT = ANSWER_TXT + WHERE CHARINDEX('^', ANSWER_TXT) = 0; + + UPDATE #NUMERIC_DATA1_REPT + SET RDB_COLUMN_NM2 = RTRIM(RDB_COLUMN_NM) + ' UNIT' + WHERE LEN(RTRIM(ANSWER_CODED)) > 0; + + IF OBJECT_ID('#NUMERIC_DATA2_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #NUMERIC_DATA2_REPT; + END; + + SELECT * + INTO #NUMERIC_DATA2_REPT + FROM #NUMERIC_DATA1_REPT; + + UPDATE #NUMERIC_DATA2_REPT + SET RDB_COLUMN_NM2 = SUBSTRING(RDB_COLUMN_NM2, 1, 22) + WHERE LEN(RTRIM(RDB_COLUMN_NM2)) > 0; + + IF OBJECT_ID('#NUMERIC_DATA_MERGED_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #NUMERIC_DATA_MERGED_REPT; + END; + SELECT * + INTO #NUMERIC_DATA_MERGED_REPT + FROM #NUMERIC_DATA1_REPT + UNION + SELECT * + FROM #NUMERIC_DATA2_REPT; + + IF OBJECT_ID('#NUMERIC_DATA_TRANS_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #NUMERIC_DATA_TRANS_REPT; + END; + + -- CREATE TABLE NUMERIC_DATA_TRANS AS + SELECT PAGE_CASE_UID, NBS_QUESTION_UID, ANSWER_GROUP_SEQ_NBR, NBS_CASE_ANSWER_UID, ANSWER_UNIT, ANSWER_CODED, CVG.CODE_SET_NM, RDB_COLUMN_NM, ANSWER_TXT, CODE, CODE_SHORT_DESC_TXT AS 'UNIT', ANSWER_UNIT AS ANSWER_UNIT1, INVESTIGATION_FORM_CD, BLOCK_NM + INTO #NUMERIC_DATA_TRANS_REPT + FROM #NUMERIC_DATA_MERGED_REPT AS CODED LEFT + JOIN + NBS_SRTE.dbo.CODESET_GROUP_METADATA AS METADATA + ON METADATA.CODE_SET_GROUP_ID = CODED.UNIT_VALUE1 LEFT + JOIN + NBS_SRTE.dbo.CODE_VALUE_GENERAL AS CVG + ON CVG.CODE_SET_NM = METADATA.CODE_SET_NM AND + ANSWER_GROUP_SEQ_NBR IS NOT NULL; + + UPDATE #NUMERIC_DATA_TRANS_REPT + SET ANSWER_TXT = CASE + WHEN COALESCE(RTRIM(UNIT), '') = '' THEN ANSWER_TXT + WHEN CHARINDEX(' UNIT', RDB_COLUMN_NM) > 0 THEN UNIT + ELSE ANSWER_UNIT + END; + + IF OBJECT_ID('#NUMERIC_DATA_TRANS1_REPT', 'U') IS NOT NULL + BEGIN + DROP TABLE #NUMERIC_DATA_TRANS1_REPT; + END; + + + + -- CREATE TABLE NUMERIC_DATA_TRANS1 AS + BEGIN + SELECT DISTINCT + PAGE_CASE_UID, RDB_COLUMN_NM, ANSWER_UNIT, ANSWER_TXT, ANSWER_GROUP_SEQ_NBR, NBS_CASE_ANSWER_UID, INVESTIGATION_FORM_CD, BLOCK_NM, NBS_QUESTION_UID + INTO #NUMERIC_DATA_TRANS1_REPT + FROM #NUMERIC_DATA_TRANS_REPT; + 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, 'INVESTIGATION_REPEAT', 'SLD_INVESTIGATION_REPEAT', 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + END; + + COMMIT TRANSACTION; + BEGIN TRANSACTION; + BEGIN + + SET @Proc_Step_no = 9; + SET @Proc_Step_Name = ' LOG Invalid Numeric data INTO ETL_DQ_LOG'; + + INSERT INTO dbo.ETL_DQ_LOG( EVENT_TYPE, EVENT_LOCAL_ID, EVENT_UID, DQ_ISSUE_CD, DQ_ISSUE_DESC_TXT, DQ_ISSUE_QUESTION_IDENTIFIER, DQ_ISSUE_ANSWER_TXT, DQ_ISSUE_RDB_LOCATION, JOB_BATCH_LOG_UID, DQ_ETL_PROCESS_TABLE, DQ_ETL_PROCESS_COLUMN, DQ_STATUS_TIME, DQ_ISSUE_SOURCE_LOCATION, DQ_ISSUE_SOURCE_QUESTION_LABEL ) + ( + SELECT 'INVESTIGATION', inv.LOCAL_ID, inv.PUBLIC_HEALTH_CASE_UID, + 'INVALID_NUMERIC_VALUE', 'BAD NUMERIC VALUE: A non-numeric value exists in a field expecting a numeric value and requires update. Please correct the bad numeric value so that it can be properly written to the reporting database during the next ETL run', + nrt_page.QUESTION_IDENTIFIER, nrt_page.ANSWER_TXT, nrt_page.DATA_LOCATION, @Batch_id, nrt_page.rdb_table_nm, nrt_page.RDB_COLUMN_NM, + GETDATE(), nrt_page.DATA_LOCATION, nrt_page.QUESTION_LABEL + FROM #NUMERIC_DATA_TRANS1_REPT as rept + INNER JOIN + dbo.nrt_investigation as inv + ON rept.page_case_uid= inv.PUBLIC_HEALTH_CASE_UID + INNER JOIN + NBS_SRTE.DBO.CONDITION_CODE + ON CONDITION_CODE.CONDITION_CD = inv.CD + INNER JOIN + dbo.nrt_page_case_answer as nrt_page + ON nrt_page.act_uid = inv.PUBLIC_HEALTH_CASE_UID + WHERE nrt_page.act_uid = @phc_id + AND (isNumeric(nrt_page.ANSWER_TXT) != 1) + AND nrt_page.ANSWER_TXT 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, 'INVESTIGATION_REPEAT', 'SLD_INVESTIGATION_REPEAT', 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + END + + COMMIT TRANSACTION; + BEGIN TRANSACTION; + DECLARE @numeric_output_table_name varchar(500) = '' + SET @Proc_Step_no = 10; + SET @numeric_output_table_name = '##numeric_DATA_REPT_out_'+CAST(@Batch_id as varchar(50)); + SET @Proc_Step_Name = 'Generating FINAL TABLE FOR Numeric '+@numeric_output_table_name; + + + EXEC ('IF OBJECT_ID(''tempdb..'+@numeric_output_table_name+''', ''U'') IS NOT NULL + BEGIN + DROP TABLE '+@numeric_output_table_name+'; + END;') + -- DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX); + + SET @columns = N''; + + SELECT @columns+=N', p.' + QUOTENAME([RDB_COLUMN_NM]) + FROM + ( + SELECT [RDB_COLUMN_NM] + FROM #NUMERIC_DATA_TRANS1_REPT AS p + GROUP BY [RDB_COLUMN_NM] + ) AS x; + SET @sql = N' + SELECT [PAGE_CASE_UID] as PAGE_CASE_UID_numeric, + BLOCK_NM as BLOCK_NM_numeric, ANSWER_GROUP_SEQ_NBR as ANSWER_GROUP_SEQ_NBR_numeric, ' + STUFF(@columns, 1, 2, '') + ' into '+@numeric_output_table_name+' FROM ( + SELECT [PAGE_CASE_UID], BLOCK_NM, ANSWER_GROUP_SEQ_NBR, [answer_txt] , [RDB_COLUMN_NM] + FROM #NUMERIC_DATA_TRANS1_REPT + where PAGE_CASE_UID > 0 + and (isNumeric(ANSWER_TXT) = 1) AND ANSWER_TXT IS NOT NULL + group by [PAGE_CASE_UID], BLOCK_NM, ANSWER_GROUP_SEQ_NBR, [answer_txt] , [RDB_COLUMN_NM] + ) AS j PIVOT (max(answer_txt) FOR [RDB_COLUMN_NM] in + (' + STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '') + ')) AS p;'; + + EXEC sp_executesql @sql; + 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, 'INVESTIGATION_REPEAT', 'SLD_INVESTIGATION_REPEAT', 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 11; + DECLARE @staging_table_name varchar(500) = '' + SET @staging_table_name = '##STAGING_KEY_REPT_'+CAST(@Batch_id as varchar(50)); + SET @Proc_Step_Name = 'Generating Final Staging table '+@staging_table_name; + + -- CREATE TABLE STAGING_KEY AS + EXEC ('IF OBJECT_ID(''tempdb..'+@staging_table_name+''', ''U'') IS NOT NULL + BEGIN + DROP TABLE '+@staging_table_name+'; + END;') + + EXEC ('IF OBJECT_ID(''tempdb..'+@numeric_output_table_name+''', ''U'') IS NULL + BEGIN + CREATE TABLE '+@numeric_output_table_name+' + ( + [PAGE_CASE_UID_numeric] [bigint] NULL, [INVESTIGATION_FORM_CD_numeric] [varchar](50) NULL, [BLOCK_NM_numeric] [varchar](30) NULL, [ANSWER_GROUP_SEQ_NBR_numeric] [int] NULL + ) + ON [PRIMARY]; + + END;') + + EXEC ('IF OBJECT_ID(''tempdb..'+@date_output_table_name+''', ''U'') IS NULL + BEGIN + CREATE TABLE '+@date_output_table_name+' + ( + [PAGE_CASE_UID_date] [bigint] NULL, [INVESTIGATION_FORM_CD_date] [varchar](50) NULL, [BLOCK_NM_date] [varchar](30) NULL, [ANSWER_GROUP_SEQ_NBR_date] [int] NULL + ) + ON [PRIMARY]; + + END;') + + EXEC ('IF OBJECT_ID(''tempdb..'+@coded_output_table_name+''', ''U'') IS NULL + BEGIN + CREATE TABLE '+@coded_output_table_name+' + ( + [PAGE_CASE_UID_coded] [bigint] NULL, [INVESTIGATION_FORM_CD_coded] [varchar](50) NULL, [BLOCK_NM_coded] [varchar](30) NULL, [ANSWER_GROUP_SEQ_NBR_coded] [int] NULL + ) + ON [PRIMARY]; + + END;') + + + EXEC ('IF OBJECT_ID(''tempdb..'+@text_output_table_name+''', ''U'') IS NULL + BEGIN + CREATE TABLE '+@text_output_table_name+' + ( + [PAGE_CASE_UID_text] [bigint] NULL, [INVESTIGATION_FORM_CD] [varchar](50) NULL, [BLOCK_NM_text] [varchar](30) NULL, [ANSWER_GROUP_SEQ_NBR_text] [int] NULL + )ON [PRIMARY]; + + END;') + + + + declare @staging_step nvarchar(2500); + + set @staging_step= + ' SELECT PAGE_CASE_UID_date AS PAGE_CASE_UID, BLOCK_NM_date AS BLOCK_NM, ANSWER_GROUP_SEQ_NBR_date AS ANSWER_GROUP_SEQ_NBR + INTO '+@staging_table_name+' + FROM '+@date_output_table_name+' + UNION + SELECT PAGE_CASE_UID_text, BLOCK_NM_text, ANSWER_GROUP_SEQ_NBR_text + FROM '+@text_output_table_name+' + UNION + SELECT PAGE_CASE_UID_numeric, BLOCK_NM_numeric, ANSWER_GROUP_SEQ_NBR_numeric + FROM '+@numeric_output_table_name+' + UNION + SELECT PAGE_CASE_UID_coded, BLOCK_NM_coded, ANSWER_GROUP_SEQ_NBR_coded + FROM '+@coded_output_table_name+';' + + if @debug = 'true' + print @staging_step; + + exec sp_executesql @staging_step; + 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, 'INVESTIGATION_REPEAT', 'SLD_INVESTIGATION_REPEAT', 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + + BEGIN TRANSACTION; + SET @Proc_Step_no = 12; + SET @Proc_Step_Name = 'S_INVESTIGATION_REPEAT Update'; + + + + IF OBJECT_ID('dbo.S_INVESTIGATION_REPEAT', 'U') IS NOT NULL + BEGIN + DROP TABLE dbo.S_INVESTIGATION_REPEAT; + END; + + + DECLARE @mergeSQL varchar(max)= 'SELECT sk.* ,ddo.*,tdo.*, ' + + ( + SELECT STUFF( + ( + SELECT ',' + +col + FROM + ( + SELECT CASE + WHEN i1.t IS NOT NULL AND + i2.t IS NOT NULL THEN 'COALESCE(' + i1.t + '.' + i1.COLUMN_NAME + ', ' + i2.t + '.' + i2.COLUMN_NAME + ') AS ' + i1.COLUMN_NAME + ELSE COALESCE(i1.COLUMN_NAME, i2.COLUMN_NAME) + END AS col, COALESCE(i1.COLUMN_NAME, i2.COLUMN_NAME) AS cname + FROM + ( + SELECT 't1' AS t, COLUMN_NAME + FROM tempdb.INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_NAME = @coded_output_table_name + ) AS i1 + FULL OUTER JOIN + ( + SELECT 't2' AS t, COLUMN_NAME + FROM tempdb.INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_NAME = @numeric_output_table_name + ) AS i2 + ON i1.COLUMN_NAME = i2.COLUMN_NAME + ) AS cols + ORDER BY cname FOR XML PATH(''), TYPE + ).value( '.', 'NVARCHAR(MAX)' ), 1, 1, '') + ) + ' INTO S_INVESTIGATION_REPEAT + from '+@staging_table_name+' sk + LEFT OUTER JOIN '+@date_output_table_name+' ddo ON + ddo.PAGE_CASE_UID_date=sk.PAGE_CASE_UID and + /*ddo.INVESTIGATION_FORM_CD_date = sk.INVESTIGATION_FORM_CD and */ + ddo.BLOCK_NM_date = sk.BLOCK_NM and + ddo.ANSWER_GROUP_SEQ_NBR_date = sk.ANSWER_GROUP_SEQ_NBR + LEFT OUTER JOIN '+@text_output_table_name+' tdo ON tdo.PAGE_CASE_UID_text=sk.PAGE_CASE_UID + /*and tdo.INVESTIGATION_FORM_CD_text = sk.INVESTIGATION_FORM_CD */ + and tdo.BLOCK_NM_text = sk.BLOCK_NM and tdo.ANSWER_GROUP_SEQ_NBR_text = sk.ANSWER_GROUP_SEQ_NBR + LEFT OUTER JOIN '+@numeric_output_table_name+' t2 ON t2.PAGE_CASE_UID_NUMERIC=sk.PAGE_CASE_UID + /*and t2.INVESTIGATION_FORM_CD_numeric = sk.INVESTIGATION_FORM_CD */ + and t2.BLOCK_NM_numeric = sk.BLOCK_NM and t2.ANSWER_GROUP_SEQ_NBR_numeric = sk.ANSWER_GROUP_SEQ_NBR + LEFT OUTER JOIN '+@coded_output_table_name+' t1 ON t1.PAGE_CASE_UID_coded=sk.PAGE_CASE_UID + /*and t1.INVESTIGATION_FORM_CD_coded = sk.INVESTIGATION_FORM_CD*/ + and t1.BLOCK_NM_coded = sk.BLOCK_NM and t1.ANSWER_GROUP_SEQ_NBR_coded = sk.ANSWER_GROUP_SEQ_NBR'; + + + + + + EXECUTE (@mergeSQL); + + if @debug = 'true' + print @mergeSQL; + + if @debug = 'false' + EXEC (' drop table '+@staging_table_name+'; + drop table '+@numeric_output_table_name+'; + drop table '+@date_output_table_name+'; + drop table '+@text_output_table_name+'; + drop table '+@coded_output_table_name+'; + ') + + ALTER TABLE dbo.S_INVESTIGATION_REPEAT DROP COLUMN PAGE_CASE_UID_numeric; + ALTER TABLE dbo.S_INVESTIGATION_REPEAT DROP COLUMN PAGE_CASE_UID_date; + ALTER TABLE dbo.S_INVESTIGATION_REPEAT DROP COLUMN PAGE_CASE_UID_coded; + ALTER TABLE dbo.S_INVESTIGATION_REPEAT DROP COLUMN PAGE_CASE_UID_text; + + ALTER TABLE dbo.S_INVESTIGATION_REPEAT DROP COLUMN BLOCK_NM_numeric; + ALTER TABLE dbo.S_INVESTIGATION_REPEAT DROP COLUMN BLOCK_NM_date; + ALTER TABLE dbo.S_INVESTIGATION_REPEAT DROP COLUMN BLOCK_NM_coded; + ALTER TABLE dbo.S_INVESTIGATION_REPEAT DROP COLUMN BLOCK_NM_text; + + ALTER TABLE dbo.S_INVESTIGATION_REPEAT DROP COLUMN ANSWER_GROUP_SEQ_NBR_numeric; + ALTER TABLE dbo.S_INVESTIGATION_REPEAT DROP COLUMN ANSWER_GROUP_SEQ_NBR_date; + ALTER TABLE dbo.S_INVESTIGATION_REPEAT DROP COLUMN ANSWER_GROUP_SEQ_NBR_coded; + ALTER TABLE dbo.S_INVESTIGATION_REPEAT DROP COLUMN ANSWER_GROUP_SEQ_NBR_text; + + if @debug = 'true' + select * from dbo.S_INVESTIGATION_REPEAT; + + + 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, 'INVESTIGATION_REPEAT', 'SLD_INVESTIGATION_REPEAT', 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 13; + SET @Proc_Step_Name = 'Insert into L_INVESTIGATION_REPEAT'; + + + IF OBJECT_ID('dbo.L_INVESTIGATION_REPEAT', 'U') IS NULL + BEGIN + CREATE TABLE [dbo].[L_INVESTIGATION_REPEAT] + ( + [D_INVESTIGATION_REPEAT_KEY] [float] NULL, [PAGE_CASE_UID] [float] NULL + ) + ON [PRIMARY]; + END; + + DELETE FROM dbo.LOOKUP_TABLE_N_REPT; + + INSERT INTO dbo.LOOKUP_TABLE_N_REPT + SELECT PAGE_CASE_UID + FROM dbo.S_INVESTIGATION_REPEAT + WHERE PAGE_CASE_UID > 1 + EXCEPT + SELECT DISTINCT + PAGE_CASE_UID + FROM dbo.L_INVESTIGATION_REPEAT; + + + IF OBJECT_ID('dbo.L_INVESTIGATION_REPEAT_INC', 'U') IS NOT NULL + BEGIN + DROP TABLE dbo.L_INVESTIGATION_REPEAT_INC; + END; + + SELECT pcuid.PAGE_CASE_UID, ladmin.[D_INVESTIGATION_REPEAT_KEY] + INTO [dbo].[L_INVESTIGATION_REPEAT_INC] + FROM #phc_uids_REPT AS pcuid, dbo.[L_INVESTIGATION_REPEAT] AS ladmin + WHERE pcuid.PAGE_CASE_UID = ladmin.PAGE_CASE_UID AND + ladmin.[D_INVESTIGATION_REPEAT_KEY] != 1; + + INSERT INTO [dbo].[L_INVESTIGATION_REPEAT_INC]( [PAGE_CASE_UID], [D_INVESTIGATION_REPEAT_KEY] ) + SELECT PAGE_CASE_UID, D_REPT_KEY + FROM dbo.LOOKUP_TABLE_N_REPT; + + INSERT INTO [dbo].[L_INVESTIGATION_REPEAT]( [PAGE_CASE_UID], [D_INVESTIGATION_REPEAT_KEY] ) + SELECT PAGE_CASE_UID, D_REPT_KEY + FROM dbo.LOOKUP_TABLE_N_REPT; + + CREATE INDEX idx_PAGE_CASE_UID_L + ON dbo.L_INVESTIGATION_REPEAT_INC + ( PAGE_CASE_UID + ); + + CREATE INDEX idx_PAGE_CASE_UID_S + ON dbo.S_INVESTIGATION_REPEAT + ( page_case_uid + ); + + 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, 'INVESTIGATION_REPEAT', 'SLD_INVESTIGATION_REPEAT', 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + SET @Proc_Step_no = 14; + SET @Proc_Step_Name = 'Insert into D_INVESTIGATION_REPEAT_INC'; + + IF OBJECT_ID('dbo.D_INVESTIGATION_REPEAT', 'U') IS NULL + BEGIN + CREATE TABLE [dbo].[D_INVESTIGATION_REPEAT] + ( + [D_INVESTIGATION_REPEAT_KEY] [float] NULL, [PAGE_CASE_UID] [float] NULL + ) + ON [PRIMARY]; + END; + + + IF OBJECT_ID('dbo.D_INVESTIGATION_REPEAT_INC', 'U') IS NOT NULL + BEGIN + DROP TABLE dbo.D_INVESTIGATION_REPEAT_INC; + END; + + --CREATE TABLE NBS_D_INVESTIGATION_REPEAT(DROP=NBS_CASE_ANSWER_UID INVESTIGATION_FORM_CD) AS + SELECT SREPT.*, LREPT.D_INVESTIGATION_REPEAT_KEY + INTO dbo.D_INVESTIGATION_REPEAT_INC + FROM dbo.L_INVESTIGATION_REPEAT_INC AS LREPT LEFT + OUTER JOIN + dbo.S_INVESTIGATION_REPEAT AS SREPT + ON SREPT.PAGE_CASE_UID = LREPT.PAGE_CASE_UID; + CREATE NONCLUSTERED INDEX [RDB_PERF_INTERNAL_07] + ON [dbo].[D_INVESTIGATION_REPEAT_INC] + ( [D_INVESTIGATION_REPEAT_KEY] + ); + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 15; + SET @Proc_Step_Name = ' Add new columns to D_INVESTIGATION_REPEAT'; + + -- create table rdb_ui_metadata_INVESTIGATION_REPEAT as + + DECLARE @Temp_Query_Table TABLE + ( + ID int IDENTITY(1, 1), QUERY_stmt varchar(5000) + ); + DECLARE @column_query varchar(5000); + DECLARE @Max_Query_No int; + DECLARE @Curr_Query_No int; + DECLARE @ColumnList varchar(5000); + + INSERT INTO @Temp_Query_Table + SELECT 'ALTER TABLE dbo.D_INVESTIGATION_REPEAT ADD [' + COLUMN_NAME + '] ' + DATA_TYPE + CASE + WHEN DATA_TYPE IN('char', 'varchar', 'nchar', 'nvarchar') THEN ' (' + COALESCE(CAST(NULLIF(CHARACTER_MAXIMUM_LENGTH, -1) AS varchar(10)), CAST(CHARACTER_MAXIMUM_LENGTH AS varchar(10))) + ')' + ELSE '' + END + CASE + WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' + ELSE ' NULL' + END + FROM INFORMATION_SCHEMA.COLUMNS AS c + WHERE TABLE_NAME = 'D_INVESTIGATION_REPEAT_INC' AND + NOT EXISTS + ( + SELECT 1 + FROM INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_NAME = 'D_INVESTIGATION_REPEAT' AND + COLUMN_NAME = c.COLUMN_NAME + ) AND + LOWER(COLUMN_NAME) NOT IN( LOWER('PAGE_CASE_UID'), 'last_chg_time' ); + + + SET @Max_Query_No = + ( + SELECT MAX(ID) + FROM @Temp_Query_Table AS t + ); + + SET @Curr_Query_No = 0; + + WHILE @Max_Query_No > @Curr_Query_No + + BEGIN + SET @Curr_Query_No = @Curr_Query_No + 1; + + SET @column_query = + ( + SELECT QUERY_stmt + FROM @Temp_Query_Table AS t + WHERE ID = @Curr_Query_No + ); + + --SELECT @column_query; + + EXEC (@column_query); + + 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, 'INVESTIGATION_REPEAT', 'SLD_INVESTIGATION_REPEAT', 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + + COMMIT TRANSACTION; + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 14; + SET @Proc_Step_Name = ' Inserting data into D_INVESTIGATION_REPEAT'; + + IF NOT EXISTS + ( + SELECT * + FROM sys.indexes + WHERE name = 'RDB_PERF_04092021_06' AND + object_id = OBJECT_ID('D_INVESTIGATION_REPEAT') + ) + BEGIN + + CREATE NONCLUSTERED INDEX [RDB_PERF_04092021_06] + ON [dbo].[D_INVESTIGATION_REPEAT] + ( [D_INVESTIGATION_REPEAT_KEY] + ); + END; + + INSERT INTO [dbo].[D_INVESTIGATION_REPEAT]( [D_INVESTIGATION_REPEAT_KEY] ) + SELECT 1 + WHERE NOT EXISTS + ( + SELECT TOP 1 d_INVESTIGATION_REPEAT_key + FROM [RDB].[dbo].[D_INVESTIGATION_REPEAT_INC] + WHERE d_INVESTIGATION_REPEAT_key = 1 + ) AND + NOT EXISTS + ( + SELECT TOP 1 D_INVESTIGATION_REPEAT_KEY + FROM [RDB].[DBO].[D_INVESTIGATION_REPEAT] + WHERE D_INVESTIGATION_REPEAT_KEY = 1 + ); + + DECLARE @insert_query nvarchar(max); + + SET @insert_query = + ( + SELECT 'INSERT INTO [dbo].[D_INVESTIGATION_REPEAT]( [D_INVESTIGATION_REPEAT_KEY] ,' + STUFF( + ( + SELECT ', [' + name + ']' + FROM syscolumns + WHERE id = OBJECT_ID('S_INVESTIGATION_REPEAT') AND + LOWER(NAME) NOT IN( 'last_chg_time' ) FOR XML PATH('') + ), 1, 1, '') + ' ) select [D_INVESTIGATION_REPEAT_KEY] , ' + STUFF( + ( + SELECT ', SINV.[' + name + ']' + FROM syscolumns + WHERE id = OBJECT_ID('S_INVESTIGATION_REPEAT') AND + LOWER(NAME) NOT IN( 'last_chg_time' ) FOR XML PATH('') + ), 1, 1, '') + ' + FROM dbo.L_INVESTIGATION_REPEAT_INC LINV + INNER JOIN dbo.S_INVESTIGATION_REPEAT SINV ON SINV.PAGE_CASE_UID=LINV.PAGE_CASE_UID + where linv.D_INVESTIGATION_REPEAT_KEY != 1' + ); + + + PRINT @insert_query; + + DELETE dnr + FROM dbo.D_INVESTIGATION_REPEAT DNR + INNER JOIN + dbo.S_INVESTIGATION_REPEAT SINV + ON SINV.PAGE_CASE_UID = DNR.PAGE_CASE_UID; + + --SELECT @insert_query; + + EXEC sp_executesql @insert_query; + + 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, 'INVESTIGATION_REPEAT', 'SLD_INVESTIGATION_REPEAT', 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + + COMMIT TRANSACTION; + + + + BEGIN 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, 'INVESTIGATION_REPEAT', 'D_INVESTIGATION_REPEAT', 'START', @Proc_Step_no, @Proc_Step_Name, @RowCount_no ); + COMMIT TRANSACTION; + + END TRY + BEGIN CATCH + + IF @@TRANCOUNT > 0 + BEGIN + ROLLBACK TRANSACTION; + END; + + + DECLARE @ErrorNumber int= ERROR_NUMBER(); + DECLARE @ErrorLine int= ERROR_LINE(); + DECLARE @ErrorMessage nvarchar(4000)= ERROR_MESSAGE(); + DECLARE @ErrorSeverity int= ERROR_SEVERITY(); + DECLARE @ErrorState int= ERROR_STATE(); + + 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, 'INVESTIGATION_REPEAT', 'D_INVESTIGATION_REPEAT', 'ERROR', @Proc_Step_no, 'ERROR - ' + @Proc_Step_name, 'Step -' + CAST(@Proc_Step_no AS varchar(3)) + ' -' + CAST(@ErrorMessage AS varchar(500)), 0 ); + + RETURN -1; + END CATCH; + +END; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/029-sp_page_builder_postprocessing-001.sql b/liquibase-service/src/main/resources/db/rdb/029-sp_page_builder_postprocessing-001.sql new file mode 100644 index 00000000..7244a3e5 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/029-sp_page_builder_postprocessing-001.sql @@ -0,0 +1,102 @@ +CREATE OR ALTER PROCEDURE dbo.sp_page_builder_postprocessing + @phc_id bigint, + @rdb_table_name_list nvarchar(max), + @debug bit = 'false' +AS +begin + + begin try + + Declare @rdb_table_name varchar(300); + Declare @category varchar(250); + Declare @type varchar(250); + DECLARE @batch_id BIGINT = 0 ; + declare @step_name varchar(500) = ''; + + set @batch_id = cast((format(getdate(),'yyyyMMddHHmmss')) as bigint) + + if @debug = 'true' Select @batch_id, @phc_id, @rdb_table_name_list; + + + INSERT INTO [dbo].[job_flow_log](batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @batch_id, 'Page builder process', LEFT(@rdb_table_name_list,199), 'START', 0,'Step - Page Builder tables', 0 ); + + + -- declare a cusrsor and get the list of all pagebuilder category dimension table as rows + DECLARE page_answer_cursor CURSOR + FOR SELECT @batch_id as batch_id, @phc_id as phc_id, trim(value) as rdb_table_name + FROM STRING_SPLIT(@rdb_table_name_list, ','); + + OPEN page_answer_cursor; + + FETCH NEXT FROM page_answer_cursor INTO @batch_id, @phc_id, @rdb_table_name; + + -- if @debug =1 select @@FETCH_STATUS; + + -- execute the page builder steps as defined by the page builder table category + WHILE @@FETCH_STATUS = 0 + BEGIN + -- get the category name + -- set @type = left(trim(@rdb_table_name), 6) + if left(trim(@rdb_table_name), 6) = 'D_INV_' + begin + set @category = trim(SUBSTRING(@rdb_table_name, 3, LEN(@rdb_table_name))); + + set @step_name = @rdb_table_name + '-' + cast(@phc_id as varchar(20)) + print @batch_id;print @phc_id;print @rdb_table_name;print @category; + + --execute dbo.sp_clear_inv_adminstrative_event; + + INSERT INTO [dbo].[job_flow_log](batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @batch_id, 'Page builder staging process', @rdb_table_name , 'START', 0,'Step - ' + @step_name , 0 ); + + execute dbo.sp_s_pagebuilder_postprocessing @batch_id, @phc_id, @rdb_table_name, @category; + + INSERT INTO [dbo].[job_flow_log](batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @batch_id, 'Page builder lookup process', @rdb_table_name , 'START', 0,'Step - ' + @step_name, 0 ); + + execute dbo.sp_l_pagebuilder_postprocessing @batch_id, @phc_id, @rdb_table_name, @category; + + INSERT INTO [dbo].[job_flow_log](batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @batch_id, 'Page builder dim process', @rdb_table_name , 'START', 0,'Step - ' + @step_name , 0 ); + + execute dbo.sp_d_pagebuilder_postprocessing @batch_id, @phc_id, @rdb_table_name, @category; + end + else + begin + if upper(@rdb_table_name) = 'D_INVESTIGATION_REPEAT' + begin + execute dbo.sp_sld_investigation_repeat_postprocessing @batch_id, @phc_id; + end + end + FETCH NEXT FROM page_answer_cursor into @batch_id, @phc_id, @rdb_table_name; + END; + + CLOSE page_answer_cursor; + + DEALLOCATE page_answer_cursor; + + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @batch_id, 'Page builder process', LEFT(@rdb_table_name_list,199), 'COMPLETE', 0,'Step - Page Builder tables', 0 ); + + end try + + BEGIN CATCH + + IF @@TRANCOUNT > 0 + BEGIN + ROLLBACK TRANSACTION; + END; + + DECLARE @ErrorNumber int= ERROR_NUMBER(); + DECLARE @ErrorLine int= ERROR_LINE(); + DECLARE @ErrorMessage nvarchar(4000)= ERROR_MESSAGE(); + DECLARE @ErrorSeverity int= ERROR_SEVERITY(); + DECLARE @ErrorState int= ERROR_STATE(); + + INSERT INTO [dbo].[job_flow_log]( batch_id, [Dataflow_Name], [package_Name], [Status_Type], [step_number], [step_name], [row_count] ) + VALUES( @batch_id, 'Page builder process', @rdb_table_name_list, 'ERROR', 0,'Step - Page Builder tables -' + CAST(@ErrorMessage AS varchar(500)), 0 ); + + RETURN -1; + END CATCH; +END; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/030-sp_f_page_case_postprocessing-001.sql b/liquibase-service/src/main/resources/db/rdb/030-sp_f_page_case_postprocessing-001.sql new file mode 100644 index 00000000..4379ea27 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/030-sp_f_page_case_postprocessing-001.sql @@ -0,0 +1,511 @@ +CREATE OR ALTER PROCEDURE dbo.sp_f_page_case_postprocessing + @phc_ids nvarchar(max), + @debug bit = 'false' + as + +BEGIN + DECLARE @RowCount_no INT ; + DECLARE @Proc_Step_no FLOAT = 0 ; + DECLARE @Proc_Step_Name VARCHAR(200) = '' ; + DECLARE @batch_start_time datetime2(7) = null ; + DECLARE @batch_end_time datetime2(7) = null ; + DECLARE @batch_id BIGINT; + SET @batch_id = cast((format(getdate(),'yyyyMMddHHmmss')) as bigint); + +BEGIN TRY + +SET @Proc_Step_no = 1; + SET @Proc_Step_Name = 'SP_Start'; + + +BEGIN TRANSACTION; + +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 + ,'F_PAGE_CASE' + ,'F_PAGE_CASE' + ,'START' + ,@Proc_Step_no + ,@Proc_Step_Name + ,0 + ,LEFT('ID List-' + @phc_ids,500) + ); + +COMMIT TRANSACTION; + + +select @batch_start_time = batch_start_dttm,@batch_end_time = batch_end_dttm +from [dbo].[job_batch_log] +where status_type = 'start' and type_code='MasterETL' +; + + +BEGIN TRANSACTION; + + + SET @Proc_Step_no = 2; + SET @Proc_Step_Name = ' Generating PHC_UIDS_ALL'; + + ---> PHC_UIDS +SELECT inv.public_health_case_uid page_case_uid, + CASE_MANAGEMENT_UID, + INVESTIGATION_FORM_CD, + CD, + LAST_CHG_TIME +INTO #PHC_UIDS +FROM dbo.nrt_investigation inv + --LEFT OUTER JOIN NBS_ODSE..CASE_MANAGEMENT cm ON inv.PUBLIC_HEALTH_CASE_UID= cm.PUBLIC_HEALTH_CASE_UID + LEFT OUTER JOIN NBS_SRTE..CONDITION_CODE cc ON cc.CONDITION_CD= inv.CD + AND INVESTIGATION_FORM_CD NOT IN ( 'INV_FORM_BMDGAS','INV_FORM_BMDGBS','INV_FORM_BMDGEN', + 'INV_FORM_BMDNM','INV_FORM_BMDSP','INV_FORM_GEN','INV_FORM_HEPA','INV_FORM_HEPBV','INV_FORM_HEPCV', + 'INV_FORM_HEPGEN','INV_FORM_MEA','INV_FORM_PER','INV_FORM_RUB','INV_FORM_RVCT','INV_FORM_VAR') +WHERE inv.public_health_case_uid IN (SELECT value FROM STRING_SPLIT(@phc_ids, ',')); + +if @debug = 'true' select * from #PHC_UIDS; + +IF OBJECT_ID('#PHC_UIDS_ALL', 'U') IS NOT NULL +drop table #PHC_UIDS_ALL +; + +SELECT + inv.PUBLIC_HEALTH_CASE_UID 'PAGE_CASE_UID', /* VS LENGTH =8 AS PAGE_CASE_UID 'PAGE_CASE_UID',*/ + CASE_MANAGEMENT_UID, + INVESTIGATION_FORM_CD, + CD, + LAST_CHG_TIME +INTO #PHC_UIDS_ALL +FROM + dbo.nrt_investigation inv + --LEFT OUTER JOIN NBS_ODSE.dbo.CASE_MANAGEMENT ON inv.PUBLIC_HEALTH_CASE_UID= CASE_MANAGEMENT.PUBLIC_HEALTH_CASE_UID + LEFT OUTER JOIN NBS_SRTE.dbo.CONDITION_CODE ON CONDITION_CODE.CONDITION_CD= inv.CD AND INVESTIGATION_FORM_CD + NOT IN ( 'bo.','INV_FORM_BMDGBS','INV_FORM_BMDGEN','INV_FORM_BMDNM','INV_FORM_BMDSP','INV_FORM_GEN','INV_FORM_HEPA','INV_FORM_HEPBV','INV_FORM_HEPCV','INV_FORM_HEPGEN','INV_FORM_MEA','INV_FORM_PER','INV_FORM_RUB','INV_FORM_RVCT','INV_FORM_VAR') +WHERE inv.public_health_case_uid IN (SELECT value FROM STRING_SPLIT(@phc_ids, ',')); + +if @debug = 'true' select * from #PHC_UIDS_ALL; + +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,'F_PAGE_CASE','F_PAGE_CASE','START',@Proc_Step_no,@Proc_Step_Name,@RowCount_no); + +COMMIT TRANSACTION; + +BEGIN TRANSACTION; + + SET @Proc_Step_no = 3; + SET @Proc_Step_Name = ' Generating PHC_CASE_UIDS_ALL'; + + IF OBJECT_ID('#PHC_CASE_UIDS_ALL', 'U') IS NOT NULL +drop table #PHC_CASE_UIDS_ALL +; + + +SELECT + inv.PUBLIC_HEALTH_CASE_UID 'PAGE_CASE_UID', /* VS LENGTH =8 AS PAGE_CASE_UID 'PAGE_CASE_UID',*/ + CASE_MANAGEMENT_UID, + INVESTIGATION_FORM_CD, + CD, + LAST_CHG_TIME +INTO #PHC_CASE_UIDS_ALL +FROM + dbo.nrt_investigation inv + --LEFT OUTER JOIN NBS_ODSE.dbo.CASE_MANAGEMENT ON inv.PUBLIC_HEALTH_CASE_UID= CASE_MANAGEMENT.PUBLIC_HEALTH_CASE_UID + LEFT OUTER JOIN NBS_SRTE.dbo.CONDITION_CODE ON CONDITION_CODE.CONDITION_CD= inv.CD AND INVESTIGATION_FORM_CD + NOT IN ( 'bo.','INV_FORM_BMDGBS','INV_FORM_BMDGEN','INV_FORM_BMDNM','INV_FORM_BMDSP','INV_FORM_GEN','INV_FORM_HEPA','INV_FORM_HEPBV','INV_FORM_HEPCV','INV_FORM_HEPGEN','INV_FORM_MEA','INV_FORM_PER','INV_FORM_RUB','INV_FORM_RVCT','INV_FORM_VAR') +where inv.public_health_case_uid IN (SELECT value FROM STRING_SPLIT(@phc_ids, ',')) + AND CASE_MANAGEMENT_UID is null; + +if @debug = 'true' select * from #PHC_CASE_UIDS_ALL; + +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,'F_PAGE_CASE','F_PAGE_CASE','START',@Proc_Step_no,@Proc_Step_Name,@RowCount_no); + +COMMIT TRANSACTION; + +BEGIN TRANSACTION; + + SET @Proc_Step_no = 4; + SET @Proc_Step_Name = ' Generating ENTITY_KEYSTORE_INC'; + + IF OBJECT_ID('#ENTITY_KEYSTORE_INC', 'U') IS NOT NULL +drop table #ENTITY_KEYSTORE_INC +; + +-- drop table dbo.F_S_INV_CASE + +IF OBJECT_ID('#F_S_INV_CASE', 'U') IS NOT NULL +drop table #F_S_INV_CASE; + +-- Populate dbo.F_S_INV_CASE + + +SELECT public_health_case_uid AS PAGE_CASE_UID, + nac_last_chg_time as last_chg_time, + nac_add_time as add_time, + investigator_id as INVESTIGATOR_uid, + person_as_reporter_uid as PERSON_AS_REPORTER_UID, + patient_id as patient_uid, + physician_id as PHYSICIAN_UID, + hospital_uid as HOSPITAL_UID, + organization_id as ORG_AS_REPORTER_UID, + ordering_facility_uid as ORDERING_FACILTY_UID +INTO #F_S_INV_CASE +FROM dbo.nrt_investigation inv WHERE public_health_case_uid + IN (SELECT PAGE_CASE_UID FROM #PHC_UIDS WHERE CASE_MANAGEMENT_UID IS NULL); + +if @debug = 'true' select * from #F_S_INV_CASE; + + +SELECT + FSIV.ADD_TIME, + FSIV.LAST_CHG_TIME, + FSIV.PATIENT_UID, + COALESCE(PATIENT.PATIENT_KEY, 1) AS PATIENT_KEY, + FSIV.PAGE_CASE_UID, + FSIV.HOSPITAL_UID, + COALESCE(HOSPITAL.ORGANIZATION_KEY, 1) AS HOSPITAL_KEY, + FSIV.ORG_AS_REPORTER_UID, + COALESCE(REPORTERORG.ORGANIZATION_KEY, 1) AS ORG_AS_REPORTER_KEY, + FSIV.PERSON_AS_REPORTER_UID, + COALESCE(PERSONREPORTER.PROVIDER_KEY, 1) AS PERSON_AS_REPORTER_KEY, + FSIV.PHYSICIAN_UID, + COALESCE(PHYSICIAN.PROVIDER_KEY, 1) AS PHYSICIAN_KEY, + FSIV.INVESTIGATOR_UID, + COALESCE(PROVIDER.PROVIDER_KEY, 1) AS INVESTIGATOR_KEY, + COALESCE(INVESTIGATION.INVESTIGATION_KEY,1 ) AS INVESTIGATION_KEY, + COALESCE(CONDITION.CONDITION_KEY,1) AS CONDITION_KEY, + COALESCE(LOC.GEOCODING_LOCATION_KEY, 1) AS GEOCODING_LOCATION_KEY +--'' as TEMP +into #ENTITY_KEYSTORE_INC +FROM #F_S_INV_CASE FSIV + LEFT OUTER JOIN dbo.D_PATIENT PATIENT ON FSIV.PATIENT_UID= PATIENT.PATIENT_UID + LEFT OUTER JOIN dbo.D_ORGANIZATION HOSPITAL ON FSIV.HOSPITAL_UID= HOSPITAL.ORGANIZATION_UID + LEFT OUTER JOIN dbo.D_ORGANIZATION REPORTERORG ON FSIV.ORG_AS_REPORTER_UID= REPORTERORG.ORGANIZATION_UID + LEFT OUTER JOIN dbo.D_PROVIDER PERSONREPORTER ON FSIV.PERSON_AS_REPORTER_UID= PERSONREPORTER.PROVIDER_UID + LEFT OUTER JOIN dbo.D_PROVIDER PROVIDER ON FSIV.INVESTIGATOR_UID= PROVIDER.PROVIDER_UID + LEFT OUTER JOIN dbo.D_PROVIDER PHYSICIAN ON FSIV.PHYSICIAN_UID= PHYSICIAN.PROVIDER_UID + LEFT OUTER JOIN dbo.INVESTIGATION INVESTIGATION ON FSIV.PAGE_CASE_UID= INVESTIGATION.CASE_UID + LEFT OUTER JOIN #PHC_CASE_UIDS_ALL CASE_UID ON FSIV.PAGE_CASE_UID= CASE_UID.PAGE_CASE_UID + LEFT OUTER JOIN dbo.CONDITION CONDITION ON CASE_UID.CD= CONDITION.CONDITION_CD + LEFT JOIN dbo.GEOCODING_LOCATION AS LOC ON LOC.ENTITY_UID = PATIENT.PATIENT_UID +; + +if @debug = 'true' select * from #ENTITY_KEYSTORE_INC; +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,'F_PAGE_CASE','F_PAGE_CASE','START',@Proc_Step_no,@Proc_Step_Name,@RowCount_no); + +COMMIT TRANSACTION; + +BEGIN TRANSACTION; + + SET @Proc_Step_no = 5; + SET @Proc_Step_Name = ' Generating DIMENSION_KEYS_PAGECASEID'; + + IF OBJECT_ID('#DIMENSION_KEYS_PAGECASEID', 'U') IS NOT NULL +drop table #DIMENSION_KEYS_PAGECASEID +; + +select L_INV_ADMINISTRATIVE_INC.PAGE_CASE_UID as PAGE_CASE_UID +into #DIMENSION_KEYS_PAGECASEID +from dbo.L_INV_ADMINISTRATIVE_INC union +select L_INV_CLINICAL_INC.PAGE_CASE_UID from dbo.L_INV_CLINICAL_INC union +select L_INV_COMPLICATION_INC.PAGE_CASE_UID from dbo.L_INV_COMPLICATION_INC union +select L_INV_CONTACT_INC.PAGE_CASE_UID from dbo.L_INV_CONTACT_INC union +select L_INV_DEATH_INC.PAGE_CASE_UID from dbo.L_INV_DEATH_INC union +select L_INV_EPIDEMIOLOGY_INC.PAGE_CASE_UID from dbo.L_INV_EPIDEMIOLOGY_INC union +select L_INV_HIV_INC.PAGE_CASE_UID from dbo.L_INV_HIV_INC union +select L_INV_ISOLATE_TRACKING_INC.PAGE_CASE_UID from dbo.L_INV_ISOLATE_TRACKING_INC union +select L_INV_LAB_FINDING_INC.PAGE_CASE_UID from dbo.L_INV_LAB_FINDING_INC union +select L_INV_MEDICAL_HISTORY_INC.PAGE_CASE_UID from dbo.L_INV_MEDICAL_HISTORY_INC union +select L_INV_MOTHER_INC.PAGE_CASE_UID from dbo.L_INV_MOTHER_INC union +select L_INV_OTHER_INC.PAGE_CASE_UID from dbo.L_INV_OTHER_INC union +select L_INV_PATIENT_OBS_INC.PAGE_CASE_UID from dbo.L_INV_PATIENT_OBS_INC union +select L_INV_PREGNANCY_BIRTH_INC.PAGE_CASE_UID from dbo.L_INV_PREGNANCY_BIRTH_INC union +select L_INV_RESIDENCY_INC.PAGE_CASE_UID from dbo.L_INV_RESIDENCY_INC union +select L_INV_RISK_FACTOR_INC.PAGE_CASE_UID from dbo.L_INV_RISK_FACTOR_INC union +select L_INV_SOCIAL_HISTORY_INC.PAGE_CASE_UID from dbo.L_INV_SOCIAL_HISTORY_INC union +select L_INV_SYMPTOM_INC.PAGE_CASE_UID from dbo.L_INV_SYMPTOM_INC union +select L_INV_TRAVEL_INC.PAGE_CASE_UID from dbo.L_INV_TRAVEL_INC union +select L_INV_TREATMENT_INC.PAGE_CASE_UID from dbo.L_INV_TREATMENT_INC union +select L_INV_UNDER_CONDITION_INC.PAGE_CASE_UID from dbo.L_INV_UNDER_CONDITION_INC union +select L_INV_VACCINATION_INC.PAGE_CASE_UID from dbo.L_INV_VACCINATION_INC union +SELECT L_INVESTIGATION_REPEAT_INC.PAGE_CASE_UID from [dbo].[L_INVESTIGATION_REPEAT_INC] union +SELECT L_INV_PLACE_REPEAT.PAGE_CASE_UID from [dbo].[L_INV_PLACE_REPEAT] +; + +if @debug = 'true' select * from #DIMENSION_KEYS_PAGECASEID where page_case_uid IN (SELECT value FROM STRING_SPLIT(@phc_ids, ',')); + + +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,'F_PAGE_CASE','F_PAGE_CASE','START',@Proc_Step_no,@Proc_Step_Name,@RowCount_no); + +COMMIT TRANSACTION; + +BEGIN TRANSACTION; + + SET @Proc_Step_no = 6; + SET @Proc_Step_Name = ' Generating DIMENSIONAL_KEYS'; + + IF OBJECT_ID('#DIMENSIONAL_KEYS', 'U') IS NOT NULL +drop table #DIMENSIONAL_KEYS +; + +/**Updated to handle cases when there are no page builder investigation updates.*/ +select phc.page_case_uid, + COALESCE(L_INV_ADMINISTRATIVE_INC.D_INV_ADMINISTRATIVE_KEY , 1) AS D_INV_ADMINISTRATIVE_KEY , + COALESCE(L_INV_CLINICAL_INC.D_INV_CLINICAL_KEY , 1) AS D_INV_CLINICAL_KEY , + COALESCE(L_INV_COMPLICATION_INC.D_INV_COMPLICATION_KEY , 1) AS D_INV_COMPLICATION_KEY , + COALESCE(L_INV_CONTACT_INC.D_INV_CONTACT_KEY , 1) AS D_INV_CONTACT_KEY , + COALESCE(L_INV_DEATH_INC.D_INV_DEATH_KEY , 1) AS D_INV_DEATH_KEY , + COALESCE(L_INV_EPIDEMIOLOGY_INC.D_INV_EPIDEMIOLOGY_KEY , 1) AS D_INV_EPIDEMIOLOGY_KEY , + COALESCE(L_INV_HIV_INC.D_INV_HIV_KEY , 1) AS D_INV_HIV_KEY , + COALESCE(L_INV_PATIENT_OBS_INC.D_INV_PATIENT_OBS_KEY , 1) AS D_INV_PATIENT_OBS_KEY , + COALESCE(L_INV_ISOLATE_TRACKING_INC.D_INV_ISOLATE_TRACKING_KEY , 1) AS D_INV_ISOLATE_TRACKING_KEY , + COALESCE(L_INV_LAB_FINDING_INC.D_INV_LAB_FINDING_KEY , 1) AS D_INV_LAB_FINDING_KEY , + COALESCE(L_INV_MEDICAL_HISTORY_INC.D_INV_MEDICAL_HISTORY_KEY , 1) AS D_INV_MEDICAL_HISTORY_KEY , + COALESCE(L_INV_MOTHER_INC.D_INV_MOTHER_KEY , 1) AS D_INV_MOTHER_KEY , + COALESCE(L_INV_OTHER_INC.D_INV_OTHER_KEY , 1) AS D_INV_OTHER_KEY , + COALESCE(L_INV_PREGNANCY_BIRTH_INC.D_INV_PREGNANCY_BIRTH_KEY , 1) AS D_INV_PREGNANCY_BIRTH_KEY , + COALESCE(L_INV_RESIDENCY_INC.D_INV_RESIDENCY_KEY , 1) AS D_INV_RESIDENCY_KEY , + COALESCE(L_INV_RISK_FACTOR_INC.D_INV_RISK_FACTOR_KEY , 1) AS D_INV_RISK_FACTOR_KEY , + COALESCE(L_INV_SOCIAL_HISTORY_INC.D_INV_SOCIAL_HISTORY_KEY , 1) AS D_INV_SOCIAL_HISTORY_KEY , + COALESCE(L_INV_SYMPTOM_INC.D_INV_SYMPTOM_KEY , 1) AS D_INV_SYMPTOM_KEY , + COALESCE(L_INV_TREATMENT_INC.D_INV_TREATMENT_KEY , 1) AS D_INV_TREATMENT_KEY , + COALESCE(L_INV_TRAVEL_INC.D_INV_TRAVEL_KEY , 1) AS D_INV_TRAVEL_KEY , + COALESCE(L_INV_UNDER_CONDITION_INC.D_INV_UNDER_CONDITION_KEY , 1) AS D_INV_UNDER_CONDITION_KEY , + COALESCE(L_INV_VACCINATION_INC.D_INV_VACCINATION_KEY , 1) AS D_INV_VACCINATION_KEY , + COALESCE(L_INVESTIGATION_REPEAT_INC.D_INVESTIGATION_REPEAT_KEY , 1 ) AS D_INVESTIGATION_REPEAT_KEY, + COALESCE(L_INV_PLACE_REPEAT.D_INV_PLACE_REPEAT_KEY , 1 ) AS D_INV_PLACE_REPEAT_KEY +into #DIMENSIONAL_KEYS +from #PHC_UIDS phc + LEFT OUTER JOIN #DIMENSION_KEYS_PAGECASEID DIMC ON DIMC.PAGE_CASE_UID = phc.PAGE_CASE_UID + LEFT OUTER JOIN dbo.L_INV_ADMINISTRATIVE_INC ON L_INV_ADMINISTRATIVE_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_CLINICAL_INC ON L_INV_CLINICAL_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_COMPLICATION_INC ON L_INV_COMPLICATION_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_CONTACT_INC ON L_INV_CONTACT_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_DEATH_INC ON L_INV_DEATH_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_EPIDEMIOLOGY_INC ON L_INV_EPIDEMIOLOGY_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_HIV_INC ON L_INV_HIV_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_ISOLATE_TRACKING_INC ON L_INV_ISOLATE_TRACKING_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_LAB_FINDING_INC ON L_INV_LAB_FINDING_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_MEDICAL_HISTORY_INC ON L_INV_MEDICAL_HISTORY_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_MOTHER_INC ON L_INV_MOTHER_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_OTHER_INC ON L_INV_OTHER_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_PATIENT_OBS_INC ON L_INV_PATIENT_OBS_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_PREGNANCY_BIRTH_INC ON L_INV_PREGNANCY_BIRTH_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_RESIDENCY_INC ON L_INV_RESIDENCY_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_RISK_FACTOR_INC ON L_INV_RISK_FACTOR_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_SOCIAL_HISTORY_INC ON L_INV_SOCIAL_HISTORY_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_SYMPTOM_INC ON L_INV_SYMPTOM_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_TRAVEL_INC ON L_INV_TRAVEL_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_TREATMENT_INC ON L_INV_TREATMENT_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_UNDER_CONDITION_INC ON L_INV_UNDER_CONDITION_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_VACCINATION_INC ON L_INV_VACCINATION_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INVESTIGATION_REPEAT_INC ON L_INVESTIGATION_REPEAT_INC.PAGE_CASE_UID = dimc.page_case_uid + LEFT OUTER JOIN dbo.L_INV_PLACE_REPEAT ON L_INV_PLACE_REPEAT.PAGE_CASE_UID = dimc.page_case_uid +where phc.CASE_MANAGEMENT_UID IS NULL; +; + +if @debug = 'true' select * from #DIMENSIONAL_KEYS; +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,'F_PAGE_CASE','F_PAGE_CASE','START',@Proc_Step_no,@Proc_Step_Name,@RowCount_no); + +COMMIT TRANSACTION; + +BEGIN TRANSACTION; + + SET @Proc_Step_no = 7; + SET @Proc_Step_Name = ' Generating F_PAGE_CASE_TEMP_INC'; + + IF OBJECT_ID('#F_PAGE_CASE_TEMP_INC', 'U') IS NOT NULL +drop table #F_PAGE_CASE_TEMP_INC +; + + +--DROP TABLE dbo.F_PAGE_CASE; + +--CREATE TABLE F_PAGE_CASE AS +SELECT + DIM_KEYS.*, + --CAST ( 1 as float ) AS D_INV_PLACE_REPEAT_KEY, + KEYSTORE.CONDITION_KEY, + KEYSTORE.INVESTIGATION_KEY, + KEYSTORE.PHYSICIAN_KEY, + KEYSTORE.INVESTIGATOR_KEY, + KEYSTORE.HOSPITAL_KEY as HOSPITAL_KEY, + KEYSTORE.PATIENT_KEY, + KEYSTORE.PERSON_AS_REPORTER_KEY AS PERSON_AS_REPORTER_KEY, + KEYSTORE.ORG_AS_REPORTER_KEY AS ORG_AS_REPORTER_KEY, + --KEYSTORE.HOSPITAL_KEY AS HOSPITAL_KEY, + KEYSTORE.GEOCODING_LOCATION_KEY, + DATE1.DATE_KEY AS ADD_DATE_KEY, + DATE2.DATE_KEY AS LAST_CHG_DATE_KEY + +INTO #F_PAGE_CASE_TEMP_INC +FROM #ENTITY_KEYSTORE_INC AS KEYSTORE + INNER JOIN #DIMENSIONAL_KEYS as DIM_KEYS ON DIM_KEYS.PAGE_CASE_UID = KEYSTORE.PAGE_CASE_UID + LEFT OUTER JOIN dbo.RDB_DATE DATE1 ON cast(DATE1.DATE_MM_DD_YYYY as date)= cast(KEYSTORE.ADD_TIME as date) + LEFT OUTER JOIN dbo.RDB_DATE DATE2 ON cast(DATE2.DATE_MM_DD_YYYY as date )=cast(KEYSTORE.LAST_CHG_TIME as date) +; + + + +if @debug = 'true' select * from #DIMENSIONAL_KEYS; + + +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,'F_PAGE_CASE','F_PAGE_CASE','START',@Proc_Step_no,@Proc_Step_Name,@RowCount_no); + +COMMIT TRANSACTION; + +BEGIN TRANSACTION; + + SET @Proc_Step_no = 8; + SET @Proc_Step_Name = ' Generating DROP COLUMNS'; + + -- DROP COLUMN PAGE_CASE_UID; +ALTER TABLE #F_PAGE_CASE_TEMP_INC DROP COLUMN PAGE_CASE_UID ; +if @debug = 'true' select * from #F_PAGE_CASE_TEMP_INC; + +--??PROC SORT DATA=F_PAGE_CASE NODUPKEY; BY PATIENT_KEY; RUN; + +IF OBJECT_ID('dbo.F_PAGE_CASE', 'U') IS NOT NULL +BEGIN + --drop table dbo.F_PAGE_CASE; + DELETE fpagecase FROM dbo.F_PAGE_CASE fpagecase + JOIN #F_PAGE_CASE_TEMP_INC fpagecaseinc ON fpagecase.investigation_key=fpagecaseinc.investigation_key; + +INSERT INTO dbo.F_PAGE_CASE SELECT * FROM #F_PAGE_CASE_TEMP_INC; +END; + + + IF OBJECT_ID('dbo.F_PAGE_CASE', 'U') IS NULL +BEGIN +SELECT * +into [dbo].F_PAGE_CASE +FROM + ( + SELECT *, + ROW_NUMBER () OVER (PARTITION BY PATIENT_KEY order by PATIENT_KEY) rowid + FROM #F_PAGE_CASE_TEMP_INC + ) AS Der WHERE rowid=1; + + +ALTER TABLE dbo.F_PAGE_CASE DROP COLUMN rowid ; +END; + /** + This should cover any issue with defect https://nbscentral.sramanaged.com/redmine/issues/12555 + ETL Error in Dynamic Datamarts Process - Problem Record(s) Causing Million+ Rows in Dynamic Datamart (Total Should Be a Few Thousand) + */ + +DELETE FROM [DBO].F_PAGE_CASE WHERE INVESTIGATION_KEY IN (SELECT INVESTIGATION_KEY FROM dbo.F_PAGE_CASE + GROUP BY INVESTIGATION_KEY HAVING COUNT(INVESTIGATION_KEY)>1) AND PATIENT_KEY =1 + +INSERT INTO [dbo].[job_flow_log] +(batch_id,[Dataflow_Name],[package_Name] ,[Status_Type],[step_number],[step_name],[row_count]) +VALUES(@batch_id,'F_PAGE_CASE','F_PAGE_CASE','START',@Proc_Step_no,@Proc_Step_Name,@RowCount_no); + + +COMMIT TRANSACTION; + +BEGIN TRANSACTION ; + + SET @Proc_Step_no = 9; + 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] + ,[msg_description1] +) +VALUES + ( + @batch_id, + 'F_PAGE_CASE' + ,'S_F_PAGE_CASE' + ,'COMPLETE' + ,@Proc_Step_no + ,@Proc_Step_name + ,@RowCount_no + ,LEFT('ID List-' + @phc_ids,500) + ); + + +COMMIT TRANSACTION; +END TRY + +BEGIN CATCH + + +IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; + + + + DECLARE @ErrorNumber INT = ERROR_NUMBER(); + DECLARE @ErrorLine INT = ERROR_LINE(); + DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(); + DECLARE @ErrorSeverity INT = ERROR_SEVERITY(); + DECLARE @ErrorState INT = ERROR_STATE(); + + +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 + ,'F_PAGE_CASE' + ,'S_F_PAGE_CASE' + ,'ERROR' + ,@Proc_Step_no + ,'ERROR - '+ @Proc_Step_name + , 'Step -' +CAST(@Proc_Step_no AS VARCHAR(3))+' -' +CAST(@ErrorMessage AS VARCHAR(500)) + ,0 + ); + + +return -1 ; + +END CATCH + +END; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/031-sp_hepatitis_datamart_postprocessing-001.sql b/liquibase-service/src/main/resources/db/rdb/031-sp_hepatitis_datamart_postprocessing-001.sql new file mode 100644 index 00000000..19530be5 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/031-sp_hepatitis_datamart_postprocessing-001.sql @@ -0,0 +1,3624 @@ +CREATE OR ALTER PROCEDURE dbo.sp_hepatitis_datamart_postprocessing + @phc_id nvarchar(max), + @pat_ids nvarchar(max) = '', + @debug bit = 'false' +AS +BEGIN + +BEGIN TRY + + + declare @sql nvarchar(4000); + + DECLARE @RowCount_no int; + + DECLARE @Proc_Step_no float= 0; + + DECLARE @Proc_Step_Name varchar(200)= ''; + + DECLARE @batch_start_time datetime2(7)= NULL; + + DECLARE @batch_end_time datetime2(7)= NULL; + + DECLARE @COUNT_PB_HEP AS int; + + DECLARE @date_last_run datetime2(7)= NULL; + + DECLARE @batch_id BIGINT; + SET @batch_id = cast((format(getdate(),'yyyyMMddHHmmss')) as bigint); + PRINT @batch_id; + + +BEGIN TRANSACTION; + + SET @Proc_Step_no = 1; + + SET @Proc_Step_Name = 'SP_Start'; + + +INSERT INTO [dbo].[job_flow_log]( batch_id, ---------------@batch_id + [Dataflow_Name], --------------'HEPATITIS_DATAMART' + [package_Name], --------------'Hepatitis_Case_DATAMART' + [Status_Type], ---------------START + [step_number], ---------------@Proc_Step_no + [step_name], ------------------@Proc_Step_Name=sp_start + [row_count], --------------------0 +[Msg_Description1] +) +VALUES( @batch_id, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @Proc_Step_no, @Proc_Step_Name, 0,LEFT('ID List-' + @phc_id,500)); + +COMMIT TRANSACTION; + +SELECT @batch_start_time = batch_start_dttm, @batch_end_time = batch_end_dttm +FROM [dbo].[job_batch_log] +WHERE status_type = 'start'; + + +---------------------------------------------------------------------2 Create Table HEPATITIS_DATAMART_LAST----------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating HEPATITIS_DATAMART_LAST '; + + SET @Proc_Step_no = 2; + + IF OBJECT_ID('dbo.HEPATITIS_DATAMART_LAST', 'U') IS NOT NULL +BEGIN +DROP TABLE dbo.HEPATITIS_DATAMART_LAST; + +END; + +CREATE TABLE dbo.HEPATITIS_DATAMART_LAST + ( + date_last_ran datetime2(7), START_DATE datetime2(7) + ); + +INSERT INTO dbo.HEPATITIS_DATAMART_LAST( date_last_ran, START_DATE ) +VALUES( '01jun1900', '01jun1900' ); + +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +UPDATE dbo.HEPATITIS_DATAMART_LAST +SET date_last_ran = + ( + SELECT MAX([REFRESH_DATETIME]) + FROM [dbo].[HEPATITIS_DATAMART] + ), START_DATE = GETDATE(); + +UPDATE dbo.HEPATITIS_DATAMART_LAST +SET date_last_ran = '01jun1900' +WHERE date_last_ran IS NULL; + + +SET @date_last_run = + ( + SELECT date_last_ran + FROM dbo.HEPATITIS_DATAMART_LAST + ); + +COMMIT TRANSACTION; + + + +-----------------------------------------------------------8. Create Table dbo.EXISTING_HEPATITIS_DATAMART------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating dbo.EXISTING_HEPATITIS_DATAMART'; + + SET @Proc_Step_no = 8; + + IF OBJECT_ID('#EXISTING_HEPATITIS_DATAMART', 'U') IS NOT NULL +BEGIN +DROP TABLE #EXISTING_HEPATITIS_DATAMART; + +END; + +SELECT DISTINCT + investigation.investigation_key +INTO #EXISTING_HEPATITIS_DATAMART +FROM dbo.HEPATITIS_DATAMART WITH(NOLOCK) + INNER JOIN dbo.INVESTIGATION WITH(NOLOCK) ON HEPATITIS_DATAMART.[CASE_UID] = INVESTIGATION.[CASE_UID] +WHERE + INVESTIGATION.[CASE_UID] IN (SELECT value FROM STRING_SPLIT(@phc_id, ',')); + +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + + + + +-----------------------------------------------------------9. Create Table #TMP_CONDITION--------------------------------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_CONDITION'; + + SET @Proc_Step_no = 9; + + IF OBJECT_ID('#TMP_CONDITION', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_CONDITION; + +END; + +SELECT CONDITION_CD, CONDITION_DESC, DISEASE_GRP_DESC, CONDITION_KEY +INTO #TMP_CONDITION +FROM [dbo].[CONDITION] WITH(NOLOCK) +WHERE CONDITION_CD IN( '10110', '10104', '10100', '10106', '10101', '10102', '10103', '10105', '10481', '50248', '999999' ); + +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + + +---------------------------------------------------------------------10. CREATE TABLE #TMP_F_PAGE_CASE------------------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_F_PAGE_CASE'; + + SET @Proc_Step_no = 10; + + IF OBJECT_ID('#TMP_F_PAGE_CASE', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_F_PAGE_CASE; + +END; + + /* + + SELECT F_PAGE_CASE.INVESTIGATION_KEY, T.CONDITION_KEY, F_PAGE_CASE.PATIENT_KEY + INTO #TMP_F_PAGE_CASE + FROM [dbo].[F_PAGE_CASE] WITH(NOLOCK)---Original table + INNER JOIN #TMP_CONDITION AS T WITH(NOLOCK) ON F_PAGE_CASE.CONDITION_KEY = T.CONDITION_KEY ------(my table comdition) + INNER JOIN [dbo].[D_PATIENT] WITH(NOLOCK) ON F_PAGE_CASE.PATIENT_KEY = D_PATIENT.PATIENT_KEY + INNER JOIN dbo.INVESTIGATION WITH(NOLOCK) ON INVESTIGATION.INVESTIGATION_KEY = F_PAGE_CASE.INVESTIGATION_KEY + LEFT JOIN dbo.EXISTING_HEPATITIS_DATAMART WITH(NOLOCK) ON F_PAGE_CASE.INVESTIGATION_KEY = EXISTING_HEPATITIS_DATAMART.INVESTIGATION_KEY + WHERE ( EXISTING_HEPATITIS_DATAMART.INVESTIGATION_KEY IS NULL + or (INVESTIGATION.[LAST_CHG_TIME] >= @batch_start_time AND INVESTIGATION.[LAST_CHG_TIME]< @batch_end_time)) + AND INVESTIGATION.RECORD_STATUS_CD = 'ACTIVE' + ORDER BY F_PAGE_CASE.INVESTIGATION_KEY; + + */ + + +SELECT F_PAGE_CASE.INVESTIGATION_KEY, T.CONDITION_KEY, F_PAGE_CASE.PATIENT_KEY +INTO #TMP_F_PAGE_CASE +FROM [dbo].[F_PAGE_CASE] WITH(NOLOCK)---Original table + INNER JOIN #TMP_CONDITION AS T WITH(NOLOCK) ON F_PAGE_CASE.CONDITION_KEY = T.CONDITION_KEY ------(my table comdition) + INNER JOIN [dbo].[D_PATIENT] WITH(NOLOCK) ON F_PAGE_CASE.PATIENT_KEY = D_PATIENT.PATIENT_KEY + INNER JOIN dbo.INVESTIGATION WITH(NOLOCK) ON INVESTIGATION.INVESTIGATION_KEY = F_PAGE_CASE.INVESTIGATION_KEY + LEFT JOIN #EXISTING_HEPATITIS_DATAMART ehd WITH(NOLOCK) ON F_PAGE_CASE.INVESTIGATION_KEY = ehd.INVESTIGATION_KEY +WHERE ( ehd.INVESTIGATION_KEY IS NULL + or (INVESTIGATION.[CASE_UID] IN (SELECT value FROM STRING_SPLIT(@phc_id, ',')))) + AND INVESTIGATION.RECORD_STATUS_CD = 'ACTIVE' +ORDER BY F_PAGE_CASE.INVESTIGATION_KEY; + +if @debug ='true' select * from #TMP_F_PAGE_CASE; + + +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + + +---------------------------------------------------------------------11. CREATE TABLE #TMP_D_INV_ADMINISTRATIVE +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_D_INV_ADMINISTRATIVE'; + + SET @Proc_Step_no = 11; + + + IF OBJECT_ID('#TMP_F_INV_ADMINISTRATIVE', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_F_INV_ADMINISTRATIVE; + +END; + + +SELECT page_case.D_INV_ADMINISTRATIVE_KEY, page_case.INVESTIGATION_KEY +INTO #TMP_F_INV_ADMINISTRATIVE +FROM dbo.F_PAGE_CASE AS page_case WITH(NOLOCK) ----Original table + INNER JOIN #TMP_F_PAGE_CASE AS T +ON T.INVESTIGATION_KEY = PAGE_CASE.INVESTIGATION_KEY ---(My Table)--Should it be F-Page or tmp_F_Page +ORDER BY D_INV_ADMINISTRATIVE_KEY; + + + +IF OBJECT_ID('#TMP_D_INV_ADMINISTRATIVE', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_D_INV_ADMINISTRATIVE; + +END; + + +SELECT admin.* +INTO #D_INV_ADMIN_TEMP_COLS +FROM ( + SELECT CAST(NULL as varchar(300)) AS ADM_INNC_NOTIFICATION_DT, + CAST(NULL as varchar(300)) AS ADM_FIRST_RPT_TO_PHD_DT, + CAST(NULL as varchar(300)) AS ADM_BINATIONAL_RPTNG_CRIT + ) AS temp_admin_columns + CROSS APPLY + ( SELECT D_INV_ADMINISTRATIVE_KEY, + ADM_INNC_NOTIFICATION_DT, + ADM_FIRST_RPT_TO_PHD_DT, + ADM_BINATIONAL_RPTNG_CRIT + FROM dbo.D_INV_ADMINISTRATIVE + ) AS admin; + + +SELECT F.D_INV_ADMINISTRATIVE_KEY, F.INVESTIGATION_KEY AS ADMIN_INV_KEY, + ADM_INNC_NOTIFICATION_DT AS INNC_NOTIFICATION_DT, ADM_FIRST_RPT_TO_PHD_DT AS FIRST_RPT_PHD_DT, + ADM_BINATIONAL_RPTNG_CRIT AS BINATIONAL_RPTNG_CRIT +INTO #TMP_D_INV_ADMINISTRATIVE +FROM #TMP_F_INV_ADMINISTRATIVE AS F + LEFT JOIN #D_INV_ADMIN_TEMP_COLS AS D WITH(NOLOCK) ON F.D_INV_ADMINISTRATIVE_KEY = D.D_INV_ADMINISTRATIVE_KEY +; + + + +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + +-----------------------------------------------------------------------------12. CREATE TABLE TMP_D_INV_CLINICAL---------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_D_INV_CLINICAL'; + + + SET @Proc_Step_no = 12; + + + IF OBJECT_ID('#TMP_F_INV_CLINICAL', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_F_INV_CLINICAL; + +END; + + + IF OBJECT_ID('#TMP_D_INV_CLINICAL', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_D_INV_CLINICAL; + +END; + + +SELECT F_PAGE_CASE.D_INV_CLINICAL_KEY, F_PAGE_CASE.INVESTIGATION_KEY +INTO #TMP_F_INV_CLINICAL +FROM dbo.F_PAGE_CASE WITH(NOLOCK) + INNER JOIN #TMP_F_PAGE_CASE AS PAGE_CASE ON F_PAGE_CASE.INVESTIGATION_KEY = PAGE_CASE.INVESTIGATION_KEY ---(my Table) +ORDER BY D_INV_CLINICAL_KEY; + + + +SELECT F.D_INV_CLINICAL_KEY as D_INV_CLINICAL_KEY_1 , F.INVESTIGATION_KEY AS CLINICAL_INV_KEY, D.*, + cast( null as varchar(4000)) as HEP_D_INFECTION_IND, + cast( null as varchar(4000)) as HEP_MEDS_RECVD_IND +--CAST(CLN_HepDInfection AS varchar(300)) AS HEP_D_INFECTION_IND, CAST(CLN_MedsforHep AS varchar(300)) AS HEP_MEDS_RECVD_IND +INTO #TMP_D_INV_CLINICAL +FROM #TMP_F_INV_CLINICAL AS F + LEFT JOIN [dbo].[D_INV_CLINICAL] AS D WITH(NOLOCK) ON F.D_INV_CLINICAL_KEY = D.D_INV_CLINICAL_KEY +ORDER BY F.INVESTIGATION_KEY; + + +IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'CLN_HepDInfection' AND Object_ID = Object_ID(N'#TMP_D_INV_CLINICAL')) +BEGIN + --declare @sql nvarchar(100) + SET @sql = N'update #TMP_D_INV_CLINICAL set HEP_D_INFECTION_IND=RTRIM(LTRIM(CLN_HepDInfection));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'CLN_MedsforHep' AND Object_ID = Object_ID(N'#TMP_D_INV_CLINICAL')) +BEGIN + --declare @sql nvarchar(100) + SET @sql = N'update #TMP_D_INV_CLINICAL set HEP_MEDS_RECVD_IND=RTRIM(LTRIM(CLN_MedsforHep));' + execute sp_executesql @sql +END; + + + /*UPDATE #TMP_D_INV_CLINICAL + SET HEP_D_INFECTION_IND = ( CASE + WHEN HEP_D_INFECTION_IND IS NULL THEN NULL + ELSE RTRIM(LTRIM(HEP_D_INFECTION_IND)) + END ); + + UPDATE #TMP_D_INV_CLINICAL + SET HEP_MEDS_RECVD_IND = ( CASE + WHEN HEP_MEDS_RECVD_IND IS NULL THEN NULL + ELSE RTRIM(LTRIM(HEP_MEDS_RECVD_IND)) + 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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + +--------------------------------------------------------------------------------13. CREATE TABLE TMP_D_INV_PATIENT_OBS---------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_D_INV_PATIENT_OBS'; + + SET @Proc_Step_no = 13; + + IF OBJECT_ID('#TMP_D_INV_PATIENT_OBS', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_D_INV_PATIENT_OBS; + +END; + + IF OBJECT_ID('#TMP_F_INV_PATIENT_OBS', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_F_INV_PATIENT_OBS; + +END; + + +SELECT F_PAGE_CASE.D_INV_PATIENT_OBS_KEY, F_PAGE_CASE.INVESTIGATION_KEY +INTO #TMP_F_INV_PATIENT_OBS +FROM dbo.F_PAGE_CASE WITH(NOLOCK) + INNER JOIN #TMP_F_PAGE_CASE AS PAGE_CASE +ON F_PAGE_CASE.INVESTIGATION_KEY = PAGE_CASE.INVESTIGATION_KEY ---(my table) +ORDER BY D_INV_PATIENT_OBS_KEY; + +SELECT pat_obs.* +INTO #D_INV_PAT_OBS_TEMP_COLS +FROM ( + SELECT NULL AS IPO_SEXUAL_PREF + ) AS temp_pat_obs_columns + CROSS APPLY + ( SELECT D_INV_PATIENT_OBS_KEY, + IPO_SEXUAL_PREF + FROM dbo.D_INV_PATIENT_OBS + ) AS pat_obs; + +SELECT F.D_INV_PATIENT_OBS_KEY, F.INVESTIGATION_KEY AS PATIENT_OBS_INV_KEY, D.IPO_SEXUAL_PREF, CAST(null AS varchar(300)) AS SEX_PREF +INTO #TMP_D_INV_PATIENT_OBS +FROM #TMP_F_INV_PATIENT_OBS AS F + LEFT JOIN #D_INV_PAT_OBS_TEMP_COLS AS D WITH(NOLOCK) ON F.D_INV_PATIENT_OBS_KEY = D.D_INV_PATIENT_OBS_KEY +ORDER BY F.INVESTIGATION_KEY; + + +IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'IPO_SEXUAL_PREF' AND Object_ID = Object_ID(N'#TMP_D_INV_PATIENT_OBS')) +BEGIN + --declare @sql nvarchar(100) + SET @sql = N'update #TMP_D_INV_PATIENT_OBS set SEX_PREF=RTRIM(LTRIM(IPO_SEXUAL_PREF));' + execute sp_executesql @sql +END; + + + /*UPDATE #TMP_D_INV_PATIENT_OBS + SET SEX_PREF = ( CASE + WHEN SEX_PREF IS NULL THEN NULL + ELSE RTRIM(LTRIM(SEX_PREF)) + 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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + +--------------------------------------------------------------------------------14. CREATE TABLE TMP_D_INV_EPIDEMIOLOGY---------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_D_INV_EPIDEMIOLOGY'; + + SET @Proc_Step_no = 14; + + IF OBJECT_ID('#TMP_F_INV_EPIDEMIOLOGY', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_F_INV_EPIDEMIOLOGY; + +END; + + IF OBJECT_ID('#TMP_D_INV_EPIDEMIOLOGY', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_D_INV_EPIDEMIOLOGY; + +END; + + + +SELECT F_PAGE_CASE.[D_INV_EPIDEMIOLOGY_KEY], F_PAGE_CASE.[INVESTIGATION_KEY] +INTO #TMP_F_INV_EPIDEMIOLOGY +FROM dbo.F_PAGE_CASE WITH(NOLOCK) + INNER JOIN #TMP_F_PAGE_CASE AS PAGE_CASE ON F_PAGE_CASE.INVESTIGATION_KEY = PAGE_CASE.INVESTIGATION_KEY ---(my table) +ORDER BY D_INV_EPIDEMIOLOGY_KEY; + + +SELECT F.D_INV_EPIDEMIOLOGY_KEY as D_INV_EPIDEMIOLOGY_KEY1, F.INVESTIGATION_KEY AS EPIDEMIOLOGY_INV_KEY, D.*, + CAST( null AS varchar(2000)) AS CHILDCARE_CASE_IND, ----1 + CAST( null AS varchar(2000)) AS CNTRY_USUAL_RESIDENCE, --2 + CAST( null AS varchar(2000)) AS CT_BABYSITTER_IND, ----3 + CAST( null AS varchar(2000)) AS CT_CHILDCARE_IND, --4 + CAST( null AS varchar(2000)) AS CT_HOUSEHOLD_IND, --5 + CAST( null AS varchar(2000)) AS HEP_CONTACT_IND, ----6 + CAST( null AS varchar(2000)) AS OTHER_CONTACT_IND, -----7 + CAST( null AS varchar(2000)) AS CONTACT_TYPE_OTH, --8 + CAST( null AS varchar(2000)) AS CT_PLAYMATE_IND, ----9 + CAST( null AS varchar(2000)) AS SEXUAL_PARTNER_IND, ---10 + CAST( null AS varchar(2000)) AS DNP_HOUSEHOLD_CT_IND, -----11 + CAST( null AS varchar(2000)) AS HEP_A_EPLINK_IND, ----------12 + CAST( null AS varchar(2000)) AS FEMALE_SEX_PRTNR_NBR, ------13 + CAST( null AS varchar(2000)) AS FOODHNDLR_PRIOR_IND, ------14 + CAST( null AS varchar(2000)) AS DNP_EMPLOYEE_IND, ----------15 + CAST( null AS varchar(2000)) AS STREET_DRUG_INJECTED, ------16 + CAST( null AS varchar(2000)) AS MALE_SEX_PRTNR_NBR, -------17 + --- EPI_OutbreakAssoc, ---OUTBREAK_IND-----18 + CAST( null AS varchar(2000)) AS OBRK_FOODHNDLR_IND, -------19 + CAST( null AS varchar(2000)) AS FOOD_OBRK_FOOD_ITEM, ------20 + CAST( null AS varchar(2000)) AS OBRK_NOFOODHNDLR_IND, -----21 + CAST( null AS varchar(2000)) AS OBRK_UNIDENTIFIED_IND, ----22 + CAST( null AS varchar(2000)) AS OBRK_WATERBORNE_IND, -----23 + CAST( null AS varchar(2000)) AS STREET_DRUG_USED, ----24 + CAST( null AS varchar(2000)) AS COM_SRC_OUTBREAK_IND ----25 +INTO #TMP_D_INV_EPIDEMIOLOGY +FROM #TMP_F_INV_EPIDEMIOLOGY AS F + LEFT JOIN [dbo].[D_INV_EPIDEMIOLOGY] AS D WITH(NOLOCK) ON F.D_INV_EPIDEMIOLOGY_KEY = D.D_INV_EPIDEMIOLOGY_KEY +ORDER BY F.INVESTIGATION_KEY; + + +-- declare @sql nvarchar(100) + +IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_OutbreakAssoc' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set COM_SRC_OUTBREAK_IND=RTRIM(LTRIM(EPI_OutbreakAssoc));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_ChildCareCase' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set CHILDCARE_CASE_IND = RTRIM(LTRIM(EPI_ChildCareCase));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_CNTRY_USUAL_RESID' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set CNTRY_USUAL_RESIDENCE = RTRIM(LTRIM(EPI_CNTRY_USUAL_RESID));' + execute sp_executesql @sql +END; + + + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_ContactBabysitter' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set CT_BABYSITTER_IND = RTRIM(LTRIM(EPI_ContactBabysitter));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_ContactChildcare' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set CT_CHILDCARE_IND = RTRIM(LTRIM(EPI_ContactChildcare));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_ContactHousehold' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set CT_HOUSEHOLD_IND = RTRIM(LTRIM(EPI_ContactHousehold));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_ContactOfCase' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set HEP_CONTACT_IND = RTRIM(LTRIM(EPI_ContactOfCase));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_ContactOther' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set OTHER_CONTACT_IND = RTRIM(LTRIM(EPI_ContactOther));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_ContactOthSpecify' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set CONTACT_TYPE_OTH = RTRIM(LTRIM(EPI_ContactOthSpecify));' + execute sp_executesql @sql +END; + + + -- declare @sql nvarchar(2000) + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_ContactPlaymate' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set CT_PLAYMATE_IND = RTRIM(LTRIM(EPI_ContactPlaymate));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_ContactSexPartner' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set SEXUAL_PARTNER_IND = RTRIM(LTRIM(EPI_ContactSexPartner));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_DaycareContact' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set DNP_HOUSEHOLD_CT_IND = RTRIM(LTRIM(EPI_DaycareContact));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_EpiLinked' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set HEP_A_EPLINK_IND = RTRIM(LTRIM(EPI_EpiLinked));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_FemaleSexPartners' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set FEMALE_SEX_PRTNR_NBR = (EPI_FemaleSexPartners);' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_FoodHandler' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set FOODHNDLR_PRIOR_IND = RTRIM(LTRIM(EPI_FoodHandler));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_InDayCare' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set DNP_EMPLOYEE_IND = RTRIM(LTRIM(EPI_InDayCare));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_IVDrugUse' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set STREET_DRUG_INJECTED = RTRIM(LTRIM(EPI_IVDrugUse));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_MaleSexPartner' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set MALE_SEX_PRTNR_NBR = RTRIM(LTRIM(EPI_MaleSexPartner));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_OutbreakFoodHndlr' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set OBRK_FOODHNDLR_IND = RTRIM(LTRIM(EPI_OutbreakFoodHndlr));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_OutbreakFoodItem' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set FOOD_OBRK_FOOD_ITEM = RTRIM(LTRIM(EPI_OutbreakFoodItem));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_outbreakNonFoodHndlr' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set OBRK_NOFOODHNDLR_IND = RTRIM(LTRIM(EPI_outbreakNonFoodHndlr));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_OutbreakUnidentified' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set OBRK_UNIDENTIFIED_IND = RTRIM(LTRIM(EPI_OutbreakUnidentified));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_OutbreakWaterborne' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set OBRK_WATERBORNE_IND = RTRIM(LTRIM(EPI_OutbreakWaterborne));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_RecDrugUse' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set STREET_DRUG_USED = RTRIM(LTRIM(EPI_RecDrugUse));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'EPI_OutbreakAssoc' AND Object_ID = Object_ID(N'#TMP_D_INV_EPIDEMIOLOGY')) +BEGIN + SET @sql = N'update #TMP_D_INV_EPIDEMIOLOGY set COM_SRC_OUTBREAK_IND = RTRIM(LTRIM(EPI_OutbreakAssoc));' + execute sp_executesql @sql +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + +--------------------------------------------------------------------------------------15. CREATE TABLE dbo.D_INV_LAB_FINDING_TMP---------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_D_INV_LAB_FINDING'; + + SET @Proc_Step_no = 15; + + + IF OBJECT_ID('#TMP_F_INV_LAB_FINDING', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_F_INV_LAB_FINDING; + +END; + + + IF OBJECT_ID('#TMP_D_INV_LAB_FINDING', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_D_INV_LAB_FINDING; + +END; + + +SELECT F_PAGE_CASE.[D_INV_LAB_FINDING_KEY], F_PAGE_CASE.[INVESTIGATION_KEY] +INTO #TMP_F_INV_LAB_FINDING +FROM dbo.F_PAGE_CASE WITH(NOLOCK) + INNER JOIN + #TMP_F_PAGE_CASE AS PAGE_CASE +ON F_PAGE_CASE.INVESTIGATION_KEY = PAGE_CASE.INVESTIGATION_KEY---(my table) +; + + +SELECT F.[D_INV_LAB_FINDING_KEY] as D_INV_LAB_FINDING_KEY1, F.[INVESTIGATION_KEY] AS LAB_INV_KEY,D.*, + CAST( null AS varchar(2000)) AS HEP_C_TOTAL_ANTIBODY, ---1 + CAST( null AS date) AS SUPP_ANTI_HCV_DT, ------2 + CAST( null AS varchar(2000)) AS ALT_SGPT_RESULT, ---3 + CAST( null AS varchar(2000)) AS ANTI_HBS_POS_REAC_IND, ---4 + CAST( null AS varchar(2000)) AS ANTI_HBSAG_TESTED_IND, ----5 + CAST( null AS varchar(2000)) AS AST_SGOT_RESULT, ---6 + CAST( null AS varchar(2000)) AS HEP_E_ANTIGEN, ---7 + CAST( null AS date) AS HBE_AG_DT, ---8 + CAST( null AS varchar(2000)) AS HEP_B_SURFACE_ANTIGEN, --9 + CAST( null AS date) AS HBS_AG_DT, --10 + CAST( null AS varchar(2000)) AS HEP_B_DNA, -----11 + CAST( null AS date) AS HBV_NAT_DT, ---12 + CAST( null AS varchar(2000)) AS HCV_RNA, ---13 + CAST( null AS date) AS HCV_RNA_DT, ---14 + CAST( null AS varchar(2000)) AS HEP_D_TEST_IND, -----15 + CAST( null AS varchar(2000)) AS HEP_A_IGM_ANTIBODY, ---16 + CAST( null AS date) AS IGM_ANTI_HAV_DT, ---17 + CAST( null AS varchar(2000)) AS HEP_B_IGM_ANTIBODY, ---18 + CAST( null AS date) AS IGM_ANTI_HBC_DT, ---19 + CAST( null AS varchar(2000)) AS PREV_NEG_HEP_TEST_IND, --20 + CAST( null AS varchar(2000)) AS ANTIHCV_SIGCUT_RATIO, ---21 + CAST( null AS varchar(2000)) AS ANTIHCV_SUPP_ASSAY, ---22 + CAST( null AS date) AS ALT_RESULT_DT, -----23 + CAST( null AS date) AS AST_RESULT_DT, ---24 + CAST( null AS varchar(2000)) AS ALT_SGPT_RSLT_UP_LMT, ---25 + CAST( null AS varchar(2000)) AS AST_SGOT_RSLT_UP_LMT, ---26 + CAST( null AS varchar(2000)) AS HEP_A_TOTAL_ANTIBODY, ---27 + CAST( null AS date) AS TOTAL_ANTI_HAV_DT, ---28 + CAST( null AS varchar(2000)) AS HEP_B_TOTAL_ANTIBODY, ---29 + CAST( null AS date) AS TOTAL_ANTI_HBC_DT, ----30 + CAST( null AS date) AS TOTAL_ANTI_HCV_DT, --31 + CAST( null AS varchar(2000)) AS HEP_D_TOTAL_ANTIBODY, ---32 + CAST( null AS date) AS TOTAL_ANTI_HDV_DT, ---33 + CAST( null AS varchar(2000)) AS HEP_E_TOTAL_ANTIBODY, ---34 + CAST( null AS date) AS TOTAL_ANTI_HEV_DT, ---35 + CAST( null AS date) AS VERIFIED_TEST_DT ---36 +INTO #TMP_D_INV_LAB_FINDING +FROM #TMP_F_INV_LAB_FINDING AS F + LEFT JOIN + [dbo].[D_INV_LAB_FINDING] AS D WITH(NOLOCK) +ON F.D_INV_LAB_FINDING_KEY = D.D_INV_LAB_FINDING_KEY +; + + + +IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_TotalAntiHCV' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set HEP_C_TOTAL_ANTIBODY = RTRIM(LTRIM(LAB_TotalAntiHCV));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_Supplem_antiHCV_Date' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set SUPP_ANTI_HCV_DT = (LAB_Supplem_antiHCV_Date);' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_ALT_Result' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set ALT_SGPT_RESULT = RTRIM(LTRIM(LAB_ALT_Result));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_AntiHBsPositive' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set ANTI_HBS_POS_REAC_IND = RTRIM(LTRIM(LAB_AntiHBsPositive));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_AntiHBsTested' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set ANTI_HBSAG_TESTED_IND = RTRIM(LTRIM(LAB_AntiHBsTested));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_AST_Result' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set AST_SGOT_RESULT = RTRIM(LTRIM(LAB_AST_Result));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_HBeAg' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set HEP_E_ANTIGEN = RTRIM(LTRIM(LAB_HBeAg));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_HBeAg_Date' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set HBE_AG_DT = (LAB_HBeAg_Date);' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_HBsAg' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set HEP_B_SURFACE_ANTIGEN = RTRIM(LTRIM(LAB_HBsAg));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_HBsAg_Date' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set HBS_AG_DT = (LAB_HBsAg_Date);' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_HBV_NAT' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set HEP_B_DNA = RTRIM(LTRIM(LAB_HBV_NAT));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_HBV_NAT_Date' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set HBV_NAT_DT = (LAB_HBV_NAT_Date);' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_HCVRNA' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set HCV_RNA = RTRIM(LTRIM(LAB_HCVRNA));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_HCVRNA_Date' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set HCV_RNA_DT = (LAB_HCVRNA_Date);' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_HepDTest' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set HEP_D_TEST_IND = RTRIM(LTRIM(LAB_HepDTest));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_IgM_AntiHAV' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set HEP_A_IGM_ANTIBODY = RTRIM(LTRIM(LAB_IgM_AntiHAV));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_IgMAntiHAVDate' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set IGM_ANTI_HAV_DT = (LAB_IgMAntiHAVDate);' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_IgMAntiHBc' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set HEP_B_IGM_ANTIBODY = RTRIM(LTRIM(LAB_IgMAntiHBc));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_IgMAntiHBcDate' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set IGM_ANTI_HBC_DT = (LAB_IgMAntiHBcDate);' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_PrevNegHepTest' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set PREV_NEG_HEP_TEST_IND = RTRIM(LTRIM(LAB_PrevNegHepTest));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_SignalToCutoff' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set ANTIHCV_SIGCUT_RATIO = RTRIM(LTRIM(LAB_SignalToCutoff));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_Supplem_antiHCV' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set ANTIHCV_SUPP_ASSAY = RTRIM(LTRIM(LAB_Supplem_antiHCV));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_TestDate' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set ALT_RESULT_DT = (LAB_TestDate);' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_TestDate2' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set AST_RESULT_DT = (LAB_TestDate2);' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_TestResultUpperLimit' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set ALT_SGPT_RSLT_UP_LMT = RTRIM(LTRIM(LAB_TestResultUpperLimit));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_TestResultUpperLimit2' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set AST_SGOT_RSLT_UP_LMT = RTRIM(LTRIM(LAB_TestResultUpperLimit2));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_TotalAntiHAV' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set HEP_A_TOTAL_ANTIBODY = RTRIM(LTRIM(LAB_TotalAntiHAV));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_TotalAntiHAVDate' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set TOTAL_ANTI_HAV_DT = (LAB_TotalAntiHAVDate);' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_TotalAntiHBc' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set HEP_B_TOTAL_ANTIBODY = RTRIM(LTRIM(LAB_TotalAntiHBc));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_TotalAntiHBcDate' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set TOTAL_ANTI_HBC_DT = (LAB_TotalAntiHBcDate);' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_TotalAntiHCV_Date' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set TOTAL_ANTI_HCV_DT = (LAB_TotalAntiHCV_Date);' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_TotalAntiHDV' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set HEP_D_TOTAL_ANTIBODY = RTRIM(LTRIM(LAB_TotalAntiHDV));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_TotalAntiHDV_Date' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set TOTAL_ANTI_HDV_DT = (LAB_TotalAntiHDV_Date);' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_TotalAntiHEV' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set HEP_E_TOTAL_ANTIBODY = RTRIM(LTRIM(LAB_TotalAntiHEV));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_TotalAntiHEV_Date' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set TOTAL_ANTI_HEV_DT = (LAB_TotalAntiHEV_Date);' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'LAB_VerifiedTestDate' AND Object_ID = Object_ID(N'#TMP_D_INV_LAB_FINDING')) +BEGIN + SET @sql = N'update #TMP_D_INV_LAB_FINDING set VERIFIED_TEST_DT = (LAB_VerifiedTestDate);' + execute sp_executesql @sql +END; + + + /* + CAST(LAB_TotalAntiHCV_Date AS date) AS TOTAL_ANTI_HCV_DT, --31 + CAST(LAB_TotalAntiHDV AS varchar(300)) AS HEP_D_TOTAL_ANTIBODY, ---32 + CAST(LAB_TotalAntiHDV_Date AS date) AS TOTAL_ANTI_HDV_DT, ---33 + CAST(LAB_TotalAntiHEV AS varchar(300)) AS HEP_E_TOTAL_ANTIBODY, ---34 + CAST(LAB_TotalAntiHEV_Date AS date) AS TOTAL_ANTI_HEV_DT, ---35 + CAST(LAB_VerifiedTestDate AS date) AS VERIFIED_TEST_DT ---36 + + */ + + +/* UPDATE #TMP_D_INV_LAB_FINDING SET HEP_C_TOTAL_ANTIBODY = Case when HEP_C_TOTAL_ANTIBODY is null then null Else RTRIM(LTRIM(HEP_C_TOTAL_ANTIBODY)) end; + +----1 + UPDATE #TMP_D_INV_LAB_FINDING SET ANTI_HBS_POS_REAC_IND = Case when ANTI_HBS_POS_REAC_IND is null then null Else RTRIM(LTRIM(ANTI_HBS_POS_REAC_IND)) end; + +----4 + UPDATE #TMP_D_INV_LAB_FINDING SET ANTI_HBSAG_TESTED_IND = Case when ANTI_HBSAG_TESTED_IND is null then null Else RTRIM(LTRIM(ANTI_HBSAG_TESTED_IND)) end; + +---5 + UPDATE #TMP_D_INV_LAB_FINDING SET HEP_E_ANTIGEN = Case when HEP_E_ANTIGEN is null then null Else RTRIM(LTRIM(HEP_E_ANTIGEN)) end; + +----7 + UPDATE #TMP_D_INV_LAB_FINDING SET HEP_B_SURFACE_ANTIGEN = Case when HEP_B_SURFACE_ANTIGEN is null then null Else RTRIM(LTRIM(HEP_B_SURFACE_ANTIGEN )) end; + +----9 + ----UPDATE #TMP_D_INV_LAB_FINDING SET HBS_AG_DT = LAB_HBsAg_Date; + +-----------------------10 + UPDATE #TMP_D_INV_LAB_FINDING SET HEP_B_DNA = Case when HEP_B_DNA is null then null Else RTRIM(LTRIM(HEP_B_DNA )) end; + +---11 + UPDATE #TMP_D_INV_LAB_FINDING SET HCV_RNA = Case when HCV_RNA is null then null Else RTRIM(LTRIM(HCV_RNA)) end; + +------13 + UPDATE #TMP_D_INV_LAB_FINDING SET HEP_D_TEST_IND = Case when HEP_D_TEST_IND is null then null Else RTRIM(LTRIM(HEP_D_TEST_IND)) end; + +----15 + UPDATE #TMP_D_INV_LAB_FINDING SET HEP_A_IGM_ANTIBODY = Case when HEP_A_IGM_ANTIBODY is null then null Else RTRIM(LTRIM(HEP_A_IGM_ANTIBODY)) end; + +---16 + UPDATE #TMP_D_INV_LAB_FINDING SET HEP_B_IGM_ANTIBODY = Case when HEP_B_IGM_ANTIBODY is null then null Else RTRIM(LTRIM(HEP_B_IGM_ANTIBODY)) end; + +----18 + UPDATE #TMP_D_INV_LAB_FINDING SET PREV_NEG_HEP_TEST_IND= Case when PREV_NEG_HEP_TEST_IND is null then null Else RTRIM(LTRIM(PREV_NEG_HEP_TEST_IND)) end; + +---20 + UPDATE #TMP_D_INV_LAB_FINDING SET ANTIHCV_SIGCUT_RATIO = Case when ANTIHCV_SIGCUT_RATIO is null then null Else RTRIM(LTRIM(ANTIHCV_SIGCUT_RATIO)) end; + +----21 + UPDATE #TMP_D_INV_LAB_FINDING SET ANTIHCV_SUPP_ASSAY = Case when ANTIHCV_SUPP_ASSAY is null then null Else RTRIM(LTRIM(ANTIHCV_SUPP_ASSAY )) end; + +----22 + UPDATE #TMP_D_INV_LAB_FINDING SET HEP_A_TOTAL_ANTIBODY = Case when HEP_A_TOTAL_ANTIBODY is null then null Else RTRIM(LTRIM(HEP_A_TOTAL_ANTIBODY)) end; + +----27 + UPDATE #TMP_D_INV_LAB_FINDING SET HEP_B_TOTAL_ANTIBODY = Case when HEP_B_TOTAL_ANTIBODY is null then null Else RTRIM(LTRIM(HEP_B_TOTAL_ANTIBODY )) end; + +----29 + UPDATE #TMP_D_INV_LAB_FINDING SET HEP_D_TOTAL_ANTIBODY = Case when HEP_D_TOTAL_ANTIBODY is null then null Else RTRIM(LTRIM(HEP_D_TOTAL_ANTIBODY)) end; + +----32 + UPDATE #TMP_D_INV_LAB_FINDING SET HEP_E_TOTAL_ANTIBODY = Case when HEP_E_TOTAL_ANTIBODY is null then null Else RTRIM(LTRIM(HEP_E_TOTAL_ANTIBODY)) end; + +----34 + */ +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + +---------------------------------------------------------------------------------------16. CREATE TABLE TMP_D_INV_MEDICAL_HISTORY---------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_D_INV_MEDICAL_HISTORY'; + + SET @Proc_Step_no = 16; + + IF OBJECT_ID('#TMP_F_INV_MEDICAL_HISTORY', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_F_INV_MEDICAL_HISTORY; + +END; + + IF OBJECT_ID('#TMP_D_INV_MEDICAL_HISTORY', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_D_INV_MEDICAL_HISTORY; + +END; + +SELECT F_PAGE_CASE.D_INV_MEDICAL_HISTORY_KEY, F_PAGE_CASE.[INVESTIGATION_KEY] +INTO #TMP_F_INV_MEDICAL_HISTORY +FROM dbo.F_PAGE_CASE WITH(NOLOCK) + INNER JOIN #TMP_F_PAGE_CASE AS PAGE_CASE ON F_PAGE_CASE.INVESTIGATION_KEY = PAGE_CASE.INVESTIGATION_KEY---(my table) +ORDER BY D_INV_MEDICAL_HISTORY_KEY; + +SELECT med_history.* +INTO #D_INV_MED_HIST_TEMP_COLS +FROM ( + SELECT CAST( NULL AS date) AS MDH_DiabetesDxDate, + NULL AS MDH_Diabetes, + NULL AS MDH_Jaundiced, + NULL AS MDH_PrevAwareInfection, + NULL AS MDH_ProviderOfCare, + NULL AS MDH_ReasonForTest, + NULL AS MDH_ReasonForTestingOth, + NULL AS MDH_Symptomatic, + CAST( NULL AS date) AS MDH_DueDate + ) AS temp_med_history_columns + CROSS APPLY + ( SELECT D_INV_MEDICAL_HISTORY_KEY, + MDH_DiabetesDxDate, + MDH_Diabetes, + MDH_Jaundiced, + MDH_PrevAwareInfection, + MDH_ProviderOfCare, + MDH_ReasonForTest, + MDH_ReasonForTestingOth, + MDH_Symptomatic, + MDH_DueDate + FROM dbo.D_INV_MEDICAL_HISTORY + ) AS med_history; + + +SELECT F.D_INV_MEDICAL_HISTORY_KEY, F.INVESTIGATION_KEY AS MEDHistory_INV_KEY, + CAST(MDH_DiabetesDxDate AS date) AS DIABETES_DX_DT, + CAST(MDH_Diabetes AS [varchar](300)) AS DIABETES_IND, + CAST(MDH_Jaundiced AS [varchar](300)) AS PAT_JUNDICED_IND, + CAST(MDH_PrevAwareInfection AS [varchar](300)) AS PAT_PREV_AWARE_IND, + CAST(MDH_ProviderOfCare AS [varchar](300)) AS HEP_CARE_PROVIDER, + CAST(MDH_ReasonForTest AS [varchar](300)) AS TEST_REASON, + CAST(MDH_ReasonForTestingOth AS [varchar](300)) AS TEST_REASON_OTH, + CAST(MDH_Symptomatic AS [varchar](300)) AS SYMPTOMATIC_IND, + CAST(MDH_DueDate AS date) AS PREGNANCY_DUE_DT +INTO #TMP_D_INV_MEDICAL_HISTORY +FROM #TMP_F_INV_MEDICAL_HISTORY AS F + LEFT JOIN #D_INV_MED_HIST_TEMP_COLS AS D WITH(NOLOCK) ON F.D_INV_MEDICAL_HISTORY_KEY = D.D_INV_MEDICAL_HISTORY_KEY +ORDER BY F.INVESTIGATION_KEY; + + +--UPDATE #TMP_D_INV_MEDICAL_HISTORY SET DIABETES_DX_DT = MDH_DiabetesDxDate ; + +----1 +/*UPDATE #TMP_D_INV_MEDICAL_HISTORY SET DIABETES_IND = CASE WHEN DIABETES_IND is null then null else RTRIM(LTRIM(DIABETES_IND)) END; + +----2 + UPDATE #TMP_D_INV_MEDICAL_HISTORY SET PAT_JUNDICED_IND = CASE WHEN PAT_JUNDICED_IND is null then null else RTRIM(LTRIM(PAT_JUNDICED_IND)) END; + +---3 + UPDATE #TMP_D_INV_MEDICAL_HISTORY SET PAT_PREV_AWARE_IND = CASE WHEN PAT_PREV_AWARE_IND is null then null else RTRIM(LTRIM(PAT_PREV_AWARE_IND)) END; + +---4 + UPDATE #TMP_D_INV_MEDICAL_HISTORY SET HEP_CARE_PROVIDER = CASE WHEN HEP_CARE_PROVIDER is null then null else RTRIM(LTRIM(HEP_CARE_PROVIDER)) END; + +---5 + + UPDATE #TMP_D_INV_MEDICAL_HISTORY SET TEST_REASON = CASE WHEN TEST_REASON is null then Null else RTRIM(LTRIM(TEST_REASON)) END; + +---6 + UPDATE #TMP_D_INV_MEDICAL_HISTORY SET TEST_REASON_OTH = CASE WHEN TEST_REASON_OTH is null then null else RTRIM(LTRIM( TEST_REASON_OTH)) END; + +---7 + UPDATE #TMP_D_INV_MEDICAL_HISTORY SET SYMPTOMATIC_IND = CASE WHEN SYMPTOMATIC_IND is null then null else RTRIM(LTRIM(SYMPTOMATIC_IND )) END; + +---8 + */ +--UPDATE #TMP_D_INV_MEDICAL_HISTORY SET PREGNANCY_DUE_DT=MDH_DueDate +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + + +---------------------------------------------------------------------------------17. CREATE TABLE TMP.D_INV_MOTHER------------------------------------------------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_D_INV_MOTHER'; + + SET @Proc_Step_no = 17; + + IF OBJECT_ID('#TMP_F_INV_MOTHER', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_F_INV_MOTHER; + +END; + + IF OBJECT_ID('#TMP_D_INV_MOTHER', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_D_INV_MOTHER; + +END; + + +SELECT F_PAGE_CASE.D_INV_MOTHER_KEY, F_PAGE_CASE.INVESTIGATION_KEY +INTO #TMP_F_INV_MOTHER +FROM dbo.F_PAGE_CASE WITH(NOLOCK) + INNER JOIN + #TMP_F_PAGE_CASE AS PAGE_CASE +ON F_PAGE_CASE.INVESTIGATION_KEY = PAGE_CASE.INVESTIGATION_KEY---(my table) +ORDER BY D_INV_MOTHER_KEY; + +SELECT mother.* +INTO #D_INV_MOTHER_TEMP_COLS +FROM ( + SELECT NULL AS MTH_MotherBornOutsideUS, + NULL AS MTH_MotherEthnicity, + NULL AS MTH_MotherHBsAgPosPrior, + NULL AS MTH_MotherPositiveAfter, + NULL AS MTH_MotherRace, + NULL AS MTH_MothersBirthCountry, + CAST( NULL AS date) AS MTH_MotherPosTestDate + ) AS temp_med_mother_columns + CROSS APPLY + ( SELECT D_INV_MOTHER_KEY, + MTH_MotherBornOutsideUS, + MTH_MotherEthnicity, + MTH_MotherHBsAgPosPrior, + MTH_MotherPositiveAfter, + MTH_MotherRace, + MTH_MothersBirthCountry, + MTH_MotherPosTestDate + FROM dbo.D_INV_MOTHER + ) AS mother; + + + +/* + ---changed it like this on 10/1/2021 +declare @SQL1 varchar(4000) +set @SQL1='SELECT F.D_INV_MOTHER_KEY D_INV_MOTHER_KEY1, F.INVESTIGATION_KEY AS MOTHER_INV_KEY, D.*, + CAST( null AS varchar(2000)) AS MTH_BORN_OUTSIDE_US, + CAST( null AS varchar(2000)) AS MTH_ETHNICITY, + CAST( null AS varchar(2000)) AS MTH_HBS_AG_PRIOR_POS, + CAST( null AS varchar(2000)) AS MTH_POS_AFTER, + CAST( null AS varchar(2000)) AS MTH_RACE, + CAST( null AS varchar(2000)) AS MTH_BIRTH_COUNTRY, + CAST( null AS date) AS MTH_POS_TEST_DT +INTO #TMP_D_INV_MOTHER +FROM #TMP_F_INV_MOTHER AS F + LEFT JOIN + [dbo].[D_INV_MOTHER] AS D WITH(NOLOCK) + ON F.D_INV_MOTHER_KEY = D.D_INV_MOTHER_KEY + ORDER BY F.INVESTIGATION_KEY'; + + + exec (@SQL1); + */ + +SELECT F.D_INV_MOTHER_KEY D_INV_MOTHER_KEY1, F.INVESTIGATION_KEY AS MOTHER_INV_KEY, D.*, + CAST( null AS varchar(2000)) AS MTH_BORN_OUTSIDE_US, + CAST( null AS varchar(2000)) AS MTH_ETHNICITY, + CAST( null AS varchar(2000)) AS MTH_HBS_AG_PRIOR_POS, + CAST( null AS varchar(2000)) AS MTH_POS_AFTER, + CAST( null AS varchar(2000)) AS MTH_RACE, + CAST( null AS varchar(2000)) AS MTH_BIRTH_COUNTRY, + CAST( null AS date) AS MTH_POS_TEST_DT +INTO #TMP_D_INV_MOTHER +FROM #TMP_F_INV_MOTHER AS F + LEFT JOIN #D_INV_MOTHER_TEMP_COLS AS D WITH(NOLOCK) ON F.D_INV_MOTHER_KEY = D.D_INV_MOTHER_KEY +ORDER BY F.INVESTIGATION_KEY; + + + + +/* + CAST(MTH_MotherBornOutsideUS AS varchar(300)) AS MTH_BORN_OUTSIDE_US, + CAST(MTH_MotherEthnicity AS varchar(300)) AS MTH_ETHNICITY, + CAST(MTH_MotherHBsAgPosPrior AS varchar(300)) AS MTH_HBS_AG_PRIOR_POS, + CAST(MTH_MotherPositiveAfter AS varchar(300)) AS MTH_POS_AFTER, + CAST(MTH_MotherRace AS varchar(300)) AS MTH_RACE, + CAST(MTH_MothersBirthCountry AS varchar(300)) AS MTH_BIRTH_COUNTRY, + CAST(MTH_MotherPosTestDate AS date) AS MTH_POS_TEST_DT +*/ + +IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'MTH_MotherBornOutsideUS' AND Object_ID = Object_ID(N'#TMP_D_INV_MOTHER')) +BEGIN + SET @sql = N'update #TMP_D_INV_MOTHER set MTH_BORN_OUTSIDE_US = RTRIM(LTRIM(MTH_MotherBornOutsideUS));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'MTH_MotherEthnicity' AND Object_ID = Object_ID(N'#TMP_D_INV_MOTHER')) +BEGIN + SET @sql = N'update #TMP_D_INV_MOTHER set MTH_ETHNICITY = RTRIM(LTRIM(MTH_MotherEthnicity));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'MTH_MotherHBsAgPosPrior' AND Object_ID = Object_ID(N'#TMP_D_INV_MOTHER')) +BEGIN + SET @sql = N'update #TMP_D_INV_MOTHER set MTH_HBS_AG_PRIOR_POS = RTRIM(LTRIM(MTH_MotherHBsAgPosPrior));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'MTH_MotherPositiveAfter' AND Object_ID = Object_ID(N'#TMP_D_INV_MOTHER')) +BEGIN + SET @sql = N'update #TMP_D_INV_MOTHER set MTH_POS_AFTER = RTRIM(LTRIM(MTH_MotherPositiveAfter));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'MTH_MotherRace' AND Object_ID = Object_ID(N'#TMP_D_INV_MOTHER')) +BEGIN + SET @sql = N'update #TMP_D_INV_MOTHER set MTH_RACE = RTRIM(LTRIM(MTH_MotherRace));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'MTH_MothersBirthCountry' AND Object_ID = Object_ID(N'#TMP_D_INV_MOTHER')) +BEGIN + SET @sql = N'update #TMP_D_INV_MOTHER set MTH_BIRTH_COUNTRY = RTRIM(LTRIM(MTH_MothersBirthCountry));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'MTH_MotherPosTestDate' AND Object_ID = Object_ID(N'#TMP_D_INV_MOTHER')) +BEGIN + SET @sql = N'update #TMP_D_INV_MOTHER set MTH_POS_TEST_DT = (MTH_MotherPosTestDate);' + execute sp_executesql @sql +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + +----------------------------------------------------------------------------------18. CREATE TABLE TMP_D_INV_RISK_FACTOR--------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_D_INV_RISK_FACTOR'; + + SET @Proc_Step_no = 18; + + IF OBJECT_ID('#TMP_F_INV_RISK_FACTOR', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_F_INV_RISK_FACTOR; + +END; + + IF OBJECT_ID('#TMP_D_INV_RISK_FACTOR', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_D_INV_RISK_FACTOR; + +END; + +SELECT F_PAGE_CASE.D_INV_RISK_FACTOR_KEY, F_PAGE_CASE.INVESTIGATION_KEY +INTO #TMP_F_INV_RISK_FACTOR +FROM dbo.F_PAGE_CASE WITH(NOLOCK) + INNER JOIN + #TMP_F_PAGE_CASE AS PAGE_CASE ON F_PAGE_CASE.INVESTIGATION_KEY = PAGE_CASE.INVESTIGATION_KEY ---(my table) +ORDER BY D_INV_RISK_FACTOR_KEY; + + +SELECT F.D_INV_RISK_FACTOR_KEY D_INV_RISK_FACTOR_KEY1, F.INVESTIGATION_KEY AS RISK_INV_KEY, D.*, + CAST( null AS varchar(300)) AS BLD_EXPOSURE_IND, ---1 + CAST( NULL AS varchar(1000)) AS BLD_RECVD_IND, ----2 + CAST( null AS date) AS BLD_RECVD_DT, ---3 + CAST( NULL AS varchar(1000)) AS MED_DEN_BLD_CT_FRQ, ---4 + CAST( NULL AS varchar(1000)) AS MED_DEN_EMP_EVER_IND, ---5 + CAST( NULL AS varchar(1000)) AS MED_DEN_EMPLOYEE_IND, ---6 + CAST( NULL AS varchar(1000)) AS CLOTFACTOR_PRIOR_1987, ----7 + CAST( NULL AS varchar(1000)) AS BLD_CONTAM_IND, ----8 + CAST( NULL AS varchar(1000)) AS DEN_WORK_OR_SURG_IND, ----9 + CAST( NULL AS varchar(1000)) AS HEMODIALYSIS_IND, --10 + CAST( NULL AS varchar(1000)) AS LT_HEMODIALYSIS_IND, --11 + CAST( NULL AS varchar(1000)) AS HSPTL_PRIOR_ONSET_IND, --12 + CAST( NULL AS varchar(1000)) AS EVER_INJCT_NOPRSC_DRG, ------13 + CAST( NULL AS varchar(1000)) AS INCAR_24PLUSHRS_IND, ---14 + CAST( NULL AS varchar(1000)) AS INCAR_6PLUS_MO_IND, ----15 + CAST( NULL AS varchar(1000)) AS EVER_INCAR_IND, ---16 + CAST( NULL AS varchar(1000)) AS INCAR_TYPE_JAIL_IND, -- -17 + CAST( NULL AS varchar(1000)) AS INCAR_TYPE_PRISON_IND, ---18 + CAST( NULL AS varchar(1000)) AS INCAR_TYPE_JUV_IND, ---19 + CAST( NULL AS varchar(1000)) AS LAST6PLUSMO_INCAR_PER, ------20 + CAST( NULL AS varchar(1000)) AS LAST6PLUSMO_INCAR_YR, ---21 + CAST( NULL AS varchar(1000)) AS OUTPAT_IV_INF_IND, ---22 + CAST( NULL AS varchar(1000)) AS LTCARE_RESIDENT_IND, ---23 + CAST( NULL AS varchar(1000)) AS LIFE_SEX_PRTNR_NBR, ---24 + CAST( NULL AS varchar(1000)) AS BLD_EXPOSURE_OTH, ---25 + CAST( NULL AS varchar(1000)) AS PIERC_PRIOR_ONSET_IND, ---26 + CAST( NULL AS varchar(1000)) AS PIERC_PERF_LOC_OTH, ----27 + CAST( NULL AS varchar(1000)) AS PIERC_PERF_LOC, -------28 + CAST( NULL AS varchar(1000)) AS PUB_SAFETY_BLD_CT_FRQ, ---29 + CAST( NULL AS varchar(1000)) AS PUB_SAFETY_WORKER_IND, ---30 + CAST( NULL AS varchar(1000)) AS STD_TREATED_IND, ---31 + CAST( NULL AS varchar(1000)) AS STD_LAST_TREATMENT_YR, ---32 + CAST( NULL AS varchar(1000)) AS NON_ORAL_SURGERY_IND, -----33 + CAST( NULL AS varchar(1000)) AS TATT_PRIOR_ONSET_IND, ----34 + CAST( NULL AS varchar(1000)) AS TATTOO_PERF_LOC, ----35 + CAST( NULL AS varchar(1000)) AS TATT_PRIOR_LOC_OTH, ---36 + CAST( NULL AS varchar(1000)) AS BLD_TRANSF_PRIOR_1992, ---37 + CAST( NULL AS varchar(1000)) AS ORGN_TRNSP_PRIOR_1992, ---38 + CAST( NULL AS varchar(1000)) AS HEP_CONTACT_EVER_IND ----39 +INTO #TMP_D_INV_RISK_FACTOR +FROM #TMP_F_INV_RISK_FACTOR AS F + LEFT JOIN + [dbo].[D_INV_RISK_FACTOR] AS D WITH(NOLOCK) ON F.D_INV_RISK_FACTOR_KEY = D.D_INV_RISK_FACTOR_KEY +ORDER BY RISK_INV_KEY; + +/* +CAST(RSK_BloodExpOther AS varchar(300)) AS BLD_EXPOSURE_IND, ---1 + CAST(RSK_BloodTransfusion AS varchar(300)) AS BLD_RECVD_IND, ----2 + CAST(RSK_BloodTransfusionDate AS date) AS BLD_RECVD_DT, ---3 + CAST(RSK_BloodWorkerCnctFreq AS varchar(300)) AS MED_DEN_BLD_CT_FRQ, ---4 + CAST(RSK_BloodWorkerEver AS varchar(300)) AS MED_DEN_EMP_EVER_IND, ---5 + CAST(RSK_BloodWorkerOnset AS varchar(300)) AS MED_DEN_EMPLOYEE_IND, ---6 + CAST(RSK_ClottingPrior87 AS varchar(300)) AS CLOTFACTOR_PRIOR_1987, ----7 + CAST(RSK_ContaminatedStick AS varchar(300)) AS BLD_CONTAM_IND, ----8 + CAST(RSK_DentalOralSx AS varchar(300)) AS DEN_WORK_OR_SURG_IND, ----9 + CAST(RSK_HEMODIALYSIS_BEFORE_ONSET AS varchar(300)) AS HEMODIALYSIS_IND, --10 + CAST(RSK_HemodialysisLongTerm AS varchar(300)) AS LT_HEMODIALYSIS_IND, --11 + CAST(RSK_HospitalizedPrior AS varchar(300)) AS HSPTL_PRIOR_ONSET_IND, --12 + CAST(RSK_IDU AS varchar(300)) AS EVER_INJCT_NOPRSC_DRG, ------13 +*/ + + + +IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_BloodExpOther' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set BLD_EXPOSURE_IND = RTRIM(LTRIM(RSK_BloodExpOther));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_BloodTransfusion' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set BLD_RECVD_IND = RTRIM(LTRIM(RSK_BloodTransfusion));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_BloodTransfusionDate' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set BLD_RECVD_DT = (RSK_BloodTransfusionDate);' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_BloodWorkerCnctFreq' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set MED_DEN_BLD_CT_FRQ = RTRIM(LTRIM(RSK_BloodWorkerCnctFreq));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_BloodWorkerEver' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set MED_DEN_EMP_EVER_IND = RTRIM(LTRIM(RSK_BloodWorkerEver));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_BloodWorkerOnset' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set MED_DEN_EMPLOYEE_IND = RTRIM(LTRIM(RSK_BloodWorkerOnset));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_ClottingPrior87' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set CLOTFACTOR_PRIOR_1987 = RTRIM(LTRIM(RSK_ClottingPrior87));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_ContaminatedStick' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set BLD_CONTAM_IND = RTRIM(LTRIM(RSK_ContaminatedStick));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_DentalOralSx' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set DEN_WORK_OR_SURG_IND = RTRIM(LTRIM(RSK_DentalOralSx));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_HEMODIALYSIS_BEFORE_ONSET' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set HEMODIALYSIS_IND = RTRIM(LTRIM(RSK_HEMODIALYSIS_BEFORE_ONSET));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_HemodialysisLongTerm' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set LT_HEMODIALYSIS_IND = RTRIM(LTRIM(RSK_HemodialysisLongTerm));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_HospitalizedPrior' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set HSPTL_PRIOR_ONSET_IND = RTRIM(LTRIM(RSK_HospitalizedPrior));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_IDU' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set EVER_INJCT_NOPRSC_DRG = RTRIM(LTRIM(RSK_IDU));' + execute sp_executesql @sql +END; + + + + +/* CAST(RSK_Incarcerated24Hrs AS varchar(300)) AS INCAR_24PLUSHRS_IND, ---14 + CAST(RSK_Incarcerated6months AS varchar(300)) AS INCAR_6PLUS_MO_IND, ----15 + CAST(RSK_IncarceratedEver AS varchar(300)) AS EVER_INCAR_IND, ---16 + CAST(RSK_IncarceratedJail AS varchar(300)) AS INCAR_TYPE_JAIL_IND, -- -17 + CAST(RSK_IncarcerationPrison AS varchar(300)) AS INCAR_TYPE_PRISON_IND, ---18 + CAST(RSK_IncarcJuvenileFacilit AS varchar(300)) AS INCAR_TYPE_JUV_IND, ---19 + CAST(RSK_IncarcTimeMonths AS varchar(300)) AS LAST6PLUSMO_INCAR_PER, ------20 + CAST(RSK_IncarcYear6Mos AS varchar(300)) AS LAST6PLUSMO_INCAR_YR, ---21 +*/ + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_Incarcerated24Hrs' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set INCAR_24PLUSHRS_IND = RTRIM(LTRIM(RSK_Incarcerated24Hrs));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_Incarcerated6months' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set INCAR_6PLUS_MO_IND = RTRIM(LTRIM(RSK_Incarcerated6months));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_IncarceratedEver' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set EVER_INCAR_IND = RTRIM(LTRIM(RSK_IncarceratedEver));' + execute sp_executesql @sql +END; + + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_IncarceratedJail' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set INCAR_TYPE_JAIL_IND = RTRIM(LTRIM(RSK_IncarceratedJail));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_IncarcerationPrison' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set INCAR_TYPE_PRISON_IND = RTRIM(LTRIM(RSK_IncarcerationPrison));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_IncarcJuvenileFacilit' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set INCAR_TYPE_JUV_IND = RTRIM(LTRIM(RSK_IncarcJuvenileFacilit));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_IncarcTimeMonths' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set LAST6PLUSMO_INCAR_PER = RTRIM(LTRIM(RSK_IncarcTimeMonths));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_IncarcYear6Mos' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set LAST6PLUSMO_INCAR_YR = RTRIM(LTRIM(RSK_IncarcYear6Mos));' + execute sp_executesql @sql +END; + + + +/* +CAST(RSK_IVInjectInfuseOutpt AS varchar(300)) AS OUTPAT_IV_INF_IND, ---22 + CAST(RSK_LongTermCareRes AS varchar(300)) AS LTCARE_RESIDENT_IND, ---23 + CAST(RSK_NumSexPrtners AS varchar(300)) AS LIFE_SEX_PRTNR_NBR, ---24 + CAST(RSK_OtherBldExpSpec AS varchar(300)) AS BLD_EXPOSURE_OTH, ---25 + CAST(RSK_Piercing AS varchar(300)) AS PIERC_PRIOR_ONSET_IND, ---26 + CAST(RSK_PiercingOthLocSpec AS varchar(300)) AS PIERC_PERF_LOC_OTH, ----27 + CAST(RSK_PiercingRcvdFrom AS varchar(300)) AS PIERC_PERF_LOC, -------28 + CAST(RSK_PSWrkrBldCnctFreq AS varchar(300)) AS PUB_SAFETY_BLD_CT_FRQ, ---29 + CAST(RSK_PublicSafetyWorker AS varchar(300)) AS PUB_SAFETY_WORKER_IND, ---30 + CAST(RSK_STDTxEver AS varchar(300)) AS STD_TREATED_IND, ---31 + CAST(RSK_STDTxYr AS varchar(300)) AS STD_LAST_TREATMENT_YR, ---32 + CAST(RSK_SurgeryOther AS varchar(300)) AS NON_ORAL_SURGERY_IND, -----33 + CAST(RSK_Tattoo AS varchar(300)) AS TATT_PRIOR_ONSET_IND, ----34 + CAST(RSK_TattooLocation AS varchar(300)) AS TATTOO_PERF_LOC, ----35 + CAST(RSK_TattooLocOthSpec AS varchar(300)) AS TATT_PRIOR_LOC_OTH, ---36 + CAST(RSK_TransfusionPrior92 AS varchar(300)) AS BLD_TRANSF_PRIOR_1992, ---37 + CAST(RSK_TransplantPrior92 AS varchar(300)) AS ORGN_TRNSP_PRIOR_1992, ---38 + CAST(RSK_HepContactEver AS varchar(300)) AS HEP_CONTACT_EVER_IND ----39 + */ + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_IVInjectInfuseOutpt' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set OUTPAT_IV_INF_IND = RTRIM(LTRIM(RSK_IVInjectInfuseOutpt));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_LongTermCareRes' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set LTCARE_RESIDENT_IND = RTRIM(LTRIM(RSK_LongTermCareRes));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_NumSexPrtners' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set LIFE_SEX_PRTNR_NBR = RTRIM(LTRIM(RSK_NumSexPrtners));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_OtherBldExpSpec' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set BLD_EXPOSURE_OTH = RTRIM(LTRIM(RSK_OtherBldExpSpec));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_Piercing' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set PIERC_PRIOR_ONSET_IND = RTRIM(LTRIM(RSK_Piercing));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_PiercingOthLocSpec' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set PIERC_PERF_LOC_OTH = RTRIM(LTRIM(RSK_PiercingOthLocSpec));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_PiercingRcvdFrom' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set PIERC_PERF_LOC = RTRIM(LTRIM(RSK_PiercingRcvdFrom));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_PSWrkrBldCnctFreq' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set PUB_SAFETY_BLD_CT_FRQ = RTRIM(LTRIM(RSK_PSWrkrBldCnctFreq));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_PublicSafetyWorker' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set PUB_SAFETY_WORKER_IND = RTRIM(LTRIM(RSK_PublicSafetyWorker));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_STDTxEver' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set STD_TREATED_IND = RTRIM(LTRIM(RSK_STDTxEver));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_STDTxYr' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set STD_LAST_TREATMENT_YR = RTRIM(LTRIM(RSK_STDTxYr));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_SurgeryOther' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set NON_ORAL_SURGERY_IND = RTRIM(LTRIM(RSK_SurgeryOther));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_Tattoo' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set TATT_PRIOR_ONSET_IND = RTRIM(LTRIM(RSK_Tattoo));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_TattooLocation' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set TATTOO_PERF_LOC = RTRIM(LTRIM(RSK_TattooLocation));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_TattooLocOthSpec' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set TATT_PRIOR_LOC_OTH = RTRIM(LTRIM(RSK_TattooLocOthSpec));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_TransfusionPrior92' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set BLD_TRANSF_PRIOR_1992 = RTRIM(LTRIM(RSK_TransfusionPrior92));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_TransplantPrior92' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set ORGN_TRNSP_PRIOR_1992 = RTRIM(LTRIM(RSK_TransplantPrior92));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_HepContactEver' AND Object_ID = Object_ID(N'#TMP_D_INV_RISK_FACTOR')) +BEGIN + SET @sql = N'update #TMP_D_INV_RISK_FACTOR set HEP_CONTACT_EVER_IND = RTRIM(LTRIM(RSK_HepContactEver));' + execute sp_executesql @sql +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + +---------------------------------------------------19. CREATE TABLE #TMP_D_INV_TRAVEL--------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_D_INV_TRAVEL'; + + SET @Proc_Step_no = 19; + + IF OBJECT_ID('#TMP_F_INV_TRAVEL', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_F_INV_TRAVEL; + +END; + + IF OBJECT_ID('#TMP_D_INV_TRAVEL', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_D_INV_TRAVEL; + +END; + +SELECT F_PAGE_CASE.D_INV_TRAVEL_KEY, F_PAGE_CASE.INVESTIGATION_KEY +INTO #TMP_F_INV_TRAVEL +FROM dbo.F_PAGE_CASE WITH(NOLOCK) + INNER JOIN + #TMP_F_PAGE_CASE AS PAGE_CASE +ON F_PAGE_CASE.INVESTIGATION_KEY = PAGE_CASE.INVESTIGATION_KEY---(my table) +ORDER BY D_INV_TRAVEL_KEY; + + + +SELECT F.D_INV_TRAVEL_KEY D_INV_TRAVEL_KEY1, F.INVESTIGATION_KEY AS Travel_INV_KEY, d.*, + CAST( NULL AS varchar(1000)) AS HOUSEHOLD_TRAVEL_IND, + CAST( NULL AS varchar(1000)) AS TRAVEL_OUT_USACAN_IND, + CAST( NULL AS varchar(1000)) AS TRAVEL_OUT_USACAN_LOC, + CAST( NULL AS varchar(1000)) AS HOUSEHOLD_TRAVEL_LOC, + CAST( NULL AS varchar(1000)) AS TRAVEL_REASON +INTO #TMP_D_INV_TRAVEL +FROM #TMP_F_INV_TRAVEL AS F + LEFT JOIN + [dbo].[D_INV_TRAVEL] AS D WITH(NOLOCK) +ON F.D_INV_TRAVEL_KEY = D.D_INV_TRAVEL_KEY +ORDER BY F.INVESTIGATION_KEY; + + + +IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'TRV_HouseholdTravel' AND Object_ID = Object_ID(N'#TMP_D_INV_TRAVEL')) +BEGIN + + SET @sql = N'update #TMP_D_INV_TRAVEL set HOUSEHOLD_TRAVEL_IND = RTRIM(LTRIM(TRV_HouseholdTravel));' + execute sp_executesql @sql +END; + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'TRV_PatientTravel' AND Object_ID = Object_ID(N'#TMP_D_INV_TRAVEL')) +BEGIN + SET @sql = N'update #TMP_D_INV_TRAVEL set TRAVEL_OUT_USACAN_IND = RTRIM(LTRIM(TRV_PatientTravel));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'TRV_PtTravelCountries' AND Object_ID = Object_ID(N'#TMP_D_INV_TRAVEL')) +BEGIN + SET @sql = N'update #TMP_D_INV_TRAVEL set TRAVEL_OUT_USACAN_LOC = RTRIM(LTRIM(TRV_PtTravelCountries));' + execute sp_executesql @sql +END; + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'TRV_TravelCountryHouse' AND Object_ID = Object_ID(N'#TMP_D_INV_TRAVEL')) +BEGIN + SET @sql = N'update #TMP_D_INV_TRAVEL set HOUSEHOLD_TRAVEL_LOC = RTRIM(LTRIM(TRV_TravelCountryHouse));' + execute sp_executesql @sql +END; + + + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'TRV_VHF_TRAVEL_REASON' AND Object_ID = Object_ID(N'#TMP_D_INV_TRAVEL')) +BEGIN + SET @sql = N'update #TMP_D_INV_TRAVEL set TRAVEL_REASON = RTRIM(LTRIM(TRV_VHF_TRAVEL_REASON));' + execute sp_executesql @sql +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + + +-------------------------------------------------------------------20. CREATE TABLE TMP_D_INV_VACCINATION-------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating TMP_D_INV_VACCINATION'; + + SET @Proc_Step_no = 20; + + IF OBJECT_ID('#TMP_F_INV_VACCINATION', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_F_INV_VACCINATION; + +END; + + IF OBJECT_ID('#TMP_D_INV_VACCINATION', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_D_INV_VACCINATION; + +END; + +SELECT F_PAGE_CASE.D_INV_VACCINATION_KEY, F_PAGE_CASE.INVESTIGATION_KEY +INTO #TMP_F_INV_VACCINATION +FROM dbo.F_PAGE_CASE WITH(NOLOCK) + INNER JOIN + #TMP_F_PAGE_CASE AS PAGE_CASE +ON F_PAGE_CASE.INVESTIGATION_KEY = PAGE_CASE.INVESTIGATION_KEY ---(my table) +ORDER BY D_INV_VACCINATION_KEY; + + +SELECT F.D_INV_VACCINATION_KEY D_INV_VACCINATION_KEY1, F.INVESTIGATION_KEY AS VACCINATION_INV_KEY, V.*, + CAST( NULL AS varchar(1000)) AS IMM_GLOB_RECVD_IND, ----EXT_IMM_GLOB_RECVD_IND, + CAST( NULL AS varchar(1000)) AS STD_LAST_TREATMENT_YR, -----EXT_STD_LAST_TREATMENT_YR, + CAST( NULL AS varchar(1000)) AS GLOB_LAST_RECVD_YR, -----EXT_GLOB_LAST_RECVD_YR, + CAST( NULL AS varchar(1000)) AS VACC_RECVD_IND, ---- ---EXT_VACC_RECVD_IND--------------5-13-2021 + CAST( NULL AS varchar(1000)) AS VACC_DOSE_RECVD_NBR, ---EXT_VACC_DOSE_RECVD_NBR,-----INPUT(VAC_VaccineDoses, comma20.); + CAST( NULL AS varchar(1000)) AS VACC_LAST_RECVD_YR -----EXT_VACC_LAST_RECVD_YR,-------INPUT(VAC_YearofLastDose, comma20.); +-- Cast( null as varchar(2000)) as VAC_VaccinationDate ---EXT_VACC_RECVD_DT,------------VAC_VaccinationDate---could not find +INTO #TMP_D_INV_VACCINATION +FROM #TMP_F_INV_VACCINATION AS F + LEFT JOIN + [dbo].[D_INV_VACCINATION] AS V WITH(NOLOCK) +ON F.D_INV_VACCINATION_KEY = V.D_INV_VACCINATION_KEY +ORDER BY F.INVESTIGATION_KEY; + + + +IF NOT EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'VAC_VaccinationDate' AND Object_ID = Object_ID(N'#TMP_D_INV_VACCINATION')) +BEGIN + SET @sql = N'alter table #TMP_D_INV_VACCINATION add VAC_VaccinationDate varchar(2000) NULL;' + execute sp_executesql @sql +END; + + /* + + CAST(VAC_ImmuneGlobulin AS varchar(300)) AS IMM_GLOB_RECVD_IND, ----EXT_IMM_GLOB_RECVD_IND, + CAST(RSK_STDTxYr AS varchar(300)) AS STD_LAST_TREATMENT_YR, -----EXT_STD_LAST_TREATMENT_YR, + CAST(VAC_LastIGDose AS varchar(300)) AS GLOB_LAST_RECVD_YR, -----EXT_GLOB_LAST_RECVD_YR, + CAST(VAC_Vacc_Rcvd AS varchar(10)) AS VACC_RECVD_IND, ---- ---EXT_VACC_RECVD_IND--------------5-13-2021 + CAST(VAC_VaccineDoses AS varchar(300)) AS VACC_DOSE_RECVD_NBR, ---EXT_VACC_DOSE_RECVD_NBR,-----INPUT(VAC_VaccineDoses, comma20.); + CAST(VAC_YearofLastDose AS varchar(300)) AS VACC_LAST_RECVD_YR ,-----EXT_VACC_LAST_RECVD_YR,-------INPUT(VAC_YearofLastDose, comma20.); + Cast(VAC_VaccinationDate as varchar(2000)) as VAC_VaccinationDate ---EXT_VACC_RECVD_DT,------------VAC_VaccinationDate---could not find + */ + + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'VAC_ImmuneGlobulin' AND Object_ID = Object_ID(N'#TMP_D_INV_VACCINATION')) +BEGIN + SET @sql = N'update #TMP_D_INV_VACCINATION set IMM_GLOB_RECVD_IND = RTRIM(LTRIM(VAC_ImmuneGlobulin));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'RSK_STDTxYr' AND Object_ID = Object_ID(N'#TMP_D_INV_VACCINATION')) +BEGIN + SET @sql = N'update #TMP_D_INV_VACCINATION set STD_LAST_TREATMENT_YR = (RSK_STDTxYr);' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'VAC_LastIGDose' AND Object_ID = Object_ID(N'#TMP_D_INV_VACCINATION')) +BEGIN + SET @sql = N'update #TMP_D_INV_VACCINATION set GLOB_LAST_RECVD_YR = (VAC_LastIGDose);' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'VAC_Vacc_Rcvd' AND Object_ID = Object_ID(N'#TMP_D_INV_VACCINATION')) +BEGIN + SET @sql = N'update #TMP_D_INV_VACCINATION set VACC_RECVD_IND = RTRIM(LTRIM(VAC_Vacc_Rcvd));' + execute sp_executesql @sql +END; + + + -- declare @sql nvarchar(2000); + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'VAC_VaccineDoses' AND Object_ID = Object_ID(N'#TMP_D_INV_VACCINATION')) +BEGIN + SET @sql = N'update #TMP_D_INV_VACCINATION set VACC_DOSE_RECVD_NBR= (VAC_VaccineDoses);' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'VAC_YearofLastDose' AND Object_ID = Object_ID(N'#TMP_D_INV_VACCINATION')) +BEGIN + SET @sql = N'update #TMP_D_INV_VACCINATION set VACC_LAST_RECVD_YR = (VAC_YearofLastDose);' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'VAC_VaccinationDate' AND Object_ID = Object_ID(N'#TMP_D_INV_VACCINATION')) +BEGIN + SET @sql = N'update #TMP_D_INV_VACCINATION set VAC_VaccinationDate = (VAC_VaccinationDate);' + execute sp_executesql @sql +END; + + --------Could Not find +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + +----------------------------------------------------------21. CREATE TABLE #TMP_D_Patient--------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_D_Patient'; + + SET @Proc_Step_no = 21; + + IF OBJECT_ID('#TMP_D_Patient', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_D_Patient; + +END; + +SELECT F_PAGE_CASE.INVESTIGATION_KEY AS Patient_INV_KEY, D_PATIENT.PATIENT_UID, D_PATIENT.PATIENT_ETHNICITY AS PAT_ETHNICITY, D_PATIENT.PATIENT_AGE_REPORTED AS PAT_REPORTED_AGE, D_PATIENT.PATIENT_AGE_REPORTED_UNIT AS PAT_REPORTED_AGE_UNIT, D_PATIENT.PATIENT_CITY AS PAT_CITY, D_PATIENT.PATIENT_COUNTRY AS PAT_COUNTRY, D_PATIENT.PATIENT_BIRTH_COUNTRY AS PAT_BIRTH_COUNTRY, D_PATIENT.PATIENT_COUNTY AS PAT_COUNTY, D_PATIENT.PATIENT_CURRENT_SEX AS PAT_CURR_GENDER, D_PATIENT.PATIENT_DOB AS PAT_DOB, D_PATIENT.PATIENT_FIRST_NAME AS PAT_FIRST_NM, D_PATIENT.PATIENT_LAST_NAME AS PAT_LAST_NM, SUBSTRING(LTRIM(RTRIM(D_PATIENT.PATIENT_LOCAL_ID)), 1, 25) AS PAT_LOCAL_ID, ---added 9/9/2021 + D_PATIENT.PATIENT_MIDDLE_NAME AS PAT_MIDDLE_NM, D_PATIENT.PATIENT_RACE_CALCULATED AS PAT_RACE, D_PATIENT.PATIENT_STATE AS PAT_STATE, D_PATIENT.PATIENT_STREET_ADDRESS_1 AS PAT_STREET_ADDR_1, D_PATIENT.PATIENT_STREET_ADDRESS_2 AS PAT_STREET_ADDR_2, SUBSTRING(LTRIM(RTRIM(D_PATIENT.PATIENT_ZIP)), 1, 10) AS PAT_ZIP_CODE, ---added 9/9/2021 + D_PATIENT.PATIENT_ENTRY_METHOD AS PAT_ELECTRONIC_IND, D_PATIENT.PATIENT_ADD_TIME AS INV_ADD_TIME +INTO #TMP_D_Patient +----FROM F_PAGE_CASE +FROM #TMP_F_PAGE_CASE AS F_PAGE_CASE---(my table) + INNER JOIN + #TMP_CONDITION AS T + ON F_PAGE_CASE.CONDITION_KEY = T.CONDITION_KEY---(my table) + INNER JOIN + dbo.D_PATIENT WITH(NOLOCK) +ON D_PATIENT.PATIENT_KEY = F_PAGE_CASE.PATIENT_KEY +ORDER BY INVESTIGATION_KEY; + +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + +---------------------------------------------------22. CREATE TABLE TMP_INVESTIGATION--------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_Investigation'; + + SET @Proc_Step_no = 22; + + IF OBJECT_ID('#TMP_Investigation', 'U') IS NOT NULL +BEGIN +DROP TABLE TMP_Investigation; + +END; + +SELECT PAGE_CASE.INVESTIGATION_KEY, INVESTIGATION.CASE_UID, T.CONDITION_CD AS CONDITION_CD, INVESTIGATION.CASE_OID AS PROGRAM_JURISDICTION_OID, CAST([CASE_RPT_MMWR_WK] AS varchar(100)) AS CASE_RPT_MMWR_WEEK, CAST([CASE_RPT_MMWR_YR] AS varchar(100)) AS CASE_RPT_MMWR_YEAR, INVESTIGATION.DIAGNOSIS_DT AS DIAGNOSIS_DT, INVESTIGATION.DIE_FRM_THIS_ILLNESS_IND AS DIE_FRM_THIS_ILLNESS_IND, INVESTIGATION.DISEASE_IMPORTED_IND AS DISEASE_IMPORTED_IND, INVESTIGATION.EARLIEST_RPT_TO_CNTY_DT AS EARLIEST_RPT_TO_CNTY, INVESTIGATION.EARLIEST_RPT_TO_STATE_DT AS EARLIEST_RPT_TO_STATE_DT, + INVESTIGATION.HSPTL_ADMISSION_DT AS HSPTL_ADMISSION_DT, INVESTIGATION.HSPTL_DISCHARGE_DT AS HSPTL_DISCHARGE_DT, + INVESTIGATION.HSPTL_DURATION_DAYS AS HSPTL_DURATION_DAYS, INVESTIGATION.HSPTLIZD_IND AS HSPTLIZD_IND, INVESTIGATION.ILLNESS_ONSET_DT AS ILLNESS_ONSET_DT, INVESTIGATION.IMPORT_FRM_CITY AS IMPORT_FROM_CITY, INVESTIGATION.IMPORT_FRM_CNTRY AS IMPORT_FROM_COUNTRY, INVESTIGATION.IMPORT_FRM_CNTY AS IMPORT_FROM_COUNTY, INVESTIGATION.IMPORT_FRM_STATE AS IMPORT_FROM_STATE, INVESTIGATION.INV_CASE_STATUS AS INV_CASE_STATUS, LTRIM(RTRIM(INVESTIGATION.INV_COMMENTS)) AS INV_COMMENTS, ---added 7/21/2021 + INVESTIGATION.INV_LOCAL_ID AS INV_LOCAL_ID, INVESTIGATION.INV_RPT_DT AS INV_RPT_DT, INVESTIGATION.INV_START_DT AS INV_START_DT, + ---- INVESTIGATION.INVESTIGATION_KEY AS INVESTIGATION_KEY, + INVESTIGATION.INVESTIGATION_STATUS AS INVESTIGATION_STATUS, INVESTIGATION.JURISDICTION_NM AS JURISDICTION_NM, INVESTIGATION.OUTBREAK_IND AS OUTBREAK_IND, INVESTIGATION.PATIENT_PREGNANT_IND AS PAT_PREGNANT_IND, INVESTIGATION.RPT_SRC_CD_DESC AS RPT_SRC_CD_DESC, INVESTIGATION.TRANSMISSION_MODE AS TRANSMISSION_MODE, SUBSTRING(LTRIM(RTRIM(INVESTIGATION.LEGACY_CASE_ID)), 1, 15) AS LEGACY_CASE_ID, ----added on 9/8/2021 + DATE_MM_DD_YYYY AS NOT_SUBMIT_DT +INTO #TMP_Investigation +FROM dbo.F_PAGE_CASE AS PAGE_CASE WITH(NOLOCK)---(original table) + INNER JOIN #TMP_F_PAGE_CASE AS F_PAGE_CASE ON F_PAGE_CASE.INVESTIGATION_KEY = PAGE_CASE.INVESTIGATION_KEY--(myTable) + INNER JOIN #TMP_CONDITION AS T ON F_PAGE_CASE.CONDITION_KEY = T.CONDITION_KEY---(my table) + INNER JOIN dbo.D_PATIENT WITH(NOLOCK) ON F_PAGE_CASE.patient_key = D_PATIENT.patient_key + INNER JOIN dbo.INVESTIGATION WITH(NOLOCK) ON F_PAGE_CASE.INVESTIGATION_KEY = INVESTIGATION.INVESTIGATION_KEY + LEFT OUTER JOIN dbo.NOTIFICATION_EVENT WITH(NOLOCK) ON NOTIFICATION_EVENT.PATIENT_KEY = F_PAGE_CASE.PATIENT_KEY + LEFT OUTER JOIN dbo.RDB_DATE WITH(NOLOCK) ON NOTIFICATION_EVENT.NOTIFICATION_SUBMIT_DT_KEY = DATE_KEY +ORDER BY PAGE_CASE.INVESTIGATION_key; + + +/* + CASE_RPT_MMWR_WEEK= INPUT(CASE_RPT_MMWR_WK, comma20.); + + CASE_RPT_MMWR_YEAR= INPUT(CASE_RPT_MMWR_YR, comma20.); + +*/ +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + +---------------------------------------------------23. CREATE TABLE TMP_HEP_PAT_PROV --------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_HEP_PAT_PROV'; + + SET @Proc_Step_no = 23; + + IF OBJECT_ID('#TMP_HEP_PAT_PROV', 'U') IS NOT NULL +BEGIN +DROP TABLE TMP_HEP_PAT_PROV; + +END; + +SELECT DISTINCT + TMP_F_PAGE_CASE.INVESTIGATION_KEY AS HEP_PAT_PROV_INV_KEY, P.PROVIDER_LOCAL_ID, P.PROVIDER_FIRST_NAME AS PHYSICIAN_FIRST_NM, P.PROVIDER_MIDDLE_NAME AS PHYSICIAN_MIDDLE_NM, P.PROVIDER_LAST_NAME AS PHYSICIAN_LAST_NM, CAST(NULL AS varchar(300)) AS PHYS_NAME, P.PROVIDER_CITY AS PHYS_CITY, P.PROVIDER_STATE AS PHYS_STATE, P.PROVIDER_COUNTY AS PHYS_COUNTY, CAST(NULL AS varchar(300)) AS PHYSICIAN_ADDRESS_USE_DESC, CAST(NULL AS varchar(300)) AS PHYSICIAN_ADDRESS_TYPE_DESC, P.PROVIDER_ADD_TIME, P.PROVIDER_LAST_CHANGE_TIME, P.PROVIDER_UID AS PHYSICIAN_UID, INVGTR.PROVIDER_FIRST_NAME AS INVESTIGATOR_FIRST_NM, INVGTR.PROVIDER_MIDDLE_NAME AS INVESTIGATOR_MIDDLE_NM, INVGTR.PROVIDER_LAST_NAME AS INVESTIGATOR_LAST_NM, CAST(NULL AS varchar(300)) AS INVESTIGATOR_NAME, INVGTR.PROVIDER_UID AS INVESTIGATOR_UID, REPTORG.ORGANIZATION_NAME AS RPT_SRC_SOURCE_NM, REPTORG.ORGANIZATION_COUNTY_CODE AS RPT_SRC_COUNTY_CD, REPTORG.ORGANIZATION_COUNTY AS RPT_SRC_COUNTY, REPTORG.ORGANIZATION_CITY AS RPT_SRC_CITY, REPTORG.ORGANIZATION_STATE AS RPT_SRC_STATE, CAST(NULL AS varchar(300)) AS REPORTING_SOURCE_ADDRESS_USE, CAST(NULL AS varchar(300)) AS REPORTING_SOURCE_ADDRESS_TYPE, REPTORG.ORGANIZATION_UID AS REPORTING_SOURCE_UID +INTO #TMP_HEP_PAT_PROV +FROM dbo.F_PAGE_CASE AS PAGE_CASE WITH(NOLOCK) + INNER JOIN + #TMP_F_PAGE_CASE TMP_F_PAGE_CASE +ON TMP_F_PAGE_CASE.INVESTIGATION_KEY = PAGE_CASE.INVESTIGATION_KEY------ (My table) + INNER JOIN + #TMP_CONDITION AS T + ON TMP_F_PAGE_CASE.CONDITION_KEY = T.CONDITION_KEY------ (My table) + LEFT OUTER JOIN + dbo.D_PROVIDER AS P WITH(NOLOCK) +ON PAGE_CASE.PHYSICIAN_KEY = P.PROVIDER_KEY + LEFT OUTER JOIN + dbo.D_PROVIDER AS INVGTR WITH(NOLOCK) +ON PAGE_CASE.INVESTIGATOR_KEY = INVGTR.PROVIDER_KEY + LEFT OUTER JOIN + dbo.D_ORGANIZATION AS REPTORG WITH(NOLOCK) +ON PAGE_CASE.ORG_AS_REPORTER_KEY = REPTORG.ORGANIZATION_KEY +ORDER BY HEP_PAT_PROV_INV_KEY; + +UPDATE #TMP_HEP_PAT_PROV +SET PHYS_NAME = RTRIM(LTRIM(PHYSICIAN_first_nm)); + +UPDATE #TMP_HEP_PAT_PROV +SET PHYS_NAME = CASE + WHEN PHYS_NAME IS NOT NULL THEN CONCAT(PHYSICIAN_Last_nm, ', ', RTRIM(LTRIM(PHYSICIAN_first_nm)), ' ', PHYSICIAN_middle_nm) + ELSE PHYS_NAME + END; + +UPDATE #TMP_HEP_PAT_PROV +SET PHYS_NAME = CASE + WHEN LEN(PHYSICIAN_middle_nm) > 0 THEN PHYS_NAME + ELSE RTRIM(LTRIM(PHYS_NAME)) + END; + +----5-17-2021 +UPDATE #TMP_HEP_PAT_PROV +SET INVESTIGATOR_NAME = RTRIM(LTRIM(INVESTIGATOR_FIRST_NM)); + +UPDATE #TMP_HEP_PAT_PROV +SET INVESTIGATOR_NAME = CASE + WHEN INVESTIGATOR_NAME IS NOT NULL THEN CONCAT(INVESTIGATOR_Last_nm, ', ', RTRIM(LTRIM(INVESTIGATOR_FIRST_NM)), ' ', INVESTIGATOR_MIDDLE_NM) + ELSE INVESTIGATOR_NAME + END; + +UPDATE #TMP_HEP_PAT_PROV +SET INVESTIGATOR_NAME = CASE + WHEN LEN(INVESTIGATOR_middle_nm) > 0 THEN INVESTIGATOR_NAME + ELSE RTRIM(LTRIM(INVESTIGATOR_NAME)) + END; + +----5-21-2021 +UPDATE #TMP_HEP_PAT_PROV +--SET PHYSICIAN_ADDRESS_USE_DESC =concat_ws(' ',RTRIM(LTRIM(PHYS_CITY)),RTRIM(LTRIM(PHYS_STATE)),RTRIM(LTRIM(PHYS_COUNTY))) +SET PHYSICIAN_ADDRESS_USE_DESC = concat(RTRIM(LTRIM(ISNULL(PHYS_CITY, ''))), ' ', RTRIM(LTRIM(ISNULL(PHYS_STATE, ''))), ' ', RTRIM(LTRIM(ISNULL(PHYS_COUNTY, '')))); + +---8-31-2021 +UPDATE #TMP_HEP_PAT_PROV +SET PHYSICIAN_ADDRESS_USE_DESC = CASE + WHEN LEN(PHYSICIAN_ADDRESS_USE_DESC) > 0 THEN 'Primary Work Place' + ELSE NULL + END; + +UPDATE #TMP_HEP_PAT_PROV +--SET PHYSICIAN_ADDRESS_TYPE_DESC =concat_ws(' ',RTRIM(LTRIM(RPT_SRC_COUNTY)),RTRIM(LTRIM(RPT_SRC_STATE)),RTRIM(LTRIM(RPT_SRC_CITY))) +SET PHYSICIAN_ADDRESS_TYPE_DESC = concat(RTRIM(LTRIM(ISNULL(RPT_SRC_COUNTY, ''))), ' ', RTRIM(LTRIM(ISNULL(RPT_SRC_STATE, ''))), ' ', RTRIM(LTRIM(ISNULL(RPT_SRC_CITY, '')))); + +---8-31-2021 +UPDATE #TMP_HEP_PAT_PROV +SET PHYSICIAN_ADDRESS_TYPE_DESC = CASE + WHEN LEN(PHYSICIAN_ADDRESS_TYPE_DESC) > 0 THEN 'Office' + ELSE NULL + END; + +UPDATE #TMP_HEP_PAT_PROV +---SET REPORTING_SOURCE_ADDRESS_USE =concat_ws(' ',RTRIM(LTRIM(PHYS_CITY)),RTRIM(LTRIM(PHYS_STATE)),RTRIM(LTRIM(PHYS_COUNTY))) +SET REPORTING_SOURCE_ADDRESS_USE = concat(RTRIM(LTRIM(ISNULL(PHYS_CITY, ''))), ' ', RTRIM(LTRIM(ISNULL(PHYS_STATE, ''))), ' ', RTRIM(LTRIM(ISNULL(PHYS_COUNTY, '')))); + +---8-31-2021 +UPDATE #TMP_HEP_PAT_PROV +SET REPORTING_SOURCE_ADDRESS_USE = CASE + WHEN LEN(REPORTING_SOURCE_ADDRESS_USE) > 0 THEN 'Primary Work Place' + ELSE NULL + END; + +UPDATE #TMP_HEP_PAT_PROV +---SET REPORTING_SOURCE_ADDRESS_TYPE =concat_ws(' ',RTRIM(LTRIM(RPT_SRC_COUNTY)),RTRIM(LTRIM(RPT_SRC_STATE)),RTRIM(LTRIM(RPT_SRC_CITY))) +SET REPORTING_SOURCE_ADDRESS_TYPE = concat(RTRIM(LTRIM(ISNULL(RPT_SRC_COUNTY, ''))), ' ', RTRIM(LTRIM(ISNULL(RPT_SRC_STATE, ''))), ' ', RTRIM(LTRIM(ISNULL(RPT_SRC_CITY, '')))); + +---8-31-2021 +UPDATE #TMP_HEP_PAT_PROV +SET REPORTING_SOURCE_ADDRESS_TYPE = CASE + WHEN LEN(REPORTING_SOURCE_ADDRESS_TYPE) > 0 THEN 'office' + ELSE NULL + 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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + +-------------------------------------------------24. CREATE TABLE TMP_D_INVESTIGATION_REPEAT --------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_D_INVESTIGATION_REPEAT'; + +------is same as dataset- D_INVESTIGATION_REPEAT + SET @Proc_Step_no = 24; + + IF OBJECT_ID('#TMP_F_INVESTIGATION_REPEAT', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_F_INVESTIGATION_REPEAT; + +END; + + IF OBJECT_ID('#TMP_D_INVESTIGATION_REPEAT', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_D_INVESTIGATION_REPEAT; + +END; + +SELECT PAGE_CASE.D_INVESTIGATION_REPEAT_KEY, PAGE_CASE.INVESTIGATION_KEY, TMP_F_PAGE_CASE.CONDITION_KEY +INTO #TMP_F_INVESTIGATION_REPEAT +FROM dbo.F_PAGE_CASE AS PAGE_CASE WITH(NOLOCK) + INNER JOIN + #TMP_F_PAGE_CASE AS TMP_F_PAGE_CASE +ON TMP_F_PAGE_CASE.INVESTIGATION_KEY = PAGE_CASE.INVESTIGATION_KEY ----(my table) since in sas it is dbo +ORDER BY D_INVESTIGATION_REPEAT_KEY; + +SELECT DISTINCT + F.D_INVESTIGATION_REPEAT_KEY D_INVESTIGATION_REPEAT_KEY1, F.INVESTIGATION_KEY, F.CONDITION_KEY,D.*, + CAST( NULL AS varchar(1000)) AS VAC_VaccineDoseNum1 , + Cast( null as varchar(2000)) as VAC_VaccinationDate1 , + PAGE_CASE_UID PAGE_CASE_UID1, BLOCK_NM BLOCK_NM1, ANSWER_GROUP_SEQ_NBR ANSWER_GROUP_SEQ_NBR1 +INTO #TMP_D_INVESTIGATION_REPEAT +FROM #TMP_F_INVESTIGATION_REPEAT AS F + LEFT JOIN + [dbo].[D_INVESTIGATION_REPEAT] AS D WITH(NOLOCK) +ON D.D_INVESTIGATION_REPEAT_KEY = F.D_INVESTIGATION_REPEAT_KEY +ORDER BY F.INVESTIGATION_KEY; + + +IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'VAC_VaccineDoseNum' AND Object_ID = Object_ID(N'#TMP_D_INVESTIGATION_REPEAT')) +BEGIN + SET @sql = N'update #TMP_D_INVESTIGATION_REPEAT set VAC_VaccineDoseNum1 = RTRIM(LTRIM(VAC_VaccineDoseNum));' + execute sp_executesql @sql +END; + + IF EXISTS(SELECT 1 FROM sys.columns WHERE Name = N'VAC_VaccinationDate' AND Object_ID = Object_ID(N'#TMP_D_INVESTIGATION_REPEAT')) +BEGIN + SET @sql = N'update #TMP_D_INVESTIGATION_REPEAT set VAC_VaccinationDate1 = (VAC_VaccinationDate);' + execute sp_executesql @sql +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + + +--------------------------------------------------25. CREATE TABLE TMP_METADATA_TEST--------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_METADATA_TEST'; + + SET @Proc_Step_no = 25; + + IF OBJECT_ID('#TMP_METADATA_TEST', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_METADATA_TEST; + +END; + +SELECT C.CONDITION_KEY, M.block_nm, M.investigation_form_cd +INTO #TMP_METADATA_TEST +FROM NBS_ODSE.dbo.NBS_UI_METADATA AS M WITH(NOLOCK) + INNER JOIN + #TMP_CONDITION AS C +ON M.INVESTIGATION_FORM_CD = C.DISEASE_GRP_DESC ----(My table) +WHERE M.question_identifier IN( 'VAC103', 'VAC120' ) AND + M.[block_nm] 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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + + +--------------------------------------------------26a. CREATE TABLE TMP_VAC_REPEAT------------------------------------------------------ +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating #TMP_VAC_REPEAT'; + + SET @Proc_Step_no = 26; + +-----a + IF OBJECT_ID('#TMP_VAC_REPEAT', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_VAC_REPEAT; + +END; + +SELECT DISTINCT + D.D_INVESTIGATION_REPEAT_KEY, D.INVESTIGATION_KEY, + VAC_VaccinationDate1 VAC_VaccinationDate , + VAC_VaccineDoseNum1 VAC_VaccineDoseNum, + D.PAGE_CASE_UID, D.ANSWER_GROUP_SEQ_NBR AS SEQNBR, D.BLOCK_NM, CAST(NULL AS varchar(1000)) AS VAC_GT_4_IND, -----Date Indicator + CAST(NULL AS varchar(1000)) AS VAC_DOSE_4_IND, ---Dose Indicator + CAST(NULL AS varchar(1000)) AS VACC_GT_4_IND ---------FinalIndicator +INTO #TMP_VAC_REPEAT +FROM #TMP_D_INVESTIGATION_REPEAT AS D + INNER JOIN #TMP_CONDITION AS C ON C.CONDITION_KEY = D.CONDITION_KEY----My Table + INNER JOIN #TMP_METADATA_TEST AS M ON M.CONDITION_KEY = D.CONDITION_KEY +WHERE M.block_nm = D.BLOCK_NM + AND M.block_nm IN + ( + SELECT DISTINCT + BLOCK_NM + FROM NBS_ODSE.dbo.NBS_UI_METADATA WITH(NOLOCK) +WHERE QUESTION_IDENTIFIER IN( 'VAC103', 'VAC120' ) AND + BLOCK_NM IS NOT NULL + ) +ORDER BY PAGE_CASE_UID; + +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + + +---------------------------------------------------26b. CREATE TABLE TMP_VAC_REPEAT_OUT_DATE_Pivot--------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating TMP_VAC_REPEAT_OUT_DATE_Pivot'; + + SET @Proc_Step_no = 26; + +----b + IF OBJECT_ID('#TMP_VAC_REPEAT_OUT_DATE_Pivot', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_VAC_REPEAT_OUT_DATE_Pivot; + +END; + + IF OBJECT_ID('#TMP_VAC_REPEAT_OUT_DATE', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_VAC_REPEAT_OUT_DATE; + +END; + + IF OBJECT_ID('#TMP_VAC_REPEAT_OUT_DATE_Final', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_VAC_REPEAT_OUT_DATE_Final; + +END; + + DECLARE @cols AS nvarchar(max)= STUFF( + ( + SELECT DISTINCT + ',[' + CAST(NUM AS varchar) + ']' + FROM + ( + SELECT ROW_NUMBER() OVER( + ORDER BY(SELECT NULL)) AS num + FROM Sys.Objects + ) AS X + WHERE num <= 5 FOR XML PATH('') + ), 1, 1, ''); + + PRINT @cols; + + +CREATE TABLE #TMP_VAC_REPEAT_OUT_DATE_Pivot + ( D_INVESTIGATION_REPEAT_KEY BIGINT, + INVESTIGATION_KEY BIGINT, + Page_Case_UId BIGINT, + VACC_RECVD_DT_1 DATE, + VACC_RECVD_DT_2 DATE, + VACC_RECVD_DT_3 DATE, + VACC_RECVD_DT_4 DATE, + VACC_RECVD_DT_5 DATE + ); + + +DECLARE @SqlCmd nvarchar(max)= ''; + + SET @SqlCmd = ' + SELECT + D_INVESTIGATION_REPEAT_KEY,INVESTIGATION_KEY,Page_Case_UId, + [1] as VACC_RECVD_DT_1, + [2] as VACC_RECVD_DT_2, + [3] as VACC_RECVD_DT_3, + [4] as VACC_RECVD_DT_4, + [5] as VACC_RECVD_DT_5 + + Into #TMP_VAC_REPEAT_OUT_DATE_Pivot FROM + ( + SELECT p.* + FROM + ( + SELECT D_INVESTIGATION_REPEAT_KEY,VAC_VaccinationDate,SEQNBR,INVESTIGATION_KEY, Page_Case_UId + FROM #TMP_VAC_REPEAT + ) AS tbl + PIVOT + ( + MAX(VAC_VaccinationDate) FOR SEQNBR IN(' + @cols + ') + ) AS p) + as c + '; + + PRINT @SqlCmd; + +EXEC sp_executesql @SqlCmd; + +SELECT *, CAST(NULL AS varchar(1000)) AS VAC_GT_4_IND -----Date Indicator---change the length to 300 on 5-13-2021 +INTO #TMP_VAC_REPEAT_OUT_DATE +FROM #TMP_VAC_REPEAT_OUT_DATE_Pivot +WHERE LEN(VACC_RECVD_DT_1) > 0 OR + LEN(VACC_RECVD_DT_2) > 0 OR + LEN(VACC_RECVD_DT_3) > 0 OR + LEN(VACC_RECVD_DT_4) > 0 OR + LEN(VACC_RECVD_DT_5) > 0 AND + PAGE_CASE_UID > 0; + +UPDATE #TMP_VAC_REPEAT_OUT_DATE +SET VAC_GT_4_IND = CASE + WHEN VACC_RECVD_DT_5 IS NULL THEN NULL + ELSE 'True' + END; + +SELECT DISTINCT + Page_Case_UId, D_INVESTIGATION_REPEAT_KEY, INVESTIGATION_KEY, VACC_RECVD_DT_1, VACC_RECVD_DT_2, VACC_RECVD_DT_3, VACC_RECVD_DT_4, VAC_GT_4_IND +INTO #TMP_VAC_REPEAT_OUT_DATE_Final +FROM #TMP_VAC_REPEAT_OUT_DATE +ORDER BY D_INVESTIGATION_REPEAT_KEY; + +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + +---------------------------------------26c. CREATE TABLE TMP_VAC_REPEAT_OUT_NUM_Pivot------------------------------------------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating TMP_VAC_REPEAT_OUT_NUM_Pivot'; + + SET @Proc_Step_no = 26; + +----c + IF OBJECT_ID('#TMP_VAC_REPEAT_OUT_NUM_Pivot', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_VAC_REPEAT_OUT_NUM_Pivot; + +END; + + IF OBJECT_ID('#TMP_VAC_REPEAT_OUT_NUM', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_VAC_REPEAT_OUT_NUM; + +END; + + IF OBJECT_ID('#TMP_VAC_REPEAT_OUT_NUM_final', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_VAC_REPEAT_OUT_NUM_Final; + +END; + + DECLARE @col AS nvarchar(max)= STUFF( + ( + SELECT DISTINCT + ',[' + CAST(NUM AS varchar) + ']' + FROM + ( + SELECT ROW_NUMBER() OVER( + ORDER BY(SELECT NULL)) AS num + FROM Sys.Objects + ) AS X + WHERE num <= 5 FOR XML PATH('') + ), 1, 1, ''); + + PRINT @col; + +CREATE TABLE #TMP_VAC_REPEAT_OUT_NUM_Pivot + ( + D_INVESTIGATION_REPEAT_KEY BIGINT, + INVESTIGATION_KEY BIGINT, + Page_Case_UId BIGINT, + VACC_DOSE_NBR_1 BIGINT, + VACC_DOSE_NBR_2 BIGINT, + VACC_DOSE_NBR_3 BIGINT, + VACC_DOSE_NBR_4 BIGINT, + VACC_DOSE_NBR_5 BIGINT + ); + +DECLARE @SqlCmds nvarchar(max)= ''; + + SET @SqlCmds = ' + SELECT + D_INVESTIGATION_REPEAT_KEY,INVESTIGATION_KEY,Page_Case_UId, + [1] as VACC_DOSE_NBR_1, + [2] as VACC_DOSE_NBR_2, + [3] as VACC_DOSE_NBR_3, + [4] as VACC_DOSE_NBR_4, + [5] as VACC_DOSE_NBR_5 + + Into #TMP_VAC_REPEAT_OUT_NUM_Pivot FROM + ( + SELECT p.* + FROM + ( + SELECT D_INVESTIGATION_REPEAT_KEY,VAC_VaccineDoseNum,SEQNBR,INVESTIGATION_KEY, Page_Case_UId + FROM #TMP_VAC_REPEAT + ) AS tbl + PIVOT + ( + MAX(VAC_VaccineDoseNum) FOR SEQNBR IN(' + @col + ') + ) AS p) + as c + '; + + PRINT @SqlCmds; + +EXEC sp_executesql @SqlCmds; + +SELECT *, CAST(NULL AS [varchar](2000)) AS VAC_DOSE_4_IND ---Dose Indicator +INTO #TMP_VAC_REPEAT_OUT_NUM +FROM #TMP_VAC_REPEAT_OUT_NUM_Pivot +WHERE LEN(VACC_DOSE_NBR_1) > 0 OR + LEN(VACC_DOSE_NBR_2) > 0 OR + LEN(VACC_DOSE_NBR_3) > 0 OR + LEN(VACC_DOSE_NBR_4) > 0 OR + LEN(VACC_DOSE_NBR_5) > 0 AND + PAGE_CASE_UID > 0; + +UPDATE #TMP_VAC_REPEAT_OUT_NUM +SET VAC_DOSE_4_IND = CASE + WHEN VACC_DOSE_NBR_5 IS NULL THEN NULL + ELSE 'True' + END; + +SELECT DISTINCT + Page_Case_UId, D_INVESTIGATION_REPEAT_KEY, INVESTIGATION_KEY, VACC_DOSE_NBR_1, VACC_DOSE_NBR_2, VACC_DOSE_NBR_3, VACC_DOSE_NBR_4, VAC_DOSE_4_IND +INTO #TMP_VAC_REPEAT_OUT_NUM_Final +FROM #TMP_VAC_REPEAT_OUT_NUM +ORDER BY D_INVESTIGATION_REPEAT_KEY; + +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + + +-------------------------------------------------------26d. CREATE TABLE TMP_VAC_REPEAT_OUT_FINAL1-------------------------------------------------------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating TMP_VAC_REPEAT_OUT_FINAL1'; + + SET @Proc_Step_no = 26; + +----d + IF OBJECT_ID('#TMP_VAC_REPEAT_OUT_FINAL1', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_VAC_REPEAT_OUT_FINAL1; + +END; + + +/* + DATA VAC_REPEAT_OUT_FINAL; + + MERGE VAC_REPEAT_OUT_DATE(IN=in1) VAC_REPEAT_OUT_NUM(IN=in2); + + BY D_INVESTIGATION_REPEAT_KEY; + + */ +SELECT DISTINCT + D.Page_Case_UId, D.D_INVESTIGATION_REPEAT_KEY, D.INVESTIGATION_KEY, VACC_DOSE_NBR_1, VACC_RECVD_DT_1, VACC_DOSE_NBR_2, VACC_RECVD_DT_2, VACC_DOSE_NBR_3, VACC_RECVD_DT_3, VACC_DOSE_NBR_4, VACC_RECVD_DT_4, VAC_GT_4_IND, VAC_DOSE_4_IND, CAST(NULL AS varchar(1000)) AS VACC_GT_4_IND ---------FinalIndicator +INTO #TMP_VAC_REPEAT_OUT_FINAL1 +FROM #TMP_VAC_REPEAT_OUT_Date_Final AS D + INNER JOIN + #TMP_VAC_REPEAT_OUT_NUM_Final AS N + ON D.D_INVESTIGATION_REPEAT_KEY = N.D_INVESTIGATION_REPEAT_KEY +ORDER BY D.D_INVESTIGATION_REPEAT_KEY; + +UPDATE #TMP_VAC_REPEAT_OUT_FINAL1 +SET VACC_GT_4_IND = CASE + WHEN LEN(RTRIM(VAC_DOSE_4_IND)) > 0 OR + LEN(RTRIM(VAC_GT_4_IND)) > 0 THEN 'True' + ELSE NULL + 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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + +--------------------------------------------------26e. CREATE TABLE TMP_VAC_REPEAT_OUT_FINAL-------------------------------------------------------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating TMP_VAC_REPEAT_OUT_FINAL'; + + SET @Proc_Step_no = 26; + +----e + IF OBJECT_ID('#TMP_VAC_REPEAT_OUT_FINAL', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_VAC_REPEAT_OUT_FINAL; + +END; + +SELECT Page_Case_UId, D_INVESTIGATION_REPEAT_KEY, INVESTIGATION_KEY, VACC_DOSE_NBR_1, VACC_RECVD_DT_1, VACC_DOSE_NBR_2, VACC_RECVD_DT_2, VACC_DOSE_NBR_3, VACC_RECVD_DT_3, VACC_DOSE_NBR_4, VACC_RECVD_DT_4, VACC_GT_4_IND ---------FinalIndicator +INTO #TMP_VAC_REPEAT_OUT_FINAL +FROM #TMP_VAC_REPEAT_OUT_FINAL1; + +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + + +---------------------------------------------------------Final Table 27 TMP_HEPATITIS_CASE_BASE------------------------------------------------------------------------------------------------ +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Generating TMP_HEPATITIS_CASE_BASE'; + + SET @Proc_Step_no = 27; + + IF OBJECT_ID('#TMP_HEPATITIS_CASE_BASE', 'U') IS NOT NULL +BEGIN +DROP TABLE #TMP_HEPATITIS_CASE_BASE; + +END; + +SELECT DISTINCT + A.INNC_NOTIFICATION_DT, ---1 + I.CASE_RPT_MMWR_WEEK, ---2 + I.CASE_RPT_MMWR_YEAR, ----3 + C.HEP_D_INFECTION_IND, ----4 + C.HEP_MEDS_RECVD_IND, ----5 + L.HEP_C_TOTAL_ANTIBODY, ----6 + I.DIAGNOSIS_DT, ------------7 + I.DIE_FRM_THIS_ILLNESS_IND, ----8 + I.DISEASE_IMPORTED_IND, -----9 + I.EARLIEST_RPT_TO_CNTY, ----10 + I.EARLIEST_RPT_TO_STATE_DT, ---11 + RTRIM(LTRIM(SUBSTRING(A.BINATIONAL_RPTNG_CRIT,1,300))) as BINATIONAL_RPTNG_CRIT, ---12 + E.CHILDCARE_CASE_IND, ---13 + E.CNTRY_USUAL_RESIDENCE, ---14 + E.CT_BABYSITTER_IND, ---15 + E.CT_CHILDCARE_IND, ----16 + E.CT_HOUSEHOLD_IND, ---17 + E.HEP_CONTACT_IND, ----18 + R.HEP_CONTACT_EVER_IND, ----19 + E.OTHER_CONTACT_IND, ---20 + ISNULL(NULLIF(E.COM_SRC_OUTBREAK_IND, ''), NULL) AS COM_SRC_OUTBREAK_IND, ---21 + E.CONTACT_TYPE_OTH, ----22 + E.CT_PLAYMATE_IND, ----23 + E.SEXUAL_PARTNER_IND, ----24 + E.DNP_HOUSEHOLD_CT_IND, ---25 + E.HEP_A_EPLINK_IND, ----25 + E.FEMALE_SEX_PRTNR_NBR, ---27 + E.FOODHNDLR_PRIOR_IND, ----28 + ISNULL(NULLIF(E.DNP_EMPLOYEE_IND, ''), NULL) AS DNP_EMPLOYEE_IND, -----29 + ISNULL(NULLIF(E.STREET_DRUG_INJECTED, ''), NULL) AS STREET_DRUG_INJECTED, -----30 + ISNULL(NULLIF(E.MALE_SEX_PRTNR_NBR, ''), NULL) AS MALE_SEX_PRTNR_NBR, ----31 + I.OUTBREAK_IND, -----32 + ISNULL(NULLIF(E.OBRK_FOODHNDLR_IND, ''), NULL) AS OBRK_FOODHNDLR_IND, ----33 + ISNULL(NULLIF(E.FOOD_OBRK_FOOD_ITEM, ''), NULL) AS FOOD_OBRK_FOOD_ITEM, ----34 + ISNULL(NULLIF(E.OBRK_NOFOODHNDLR_IND, ''), NULL) AS OBRK_NOFOODHNDLR_IND, ----35 + ISNULL(NULLIF(E.OBRK_UNIDENTIFIED_IND, ''), NULL) AS OBRK_UNIDENTIFIED_IND, ----36 + ISNULL(NULLIF(E.OBRK_WATERBORNE_IND, ''), NULL) AS OBRK_WATERBORNE_IND, ----37 + ISNULL(NULLIF(E.STREET_DRUG_USED, ''), NULL) AS STREET_DRUG_USED, ---38 + PO.SEX_PREF, ----39 + I.HSPTL_ADMISSION_DT, ----40 + I.HSPTL_DISCHARGE_DT, ----41 + I.HSPTL_DURATION_DAYS, ----42 + I.HSPTLIZD_IND, ---43 + I.ILLNESS_ONSET_DT, ----44 + I.INV_CASE_STATUS, ----45 + ---- ltrim(rtrim(I.INV_COMMENTS)) as INV_COMMENTS,----46--------7/21/2021 + LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE([INV_COMMENTS], CHAR(10), CHAR(32)), CHAR(13), CHAR(32)), CHAR(160), CHAR(32)), CHAR(9), CHAR(32)))) AS INV_COMMENTS, ----46--------7/21/2021 + I.INV_LOCAL_ID, ---47 + I.INV_RPT_DT, ---48 + I.INV_START_DT, ---49 + I.INVESTIGATION_STATUS, ---50 + I.JURISDICTION_NM, ---51 + L.ALT_SGPT_RESULT, ----52 + L.ANTI_HBS_POS_REAC_IND, -----53 + L.AST_SGOT_RESULT, ---54 + L.HEP_E_ANTIGEN, ----55 + L.HBE_AG_DT, ---56 + L.HEP_B_SURFACE_ANTIGEN, ----57 + L.HBS_AG_DT, ----58 + L.HEP_B_DNA, -----59 + L.HBV_NAT_DT, ----60 + L.HCV_RNA, ----61 + L.HCV_RNA_DT, ----62 + L.HEP_D_TEST_IND, ----63 + L.HEP_A_IGM_ANTIBODY, ----64 + L.IGM_ANTI_HAV_DT, ----65 + L.HEP_B_IGM_ANTIBODY, ----66 + L.IGM_ANTI_HBC_DT, ----67 + L.PREV_NEG_HEP_TEST_IND, ------68 + L.ANTIHCV_SIGCUT_RATIO, ----69 + L.ANTIHCV_SUPP_ASSAY, -----70 + L.SUPP_ANTI_HCV_DT, -----71 + L.ALT_RESULT_DT, ----72 + L.AST_RESULT_DT, -----73 + L.ALT_SGPT_RSLT_UP_LMT, ----74 + L.AST_SGOT_RSLT_UP_LMT, ----75 + L.HEP_A_TOTAL_ANTIBODY, ----76 + L.TOTAL_ANTI_HAV_DT, ----77 + L.HEP_B_TOTAL_ANTIBODY, ----78 + L.TOTAL_ANTI_HBC_DT, ----79 + L.TOTAL_ANTI_HCV_DT, ----80 + L.HEP_D_TOTAL_ANTIBODY, ----81 + L.TOTAL_ANTI_HDV_DT, ----82 + L.HEP_E_TOTAL_ANTIBODY, ----83 + L.TOTAL_ANTI_HEV_DT, ----84 + L.VERIFIED_TEST_DT, ----85 + I.LEGACY_CASE_ID, ---86 + MH.DIABETES_IND, ----87 + MH.DIABETES_DX_DT, ----88 + MH.PREGNANCY_DUE_DT, ----89 + MH.PAT_JUNDICED_IND, -----90 + MH.PAT_PREV_AWARE_IND, ----91 + MH.HEP_CARE_PROVIDER, ----92 + MH.TEST_REASON, ------93 + RTRIM(LTRIM(SUBSTRING(MH.TEST_REASON_OTH,1,150))) as TEST_REASON_OTH, -----94----10/18/2021 added the trim since the dest has only 150 length + MH.SYMPTOMATIC_IND, -----95 + M.MTH_BORN_OUTSIDE_US, ---96 + M.MTH_ETHNICITY, ------97 + M.MTH_HBS_AG_PRIOR_POS, ----98 + M.MTH_POS_AFTER, ------99 + M.MTH_POS_TEST_DT, ----100 + M.MTH_RACE, -----101 + M.MTH_BIRTH_COUNTRY, ----102 + I.NOT_SUBMIT_DT, ----103 + P.PAT_REPORTED_AGE, ----104 + P.PAT_REPORTED_AGE_UNIT, ----105 + P.PAT_CITY, ----106 + P.PAT_COUNTRY, ----107 + P.PAT_COUNTY, ----108 + P.PAT_CURR_GENDER, ---109 + P.PAT_DOB, ---110 + LTRIM(RTRIM(P.PAT_ETHNICITY)) AS PAT_ETHNICITY, ---111 + P.PAT_FIRST_NM, ---112 + P.PAT_LAST_NM, ---113 + P.PAT_LOCAL_ID, ---114 + P.PAT_MIDDLE_NM, ---115 + I.PAT_PREGNANT_IND, ---116 + P.PAT_RACE, ----117 + P.PAT_STATE, ----118 + LTRIM(RTRIM(P.PAT_STREET_ADDR_1)) AS PAT_STREET_ADDR_1, ---119-------------------7/14/2021 + P.PAT_STREET_ADDR_2, ----120 + P.PAT_ZIP_CODE, ----121 + HP.RPT_SRC_SOURCE_NM, ----122 + HP.RPT_SRC_STATE, ----123 + I.RPT_SRC_CD_DESC, ---124 + R.BLD_EXPOSURE_IND, ----125 + R.BLD_RECVD_IND, ----126 + R.BLD_RECVD_DT, ----127 + R.MED_DEN_BLD_CT_FRQ, ----128 + R.MED_DEN_EMP_EVER_IND, ----129 + R.MED_DEN_EMPLOYEE_IND, ---130 + R.CLOTFACTOR_PRIOR_1987, ----131 + R.BLD_CONTAM_IND, ------132 + R.DEN_WORK_OR_SURG_IND, ----133 + R.HEMODIALYSIS_IND, ----134 + R.LT_HEMODIALYSIS_IND, -----135 + R.HSPTL_PRIOR_ONSET_IND, ----136 + R.EVER_INJCT_NOPRSC_DRG, -----137 + R.INCAR_24PLUSHRS_IND, ---138 + R.INCAR_6PLUS_MO_IND, ---139 + R.EVER_INCAR_IND, ----140 + R.INCAR_TYPE_JAIL_IND, ----141 + R.INCAR_TYPE_PRISON_IND, ----142 + R.INCAR_TYPE_JUV_IND, ----143 + R.LAST6PLUSMO_INCAR_PER, ----144 + R.LAST6PLUSMO_INCAR_YR, ----145 + R.OUTPAT_IV_INF_IND, ----146 + R.LTCARE_RESIDENT_IND, ----147 + R.LIFE_SEX_PRTNR_NBR, ----148 + R.BLD_EXPOSURE_OTH, ----149 + R.PIERC_PRIOR_ONSET_IND, ----150 + R.PIERC_PERF_LOC_OTH, ----151 + R.PIERC_PERF_LOC, -----152 + R.PUB_SAFETY_BLD_CT_FRQ, ----153 + R.PUB_SAFETY_WORKER_IND, ----154 + R.STD_TREATED_IND, ----155 + R.STD_LAST_TREATMENT_YR, ---156 + R.NON_ORAL_SURGERY_IND, ---157 + R.TATT_PRIOR_ONSET_IND, ---158 + R.TATTOO_PERF_LOC, ----158 + R.TATT_PRIOR_LOC_OTH, ----160 + R.BLD_TRANSF_PRIOR_1992, ---161 + R.ORGN_TRNSP_PRIOR_1992, ----162 + I.TRANSMISSION_MODE, ----163 + T.HOUSEHOLD_TRAVEL_IND, ----164 + T.TRAVEL_OUT_USACAN_IND, ----165 + T.TRAVEL_OUT_USACAN_LOC, -----166 + T.HOUSEHOLD_TRAVEL_LOC, ----167 + T.TRAVEL_REASON, -----168 + V.IMM_GLOB_RECVD_IND, ----169 + V.GLOB_LAST_RECVD_YR, ----170 + V.VACC_RECVD_IND, ----171-------Has to be 10 digits long + VAC.VACC_DOSE_NBR_1, ----172 + VAC.VACC_RECVD_DT_1, ----173 + VAC.VACC_DOSE_NBR_2, ----174 + VAC.VACC_RECVD_DT_2, ----175 + VAC.VACC_DOSE_NBR_3, ----176 + VAC.VACC_RECVD_DT_3, -----177 + VAC.VACC_DOSE_NBR_4, -----178 + VAC.VACC_RECVD_DT_4, ---179 + VAC.VACC_GT_4_IND, -----180 + V.VACC_DOSE_RECVD_NBR, ----181 + V.VACC_LAST_RECVD_YR, -----182 + L.ANTI_HBSAG_TESTED_IND, ----183 + I.CONDITION_CD, -----184 + CAST(NULL AS datetime) AS EVENT_DATE, ----185 + I.IMPORT_FROM_CITY, ----186 + I.IMPORT_FROM_COUNTRY, ----187 + I.IMPORT_FROM_COUNTY, ----188 + I.IMPORT_FROM_STATE, ----189 + I.INVESTIGATION_KEY, -----190 + HP.INVESTIGATOR_NAME, -----191 + P.PAT_ELECTRONIC_IND, ----192 + HP.PHYS_CITY, ----193 + HP.PHYS_COUNTY, ----194 + HP.PHYS_NAME, ----195 + HP.PHYS_STATE, ----196 + I.PROGRAM_JURISDICTION_OID, ----197 + HP.RPT_SRC_CITY, ---198 + HP.RPT_SRC_COUNTY, ----199 + HP.RPT_SRC_COUNTY_CD, ---200 + HP.PHYSICIAN_UID, ----201 + P.PATIENT_UID, ----202 + I.CASE_UID, ---203 + HP.INVESTIGATOR_UID, ---204 + HP.REPORTING_SOURCE_UID, ---205 + CAST(NULL AS datetime) AS REFRESH_DATETIME, ---206 + P.PAT_BIRTH_COUNTRY,----207 + CAST(NULL AS varchar(2000)) AS EVENT_DATE_TYPE +INTO #TMP_HEPATITIS_CASE_BASE +FROM #TMP_Investigation AS I WITH(NOLOCK) + FULL OUTER JOIN #TMP_D_INV_LAB_FINDING AS L WITH(NOLOCK) ON I.INVESTIGATION_KEY = L.LAB_INV_KEY + FULL OUTER JOIN #TMP_D_INV_RISK_FACTOR AS R WITH(NOLOCK) ON I.INVESTIGATION_KEY = R.RISK_INV_KEY + FULL OUTER JOIN #TMP_D_INV_EPIDEMIOLOGY AS E WITH(NOLOCK) ON I.INVESTIGATION_KEY = E.EPIDEMIOLOGY_INV_KEY + FULL OUTER JOIN #TMP_D_Patient AS P WITH(NOLOCK) ON I.INVESTIGATION_KEY = P.Patient_INV_KEY + FULL OUTER JOIN #TMP_D_INV_VACCINATION AS V WITH(NOLOCK) ON I.INVESTIGATION_KEY = V.VACCINATION_INV_KEY + FULL OUTER JOIN #TMP_D_INV_TRAVEL AS T WITH(NOLOCK) ON I.INVESTIGATION_KEY = T.Travel_INV_KEY + FULL OUTER JOIN #TMP_D_INV_MOTHER AS M WITH(NOLOCK) ON I.INVESTIGATION_KEY = M.Mother_INV_KEY + FULL OUTER JOIN #TMP_D_INV_MEDICAL_HISTORY AS MH WITH(NOLOCK) ON I.INVESTIGATION_KEY = MH.MEDHistory_INV_KEY + FULL OUTER JOIN #TMP_D_INV_ADMINISTRATIVE AS A WITH(NOLOCK) ON I.INVESTIGATION_KEY = A.ADMIN_INV_KEY + FULL OUTER JOIN #TMP_D_INV_PATIENT_OBS AS PO WITH(NOLOCK) ON I.INVESTIGATION_KEY = PO.PATIENT_OBS_INV_KEY + FULL OUTER JOIN #TMP_HEP_PAT_PROV AS HP WITH(NOLOCK) ON I.INVESTIGATION_KEY = HP.HEP_PAT_PROV_INV_KEY + FULL OUTER JOIN #TMP_D_INV_CLINICAL AS C WITH(NOLOCK) ON I.INVESTIGATION_KEY = C.CLINICAL_INV_KEY + FULL OUTER JOIN #TMP_VAC_REPEAT_OUT_FINAL AS VAC WITH(NOLOCK) ON I.INVESTIGATION_KEY = VAC.INVESTIGATION_KEY +; + + +if @debug = 'true' +select * from #TMP_HEPATITIS_CASE_BASE; + + + +-------(--Actually Should be inner Join) +/*data HEPATITIS_CASE_BASE; + + set HEPATITIS_CASE_BASE; + + if RTRIM(LTRIM(LENGTHN(VACC_GT_4_IND)))<1 then do; + + VACC_GT_4_IND="FALSE"; + + end; + + + run; + +*/ +---7/14/2021(since getting error converting varchar to int) +UPDATE #TMP_HEPATITIS_CASE_BASE +SET LAST6PLUSMO_INCAR_PER = CASE + WHEN LAST6PLUSMO_INCAR_PER NOT LIKE N'%[^0-9.,-]%' AND + LAST6PLUSMO_INCAR_PER NOT LIKE '.' AND + ISNUMERIC(LAST6PLUSMO_INCAR_PER) = 1 THEN LAST6PLUSMO_INCAR_PER + ELSE 0 + END +where LAST6PLUSMO_INCAR_PER is not null +; + + +------------ /*EXT_LAST6PLUSMO_INCAR_PER= INPUT(RSK_IncarcTimeMonths, comma20.)*/----20 +UPDATE #TMP_HEPATITIS_CASE_BASE +SET LAST6PLUSMO_INCAR_YR = CASE + WHEN LAST6PLUSMO_INCAR_YR NOT LIKE N'%[^0-9.,-]%' AND + LAST6PLUSMO_INCAR_YR NOT LIKE '.' AND + ISNUMERIC(LAST6PLUSMO_INCAR_YR) = 1 THEN LAST6PLUSMO_INCAR_YR + ELSE 0 + END +where LAST6PLUSMO_INCAR_YR is not null +; + +------------ /*EXT_LAST6PLUSMO_INCAR_PER= INPUT(RSK_IncarcTimeMonths, comma20.)*/----20 +UPDATE #TMP_HEPATITIS_CASE_BASE +SET VACC_GT_4_IND = CASE + WHEN LEN(ISNULL(RTRIM(LTRIM(VACC_GT_4_IND)), '')) < 1 THEN 'False' + ELSE VACC_GT_4_IND + END; + + +/*proc sql; + + DELETE from HEPATITIS_CASE_BASE where patient_uid is null; + + quit; + +*/ +DELETE FROM #TMP_HEPATITIS_CASE_BASE +WHERE PATIENT_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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + +------------------------------------------------------------------------------------------------------------------------------------------------------ +UPDATE #TMP_HEPATITIS_CASE_BASE +SET REFRESH_DATETIME = GETDATE(); + +/*------------------ + /* Note = FIRST_RPT_TO_CNTY_DT is EARLIEST_RPT_TO_CNTY */ + ----1.---HSPTL_DISCHARGE_DT + UPDATE #TMP_HEPATITIS_CASE_BASE + SET EVENT_DATE = HSPTL_DISCHARGE_DT + WHERE EVENT_DATE IS NULL OR + EVENT_DATE > HSPTL_DISCHARGE_DT AND + HSPTL_DISCHARGE_DT IS NOT NULL; + + + ----2.---- HSPTL_ADMISSION_DT + UPDATE #TMP_HEPATITIS_CASE_BASE + SET EVENT_DATE = HSPTL_ADMISSION_DT + WHERE EVENT_DATE IS NULL OR + EVENT_DATE > HSPTL_ADMISSION_DT AND + HSPTL_ADMISSION_DT IS NOT NULL; + + + ----3. ---AST_RESULT_DT + UPDATE #TMP_HEPATITIS_CASE_BASE + SET EVENT_DATE = AST_RESULT_DT + WHERE EVENT_DATE IS NULL OR + EVENT_DATE > AST_RESULT_DT AND + AST_RESULT_DT IS NOT NULL; + + + ----4.---ALT_RESULT_DT + UPDATE #TMP_HEPATITIS_CASE_BASE + SET EVENT_DATE = ALT_RESULT_DT + WHERE EVENT_DATE IS NULL OR + EVENT_DATE > ALT_RESULT_DT AND + ALT_RESULT_DT IS NOT NULL; + + + ----5.--- INV_START_DT + UPDATE #TMP_HEPATITIS_CASE_BASE + SET EVENT_DATE = INV_START_DT + WHERE EVENT_DATE IS NULL OR + EVENT_DATE > INV_START_DT AND + INV_START_DT IS NOT NULL; + + + ---6. ---EARLIEST_RPT_TO_STATE_DT + UPDATE #TMP_HEPATITIS_CASE_BASE + SET EVENT_DATE = EARLIEST_RPT_TO_STATE_DT + WHERE EVENT_DATE IS NULL OR + EVENT_DATE > EARLIEST_RPT_TO_STATE_DT AND + EARLIEST_RPT_TO_STATE_DT IS NOT NULL; + + + ----7.----EARLIEST_RPT_TO_CNTY + UPDATE #TMP_HEPATITIS_CASE_BASE + SET EVENT_DATE = EARLIEST_RPT_TO_CNTY + WHERE EVENT_DATE IS NULL OR + EVENT_DATE > EARLIEST_RPT_TO_CNTY AND + EARLIEST_RPT_TO_CNTY IS NOT NULL; + + +/* + ----8---INV_RPT_DT + UPDATE #TMP_HEPATITIS_CASE_BASE + SET EVENT_DATE = INV_RPT_DT + Where EVENT_DATE iS NULL or + EVENT_DATE > INV_RPT_DT AND INV_RPT_DT IS NOT NULL + */ + ----8.----ILLNESS_ONSET_DT--- + UPDATE TMP_HEPATITIS_CASE_BASE + SET EVENT_DATE = DIAGNOSIS_DT + WHERE DIAGNOSIS_DT IS NOT NULL; + + + ----9.----ILLNESS_ONSET_DT--- + UPDATE TMP_HEPATITIS_CASE_BASE + SET EVENT_DATE = ILLNESS_ONSET_DT + WHERE ILLNESS_ONSET_DT IS NOT NULL; + + + ----10 If all Dates Are Null get the addTime from Investigation Table ---5-19-2021 + UPDATE TMP_HEPATITIS_CASE_BASE + SET EVENT_DATE = ADD_TIME + FROM [dbo].[INVESTIGATION] I + WHERE Event_Date IS NULL AND + I.INV_LOCAL_ID = TMP_HEPATITIS_CASE_BASE.INV_LOCAL_ID AND + I.[INVESTIGATION_KEY] = TMP_HEPATITIS_CASE_BASE.INVESTIGATION_KEY; +*/ + + + + + + + +--------------------------------------------------------------- + +/* + +IF OBJECT_ID('DBO.TEMP_MIN_MAX_NOTIFICATION') IS NOT NULL +DROP TABLE DBO.TEMP_MIN_MAX_NOTIFICATION; + +SELECT DISTINCT MIN(CASE + WHEN VERSION_CTRL_NBR = 1 + THEN RECORD_STATUS_CD + END) AS FIRSTNOTIFICATIONSTATUS + + +,MIN(CASE + WHEN RECORD_STATUS_CD = 'COMPLETED' + THEN RPT_SENT_TIME + END) AS FIRSTNOTIFICATIONSENDDATE +,PUBLIC_HEALTH_CASE_UID +INTO DBO.TEMP_MIN_MAX_NOTIFICATION +FROM DBO.TEMP_HEP_NOTIFICATION WITH (NOLOCK) +GROUP BY PUBLIC_HEALTH_CASE_UID +; +*/ + +------------------------------------------------------------------------------------------------------ +----HEP_D_TEST_IND to appear as N,Y U or Null--added on 5-19-2021 +UPDATE #TMP_HEPATITIS_CASE_BASE ----5/20-2021 +SET HEP_D_TEST_IND = CASE + WHEN HEP_D_TEST_IND IS NULL THEN NULL + WHEN HEP_D_TEST_IND = 'Yes' THEN 'Y' + WHEN HEP_D_TEST_IND = 'No' THEN 'N' + ELSE 'U' + END; + + +---------------------------------------------------------Final Table 28 TMP_HEPATITIS_CASE_BASE------------------------------------------------------------------------------------------------ +BEGIN TRANSACTION; + + SET @Proc_Step_name = 'Updating HEPATITIS_CASE_BASE'; + + SET @Proc_Step_no = 28; + +UPDATE [dbo].[HEPATITIS_DATAMART] +SET INNC_NOTIFICATION_DT = H.[INNC_NOTIFICATION_DT], CASE_RPT_MMWR_WEEK = H.[CASE_RPT_MMWR_WEEK], CASE_RPT_MMWR_YEAR = H.[CASE_RPT_MMWR_YEAR], HEP_D_INFECTION_IND = H.[HEP_D_INFECTION_IND], HEP_MEDS_RECVD_IND = H.[HEP_MEDS_RECVD_IND], HEP_C_TOTAL_ANTIBODY = H.[HEP_C_TOTAL_ANTIBODY], DIAGNOSIS_DT = H.[DIAGNOSIS_DT], DIE_FRM_THIS_ILLNESS_IND = H.[DIE_FRM_THIS_ILLNESS_IND], DISEASE_IMPORTED_IND = H.[DISEASE_IMPORTED_IND], EARLIEST_RPT_TO_CNTY = H.[EARLIEST_RPT_TO_CNTY], EARLIEST_RPT_TO_STATE_DT = H.[EARLIEST_RPT_TO_STATE_DT], BINATIONAL_RPTNG_CRIT = H.[BINATIONAL_RPTNG_CRIT], CHILDCARE_CASE_IND = H.[CHILDCARE_CASE_IND], CNTRY_USUAL_RESIDENCE = H.[CNTRY_USUAL_RESIDENCE], CT_BABYSITTER_IND = H.[CT_BABYSITTER_IND], CT_CHILDCARE_IND = H.[CT_CHILDCARE_IND], CT_HOUSEHOLD_IND = H.[CT_HOUSEHOLD_IND], HEP_CONTACT_IND = H.[HEP_CONTACT_IND], HEP_CONTACT_EVER_IND = H.[HEP_CONTACT_EVER_IND], OTHER_CONTACT_IND = H.[OTHER_CONTACT_IND], COM_SRC_OUTBREAK_IND = H.[COM_SRC_OUTBREAK_IND], CONTACT_TYPE_OTH = H.[CONTACT_TYPE_OTH], CT_PLAYMATE_IND = H.[CT_PLAYMATE_IND], SEXUAL_PARTNER_IND = H.[SEXUAL_PARTNER_IND], DNP_HOUSEHOLD_CT_IND = H.[DNP_HOUSEHOLD_CT_IND], HEP_A_EPLINK_IND = H.[HEP_A_EPLINK_IND], FEMALE_SEX_PRTNR_NBR = H.[FEMALE_SEX_PRTNR_NBR], FOODHNDLR_PRIOR_IND = H.[FOODHNDLR_PRIOR_IND], DNP_EMPLOYEE_IND = H.[DNP_EMPLOYEE_IND], STREET_DRUG_INJECTED = H.[STREET_DRUG_INJECTED], MALE_SEX_PRTNR_NBR = H.[MALE_SEX_PRTNR_NBR], OUTBREAK_IND = H.[OUTBREAK_IND], OBRK_FOODHNDLR_IND = H.[OBRK_FOODHNDLR_IND], FOOD_OBRK_FOOD_ITEM = H.[FOOD_OBRK_FOOD_ITEM], OBRK_NOFOODHNDLR_IND = H.[OBRK_NOFOODHNDLR_IND], OBRK_UNIDENTIFIED_IND = H.[OBRK_UNIDENTIFIED_IND], OBRK_WATERBORNE_IND = H.[OBRK_WATERBORNE_IND], STREET_DRUG_USED = H.[STREET_DRUG_USED], + SEX_PREF = H.[SEX_PREF], HSPTL_ADMISSION_DT = H.[HSPTL_ADMISSION_DT], HSPTL_DISCHARGE_DT = H.[HSPTL_DISCHARGE_DT], HSPTL_DURATION_DAYS = H.[HSPTL_DURATION_DAYS], HSPTLIZD_IND = H.[HSPTLIZD_IND], ILLNESS_ONSET_DT = H.[ILLNESS_ONSET_DT], INV_CASE_STATUS = H.[INV_CASE_STATUS], INV_COMMENTS = H.[INV_COMMENTS], INV_LOCAL_ID = H.[INV_LOCAL_ID], INV_RPT_DT = H.[INV_RPT_DT], INV_START_DT = H.[INV_START_DT], INVESTIGATION_STATUS = H.[INVESTIGATION_STATUS], JURISDICTION_NM = H.[JURISDICTION_NM], ALT_SGPT_RESULT = H.[ALT_SGPT_RESULT], ANTI_HBS_POS_REAC_IND = H.[ANTI_HBS_POS_REAC_IND], AST_SGOT_RESULT = H.[AST_SGOT_RESULT], HEP_E_ANTIGEN = H.[HEP_E_ANTIGEN], HBE_AG_DT = H.[HBE_AG_DT], HEP_B_SURFACE_ANTIGEN = H.[HEP_B_SURFACE_ANTIGEN], HBS_AG_DT = H.[HBS_AG_DT], HBV_NAT_DT = H.[HBV_NAT_DT], HCV_RNA = H.[HCV_RNA], + HCV_RNA_DT = H.[HCV_RNA_DT], HEP_D_TEST_IND = H.[HEP_D_TEST_IND], HEP_A_IGM_ANTIBODY = H.[HEP_A_IGM_ANTIBODY], IGM_ANTI_HAV_DT = H.[IGM_ANTI_HAV_DT], HEP_B_IGM_ANTIBODY = H.[HEP_B_IGM_ANTIBODY], IGM_ANTI_HBC_DT = H.[IGM_ANTI_HBC_DT], PREV_NEG_HEP_TEST_IND = H.[PREV_NEG_HEP_TEST_IND], ANTIHCV_SIGCUT_RATIO = H.[ANTIHCV_SIGCUT_RATIO], ANTIHCV_SUPP_ASSAY = H.[ANTIHCV_SUPP_ASSAY], SUPP_ANTI_HCV_DT = H.[SUPP_ANTI_HCV_DT], ALT_RESULT_DT = H.[ALT_RESULT_DT], AST_RESULT_DT = H.[AST_RESULT_DT], ALT_SGPT_RSLT_UP_LMT = H.[ALT_SGPT_RSLT_UP_LMT], AST_SGOT_RSLT_UP_LMT = H.[AST_SGOT_RSLT_UP_LMT], HEP_A_TOTAL_ANTIBODY = H.[HEP_A_TOTAL_ANTIBODY], TOTAL_ANTI_HAV_DT = H.[TOTAL_ANTI_HAV_DT], HEP_B_TOTAL_ANTIBODY = H.[HEP_B_TOTAL_ANTIBODY], TOTAL_ANTI_HBC_DT = H.[TOTAL_ANTI_HBC_DT], TOTAL_ANTI_HCV_DT = H.[TOTAL_ANTI_HCV_DT], + HEP_D_TOTAL_ANTIBODY = H.[HEP_D_TOTAL_ANTIBODY], TOTAL_ANTI_HDV_DT = H.[TOTAL_ANTI_HDV_DT], HEP_E_TOTAL_ANTIBODY = H.[HEP_E_TOTAL_ANTIBODY], TOTAL_ANTI_HEV_DT = H.[TOTAL_ANTI_HEV_DT], VERIFIED_TEST_DT = H.[VERIFIED_TEST_DT], LEGACY_CASE_ID = H.[LEGACY_CASE_ID], DIABETES_IND = H.[DIABETES_IND], DIABETES_DX_DT = H.[DIABETES_DX_DT], PREGNANCY_DUE_DT = H.[PREGNANCY_DUE_DT], PAT_JUNDICED_IND = H.[PAT_JUNDICED_IND], PAT_PREV_AWARE_IND = H.[PAT_PREV_AWARE_IND], HEP_CARE_PROVIDER = H.[HEP_CARE_PROVIDER], TEST_REASON = H.[TEST_REASON], TEST_REASON_OTH = H.[TEST_REASON_OTH], SYMPTOMATIC_IND = H.[SYMPTOMATIC_IND], MTH_BORN_OUTSIDE_US = H.[MTH_BORN_OUTSIDE_US], MTH_ETHNICITY = H.[MTH_ETHNICITY], MTH_HBS_AG_PRIOR_POS = H.[MTH_HBS_AG_PRIOR_POS], MTH_POS_AFTER = H.[MTH_POS_AFTER], MTH_POS_TEST_DT = H.[MTH_POS_TEST_DT], MTH_RACE = H.[MTH_RACE], MTH_BIRTH_COUNTRY = H.[MTH_BIRTH_COUNTRY], NOT_SUBMIT_DT = H.[NOT_SUBMIT_DT], PAT_REPORTED_AGE = H.[PAT_REPORTED_AGE], PAT_REPORTED_AGE_UNIT = H.[PAT_REPORTED_AGE_UNIT], PAT_CITY = H.[PAT_CITY], PAT_COUNTRY = H.[PAT_COUNTRY], PAT_COUNTY = H.[PAT_COUNTY], PAT_CURR_GENDER = H.[PAT_CURR_GENDER], PAT_DOB = H.[PAT_DOB], PAT_ETHNICITY = H.[PAT_ETHNICITY], PAT_FIRST_NM = H.[PAT_FIRST_NM], PAT_LAST_NM = H.[PAT_LAST_NM], PAT_LOCAL_ID = H.[PAT_LOCAL_ID], PAT_MIDDLE_NM = H.[PAT_MIDDLE_NM], PAT_PREGNANT_IND = H.[PAT_PREGNANT_IND], PAT_RACE = H.[PAT_RACE], PAT_STATE = H.[PAT_STATE], PAT_STREET_ADDR_1 = H.[PAT_STREET_ADDR_1], PAT_STREET_ADDR_2 = H.[PAT_STREET_ADDR_2], PAT_ZIP_CODE = H.[PAT_ZIP_CODE], RPT_SRC_SOURCE_NM = H.[RPT_SRC_SOURCE_NM], RPT_SRC_STATE = H.[RPT_SRC_STATE], RPT_SRC_CD_DESC = H.[RPT_SRC_CD_DESC], BLD_EXPOSURE_IND = H.[BLD_EXPOSURE_IND], BLD_RECVD_IND = H.[BLD_RECVD_IND], BLD_RECVD_DT = H.[BLD_RECVD_DT], MED_DEN_BLD_CT_FRQ = H.[MED_DEN_BLD_CT_FRQ], MED_DEN_EMPLOYEE_IND = H.[MED_DEN_EMPLOYEE_IND], MED_DEN_EMP_EVER_IND = H.[MED_DEN_EMP_EVER_IND], CLOTFACTOR_PRIOR_1987 = H.[CLOTFACTOR_PRIOR_1987], BLD_CONTAM_IND = H.[BLD_CONTAM_IND], DEN_WORK_OR_SURG_IND = H.[DEN_WORK_OR_SURG_IND], HEMODIALYSIS_IND = H.[HEMODIALYSIS_IND], LT_HEMODIALYSIS_IND = H.[LT_HEMODIALYSIS_IND], HSPTL_PRIOR_ONSET_IND = H.[HSPTL_PRIOR_ONSET_IND], EVER_INJCT_NOPRSC_DRG = H.[EVER_INJCT_NOPRSC_DRG], INCAR_24PLUSHRS_IND = H.[INCAR_24PLUSHRS_IND], INCAR_6PLUS_MO_IND = H.[INCAR_6PLUS_MO_IND], EVER_INCAR_IND = H.[EVER_INCAR_IND], INCAR_TYPE_JAIL_IND = H.[INCAR_TYPE_JAIL_IND], INCAR_TYPE_PRISON_IND = H.[INCAR_TYPE_PRISON_IND], + INCAR_TYPE_JUV_IND = H.[INCAR_TYPE_JUV_IND], LAST6PLUSMO_INCAR_PER = H.[LAST6PLUSMO_INCAR_PER], LAST6PLUSMO_INCAR_YR = H.[LAST6PLUSMO_INCAR_YR], OUTPAT_IV_INF_IND = H.[OUTPAT_IV_INF_IND], LTCARE_RESIDENT_IND = H.[LTCARE_RESIDENT_IND], LIFE_SEX_PRTNR_NBR = H.[LIFE_SEX_PRTNR_NBR], BLD_EXPOSURE_OTH = H.[BLD_EXPOSURE_OTH], PIERC_PRIOR_ONSET_INd = H.[PIERC_PRIOR_ONSET_IND], PIERC_PERF_LOC_OTH = H.[PIERC_PERF_LOC_OTH], PIERC_PERF_LOC = H.[PIERC_PERF_LOC], PUB_SAFETY_BLD_CT_FRQ = H.[PUB_SAFETY_BLD_CT_FRQ], PUB_SAFETY_WORKER_IND = H.[PUB_SAFETY_WORKER_IND], STD_TREATED_IND = H.[STD_TREATED_IND], STD_LAST_TREATMENT_YR = H.[STD_LAST_TREATMENT_YR], NON_ORAL_SURGERY_IND = H.[NON_ORAL_SURGERY_IND], TATT_PRIOR_ONSET_IND = H.[TATT_PRIOR_ONSET_IND], TATTOO_PERF_LOC = H.[TATTOO_PERF_LOC], TATT_PRIOR_LOC_OTH = H.[TATT_PRIOR_LOC_OTH], BLD_TRANSF_PRIOR_1992 = H.[BLD_TRANSF_PRIOR_1992], ORGN_TRNSP_PRIOR_1992 = H.[ORGN_TRNSP_PRIOR_1992], TRANSMISSION_MODE = H.[TRANSMISSION_MODE], HOUSEHOLD_TRAVEL_IND = H.[HOUSEHOLD_TRAVEL_IND], TRAVEL_OUT_USACAN_IND = H.[TRAVEL_OUT_USACAN_IND], TRAVEL_OUT_USACAN_LOC = H.[TRAVEL_OUT_USACAN_LOC], HOUSEHOLD_TRAVEL_LOC = H.[HOUSEHOLD_TRAVEL_LOC], TRAVEL_REASON = H.[TRAVEL_REASON], IMM_GLOB_RECVD_IND = H.[IMM_GLOB_RECVD_IND], GLOB_LAST_RECVD_YR = H.[GLOB_LAST_RECVD_YR], VACC_RECVD_IND = H.[VACC_RECVD_IND], VACC_DOSE_NBR_1 = H.[VACC_DOSE_NBR_1], VACC_RECVD_DT_1 = H.[VACC_RECVD_DT_1], VACC_DOSE_NBR_2 = H.[VACC_DOSE_NBR_2], VACC_RECVD_DT_2 = H.[VACC_RECVD_DT_2], VACC_DOSE_NBR_3 = H.[VACC_DOSE_NBR_3], VACC_RECVD_DT_3 = H.[VACC_RECVD_DT_3], VACC_DOSE_NBR_4 = H.[VACC_DOSE_NBR_4], VACC_RECVD_DT_4 = H.[VACC_RECVD_DT_4], VACC_GT_4_IND = H.[VACC_GT_4_IND], VACC_DOSE_RECVD_NBR = H.[VACC_DOSE_RECVD_NBR], VACC_LAST_RECVD_YR = H.[VACC_LAST_RECVD_YR], ANTI_HBSAG_TESTED_IND = H.[ANTI_HBSAG_TESTED_IND], CONDITION_CD = H.[CONDITION_CD], EVENT_DATE = H.[EVENT_DATE], IMPORT_FROM_CITY = H.[IMPORT_FROM_CITY], IMPORT_FROM_COUNTRY = H.[IMPORT_FROM_COUNTRY], IMPORT_FROM_COUNTY = H.[IMPORT_FROM_COUNTY], IMPORT_FROM_STATE = H.[IMPORT_FROM_STATE], INVESTIGATION_KEY = H.[INVESTIGATION_KEY], INVESTIGATOR_NAME = H.[INVESTIGATOR_NAME], PAT_ELECTRONIC_IND = H.[PAT_ELECTRONIC_IND], PHYS_CITY = H.[PHYS_CITY], PHYS_COUNTY = H.[PHYS_COUNTY], PHYS_NAME = H.[PHYS_NAME], PHYS_STATE = H.[PHYS_STATE], PROGRAM_JURISDICTION_OID = H.[PROGRAM_JURISDICTION_OID], RPT_SRC_CITY = H.[RPT_SRC_CITY], RPT_SRC_COUNTY = H.[RPT_SRC_COUNTY], RPT_SRC_COUNTY_CD = H.[RPT_SRC_COUNTY_CD], PHYSICIAN_UID = H.[PHYSICIAN_UID], PATIENT_UID = H.[PATIENT_UID], CASE_UID = H.[CASE_UID], INVESTIGATOR_UID = H.[INVESTIGATOR_UID], REPORTING_SOURCE_UID = H.[REPORTING_SOURCE_UID], REFRESH_DATETIME = H.[REFRESH_DATETIME], PAT_BIRTH_COUNTRY = H.[PAT_BIRTH_COUNTRY] +FROM #TMP_HEPATITIS_CASE_BASE H WITH(NOLOCK) +WHERE H.[CASE_UID] = [dbo].[HEPATITIS_DATAMART].[CASE_UID] AND + H.[PATIENT_UID] = [dbo].[HEPATITIS_DATAMART].[PATIENT_UID] AND + H.[INVESTIGATION_KEY] = [dbo].[HEPATITIS_DATAMART].[INVESTIGATION_KEY]; + +COMMIT TRANSACTION; + + +--------------------------------------29.-----Final ---Inserting into dbo.HEPATITIS_DATAMART---------------------------------------------- +BEGIN TRANSACTION; + + SET @PROC_STEP_NO = 29; + + SET @PROC_STEP_NAME = 'Inserting new entries dbo.HEPATITIS_DATAMART'; + +INSERT INTO dbo.[HEPATITIS_DATAMART]( INNC_NOTIFICATION_DT, ---1 + CASE_RPT_MMWR_WEEK, ---2 + CASE_RPT_MMWR_YEAR, ----3 + HEP_D_INFECTION_IND, ----4 + HEP_MEDS_RECVD_IND, ----5 + HEP_C_TOTAL_ANTIBODY, ----6 + DIAGNOSIS_DT, ------------7 + DIE_FRM_THIS_ILLNESS_IND, ----8 + DISEASE_IMPORTED_IND, -----9 + EARLIEST_RPT_TO_CNTY, ----10 + EARLIEST_RPT_TO_STATE_DT, ---11 + BINATIONAL_RPTNG_CRIT, ---12 + CHILDCARE_CASE_IND, ---13 + CNTRY_USUAL_RESIDENCE, ---14 + CT_BABYSITTER_IND, ---15 + CT_CHILDCARE_IND, ----16 + CT_HOUSEHOLD_IND, ---17 + HEP_CONTACT_IND, ----18 + HEP_CONTACT_EVER_IND, ----19 + OTHER_CONTACT_IND, ---20 + COM_SRC_OUTBREAK_IND, ---21 + CONTACT_TYPE_OTH, ----22 + CT_PLAYMATE_IND, ----23 + SEXUAL_PARTNER_IND, ----24 + DNP_HOUSEHOLD_CT_IND, ---25 + HEP_A_EPLINK_IND, ----25 + FEMALE_SEX_PRTNR_NBR, ---27 + FOODHNDLR_PRIOR_IND, ----28 + DNP_EMPLOYEE_IND, -----29 + STREET_DRUG_INJECTED, -----30 + MALE_SEX_PRTNR_NBR, ----31 + OUTBREAK_IND, -----32 + OBRK_FOODHNDLR_IND, ----33 + FOOD_OBRK_FOOD_ITEM, ----34 + OBRK_NOFOODHNDLR_IND, ----35 + OBRK_UNIDENTIFIED_IND, ----36 + OBRK_WATERBORNE_IND, ----37 + STREET_DRUG_USED, ---38 + SEX_PREF, ----39 + HSPTL_ADMISSION_DT, ----40 + HSPTL_DISCHARGE_DT, ----41 + HSPTL_DURATION_DAYS, ----42 + HSPTLIZD_IND, ---43 + ILLNESS_ONSET_DT, ----44 + INV_CASE_STATUS, ----45 + INV_COMMENTS, ----46 + INV_LOCAL_ID, ---47 + INV_RPT_DT, ---48 + INV_START_DT, ---49 + INVESTIGATION_STATUS, ---50 + JURISDICTION_NM, ---51 + ALT_SGPT_RESULT, ----52 + ANTI_HBS_POS_REAC_IND, -----53 + AST_SGOT_RESULT, ---54 + HEP_E_ANTIGEN, ----55 + HBE_AG_DT, ---56 + HEP_B_SURFACE_ANTIGEN, ----57 + HBS_AG_DT, ----58 + HEP_B_DNA, -----59 + HBV_NAT_DT, ----60 + HCV_RNA, ----61 + HCV_RNA_DT, ----62 + HEP_D_TEST_IND, ----63 + HEP_A_IGM_ANTIBODY, ----64 + IGM_ANTI_HAV_DT, ----65 + HEP_B_IGM_ANTIBODY, ----66 + IGM_ANTI_HBC_DT, ----67 + PREV_NEG_HEP_TEST_IND, ------68 + ANTIHCV_SIGCUT_RATIO, ----69 + ANTIHCV_SUPP_ASSAY, -----70 + SUPP_ANTI_HCV_DT, -----71 + ALT_RESULT_DT, ----72 + AST_RESULT_DT, -----73 + ALT_SGPT_RSLT_UP_LMT, ----74 + AST_SGOT_RSLT_UP_LMT, ----75 + HEP_A_TOTAL_ANTIBODY, ----76 + TOTAL_ANTI_HAV_DT, ----77 + HEP_B_TOTAL_ANTIBODY, ----78 + TOTAL_ANTI_HBC_DT, ----79 + TOTAL_ANTI_HCV_DT, ----80 + HEP_D_TOTAL_ANTIBODY, ----81 + TOTAL_ANTI_HDV_DT, ----82 + HEP_E_TOTAL_ANTIBODY, ----83 + TOTAL_ANTI_HEV_DT, ----84 + VERIFIED_TEST_DT, ----85 + LEGACY_CASE_ID, ---86 + DIABETES_IND, ----87 + DIABETES_DX_DT, ----88 + PREGNANCY_DUE_DT, ----89 + PAT_JUNDICED_IND, -----90 + PAT_PREV_AWARE_IND, ----91 + HEP_CARE_PROVIDER, ----92 + TEST_REASON, ------93 + TEST_REASON_OTH, -----94 + SYMPTOMATIC_IND, -----95 + MTH_BORN_OUTSIDE_US, ---96 + MTH_ETHNICITY, ------97 + MTH_HBS_AG_PRIOR_POS, ----98 + MTH_POS_AFTER, ------99 + MTH_POS_TEST_DT, ----100 + MTH_RACE, -----101 + MTH_BIRTH_COUNTRY, ----102 + NOT_SUBMIT_DT, ----103 + PAT_REPORTED_AGE, ----104 + PAT_REPORTED_AGE_UNIT, ----105 + PAT_CITY, ----106 + PAT_COUNTRY, ----107 + PAT_COUNTY, ----108 + PAT_CURR_GENDER, ---109 + PAT_DOB, ---110 + PAT_ETHNICITY, ---111 + PAT_FIRST_NM, ---112 + PAT_LAST_NM, ---113 + PAT_LOCAL_ID, ---114 + PAT_MIDDLE_NM, ---115 + PAT_PREGNANT_IND, ---116 + PAT_RACE, ----117 + PAT_STATE, ----118 + PAT_STREET_ADDR_1, ---119 + PAT_STREET_ADDR_2, ----120 + PAT_ZIP_CODE, ----121 + RPT_SRC_SOURCE_NM, ----122 + RPT_SRC_STATE, ----123 + RPT_SRC_CD_DESC, ---124 + BLD_EXPOSURE_IND, ----125 + BLD_RECVD_IND, ----126 + BLD_RECVD_DT, ----127 + MED_DEN_BLD_CT_FRQ, ----128 + MED_DEN_EMP_EVER_IND, ----129 + MED_DEN_EMPLOYEE_IND, ---130 + CLOTFACTOR_PRIOR_1987, ----131 + BLD_CONTAM_IND, ------132 + DEN_WORK_OR_SURG_IND, ----133 + HEMODIALYSIS_IND, ----134 + LT_HEMODIALYSIS_IND, -----135 + HSPTL_PRIOR_ONSET_IND, ----136 + EVER_INJCT_NOPRSC_DRG, -----137 + INCAR_24PLUSHRS_IND, ---138 + INCAR_6PLUS_MO_IND, ---139 + EVER_INCAR_IND, ----140 + INCAR_TYPE_JAIL_IND, ----141 + INCAR_TYPE_PRISON_IND, ----142 + INCAR_TYPE_JUV_IND, ----143 + LAST6PLUSMO_INCAR_PER, ----144 + LAST6PLUSMO_INCAR_YR, ----145 + OUTPAT_IV_INF_IND, ----146 + LTCARE_RESIDENT_IND, ----147 + LIFE_SEX_PRTNR_NBR, ----148 + BLD_EXPOSURE_OTH, ----149 + PIERC_PRIOR_ONSET_IND, ----150 + PIERC_PERF_LOC_OTH, ----151 + PIERC_PERF_LOC, -----152 + PUB_SAFETY_BLD_CT_FRQ, ----153 + PUB_SAFETY_WORKER_IND, ----154 + STD_TREATED_IND, ----155 + STD_LAST_TREATMENT_YR, ---156 + NON_ORAL_SURGERY_IND, ---157 + TATT_PRIOR_ONSET_IND, ---158 + TATTOO_PERF_LOC, ----158 + TATT_PRIOR_LOC_OTH, ----160 + BLD_TRANSF_PRIOR_1992, ---161 + ORGN_TRNSP_PRIOR_1992, ----162 + TRANSMISSION_MODE, ----163 + HOUSEHOLD_TRAVEL_IND, ----164 + TRAVEL_OUT_USACAN_IND, ----165 + TRAVEL_OUT_USACAN_LOC, -----166 + HOUSEHOLD_TRAVEL_LOC, ----167 + TRAVEL_REASON, -----168 + IMM_GLOB_RECVD_IND, ----169 + GLOB_LAST_RECVD_YR, ----170 + VACC_RECVD_IND, ----171 + VACC_DOSE_NBR_1, ----172 + VACC_RECVD_DT_1, ----173 + VACC_DOSE_NBR_2, ----174 + VACC_RECVD_DT_2, ----175 + VACC_DOSE_NBR_3, ----176 + VACC_RECVD_DT_3, -----177 + VACC_DOSE_NBR_4, -----178 + VACC_RECVD_DT_4, ---179 + VACC_GT_4_IND, -----180 + VACC_DOSE_RECVD_NBR, ----181 + VACC_LAST_RECVD_YR, -----182 + ANTI_HBSAG_TESTED_IND, ----183 + CONDITION_CD, -----184 + EVENT_DATE, ----185 + IMPORT_FROM_CITY, ----186 + IMPORT_FROM_COUNTRY, ----187 + IMPORT_FROM_COUNTY, ----188 + IMPORT_FROM_STATE, ----189 + INVESTIGATION_KEY, -----190 + INVESTIGATOR_NAME, -----191 + PAT_ELECTRONIC_IND, ----192 + PHYS_CITY, ----193 + PHYS_COUNTY, ----194 + PHYS_NAME, ----195 + PHYS_STATE, ----196 + PROGRAM_JURISDICTION_OID, ----197 + RPT_SRC_CITY, ---198 + RPT_SRC_COUNTY, ----199 + RPT_SRC_COUNTY_CD, ---200 + PHYSICIAN_UID, ----201 + PATIENT_UID, ----202 + CASE_UID, ---203 + INVESTIGATOR_UID, ---204 + REPORTING_SOURCE_UID, ---205 + REFRESH_DATETIME, ---206 + PAT_BIRTH_COUNTRY ----207 +) +SELECT INNC_NOTIFICATION_DT, + CASE_RPT_MMWR_WEEK, + CASE_RPT_MMWR_YEAR, + cast(HEP_D_INFECTION_IND as varchar(300)), + cast(HEP_MEDS_RECVD_IND as varchar(300)), + cast(HEP_C_TOTAL_ANTIBODY as varchar(300)), + DIAGNOSIS_DT, + cast(DIE_FRM_THIS_ILLNESS_IND as varchar(300)), + cast(DISEASE_IMPORTED_IND as varchar(300)), + EARLIEST_RPT_TO_CNTY, + EARLIEST_RPT_TO_STATE_DT, + cast(BINATIONAL_RPTNG_CRIT as varchar(300)), + cast(CHILDCARE_CASE_IND as varchar(300)), + cast(CNTRY_USUAL_RESIDENCE as varchar(300)), + cast(CT_BABYSITTER_IND as varchar(300)), + cast(CT_CHILDCARE_IND as varchar(300)), + cast(CT_HOUSEHOLD_IND as varchar(300)), + cast(HEP_CONTACT_IND as varchar(300)), + cast(HEP_CONTACT_EVER_IND as varchar(300)), + cast(OTHER_CONTACT_IND as varchar(300)), + cast(COM_SRC_OUTBREAK_IND as varchar(300)), + cast(CONTACT_TYPE_OTH as varchar(100)), + cast(CT_PLAYMATE_IND as varchar(300)), + cast(SEXUAL_PARTNER_IND as varchar(300)), + cast(DNP_HOUSEHOLD_CT_IND as varchar(300)), + cast(HEP_A_EPLINK_IND as varchar(300)), + FEMALE_SEX_PRTNR_NBR, + cast(FOODHNDLR_PRIOR_IND as varchar(300)), + cast(DNP_EMPLOYEE_IND as varchar(300)), + cast(STREET_DRUG_INJECTED as varchar(300)), + MALE_SEX_PRTNR_NBR, + cast(OUTBREAK_IND as varchar(300)), + cast(OBRK_FOODHNDLR_IND as varchar(300)), + cast(FOOD_OBRK_FOOD_ITEM as varchar(100)), + cast(OBRK_NOFOODHNDLR_IND as varchar(300)), + cast(OBRK_UNIDENTIFIED_IND as varchar(300)), + cast(OBRK_WATERBORNE_IND as varchar(300)), + cast(STREET_DRUG_USED as varchar(300)), + cast(SEX_PREF as varchar(300)), + HSPTL_ADMISSION_DT, + HSPTL_DISCHARGE_DT, + HSPTL_DURATION_DAYS, + cast(HSPTLIZD_IND as varchar(300)), + ILLNESS_ONSET_DT, + cast(INV_CASE_STATUS as varchar(300)), + cast(INV_COMMENTS as varchar(2000)), + cast(INV_LOCAL_ID as varchar(25)), + INV_RPT_DT, + INV_START_DT, + cast(INVESTIGATION_STATUS as varchar(300)), + cast(JURISDICTION_NM as varchar(300)), + ALT_SGPT_RESULT, + cast(ANTI_HBS_POS_REAC_IND as varchar(300)), + AST_SGOT_RESULT, + cast(HEP_E_ANTIGEN as varchar(300)), + HBE_AG_DT, + cast(HEP_B_SURFACE_ANTIGEN as varchar(300)), + HBS_AG_DT, + cast(HEP_B_DNA as varchar(300)), + HBV_NAT_DT, + cast(HCV_RNA as varchar(300)), + HCV_RNA_DT, + cast(HEP_D_TEST_IND as varchar(300)), + cast(HEP_A_IGM_ANTIBODY as varchar(300)), + IGM_ANTI_HAV_DT, + cast(HEP_B_IGM_ANTIBODY as varchar(300)), + IGM_ANTI_HBC_DT, + cast(PREV_NEG_HEP_TEST_IND as varchar(300)), + cast(ANTIHCV_SIGCUT_RATIO as varchar(25)), + cast(ANTIHCV_SUPP_ASSAY as varchar(300)), + SUPP_ANTI_HCV_DT, + ALT_RESULT_DT, + AST_RESULT_DT, + ALT_SGPT_RSLT_UP_LMT, + AST_SGOT_RSLT_UP_LMT, + cast(HEP_A_TOTAL_ANTIBODY as varchar(300)), + TOTAL_ANTI_HAV_DT, + cast(HEP_B_TOTAL_ANTIBODY as varchar(300)), + TOTAL_ANTI_HBC_DT, + TOTAL_ANTI_HCV_DT, + cast(HEP_D_TOTAL_ANTIBODY as varchar(300)), + TOTAL_ANTI_HDV_DT, + cast(HEP_E_TOTAL_ANTIBODY as varchar(300)), + TOTAL_ANTI_HEV_DT, + VERIFIED_TEST_DT, + cast(LEGACY_CASE_ID as varchar(15)), + cast(DIABETES_IND as varchar(300)), + DIABETES_DX_DT, + PREGNANCY_DUE_DT, + cast(PAT_JUNDICED_IND as varchar(300)), + cast(PAT_PREV_AWARE_IND as varchar(300)), + cast(HEP_CARE_PROVIDER as varchar(300)), + cast(TEST_REASON as varchar(300)), + cast(TEST_REASON_OTH as varchar(150)), + cast(SYMPTOMATIC_IND as varchar(300)), + cast(MTH_BORN_OUTSIDE_US as varchar(300)), + cast(MTH_ETHNICITY as varchar(300)), + cast(MTH_HBS_AG_PRIOR_POS as varchar(300)), + cast(MTH_POS_AFTER as varchar(300)), + MTH_POS_TEST_DT, + cast(MTH_RACE as varchar(300)), + cast(MTH_BIRTH_COUNTRY as varchar(300)), + NOT_SUBMIT_DT, + PAT_REPORTED_AGE, + cast(PAT_REPORTED_AGE_UNIT as varchar(300)), + cast(PAT_CITY as varchar(50)), + cast(PAT_COUNTRY as varchar(300)), + cast(PAT_COUNTY as varchar(300)), + cast(PAT_CURR_GENDER as varchar(300)), + PAT_DOB, + cast(PAT_ETHNICITY as varchar(300)), + cast(PAT_FIRST_NM as varchar(50)), + cast(PAT_LAST_NM as varchar(50)), + cast(PAT_LOCAL_ID as varchar(25)), + cast(PAT_MIDDLE_NM as varchar(50)), + cast(PAT_PREGNANT_IND as varchar(300)), + cast(PAT_RACE as varchar(300)), + cast(PAT_STATE as varchar(300)), + cast(PAT_STREET_ADDR_1 as varchar(50)), + cast(PAT_STREET_ADDR_2 as varchar(50)), + cast(PAT_ZIP_CODE as varchar(10)), + cast(RPT_SRC_SOURCE_NM as varchar(300)), + cast(RPT_SRC_STATE as varchar(300)), + cast(RPT_SRC_CD_DESC as varchar(300)), + cast(BLD_EXPOSURE_IND as varchar(300)), + cast(BLD_RECVD_IND as varchar(300)), + BLD_RECVD_DT, + cast(MED_DEN_BLD_CT_FRQ as varchar(300)), + cast(MED_DEN_EMP_EVER_IND as varchar(300)), + cast(MED_DEN_EMPLOYEE_IND as varchar(300)), + cast(CLOTFACTOR_PRIOR_1987 as varchar(300)), + cast(BLD_CONTAM_IND as varchar(300)), + cast(DEN_WORK_OR_SURG_IND as varchar(300)), + cast(HEMODIALYSIS_IND as varchar(300)), + cast(LT_HEMODIALYSIS_IND as varchar(300)), + cast(HSPTL_PRIOR_ONSET_IND as varchar(300)), + cast(EVER_INJCT_NOPRSC_DRG as varchar(300)), + cast(INCAR_24PLUSHRS_IND as varchar(300)), + cast(INCAR_6PLUS_MO_IND as varchar(300)), + cast(EVER_INCAR_IND as varchar(300)), + cast(INCAR_TYPE_JAIL_IND as varchar(300)), + cast(INCAR_TYPE_PRISON_IND as varchar(300)), + cast(INCAR_TYPE_JUV_IND as varchar(300)), + LAST6PLUSMO_INCAR_PER, + LAST6PLUSMO_INCAR_YR, + cast(OUTPAT_IV_INF_IND as varchar(300)), + cast(LTCARE_RESIDENT_IND as varchar(300)), + LIFE_SEX_PRTNR_NBR, + cast(BLD_EXPOSURE_OTH as varchar(200)), + cast(PIERC_PRIOR_ONSET_IND as varchar(300)), + cast(PIERC_PERF_LOC_OTH as varchar(150)), + cast(PIERC_PERF_LOC as varchar(300)), + cast(PUB_SAFETY_BLD_CT_FRQ as varchar(300)), + cast(PUB_SAFETY_WORKER_IND as varchar(300)), + cast(STD_TREATED_IND as varchar(300)), + STD_LAST_TREATMENT_YR, + cast(NON_ORAL_SURGERY_IND as varchar(300)), + cast(TATT_PRIOR_ONSET_IND as varchar(300)), + cast(TATTOO_PERF_LOC as varchar(300)), + cast(TATT_PRIOR_LOC_OTH as varchar(150)), + cast(BLD_TRANSF_PRIOR_1992 as varchar(300)), + cast(ORGN_TRNSP_PRIOR_1992 as varchar(300)), + cast(TRANSMISSION_MODE as varchar(300)), + cast(HOUSEHOLD_TRAVEL_IND as varchar(300)), + cast(TRAVEL_OUT_USACAN_IND as varchar(300)), + cast(TRAVEL_OUT_USACAN_LOC as varchar(300)), + cast(HOUSEHOLD_TRAVEL_LOC as varchar(300)), + cast(TRAVEL_REASON as varchar(300)), + cast(IMM_GLOB_RECVD_IND as varchar(300)), + GLOB_LAST_RECVD_YR, + cast(cast(VACC_RECVD_IND as varchar(10)) as varchar(10)), + VACC_DOSE_NBR_1, + VACC_RECVD_DT_1, + VACC_DOSE_NBR_2, + VACC_RECVD_DT_2, + VACC_DOSE_NBR_3, + VACC_RECVD_DT_3, + VACC_DOSE_NBR_4, + VACC_RECVD_DT_4, + cast(VACC_GT_4_IND as varchar(300)), + VACC_DOSE_RECVD_NBR, + VACC_LAST_RECVD_YR, + cast(ANTI_HBSAG_TESTED_IND as varchar(300)), + cast(CONDITION_CD as varchar(300)), + EVENT_DATE, + cast(IMPORT_FROM_CITY as varchar(300)), + cast(IMPORT_FROM_COUNTRY as varchar(300)), + cast(IMPORT_FROM_COUNTY as varchar(300)), + cast(IMPORT_FROM_STATE as varchar(300)), + INVESTIGATION_KEY, + cast(INVESTIGATOR_NAME as varchar(300)), + cast(PAT_ELECTRONIC_IND as varchar(300)), + cast(PHYS_CITY as varchar(300)), + cast(PHYS_COUNTY as varchar(300)), + cast(PHYS_NAME as varchar(300)), + cast(PHYS_STATE as varchar(300)), + PROGRAM_JURISDICTION_OID, + cast(RPT_SRC_CITY as varchar(300)), + cast(RPT_SRC_COUNTY as varchar(300)), + cast(RPT_SRC_COUNTY_CD as varchar(300)), + PHYSICIAN_UID, + PATIENT_UID, + CASE_UID, + INVESTIGATOR_UID, + REPORTING_SOURCE_UID, + REFRESH_DATETIME, + cast(PAT_BIRTH_COUNTRY as varchar(50)) +FROM #TMP_HEPATITIS_CASE_BASE TH WITH(NOLOCK) +WHERE NOT EXISTS + ( + SELECT * + FROM [dbo].[HEPATITIS_DATAMART] WITH(NOLOCK) + WHERE [CASE_UID] = TH.[CASE_UID] AND + [PATIENT_UID] = TH.[PATIENT_UID] AND + [INVESTIGATION_KEY] = TH.[INVESTIGATION_KEY] + ) +ORDER BY INVESTIGATION_KEY; + +if @debug = 'true' +select * from #TMP_HEPATITIS_CASE_BASE; + +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'START', @PROC_STEP_NO, @PROC_STEP_NAME, @ROWCOUNT_NO ); + +COMMIT TRANSACTION; + + +/* + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 30 ; + + SET @PROC_STEP_NAME = 'Updating EVENT DATE AND TYPE in Hepatitis_Case_DATAMART'; + + IF OBJECT_ID('#TMP_CASE_LAB_DATAMART_MODIFIED', 'U') is NULL + SELECT DISTINCT C.INVESTIGATION_KEY , + C.EARLIEST_SPECIMEN_COLLECT_DATE as EARLIEST_SPECIMEN_COLLECTION_DT + INTO #TMP_CASE_LAB_DATAMART_MODIFIED + from dbo.[CASE_LAB_DATAMART] C with (nolock) + ; + + + + update ISD + set ISD.EVENT_DATE = CLD.EVENT_DATE, + ISD.EVENT_DATE_TYPE = CLD.EVENT_DATE_TYPE + FROM dbo.[HEPATITIS_DATAMART] ISD + LEFT OUTER JOIN [dbo].[CASE_LAB_DATAMART] CLD with (nolock) ON ISD.INVESTIGATION_KEY=CLD.INVESTIGATION_KEY + JOIN #TMP_CASE_LAB_DATAMART_MODIFIED TCLDM with (nolock) ON ISD.INVESTIGATION_KEY=TCLDM.INVESTIGATION_KEY + ; + + + + 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,'HEPATITIS_DATAMART','Hepatitis_Case_DATAMART','START',@PROC_STEP_NO,@PROC_STEP_NAME,@ROWCOUNT_NO); + + COMMIT TRANSACTION; + + + + BEGIN TRANSACTION; + + SET @Proc_Step_no = 31 ; + + SET @PROC_STEP_NAME = 'Updating INIT_NND_NOTF_DT in HEPATITIS_DATAMART'; + + + + update ISD + set ISD.INIT_NND_NOT_DT = NND.FIRSTNOTIFICATIONSENDDATE + FROM dbo.[HEPATITIS_DATAMART] ISD + JOIN #TMP_inv_sum_nnd_info NND with (nolock) ON ISD.INVESTIGATION_KEY=NND.INVESTIGATION_KEY + ; + + 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,'HEPATITIS_DATAMART','Hepatitis_Case_DATAMART','START',@PROC_STEP_NO,@PROC_STEP_NAME,@ROWCOUNT_NO); + + COMMIT TRANSACTION; + + + */ +---------------------------------------------------------------------------Dropping All TMP Tables------------------------------------------------------------ + +select 'Transaction_count',@@TRANCOUNT +; + +IF @@TRANCOUNT > 0 +BEGIN +select 'COMMIT 1'; + +COMMIT TRANSACTION; +END; + + ------------------------------------------------------------------------------------------------------------------------- +BEGIN TRANSACTION; + + SET @Proc_Step_no = 32; + + 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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'COMPLETE', @Proc_Step_no, @Proc_Step_name, @RowCount_no ); + + + +COMMIT TRANSACTION; + + + +END TRY +BEGIN CATCH +IF @@TRANCOUNT > 0 +BEGIN +ROLLBACK TRANSACTION; + +END; + + DECLARE @ErrorNumber int= ERROR_NUMBER(); + + DECLARE @ErrorLine int= ERROR_LINE(); + + DECLARE @ErrorMessage nvarchar(4000)= ERROR_MESSAGE(); + + DECLARE @ErrorSeverity int= ERROR_SEVERITY(); + + DECLARE @ErrorState int= ERROR_STATE(); + +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, 'HEPATITIS_DATAMART', 'Hepatitis_Case_DATAMART', 'ERROR', @Proc_Step_no, 'ERROR - ' + @Proc_Step_name, 'Step -' + CAST(@Proc_Step_no AS varchar(3)) + ' -' + CAST(@ErrorMessage AS varchar(500)), 0 ); + +RETURN -1; + +END CATCH; + +END; + +---First begin; \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/032-create_nrt_datamart_metadata-001.sql b/liquibase-service/src/main/resources/db/rdb/032-create_nrt_datamart_metadata-001.sql new file mode 100644 index 00000000..708f866a --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/032-create_nrt_datamart_metadata-001.sql @@ -0,0 +1,14 @@ +USE RDB_MODERN; +IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'nrt_datamart_metadata' and xtype = 'U') +CREATE TABLE dbo.nrt_datamart_metadata ( + condition_cd varchar(20) NOT NULL, + condition_desc_txt varchar(300) NULL, + Datamart varchar(18) NOT NULL, + Stored_Procedure varchar(36) NOT NULL + ); +INSERT INTO dbo.nrt_datamart_metadata +(condition_cd, condition_desc_txt, Datamart, Stored_Procedure) +SELECT condition_cd, condition_desc_txt, 'Hepatitis_Datamart', + 'sp_hepatitis_datamart_postprocessing' +FROM NBS_SRTE.[dbo].[Condition_code] WITH(NOLOCK) +WHERE CONDITION_CD IN( '10110', '10104', '10100', '10106', '10101', '10102', '10103', '10105', '10481', '50248', '999999' ); \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/rdb/033-sp_get_date_dim-001.sql b/liquibase-service/src/main/resources/db/rdb/033-sp_get_date_dim-001.sql new file mode 100644 index 00000000..e24959c3 --- /dev/null +++ b/liquibase-service/src/main/resources/db/rdb/033-sp_get_date_dim-001.sql @@ -0,0 +1,56 @@ +CREATE OR ALTER PROCEDURE dbo.sp_get_date_dim @start int, @end int + AS +begin + + +-- get the first day of the start year +declare @start_dt datetime = DATEFROMPARTS(@start, 1, 1) + +-- get the last day of the end year +declare @end_dt datetime = DATEFROMPARTS(@end, 12, 31) + +declare @date datetime = @start_dt + +-- this is a default row with key as 1 +declare @date_key int = 1 + +-- insert a default row with key as 1 +if not exists (select * from dbo.rdb_date_temp where date_key=@date_key) +Insert into dbo.rdb_date_temp(date_key) select @date_key + +--loop through each date + while @start_dt <= @end_dt +begin + set @date = @start_dt + -- get the next key + set @date_key = @date_key + 1 + + insert into rdb_modern.dbo.rdb_date_temp + select DATEADD(dd, 0, DATEDIFF(dd, 0, @date)) DATE_MM_DD_YYYY + ,DATENAME(dw,@date) DAY_OF_WEEK -- Friday + ,day(@date) DAY_NBR_IN_CLNDR_MON + ,DATEPART(dayofyear, @date) DAY_NBR_IN_CLNDR_YR + ,DATEDIFF(WEEK, DATEADD(MONTH, DATEDIFF(MONTH, 0, @date), 0), @date) + 1 WK_NBR_IN_CLNDR_MON + ,DATEPART(week, @date) WK_NBR_IN_CLNDR_YR + ,DATENAME(month,@date) CLNDR_MON_NAME + ,month(@date) CLNDR_MON_IN_YR + ,DATEPART(QUARTER, @date) CLNDR_QRTR + ,DATENAME(year,@date) CLNDR_YR + ,@date_key + +-- get the next date +set @start_dt = @start_dt + 1 + +IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'RDB_DATE' and xtype = 'U') +select DISTINCT DATE_KEY, DATE_MM_DD_YYYY, DAY_OF_WEEK, DAY_NBR_IN_CLNDR_MON, DAY_NBR_IN_CLNDR_YR, WK_NBR_IN_CLNDR_MON, WK_NBR_IN_CLNDR_YR, CLNDR_MON_NAME, CLNDR_MON_IN_YR, CLNDR_QRTR, CLNDR_YR +into #temp_date +from rdb_modern.dbo.rdb_date_temp; + +INSERT INTO rdb_modern.dbo.RDB_DATE +(DATE_KEY,DATE_MM_DD_YYYY, DAY_OF_WEEK, DAY_NBR_IN_CLNDR_MON, DAY_NBR_IN_CLNDR_YR, WK_NBR_IN_CLNDR_MON, WK_NBR_IN_CLNDR_YR, CLNDR_MON_NAME, CLNDR_MON_IN_YR, CLNDR_QRTR, CLNDR_YR) +select DATE_KEY, DATE_MM_DD_YYYY, DAY_OF_WEEK, DAY_NBR_IN_CLNDR_MON, DAY_NBR_IN_CLNDR_YR, WK_NBR_IN_CLNDR_MON, WK_NBR_IN_CLNDR_YR, CLNDR_MON_NAME, CLNDR_MON_IN_YR, CLNDR_QRTR, CLNDR_YR +from #temp_date; + +end + +end \ No newline at end of file diff --git a/liquibase-service/src/main/resources/db/readme.md b/liquibase-service/src/main/resources/db/readme.md new file mode 100644 index 00000000..0fe7ea22 --- /dev/null +++ b/liquibase-service/src/main/resources/db/readme.md @@ -0,0 +1,34 @@ +# Liquibase Execution + +### Environment Variable set up + +The following environment variables assume a local Database instance with ODSE and RDB databases +For any other instances, update the database url and credentials appropriately. + +``` +export DB_USERNAME=sa +export DB_PASSWORD=fake.fake.fake.1234 +export DB_URL=localhost +export DB_ODSE=NBS_ODSE +export DB_RDB=RDB_MODERN +``` + +### Liquibase script execution + +* Make sure you are in the following project + + * `/NEDSS-DataAccess/liquibase-service` + +* Run following to execute liquibase + + * ```./gradlew update``` + +### Liquibase Error Handling + +ValidationFailedException: When change is made to existing change log. This can be handled by removing the conflicting id or revert the changes. +To remove the id, the following command can be run: + +``` +delete from database.dbo.databasechangelog where id = 'id' +``` + diff --git a/liquibase-service/src/test/java/gov/cdc/etldatapipeline/EtlDataPipelineApplicationTests.java b/liquibase-service/src/test/java/gov/cdc/etldatapipeline/EtlDataPipelineApplicationTests.java new file mode 100644 index 00000000..1510f71e --- /dev/null +++ b/liquibase-service/src/test/java/gov/cdc/etldatapipeline/EtlDataPipelineApplicationTests.java @@ -0,0 +1,12 @@ +package gov.cdc.etldatapipeline; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +class EtlDataPipelineApplicationTests { + + @Test + void contextLoads() { + Assertions.assertTrue(true, "Unit Tests sanity check."); + } +} diff --git a/settings.gradle b/settings.gradle index 49b11777..8f4525cd 100644 --- a/settings.gradle +++ b/settings.gradle @@ -16,4 +16,6 @@ include 'post-processing-service' include 'ldfdata-service' +include 'liquibase-service' + include 'status-service'