@ampath/esm-reports-app 1.0.0-next.8 → 1.0.0-next.81
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/549.css +1 -0
- package/dist/549.css.map +1 -0
- package/dist/549.js +1 -0
- package/dist/549.js.map +1 -0
- 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 +1339 -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.scss +20 -0
- package/src/reports/moh-740/registers/moh-222-daily-register/moh-222-daily-register.tsx +183 -0
- package/src/reports/moh-740/registers/moh-270-permanent-register/moh-270-permanent-register.scss +6 -0
- package/src/reports/moh-740/registers/moh-270-permanent-register/moh-270-permanent-register.tsx +151 -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.scss +6 -0
- package/src/reports/moh-745/registers/moh-412-register.component.tsx +275 -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,52 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { formatDate, useSession } from '@openmrs/esm-framework';
|
|
3
|
+
|
|
4
|
+
import styles from '../moh717.scss';
|
|
5
|
+
import classNames from 'classnames';
|
|
6
|
+
|
|
7
|
+
const PreparedbyComponent: React.FC = () => {
|
|
8
|
+
const session = useSession();
|
|
9
|
+
const preparedBy = session?.user?.person?.display ?? session?.user?.display ?? '';
|
|
10
|
+
const preparedOn = formatDate(new Date(), { mode: 'standard', time: false, noToday: true });
|
|
11
|
+
|
|
12
|
+
return (
|
|
13
|
+
<>
|
|
14
|
+
<table className={classNames(`${styles.table}`, `${styles.tableBordered}`, `${styles.tableStriped}`)}>
|
|
15
|
+
<thead>
|
|
16
|
+
<tr>
|
|
17
|
+
<th></th>
|
|
18
|
+
<th>Name</th>
|
|
19
|
+
<th>Designation</th>
|
|
20
|
+
<th>Date</th>
|
|
21
|
+
<th>Signature</th>
|
|
22
|
+
</tr>
|
|
23
|
+
</thead>
|
|
24
|
+
<tbody>
|
|
25
|
+
<tr>
|
|
26
|
+
<td>Prepared by:</td>
|
|
27
|
+
<td>{preparedBy}</td>
|
|
28
|
+
<td></td>
|
|
29
|
+
<td>{preparedOn}</td>
|
|
30
|
+
<td></td>
|
|
31
|
+
</tr>
|
|
32
|
+
<tr>
|
|
33
|
+
<td>Checked by:</td>
|
|
34
|
+
<td></td>
|
|
35
|
+
<td></td>
|
|
36
|
+
<td></td>
|
|
37
|
+
<td></td>
|
|
38
|
+
</tr>
|
|
39
|
+
<tr>
|
|
40
|
+
<td>Received by:</td>
|
|
41
|
+
<td></td>
|
|
42
|
+
<td></td>
|
|
43
|
+
<td></td>
|
|
44
|
+
<td></td>
|
|
45
|
+
</tr>
|
|
46
|
+
</tbody>
|
|
47
|
+
</table>
|
|
48
|
+
</>
|
|
49
|
+
);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export default PreparedbyComponent;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import styles from '../moh717.scss';
|
|
4
|
+
import classNames from 'classnames';
|
|
5
|
+
|
|
6
|
+
interface SpecialServicesComponentProps {
|
|
7
|
+
moh717ReportData: any;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const SpecialServicesComponent: React.FC<SpecialServicesComponentProps> = ({ moh717ReportData }) => {
|
|
11
|
+
return (
|
|
12
|
+
<>
|
|
13
|
+
<table className={classNames(`${styles.table}`, `${styles.tableBordered}`, `${styles.tableStriped}`)}>
|
|
14
|
+
<thead>
|
|
15
|
+
<tr>
|
|
16
|
+
<th colSpan={6} className={classNames(`${styles.totals} ${styles.alignLeft}`)}>
|
|
17
|
+
C.SPECIAL SERVICES (includes both inpatients and outpatients)
|
|
18
|
+
</th>
|
|
19
|
+
</tr>
|
|
20
|
+
<tr>
|
|
21
|
+
<th></th>
|
|
22
|
+
<th colSpan={2}>Services</th>
|
|
23
|
+
<th>Number</th>
|
|
24
|
+
<th>Services</th>
|
|
25
|
+
<th>Number</th>
|
|
26
|
+
</tr>
|
|
27
|
+
</thead>
|
|
28
|
+
<tbody>
|
|
29
|
+
<tr>
|
|
30
|
+
<td>C.1</td>
|
|
31
|
+
<td>Laboratory- Number of Tests</td>
|
|
32
|
+
<td>Routine</td>
|
|
33
|
+
<td>{moh717ReportData.lab_routine_test}</td>
|
|
34
|
+
<td>Special</td>
|
|
35
|
+
<td>{moh717ReportData.lab_special_test}</td>
|
|
36
|
+
</tr>
|
|
37
|
+
<tr>
|
|
38
|
+
<td rowSpan={6}>C.2</td>
|
|
39
|
+
<td rowSpan={6}>X-Ray & Imaging- Number of Examinations</td>
|
|
40
|
+
<th>Routine</th>
|
|
41
|
+
<th>Number</th>
|
|
42
|
+
<th>Special</th>
|
|
43
|
+
<th>Number</th>
|
|
44
|
+
</tr>
|
|
45
|
+
<tr>
|
|
46
|
+
<td rowSpan={5}>Plain X-Rays without contrast enhancement</td>
|
|
47
|
+
<td rowSpan={5}>{moh717ReportData.plain_xray_without_enhancement}</td>
|
|
48
|
+
<td>Contrast enhanced examinations</td>
|
|
49
|
+
<td>{moh717ReportData.contrast_enhancement_examination}</td>
|
|
50
|
+
</tr>
|
|
51
|
+
<tr>
|
|
52
|
+
<td>Magnetic Resonance Imaging</td>
|
|
53
|
+
<td>{moh717ReportData.magnetic_resonance_imaging}</td>
|
|
54
|
+
</tr>
|
|
55
|
+
<tr>
|
|
56
|
+
<td>Computarized Tomography</td>
|
|
57
|
+
<td>{moh717ReportData.computerized_tomography}</td>
|
|
58
|
+
</tr>
|
|
59
|
+
<tr>
|
|
60
|
+
<td>Mammography</td>
|
|
61
|
+
<td>{moh717ReportData.mammography}</td>
|
|
62
|
+
</tr>
|
|
63
|
+
<tr>
|
|
64
|
+
<td>Chest x-ray for PTB with specialist's report</td>
|
|
65
|
+
<td>{moh717ReportData.chest_xray_for_ptb}</td>
|
|
66
|
+
</tr>
|
|
67
|
+
<tr>
|
|
68
|
+
<td>C.3</td>
|
|
69
|
+
<td>Number of ultrasound examinations</td>
|
|
70
|
+
<td>General ultrasound</td>
|
|
71
|
+
<td>{moh717ReportData.general_ultrasound}</td>
|
|
72
|
+
<td>Obstetric ultrasound</td>
|
|
73
|
+
<td>{moh717ReportData.obstetric_ultrasound}</td>
|
|
74
|
+
</tr>
|
|
75
|
+
<tr>
|
|
76
|
+
<td>C.4</td>
|
|
77
|
+
<th colSpan={2}>Total routine (X-Ray and Imaging)</th>
|
|
78
|
+
<th>{moh717ReportData.total_routine_xray_and_imaging}</th>
|
|
79
|
+
<th>Total special exams (X-Ray and Imaging)</th>
|
|
80
|
+
<th>{moh717ReportData.total_special_exams_xray_and_imaging}</th>
|
|
81
|
+
</tr>
|
|
82
|
+
<tr>
|
|
83
|
+
<td>C.5</td>
|
|
84
|
+
<td colSpan={4}>Physiotherapy - Number of Treatments</td>
|
|
85
|
+
<td>{moh717ReportData.physiotherapy_number_of_treatments}</td>
|
|
86
|
+
</tr>
|
|
87
|
+
<tr>
|
|
88
|
+
<td>C.6</td>
|
|
89
|
+
<td colSpan={4}>Occupational therapy - Number of treatments</td>
|
|
90
|
+
<td>{moh717ReportData.occupational_therapy_number_of_treatments}</td>
|
|
91
|
+
</tr>
|
|
92
|
+
<tr>
|
|
93
|
+
<td>C.7</td>
|
|
94
|
+
<td colSpan={4}>
|
|
95
|
+
Orthopaedic Technology (Prosthetist & Orthotist) - Orthopaedic Technology - No of ITEMS Prepared and
|
|
96
|
+
issued e.g. a pair of crutches, Wheelchair, Prosthesis etc. count as one item
|
|
97
|
+
</td>
|
|
98
|
+
<td>{moh717ReportData.orthopaedic_technology_prepared}</td>
|
|
99
|
+
</tr>
|
|
100
|
+
<tr>
|
|
101
|
+
<td>C.8</td>
|
|
102
|
+
<td colSpan={4}>
|
|
103
|
+
Orthopaedic Technology (Prosthetist & Orthotist) - Orthopaedic Technology - No of ITEMS issued e.g. a pair
|
|
104
|
+
of crutches, Wheelchair, Prosthesis etc. count as one item
|
|
105
|
+
</td>
|
|
106
|
+
<td>{moh717ReportData.orthopaedic_technology_issued}</td>
|
|
107
|
+
</tr>
|
|
108
|
+
</tbody>
|
|
109
|
+
</table>
|
|
110
|
+
</>
|
|
111
|
+
);
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
export default SpecialServicesComponent;
|
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
import React, { createContext, useContext } from 'react';
|
|
2
|
+
import dayjs from 'dayjs';
|
|
3
|
+
|
|
4
|
+
import { usePageScale } from '../../common/report-page';
|
|
5
|
+
import {
|
|
6
|
+
ADULT_ART,
|
|
7
|
+
HEPATITIS_B,
|
|
8
|
+
INFANT_AGES,
|
|
9
|
+
OPPORTUNISTIC_INFECTIONS,
|
|
10
|
+
PAEDIATRIC_ART,
|
|
11
|
+
PEP,
|
|
12
|
+
PMTCT_INFANTS,
|
|
13
|
+
PMTCT_MOTHERS,
|
|
14
|
+
PREP,
|
|
15
|
+
WEIGHT_BANDS,
|
|
16
|
+
type Regimen,
|
|
17
|
+
type TotalledGroup,
|
|
18
|
+
TPT_HIV_POSITIVE,
|
|
19
|
+
} from './moh-729b.config';
|
|
20
|
+
import { type Moh729bCell } from './moh-729b.types';
|
|
21
|
+
import styles from './moh-729b.scss';
|
|
22
|
+
|
|
23
|
+
/** A3 portrait less its 8mm margins: the page as drawn on screen, inside the report card */
|
|
24
|
+
const PAGE_WIDTH_MM = 297 - 2 * 8;
|
|
25
|
+
|
|
26
|
+
/** The form's measuring unit (row heights in the config) in millimetres */
|
|
27
|
+
const MM_PER_UNIT = 0.144;
|
|
28
|
+
const height = (units: number): React.CSSProperties => ({ height: `${units * MM_PER_UNIT}mm` });
|
|
29
|
+
|
|
30
|
+
/** Column widths, measured off the form, as fractions of each half */
|
|
31
|
+
const LEFT_COLUMNS = [79, 212, 77, 77, 76, 77, 77, 77, 80, 75];
|
|
32
|
+
const RIGHT_COLUMNS = [83, 342, 84, 84, 84, 84, 84, 84];
|
|
33
|
+
|
|
34
|
+
const ColumnWidths: React.FC<{ widths: number[] }> = ({ widths }) => {
|
|
35
|
+
const total = widths.reduce((sum, width) => sum + width, 0);
|
|
36
|
+
return (
|
|
37
|
+
<colgroup>
|
|
38
|
+
{widths.map((width, index) => (
|
|
39
|
+
<col key={index} style={{ width: `${(width / total) * 100}%` }} />
|
|
40
|
+
))}
|
|
41
|
+
</colgroup>
|
|
42
|
+
);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/** The column headings both halves start with, and the half's first band */
|
|
46
|
+
const HalfHead: React.FC<{ span: number; band: string }> = ({ span, band }) => (
|
|
47
|
+
<thead>
|
|
48
|
+
<tr className={styles.columnHead} style={height(40)}>
|
|
49
|
+
<th>Regimen Code</th>
|
|
50
|
+
<th>ARV or OI Treatment Regimen</th>
|
|
51
|
+
<th colSpan={span}>
|
|
52
|
+
Number of Current Active Patients/Clients on this regimen at the end of this Reporting period
|
|
53
|
+
</th>
|
|
54
|
+
</tr>
|
|
55
|
+
<tr className={styles.band} style={height(30)}>
|
|
56
|
+
<th colSpan={span + 2}>{band}</th>
|
|
57
|
+
</tr>
|
|
58
|
+
</thead>
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
const RegimenCells: React.FC<{ regimen: Regimen }> = ({ regimen: [code, name] }) => (
|
|
62
|
+
<>
|
|
63
|
+
<td className={styles.code}>{code}</td>
|
|
64
|
+
<td>{name}</td>
|
|
65
|
+
</>
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
/** The form's counts, and what a count opens; absent while the form is blank */
|
|
69
|
+
export interface Moh729bCounts {
|
|
70
|
+
count: (cell: Moh729bCell) => number;
|
|
71
|
+
open: (cell: Moh729bCell) => void;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const CountsContext = createContext<Moh729bCounts | null>(null);
|
|
75
|
+
|
|
76
|
+
/** A count on the form, opening the linelist of its clients when clicked */
|
|
77
|
+
const Count: React.FC<{ cell: Moh729bCell; colSpan?: number }> = ({ cell, colSpan }) => {
|
|
78
|
+
const counts = useContext(CountsContext);
|
|
79
|
+
if (!counts) {
|
|
80
|
+
return <td colSpan={colSpan} />;
|
|
81
|
+
}
|
|
82
|
+
return (
|
|
83
|
+
<td
|
|
84
|
+
colSpan={colSpan}
|
|
85
|
+
className={styles.count}
|
|
86
|
+
title="Click to open linelist"
|
|
87
|
+
role="button"
|
|
88
|
+
tabIndex={0}
|
|
89
|
+
onClick={() => counts.open(cell)}
|
|
90
|
+
onKeyDown={(event) => (event.key === 'Enter' || event.key === ' ') && counts.open(cell)}
|
|
91
|
+
>
|
|
92
|
+
{counts.count(cell)}
|
|
93
|
+
</td>
|
|
94
|
+
);
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
const blanks = (count: number, className?: string) =>
|
|
98
|
+
Array.from({ length: count }, (_, index) => <td key={index} className={className} />);
|
|
99
|
+
|
|
100
|
+
/** ART: adults by line with a single Total, children by weight band, then PrEP */
|
|
101
|
+
const ArtHalf: React.FC = () => {
|
|
102
|
+
/* the adults' shaded block runs unbroken beside all three lines */
|
|
103
|
+
const adultRows = ADULT_ART.reduce((count, section) => count + section.rows.length + 1, 0);
|
|
104
|
+
|
|
105
|
+
return (
|
|
106
|
+
<table className={styles.grid}>
|
|
107
|
+
<ColumnWidths widths={LEFT_COLUMNS} />
|
|
108
|
+
<HalfHead span={8} band="ADULT ART" />
|
|
109
|
+
<tbody>
|
|
110
|
+
{ADULT_ART.map((section, sectionIndex) => (
|
|
111
|
+
<React.Fragment key={section.title}>
|
|
112
|
+
<tr className={styles.heading} style={height(section.h)}>
|
|
113
|
+
<th colSpan={2}>{section.title}</th>
|
|
114
|
+
<th colSpan={3}>Total</th>
|
|
115
|
+
{sectionIndex === 0 && <td colSpan={5} rowSpan={adultRows} className={styles.shade} />}
|
|
116
|
+
</tr>
|
|
117
|
+
{section.rows.map((regimen) => (
|
|
118
|
+
<tr key={regimen[0]} style={height(regimen[2] ?? 39.6)}>
|
|
119
|
+
<RegimenCells regimen={regimen} />
|
|
120
|
+
<Count colSpan={3} cell={{ code: regimen[0] }} />
|
|
121
|
+
</tr>
|
|
122
|
+
))}
|
|
123
|
+
</React.Fragment>
|
|
124
|
+
))}
|
|
125
|
+
|
|
126
|
+
<tr className={styles.band} style={height(30)}>
|
|
127
|
+
<th colSpan={10}>PAEDIATRIC ART</th>
|
|
128
|
+
</tr>
|
|
129
|
+
{PAEDIATRIC_ART.map((section) => (
|
|
130
|
+
<React.Fragment key={section.title}>
|
|
131
|
+
<tr className={styles.heading} style={height(section.h)}>
|
|
132
|
+
<th colSpan={2}>{section.title}</th>
|
|
133
|
+
{[...WEIGHT_BANDS, 'Total'].map((band) => (
|
|
134
|
+
<th key={band} className={styles.small}>
|
|
135
|
+
{band}
|
|
136
|
+
</th>
|
|
137
|
+
))}
|
|
138
|
+
</tr>
|
|
139
|
+
{section.rows.map((regimen) => (
|
|
140
|
+
<tr key={regimen[0]} style={height(regimen[2] ?? 41)}>
|
|
141
|
+
<RegimenCells regimen={regimen} />
|
|
142
|
+
{WEIGHT_BANDS.map((band) => (
|
|
143
|
+
<Count key={band} cell={{ code: regimen[0], band }} />
|
|
144
|
+
))}
|
|
145
|
+
<Count cell={{ code: regimen[0] }} />
|
|
146
|
+
</tr>
|
|
147
|
+
))}
|
|
148
|
+
</React.Fragment>
|
|
149
|
+
))}
|
|
150
|
+
|
|
151
|
+
<tr className={styles.heading} style={height(PREP.h)}>
|
|
152
|
+
<th colSpan={2} className={styles.bandCell}>
|
|
153
|
+
{PREP.title}
|
|
154
|
+
</th>
|
|
155
|
+
<th className={styles.leftText}>Total</th>
|
|
156
|
+
{blanks(7, styles.shade)}
|
|
157
|
+
</tr>
|
|
158
|
+
{PREP.rows.map((regimen) => (
|
|
159
|
+
<tr key={regimen[0]} style={height(regimen[2] ?? 35.4)}>
|
|
160
|
+
<RegimenCells regimen={regimen} />
|
|
161
|
+
<Count cell={{ code: regimen[0] }} />
|
|
162
|
+
{blanks(7, styles.shade)}
|
|
163
|
+
</tr>
|
|
164
|
+
))}
|
|
165
|
+
</tbody>
|
|
166
|
+
</table>
|
|
167
|
+
);
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* A numbered group of the right half: its heading with Total, then a count and
|
|
172
|
+
* a Total per regimen, the columns between shaded as one block. `extraRows`
|
|
173
|
+
* lengthens the block over rows that follow the group (Hepatitis B's).
|
|
174
|
+
* `isCounted` fills each regimen's Total from the data (PEP, Hepatitis B and TPT HIV Positive).
|
|
175
|
+
*/
|
|
176
|
+
const TotalledRows: React.FC<{ group: TotalledGroup; extraRows?: number; isCounted?: boolean }> = ({
|
|
177
|
+
group,
|
|
178
|
+
extraRows = 0,
|
|
179
|
+
isCounted = false,
|
|
180
|
+
}) => (
|
|
181
|
+
<>
|
|
182
|
+
<tr className={styles.heading} style={height(group.h)}>
|
|
183
|
+
<td className={styles.code}>{group.number}</td>
|
|
184
|
+
<th colSpan={5} className={styles.leftText}>
|
|
185
|
+
{group.title}
|
|
186
|
+
</th>
|
|
187
|
+
{group.noTotal ? <td colSpan={2} className={styles.shade} /> : <th colSpan={2}>Total</th>}
|
|
188
|
+
</tr>
|
|
189
|
+
{group.rows.map((regimen, index) => (
|
|
190
|
+
<tr key={regimen[0]} style={height(regimen[2] ?? 40)}>
|
|
191
|
+
<RegimenCells regimen={regimen} />
|
|
192
|
+
<td />
|
|
193
|
+
{index === 0 && <td colSpan={3} rowSpan={group.rows.length + extraRows} className={styles.shade} />}
|
|
194
|
+
{isCounted ? <Count colSpan={2} cell={{ code: regimen[0] }} /> : <td colSpan={2} />}
|
|
195
|
+
</tr>
|
|
196
|
+
))}
|
|
197
|
+
</>
|
|
198
|
+
);
|
|
199
|
+
|
|
200
|
+
/** PMTCT for mothers and infants, PEP, Hepatitis B and the OIs */
|
|
201
|
+
const PmtctHalf: React.FC = () => (
|
|
202
|
+
<table className={styles.grid}>
|
|
203
|
+
<ColumnWidths widths={RIGHT_COLUMNS} />
|
|
204
|
+
<HalfHead span={6} band="PMTCT" />
|
|
205
|
+
<tbody>
|
|
206
|
+
<tr className={styles.heading} style={height(PMTCT_MOTHERS.h)}>
|
|
207
|
+
<td className={styles.code}>1</td>
|
|
208
|
+
<th className={styles.italicHeading}>{PMTCT_MOTHERS.title}</th>
|
|
209
|
+
<th>1st Line</th>
|
|
210
|
+
<th>2nd Line</th>
|
|
211
|
+
<th>3rd Line</th>
|
|
212
|
+
<th colSpan={3}>Total</th>
|
|
213
|
+
</tr>
|
|
214
|
+
{PMTCT_MOTHERS.rows.map((regimen) => (
|
|
215
|
+
<tr key={regimen[0]} style={height(39.6)}>
|
|
216
|
+
<RegimenCells regimen={regimen} />
|
|
217
|
+
{[1, 2, 3].map((line) => (
|
|
218
|
+
<Count key={line} cell={{ code: regimen[0], line }} />
|
|
219
|
+
))}
|
|
220
|
+
<td colSpan={3} className={styles.shade} />
|
|
221
|
+
</tr>
|
|
222
|
+
))}
|
|
223
|
+
<tr style={height(39)}>
|
|
224
|
+
{blanks(5, styles.lightShade)}
|
|
225
|
+
<td colSpan={3} className={styles.shade} />
|
|
226
|
+
</tr>
|
|
227
|
+
|
|
228
|
+
<tr className={styles.heading} style={height(PMTCT_INFANTS.h)}>
|
|
229
|
+
<td className={styles.code}>2</td>
|
|
230
|
+
<th className={styles.leftText}>{PMTCT_INFANTS.title}</th>
|
|
231
|
+
{[...INFANT_AGES, 'Total'].map((age) => (
|
|
232
|
+
<th key={age} className={styles.small}>
|
|
233
|
+
{age}
|
|
234
|
+
</th>
|
|
235
|
+
))}
|
|
236
|
+
</tr>
|
|
237
|
+
{PMTCT_INFANTS.rows.map((regimen) => (
|
|
238
|
+
<tr key={regimen[0]} style={height(regimen[2] ?? 38)}>
|
|
239
|
+
<RegimenCells regimen={regimen} />
|
|
240
|
+
{blanks(5)}
|
|
241
|
+
<td className={styles.shade} />
|
|
242
|
+
</tr>
|
|
243
|
+
))}
|
|
244
|
+
|
|
245
|
+
<tr className={styles.band} style={height(38)}>
|
|
246
|
+
<td className={styles.blankCell} />
|
|
247
|
+
<th colSpan={7}>PEP</th>
|
|
248
|
+
</tr>
|
|
249
|
+
{PEP.map((group) => (
|
|
250
|
+
<TotalledRows key={group.title} group={group} isCounted />
|
|
251
|
+
))}
|
|
252
|
+
|
|
253
|
+
<TotalledRows group={HEPATITIS_B} extraRows={1} isCounted />
|
|
254
|
+
<tr style={height(30)}>
|
|
255
|
+
<td colSpan={3} className={styles.shade} />
|
|
256
|
+
<td colSpan={2} />
|
|
257
|
+
</tr>
|
|
258
|
+
|
|
259
|
+
<tr className={styles.band} style={height(40)}>
|
|
260
|
+
<td className={styles.blankCell} />
|
|
261
|
+
<th colSpan={7}>Management of Opportunistic infections (OIs)</th>
|
|
262
|
+
</tr>
|
|
263
|
+
{OPPORTUNISTIC_INFECTIONS.map((group) => (
|
|
264
|
+
<TotalledRows key={group.title} group={group} isCounted={group.title === TPT_HIV_POSITIVE} />
|
|
265
|
+
))}
|
|
266
|
+
</tbody>
|
|
267
|
+
</table>
|
|
268
|
+
);
|
|
269
|
+
|
|
270
|
+
/** A label and the ruled line it is written on */
|
|
271
|
+
const Field: React.FC<{ label: React.ReactNode; value?: string; caption?: string }> = ({ label, value, caption }) => (
|
|
272
|
+
<>
|
|
273
|
+
<span className={styles.fieldLabel}>{label}</span>
|
|
274
|
+
<span className={caption ? `${styles.fieldLine} ${styles.captioned}` : styles.fieldLine}>
|
|
275
|
+
{value}
|
|
276
|
+
{caption && <span className={styles.caption}>{caption}</span>}
|
|
277
|
+
</span>
|
|
278
|
+
</>
|
|
279
|
+
);
|
|
280
|
+
|
|
281
|
+
const SIGN_OFF = ['Signature:', 'Date:', 'Designation:', 'Contact Telephone:'];
|
|
282
|
+
|
|
283
|
+
interface Moh729bFormProps {
|
|
284
|
+
facility: string;
|
|
285
|
+
startDate: string;
|
|
286
|
+
endDate: string;
|
|
287
|
+
/** The counts of the ART and PMTCT regimens; without them the form is drawn blank */
|
|
288
|
+
counts?: Moh729bCounts;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* MoH 729B Facility Monthly ARV Patient Summary (F-MAPS), Ver. July 2023: the
|
|
293
|
+
* report page of the form as one A3 portrait sheet, ART on the left and PMTCT,
|
|
294
|
+
* PEP, Hepatitis B and the OIs on the right, with the shaded cells as printed.
|
|
295
|
+
* The ART regimens (adult, paediatric and PMTCT mothers) are counted from the
|
|
296
|
+
* clients active on ART in the month, and PrEP from the clients on PrEP in the
|
|
297
|
+
* month by MOH 731's PrEP section, and PEP from the clients given PEP in the
|
|
298
|
+
* month by its PEP section, and Hepatitis B from the HIV-negative clients its
|
|
299
|
+
* HBV screening at ANC finds positive, and TPT HIV Positive from its 3.4
|
|
300
|
+
* Starting TPT by the drug started; infants, universal prophylaxis, TPT HIV
|
|
301
|
+
* Negative and Cryptococcal Meningitis stay blank until their queries are added.
|
|
302
|
+
*/
|
|
303
|
+
const Moh729bForm: React.FC<Moh729bFormProps> = ({ facility, startDate, endDate, counts }) => {
|
|
304
|
+
const { ref, scale } = usePageScale<HTMLDivElement>(PAGE_WIDTH_MM);
|
|
305
|
+
const formDate = (value: string) => (value ? dayjs(value).format('DD/MM/YYYY') : '');
|
|
306
|
+
|
|
307
|
+
return (
|
|
308
|
+
<div className={styles.viewport} ref={ref}>
|
|
309
|
+
<section className={styles.page} data-register-page style={{ '--page-zoom': scale } as React.CSSProperties}>
|
|
310
|
+
<div className={styles.titleLine}>
|
|
311
|
+
<span>Ministry of Health</span>
|
|
312
|
+
<span>FACILITY MONTHLY ARV PATIENT SUMMARY (F-MAPS) Report (MoH 729B)</span>
|
|
313
|
+
<span>Ver. July 2023</span>
|
|
314
|
+
</div>
|
|
315
|
+
<div className={styles.formCode}>MoH 729B</div>
|
|
316
|
+
|
|
317
|
+
<div className={styles.fields}>
|
|
318
|
+
<div className={styles.fieldGrid}>
|
|
319
|
+
<Field label="Facility Name:" value={facility} />
|
|
320
|
+
<Field label="County:" />
|
|
321
|
+
</div>
|
|
322
|
+
<div className={styles.fieldGrid}>
|
|
323
|
+
<Field label="Facility (MFL) code:" />
|
|
324
|
+
<Field label="Sub-County:" />
|
|
325
|
+
</div>
|
|
326
|
+
</div>
|
|
327
|
+
<div className={styles.period}>
|
|
328
|
+
<Field
|
|
329
|
+
label={
|
|
330
|
+
<>
|
|
331
|
+
Period of Reporting:
|
|
332
|
+
<br />
|
|
333
|
+
Beginning:
|
|
334
|
+
</>
|
|
335
|
+
}
|
|
336
|
+
value={formDate(startDate)}
|
|
337
|
+
caption="(Day/Month/Year)"
|
|
338
|
+
/>
|
|
339
|
+
<Field label="Ending:" value={formDate(endDate)} caption="(Day/Month/Year)" />
|
|
340
|
+
</div>
|
|
341
|
+
|
|
342
|
+
<CountsContext.Provider value={counts ?? null}>
|
|
343
|
+
<div className={styles.halves}>
|
|
344
|
+
<div className={styles.half} style={{ flexGrow: LEFT_COLUMNS.reduce((a, b) => a + b, 0) }}>
|
|
345
|
+
<ArtHalf />
|
|
346
|
+
</div>
|
|
347
|
+
<div className={styles.half} style={{ flexGrow: RIGHT_COLUMNS.reduce((a, b) => a + b, 0) }}>
|
|
348
|
+
<PmtctHalf />
|
|
349
|
+
<div className={styles.filler} />
|
|
350
|
+
</div>
|
|
351
|
+
</div>
|
|
352
|
+
</CountsContext.Provider>
|
|
353
|
+
|
|
354
|
+
<p className={styles.instruction}>
|
|
355
|
+
1. For each Regimen, sum the Number of Patients/Clients from the MoH367A (DAR for ARV and OI medicines) placed
|
|
356
|
+
at ALL the ART Dispensing points in your Health Facility to get the Total numbers by Regimen for the Facility
|
|
357
|
+
<br />
|
|
358
|
+
This information is important for purposes of planning your stock orders and forecasting your requirements.
|
|
359
|
+
</p>
|
|
360
|
+
|
|
361
|
+
<div className={styles.signOff}>
|
|
362
|
+
{[
|
|
363
|
+
['Report prepared by:', 'Name of Reporting Officer'],
|
|
364
|
+
['Report approved by:', 'Name of Approving officer'],
|
|
365
|
+
].map(([label, caption]) => (
|
|
366
|
+
<div key={label} className={styles.fieldGrid}>
|
|
367
|
+
<Field label={label} caption={caption} />
|
|
368
|
+
{SIGN_OFF.map((line) => (
|
|
369
|
+
<Field key={line} label={line} />
|
|
370
|
+
))}
|
|
371
|
+
</div>
|
|
372
|
+
))}
|
|
373
|
+
</div>
|
|
374
|
+
<p className={styles.notes}>Notes:</p>
|
|
375
|
+
|
|
376
|
+
<div className={styles.pageFoot}>
|
|
377
|
+
<span>For Satellite sites Central site Dispensing points</span>
|
|
378
|
+
<span>Ver. July 2023</span>
|
|
379
|
+
</div>
|
|
380
|
+
</section>
|
|
381
|
+
</div>
|
|
382
|
+
);
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
export default Moh729bForm;
|