@ampath/esm-reports-app 1.0.0-next.7 → 1.0.0-next.71
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.
- package/dist/197.js +1 -1
- package/dist/282.js +1 -1
- package/dist/282.js.map +1 -1
- package/dist/295.css +1 -0
- package/dist/295.css.map +1 -0
- package/dist/295.js +1 -0
- package/dist/295.js.map +1 -0
- package/dist/299.js +2 -0
- package/dist/299.js.LICENSE.txt +3 -0
- package/dist/299.js.map +1 -0
- package/dist/300.js +1 -1
- package/dist/311.js +1 -1
- package/dist/311.js.map +1 -1
- package/dist/335.js +1 -1
- package/dist/353.js +1 -1
- package/dist/353.js.map +1 -1
- package/dist/354.js +2 -0
- package/dist/354.js.LICENSE.txt +20 -0
- package/dist/354.js.map +1 -0
- package/dist/410.js +1 -0
- package/dist/410.js.map +1 -0
- package/dist/457.js +2 -0
- package/dist/457.js.LICENSE.txt +261 -0
- package/dist/457.js.map +1 -0
- package/dist/478.js +1 -1
- package/dist/478.js.map +1 -1
- package/dist/480.js +1 -0
- package/dist/540.js +1 -1
- package/dist/540.js.map +1 -1
- package/dist/55.js +1 -1
- package/dist/580.js +1 -0
- package/dist/580.js.map +1 -0
- package/dist/600.js +2 -0
- package/dist/600.js.LICENSE.txt +35 -0
- package/dist/600.js.map +1 -0
- package/dist/652.js +1 -1
- package/dist/781.js +1 -0
- package/dist/781.js.map +1 -0
- package/dist/919.css +1 -0
- package/dist/919.css.map +1 -0
- package/dist/919.js +1 -0
- package/dist/919.js.map +1 -0
- package/dist/961.js +1 -1
- package/dist/961.js.map +1 -1
- package/dist/99.js +1 -1
- package/dist/99.js.map +1 -0
- package/dist/ampath-esm-reports-app.js +1 -1
- package/dist/ampath-esm-reports-app.js.map +1 -1
- package/dist/routes.json +1 -1
- package/package.json +4 -2
- package/src/common/daily-summary-table.tsx +55 -0
- package/src/common/linelist-table/index.ts +3 -0
- package/src/common/linelist-table/linelist-columns.ts +48 -0
- package/src/common/linelist-table/linelist-table.component.tsx +442 -0
- package/src/common/linelist-table/linelist-table.scss +306 -0
- package/src/common/linelist-table/linelist-table.test.tsx +120 -0
- package/src/common/linelist-table/use-all-rows.ts +93 -0
- package/src/common/linelist-table/use-column-layout.ts +123 -0
- package/src/common/report-error/index.ts +1 -0
- package/src/common/report-error/show-report-error.ts +25 -0
- package/src/common/report-filters/date-range.ts +137 -0
- package/src/common/report-filters/index.ts +4 -0
- package/src/common/report-filters/report-filters.component.tsx +317 -99
- package/src/common/report-filters/report-filters.scss +255 -32
- package/src/common/report-filters/types.ts +79 -0
- package/src/common/report-filters/use-restore-period.ts +43 -0
- package/src/common/report-header/index.ts +1 -0
- package/src/common/report-header/use-location-details.ts +58 -0
- package/src/common/report-page/download-sheet-pdf.ts +59 -0
- package/src/common/report-page/index.ts +3 -0
- package/src/common/report-page/report-page.component.tsx +32 -0
- package/src/common/report-page/report-page.scss +45 -0
- package/src/common/report-page/use-page-scale.ts +60 -0
- package/src/common/report-placeholder/has-report-data.ts +15 -0
- package/src/common/report-placeholder/index.ts +3 -0
- package/src/common/report-placeholder/report-placeholder.component.tsx +81 -0
- package/src/common/report-placeholder/report-placeholder.scss +48 -0
- package/src/common/report-placeholder/use-generated-location.ts +62 -0
- package/src/common/report-register/index.ts +6 -0
- package/src/common/report-register/register-columns.ts +46 -0
- package/src/common/report-register/register-layout.component.tsx +265 -0
- package/src/common/report-register/register-layout.scss +150 -0
- package/src/common/report-register/register-table.scss +71 -0
- package/src/common/report-register/report-parents.ts +27 -0
- package/src/common/report-register/rows-to-csv.ts +89 -0
- package/src/common/report-register/use-location-name.ts +54 -0
- package/src/common/report-register/use-patient-list.ts +92 -0
- package/src/common/report-skeleton/index.ts +1 -0
- package/src/common/report-skeleton/report-skeleton.component.tsx +46 -0
- package/src/common/report-skeleton/report-skeleton.scss +29 -0
- package/src/config-schema.ts +9 -1
- package/src/dashboard/report-catalog.ts +173 -0
- package/src/dashboard/reports-dasboard.tsx +189 -18
- package/src/dashboard/reports-dashboard.module.scss +357 -14
- package/src/index.ts +13 -1
- package/src/registers/moh-240/moh-240-register.scss +41 -0
- package/src/registers/moh-240/moh-240.component.test.tsx +166 -0
- package/src/registers/moh-240/moh-240.component.tsx +164 -0
- package/src/registers/moh-362/moh-362-lab-register.component.tsx +392 -0
- package/src/registers/moh-362/moh-362-linkage-register.component.tsx +120 -0
- package/src/registers/moh-362/moh-362-register.scss +222 -0
- package/src/registers/moh-362/moh-362.component.tsx +99 -0
- package/src/registers/moh-362/moh-362.scss +11 -0
- package/src/registers/moh-362/moh-362.types.ts +97 -0
- package/src/registers/register-catalog.ts +96 -0
- package/src/registers/tb-lab-register/tb-lab-register-table.component.tsx +116 -0
- package/src/registers/tb-lab-register/tb-lab-register-table.scss +123 -0
- package/src/registers/tb-lab-register/tb-lab-register.columns.ts +164 -0
- package/src/registers/tb-lab-register/tb-lab-register.component.test.tsx +232 -0
- package/src/registers/tb-lab-register/tb-lab-register.component.tsx +153 -0
- package/src/reports/datatable-wrapper/datatable-wrapper.component.tsx +63 -48
- package/src/reports/moh-240/moh-240-header.component.tsx +62 -0
- package/src/reports/moh-240/moh-240.columns.ts +113 -0
- package/src/reports/moh-240/moh-240.component.tsx +72 -9
- package/src/reports/moh-240/moh-240.scss +40 -0
- package/src/reports/moh-240/sub-reports/moh-240-register.component.tsx +31 -37
- package/src/reports/moh-240/sub-reports/page-summary.component.tsx +143 -106
- package/src/reports/moh-505/moh-505-header.component.tsx +67 -0
- package/src/reports/moh-505/moh-505.component.tsx +441 -0
- package/src/reports/moh-505/moh-505.scss +117 -0
- package/src/reports/moh-705B/moh-204b-register.component.tsx +244 -0
- package/src/reports/moh-705B/moh-204b.columns.ts +39 -0
- package/src/reports/moh-705B/moh-705b.component.tsx +659 -0
- package/src/reports/moh-705B/moh-705b.scss +172 -0
- package/src/reports/moh-705a/moh-705a.component.tsx +661 -0
- package/src/reports/moh-705a/moh-705a.scss +172 -0
- package/src/reports/moh-705a/registers/moh-204a-register.component.tsx +329 -0
- package/src/reports/moh-705a/registers/moh-204a.columns.ts +57 -0
- package/src/reports/moh-705a/type.ts +6 -0
- package/src/reports/moh-706/moh-706-header.component.tsx +66 -0
- package/src/reports/moh-706/moh-706.component.tsx +150 -24
- package/src/reports/moh-706/moh-706.scss +119 -11
- package/src/reports/moh-706/sub-reports/bacteriology/bacteriology.component.tsx +54 -62
- package/src/reports/moh-706/sub-reports/blood-chemistry/blood-chemistry.component.tsx +228 -317
- package/src/reports/moh-706/sub-reports/drug-susceptibility-testing/drug-susceptibility-testing.component.tsx +31 -46
- package/src/reports/moh-706/sub-reports/haematology/haematology.component.tsx +47 -55
- package/src/reports/moh-706/sub-reports/histology-and-cytology/histology-and-cytology.component.tsx +43 -58
- package/src/reports/moh-706/sub-reports/parasitology/parasitology.component.tsx +31 -39
- package/src/reports/moh-706/sub-reports/serology/serology.component.tsx +26 -34
- package/src/reports/moh-706/sub-reports/specimen-referral-to-higher-levels/specimen-referral-to-higher-levels.component.tsx +9 -24
- package/src/reports/moh-706/sub-reports/urine-analysis/urine-analysis.component.tsx +43 -51
- package/src/reports/moh-710/moh-710.component.tsx +799 -632
- package/src/reports/moh-710/moh-710.scss +142 -21
- package/src/reports/moh-710/registers/moh-510/moh-510.columns.ts +40 -0
- package/src/reports/moh-710/registers/moh-510/moh-510.component.tsx +144 -0
- package/src/reports/moh-710/registers/moh-510/moh-510.scss +130 -0
- package/src/reports/moh-710/registers/moh-511-710-register.component.tsx +268 -0
- package/src/reports/moh-710/registers/moh-511-710.columns.ts +52 -0
- package/src/reports/moh-710/registers/type.ts +31 -0
- package/src/reports/moh-711/moh-711.component.tsx +138 -1269
- package/src/reports/moh-711/moh711.scss +135 -20
- package/src/reports/moh-711/registers/moh-333-register.component.tsx +637 -0
- package/src/reports/moh-711/registers/moh-333.columns.ts +119 -0
- package/src/reports/moh-711/registers/moh-405-register.component.tsx +520 -0
- package/src/reports/moh-711/registers/moh-405.columns.ts +120 -0
- package/src/reports/moh-711/registers/moh-406-register.component.tsx +530 -0
- package/src/reports/moh-711/registers/moh-406.columns.ts +133 -0
- package/src/reports/moh-711/registers/moh-510-register.component.tsx +55 -0
- package/src/reports/moh-711/registers/moh-511-register.component.tsx +270 -0
- package/src/reports/moh-711/registers/moh-511.columns.ts +59 -0
- package/src/reports/moh-711/registers/type.ts +192 -0
- package/src/reports/moh-711/sections/anc.component.tsx +159 -0
- package/src/reports/moh-711/sections/cervical-cancer.component.tsx +148 -0
- package/src/reports/moh-711/sections/chanis.component.tsx +366 -0
- package/src/reports/moh-711/sections/family-planning.component.tsx +221 -0
- package/src/reports/moh-711/sections/gbv.component.tsx +115 -0
- package/src/reports/moh-711/sections/maternity.component.tsx +321 -0
- package/src/reports/moh-711/sections/medical-social-work.component.tsx +73 -0
- package/src/reports/moh-711/sections/other.component.tsx +47 -0
- package/src/reports/moh-711/sections/physiotherapy.component.tsx +61 -0
- package/src/reports/moh-711/sections/pnc.component.tsx +127 -0
- package/src/reports/moh-711/sections/post-abortion.component.tsx +42 -0
- package/src/reports/moh-711/sections/rehabilitation.component.tsx +57 -0
- package/src/reports/moh-711/sections/report-compiled-by.component.tsx +50 -0
- package/src/reports/moh-711/sections/tb-screening.component.tsx +57 -0
- package/src/reports/moh-717/moh-717.component.tsx +149 -985
- package/src/reports/moh-717/moh717.scss +217 -21
- package/src/reports/moh-717/registers/nutrition-register.component.tsx +48 -0
- package/src/reports/moh-717/sections/finance.component.tsx +42 -0
- package/src/reports/moh-717/sections/inpatient.component.tsx +374 -0
- package/src/reports/moh-717/sections/maternity.component.tsx +126 -0
- package/src/reports/moh-717/sections/medical-records.component.tsx +35 -0
- package/src/reports/moh-717/sections/mortuary.component.tsx +43 -0
- package/src/reports/moh-717/sections/operations.component.tsx +53 -0
- package/src/reports/moh-717/sections/orthopaedic-trauma.component.tsx +98 -0
- package/src/reports/moh-717/sections/outpatient.component.tsx +597 -0
- package/src/reports/moh-717/sections/pharmacy.component.tsx +43 -0
- package/src/reports/moh-717/sections/preparedby.component.tsx +52 -0
- package/src/reports/moh-717/sections/special-services.component.tsx +114 -0
- package/src/reports/moh-731/linelist/moh-731-indicators.ts +1122 -0
- package/src/reports/moh-731/linelist/moh-731-linelist-sections.ts +472 -0
- package/src/reports/moh-731/linelist/moh-731-linelist.component.tsx +102 -0
- package/src/reports/moh-731/linelist/use-open-moh-731-linelist.ts +50 -0
- package/src/reports/moh-731/moh-731.component.tsx +266 -0
- package/src/reports/moh-731/moh-731.scss +499 -0
- package/src/reports/moh-731/registers/moh-366.columns.ts +38 -0
- package/src/reports/moh-731/registers/moh-366.component.tsx +471 -0
- package/src/reports/moh-731/registers/prep-register.component.tsx +284 -0
- package/src/reports/moh-731/registers/prep.columns.ts +34 -0
- package/src/reports/moh-731/sections/hiv-and-tb-treatment.component.tsx +1206 -0
- package/src/reports/moh-731/sections/hiv-testing-and-pre-exposure.component.tsx +727 -0
- package/src/reports/moh-731/sections/pmtct.component.tsx +572 -0
- package/src/reports/moh-731/summary/moh-731-summary.component.tsx +313 -0
- package/src/reports/moh-731/summary/moh-731-summary.config.ts +529 -0
- package/src/reports/moh-731/summary/moh-731-summary.scss +242 -0
- package/src/reports/moh-740/moh-740.component.scss +202 -0
- package/src/reports/moh-740/moh-740.component.tsx +1332 -0
- package/src/reports/moh-740/moh-740.resource.ts +54 -0
- package/src/reports/moh-740/registers/moh-222-daily-register/moh-222-daily-register.tsx +149 -0
- package/src/reports/moh-740/registers/moh-270-permanent-register/moh-270-permanent-register.tsx +123 -0
- package/src/reports/moh-740/registers/moh-740-patient-list.scss +0 -0
- package/src/reports/moh-740/registers/moh-740-patient-list.tsx +60 -0
- package/src/reports/moh-740/registers/moh-740.columns.ts +54 -0
- package/src/reports/moh-740/shared/data-cell/data-cell.scss +6 -0
- package/src/reports/moh-740/shared/data-cell/data-cell.tsx +23 -0
- package/src/reports/moh-740/shared/utils/indicator-register-map.ts +159 -0
- package/src/reports/moh-740/types/index.ts +223 -0
- package/src/reports/moh-745/moh-745.component.tsx +1021 -0
- package/src/reports/moh-745/moh-745.scss +132 -0
- package/src/reports/moh-745/registers/moh-412-register.component.tsx +249 -0
- package/src/reports/moh-745/registers/moh-412.columns.ts +52 -0
- package/src/reports/moh-745/registers/type.ts +181 -0
- package/src/reports/table-wrapper/table-row-mapper.component.tsx +57 -0
- package/src/reports/table-wrapper/table-wrapper.component.tsx +23 -14
- package/src/reports/table-wrapper/table-wrapper.scss +1 -16
- package/src/resources/moh-362.resource.ts +27 -0
- package/src/resources/moh-505.resource.ts +69 -0
- package/src/resources/moh-705.resource.ts +106 -0
- package/src/resources/moh-706.resource.ts +80 -0
- package/src/resources/moh-710.resource.ts +32 -9
- package/src/resources/moh-711.resource.ts +137 -9
- package/src/resources/moh-717.resource.ts +26 -9
- package/src/resources/moh-731.resource.ts +90 -0
- package/src/resources/moh-745.resource.ts +76 -0
- package/src/resources/patient-list-page.ts +65 -0
- package/src/root.component.tsx +59 -8
- package/src/root.scss +36 -0
- package/src/routes.json +3 -1
- package/src/utils/format-indicator.ts +39 -0
- package/src/utils/get-base-url.ts +39 -7
- package/src/utils/utils.ts +36 -0
- package/tsconfig.json +1 -1
- package/webpack.config.js +22 -1
- package/dist/138.js +0 -2
- package/dist/138.js.LICENSE.txt +0 -20
- package/dist/138.js.map +0 -1
- package/dist/184.js +0 -2
- package/dist/184.js.LICENSE.txt +0 -14
- package/dist/184.js.map +0 -1
- package/dist/205.js +0 -1
- package/dist/205.js.map +0 -1
- package/dist/711.js +0 -1
- package/dist/711.js.map +0 -1
- package/dist/812.js +0 -1
- package/dist/812.js.map +0 -1
- package/dist/ampath-esm-reports-app.js.buildmanifest.json +0 -539
- package/dist/main.js +0 -1
- package/dist/main.js.map +0 -1
|
@@ -1,26 +1,152 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import { formatDate, useSession } from '@openmrs/esm-framework';
|
|
3
|
+
import { Column, Grid } from '@carbon/react';
|
|
4
|
+
import UrineAnalysis from './sub-reports/urine-analysis/urine-analysis.component';
|
|
5
|
+
import BloodChemistry from './sub-reports/blood-chemistry/blood-chemistry.component';
|
|
6
|
+
import Parasitology from './sub-reports/parasitology/parasitology.component';
|
|
7
|
+
import Haematology from './sub-reports/haematology/haematology.component';
|
|
8
|
+
import Bacteriology from './sub-reports/bacteriology/bacteriology.component';
|
|
9
|
+
import HistologyAndCytology from './sub-reports/histology-and-cytology/histology-and-cytology.component';
|
|
10
|
+
import Serology from './sub-reports/serology/serology.component';
|
|
11
|
+
import SpecimenReferralToHigherLevels from './sub-reports/specimen-referral-to-higher-levels/specimen-referral-to-higher-levels.component';
|
|
12
|
+
import DrugSusceptibilityTesting from './sub-reports/drug-susceptibility-testing/drug-susceptibility-testing.component';
|
|
13
|
+
import { ReportFiltersComponent, type ReportPeriod } from '../../common/report-filters';
|
|
14
|
+
import { showReportError } from '../../common/report-error';
|
|
15
|
+
import { hasReportData, ReportPlaceholder, useGeneratedLocation } from '../../common/report-placeholder';
|
|
16
|
+
import { getMoh706 } from '../../resources/moh-706.resource';
|
|
17
|
+
import styles from './moh-706.scss';
|
|
18
|
+
import MOH706Header from './moh-706-header.component';
|
|
19
|
+
import { useSearchParams } from 'react-router-dom';
|
|
20
|
+
import { ReportSkeleton } from '../../common/report-skeleton';
|
|
21
|
+
import { ReportPage } from '../../common/report-page';
|
|
11
22
|
|
|
12
23
|
const MoH706Report: React.FC = () => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
const [moh706Data, setMoh706Data] = useState<any>({});
|
|
25
|
+
/* Only a report for the current location counts: after switching location the
|
|
26
|
+
old figures would otherwise be shown, and labelled, as the new location's. */
|
|
27
|
+
const { isForCurrentLocation, hasLocationChanged, markGenerated } = useGeneratedLocation();
|
|
28
|
+
const isReportGenerated = hasReportData(moh706Data) && isForCurrentLocation;
|
|
29
|
+
const [isLoading, setIsLoading] = useState<boolean>(false);
|
|
30
|
+
const [filters, setFilters] = useState<{ locationUuids?: string; startDate?: string; endDate?: string }>({});
|
|
31
|
+
|
|
32
|
+
const session = useSession();
|
|
33
|
+
const locationUuids = session?.sessionLocation?.uuid;
|
|
34
|
+
|
|
35
|
+
/* Masthead and sign-off fill themselves in, as on the other reports */
|
|
36
|
+
const facility = session?.sessionLocation?.display ?? '';
|
|
37
|
+
const compiledBy = session?.user?.person?.display ?? session?.user?.display ?? '';
|
|
38
|
+
const compiledOn = formatDate(new Date(), { mode: 'standard', time: false, noToday: true });
|
|
39
|
+
|
|
40
|
+
const [searchParams] = useSearchParams();
|
|
41
|
+
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
const startDate = searchParams.get('startDate');
|
|
44
|
+
const endDate = searchParams.get('endDate');
|
|
45
|
+
|
|
46
|
+
if (startDate && endDate) {
|
|
47
|
+
setFilters({ locationUuids, startDate, endDate });
|
|
48
|
+
fetchMoh706Data({ startDate, endDate });
|
|
49
|
+
}
|
|
50
|
+
}, [searchParams]);
|
|
51
|
+
|
|
52
|
+
const fetchMoh706Data = async ({ startDate, endDate }: Pick<ReportPeriod, 'startDate' | 'endDate'>) => {
|
|
53
|
+
setIsLoading(true);
|
|
54
|
+
|
|
55
|
+
const params = {
|
|
56
|
+
locationUuids: locationUuids || '',
|
|
57
|
+
startDate,
|
|
58
|
+
endDate,
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
try {
|
|
62
|
+
const result = await getMoh706(params);
|
|
63
|
+
const flatData = Object.assign({}, ...result);
|
|
64
|
+
setMoh706Data(flatData);
|
|
65
|
+
markGenerated(params.locationUuids);
|
|
66
|
+
setFilters({ locationUuids: params.locationUuids, startDate, endDate });
|
|
67
|
+
} catch (error: any) {
|
|
68
|
+
showReportError('the MOH-706 report', error);
|
|
69
|
+
} finally {
|
|
70
|
+
setIsLoading(false);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
return (
|
|
75
|
+
<>
|
|
76
|
+
<ReportFiltersComponent
|
|
77
|
+
reportName="MOH-706 Report"
|
|
78
|
+
mode="both"
|
|
79
|
+
onGenerate={fetchMoh706Data}
|
|
80
|
+
isLoading={isLoading}
|
|
81
|
+
isReportGenerated={isReportGenerated}
|
|
82
|
+
/>
|
|
83
|
+
{isLoading && <ReportSkeleton />}
|
|
84
|
+
{!isLoading && !isReportGenerated && (
|
|
85
|
+
<ReportPlaceholder reportName="MOH-706" isLocationChanged={hasReportData(moh706Data) && hasLocationChanged} />
|
|
86
|
+
)}
|
|
87
|
+
{!isLoading && isReportGenerated && (
|
|
88
|
+
<ReportPage>
|
|
89
|
+
<div className={styles.sheet}>
|
|
90
|
+
<MOH706Header facility={facility} startDate={filters.startDate} endDate={filters.endDate} />
|
|
91
|
+
<div className={styles.reportSections}>
|
|
92
|
+
<UrineAnalysis
|
|
93
|
+
data={moh706Data}
|
|
94
|
+
locationUuids={filters.locationUuids}
|
|
95
|
+
startDate={filters.startDate}
|
|
96
|
+
endDate={filters.endDate}
|
|
97
|
+
/>
|
|
98
|
+
<BloodChemistry
|
|
99
|
+
data={moh706Data}
|
|
100
|
+
locationUuids={filters.locationUuids}
|
|
101
|
+
startDate={filters.startDate}
|
|
102
|
+
endDate={filters.endDate}
|
|
103
|
+
/>
|
|
104
|
+
<Parasitology
|
|
105
|
+
data={moh706Data}
|
|
106
|
+
locationUuids={filters.locationUuids}
|
|
107
|
+
startDate={filters.startDate}
|
|
108
|
+
endDate={filters.endDate}
|
|
109
|
+
/>
|
|
110
|
+
<Haematology
|
|
111
|
+
data={moh706Data}
|
|
112
|
+
locationUuids={filters.locationUuids}
|
|
113
|
+
startDate={filters.startDate}
|
|
114
|
+
endDate={filters.endDate}
|
|
115
|
+
/>
|
|
116
|
+
<Bacteriology
|
|
117
|
+
data={moh706Data}
|
|
118
|
+
locationUuids={filters.locationUuids}
|
|
119
|
+
startDate={filters.startDate}
|
|
120
|
+
endDate={filters.endDate}
|
|
121
|
+
/>
|
|
122
|
+
<HistologyAndCytology />
|
|
123
|
+
<Serology
|
|
124
|
+
data={moh706Data}
|
|
125
|
+
locationUuids={filters.locationUuids}
|
|
126
|
+
startDate={filters.startDate}
|
|
127
|
+
endDate={filters.endDate}
|
|
128
|
+
/>
|
|
129
|
+
<SpecimenReferralToHigherLevels />
|
|
130
|
+
<DrugSusceptibilityTesting />
|
|
131
|
+
</div>
|
|
132
|
+
|
|
133
|
+
<div className={styles.signOff}>
|
|
134
|
+
<span>
|
|
135
|
+
Compiled by:<span className={styles.line}>{compiledBy}</span>
|
|
136
|
+
</span>
|
|
137
|
+
<span>
|
|
138
|
+
Signature:
|
|
139
|
+
<span className={styles.line} />
|
|
140
|
+
</span>
|
|
141
|
+
<span>
|
|
142
|
+
Date:<span className={styles.shortLine}>{compiledOn}</span>
|
|
143
|
+
</span>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
</ReportPage>
|
|
147
|
+
)}
|
|
148
|
+
</>
|
|
149
|
+
);
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
export default MoH706Report;
|
|
@@ -1,18 +1,126 @@
|
|
|
1
|
-
.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/* MOH-706 laid out for A4, on the same scale as the other reports.
|
|
2
|
+
|
|
3
|
+
Its nine sub-reports all render through the shared TableWrapper, so their
|
|
4
|
+
cells are styled from `table-wrapper.scss` rather than here. Those rules are
|
|
5
|
+
all single-class, so scoping these under `.sheet` (a class plus an element,
|
|
6
|
+
one step more specific) wins deterministically -- no reliance on which module
|
|
7
|
+
loads first. The wrapper is asked for a plain table so Carbon's data-table
|
|
8
|
+
rules, which are far more specific, never apply at all. */
|
|
9
|
+
|
|
10
|
+
$ink: #000;
|
|
11
|
+
$rule: 1px solid $ink;
|
|
12
|
+
|
|
13
|
+
$text: 7pt;
|
|
14
|
+
$title: 7.5pt;
|
|
15
|
+
$meta: 6.5pt;
|
|
16
|
+
|
|
17
|
+
$pad: 3mm;
|
|
18
|
+
|
|
19
|
+
.mainTitleBox {
|
|
20
|
+
padding: 2mm $pad;
|
|
21
|
+
text-align: center;
|
|
22
|
+
border: $rule;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.ministry {
|
|
26
|
+
font-size: $meta;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.reportTitle {
|
|
30
|
+
font-size: $title;
|
|
31
|
+
font-weight: 700;
|
|
32
|
+
color: $ink;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.headerSection {
|
|
36
|
+
padding: 0;
|
|
5
37
|
}
|
|
6
38
|
|
|
7
|
-
.
|
|
39
|
+
/* The nine sub-reports run continuously down the sheet, as they do on the form.
|
|
40
|
+
Each is kept off a page break so a block is never split from the heading row
|
|
41
|
+
that names its columns. */
|
|
42
|
+
|
|
43
|
+
.reportSections {
|
|
8
44
|
width: 100%;
|
|
9
|
-
|
|
45
|
+
margin: 0;
|
|
46
|
+
padding: 0;
|
|
47
|
+
|
|
48
|
+
> * {
|
|
49
|
+
break-inside: avoid;
|
|
50
|
+
page-break-inside: avoid;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.sheet {
|
|
55
|
+
font-size: $text;
|
|
10
56
|
|
|
11
|
-
|
|
12
|
-
|
|
57
|
+
table {
|
|
58
|
+
width: 100%;
|
|
59
|
+
border-collapse: collapse;
|
|
13
60
|
}
|
|
14
61
|
|
|
15
|
-
|
|
16
|
-
|
|
62
|
+
td,
|
|
63
|
+
th {
|
|
64
|
+
height: auto;
|
|
65
|
+
min-width: 0;
|
|
66
|
+
padding: 0.7mm 1mm;
|
|
67
|
+
overflow-wrap: anywhere;
|
|
68
|
+
font-size: $text;
|
|
69
|
+
line-height: 1.25;
|
|
70
|
+
text-align: center;
|
|
71
|
+
border: $rule;
|
|
17
72
|
}
|
|
18
|
-
|
|
73
|
+
|
|
74
|
+
/* Row labels read as text, not as data */
|
|
75
|
+
td:first-child {
|
|
76
|
+
text-align: left;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* The facility block is all labels and values, none of it tabular data */
|
|
80
|
+
.headerSection td {
|
|
81
|
+
text-align: left;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* Sign-off, enclosed by the form */
|
|
86
|
+
|
|
87
|
+
.signOff {
|
|
88
|
+
display: flex;
|
|
89
|
+
flex-wrap: nowrap;
|
|
90
|
+
align-items: baseline;
|
|
91
|
+
justify-content: space-between;
|
|
92
|
+
gap: 2.5mm;
|
|
93
|
+
padding: $pad;
|
|
94
|
+
font-size: $meta;
|
|
95
|
+
white-space: nowrap;
|
|
96
|
+
border: $rule;
|
|
97
|
+
border-top: none;
|
|
98
|
+
|
|
99
|
+
> span {
|
|
100
|
+
display: flex;
|
|
101
|
+
flex: 1 1 auto;
|
|
102
|
+
align-items: baseline;
|
|
103
|
+
min-width: 0;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.line,
|
|
108
|
+
.shortLine {
|
|
109
|
+
padding: 0 0.5mm;
|
|
110
|
+
margin-left: 1mm;
|
|
111
|
+
overflow: hidden;
|
|
112
|
+
font-weight: 600;
|
|
113
|
+
text-align: center;
|
|
114
|
+
text-overflow: ellipsis;
|
|
115
|
+
border-bottom: $rule;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.line {
|
|
119
|
+
flex: 1 1 45mm;
|
|
120
|
+
min-width: 15mm;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.shortLine {
|
|
124
|
+
flex: 1 1 25mm;
|
|
125
|
+
min-width: 12mm;
|
|
126
|
+
}
|
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
import React, { useMemo } from "react";
|
|
2
|
-
import { TableRow, TableCell } from '@carbon/react';
|
|
3
2
|
import TableWrapper from "../../../table-wrapper/table-wrapper.component";
|
|
4
|
-
import
|
|
3
|
+
import TableRowMapper from "../../../table-wrapper/table-row-mapper.component";
|
|
4
|
+
import { getCell } from "../../../../utils/utils";
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
});
|
|
6
|
+
interface BacteriologyProps {
|
|
7
|
+
data?: any,
|
|
8
|
+
locationUuids?: string,
|
|
9
|
+
startDate?: string,
|
|
10
|
+
endDate?: string
|
|
11
|
+
}
|
|
13
12
|
|
|
13
|
+
const Bacteriology: React.FC<BacteriologyProps> = ({ data, locationUuids, startDate, endDate }) => {
|
|
14
14
|
const tableRows = useMemo(() => {
|
|
15
15
|
return [
|
|
16
16
|
{
|
|
17
|
-
tableCells: [getCell("", "5 BACTERIOLOGY", 4, true)]
|
|
17
|
+
tableCells: [getCell("", "5 BACTERIOLOGY", 4, 1, true)]
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
tableCells: [
|
|
21
|
-
getCell("", "Bacteriological Sample", 1, true),
|
|
22
|
-
getCell("", "Total Exam", 1, true),
|
|
23
|
-
getCell("", "Total Cultures", 1, true),
|
|
24
|
-
getCell("", "Number Culture Positive", 1, true),
|
|
21
|
+
getCell("", "Bacteriological Sample", 1, 1, true),
|
|
22
|
+
getCell("", "Total Exam", 1, 1, true),
|
|
23
|
+
getCell("", "Total Cultures", 1, 1, true),
|
|
24
|
+
getCell("", "Number Culture Positive", 1, 1, true),
|
|
25
25
|
]
|
|
26
26
|
},
|
|
27
27
|
{ tableCells: [getCell("", "5.1 Urine"), getCell(), getCell(), getCell()] },
|
|
28
|
-
{ tableCells: [getCell("", "5.2 Pus swabs"), getCell(), getCell(), getCell()] },
|
|
28
|
+
{ tableCells: [getCell("", "5.2 Pus swabs"), getCell("total_bact_pus_swab"), getCell(), getCell()] },
|
|
29
29
|
{ tableCells: [getCell("", "5.3 High Vaginal Swabs"), getCell(), getCell(), getCell()] },
|
|
30
|
-
{ tableCells: [getCell("", "5.4 Throat swab"), getCell(), getCell(), getCell()] },
|
|
31
|
-
{ tableCells: [getCell("", "5.5 Rectal swab"), getCell(), getCell(), getCell()] },
|
|
32
|
-
{ tableCells: [getCell("", "5.6 Blood"), getCell(), getCell(), getCell()] },
|
|
33
|
-
{ tableCells: [getCell("", "5.7 Water"), getCell(), getCell(), getCell()] },
|
|
34
|
-
{ tableCells: [getCell("", "5.8 Food"), getCell(), getCell(), getCell()] },
|
|
35
|
-
{ tableCells: [getCell("", "5.9 Urethral swabs"), getCell(), getCell(), getCell()] },
|
|
30
|
+
{ tableCells: [getCell("", "5.4 Throat swab"), getCell("total_bact_throat_swab"), getCell(), getCell()] },
|
|
31
|
+
{ tableCells: [getCell("", "5.5 Rectal swab"), getCell("total_bact_rectal_swab"), getCell(), getCell()] },
|
|
32
|
+
{ tableCells: [getCell("", "5.6 Blood"), getCell("total_bact_blood"), getCell(), getCell()] },
|
|
33
|
+
{ tableCells: [getCell("", "5.7 Water"), getCell("total_bact_water"), getCell(), getCell()] },
|
|
34
|
+
{ tableCells: [getCell("", "5.8 Food"), getCell("total_bact_food"), getCell(), getCell()] },
|
|
35
|
+
{ tableCells: [getCell("", "5.9 Urethral swabs"), getCell("total_bact_urethral"), getCell(), getCell()] },
|
|
36
36
|
{
|
|
37
37
|
tableCells: [
|
|
38
|
-
getCell("", "Bacterial enteric pathogens", 2, true),
|
|
39
|
-
getCell("", "Total Exam", 1, true),
|
|
40
|
-
getCell("", "Number Positive", 1, true),
|
|
38
|
+
getCell("", "Bacterial enteric pathogens", 2, 1, true),
|
|
39
|
+
getCell("", "Total Exam", 1, 1, true),
|
|
40
|
+
getCell("", "Number Positive", 1, 1, true),
|
|
41
41
|
]
|
|
42
42
|
},
|
|
43
43
|
{
|
|
@@ -49,65 +49,65 @@ const Bacteriology: React.FC = () => {
|
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
tableCells: [
|
|
52
|
-
getCell("", "Stool Isolates", 3, true),
|
|
53
|
-
getCell("", "Number Positive", 1, true),
|
|
52
|
+
getCell("", "Stool Isolates", 3, 1, true),
|
|
53
|
+
getCell("", "Number Positive", 1, 1, true),
|
|
54
54
|
]
|
|
55
55
|
},
|
|
56
|
-
{ tableCells: [getCell("", "5.11 Salmonella typhi", 3), getCell()] },
|
|
57
|
-
{ tableCells: [getCell("", "5.12 Shigella - dysenteriae type1", 3), getCell()] },
|
|
58
|
-
{ tableCells: [getCell("", "5.13 E. coli O157:H7", 3), getCell()] },
|
|
59
|
-
{ tableCells: [getCell("", "5.14 V. cholerae O1", 3), getCell()] },
|
|
56
|
+
{ tableCells: [getCell("", "5.11 Salmonella typhi", 3), getCell("positive_salmonella")] },
|
|
57
|
+
{ tableCells: [getCell("", "5.12 Shigella - dysenteriae type1", 3), getCell("positive_bact_shigella_dysenteriae1")] },
|
|
58
|
+
{ tableCells: [getCell("", "5.13 E. coli O157:H7", 3), getCell("positive_bact_ecoli_o157")] },
|
|
59
|
+
{ tableCells: [getCell("", "5.14 V. cholerae O1", 3), getCell("positive_bact_v_cholerae_o1")] },
|
|
60
60
|
{ tableCells: [getCell("", "5.15 V. cholerae O139", 3), getCell()] },
|
|
61
61
|
|
|
62
62
|
{
|
|
63
|
-
tableCells: [getCell("", "Bacterial meningitis", 4, true)]
|
|
63
|
+
tableCells: [getCell("", "Bacterial meningitis", 4, 1, true)]
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
66
|
tableCells: [
|
|
67
|
-
getCell("", "Bacterial meningitis", 1, true),
|
|
68
|
-
getCell("", "Total Exam", 1, true),
|
|
69
|
-
getCell("", "Number Positive", 1, true),
|
|
70
|
-
getCell("", "Number Contaminated", 2, true),
|
|
67
|
+
getCell("", "Bacterial meningitis", 1, 1, true),
|
|
68
|
+
getCell("", "Total Exam", 1, 1, true),
|
|
69
|
+
getCell("", "Number Positive", 1, 1, true),
|
|
70
|
+
getCell("", "Number Contaminated", 2, 1, true),
|
|
71
71
|
]
|
|
72
72
|
},
|
|
73
73
|
{
|
|
74
74
|
tableCells: [
|
|
75
75
|
getCell("", "5.16 CSF"),
|
|
76
|
-
getCell(),
|
|
76
|
+
getCell("total_bact_csf"),
|
|
77
77
|
getCell(),
|
|
78
78
|
getCell(),
|
|
79
79
|
]
|
|
80
80
|
},
|
|
81
81
|
{
|
|
82
82
|
tableCells: [
|
|
83
|
-
getCell("", "Bacterial meningitis Serotypes", 1, true),
|
|
84
|
-
getCell("", "Number Positive", 3, true),
|
|
83
|
+
getCell("", "Bacterial meningitis Serotypes", 1, 1, true),
|
|
84
|
+
getCell("", "Number Positive", 3, 1, true),
|
|
85
85
|
]
|
|
86
86
|
},
|
|
87
|
-
{ tableCells: [getCell("", "5.17 Neisseria meningitidis A"), getCell("", "", 3)] },
|
|
88
|
-
{ tableCells: [getCell("", "5.18 Neisseria meningitidis B"), getCell("", "", 3)] },
|
|
89
|
-
{ tableCells: [getCell("", "5.19 Neisseria meningitidis C"), getCell("", "", 3)] },
|
|
90
|
-
{ tableCells: [getCell("", "5.20 Neisseria meningitidis W135"), getCell("", "", 3)] },
|
|
87
|
+
{ tableCells: [getCell("", "5.17 Neisseria meningitidis A"), getCell("positive_bact_men_a", "", 3)] },
|
|
88
|
+
{ tableCells: [getCell("", "5.18 Neisseria meningitidis B"), getCell("positive_bact_men_b", "", 3)] },
|
|
89
|
+
{ tableCells: [getCell("", "5.19 Neisseria meningitidis C"), getCell("positive_bact_men_c", "", 3)] },
|
|
90
|
+
{ tableCells: [getCell("", "5.20 Neisseria meningitidis W135"), getCell("positive_bact_men_w135", "", 3)] },
|
|
91
91
|
{ tableCells: [getCell("", "5.21 Neisseria meningitidis X"), getCell("", "", 3)] },
|
|
92
|
-
{ tableCells: [getCell("", "5.22 Neisseria meningitidis Y"), getCell("", "", 3)] },
|
|
93
|
-
{ tableCells: [getCell("", "5.23 Neisseria meningitidis (indeterminate)"), getCell("", "", 3)] },
|
|
94
|
-
{ tableCells: [getCell("", "5.24 Streptococcus pneumoniae"), getCell("", "", 3)] },
|
|
95
|
-
{ tableCells: [getCell("", "5.25 Haemophilus influenzae (type b)"), getCell("", "", 3)] },
|
|
92
|
+
{ tableCells: [getCell("", "5.22 Neisseria meningitidis Y"), getCell("positive_bact_men_y", "", 3)] },
|
|
93
|
+
{ tableCells: [getCell("", "5.23 Neisseria meningitidis (indeterminate)"), getCell("positive_bact_men_indeterminate", "", 3)] },
|
|
94
|
+
{ tableCells: [getCell("", "5.24 Streptococcus pneumoniae"), getCell("positive_bact_strep_pneumoniae", "", 3)] },
|
|
95
|
+
{ tableCells: [getCell("", "5.25 Haemophilus influenzae (type b)"), getCell("positive_bact_h_influenzae_b", "", 3)] },
|
|
96
96
|
{ tableCells: [getCell("", "5.26 Cryptococcal Meningitis"), getCell("", "", 3)] },
|
|
97
97
|
{
|
|
98
|
-
tableCells: [getCell("", "Bacterial Pathogens from other types of specimen", 4, true)]
|
|
98
|
+
tableCells: [getCell("", "Bacterial Pathogens from other types of specimen", 4, 1, true)]
|
|
99
99
|
},
|
|
100
|
-
{ tableCells: [getCell("", "5.27 B. anthracis"), getCell("", "", 3)] },
|
|
101
|
-
{ tableCells: [getCell("", "5.28 Y. pestis"), getCell("", "", 3)] },
|
|
100
|
+
{ tableCells: [getCell("", "5.27 B. anthracis"), getCell("positive_bact_b_anthracis", "", 3)] },
|
|
101
|
+
{ tableCells: [getCell("", "5.28 Y. pestis"), getCell("positive_bact_y_pestis", "", 3)] },
|
|
102
102
|
{ tableCells: [getCell("", "TB SPUTUM", 4)] },
|
|
103
103
|
{
|
|
104
104
|
tableCells: [
|
|
105
|
-
getCell("", "TB SPUTUM", 1, true),
|
|
106
|
-
getCell("", "Total Exam", 1, true),
|
|
107
|
-
getCell("", "Number Positive", 1, true),
|
|
105
|
+
getCell("", "TB SPUTUM", 1, 1, true),
|
|
106
|
+
getCell("", "Total Exam", 1, 1, true),
|
|
107
|
+
getCell("", "Number Positive", 1, 1, true),
|
|
108
108
|
]
|
|
109
109
|
},
|
|
110
|
-
{ tableCells: [getCell("", "5.29 Total TB smears"), getCell(), getCell()] },
|
|
110
|
+
{ tableCells: [getCell("", "5.29 Total TB smears"), getCell("total_tb_smear"), getCell("positive_tb_smear")] },
|
|
111
111
|
{ tableCells: [getCell("", "5.30 New presumptive TB cases"), getCell(), getCell()] },
|
|
112
112
|
{ tableCells: [getCell("", "5.31 TB Follow up"), getCell(), getCell()] },
|
|
113
113
|
{ tableCells: [getCell("", "5.32 Rifampicin Resistant TB"), getCell(), getCell()] },
|
|
@@ -117,15 +117,7 @@ const Bacteriology: React.FC = () => {
|
|
|
117
117
|
|
|
118
118
|
|
|
119
119
|
return <TableWrapper>
|
|
120
|
-
{tableRows
|
|
121
|
-
<TableRow>
|
|
122
|
-
{tR.tableCells.map((tC) => (
|
|
123
|
-
<TableCell className={styles.dataCell} colSpan={tC.colSpan}>
|
|
124
|
-
{tC.strong ? <strong>{tC.value}</strong> : tC.value}
|
|
125
|
-
</TableCell>
|
|
126
|
-
))}
|
|
127
|
-
</TableRow>
|
|
128
|
-
))}
|
|
120
|
+
<TableRowMapper tableRows={tableRows} data={data} locationUuids={locationUuids} startDate={startDate} endDate={endDate} />
|
|
129
121
|
</TableWrapper>
|
|
130
122
|
}
|
|
131
123
|
|