@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,418 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { usePageScale } from '../../common/report-page';
|
|
4
|
+
import {
|
|
5
|
+
Columns,
|
|
6
|
+
Heading,
|
|
7
|
+
KeyTable,
|
|
8
|
+
NutritionStack,
|
|
9
|
+
PAGE_WIDTH_MM,
|
|
10
|
+
ROWS_PER_PAGE,
|
|
11
|
+
Stack,
|
|
12
|
+
Tb4Page,
|
|
13
|
+
Value,
|
|
14
|
+
paginate,
|
|
15
|
+
} from './tb4-parts';
|
|
16
|
+
import { formDate, text, type Tb4Row, type Tb4Test } from './tb4.types';
|
|
17
|
+
import styles from './tb4-register.scss';
|
|
18
|
+
|
|
19
|
+
/** Column widths, measured off page 8 of the form: A to O, P (X-ray, others), Q, R, S (molecular, five smears), T */
|
|
20
|
+
const COLUMN_WIDTHS = [
|
|
21
|
+
51, 62, 59, 218, 48, 64, 85, 105, 68, 68, 76, 57, 55, 122, 60, 47, 46, 89, 50, 77, 52, 52, 50, 45, 48, 136,
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const SMEAR_MONTHS = [0, 2, 3, 5, 6] as const;
|
|
25
|
+
|
|
26
|
+
/** A test's serial number, date and result, down the row (S) */
|
|
27
|
+
const TestStack: React.FC<{ test?: Tb4Test | null }> = ({ test }) => (
|
|
28
|
+
<Stack
|
|
29
|
+
parts={[
|
|
30
|
+
{ share: 0.292, boxes: [{ value: text(test?.serial) }] },
|
|
31
|
+
{ share: 0.295, boxes: [{ value: formDate(test?.date) }] },
|
|
32
|
+
{ share: 0.413, boxes: [{ value: text(test?.result) }] },
|
|
33
|
+
]}
|
|
34
|
+
/>
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
/** One patient: A to T across one tall row, divided inside as printed */
|
|
38
|
+
const PatientRow: React.FC<{ row?: Tb4Row }> = ({ row }) => (
|
|
39
|
+
<tr>
|
|
40
|
+
<td>
|
|
41
|
+
<Value>{text(row?.serial_number)}</Value>
|
|
42
|
+
</td>
|
|
43
|
+
<td>
|
|
44
|
+
<Value>{formDate(row?.registration_date)}</Value>
|
|
45
|
+
</td>
|
|
46
|
+
<td>
|
|
47
|
+
<Value>{text(row?.sub_county_tb_number)}</Value>
|
|
48
|
+
</td>
|
|
49
|
+
<td>
|
|
50
|
+
<Value left wrap>
|
|
51
|
+
{text(row?.full_name)}
|
|
52
|
+
</Value>
|
|
53
|
+
</td>
|
|
54
|
+
<td>
|
|
55
|
+
<Value>{text(row?.sex)}</Value>
|
|
56
|
+
</td>
|
|
57
|
+
<td>
|
|
58
|
+
<Value>{text(row?.age)}</Value>
|
|
59
|
+
</td>
|
|
60
|
+
<td>
|
|
61
|
+
<Stack
|
|
62
|
+
parts={[
|
|
63
|
+
{ share: 0.146, boxes: [{ heading: 'Nationality' }] },
|
|
64
|
+
{ share: 0.295, boxes: [{ value: text(row?.nationality) }] },
|
|
65
|
+
{ share: 0.146, boxes: [{ heading: 'Number' }] },
|
|
66
|
+
{ share: 0.413, boxes: [{ value: text(row?.id_number) }] },
|
|
67
|
+
]}
|
|
68
|
+
/>
|
|
69
|
+
</td>
|
|
70
|
+
<td>
|
|
71
|
+
<Value left wrap>
|
|
72
|
+
{[row?.physical_address, row?.patient_phone, row?.supporter_phone]
|
|
73
|
+
.map(text)
|
|
74
|
+
.filter(Boolean)
|
|
75
|
+
.map((line) => (
|
|
76
|
+
<React.Fragment key={line}>
|
|
77
|
+
{line}
|
|
78
|
+
<br />
|
|
79
|
+
</React.Fragment>
|
|
80
|
+
))}
|
|
81
|
+
</Value>
|
|
82
|
+
</td>
|
|
83
|
+
<td>
|
|
84
|
+
<Value>{text(row?.key_population)}</Value>
|
|
85
|
+
</td>
|
|
86
|
+
<td>
|
|
87
|
+
<Value>{text(row?.referred_by)}</Value>
|
|
88
|
+
</td>
|
|
89
|
+
<td>
|
|
90
|
+
<NutritionStack nutrition={row?.nutrition_start} />
|
|
91
|
+
</td>
|
|
92
|
+
<td>
|
|
93
|
+
<Value>{text(row?.severity)}</Value>
|
|
94
|
+
</td>
|
|
95
|
+
<td>
|
|
96
|
+
<Value>{text(row?.tb_type)}</Value>
|
|
97
|
+
</td>
|
|
98
|
+
<td>
|
|
99
|
+
<Stack
|
|
100
|
+
parts={[
|
|
101
|
+
{ share: 0.441, boxes: [{ value: text(row?.eptb_subtype) }] },
|
|
102
|
+
{ share: 0.146, boxes: [{ value: text(row?.lymph_node_type) }] },
|
|
103
|
+
{ share: 0.146 },
|
|
104
|
+
{ share: 0.267 },
|
|
105
|
+
]}
|
|
106
|
+
/>
|
|
107
|
+
</td>
|
|
108
|
+
<td>
|
|
109
|
+
<Value>{text(row?.patient_type)}</Value>
|
|
110
|
+
</td>
|
|
111
|
+
<td>
|
|
112
|
+
<Stack
|
|
113
|
+
parts={[
|
|
114
|
+
{ share: 0.183, boxes: [{ tag: 'Date', value: formDate(row?.xray_date) }] },
|
|
115
|
+
{ share: 0.258, boxes: [{ tag: 'Score', value: text(row?.xray_score) }] },
|
|
116
|
+
{ share: 0.559, boxes: [{ tag: 'Finding', value: text(row?.xray_finding) }] },
|
|
117
|
+
]}
|
|
118
|
+
/>
|
|
119
|
+
</td>
|
|
120
|
+
<td>
|
|
121
|
+
<Value>{text(row?.other_imaging)}</Value>
|
|
122
|
+
</td>
|
|
123
|
+
<td>
|
|
124
|
+
<Stack
|
|
125
|
+
parts={[
|
|
126
|
+
{ share: 0.146 },
|
|
127
|
+
{ share: 0.295, boxes: [{ value: formDate(row?.tb_lamp?.date) }] },
|
|
128
|
+
{ share: 0.146 },
|
|
129
|
+
{ share: 0.413, boxes: [{ value: text(row?.tb_lamp?.result) }] },
|
|
130
|
+
]}
|
|
131
|
+
/>
|
|
132
|
+
</td>
|
|
133
|
+
<td>
|
|
134
|
+
<Value>
|
|
135
|
+
{text(row?.lf_lam?.result)}
|
|
136
|
+
<br />
|
|
137
|
+
{formDate(row?.lf_lam?.date)}
|
|
138
|
+
</Value>
|
|
139
|
+
</td>
|
|
140
|
+
<td>
|
|
141
|
+
<TestStack test={row?.molecular} />
|
|
142
|
+
</td>
|
|
143
|
+
{SMEAR_MONTHS.map((month) => (
|
|
144
|
+
<td key={month}>
|
|
145
|
+
<TestStack test={row?.smears?.[month]} />
|
|
146
|
+
</td>
|
|
147
|
+
))}
|
|
148
|
+
<td>
|
|
149
|
+
<Stack
|
|
150
|
+
parts={[
|
|
151
|
+
{ share: 0.146, boxes: [{ value: text(row?.culture?.result) }] },
|
|
152
|
+
{ share: 0.146, boxes: [{ heading: 'Date' }] },
|
|
153
|
+
{ share: 0.149, boxes: [{ value: formDate(row?.culture?.date) }] },
|
|
154
|
+
{ share: 0.146 },
|
|
155
|
+
{
|
|
156
|
+
share: 0.146,
|
|
157
|
+
boxes: [{ heading: 'R' }, { heading: 'H' }, { heading: 'Z' }, { heading: 'E', grow: 2.2 }],
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
share: 0.267,
|
|
161
|
+
boxes: [
|
|
162
|
+
{ value: text(row?.dst?.r) },
|
|
163
|
+
{ value: text(row?.dst?.h) },
|
|
164
|
+
{ value: text(row?.dst?.z) },
|
|
165
|
+
{ value: text(row?.dst?.e), grow: 2.2 },
|
|
166
|
+
],
|
|
167
|
+
},
|
|
168
|
+
]}
|
|
169
|
+
/>
|
|
170
|
+
</td>
|
|
171
|
+
</tr>
|
|
172
|
+
);
|
|
173
|
+
|
|
174
|
+
/** Keys 1 to 6a, beneath the register on the left-hand pages */
|
|
175
|
+
const PatientKeys: React.FC = () => (
|
|
176
|
+
<div className={styles.keys}>
|
|
177
|
+
<div className={styles.keyColumn}>
|
|
178
|
+
<p className={styles.keyTitle}>KEY:</p>
|
|
179
|
+
<KeyTable
|
|
180
|
+
title="Key 1: Patient referred by"
|
|
181
|
+
widthMm={68}
|
|
182
|
+
rows={[
|
|
183
|
+
['HTC', 'HTC'],
|
|
184
|
+
['Comprehensive care unit', 'CCC'],
|
|
185
|
+
['Diabetes', 'DC'],
|
|
186
|
+
['Private Sector', 'PS'],
|
|
187
|
+
['Antenatal/PMTCT clinic', 'PMTCT'],
|
|
188
|
+
['Self referral', 'SR'],
|
|
189
|
+
['Contact Invitation', 'CI'],
|
|
190
|
+
['Chemist/Pharmacy', 'CP'],
|
|
191
|
+
['Community Health Promoter', 'CHP'],
|
|
192
|
+
]}
|
|
193
|
+
/>
|
|
194
|
+
</div>
|
|
195
|
+
<div className={styles.keyColumn}>
|
|
196
|
+
<KeyTable
|
|
197
|
+
title="Key 2: Severity Score"
|
|
198
|
+
widthMm={79}
|
|
199
|
+
rows={[
|
|
200
|
+
[
|
|
201
|
+
'Non- Severe',
|
|
202
|
+
<>
|
|
203
|
+
No danger signs
|
|
204
|
+
<br />
|
|
205
|
+
Diagnosed and managed at the outpatient/ No hospitalization
|
|
206
|
+
</>,
|
|
207
|
+
],
|
|
208
|
+
[
|
|
209
|
+
'Severe',
|
|
210
|
+
<>
|
|
211
|
+
Requiring hospitalization at diagnosis
|
|
212
|
+
<br />
|
|
213
|
+
Hospitalized at diagnosis/Diagnosed while an inpatient
|
|
214
|
+
<br />
|
|
215
|
+
Severely ill at diagnosis with any danger signs children who are BC
|
|
216
|
+
</>,
|
|
217
|
+
],
|
|
218
|
+
]}
|
|
219
|
+
/>
|
|
220
|
+
<KeyTable
|
|
221
|
+
title="Key 3: lymphadenitis"
|
|
222
|
+
widthMm={79}
|
|
223
|
+
rows={[
|
|
224
|
+
[
|
|
225
|
+
'Complicated',
|
|
226
|
+
<>
|
|
227
|
+
a) Has a Leaking Sinus/ associated abscess
|
|
228
|
+
<br />
|
|
229
|
+
b) Causing nerve/ nearby structure compression
|
|
230
|
+
<br />
|
|
231
|
+
c) TB Spread to any other organ
|
|
232
|
+
</>,
|
|
233
|
+
],
|
|
234
|
+
['Uncomplicated', 'Simple nodes with none of the above'],
|
|
235
|
+
]}
|
|
236
|
+
/>
|
|
237
|
+
</div>
|
|
238
|
+
<KeyTable
|
|
239
|
+
title="Key 4: Type of patient:"
|
|
240
|
+
widthMm={74}
|
|
241
|
+
leftTitle
|
|
242
|
+
rows={[
|
|
243
|
+
['New', 'N'],
|
|
244
|
+
['Treatment after loss follow up', 'TLF'],
|
|
245
|
+
['Recurrent', 'R'],
|
|
246
|
+
['Previous Treatment History unknown', 'THU'],
|
|
247
|
+
['Treatment after Failure', 'TF'],
|
|
248
|
+
['Transfer In', 'TI'],
|
|
249
|
+
['Others previously treated', 'PT'],
|
|
250
|
+
]}
|
|
251
|
+
/>
|
|
252
|
+
<KeyTable
|
|
253
|
+
title="Key 5 : X-Ray"
|
|
254
|
+
widthMm={68}
|
|
255
|
+
subheadings={[4]}
|
|
256
|
+
rows={[
|
|
257
|
+
['N', 'Normal'],
|
|
258
|
+
['SG', 'Abnormal Suggestive TB'],
|
|
259
|
+
['AO', 'Abnormal Others'],
|
|
260
|
+
['ND', 'Not Done'],
|
|
261
|
+
['CT - Scan'],
|
|
262
|
+
['FSTB', 'Finding Suggestive of TB'],
|
|
263
|
+
['FSM', 'Finding Suggestive of Malignancy'],
|
|
264
|
+
]}
|
|
265
|
+
/>
|
|
266
|
+
<KeyTable
|
|
267
|
+
title="Key 6 a: Molecular test results"
|
|
268
|
+
widthMm={82}
|
|
269
|
+
rows={[
|
|
270
|
+
['TS', 'MTB detected, rifampicin resistance not detected;'],
|
|
271
|
+
['RR', 'MTB detected, rifampicin resistance detected;'],
|
|
272
|
+
['TI', 'MTB detected, rifampicin resistance indeterminate'],
|
|
273
|
+
['N', 'MTB not detected;'],
|
|
274
|
+
['I', 'Invalid/no result/error'],
|
|
275
|
+
['NA', 'Not Applicable'],
|
|
276
|
+
['TR', 'MTB detected Trace'],
|
|
277
|
+
]}
|
|
278
|
+
/>
|
|
279
|
+
</div>
|
|
280
|
+
);
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* The left-hand pages of the TB4 register (page 8 of the form): the patient,
|
|
284
|
+
* diagnosis and investigations, columns A to T, five patients a page, with
|
|
285
|
+
* Keys 1 to 6a beneath.
|
|
286
|
+
*/
|
|
287
|
+
const Tb4PatientSheet: React.FC<{ rows: Tb4Row[] }> = ({ rows }) => {
|
|
288
|
+
const { ref, scale } = usePageScale<HTMLDivElement>(PAGE_WIDTH_MM);
|
|
289
|
+
const pages = paginate(rows);
|
|
290
|
+
|
|
291
|
+
return (
|
|
292
|
+
<div className={styles.viewport} ref={ref}>
|
|
293
|
+
{pages.map((pageRows, index) => (
|
|
294
|
+
<Tb4Page
|
|
295
|
+
key={index}
|
|
296
|
+
page={index + 1}
|
|
297
|
+
pages={pages.length}
|
|
298
|
+
side="Patient, diagnosis and investigations (A–T)"
|
|
299
|
+
scale={scale}
|
|
300
|
+
keys={<PatientKeys />}
|
|
301
|
+
table={
|
|
302
|
+
<table className={styles.register}>
|
|
303
|
+
<Columns widths={COLUMN_WIDTHS} />
|
|
304
|
+
<thead>
|
|
305
|
+
<tr style={{ height: '14mm' }}>
|
|
306
|
+
<Heading letter="A" rowSpan={3}>
|
|
307
|
+
Serial No.
|
|
308
|
+
</Heading>
|
|
309
|
+
<Heading letter="B" rowSpan={3}>
|
|
310
|
+
Date of Sub- County Reg.
|
|
311
|
+
</Heading>
|
|
312
|
+
<Heading letter="C" rowSpan={3}>
|
|
313
|
+
Sub County TB Reg No.
|
|
314
|
+
</Heading>
|
|
315
|
+
<Heading letter="D" rowSpan={3} centre>
|
|
316
|
+
"Name (Write 3 names)"
|
|
317
|
+
</Heading>
|
|
318
|
+
<Heading letter="E" rowSpan={3}>
|
|
319
|
+
Sex (M/F Other)
|
|
320
|
+
</Heading>
|
|
321
|
+
<Heading letter="F" rowSpan={3}>
|
|
322
|
+
Age in years and months
|
|
323
|
+
</Heading>
|
|
324
|
+
<Heading letter="G" rowSpan={3} centre>
|
|
325
|
+
Nationality and National ID/ Passport / UPI/NEMIS Number/Alien ID Number
|
|
326
|
+
</Heading>
|
|
327
|
+
<Heading letter="H" rowSpan={3}>
|
|
328
|
+
Physical address (Neighbour/ School/ Church/ Mosque)
|
|
329
|
+
<br />
|
|
330
|
+
<br />
|
|
331
|
+
Phone No. of patient
|
|
332
|
+
<br />
|
|
333
|
+
<br />
|
|
334
|
+
Phone No. treatment supporter
|
|
335
|
+
</Heading>
|
|
336
|
+
<Heading letter="I" rowSpan={3}>
|
|
337
|
+
Is the patient a key vulnerable population (HCW, Truck driver prisoner or miner) or None
|
|
338
|
+
</Heading>
|
|
339
|
+
<Heading letter="J" rowSpan={3} centre>
|
|
340
|
+
Patient Referred By (Key 1)
|
|
341
|
+
</Heading>
|
|
342
|
+
<Heading letter="K" rowSpan={3}>
|
|
343
|
+
Nutritional status at the start of TB Treatment (Kgs)/ Height/ Length (Cm)
|
|
344
|
+
</Heading>
|
|
345
|
+
<Heading letter="L" rowSpan={3} centre>
|
|
346
|
+
Severity Score (Severe/ Non- Severe Key 2)
|
|
347
|
+
</Heading>
|
|
348
|
+
<Heading letter="M" rowSpan={3}>
|
|
349
|
+
Type of TB (PTB/ EPTB
|
|
350
|
+
</Heading>
|
|
351
|
+
<Heading letter="N" rowSpan={3}>
|
|
352
|
+
EPTB Sub-type
|
|
353
|
+
<br />
|
|
354
|
+
<br />
|
|
355
|
+
(If lymph nodes, specify complicated/ uncomplicated Key 3)
|
|
356
|
+
</Heading>
|
|
357
|
+
<Heading letter="O" rowSpan={3} centre>
|
|
358
|
+
Type of patient (Key 4)
|
|
359
|
+
</Heading>
|
|
360
|
+
<Heading letter="P" rowSpan={2} colSpan={2}>
|
|
361
|
+
Imaging (Key5)
|
|
362
|
+
</Heading>
|
|
363
|
+
<Heading letter="Q" rowSpan={3}>
|
|
364
|
+
TB LAMP
|
|
365
|
+
<br />
|
|
366
|
+
<br />
|
|
367
|
+
Date
|
|
368
|
+
<br />
|
|
369
|
+
<br />
|
|
370
|
+
Results (Pos/ Neg/ND)
|
|
371
|
+
</Heading>
|
|
372
|
+
<Heading letter="R" rowSpan={3} centre>
|
|
373
|
+
LF LAM
|
|
374
|
+
<br />
|
|
375
|
+
<br />
|
|
376
|
+
(Pos/ Neg/ ND) and date
|
|
377
|
+
</Heading>
|
|
378
|
+
<Heading letter="S" colSpan={6} centre>
|
|
379
|
+
Molecular/Microbiological Tests (Serial no., date and result sputum smear examination,
|
|
380
|
+
quantification)
|
|
381
|
+
</Heading>
|
|
382
|
+
<Heading letter="T" rowSpan={3} centre>
|
|
383
|
+
<br />
|
|
384
|
+
Culture/DST Results Resistant (R)/Sensitive (S) and Date collected (Growth/No Growth/ Done No
|
|
385
|
+
Results/ Contaminated/Not done) (Key7a/7b)
|
|
386
|
+
</Heading>
|
|
387
|
+
</tr>
|
|
388
|
+
<tr style={{ height: '9.5mm' }}>
|
|
389
|
+
<th className={styles.boldHeading}>Molecular test (Key 6a/6b)</th>
|
|
390
|
+
<th colSpan={5} className={styles.boldHeading}>
|
|
391
|
+
Smear
|
|
392
|
+
</th>
|
|
393
|
+
</tr>
|
|
394
|
+
<tr style={{ height: '18.5mm' }}>
|
|
395
|
+
<th className={styles.tinyHeading}>X-ray Finding</th>
|
|
396
|
+
<th className={styles.tinyHeading}>Others Specify)</th>
|
|
397
|
+
<th className={styles.boldHeading}>Month 0</th>
|
|
398
|
+
{SMEAR_MONTHS.map((month) => (
|
|
399
|
+
<th key={month} className={styles.boldHeading}>
|
|
400
|
+
Month {month}
|
|
401
|
+
</th>
|
|
402
|
+
))}
|
|
403
|
+
</tr>
|
|
404
|
+
</thead>
|
|
405
|
+
<tbody>
|
|
406
|
+
{Array.from({ length: ROWS_PER_PAGE }, (_, rowIndex) => (
|
|
407
|
+
<PatientRow key={rowIndex} row={pageRows[rowIndex]} />
|
|
408
|
+
))}
|
|
409
|
+
</tbody>
|
|
410
|
+
</table>
|
|
411
|
+
}
|
|
412
|
+
/>
|
|
413
|
+
))}
|
|
414
|
+
</div>
|
|
415
|
+
);
|
|
416
|
+
};
|
|
417
|
+
|
|
418
|
+
export default Tb4PatientSheet;
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
@use '@carbon/layout';
|
|
2
|
+
@use '@openmrs/esm-styleguide/src/vars' as *;
|
|
3
|
+
|
|
4
|
+
/* The TB4 Notification and Treatment Register (MOH/REG/DLTLDP/01) as A3
|
|
5
|
+
landscape pages, drawn in the units the paper is measured in (mm, pt) so a
|
|
6
|
+
page is one sheet, as on pages 8 and 9 of the form: the two facing pages of
|
|
7
|
+
each spread, five patients to a page, with the keys beneath. Each patient's
|
|
8
|
+
row is divided inside as printed (nationality over number, weight beside
|
|
9
|
+
height over BMI and MUAC, …), drawn as stacks of fixed fractions of the row
|
|
10
|
+
so every page keeps the form's proportions. */
|
|
11
|
+
|
|
12
|
+
/* On screen a page is the printable area only, A3 landscape less its 8mm
|
|
13
|
+
margins: the card around it gives the margin, and `usePageScale` is told
|
|
14
|
+
this width. */
|
|
15
|
+
$page-w: 420mm - 2 * 8mm;
|
|
16
|
+
$page-h: 297mm - 2 * 8mm;
|
|
17
|
+
|
|
18
|
+
$ink: #000;
|
|
19
|
+
$rule: 0.6pt solid #555;
|
|
20
|
+
$frame: 1.2pt solid $ink;
|
|
21
|
+
$key-fill: #d6e3bc; // the keys' headings
|
|
22
|
+
|
|
23
|
+
$heading-h: 42mm;
|
|
24
|
+
$row-h: 32mm;
|
|
25
|
+
|
|
26
|
+
/* The card the pages sit in, drawn like the filter card above it */
|
|
27
|
+
.reportFrame {
|
|
28
|
+
margin: layout.$spacing-05 0 layout.$spacing-07;
|
|
29
|
+
padding: layout.$spacing-05;
|
|
30
|
+
background-color: $ui-02;
|
|
31
|
+
border: 1px solid $ui-03;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* The two facing pages as tabs, under the filters */
|
|
35
|
+
.sheetTabs {
|
|
36
|
+
margin-top: layout.$spacing-05;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.sheetPanel {
|
|
40
|
+
padding: 0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* Holds the fixed-width pages without making the app scroll sideways */
|
|
44
|
+
.viewport {
|
|
45
|
+
display: flex;
|
|
46
|
+
flex-direction: column;
|
|
47
|
+
gap: layout.$spacing-09;
|
|
48
|
+
overflow-x: auto;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.page {
|
|
52
|
+
display: flex;
|
|
53
|
+
flex-direction: column;
|
|
54
|
+
flex: none;
|
|
55
|
+
box-sizing: border-box;
|
|
56
|
+
width: $page-w;
|
|
57
|
+
height: $page-h;
|
|
58
|
+
margin: 0 auto;
|
|
59
|
+
color: $ink;
|
|
60
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
61
|
+
font-size: 7pt;
|
|
62
|
+
line-height: 1.15;
|
|
63
|
+
background-color: #fff;
|
|
64
|
+
/* set by `usePageScale` from the measured container width, floored at 1 */
|
|
65
|
+
zoom: var(--page-zoom, 1);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.register {
|
|
69
|
+
width: 100%;
|
|
70
|
+
table-layout: fixed;
|
|
71
|
+
border-collapse: collapse;
|
|
72
|
+
border: $frame;
|
|
73
|
+
|
|
74
|
+
th,
|
|
75
|
+
td {
|
|
76
|
+
padding: 0;
|
|
77
|
+
overflow: hidden;
|
|
78
|
+
border: $rule;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
th {
|
|
82
|
+
padding: 0.8mm 0.8mm;
|
|
83
|
+
font-size: 6.5pt;
|
|
84
|
+
font-weight: 400;
|
|
85
|
+
text-align: left;
|
|
86
|
+
vertical-align: top;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* each patient's row is ruled off heavier, as printed */
|
|
90
|
+
tbody tr {
|
|
91
|
+
height: $row-h;
|
|
92
|
+
border-top: $frame;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
td {
|
|
96
|
+
height: $row-h;
|
|
97
|
+
vertical-align: middle;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* the column letter, bold over its heading */
|
|
102
|
+
.letter {
|
|
103
|
+
display: block;
|
|
104
|
+
font-weight: 700;
|
|
105
|
+
text-align: center;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.centreHeading {
|
|
109
|
+
text-align: center !important;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.boldHeading {
|
|
113
|
+
font-weight: 700 !important;
|
|
114
|
+
text-align: center !important;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* the small headings under the imaging column */
|
|
118
|
+
.tinyHeading {
|
|
119
|
+
font-size: 5pt !important;
|
|
120
|
+
font-weight: 700 !important;
|
|
121
|
+
text-align: center !important;
|
|
122
|
+
vertical-align: middle !important;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* the months of the drug collection grid */
|
|
126
|
+
.monthHeading {
|
|
127
|
+
padding: 0 !important;
|
|
128
|
+
font-size: 5.5pt !important;
|
|
129
|
+
font-weight: 700 !important;
|
|
130
|
+
text-align: center !important;
|
|
131
|
+
vertical-align: middle !important;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/* A whole cell's entry */
|
|
135
|
+
.value {
|
|
136
|
+
display: block;
|
|
137
|
+
padding: 0.6mm 0.8mm;
|
|
138
|
+
text-align: center;
|
|
139
|
+
overflow-wrap: anywhere;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.valueLeft {
|
|
143
|
+
text-align: left;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/* names, addresses and remarks wrap within their cell */
|
|
147
|
+
.wrap {
|
|
148
|
+
display: -webkit-box;
|
|
149
|
+
overflow: hidden;
|
|
150
|
+
-webkit-box-orient: vertical;
|
|
151
|
+
-webkit-line-clamp: 6;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/* A divided cell: parts stacked down the row's height, each holding one or
|
|
155
|
+
more boxes side by side */
|
|
156
|
+
.stack {
|
|
157
|
+
display: grid;
|
|
158
|
+
height: $row-h;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.part {
|
|
162
|
+
display: flex;
|
|
163
|
+
min-height: 0;
|
|
164
|
+
border-top: $rule;
|
|
165
|
+
|
|
166
|
+
&:first-child {
|
|
167
|
+
border-top: none;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.box {
|
|
172
|
+
position: relative;
|
|
173
|
+
display: flex;
|
|
174
|
+
flex: 1 1 0;
|
|
175
|
+
align-items: center;
|
|
176
|
+
justify-content: center;
|
|
177
|
+
min-width: 0;
|
|
178
|
+
padding: 0 0.6mm;
|
|
179
|
+
overflow: hidden;
|
|
180
|
+
text-align: center;
|
|
181
|
+
border-left: $rule;
|
|
182
|
+
|
|
183
|
+
&:first-child {
|
|
184
|
+
border-left: none;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/* a printed label filling its box: "Nationality", "Outcome", "R", … */
|
|
189
|
+
.heading {
|
|
190
|
+
font-size: 6.5pt;
|
|
191
|
+
font-weight: 700;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/* a printed label in the corner of a box that is also written in: "BMI/Z score", "MUAC" */
|
|
195
|
+
.tag {
|
|
196
|
+
position: absolute;
|
|
197
|
+
top: 0.6mm;
|
|
198
|
+
left: 0.6mm;
|
|
199
|
+
font-size: 4.8pt;
|
|
200
|
+
font-weight: 700;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.boxValue {
|
|
204
|
+
overflow-wrap: anywhere;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/* An initial phase collection (W): its date written up the narrow column */
|
|
208
|
+
.collection {
|
|
209
|
+
text-align: center;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.vertical {
|
|
213
|
+
display: inline-block;
|
|
214
|
+
font-size: 6pt;
|
|
215
|
+
white-space: nowrap;
|
|
216
|
+
writing-mode: vertical-rl;
|
|
217
|
+
transform: rotate(180deg);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/* The keys beneath the register, spaced across the sheet as on the form */
|
|
221
|
+
|
|
222
|
+
.keys {
|
|
223
|
+
display: flex;
|
|
224
|
+
align-items: flex-start;
|
|
225
|
+
justify-content: space-between;
|
|
226
|
+
gap: 4mm;
|
|
227
|
+
margin-top: 4mm;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
.keyTitle {
|
|
231
|
+
margin: 0 0 1.5mm;
|
|
232
|
+
font-size: 10pt;
|
|
233
|
+
font-weight: 700;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.keyColumn {
|
|
237
|
+
display: flex;
|
|
238
|
+
flex-direction: column;
|
|
239
|
+
gap: 0;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.keyTable {
|
|
243
|
+
border-collapse: collapse;
|
|
244
|
+
font-size: 6.8pt;
|
|
245
|
+
line-height: 1.12;
|
|
246
|
+
|
|
247
|
+
th,
|
|
248
|
+
td {
|
|
249
|
+
padding: 0.6mm 1.2mm;
|
|
250
|
+
text-align: left;
|
|
251
|
+
vertical-align: middle;
|
|
252
|
+
border: 0.6pt solid #7f7f7f;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
thead th {
|
|
256
|
+
font-size: 7.2pt;
|
|
257
|
+
font-weight: 700;
|
|
258
|
+
text-align: center;
|
|
259
|
+
background-color: $key-fill;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
td {
|
|
263
|
+
height: 4.6mm;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/* a heading within a key, e.g. "CT - Scan", "Comorbidities" */
|
|
268
|
+
.keySubheading td {
|
|
269
|
+
font-weight: 700;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.leftHeadingKey thead th {
|
|
273
|
+
text-align: left;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.pageFoot {
|
|
277
|
+
display: flex;
|
|
278
|
+
justify-content: space-between;
|
|
279
|
+
margin-top: auto;
|
|
280
|
+
padding-top: 1.5mm;
|
|
281
|
+
font-size: 7.5pt;
|
|
282
|
+
}
|