From c78249dee036c8cd6b7d51fc938ac34f2ce71ccf Mon Sep 17 00:00:00 2001 From: Anoop Varma Date: Wed, 31 Jul 2024 18:35:00 +0530 Subject: [PATCH] feat: added organization tab in the content #205 --- .../lib/techbd-udi-jooq-ingress.auto.jar | Bin 280892 -> 289366 bytes hub-prime/pom.xml | 2 +- .../http/hub/prime/ux/ContentController.java | 6 + .../templates/page/content/organizations.html | 103 ++++++++++++++++++ .../templates/page/content/patients.html | 27 +++-- .../templates/page/content/screenings.html | 35 +++--- .../004_idempotent_content_fhir.psql | 70 +++++++++++- 7 files changed, 217 insertions(+), 26 deletions(-) create mode 100644 hub-prime/src/main/resources/templates/page/content/organizations.html diff --git a/hub-prime/lib/techbd-udi-jooq-ingress.auto.jar b/hub-prime/lib/techbd-udi-jooq-ingress.auto.jar index da041cc3906265cee53d9b935561e589c4752a18..1c6611b9e77c005fc63d39b53051adb91f786d50 100644 GIT binary patch delta 32844 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 h&S-4V|t diff --git a/hub-prime/pom.xml b/hub-prime/pom.xml index 56871387bd5..e4333bd67c3 100644 --- a/hub-prime/pom.xml +++ b/hub-prime/pom.xml @@ -11,7 +11,7 @@ org.techbd hub-prime - 0.139.0 + 0.140.0 war TechBD Hub (Prime) TechBD Hub (Primary) diff --git a/hub-prime/src/main/java/org/techbd/service/http/hub/prime/ux/ContentController.java b/hub-prime/src/main/java/org/techbd/service/http/hub/prime/ux/ContentController.java index 81d5c61e1fc..0b519406d27 100644 --- a/hub-prime/src/main/java/org/techbd/service/http/hub/prime/ux/ContentController.java +++ b/hub-prime/src/main/java/org/techbd/service/http/hub/prime/ux/ContentController.java @@ -55,4 +55,10 @@ public String patients(final Model model, final HttpServletRequest request) { return presentation.populateModel("page/content/patients", model, request); } + @GetMapping("/content/organizations") + @RouteMapping(label = "Organizations", title = "Organizations", siblingOrder = 30) + public String organizations(final Model model, final HttpServletRequest request) { + return presentation.populateModel("page/content/organizations", model, request); + } + } diff --git a/hub-prime/src/main/resources/templates/page/content/organizations.html b/hub-prime/src/main/resources/templates/page/content/organizations.html new file mode 100644 index 00000000000..73d8a18f910 --- /dev/null +++ b/hub-prime/src/main/resources/templates/page/content/organizations.html @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + +

+
+
+ + + + \ No newline at end of file diff --git a/hub-prime/src/main/resources/templates/page/content/patients.html b/hub-prime/src/main/resources/templates/page/content/patients.html index 3882cc1d8fb..0c502cc163f 100644 --- a/hub-prime/src/main/resources/templates/page/content/patients.html +++ b/hub-prime/src/main/resources/templates/page/content/patients.html @@ -26,7 +26,7 @@ const agGridInstance = new AGGridAideBuilder() .withColumnDefs([ { - headerName: "Patient ID", field: "patient_id", filter: "agTextColumnFilter" + headerName: "Patient MRN", field: "patient_mrn", filter: "agTextColumnFilter" , cellRenderer: 'agGroupCellRenderer' }, { headerName: "QE Name", field: "qe_name", filter: "agTextColumnFilter" }, @@ -44,7 +44,6 @@ { headerName: "State", field: "patient_state", filter: "agTextColumnFilter" }, { headerName: "Postal Code", field: "patient_postal_code", filter: "agTextColumnFilter" }, { headerName: "Language", field: "patient_language", filter: "agTextColumnFilter" }, - { headerName: "Patient MRN", field: "patient_mrn", filter: "agTextColumnFilter" }, { headerName: "SSN", field: "patient_ssn", filter: "agTextColumnFilter" } ]) .withServerSideDatasource( @@ -60,12 +59,24 @@ detailGridOptions: { columnDefs: [ { - headerName: "Interaction ID", - field: "hub_interaction_id", + headerName: "Patient MRN", + field: "patient_mrn", filter: "agTextColumnFilter", - cellRenderer: AGGridAide.modalCellRenderer((value, modalAide) => { - modalAide.showFhirViewer(window.shell.serverSideUrl(`/api/ux/tabular/jooq/${schemaName}/${popViewName}/hub_interaction_id/${value}.json`)); - }, modalAide) + cellRenderer: params => { + const patientMrn = params.value; + const hubInteractionId = params.data.hub_interaction_id; + console.log(hubInteractionId); + const button = document.createElement('button'); + button.innerText = patientMrn; + button.addEventListener('click', () => { + if (hubInteractionId) { + modalAide.showFhirViewer(window.shell.serverSideUrl(`/api/ux/tabular/jooq/${schemaName}/${popViewName}/hub_interaction_id/${hubInteractionId}.json`)); + } else { + console.error('hub_interaction_id is undefined'); + } + }); + return button; + } }, { headerName: "Date", @@ -88,7 +99,7 @@ } }, getDetailRowData: params => { - const value = params.data.patient_id; + const value = params.data.patient_mrn; fetch(window.shell.serverSideUrl(`/api/ux/tabular/jooq/${schemaName}/${detailTableViewName}/patient_mrn/${value}.json`)) .then(response => response.json()) .then(response => { diff --git a/hub-prime/src/main/resources/templates/page/content/screenings.html b/hub-prime/src/main/resources/templates/page/content/screenings.html index 20007000bad..fc809fbd3ce 100644 --- a/hub-prime/src/main/resources/templates/page/content/screenings.html +++ b/hub-prime/src/main/resources/templates/page/content/screenings.html @@ -15,9 +15,9 @@ import { AGGridAide, AGGridAideBuilder } from '@presentation/shell/aggrid-aide.js'; import ModalAide from '@presentation/shell/modal-aide.js'; - import { FhirViewer } from '@presentation/shell/fhir-view.js'; + import { FhirViewer } from '@presentation/shell/fhir-view.js'; customElements.define('fhir-viewer', FhirViewer); - + const schemaName = 'techbd_udi_ingress'; const viewName = 'fhir_screening_info'; const popViewName = 'fhir_screening_detail'; @@ -27,18 +27,27 @@ .withColumnDefs([ { headerName: "QE Name", field: "qe_name", filter: "agTextColumnFilter" }, { - headerName: "Interaction ID", - field: "hub_interaction_id", - filter: "agTextColumnFilter", - cellRenderer: AGGridAide.modalCellRenderer((value, modalAide) => { - modalAide.showFhirViewer(window.shell.serverSideUrl(`/api/ux/tabular/jooq/${schemaName}/${popViewName}/hub_interaction_id/${value}.json`)); - }, modalAide) - }, - { - headerName: "Patient MRN ID", + headerName: "Patient MRN", field: "patient_mrn", - filter: "agTextColumnFilter" + filter: "agTextColumnFilter", + cellRenderer: params => { + const patientMrn = params.value; + const hubInteractionId = params.data.hub_interaction_id; + console.log(hubInteractionId); + const button = document.createElement('button'); + button.innerText = patientMrn; + button.addEventListener('click', () => { + if (hubInteractionId) { + modalAide.showFhirViewer(window.shell.serverSideUrl(`/api/ux/tabular/jooq/${schemaName}/${popViewName}/hub_interaction_id/${hubInteractionId}.json`)); + } else { + console.error('hub_interaction_id is undefined'); + } + }); + return button; + } }, + { headerName: "First Name", field: "first_name", filter: "agTextColumnFilter" }, + { headerName: "Last Name ", field: "last_name", filter: "agTextColumnFilter" }, { headerName: "Date", field: "survey_date_time", @@ -71,7 +80,7 @@ agGridInstance.init('serverDataGrid'); }); - + diff --git a/udi-prime/src/main/postgres/ingestion-center/004_idempotent_content_fhir.psql b/udi-prime/src/main/postgres/ingestion-center/004_idempotent_content_fhir.psql index de5f9172572..c6d7c1a7a8e 100644 --- a/udi-prime/src/main/postgres/ingestion-center/004_idempotent_content_fhir.psql +++ b/udi-prime/src/main/postgres/ingestion-center/004_idempotent_content_fhir.psql @@ -26,11 +26,25 @@ extracted_data AS ( END AS last_updated, -- 2) If entry[] -> resource -> "resourceType" = "Patient", get entry[] -> resource -> id + ( select (entry.value -> 'resource' -> 'identifier' -> 0 ->> 'value'::text) + FROM jsonb_array_elements(filtered_data.payload -> 'entry'::text) entry(value) + WHERE ((entry.value -> 'resource'::text) ->> 'resourceType'::text) = 'Patient'::text) AS patient_id, + ( select ((((entry.value -> 'resource'::text) -> 'name'::text) -> 0)->> 'text'::text) + FROM jsonb_array_elements(filtered_data.payload -> 'entry'::text) entry(value) + WHERE ((entry.value -> 'resource'::text) ->> 'resourceType'::text) = 'Patient'::text) AS full_name, + ( select ((((entry.value -> 'resource') -> 'name') -> 0) ->> 'family') + FROM jsonb_array_elements(filtered_data.payload -> 'entry'::text) entry(value) + WHERE ((entry.value -> 'resource'::text) ->> 'resourceType'::text) = 'Patient'::text) AS last_name, + ( select array_to_string(ARRAY( SELECT jsonb_array_elements_text((((entry.value -> 'resource'::text) -> 'name'::text) -> 0) -> 'given'::text) AS jsonb_array_elements_text), ' '::text) + FROM jsonb_array_elements(filtered_data.payload -> 'entry'::text) entry(value) + WHERE ((entry.value -> 'resource'::text) ->> 'resourceType'::text) = 'Patient'::text) AS first_name, + (SELECT entry -> 'resource' ->> 'id' FROM jsonb_array_elements(payload -> 'entry') AS entry - WHERE (entry -> 'resource' ->> 'resourceType') = 'Patient' - ) AS patient_id, - + WHERE (entry -> 'resource' ->> 'resourceType') = 'Organization' + ) AS org_id, + + -- 3) If "resourceType" = "Observation", get category[] -> coding -> display element values in comma separated manner (SELECT string_agg(DISTINCT coding ->> 'display', ', ') FROM jsonb_array_elements(payload -> 'entry') AS entry @@ -53,8 +67,13 @@ extracted_data AS ( FROM filtered_data ) SELECT hub_interaction_id, + tenant_id AS qe_name, - created_at AS submitted_date_time, + org_id, + last_name, + full_name, + first_name, + created_at AS submitted_date_time, patient_id AS patient_mrn, last_updated AS survey_date_time, category_display AS areas_of_interest, @@ -154,3 +173,46 @@ AS WITH filtered_data AS ( GROUP BY tenant_id, patient_id ORDER BY patient_id DESC; + +/******************************************************************************************* + * Comprehensive view of FHIR Content Screening Organization. * + ******************************************************************************************/ +DROP VIEW IF EXISTS techbd_udi_ingress.fhir_screening_organization CASCADE; +CREATE OR REPLACE VIEW techbd_udi_ingress.fhir_screening_organization +AS WITH filtered_data AS ( + SELECT sihr.hub_interaction_id, + sihr.nature ->> 'tenant_id' AS tenant_id, + sihr.payload::jsonb AS payload, + hintr.created_at + FROM techbd_udi_ingress.hub_interaction hintr + JOIN techbd_udi_ingress.sat_interaction_http_request sihr + ON hintr.hub_interaction_id = sihr.hub_interaction_id + WHERE hintr.key LIKE '/Bundle%' + AND sihr.nature ->> 'nature' = 'Original FHIR Payload' +), +patient_details AS ( + SELECT tenant_id, + (entry -> 'resource') ->> 'id' AS org_id, + (entry -> 'resource') ->> 'resourceType' AS org_resource_type, + (entry -> 'resource') ->> 'name' AS org_name, + (entry -> 'resource') ->> 'active' AS org_active, + (entry -> 'resource') ->'address'->0->>'text' AS org_address, + (entry -> 'resource') ->'address'->0->>'city' AS org_city, + (entry -> 'resource') ->'address'->0->>'state' AS org_state, + (entry -> 'resource') ->'address'->0->>'postalCode' AS org_postal_code + FROM filtered_data, + jsonb_array_elements(payload -> 'entry') AS entry + WHERE (entry -> 'resource') ->> 'resourceType' = 'Organization' +) +SELECT tenant_id AS qe_name, + org_id, + MAX(org_resource_type) as org_type, + MAX(org_name) as org_name, + MAX(org_active) as org_active, + MAX(org_address) as org_address, + MAX(org_city) as org_city, + MAX(org_state) as org_state, + MAX(org_postal_code) as org_postal_code +FROM patient_details +GROUP BY tenant_id, org_id +ORDER BY org_id DESC;