@ampath/esm-dha-workflow-app 4.0.0-claim-workflows.308 → 4.0.0-claim-workflows.309

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2163,9 +2163,9 @@
2163
2163
  "entry": false,
2164
2164
  "recorded": false,
2165
2165
  "reason": "split chunk (cache group: default)",
2166
- "size": 93704,
2166
+ "size": 94655,
2167
2167
  "sizes": {
2168
- "javascript": 93704
2168
+ "javascript": 94655
2169
2169
  },
2170
2170
  "names": [],
2171
2171
  "idHints": [],
@@ -2179,7 +2179,7 @@
2179
2179
  "auxiliaryFiles": [
2180
2180
  "9428.js.map"
2181
2181
  ],
2182
- "hash": "498afe77212cfe0b",
2182
+ "hash": "5e529218165a535e",
2183
2183
  "childrenByOrder": {}
2184
2184
  },
2185
2185
  {
package/dist/routes.json CHANGED
@@ -1 +1 @@
1
- {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{},"pages":[{"component":"root","route":"dha-workflow","online":true,"offline":true}],"extensions":[{"component":"navLinks","name":"side-nav-workflow-links","slot":"dha-workflow-slot","online":true,"offline":true},{"name":"dha-workflow-dashboard-link","component":"dhaWorkflowDashboardLink","slot":"homepage-dashboard-slot","privileges":["O3 View Facility Dashboard"],"meta":{"name":"dashboard","slot":"dha-workflow-dashboard-slot","title":"Dashboard"},"online":true,"offline":true,"order":1},{"component":"dhaWorkflowDashboard","name":"dashboardExt","slot":"dha-workflow-dashboard-slot"},{"name":"registry-dashboard-link","component":"registryDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"registration","slot":"client-registry-dashboard-slot","title":"Registration"},"online":true,"offline":true,"order":0},{"component":"registryExtension","name":"registry","slot":"client-registry-dashboard-slot","privileges":["O3 View Client Registry Dashboard"]},{"name":"triage-dashboard-link","component":"triageDashboardLink","slot":"homepage-dashboard-slot","privileges":["O3 View Triage Dashboard"],"meta":{"name":"triage","slot":"triage-queue-dashboard-slot","title":"Triage"},"online":true,"offline":false},{"component":"triageQueueExtension","name":"triage","slot":"triage-queue-dashboard-slot","privileges":["O3 View Triage Dashboard"]},{"name":"consultation-dashboard-link","component":"consultationDashboardLink","slot":"homepage-dashboard-slot","privileges":["O3 View Consultation Dashboard"],"meta":{"name":"consultation","slot":"consultation-dashboard-slot","title":"Consultation"},"online":true,"offline":false},{"component":"consultationQueue","name":"consultation","slot":"consultation-dashboard-slot","privileges":["O3 View Consultation Dashboard"]},{"name":"mnch-dashboard-link","component":"mnchQueueDashboardLink","slot":"homepage-dashboard-slot","privileges":["O3 View MNCH Dashboard"],"meta":{"name":"mnch","slot":"mnch-dashboard-slot","title":"MNCH"},"online":true,"offline":true},{"component":"MNCHRoot","name":"mnch","slot":"mnch-dashboard-slot","privileges":["O3 View MNCH Dashboard"]},{"name":"specialized-clinics-dashboard-link","component":"specializedClinicsDashboardLink","slot":"homepage-dashboard-slot","privileges":[],"meta":{"name":"specialized-clinics","slot":"specialized-clinics-dashboard-slot","title":"Specialized Clinics"},"online":true,"offline":true},{"component":"SpecializedClinicsRoot","name":"specialized-clinics","slot":"specialized-clinics-dashboard-slot","privileges":[]},{"name":"pharmacy-dashboard-link","component":"pharmacyDashboardLink","slot":"homepage-dashboard-slot","privileges":["O3 View Pharmacy Dashboard"],"meta":{"name":"dispensing","slot":"dispensing-dashboard-slot","title":"Pharmacy"},"online":true,"offline":true},{"name":"bookings-dashboard-link","component":"bookingsDashboardLink","slot":"homepage-dashboard-slot","privileges":["O3 View Bookings Dashboard"],"meta":{"name":"bookings","slot":"bookings-dashboard-slot","title":"Bookings"},"online":true,"offline":true},{"component":"bookings","name":"bookings","slot":"bookings-dashboard-slot","privileges":["O3 View Bookings Dashboard"]},{"name":"service-queue-admin-dashboard-link","component":"serviceQueuesAdminLink","privileges":["O3 View Service Queue Admin Panel"],"slot":"app-menu-slot","meta":{"name":"service-queue-admin","slot":"service-queue-admin-dashboard-slot","title":"Service Queue Admin"},"online":true,"offline":true},{"component":"serviceQueueAdmin","name":"service-queue-admin","slot":"service-queue-admin-dashboard-slot","privileges":["O3 View Service Queue Admin Panel"]},{"name":"admissions-dashboard-link","component":"admissionsDashboardLink","slot":"homepage-dashboard-slot","privileges":["O3 View Admissions Dashboard"],"meta":{"name":"admissions-dashboard","slot":"admissions-dashboard-slot","title":"Admissions Dashboard"},"online":true,"offline":true},{"component":"admissionsDashboard","name":"admissions-dashboard","slot":"admissions-dashboard-slot","privileges":["O3 View Admissions Dashboard"]},{"component":"serviceQueueBannerComponent","name":"service-queue-banne","slot":"patient-banner-tags-slot"},{"name":"admissions-summary-dashboard","slot":"patient-chart-dashboard-slot","component":"patientChartAdmissionsLink","meta":{"slot":"patient-chart-admissions-summary-dashboard-slot","path":"Admissions","layoutMode":"anchored"},"online":true,"offline":true},{"name":"admission-details","slot":"patient-chart-admissions-summary-dashboard-slot","component":"patientAdmissionSummary","order":1,"meta":{"title":"Admissions","view":"admissions"},"online":true,"offline":true},{"name":"case-summary-dashboard","slot":"patient-chart-dashboard-slot","component":"caseSummaryLink","meta":{"slot":"patient-chart-case-summary-dashboard-slot","path":"case-summary","layoutMode":"anchored"},"online":true,"offline":true},{"name":"case-summary-details","slot":"patient-chart-case-summary-dashboard-slot","component":"caseSummary","order":1,"meta":{"title":"Visit Case Summary","view":"case-summary"},"online":true,"offline":true},{"name":"ampath-billing-dashboard-link","component":"billingDashboardLink","slot":"homepage-dashboard-slot","privileges":["O3 View Accounting Dashboard"],"meta":{"name":"billing","slot":"ampath-billing-dashboard-slot","title":"Accounting"},"online":true,"offline":true},{"component":"billingRoot","name":"billing","slot":"ampath-billing-dashboard-slot","privileges":["O3 View Accounting Dashboard"]},{"name":"ampath-billing-checkin-form","slot":"extra-visit-attribute-slot","component":"visitBillingForm"},{"name":"claims","slot":"billing-claims-slot","component":"claims"},{"name":"generate-order-bill-button-slot","slot":"generate-order-bill-button-slot","component":"generateOrderBillButton"}],"workspaces":[{"name":"create-order-bill-form-workspace","component":"createOrderBillFormWorkspace","title":"Create order Bill","type":"other-form"},{"name":"upload-intervention-attachments-workspace","title":"Upload Attachments","component":"uploadInterventionAttachmentsWorkspace","type":"upload-intervention-attachments","canHide":true,"canMaximize":true,"width":"narrow"},{"name":"generate-intervention-attachments-workspace","title":"GenerateAttachments","component":"generateInterventionAttachmentsWorkspace","type":"generate-intervention-attachments","canHide":true,"canMaximize":true,"width":"narrow"},{"name":"bill-item-payment-workspace","title":"Bill item payment","component":"billItemPaymentWorkspace","type":"bill-item-payment","canHide":true,"width":"narrow"},{"name":"add-claim-line-workspace","title":"Add claim line","component":"addClaimLineWorkspace","type":"add-claim-line","canHide":true,"width":"narrow"},{"name":"switch-intervention-workspace","title":"Switch Intervention","component":"switchInterventionWorkspace","type":"switch-intervention","canHide":true,"canMaximize":true,"width":"narrow"},{"name":"preauth-form-workspace","title":"Raise Preauth","component":"preauthFormWorkspace","type":"preauth-form","canHide":true,"canMaximize":true,"width":"wider"},{"name":"pay-cash-workspace","title":"Pay Cash","component":"payCashWorkspace","type":"workspace","canHide":true,"canMaximize":true,"width":"narrow"},{"name":"record-details-workspace","title":"Details","component":"recordDetailsWorkspace","type":"record-details","canHide":true,"canMaximize":true,"width":"wider"},{"name":"send-to-queue-workspace","title":"Initiate SHA claim","component":"sendToQueueWorkspace","type":"send-to-queue","canHide":true,"canMaximize":true,"width":"wider"}],"workspaces2":[{"name":"admissions-form-entry","component":"formEntryWorkspace","window":"admissions-form-window"}],"workspaceWindows2":[{"name":"admissions-form-window","group":"admissions-form-group","canMaximize":true,"width":"extra-wide"}],"workspaceGroups2":[{"name":"admissions-form-group","scopePattern":"/admissions-clinical-forms","persistence":"closable","overlay":false}],"modals":[{"name":"sign-off-queue-entry-modal","component":"signOffModal"}],"version":"4.0.0-claim-workflows.308"}
1
+ {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{},"pages":[{"component":"root","route":"dha-workflow","online":true,"offline":true}],"extensions":[{"component":"navLinks","name":"side-nav-workflow-links","slot":"dha-workflow-slot","online":true,"offline":true},{"name":"dha-workflow-dashboard-link","component":"dhaWorkflowDashboardLink","slot":"homepage-dashboard-slot","privileges":["O3 View Facility Dashboard"],"meta":{"name":"dashboard","slot":"dha-workflow-dashboard-slot","title":"Dashboard"},"online":true,"offline":true,"order":1},{"component":"dhaWorkflowDashboard","name":"dashboardExt","slot":"dha-workflow-dashboard-slot"},{"name":"registry-dashboard-link","component":"registryDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"registration","slot":"client-registry-dashboard-slot","title":"Registration"},"online":true,"offline":true,"order":0},{"component":"registryExtension","name":"registry","slot":"client-registry-dashboard-slot","privileges":["O3 View Client Registry Dashboard"]},{"name":"triage-dashboard-link","component":"triageDashboardLink","slot":"homepage-dashboard-slot","privileges":["O3 View Triage Dashboard"],"meta":{"name":"triage","slot":"triage-queue-dashboard-slot","title":"Triage"},"online":true,"offline":false},{"component":"triageQueueExtension","name":"triage","slot":"triage-queue-dashboard-slot","privileges":["O3 View Triage Dashboard"]},{"name":"consultation-dashboard-link","component":"consultationDashboardLink","slot":"homepage-dashboard-slot","privileges":["O3 View Consultation Dashboard"],"meta":{"name":"consultation","slot":"consultation-dashboard-slot","title":"Consultation"},"online":true,"offline":false},{"component":"consultationQueue","name":"consultation","slot":"consultation-dashboard-slot","privileges":["O3 View Consultation Dashboard"]},{"name":"mnch-dashboard-link","component":"mnchQueueDashboardLink","slot":"homepage-dashboard-slot","privileges":["O3 View MNCH Dashboard"],"meta":{"name":"mnch","slot":"mnch-dashboard-slot","title":"MNCH"},"online":true,"offline":true},{"component":"MNCHRoot","name":"mnch","slot":"mnch-dashboard-slot","privileges":["O3 View MNCH Dashboard"]},{"name":"specialized-clinics-dashboard-link","component":"specializedClinicsDashboardLink","slot":"homepage-dashboard-slot","privileges":[],"meta":{"name":"specialized-clinics","slot":"specialized-clinics-dashboard-slot","title":"Specialized Clinics"},"online":true,"offline":true},{"component":"SpecializedClinicsRoot","name":"specialized-clinics","slot":"specialized-clinics-dashboard-slot","privileges":[]},{"name":"pharmacy-dashboard-link","component":"pharmacyDashboardLink","slot":"homepage-dashboard-slot","privileges":["O3 View Pharmacy Dashboard"],"meta":{"name":"dispensing","slot":"dispensing-dashboard-slot","title":"Pharmacy"},"online":true,"offline":true},{"name":"bookings-dashboard-link","component":"bookingsDashboardLink","slot":"homepage-dashboard-slot","privileges":["O3 View Bookings Dashboard"],"meta":{"name":"bookings","slot":"bookings-dashboard-slot","title":"Bookings"},"online":true,"offline":true},{"component":"bookings","name":"bookings","slot":"bookings-dashboard-slot","privileges":["O3 View Bookings Dashboard"]},{"name":"service-queue-admin-dashboard-link","component":"serviceQueuesAdminLink","privileges":["O3 View Service Queue Admin Panel"],"slot":"app-menu-slot","meta":{"name":"service-queue-admin","slot":"service-queue-admin-dashboard-slot","title":"Service Queue Admin"},"online":true,"offline":true},{"component":"serviceQueueAdmin","name":"service-queue-admin","slot":"service-queue-admin-dashboard-slot","privileges":["O3 View Service Queue Admin Panel"]},{"name":"admissions-dashboard-link","component":"admissionsDashboardLink","slot":"homepage-dashboard-slot","privileges":["O3 View Admissions Dashboard"],"meta":{"name":"admissions-dashboard","slot":"admissions-dashboard-slot","title":"Admissions Dashboard"},"online":true,"offline":true},{"component":"admissionsDashboard","name":"admissions-dashboard","slot":"admissions-dashboard-slot","privileges":["O3 View Admissions Dashboard"]},{"component":"serviceQueueBannerComponent","name":"service-queue-banne","slot":"patient-banner-tags-slot"},{"name":"admissions-summary-dashboard","slot":"patient-chart-dashboard-slot","component":"patientChartAdmissionsLink","meta":{"slot":"patient-chart-admissions-summary-dashboard-slot","path":"Admissions","layoutMode":"anchored"},"online":true,"offline":true},{"name":"admission-details","slot":"patient-chart-admissions-summary-dashboard-slot","component":"patientAdmissionSummary","order":1,"meta":{"title":"Admissions","view":"admissions"},"online":true,"offline":true},{"name":"case-summary-dashboard","slot":"patient-chart-dashboard-slot","component":"caseSummaryLink","meta":{"slot":"patient-chart-case-summary-dashboard-slot","path":"case-summary","layoutMode":"anchored"},"online":true,"offline":true},{"name":"case-summary-details","slot":"patient-chart-case-summary-dashboard-slot","component":"caseSummary","order":1,"meta":{"title":"Visit Case Summary","view":"case-summary"},"online":true,"offline":true},{"name":"ampath-billing-dashboard-link","component":"billingDashboardLink","slot":"homepage-dashboard-slot","privileges":["O3 View Accounting Dashboard"],"meta":{"name":"billing","slot":"ampath-billing-dashboard-slot","title":"Accounting"},"online":true,"offline":true},{"component":"billingRoot","name":"billing","slot":"ampath-billing-dashboard-slot","privileges":["O3 View Accounting Dashboard"]},{"name":"ampath-billing-checkin-form","slot":"extra-visit-attribute-slot","component":"visitBillingForm"},{"name":"claims","slot":"billing-claims-slot","component":"claims"},{"name":"generate-order-bill-button-slot","slot":"generate-order-bill-button-slot","component":"generateOrderBillButton"}],"workspaces":[{"name":"create-order-bill-form-workspace","component":"createOrderBillFormWorkspace","title":"Create order Bill","type":"other-form"},{"name":"upload-intervention-attachments-workspace","title":"Upload Attachments","component":"uploadInterventionAttachmentsWorkspace","type":"upload-intervention-attachments","canHide":true,"canMaximize":true,"width":"narrow"},{"name":"generate-intervention-attachments-workspace","title":"GenerateAttachments","component":"generateInterventionAttachmentsWorkspace","type":"generate-intervention-attachments","canHide":true,"canMaximize":true,"width":"narrow"},{"name":"bill-item-payment-workspace","title":"Bill item payment","component":"billItemPaymentWorkspace","type":"bill-item-payment","canHide":true,"width":"narrow"},{"name":"add-claim-line-workspace","title":"Add claim line","component":"addClaimLineWorkspace","type":"add-claim-line","canHide":true,"width":"narrow"},{"name":"switch-intervention-workspace","title":"Switch Intervention","component":"switchInterventionWorkspace","type":"switch-intervention","canHide":true,"canMaximize":true,"width":"narrow"},{"name":"preauth-form-workspace","title":"Raise Preauth","component":"preauthFormWorkspace","type":"preauth-form","canHide":true,"canMaximize":true,"width":"wider"},{"name":"pay-cash-workspace","title":"Pay Cash","component":"payCashWorkspace","type":"workspace","canHide":true,"canMaximize":true,"width":"narrow"},{"name":"record-details-workspace","title":"Details","component":"recordDetailsWorkspace","type":"record-details","canHide":true,"canMaximize":true,"width":"wider"},{"name":"send-to-queue-workspace","title":"Initiate SHA claim","component":"sendToQueueWorkspace","type":"send-to-queue","canHide":true,"canMaximize":true,"width":"wider"}],"workspaces2":[{"name":"admissions-form-entry","component":"formEntryWorkspace","window":"admissions-form-window"}],"workspaceWindows2":[{"name":"admissions-form-window","group":"admissions-form-group","canMaximize":true,"width":"extra-wide"}],"workspaceGroups2":[{"name":"admissions-form-group","scopePattern":"/admissions-clinical-forms","persistence":"closable","overlay":false}],"modals":[{"name":"sign-off-queue-entry-modal","component":"signOffModal"}],"version":"4.0.0-claim-workflows.309"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ampath/esm-dha-workflow-app",
3
- "version": "4.0.0-claim-workflows.308",
3
+ "version": "4.0.0-claim-workflows.309",
4
4
  "license": "MPL-2.0",
5
5
  "description": "An OpenMRS seed application for building microfrontends",
6
6
  "browser": "dist/esm-dha-workflow-app.js",
@@ -824,14 +824,24 @@ export async function fetchFacilityBedOccupancy(locationUuid: string): Promise<B
824
824
  return data;
825
825
  }
826
826
 
827
- export async function fetchCaseSummary(patientUuid: string, locationUuid: string): Promise<VisitSummaryResponse> {
827
+ export async function fetchCaseSummary(
828
+ locationUuid: string,
829
+ patientUuid: string = '124233ca-3b45-48cf-b396-8a25912bb1d3',
830
+ ): Promise<VisitSummaryResponse> {
828
831
  const { hieBaseUrl } = await getHieBaseUrl();
829
- const url =
830
- `https://kibana.ampath.or.ke/openmrs/hie/case-summary` +
831
- `?patientUuid=${encodeURIComponent(patientUuid)}` +
832
- `&locationUuid=${encodeURIComponent(locationUuid)}`;
833
-
834
- const response = await openmrsFetch(url);
835
- const data = await response.json();
836
- return data ?? null;
832
+ try {
833
+ const url =
834
+ `${hieBaseUrl}/hie/case-summary` +
835
+ `?patientUuid=${encodeURIComponent(patientUuid)}` +
836
+ `&locationUuid=${encodeURIComponent(locationUuid)}`;
837
+
838
+ const response = await openmrsFetch(url);
839
+ const data = await response.json();
840
+ console.log('CASE SUMMARY RESPONSE DATA: ', data);
841
+ return data ?? null;
842
+ } catch (err) {
843
+ console.error(err);
844
+
845
+ throw new Error(err instanceof Error ? err.message : 'Unknown error occurred');
846
+ }
837
847
  }
@@ -1,5 +1,7 @@
1
- import React, { useState } from 'react';
1
+ import React, { forwardRef, useState } from 'react';
2
2
  import styles from './case-summary.scss';
3
+ import { fetchCaseSummary } from '../../../../../billing-claims.resource';
4
+ import { useSession } from '@openmrs/esm-framework';
3
5
 
4
6
  const DEMO_PATIENT = {
5
7
  facility: 'Sample County Government',
@@ -121,14 +123,28 @@ function SectionBlock({ number, title, children }) {
121
123
  );
122
124
  }
123
125
 
124
- const CaseSummary = ({ patient = DEMO_PATIENT }) => {
125
- const [caseSummary, setCaseSummary] = useState();
126
+ interface CaseSummaryProps {
127
+ patient?: typeof DEMO_PATIENT;
128
+ }
126
129
 
127
- const fetchCaseSummary = async () => {};
130
+ const CaseSummary = forwardRef<HTMLDivElement, CaseSummaryProps>(({ patient = DEMO_PATIENT }, ref) => {
128
131
  const p = patient;
132
+ const session = useSession();
133
+ const locationUuid = session?.sessionLocation?.uuid;
134
+
135
+ const [caseSummary, setCasesummary] = useState();
136
+
137
+ const getCaseSummary = async () => {
138
+ try {
139
+ const res = await fetchCaseSummary(locationUuid!, '');
140
+ console.log('RESULTS ONE: ', res);
141
+ } catch (err) {
142
+ console.log(err);
143
+ }
144
+ };
129
145
 
130
146
  return (
131
- <div className={styles['cs-root']}>
147
+ <div className={styles['cs-root']} ref={ref}>
132
148
  <div className={styles['cs-shell']}>
133
149
  <header className={styles['cs-header']}>
134
150
  <div className={styles['cs-header-bar']} />
@@ -146,9 +162,7 @@ const CaseSummary = ({ patient = DEMO_PATIENT }) => {
146
162
  <div className={styles['cs-identity']}>
147
163
  <div className={styles['cs-field']}>
148
164
  <div className={styles['cs-field-label']}>Patient Name</div>
149
- <div className={styles['cs-field-value']} cs-name-value>
150
- {p.patientName}
151
- </div>
165
+ <div className={`${styles['cs-field-value']} ${styles['cs-name-value']}`}>{p.patientName}</div>
152
166
  </div>
153
167
  <Field label="DOB" value={p.dob} />
154
168
  <Field label="Age / Gender" value={`${p.age}y · ${p.gender}`} />
@@ -303,6 +317,8 @@ const CaseSummary = ({ patient = DEMO_PATIENT }) => {
303
317
  </div>
304
318
  </div>
305
319
  );
306
- };
320
+ });
321
+
322
+ CaseSummary.displayName = 'CaseSummary';
307
323
 
308
324
  export default CaseSummary;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { forwardRef } from 'react';
2
2
  import styles from './dialysis-chart.scss';
3
3
 
4
4
  const DEMO_SESSION = {
@@ -118,11 +118,15 @@ function SectionBlock({ number, title, children }) {
118
118
  );
119
119
  }
120
120
 
121
- const DialysisChart: React.FC<{ session?: typeof DEMO_SESSION }> = ({ session = DEMO_SESSION }) => {
121
+ interface DialysisChartProps {
122
+ session?: typeof DEMO_SESSION;
123
+ }
124
+
125
+ const DialysisChart = forwardRef<HTMLDivElement, DialysisChartProps>(({ session = DEMO_SESSION }, ref) => {
122
126
  const s = session;
123
127
 
124
128
  return (
125
- <div className={styles['dc-root']}>
129
+ <div className={styles['dc-root']} ref={ref}>
126
130
  <div className={styles['dc-shell']}>
127
131
  <header className={styles['dc-header']}>
128
132
  <div className={styles['dc-header-bar']} />
@@ -260,6 +264,8 @@ const DialysisChart: React.FC<{ session?: typeof DEMO_SESSION }> = ({ session =
260
264
  </div>
261
265
  </div>
262
266
  );
263
- };
267
+ });
268
+
269
+ DialysisChart.displayName = 'DialysisChart';
264
270
 
265
271
  export default DialysisChart;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { forwardRef } from 'react';
2
2
  import styles from './general-discharge-summary.scss';
3
3
 
4
4
  const DEMO_SUMMARY = {
@@ -74,97 +74,105 @@ function SectionBlock({ number, title, children }) {
74
74
  );
75
75
  }
76
76
 
77
- const GeneralDischargeSummary = ({ summary = DEMO_SUMMARY }) => {
78
- const s = summary;
77
+ interface GeneralDischargeSummaryProps {
78
+ summary?: typeof DEMO_SUMMARY;
79
+ }
79
80
 
80
- return (
81
- <div className={styles['ds-root']}>
82
- <div className={styles['ds-shell']}>
83
- <header className={styles['ds-header']}>
84
- <div className={styles['ds-header-bar']} />
85
- <div className={styles['ds-header-info']}>
86
- <p className={styles['ds-org']}>{s.facility}</p>
87
- <h1 className={styles['ds-title']}>Discharge Summary</h1>
88
- </div>
89
- <div className={styles['ds-meta-right']}>
90
- Printed by {s.printedBy}
91
- <br />
92
- {s.printedAt}
93
- </div>
94
- </header>
81
+ const GeneralDischargeSummary = forwardRef<HTMLDivElement, GeneralDischargeSummaryProps>(
82
+ ({ summary = DEMO_SUMMARY }, ref) => {
83
+ const s = summary;
95
84
 
96
- <SectionBlock number="1" title="Patient Information">
97
- <div className={styles['ds-field-grid']}>
98
- <Field label="Patient Name" value={s.patient.name} />
99
- <Field label="Patient ID" value={s.patient.patientId} />
100
- <Field label="Date of Birth" value={s.patient.dob} />
101
- <Field label="Gender" value={s.patient.gender} />
102
- <Field label="National ID" value={s.patient.nationalId} />
103
- <Field label="Hospital No" value={s.patient.hospitalNo} />
104
- <Field label="Insurance No" value={s.patient.insuranceNo} />
105
- <Field label="Mobile" value={s.patient.mobile} />
106
- </div>
107
- </SectionBlock>
85
+ return (
86
+ <div className={styles['ds-root']} ref={ref}>
87
+ <div className={styles['ds-shell']}>
88
+ <header className={styles['ds-header']}>
89
+ <div className={styles['ds-header-bar']} />
90
+ <div className={styles['ds-header-info']}>
91
+ <p className={styles['ds-org']}>{s.facility}</p>
92
+ <h1 className={styles['ds-title']}>Discharge Summary</h1>
93
+ </div>
94
+ <div className={styles['ds-meta-right']}>
95
+ Printed by {s.printedBy}
96
+ <br />
97
+ {s.printedAt}
98
+ </div>
99
+ </header>
108
100
 
109
- <SectionBlock number="2" title="Admission Details">
110
- <div className={styles['ds-field-grid']}>
111
- <Field label="Admission Date" value={s.admission.admissionDate} />
112
- <Field label="Discharge Date" value={s.admission.dischargeDate} />
113
- <Field label="Status" value={s.admission.status} />
114
- <Field label="Primary Doctor" value={s.admission.primaryDoctor} />
115
- <Field label="Ward / Bed" value={s.admission.ward} />
116
- <Field label="Admission Diagnosis" value={s.admission.admissionDiagnosis} />
117
- <Field label="Inpatient Record" value={s.admission.inpatientRecord} />
118
- </div>
119
- </SectionBlock>
101
+ <SectionBlock number="1" title="Patient Information">
102
+ <div className={styles['ds-field-grid']}>
103
+ <Field label="Patient Name" value={s.patient.name} />
104
+ <Field label="Patient ID" value={s.patient.patientId} />
105
+ <Field label="Date of Birth" value={s.patient.dob} />
106
+ <Field label="Gender" value={s.patient.gender} />
107
+ <Field label="National ID" value={s.patient.nationalId} />
108
+ <Field label="Hospital No" value={s.patient.hospitalNo} />
109
+ <Field label="Insurance No" value={s.patient.insuranceNo} />
110
+ <Field label="Mobile" value={s.patient.mobile} />
111
+ </div>
112
+ </SectionBlock>
120
113
 
121
- <SectionBlock number="3" title="Medical Data">
122
- <div className={styles['ds-field-grid']}>
123
- <Field label="Discharge Diagnosis" value={s.clinical.dischargeDiagnosis} />
124
- <Field label="Other Conditions" value={s.clinical.otherConditions} />
125
- <Field label="Clinical Findings" value={s.clinical.findings} />
126
- <Field label="Treatment" value={s.clinical.treatment} />
127
- <Field label="Operations / Procedures" value={s.clinical.operations} />
128
- <Field label="Laboratory Findings" value={s.clinical.labFindings} />
129
- <Field label="Imaging Findings" value={s.clinical.imagingFindings} />
130
- <Field label="Referrals / Other Instructions" value={s.clinical.referrals} />
131
- </div>
132
- </SectionBlock>
114
+ <SectionBlock number="2" title="Admission Details">
115
+ <div className={styles['ds-field-grid']}>
116
+ <Field label="Admission Date" value={s.admission.admissionDate} />
117
+ <Field label="Discharge Date" value={s.admission.dischargeDate} />
118
+ <Field label="Status" value={s.admission.status} />
119
+ <Field label="Primary Doctor" value={s.admission.primaryDoctor} />
120
+ <Field label="Ward / Bed" value={s.admission.ward} />
121
+ <Field label="Admission Diagnosis" value={s.admission.admissionDiagnosis} />
122
+ <Field label="Inpatient Record" value={s.admission.inpatientRecord} />
123
+ </div>
124
+ </SectionBlock>
133
125
 
134
- <SectionBlock number="4" title="Medications Prescribed During Admission">
135
- <table className={styles['ds-table']}>
136
- <thead>
137
- <tr>
138
- <th>Drug</th>
139
- <th>Dose</th>
140
- <th>Period</th>
141
- <th>Notes</th>
142
- </tr>
143
- </thead>
144
- <tbody>
145
- {s.medications.map((m, i) => (
146
- <tr key={i}>
147
- <td className={styles['ds-drug-name']}>{m.drug}</td>
148
- <td>{m.dose}</td>
149
- <td>{m.period}</td>
150
- <td className={styles['ds-drug-notes']}>{m.notes}</td>
126
+ <SectionBlock number="3" title="Medical Data">
127
+ <div className={styles['ds-field-grid']}>
128
+ <Field label="Discharge Diagnosis" value={s.clinical.dischargeDiagnosis} />
129
+ <Field label="Other Conditions" value={s.clinical.otherConditions} />
130
+ <Field label="Clinical Findings" value={s.clinical.findings} />
131
+ <Field label="Treatment" value={s.clinical.treatment} />
132
+ <Field label="Operations / Procedures" value={s.clinical.operations} />
133
+ <Field label="Laboratory Findings" value={s.clinical.labFindings} />
134
+ <Field label="Imaging Findings" value={s.clinical.imagingFindings} />
135
+ <Field label="Referrals / Other Instructions" value={s.clinical.referrals} />
136
+ </div>
137
+ </SectionBlock>
138
+
139
+ <SectionBlock number="4" title="Medications Prescribed During Admission">
140
+ <table className={styles['ds-table']}>
141
+ <thead>
142
+ <tr>
143
+ <th>Drug</th>
144
+ <th>Dose</th>
145
+ <th>Period</th>
146
+ <th>Notes</th>
151
147
  </tr>
152
- ))}
153
- </tbody>
154
- </table>
155
- </SectionBlock>
148
+ </thead>
149
+ <tbody>
150
+ {s.medications.map((m, i) => (
151
+ <tr key={i}>
152
+ <td className={styles['ds-drug-name']}>{m.drug}</td>
153
+ <td>{m.dose}</td>
154
+ <td>{m.period}</td>
155
+ <td className={styles['ds-drug-notes']}>{m.notes}</td>
156
+ </tr>
157
+ ))}
158
+ </tbody>
159
+ </table>
160
+ </SectionBlock>
156
161
 
157
- <SectionBlock number="5" title="Post-Discharge Instructions">
158
- <div className={styles['ds-outcome']}>
159
- Patient discharged in <strong>{s.outcome.condition}</strong>.
160
- </div>
161
- <Field label="Attending Doctor" value={s.outcome.attendingDoctor} />
162
- </SectionBlock>
162
+ <SectionBlock number="5" title="Post-Discharge Instructions">
163
+ <div className={styles['ds-outcome']}>
164
+ Patient discharged in <strong>{s.outcome.condition}</strong>.
165
+ </div>
166
+ <Field label="Attending Doctor" value={s.outcome.attendingDoctor} />
167
+ </SectionBlock>
163
168
 
164
- <div className={styles['ds-footer']}>Confidential — For authorized clinical use only</div>
169
+ <div className={styles['ds-footer']}>Confidential — For authorized clinical use only</div>
170
+ </div>
165
171
  </div>
166
- </div>
167
- );
168
- };
172
+ );
173
+ },
174
+ );
175
+
176
+ GeneralDischargeSummary.displayName = 'GeneralDischargeSummary';
169
177
 
170
178
  export default GeneralDischargeSummary;
@@ -14,6 +14,9 @@ import jsPDF from 'jspdf';
14
14
  import html2canvas from 'html2canvas';
15
15
  import { sendClaimAttachment } from '../../../../../registry/hie.resource';
16
16
  import FinalBillComponent from './final-bill.component';
17
+ import CaseSummary from './case-summary/case-summary';
18
+ import DialysisChart from './dialysis/dialysis-chart';
19
+ import GeneralDischargeSummary from './general-discharge-summary/general-discharge-summary';
17
20
 
18
21
  interface GenerateAttachmentsProps extends DefaultWorkspaceProps {
19
22
  claimInterventions: VisitIntervention;
@@ -50,6 +53,7 @@ const GenerateAttachments: React.FC<GenerateAttachmentsProps> = ({
50
53
  const finalBillRef = useRef<HTMLDivElement>(null);
51
54
  const dialysisRef = useRef<HTMLDivElement>(null);
52
55
  const caseSummaryRef = useRef<HTMLDivElement>(null);
56
+ const generalDischargeSummary = useRef<HTMLDivElement>(null);
53
57
 
54
58
  if (!claimInterventions) return null;
55
59
 
@@ -149,7 +153,7 @@ const GenerateAttachments: React.FC<GenerateAttachmentsProps> = ({
149
153
 
150
154
  switch (document.name) {
151
155
  case 'INVOICE':
152
- element = invoiceRef.current;
156
+ element = caseSummaryRef.current;
153
157
  break;
154
158
 
155
159
  case 'FINAL_BILL':
@@ -157,7 +161,17 @@ const GenerateAttachments: React.FC<GenerateAttachmentsProps> = ({
157
161
  break;
158
162
 
159
163
  case 'DISCHARGE_SUMMARY':
160
- element = dischargeRef.current;
164
+ element = generalDischargeSummary.current;
165
+ break;
166
+
167
+ case 'CASE_SUMMARY':
168
+ element = caseSummaryRef.current;
169
+ break;
170
+ case 'DIALYSIS_CHART':
171
+ element = dialysisRef.current;
172
+ break;
173
+ case 'GENERAL_DISCHARGE_SUMMARY':
174
+ element = generalDischargeSummary.current;
161
175
  break;
162
176
 
163
177
  default:
@@ -307,6 +321,9 @@ const GenerateAttachments: React.FC<GenerateAttachmentsProps> = ({
307
321
  <DischargeSummaryComponent ref={dischargeRef} claimIntervention={claimInterventions} bill={bill} />
308
322
 
309
323
  <FinalBillComponent ref={finalBillRef} bill={bill} />
324
+ <CaseSummary ref={caseSummaryRef} />
325
+ <DialysisChart ref={dialysisRef} />
326
+ <GeneralDischargeSummary ref={generalDischargeSummary} />
310
327
  </div>
311
328
  </>
312
329
  );