@ampath/esm-reports-app 1.0.0-next.8 → 1.0.0-next.80
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/0.css +1 -0
- package/dist/0.css.map +1 -0
- package/dist/0.js +1 -0
- package/dist/0.js.map +1 -0
- 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/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/757.js +1 -0
- package/dist/757.js.map +1 -0
- package/dist/781.js +1 -0
- package/dist/781.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 +264 -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 +225 -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 +29 -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 +191 -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-267/moh-267-register.component.tsx +407 -0
- package/src/registers/moh-267/moh-267-register.scss +298 -0
- package/src/registers/moh-267/moh-267-summary.ts +102 -0
- package/src/registers/moh-267/moh-267.component.tsx +94 -0
- package/src/registers/moh-267/moh-267.types.ts +47 -0
- package/src/registers/moh-362/moh-362-lab-register.component.tsx +551 -0
- package/src/registers/moh-362/moh-362-lab-register.scss +412 -0
- package/src/registers/moh-362/moh-362-linkage-register.component.tsx +215 -0
- package/src/registers/moh-362/moh-362-linkage-register.scss +91 -0
- package/src/registers/moh-362/moh-362.component.tsx +117 -0
- package/src/registers/moh-362/moh-362.scss +11 -0
- package/src/registers/moh-362/moh-362.types.ts +87 -0
- package/src/registers/presumptive-tb/presumptive-tb-register.component.tsx +391 -0
- package/src/registers/presumptive-tb/presumptive-tb-register.scss +262 -0
- package/src/registers/presumptive-tb/presumptive-tb.component.tsx +92 -0
- package/src/registers/presumptive-tb/presumptive-tb.types.ts +88 -0
- package/src/registers/register-catalog.ts +202 -0
- package/src/registers/register-file-name.ts +18 -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/registers/tb4/tb4-parts.tsx +164 -0
- package/src/registers/tb4/tb4-patient-sheet.component.tsx +418 -0
- package/src/registers/tb4/tb4-register.scss +282 -0
- package/src/registers/tb4/tb4-treatment-sheet.component.tsx +349 -0
- package/src/registers/tb4/tb4.component.tsx +120 -0
- package/src/registers/tb4/tb4.types.ts +129 -0
- package/src/reports/acf-summary/acf-summary-form.component.tsx +176 -0
- package/src/reports/acf-summary/acf-summary-linelist.component.tsx +86 -0
- package/src/reports/acf-summary/acf-summary.component.tsx +97 -0
- package/src/reports/acf-summary/acf-summary.counts.ts +37 -0
- package/src/reports/acf-summary/acf-summary.scss +162 -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 +246 -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 +331 -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 +35 -28
- package/src/reports/moh-706/sub-reports/blood-chemistry/blood-chemistry.component.tsx +229 -305
- package/src/reports/moh-706/sub-reports/haematology/haematology.component.tsx +26 -19
- package/src/reports/moh-706/sub-reports/histology-and-cytology/histology-and-cytology.component.tsx +23 -23
- package/src/reports/moh-706/sub-reports/parasitology/parasitology.component.tsx +25 -18
- package/src/reports/moh-706/sub-reports/serology/serology.component.tsx +21 -14
- package/src/reports/moh-706/sub-reports/specimen-referral-to-higher-levels/specimen-referral-to-higher-levels.component.tsx +2 -2
- package/src/reports/moh-706/sub-reports/urine-analysis/urine-analysis.component.tsx +27 -20
- package/src/reports/moh-710/moh-710.component.tsx +815 -632
- package/src/reports/moh-710/moh-710.scss +142 -21
- package/src/reports/moh-710/registers/moh-413/moh-413-columns.ts +22 -0
- package/src/reports/moh-710/registers/moh-413/moh-413.component.tsx +140 -0
- package/src/reports/moh-710/registers/moh-413/moh-413.scss +64 -0
- 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 +191 -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 +153 -1269
- package/src/reports/moh-711/moh711.scss +135 -20
- package/src/reports/moh-711/registers/moh-333-register.component.tsx +680 -0
- package/src/reports/moh-711/registers/moh-333.columns.ts +119 -0
- package/src/reports/moh-711/registers/moh-405-register.component.tsx +566 -0
- package/src/reports/moh-711/registers/moh-405.columns.ts +120 -0
- package/src/reports/moh-711/registers/moh-406-register.component.tsx +581 -0
- package/src/reports/moh-711/registers/moh-406.columns.ts +133 -0
- package/src/reports/moh-711/registers/moh-407-register.component.tsx +157 -0
- package/src/reports/moh-711/registers/moh-407.columns.ts +24 -0
- package/src/reports/moh-711/registers/moh-407.scss +64 -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/moh-512-columns.ts +94 -0
- package/src/reports/moh-711/registers/moh-512.component.tsx +191 -0
- package/src/reports/moh-711/registers/moh-512.scss +64 -0
- package/src/reports/moh-711/registers/tb-register-columns.ts +17 -0
- package/src/reports/moh-711/registers/tb-register.component.tsx +96 -0
- package/src/reports/moh-711/registers/tb-register.scss +64 -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 +389 -0
- package/src/reports/moh-711/sections/family-planning.component.tsx +299 -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 +94 -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-729b/moh-729b-form.component.tsx +385 -0
- package/src/reports/moh-729b/moh-729b-linelist.component.tsx +205 -0
- package/src/reports/moh-729b/moh-729b-summary.component.tsx +258 -0
- package/src/reports/moh-729b/moh-729b-summary.config.ts +229 -0
- package/src/reports/moh-729b/moh-729b.component.tsx +157 -0
- package/src/reports/moh-729b/moh-729b.config.ts +235 -0
- package/src/reports/moh-729b/moh-729b.scss +276 -0
- package/src/reports/moh-729b/moh-729b.types.ts +111 -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 +269 -0
- package/src/reports/moh-731/moh-731.scss +496 -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 +527 -0
- package/src/reports/moh-731/summary/moh-731-summary.scss +247 -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 +2058 -0
- package/src/reports/moh-745/moh-745.scss +142 -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 +223 -0
- package/src/reports/table-wrapper/table-row-mapper.component.tsx +20 -5
- 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-267.resource.ts +27 -0
- 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 +118 -0
- package/src/resources/moh-706.resource.ts +80 -0
- package/src/resources/moh-710.resource.ts +60 -9
- package/src/resources/moh-711.resource.ts +206 -9
- package/src/resources/moh-717.resource.ts +26 -9
- package/src/resources/moh-729b.resource.ts +25 -0
- 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 +66 -0
- package/src/resources/presumptive-tb.resource.ts +27 -0
- package/src/root.component.tsx +79 -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 +30 -1
- 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/812.js +0 -1
- package/dist/812.js.map +0 -1
- package/dist/879.js +0 -1
- package/dist/879.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
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { Table, TableBody, TableHead, TableHeader, TableRow } from '@carbon/react';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { useLocation, useNavigate, useSearchParams } from 'react-router-dom';
|
|
4
|
+
|
|
5
|
+
import styles from '../../../common/report-register/register-table.scss';
|
|
6
|
+
import { getMoh511PatientList } from '../../../resources/moh-711.resource';
|
|
7
|
+
import { moh511Columns } from './type';
|
|
8
|
+
import classNames from 'classnames';
|
|
9
|
+
import { moh511ExportColumns } from './moh-511.columns';
|
|
10
|
+
import { RegisterLayout, usePatientList } from '../../../common/report-register';
|
|
11
|
+
|
|
12
|
+
const Moh511Register: React.FC = () => {
|
|
13
|
+
const [searchParams] = useSearchParams();
|
|
14
|
+
const location = useLocation();
|
|
15
|
+
|
|
16
|
+
const startDate = searchParams.get('startDate');
|
|
17
|
+
const endDate = searchParams.get('endDate');
|
|
18
|
+
const locationUuids = searchParams.get('locationUuids');
|
|
19
|
+
const indicator = searchParams.get('indicator');
|
|
20
|
+
const reportName = location.state?.reportName || '';
|
|
21
|
+
|
|
22
|
+
const {
|
|
23
|
+
rows: patientlist,
|
|
24
|
+
total,
|
|
25
|
+
isTotalExact,
|
|
26
|
+
isLoading,
|
|
27
|
+
page,
|
|
28
|
+
pageSize,
|
|
29
|
+
onPageChange,
|
|
30
|
+
fetchAll,
|
|
31
|
+
} = usePatientList(
|
|
32
|
+
({ startIndex, limit }) =>
|
|
33
|
+
getMoh511PatientList({
|
|
34
|
+
startDate,
|
|
35
|
+
endDate,
|
|
36
|
+
locationUuids,
|
|
37
|
+
indicator,
|
|
38
|
+
reportName,
|
|
39
|
+
startIndex,
|
|
40
|
+
limit,
|
|
41
|
+
}),
|
|
42
|
+
[startDate, endDate, locationUuids, indicator, reportName],
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<RegisterLayout
|
|
47
|
+
parentLabel="MOH-711 Report"
|
|
48
|
+
parentPath="/moh-711"
|
|
49
|
+
title="MOH 511 Register"
|
|
50
|
+
isLoading={isLoading}
|
|
51
|
+
isEmpty={patientlist.length === 0}
|
|
52
|
+
page={page}
|
|
53
|
+
pageSize={pageSize}
|
|
54
|
+
total={total}
|
|
55
|
+
isTotalExact={isTotalExact}
|
|
56
|
+
onPageChange={onPageChange}
|
|
57
|
+
fetchAll={fetchAll}
|
|
58
|
+
columns={moh511ExportColumns}
|
|
59
|
+
>
|
|
60
|
+
<Table className={classNames(`${styles.table}`, `${styles.tableBordered}`, `${styles.tableStriped}`)}>
|
|
61
|
+
<TableHead>
|
|
62
|
+
<TableRow>
|
|
63
|
+
<TableHeader>Serial No.</TableHeader>
|
|
64
|
+
<TableHeader>
|
|
65
|
+
Date.
|
|
66
|
+
<br />
|
|
67
|
+
(DD:MM:YYYY)
|
|
68
|
+
</TableHeader>
|
|
69
|
+
<TableHeader>
|
|
70
|
+
CWC No.
|
|
71
|
+
<br />
|
|
72
|
+
(New Visit)
|
|
73
|
+
</TableHeader>
|
|
74
|
+
<TableHeader>
|
|
75
|
+
CWC No.
|
|
76
|
+
<br />
|
|
77
|
+
(Revisit)
|
|
78
|
+
</TableHeader>
|
|
79
|
+
<TableHeader>
|
|
80
|
+
BIRTH NOTIFICATION
|
|
81
|
+
<br /> (NUMBER)
|
|
82
|
+
</TableHeader>
|
|
83
|
+
<TableHeader>Full Names (Three names)</TableHeader>
|
|
84
|
+
<TableHeader>Age</TableHeader>
|
|
85
|
+
<TableHeader>Sex</TableHeader>
|
|
86
|
+
<TableHeader>
|
|
87
|
+
County/Sub-
|
|
88
|
+
<br />
|
|
89
|
+
county
|
|
90
|
+
</TableHeader>
|
|
91
|
+
<TableHeader>
|
|
92
|
+
Village /Estate / <br />
|
|
93
|
+
Landmark
|
|
94
|
+
</TableHeader>
|
|
95
|
+
<TableHeader>
|
|
96
|
+
Telephone
|
|
97
|
+
<br />
|
|
98
|
+
number
|
|
99
|
+
</TableHeader>
|
|
100
|
+
<TableHeader>Weight in Kgs</TableHeader>
|
|
101
|
+
<TableHeader>
|
|
102
|
+
Weight
|
|
103
|
+
<br />
|
|
104
|
+
categories:
|
|
105
|
+
<br />
|
|
106
|
+
(1=Normal
|
|
107
|
+
<br />
|
|
108
|
+
2=UW
|
|
109
|
+
<br />
|
|
110
|
+
3=SUW
|
|
111
|
+
<br />
|
|
112
|
+
4=OW
|
|
113
|
+
<br />
|
|
114
|
+
5=Obese)
|
|
115
|
+
</TableHeader>
|
|
116
|
+
<TableHeader>Height / Length in cm</TableHeader>
|
|
117
|
+
<TableHeader>
|
|
118
|
+
Height/Length
|
|
119
|
+
<br />
|
|
120
|
+
categories:
|
|
121
|
+
<br />
|
|
122
|
+
(1=Normal
|
|
123
|
+
<br />
|
|
124
|
+
2=Stunted
|
|
125
|
+
<br />
|
|
126
|
+
3=Sev.
|
|
127
|
+
<br />
|
|
128
|
+
Stunted)
|
|
129
|
+
<br />
|
|
130
|
+
</TableHeader>
|
|
131
|
+
<TableHeader>
|
|
132
|
+
MUAC
|
|
133
|
+
<br />
|
|
134
|
+
1.Green
|
|
135
|
+
<br />
|
|
136
|
+
2.Yellow
|
|
137
|
+
<br />
|
|
138
|
+
3.Red
|
|
139
|
+
</TableHeader>
|
|
140
|
+
<TableHeader>
|
|
141
|
+
Exclusive <br /> Breast feeding <br />
|
|
142
|
+
(less than 6<br /> months)(Y/N)
|
|
143
|
+
</TableHeader>
|
|
144
|
+
<TableHeader>
|
|
145
|
+
Vitamin A
|
|
146
|
+
<br />
|
|
147
|
+
supplimentation:
|
|
148
|
+
<br />
|
|
149
|
+
(6-59 months) (1=6-
|
|
150
|
+
<br />
|
|
151
|
+
11 months, 2=12-59
|
|
152
|
+
<br />
|
|
153
|
+
months, 3=Not
|
|
154
|
+
<br />
|
|
155
|
+
supplimented)
|
|
156
|
+
</TableHeader>
|
|
157
|
+
<TableHeader>Dewormed (Y/N)</TableHeader>
|
|
158
|
+
<TableHeader>
|
|
159
|
+
MNPs supplimentation:(6-23
|
|
160
|
+
<br />
|
|
161
|
+
children)
|
|
162
|
+
</TableHeader>
|
|
163
|
+
<TableHeader>
|
|
164
|
+
Childs assessed for <br />
|
|
165
|
+
Developmental milestones <br />
|
|
166
|
+
including 1st Haed control ,2=
|
|
167
|
+
<br />
|
|
168
|
+
sitting, 3=talking
|
|
169
|
+
</TableHeader>
|
|
170
|
+
<TableHeader>
|
|
171
|
+
Any Danger Signs
|
|
172
|
+
<br />
|
|
173
|
+
1.Unable to breastfeed
|
|
174
|
+
<br />
|
|
175
|
+
2.Unable to drink
|
|
176
|
+
<br />
|
|
177
|
+
3.Vomits everything
|
|
178
|
+
<br />
|
|
179
|
+
4.Bloody diarrhoea
|
|
180
|
+
<br />
|
|
181
|
+
5.Has oedema <br />
|
|
182
|
+
6.Has convulsions
|
|
183
|
+
</TableHeader>
|
|
184
|
+
<TableHeader>Any Disability</TableHeader>
|
|
185
|
+
<TableHeader>Immunization status up to date(Y/N)</TableHeader>
|
|
186
|
+
<TableHeader>LLIN gievn to under 1 years(Y/N)</TableHeader>
|
|
187
|
+
<TableHeader>
|
|
188
|
+
Follow up for: <br />
|
|
189
|
+
1=Nutrition service
|
|
190
|
+
<br />
|
|
191
|
+
2=Rehabilitation service
|
|
192
|
+
</TableHeader>
|
|
193
|
+
<TableHeader>
|
|
194
|
+
1=referred from CU; 2= <br />
|
|
195
|
+
referred from another H/F;
|
|
196
|
+
<br />
|
|
197
|
+
3=Not applicable
|
|
198
|
+
</TableHeader>
|
|
199
|
+
<TableHeader>
|
|
200
|
+
1=referred to CU; 2= <br />
|
|
201
|
+
referred to another H/F;
|
|
202
|
+
<br />
|
|
203
|
+
3=Not applicable
|
|
204
|
+
</TableHeader>
|
|
205
|
+
<TableHeader>
|
|
206
|
+
Reason for referral <br />
|
|
207
|
+
....specify
|
|
208
|
+
</TableHeader>
|
|
209
|
+
<TableHeader>REMARKS</TableHeader>
|
|
210
|
+
</TableRow>
|
|
211
|
+
<TableRow>
|
|
212
|
+
<TableHeader>A</TableHeader>
|
|
213
|
+
<TableHeader>B</TableHeader>
|
|
214
|
+
<TableHeader>C</TableHeader>
|
|
215
|
+
<TableHeader>D</TableHeader>
|
|
216
|
+
<TableHeader>E</TableHeader>
|
|
217
|
+
<TableHeader>F</TableHeader>
|
|
218
|
+
<TableHeader>G</TableHeader>
|
|
219
|
+
<TableHeader>H</TableHeader>
|
|
220
|
+
<TableHeader>I</TableHeader>
|
|
221
|
+
<TableHeader>J</TableHeader>
|
|
222
|
+
<TableHeader>K</TableHeader>
|
|
223
|
+
<TableHeader>L</TableHeader>
|
|
224
|
+
<TableHeader>M</TableHeader>
|
|
225
|
+
<TableHeader>N</TableHeader>
|
|
226
|
+
<TableHeader>O</TableHeader>
|
|
227
|
+
<TableHeader>P</TableHeader>
|
|
228
|
+
<TableHeader>Q</TableHeader>
|
|
229
|
+
<TableHeader>R</TableHeader>
|
|
230
|
+
<TableHeader>S</TableHeader>
|
|
231
|
+
<TableHeader>T</TableHeader>
|
|
232
|
+
<TableHeader>U</TableHeader>
|
|
233
|
+
<TableHeader>V</TableHeader>
|
|
234
|
+
<TableHeader>W</TableHeader>
|
|
235
|
+
<TableHeader>X</TableHeader>
|
|
236
|
+
<TableHeader>Y</TableHeader>
|
|
237
|
+
<TableHeader>Z</TableHeader>
|
|
238
|
+
<TableHeader>AA</TableHeader>
|
|
239
|
+
<TableHeader>AB</TableHeader>
|
|
240
|
+
<TableHeader>AC</TableHeader>
|
|
241
|
+
<TableHeader>AD</TableHeader>
|
|
242
|
+
</TableRow>
|
|
243
|
+
</TableHead>
|
|
244
|
+
<TableBody>
|
|
245
|
+
{patientlist?.length > 0 ? (
|
|
246
|
+
patientlist.map((patient, index) => (
|
|
247
|
+
<TableRow key={index}>
|
|
248
|
+
{moh511Columns.map((col) => (
|
|
249
|
+
<td key={col}>
|
|
250
|
+
{col === 'serial_no'
|
|
251
|
+
? index + 1
|
|
252
|
+
: col === 'visit_date'
|
|
253
|
+
? new Date(patient?.[col]).toLocaleDateString('en-GB')
|
|
254
|
+
: (patient?.[col] ?? '')}
|
|
255
|
+
</td>
|
|
256
|
+
))}
|
|
257
|
+
</TableRow>
|
|
258
|
+
))
|
|
259
|
+
) : (
|
|
260
|
+
<TableRow>
|
|
261
|
+
<td colSpan={moh511Columns.length}>No data available</td>
|
|
262
|
+
</TableRow>
|
|
263
|
+
)}
|
|
264
|
+
</TableBody>
|
|
265
|
+
</Table>
|
|
266
|
+
</RegisterLayout>
|
|
267
|
+
);
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
export default Moh511Register;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { type RegisterColumn } from '../../../common/report-register';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* MOH 511 as the register prints it: one column per cell, in the order they appear.
|
|
5
|
+
*/
|
|
6
|
+
export const moh511ExportColumns: RegisterColumn[] = [
|
|
7
|
+
{ header: 'Serial No. - A', value: (row) => row.serial_no ?? '' },
|
|
8
|
+
{ header: 'Date. (DD:MM:YYYY) - B', value: (row) => row.visit_date ?? '' },
|
|
9
|
+
{ header: 'CWC No. (New Visit) - C', value: (row) => row.cwc_number_new ?? '' },
|
|
10
|
+
{ header: 'CWC No. (Revisit) - D', value: (row) => row.cwc_number_revisit ?? '' },
|
|
11
|
+
{ header: 'BIRTH NOTIFICATION (NUMBER) - E', value: (row) => row.birth_notification_number ?? '' },
|
|
12
|
+
{ header: 'Full Names (Three names) - F', value: (row) => row.full_name ?? '' },
|
|
13
|
+
{ header: 'Age - G', value: (row) => row.age ?? '' },
|
|
14
|
+
{ header: 'Sex - H', value: (row) => row.sex ?? '' },
|
|
15
|
+
{ header: 'County/Sub- county - I', value: (row) => row.county_sub_county ?? '' },
|
|
16
|
+
{ header: 'Village /Estate / Landmark - J', value: (row) => row.village_estate_landmark ?? '' },
|
|
17
|
+
{ header: 'Telephone number - K', value: (row) => row.phone_number ?? '' },
|
|
18
|
+
{ header: 'Weight in Kgs - L', value: (row) => row.weight_kg ?? '' },
|
|
19
|
+
{ header: 'Weight categories: (1=Normal 2=UW 3=SUW 4=OW 5=Obese) - M', value: (row) => row.weight_category ?? '' },
|
|
20
|
+
{ header: 'Height / Length in cm - N', value: (row) => row.height ?? '' },
|
|
21
|
+
{
|
|
22
|
+
header: 'Height/Length categories: (1=Normal 2=Stunted 3=Sev. Stunted) - O',
|
|
23
|
+
value: (row) => row.height_category ?? '',
|
|
24
|
+
},
|
|
25
|
+
{ header: 'MUAC 1.Green 2.Yellow 3.Red - P', value: (row) => row.muac ?? '' },
|
|
26
|
+
{
|
|
27
|
+
header: 'Exclusive Breast feeding (less than 6 months)(Y/N) - Q',
|
|
28
|
+
value: (row) => row.exclusive_breastfeeding_less_6_months ?? '',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
header: 'Vitamin A supplimentation: (6-59 months) (1=6- 11 months, 2=12-59 months, 3=Not supplimented) - R',
|
|
32
|
+
value: (row) => row.vitamin_A_supplementation ?? '',
|
|
33
|
+
},
|
|
34
|
+
{ header: 'Dewormed (Y/N) - S', value: (row) => row.dewormed ?? '' },
|
|
35
|
+
{ header: 'MNPs supplimentation:(6-23 children) - T', value: (row) => row.mnps_supplimentation ?? '' },
|
|
36
|
+
{
|
|
37
|
+
header: 'Childs assessed for Developmental milestones including 1st Haed control ,2= sitting, 3=talking - U',
|
|
38
|
+
value: (row) => row.developmental_milestones ?? '',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
header:
|
|
42
|
+
'Any Danger Signs 1.Unable to breastfeed 2.Unable to drink 3.Vomits everything 4.Bloody diarrhoea 5.Has oedema 6.Has convulsions - V',
|
|
43
|
+
value: (row) => row.danger_signs ?? '',
|
|
44
|
+
},
|
|
45
|
+
{ header: 'Any Disability - W', value: (row) => row.disability ?? '' },
|
|
46
|
+
{ header: 'Immunization status up to date(Y/N) - X', value: (row) => row.immunization_status_up_to_date ?? '' },
|
|
47
|
+
{ header: 'LLIN gievn to under 1 years(Y/N) - Y', value: (row) => row.llin_supplimentation_given ?? '' },
|
|
48
|
+
{ header: 'Follow up for: 1=Nutrition service 2=Rehabilitation service - Z', value: (row) => row.follow_up ?? '' },
|
|
49
|
+
{
|
|
50
|
+
header: '1=referred from CU; 2= referred from another H/F; 3=Not applicable - AA',
|
|
51
|
+
value: (row) => row.referred_from ?? '',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
header: '1=referred to CU; 2= referred to another H/F; 3=Not applicable - AB',
|
|
55
|
+
value: (row) => row.referred_to ?? '',
|
|
56
|
+
},
|
|
57
|
+
{ header: 'Reason for referral ....specify - AC', value: (row) => row.reason_for_referral ?? '' },
|
|
58
|
+
{ header: 'REMARKS - AD', value: (row) => row.remarks ?? '' },
|
|
59
|
+
];
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { type RegisterColumn } from '../../../common/report-register/register-columns';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* MOH 512 Family Planning (FP) Register as it prints: one column per cell, A to AS, in the
|
|
5
|
+
* order they appear. Values read the aliases of moh_512_patient_list_template.
|
|
6
|
+
*
|
|
7
|
+
* Columns without a corresponding template alias export blank until the template exposes
|
|
8
|
+
* the required field.
|
|
9
|
+
*/
|
|
10
|
+
export const moh512ExportColumns: RegisterColumn[] = [
|
|
11
|
+
{ header: 'Date (DD/MM/YYYY) - A', value: (row) => row.date ?? '' },
|
|
12
|
+
{ header: 'Client Number - B', value: (row) => row.cr_id ?? row.amrs_id ?? '' },
|
|
13
|
+
{ header: 'Name of Client - C', value: (row) => row.name_of_client ?? '' },
|
|
14
|
+
{ header: 'Client Type - D', value: (row) => row.client_type ?? '' },
|
|
15
|
+
{ header: '1st Ever User of Contraceptive - E', value: (row) => row.first_ever_use_of_contraceptive ?? '' },
|
|
16
|
+
{ header: 'Age - F', value: (row) => row.age ?? '' },
|
|
17
|
+
{ header: 'Sex - G', value: (row) => row.sex ?? '' },
|
|
18
|
+
{ header: 'Disability Status - H', value: (row) => row.disability_status ?? '' },
|
|
19
|
+
{ header: 'Telephone Number - I', value: (row) => row.phone_number ?? '' },
|
|
20
|
+
{ header: 'Village / Estate / Landmark - J', value: (row) => row.village_estate_landmark ?? '' },
|
|
21
|
+
{ header: 'Counselled for FP - K', value: (row) => row.counselled_on_fp ?? '' },
|
|
22
|
+
|
|
23
|
+
// Combined oral contraceptive pills
|
|
24
|
+
{
|
|
25
|
+
header: 'COC Type of Visit - L',
|
|
26
|
+
value: (row) => row.type_of_visit_for_method_combined_oral_contraceptive ?? '',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
header: 'COC Qty Disp. (Cycles) - M',
|
|
30
|
+
value: (row) => row.quantity_dispensed_combined_oral_contraceptive ?? '',
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
// Progestin only pills
|
|
34
|
+
{ header: 'POP Type of Visit - N', value: (row) => row.type_of_visit_for_method_progestine ?? '' },
|
|
35
|
+
{ header: 'POP Qty Disp. (Cycles) - O', value: (row) => row.quantity_dispensed_progestine ?? '' },
|
|
36
|
+
|
|
37
|
+
// Emergency contraceptive pill
|
|
38
|
+
{
|
|
39
|
+
header: 'Emergency Contraceptive Doses Disp. - P',
|
|
40
|
+
value: (row) => row.quantity_dispensed_emergency_contraceptive_pills ?? '',
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
// Injectables (DMPA)
|
|
44
|
+
{ header: 'Injectables Type of Visit - Q', value: () => '' },
|
|
45
|
+
{ header: 'DMPA IM Qty Disp. (Vials) - R', value: () => '' },
|
|
46
|
+
{ header: 'DMPA SC Qty Disp. (Vials) - S', value: () => '' },
|
|
47
|
+
|
|
48
|
+
// Implants: the register has one type-of-visit column for all implants
|
|
49
|
+
{
|
|
50
|
+
header: 'Implants Type of Visit - T',
|
|
51
|
+
value: (row) => row.type_of_visit_for_method_1_rod ?? row.type_of_visit_for_method_2_rod ?? '',
|
|
52
|
+
},
|
|
53
|
+
{ header: 'Qty Disp. 1 Rod (Sets) - U', value: (row) => row.quantity_dispensed_1_rod ?? '' },
|
|
54
|
+
{ header: 'Qty Disp. 2 Rods, 3 yrs (Sets) - V', value: () => '' },
|
|
55
|
+
{ header: 'Qty Disp. 2 Rods, 5 yrs (Sets) - W', value: () => '' },
|
|
56
|
+
|
|
57
|
+
// IUDs
|
|
58
|
+
{ header: 'IUD Type of Visit - X', value: (row) => row.type_of_visit_for_method_iud ?? '' },
|
|
59
|
+
{ header: 'IUD Qty Disp. Non-Hormonal (Sets) - Y', value: (row) => row.quantity_dispensed_non_hormonal ?? '' },
|
|
60
|
+
{ header: 'IUD Qty Disp. Hormonal (Sets) - Z', value: (row) => row.quantity_dispensed_hormonal ?? '' },
|
|
61
|
+
{ header: 'Reasons for LARC Removal - AA', value: (row) => row.reason_for_larc_removal ?? '' },
|
|
62
|
+
|
|
63
|
+
// Condoms
|
|
64
|
+
{ header: 'Condom Clients - AB', value: (row) => row.type_of_condom ?? '' },
|
|
65
|
+
{ header: 'Qty Disp. Male Condoms - AC', value: (row) => row.quantity_dispensed_male_condoms ?? '' },
|
|
66
|
+
{ header: 'Qty Disp. Female Condoms - AD', value: (row) => row.quantity_dispensed_female_condoms ?? '' },
|
|
67
|
+
|
|
68
|
+
{ header: 'VSC (BTL or Vasectomy) - AE', value: (row) => row.voluntary_surgical_contraception ?? '' },
|
|
69
|
+
|
|
70
|
+
// Natural FP
|
|
71
|
+
{ header: 'Counselled on Natural FP - AF', value: (row) => row.counseled_on_natural_fp ?? '' },
|
|
72
|
+
{ header: 'Cycle Beads Given - AG', value: (row) => row.given_cycle_beads ?? '' },
|
|
73
|
+
|
|
74
|
+
{ header: 'Timing of PPFP - AH', value: (row) => row.received_post_partum_fp ?? '' },
|
|
75
|
+
{ header: 'TB Screening - AI', value: (row) => row.tb_screening ?? '' },
|
|
76
|
+
|
|
77
|
+
// HIV testing
|
|
78
|
+
{ header: 'Counselled for HIV - AJ', value: (row) => row.counselled_on_hiv ?? '' },
|
|
79
|
+
{ header: 'Counselled and Tested for HIV - AK', value: (row) => row.tested_for_hiv ?? '' },
|
|
80
|
+
{ header: 'HIV Status - AL', value: (row) => row.hiv_results ?? '' },
|
|
81
|
+
|
|
82
|
+
{ header: 'IPV or Reproductive Coercion - AM', value: (row) => row.intimate_partner_violence ?? '' },
|
|
83
|
+
|
|
84
|
+
// Cervical cancer screening
|
|
85
|
+
{ header: 'Cervical Cancer Screened - AN', value: (row) => row.screened_for_cervical_cancer ?? '' },
|
|
86
|
+
{ header: 'Cervical Cancer Results - AO', value: (row) => row.cervical_cancer_screening_result ?? '' },
|
|
87
|
+
|
|
88
|
+
// Referrals
|
|
89
|
+
{ header: 'Referral From - AP', value: (row) => row.referral_from ?? '' },
|
|
90
|
+
{ header: 'Referral To - AQ', value: (row) => row.referral_to ?? '' },
|
|
91
|
+
{ header: 'Reason for Referral - AR', value: (row) => row.reason_for_referral ?? '' },
|
|
92
|
+
|
|
93
|
+
{ header: 'Remarks - AS', value: (row) => row.comments ?? '' },
|
|
94
|
+
];
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { useLocation, useSearchParams } from 'react-router-dom';
|
|
3
|
+
import { RegisterLayout, usePatientList } from '../../../common/report-register';
|
|
4
|
+
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@carbon/react';
|
|
5
|
+
import classNames from 'classnames';
|
|
6
|
+
import dayjs from 'dayjs';
|
|
7
|
+
import { useSession } from '@openmrs/esm-framework';
|
|
8
|
+
|
|
9
|
+
import styles from './moh-512.scss';
|
|
10
|
+
import { moh512ExportColumns } from './moh-512-columns';
|
|
11
|
+
import { getMoh512PatientList } from '../../../resources/moh-711.resource';
|
|
12
|
+
import { ReportFiltersComponent, type ReportPeriod } from '../../../common/report-filters';
|
|
13
|
+
|
|
14
|
+
interface Moh512RegisterComponentProps {}
|
|
15
|
+
|
|
16
|
+
const Moh512RegisterComponent: React.FC<Moh512RegisterComponentProps> = () => {
|
|
17
|
+
const [searchParams, setSearchParams] = useSearchParams();
|
|
18
|
+
const location = useLocation();
|
|
19
|
+
const session = useSession();
|
|
20
|
+
|
|
21
|
+
const from = searchParams.get('from');
|
|
22
|
+
const isDrilldown = Boolean(from);
|
|
23
|
+
const [generatedPeriod, setGeneratedPeriod] = useState<{ startDate: string; endDate: string } | null>(() => {
|
|
24
|
+
const startDate = searchParams.get('startDate');
|
|
25
|
+
const endDate = searchParams.get('endDate');
|
|
26
|
+
return !isDrilldown && startDate && endDate ? { startDate, endDate } : null;
|
|
27
|
+
});
|
|
28
|
+
const isGenerated = isDrilldown || Boolean(generatedPeriod);
|
|
29
|
+
|
|
30
|
+
const startDate = generatedPeriod?.startDate ?? searchParams.get('startDate');
|
|
31
|
+
const endDate = generatedPeriod?.endDate ?? searchParams.get('endDate');
|
|
32
|
+
const locationUuids = searchParams.get('locationUuids') ?? session?.sessionLocation?.uuid ?? '';
|
|
33
|
+
const indicator = searchParams.get('indicator');
|
|
34
|
+
const reportName = location.state?.reportName || '';
|
|
35
|
+
|
|
36
|
+
const {
|
|
37
|
+
rows: patientlist,
|
|
38
|
+
total,
|
|
39
|
+
isTotalExact,
|
|
40
|
+
isLoading,
|
|
41
|
+
page,
|
|
42
|
+
pageSize,
|
|
43
|
+
onPageChange,
|
|
44
|
+
fetchAll,
|
|
45
|
+
} = usePatientList(
|
|
46
|
+
({ startIndex, limit }) => {
|
|
47
|
+
if (!isDrilldown && !generatedPeriod) {
|
|
48
|
+
return Promise.resolve({ results: [], total: 0, isTotalExact: true });
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return getMoh512PatientList({
|
|
52
|
+
startDate,
|
|
53
|
+
endDate,
|
|
54
|
+
locationUuids,
|
|
55
|
+
indicator,
|
|
56
|
+
reportName,
|
|
57
|
+
startIndex,
|
|
58
|
+
limit,
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
[startDate, endDate, locationUuids, indicator, reportName, isDrilldown, generatedPeriod],
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
const generate = ({ startDate, endDate }: ReportPeriod) => {
|
|
65
|
+
setGeneratedPeriod({ startDate, endDate });
|
|
66
|
+
setSearchParams((currentParams) => {
|
|
67
|
+
const nextParams = new URLSearchParams(currentParams);
|
|
68
|
+
nextParams.set('startDate', startDate);
|
|
69
|
+
nextParams.set('endDate', endDate);
|
|
70
|
+
if (!nextParams.has('locationUuids') && locationUuids) {
|
|
71
|
+
nextParams.set('locationUuids', locationUuids);
|
|
72
|
+
}
|
|
73
|
+
return nextParams;
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
const columns = [
|
|
78
|
+
{ key: 'date', label: 'Date' },
|
|
79
|
+
{ key: 'cr_id', label: 'Client Number' },
|
|
80
|
+
{ key: 'name_of_client', label: 'Name of Client' },
|
|
81
|
+
{ key: 'client_type', label: 'Client Type' },
|
|
82
|
+
{ key: 'first_ever_use_of_contraceptive', label: '1st Ever User of Contraceptive' },
|
|
83
|
+
{ key: 'age', label: 'Age' },
|
|
84
|
+
{ key: 'sex', label: 'Sex' },
|
|
85
|
+
{ key: 'disability_status', label: 'Disability Status' },
|
|
86
|
+
{ key: 'phone_number', label: 'Telephone Number' },
|
|
87
|
+
{ key: 'village_estate_landmark', label: 'Village/Estate/Landmark' },
|
|
88
|
+
{ key: 'counselled_on_fp', label: 'Counselled on FP' },
|
|
89
|
+
{ key: 'type_of_visit_for_method_combined_oral_contraceptive', label: 'COC Visit Type' },
|
|
90
|
+
{ key: 'quantity_dispensed_combined_oral_contraceptive', label: 'COC Quantity' },
|
|
91
|
+
{ key: 'type_of_visit_for_method_progestine', label: 'POP Visit Type' },
|
|
92
|
+
{ key: 'quantity_dispensed_progestine', label: 'POP Quantity' },
|
|
93
|
+
{ key: 'quantity_dispensed_emergency_contraceptive_pills', label: 'Emergency Contraceptive Doses' },
|
|
94
|
+
{ key: 'type_of_visit_for_method_1_rod', label: '1 Rod Visit Type' },
|
|
95
|
+
{ key: 'quantity_dispensed_1_rod', label: '1 Rod (Sets)' },
|
|
96
|
+
{ key: 'type_of_visit_for_method_2_rod', label: '2 Rods Visit Type' },
|
|
97
|
+
{ key: 'quantity_dispensed_2_rod', label: '2 Rods (Sets)' },
|
|
98
|
+
{ key: 'type_of_visit_for_method_iud', label: 'IUD Visit Type' },
|
|
99
|
+
{ key: 'quantity_dispensed_non_hormonal', label: 'Non-Hormonal IUD (Sets)' },
|
|
100
|
+
{ key: 'quantity_dispensed_hormonal', label: 'Hormonal IUD (Sets)' },
|
|
101
|
+
{ key: 'reason_for_larc_removal', label: 'Reason for LARC Removal' },
|
|
102
|
+
{ key: 'type_of_condom', label: 'Condom Client Sex' },
|
|
103
|
+
{ key: 'quantity_dispensed_male_condoms', label: 'Male Condoms' },
|
|
104
|
+
{ key: 'quantity_dispensed_female_condoms', label: 'Female Condoms' },
|
|
105
|
+
{ key: 'voluntary_surgical_contraception', label: 'VSC' },
|
|
106
|
+
{ key: 'counseled_on_natural_fp', label: 'Natural FP' },
|
|
107
|
+
{ key: 'given_cycle_beads', label: 'Cycle Beads Given' },
|
|
108
|
+
{ key: 'received_post_partum_fp', label: 'Timing of PPFP' },
|
|
109
|
+
{ key: 'tb_screening', label: 'TB Screening' },
|
|
110
|
+
{ key: 'counselled_on_hiv', label: 'Counselled for HIV' },
|
|
111
|
+
{ key: 'tested_for_hiv', label: 'Counselled and Tested for HIV' },
|
|
112
|
+
{ key: 'hiv_results', label: 'HIV Status' },
|
|
113
|
+
{ key: 'intimate_partner_violence', label: 'IPV/Reproductive Coercion' },
|
|
114
|
+
{ key: 'screened_for_cervical_cancer', label: 'Cervical Cancer Screened' },
|
|
115
|
+
{ key: 'cervical_cancer_screening_result', label: 'Cervical Cancer Result' },
|
|
116
|
+
{ key: 'referral_from', label: 'Referral From' },
|
|
117
|
+
{ key: 'referral_to', label: 'Referral To' },
|
|
118
|
+
{ key: 'reason_for_referral', label: 'Reason for Referral' },
|
|
119
|
+
{ key: 'comments', label: 'Remarks' },
|
|
120
|
+
];
|
|
121
|
+
|
|
122
|
+
return (
|
|
123
|
+
<>
|
|
124
|
+
{!isDrilldown && (
|
|
125
|
+
<ReportFiltersComponent
|
|
126
|
+
reportName="MOH 512 Register"
|
|
127
|
+
mode="range"
|
|
128
|
+
onGenerate={generate}
|
|
129
|
+
isLoading={isLoading}
|
|
130
|
+
isReportGenerated={Boolean(generatedPeriod)}
|
|
131
|
+
generatedPeriod={generatedPeriod ?? undefined}
|
|
132
|
+
backLink={{ label: 'All registers', to: '/?tab=registers' }}
|
|
133
|
+
/>
|
|
134
|
+
)}
|
|
135
|
+
<RegisterLayout
|
|
136
|
+
parentLabel={isDrilldown ? 'MOH-711 Report' : 'All registers'}
|
|
137
|
+
parentPath={isDrilldown ? '/moh-711' : '/?tab=registers'}
|
|
138
|
+
title="MOH 512 Register"
|
|
139
|
+
isLoading={isLoading}
|
|
140
|
+
isEmpty={isGenerated && patientlist.length === 0}
|
|
141
|
+
page={page}
|
|
142
|
+
pageSize={pageSize}
|
|
143
|
+
total={total}
|
|
144
|
+
isTotalExact={isTotalExact}
|
|
145
|
+
onPageChange={onPageChange}
|
|
146
|
+
fetchAll={isGenerated ? fetchAll : undefined}
|
|
147
|
+
columns={moh512ExportColumns}
|
|
148
|
+
>
|
|
149
|
+
{isGenerated && (
|
|
150
|
+
<div className={styles.tableContainer}>
|
|
151
|
+
<Table className={classNames(styles.table, styles.tableBordered, styles.tableStriped)}>
|
|
152
|
+
<TableHead>
|
|
153
|
+
<TableRow>
|
|
154
|
+
{columns.map((column) => (
|
|
155
|
+
<TableHeader key={column.key}>{column.label}</TableHeader>
|
|
156
|
+
))}
|
|
157
|
+
</TableRow>
|
|
158
|
+
</TableHead>
|
|
159
|
+
|
|
160
|
+
<TableBody>
|
|
161
|
+
{isLoading ? (
|
|
162
|
+
<TableRow>
|
|
163
|
+
<TableCell colSpan={columns.length}>Loading register...</TableCell>
|
|
164
|
+
</TableRow>
|
|
165
|
+
) : patientlist.length === 0 ? (
|
|
166
|
+
<TableRow>
|
|
167
|
+
<TableCell colSpan={columns.length}>No records found.</TableCell>
|
|
168
|
+
</TableRow>
|
|
169
|
+
) : (
|
|
170
|
+
patientlist.map((patient, index) => (
|
|
171
|
+
<TableRow key={patient.person_id || patient.id || index}>
|
|
172
|
+
{columns.map((column) => (
|
|
173
|
+
<TableCell key={column.key}>
|
|
174
|
+
{column.key === 'date' && patient[column.key]
|
|
175
|
+
? dayjs(patient[column.key]).format('YYYY-MM-DD')
|
|
176
|
+
: (patient[column.key] ?? '')}
|
|
177
|
+
</TableCell>
|
|
178
|
+
))}
|
|
179
|
+
</TableRow>
|
|
180
|
+
))
|
|
181
|
+
)}
|
|
182
|
+
</TableBody>
|
|
183
|
+
</Table>
|
|
184
|
+
</div>
|
|
185
|
+
)}
|
|
186
|
+
</RegisterLayout>
|
|
187
|
+
</>
|
|
188
|
+
);
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
export default Moh512RegisterComponent;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
@use '@openmrs/esm-styleguide/src/vars' as *;
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
.tableContainer {
|
|
5
|
+
width: 100%;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/* Sized to content rather than to the frame, so a long value -- a full name,
|
|
9
|
+
say -- widens its own column instead of wrapping. `.tableScroll` in the
|
|
10
|
+
layout scrolls when the table outgrows the page. */
|
|
11
|
+
|
|
12
|
+
.table {
|
|
13
|
+
width: auto;
|
|
14
|
+
min-width: 100%;
|
|
15
|
+
margin: 0;
|
|
16
|
+
font-size: 0.75rem;
|
|
17
|
+
border-collapse: collapse;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.tableBordered td,
|
|
21
|
+
.tableBordered th {
|
|
22
|
+
padding: 0.125rem 0.5rem;
|
|
23
|
+
font-size: 0.75rem;
|
|
24
|
+
line-height: 1.3;
|
|
25
|
+
border: 1px solid $ui-04;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.tableBordered th {
|
|
29
|
+
font-weight: 600;
|
|
30
|
+
color: $color-gray-100;
|
|
31
|
+
background-color: $ui-01;
|
|
32
|
+
/* headings carry deliberate line breaks, so they wrap where the markup says */
|
|
33
|
+
white-space: normal;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.tableBordered td {
|
|
37
|
+
white-space: nowrap;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* Long prose columns (diagnoses, referrals, comments) wrap inside a bounded
|
|
41
|
+
width instead of stretching the row past the fold. */
|
|
42
|
+
.tableBordered td.wrapCell {
|
|
43
|
+
white-space: normal;
|
|
44
|
+
min-width: 8rem;
|
|
45
|
+
max-width: 16rem;
|
|
46
|
+
overflow-wrap: anywhere;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.tableStriped tbody tr:nth-of-type(odd) {
|
|
50
|
+
background-color: $ui-01;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.tableStriped tbody tr:hover {
|
|
54
|
+
background-color: $brand-primary-10;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.textCentre {
|
|
58
|
+
text-align: center;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.verticalText {
|
|
62
|
+
writing-mode: vertical-rl;
|
|
63
|
+
transform: rotate(180deg);
|
|
64
|
+
}
|