@ampath/esm-reports-app 1.0.0-next.2 → 1.0.0-next.21

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.
Files changed (154) hide show
  1. package/dist/138.js +2 -0
  2. package/dist/138.js.LICENSE.txt +20 -0
  3. package/dist/138.js.map +1 -0
  4. package/dist/184.js +1 -1
  5. package/dist/184.js.map +1 -1
  6. package/dist/205.js +1 -0
  7. package/dist/205.js.map +1 -0
  8. package/dist/282.js +1 -1
  9. package/dist/282.js.LICENSE.txt +3 -3
  10. package/dist/282.js.map +1 -1
  11. package/dist/311.js +1 -0
  12. package/dist/311.js.map +1 -0
  13. package/dist/353.js +1 -1
  14. package/dist/353.js.map +1 -1
  15. package/dist/478.js +2 -0
  16. package/dist/478.js.LICENSE.txt +9 -0
  17. package/dist/478.js.map +1 -0
  18. package/dist/51.js +1 -0
  19. package/dist/51.js.map +1 -0
  20. package/dist/540.js +1 -1
  21. package/dist/540.js.map +1 -1
  22. package/dist/812.js +1 -0
  23. package/dist/812.js.map +1 -0
  24. package/dist/961.js +1 -1
  25. package/dist/961.js.map +1 -1
  26. package/dist/ampath-esm-reports-app.js +1 -1
  27. package/dist/ampath-esm-reports-app.js.buildmanifest.json +128 -151
  28. package/dist/ampath-esm-reports-app.js.map +1 -1
  29. package/dist/main.js +1 -1
  30. package/dist/main.js.map +1 -1
  31. package/dist/routes.json +1 -1
  32. package/package.json +2 -1
  33. package/src/common/report-filters/report-filters.component.tsx +127 -0
  34. package/src/common/report-filters/report-filters.scss +49 -0
  35. package/src/config-schema.ts +6 -37
  36. package/src/createDashboardLink.tsx +9 -0
  37. package/src/dashboard/reports-dasboard.tsx +44 -0
  38. package/src/dashboard/reports-dashboard.module.scss +14 -0
  39. package/src/dashboard-meta/reports-dashboard.meta.ts +6 -0
  40. package/src/index.ts +6 -35
  41. package/src/reports/datatable-wrapper/datatable-wrapper.component.tsx +54 -0
  42. package/src/reports/moh-240/moh-240-header.component.tsx +61 -0
  43. package/src/reports/moh-240/moh-240.component.tsx +68 -0
  44. package/src/reports/moh-240/moh-240.scss +3 -0
  45. package/src/reports/moh-240/sub-reports/moh-240-register.component.tsx +72 -0
  46. package/src/reports/moh-240/sub-reports/page-summary.component.tsx +95 -0
  47. package/src/reports/moh-505/moh-505-header.component.tsx +62 -0
  48. package/src/reports/moh-505/moh-505.component.tsx +240 -0
  49. package/src/reports/moh-505/moh-505.scss +3 -0
  50. package/src/reports/moh-705B/moh-705b.component.tsx +466 -0
  51. package/src/reports/moh-705B/moh-705b.scss +41 -0
  52. package/src/reports/moh-705a/moh-705a.component.tsx +473 -0
  53. package/src/reports/moh-705a/moh-705a.scss +41 -0
  54. package/src/reports/moh-706/moh-706-header.component.tsx +61 -0
  55. package/src/reports/moh-706/moh-706.component.tsx +104 -0
  56. package/src/reports/moh-706/moh-706.scss +30 -0
  57. package/src/reports/moh-706/sub-reports/bacteriology/bacteriology.component.tsx +124 -0
  58. package/src/reports/moh-706/sub-reports/blood-chemistry/blood-chemistry.component.tsx +318 -0
  59. package/src/reports/moh-706/sub-reports/drug-susceptibility-testing/drug-susceptibility-testing.component.tsx +137 -0
  60. package/src/reports/moh-706/sub-reports/haematology/haematology.component.tsx +179 -0
  61. package/src/reports/moh-706/sub-reports/histology-and-cytology/histology-and-cytology.component.tsx +88 -0
  62. package/src/reports/moh-706/sub-reports/parasitology/parasitology.component.tsx +121 -0
  63. package/src/reports/moh-706/sub-reports/serology/serology.component.tsx +47 -0
  64. package/src/reports/moh-706/sub-reports/specimen-referral-to-higher-levels/specimen-referral-to-higher-levels.component.tsx +39 -0
  65. package/src/reports/moh-706/sub-reports/urine-analysis/urine-analysis.component.tsx +108 -0
  66. package/src/reports/moh-710/moh-710.component.tsx +663 -0
  67. package/src/reports/moh-710/moh-710.scss +41 -0
  68. package/src/reports/moh-711/moh-711.component.tsx +121 -0
  69. package/src/reports/moh-711/moh711.scss +71 -0
  70. package/src/reports/moh-711/sections/anc.component.tsx +134 -0
  71. package/src/reports/moh-711/sections/cervical-cancer.component.tsx +104 -0
  72. package/src/reports/moh-711/sections/chanis.component.tsx +367 -0
  73. package/src/reports/moh-711/sections/family-planning.component.tsx +221 -0
  74. package/src/reports/moh-711/sections/gbv.component.tsx +115 -0
  75. package/src/reports/moh-711/sections/maternity.component.tsx +280 -0
  76. package/src/reports/moh-711/sections/medical-social-work.component.tsx +83 -0
  77. package/src/reports/moh-711/sections/other.component.tsx +47 -0
  78. package/src/reports/moh-711/sections/physiotherapy.component.tsx +61 -0
  79. package/src/reports/moh-711/sections/pnc.component.tsx +92 -0
  80. package/src/reports/moh-711/sections/post-abortion.component.tsx +42 -0
  81. package/src/reports/moh-711/sections/rehabilitation.component.tsx +57 -0
  82. package/src/reports/moh-711/sections/report-compiled-by.component.tsx +42 -0
  83. package/src/reports/moh-711/sections/tb-screening.component.tsx +57 -0
  84. package/src/reports/moh-717/moh-717.component.tsx +152 -0
  85. package/src/reports/moh-717/moh717.scss +150 -0
  86. package/src/reports/moh-717/sections/finance.component.tsx +42 -0
  87. package/src/reports/moh-717/sections/inpatient.component.tsx +374 -0
  88. package/src/reports/moh-717/sections/maternity.component.tsx +94 -0
  89. package/src/reports/moh-717/sections/medical-records.component.tsx +35 -0
  90. package/src/reports/moh-717/sections/mortuary.component.tsx +43 -0
  91. package/src/reports/moh-717/sections/operations.component.tsx +53 -0
  92. package/src/reports/moh-717/sections/orthopaedic-trauma.component.tsx +98 -0
  93. package/src/reports/moh-717/sections/outpatient.component.tsx +489 -0
  94. package/src/reports/moh-717/sections/pharmacy.component.tsx +43 -0
  95. package/src/reports/moh-717/sections/preparedby.component.tsx +47 -0
  96. package/src/reports/moh-717/sections/special-services.component.tsx +114 -0
  97. package/src/reports/moh-740/moh-740.component.scss +120 -0
  98. package/src/reports/moh-740/moh-740.component.tsx +907 -0
  99. package/src/reports/moh-740/moh-740.resource.ts +42 -0
  100. package/src/reports/moh-740/registers/moh-222-daily-register/moh-222-daily-register.tsx +6 -0
  101. package/src/reports/moh-740/registers/moh-270-permanent-register/moh-270-permanent-register.tsx +58 -0
  102. package/src/reports/moh-740/registers/moh-740-patient-list.scss +0 -0
  103. package/src/reports/moh-740/registers/moh-740-patient-list.tsx +43 -0
  104. package/src/reports/moh-740/shared/data-cell/data-cell.scss +6 -0
  105. package/src/reports/moh-740/shared/data-cell/data-cell.tsx +23 -0
  106. package/src/reports/moh-740/types/index.ts +115 -0
  107. package/src/reports/moh-745/moh-745.component.tsx +629 -0
  108. package/src/reports/moh-745/moh-745.scss +69 -0
  109. package/src/reports/table-wrapper/table-row-mapper.component.tsx +51 -0
  110. package/src/reports/table-wrapper/table-wrapper.component.tsx +21 -0
  111. package/src/reports/table-wrapper/table-wrapper.scss +31 -0
  112. package/src/resources/moh-705.resource.ts +60 -0
  113. package/src/resources/moh-706.resource.ts +86 -0
  114. package/src/resources/moh-710.resource.ts +34 -0
  115. package/src/resources/moh-711.resource.ts +34 -0
  116. package/src/resources/moh-717.resource.ts +35 -0
  117. package/src/resources/moh-745.resource.ts +34 -0
  118. package/src/root.component.tsx +30 -32
  119. package/src/routes.json +14 -17
  120. package/src/utils/get-base-url.ts +12 -0
  121. package/src/utils/utils.ts +36 -0
  122. package/dist/19.js +0 -2
  123. package/dist/19.js.LICENSE.txt +0 -39
  124. package/dist/19.js.map +0 -1
  125. package/dist/255.js +0 -1
  126. package/dist/255.js.map +0 -1
  127. package/dist/389.js +0 -1
  128. package/dist/389.js.map +0 -1
  129. package/dist/451.js +0 -1
  130. package/dist/451.js.map +0 -1
  131. package/dist/488.js +0 -1
  132. package/dist/488.js.map +0 -1
  133. package/dist/557.js +0 -1
  134. package/dist/557.js.map +0 -1
  135. package/dist/91.js +0 -1
  136. package/dist/91.js.map +0 -1
  137. package/dist/970.js +0 -1
  138. package/dist/970.js.map +0 -1
  139. package/src/boxes/extensions/blue-box.component.tsx +0 -15
  140. package/src/boxes/extensions/box.scss +0 -23
  141. package/src/boxes/extensions/brand-box.component.tsx +0 -15
  142. package/src/boxes/extensions/red-box.component.tsx +0 -15
  143. package/src/boxes/slot/boxes.component.tsx +0 -25
  144. package/src/boxes/slot/boxes.scss +0 -29
  145. package/src/greeter/greeter.component.tsx +0 -42
  146. package/src/greeter/greeter.scss +0 -20
  147. package/src/greeter/greeter.test.tsx +0 -28
  148. package/src/patient-getter/patient-getter.component.tsx +0 -40
  149. package/src/patient-getter/patient-getter.resource.ts +0 -39
  150. package/src/patient-getter/patient-getter.scss +0 -16
  151. package/src/patient-getter/patient-getter.test.tsx +0 -40
  152. package/src/resources/resources.component.tsx +0 -56
  153. package/src/resources/resources.scss +0 -68
  154. package/src/root.test.tsx +0 -51
@@ -0,0 +1,54 @@
1
+ import { DataTable, type DataTableHeader, type DataTableRow, Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@carbon/react";
2
+ import React from "react";
3
+
4
+ interface DatatableWrapperProps {
5
+ rows: Omit<DataTableRow<any[]>, "cells">[];
6
+ headers: DataTableHeader[];
7
+ subHeaders?: string[];
8
+ }
9
+
10
+ const DatatableWrapper: React.FC<DatatableWrapperProps> = ({ rows, headers, subHeaders = [] }) => {
11
+ return <DataTable rows={rows} headers={headers}>
12
+ {({
13
+ rows,
14
+ headers,
15
+ getTableProps,
16
+ getHeaderProps,
17
+ getRowProps,
18
+ getCellProps,
19
+ }) => (
20
+ <Table {...getTableProps()}>
21
+ <TableHead>
22
+ <TableRow>
23
+ {headers.map((header) => (
24
+ <TableHeader {...getHeaderProps({ header })}>
25
+ {header.header}
26
+ </TableHeader>
27
+ ))}
28
+ </TableRow>
29
+ {
30
+ (subHeaders && subHeaders.length) &&
31
+ <TableRow>
32
+ {subHeaders.map((head, i) => (
33
+ <TableHeader key={i}>
34
+ {head}
35
+ </TableHeader>
36
+ ))}
37
+ </TableRow>
38
+ }
39
+ </TableHead>
40
+ <TableBody>
41
+ {rows.map((row) => (
42
+ <TableRow {...getRowProps({ row })}>
43
+ {row.cells.map((cell) => (
44
+ <TableCell {...getCellProps({ cell })}>{cell.value}</TableCell>
45
+ ))}
46
+ </TableRow>
47
+ ))}
48
+ </TableBody>
49
+ </Table>
50
+ )}
51
+ </DataTable>
52
+ }
53
+
54
+ export default DatatableWrapper;
@@ -0,0 +1,61 @@
1
+ import React, { useMemo } from "react";
2
+ import TableWrapper from "../table-wrapper/table-wrapper.component";
3
+ import TableRowMapper from "../table-wrapper/table-row-mapper.component";
4
+ import { getCell } from "../../utils/utils";
5
+ import styles from './moh-240.scss';
6
+
7
+ const MOH240Header: React.FC = () => {
8
+ const tableRows = useMemo(() => {
9
+ return [
10
+ {
11
+ tableCells: [
12
+ getCell("", "County:", 1, 1, true),
13
+ getCell("", "", 3),
14
+ ],
15
+ },
16
+ {
17
+ tableCells: [
18
+ getCell("", "Sub-County:", 1, 1, true),
19
+ getCell("", "", 3),
20
+ ],
21
+ },
22
+ {
23
+ tableCells: [
24
+ getCell("", "Health Facility:", 1, 1, true),
25
+ getCell("", "", 3),
26
+ ],
27
+ },
28
+ {
29
+ tableCells: [
30
+ getCell("", "KMHFL Code:", 1, 1, true),
31
+ getCell("", "", 3),
32
+ ],
33
+ },
34
+ {
35
+ tableCells: [
36
+ getCell("", "Type:", 1, 1, true),
37
+ getCell("", ""),
38
+ getCell("", "Man. Agency:", 1, 1, true),
39
+ getCell("", ""),
40
+ ],
41
+ },
42
+ {
43
+ tableCells: [
44
+ getCell("", "Start date:", 1, 1, true),
45
+ getCell("", ""),
46
+ getCell("", "End date:", 1, 1, true),
47
+ getCell("", ""),
48
+ ],
49
+ },
50
+ ];
51
+ }, []);
52
+
53
+ return <div className={styles.headerSection}>
54
+ <h3>Laboratory (LAB) Register MOH 240</h3>
55
+ <TableWrapper>
56
+ <TableRowMapper tableRows={tableRows} />
57
+ </TableWrapper>
58
+ </div>
59
+ }
60
+
61
+ export default MOH240Header;
@@ -0,0 +1,68 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { useSearchParams } from "react-router-dom";
3
+ import { Loading } from '@carbon/react';
4
+ import Moh240Register from "./sub-reports/moh-240-register.component";
5
+ import Moh240PageSummary from "./sub-reports/page-summary.component";
6
+ import { getMoh706PatientList } from "../../resources/moh-706.resource";
7
+ import MOH240Header from "./moh-240-header.component";
8
+
9
+ const Moh240Report: React.FC = () => {
10
+ const [searchParams] = useSearchParams();
11
+ const [patientList, setPatientList] = useState<any[]>([]);
12
+ const [isLoading, setIsLoading] = useState<boolean>(false);
13
+ const [errorMessage, setErrorMessage] = useState<string>('');
14
+ const [indicator, setIndicator] = useState<string>('');
15
+
16
+ useEffect(() => {
17
+ const locationUuids = searchParams.get('locationUuids');
18
+ const startDate = searchParams.get('startDate');
19
+ const endDate = searchParams.get('endDate');
20
+ const indicators = searchParams.get('indicators');
21
+
22
+ if (locationUuids && startDate && endDate && indicators) {
23
+ setIndicator(indicators);
24
+ fetchPatientList({ locationUuids, startDate, endDate, indicators });
25
+ }
26
+ }, [searchParams]);
27
+
28
+ const fetchPatientList = async (params: { locationUuids: string; startDate: string; endDate: string; indicators: string }) => {
29
+ setIsLoading(true);
30
+ setErrorMessage('');
31
+ try {
32
+ const result = await getMoh706PatientList(params);
33
+ setPatientList(result);
34
+ } catch (error: any) {
35
+ setErrorMessage(error instanceof Error ? error.message : String(error));
36
+ } finally {
37
+ setIsLoading(false);
38
+ }
39
+ };
40
+
41
+ return (
42
+ <>
43
+ {isLoading && <Loading description="Fetching patient list...." />}
44
+ {!isLoading && errorMessage && (
45
+ <div>
46
+ <a href="#" className="close" data-dismiss="alert">
47
+ &times;
48
+ </a>
49
+ <h4>
50
+ <strong>
51
+ <span className="glyphicon glyphicon-warning-sign"></span>{' '}
52
+ </strong>{' '}
53
+ An error occurred while trying to load the patient list. Please try again.
54
+ </h4>
55
+ <p>
56
+ <small>{errorMessage}</small>
57
+ </p>
58
+ </div>
59
+ )}
60
+
61
+ <MOH240Header />
62
+ <Moh240Register patientList={patientList} indicator={indicator} />
63
+ <Moh240PageSummary />
64
+ </>
65
+ );
66
+ }
67
+
68
+ export default Moh240Report;
@@ -0,0 +1,3 @@
1
+ .headerSection {
2
+ padding: 15px;
3
+ }
@@ -0,0 +1,72 @@
1
+ import React from "react";
2
+ import DatatableWrapper from "../../datatable-wrapper/datatable-wrapper.component";
3
+
4
+ interface Moh240RegisterProps {
5
+ patientList?: any[];
6
+ indicator?: string;
7
+ }
8
+
9
+ const Moh240Register: React.FC<Moh240RegisterProps> = ({ patientList = [], indicator = '' }) => {
10
+ const headers = [
11
+ { key: 'date', header: 'Date (DD/MM/YYYY)' },
12
+ { key: 'opd_ip_ref_no', header: 'OPD / IPD Ref. No.' },
13
+ { key: 'lab_no', header: 'Lab. No. (new client)' },
14
+ { key: 'revisit_no', header: 'Revisit No.' },
15
+ { key: 'full_name', header: 'Full Names (Three names)' },
16
+ { key: 'age', header: 'Age' },
17
+ { key: 'sex', header: 'Sex' },
18
+ { key: 'county_sub_county', header: 'County / Sub County' },
19
+ { key: 'village_estate_landmark', header: 'Village / Estate / Landmark' },
20
+ { key: 'telephone_number', header: 'Telephone Number' },
21
+ { key: 'clinical_diagnosis', header: 'Clinical Diagnosis' },
22
+ { key: 'prior_treatment', header: 'Prior Treatment' },
23
+ { key: 'type_of_specimen', header: 'Type of Specimen' },
24
+ { key: 'condition_of_specimen', header: 'Condition of Specimen' },
25
+ { key: 'investigation_required', header: 'Investigation Required' },
26
+ { key: 'test_datetime', header: 'Date Sample Collected' },
27
+ { key: 'date_sample_received', header: 'Date Sample Received' },
28
+ { key: 'clinician_name', header: 'Clinician Name' },
29
+ { key: 'date_sample_analysed', header: 'Date Sample Analysed' },
30
+ { key: 'results', header: 'Results' },
31
+ { key: 'date_results_dispatched', header: 'Date Results Dispatched' },
32
+ { key: 'amount_charged', header: 'Amount Charged' },
33
+ { key: 'receipt_number', header: 'Receipt Number' },
34
+ { key: 'referrals', header: 'Referrals (From Other HF / To Other HF / 3rd Tier Reference Laboratories)' },
35
+ { key: 'comments', header: 'Comments' },
36
+ { key: 'testing_officer', header: 'Name of Analysing/Testing Officer' },
37
+ { key: 'signature', header: 'Signature' }
38
+ ];
39
+
40
+ const getResultField = (ind: string) => {
41
+ if (ind.startsWith('min_') || ind.startsWith('max_')) {
42
+ return ind.substring(4);
43
+ }
44
+ if (ind.startsWith('total_')) {
45
+ return ind.substring(6);
46
+ }
47
+ if (ind.startsWith('positive_')) {
48
+ return ind.substring(9);
49
+ }
50
+ return ind;
51
+ };
52
+
53
+ const resultField = getResultField(indicator);
54
+
55
+ const subHeaders = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z', 'AA'];
56
+
57
+ const rows = patientList.map(patient => {
58
+ const row: any = {};
59
+ headers.forEach(header => {
60
+ if (header.key === 'results') {
61
+ row[header.key] = patient[resultField] || '';
62
+ } else {
63
+ row[header.key] = patient[header.key] || '';
64
+ }
65
+ });
66
+ return row;
67
+ });
68
+
69
+ return <DatatableWrapper headers={headers} rows={rows} subHeaders={subHeaders}/>
70
+ }
71
+
72
+ export default Moh240Register;
@@ -0,0 +1,95 @@
1
+ import React, { useMemo } from "react";
2
+ import TableWrapper from "../../table-wrapper/table-wrapper.component";
3
+ import TableRowMapper from "../../table-wrapper/table-row-mapper.component";
4
+ import { getCell } from "../../../utils/utils";
5
+
6
+ const Moh240PageSummary: React.FC = () => {
7
+ const tableRows = useMemo(() => {
8
+ return [
9
+ {
10
+ tableCells: [
11
+ getCell("", "Page Summary", 8, 1, true),
12
+ ]
13
+ },
14
+ {
15
+ tableCells: [
16
+ getCell("", "Malaria Testing", 3, 1, true),
17
+ getCell("", "Type of test", 2, 1, true),
18
+ getCell("", "Referrals", 3, 1, true),
19
+ ]
20
+ },
21
+ {
22
+ tableCells: [
23
+ getCell("", "", 1, 2, true),
24
+ getCell("", "Number", 2, 1, true),
25
+ getCell("", "", 1, 2, true),
26
+ getCell("", "Number", 1, 2, true),
27
+ getCell("", "", 1, 1, true),
28
+ getCell("", "Number", 2, 1, true),
29
+ ]
30
+ },
31
+ {
32
+ tableCells: [
33
+ ,
34
+ getCell("", "OPD", 1, 1, true),
35
+ getCell("", "IP", 1, 1, true),
36
+ ,
37
+ ,
38
+ getCell(),
39
+ getCell("", "Routine", 1, 1, true),
40
+ getCell("", "Specialized", 1, 1, true),
41
+ ]
42
+ },
43
+ {
44
+ tableCells: [
45
+ getCell("", "Malaria BS (Under five years)"),
46
+ getCell(),
47
+ getCell(),
48
+ getCell("", "No. of Routine tests", 1, 2),
49
+ getCell("", "", 1, 2),
50
+ getCell("", "From Other HF"),
51
+ getCell(),
52
+ getCell()
53
+ ]
54
+ },
55
+ {
56
+ tableCells: [
57
+ getCell("", "Malaria BS (5 years and above)"),
58
+ getCell(),
59
+ getCell(),
60
+ ,
61
+ ,
62
+ getCell("", "To Other HF"),
63
+ getCell(),
64
+ getCell(),
65
+ ]
66
+ },
67
+ {
68
+ tableCells: [
69
+ getCell("", "Malaria Rapid Diagnostic Tests (Under five years)"),
70
+ getCell(),
71
+ getCell(),
72
+ getCell("", "No. of Special tests", 1, 2),
73
+ getCell("", "", 1, 2),
74
+ getCell("", "To Reference Laboratories", 1, 2),
75
+ getCell("", "", 1, 2),
76
+ getCell("", "", 1, 2)
77
+ ]
78
+ },
79
+ {
80
+ tableCells: [
81
+ getCell("", "Malaria Rapid Diagnostic Tests (5 years and above)"),
82
+ getCell(),
83
+ getCell()
84
+ ]
85
+ },
86
+ ]
87
+ }, []);
88
+
89
+
90
+ return <TableWrapper>
91
+ <TableRowMapper tableRows={tableRows} />
92
+ </TableWrapper>
93
+ }
94
+
95
+ export default Moh240PageSummary;
@@ -0,0 +1,62 @@
1
+ import React, { useMemo } from "react";
2
+ import TableWrapper from "../table-wrapper/table-wrapper.component";
3
+ import TableRowMapper from "../table-wrapper/table-row-mapper.component";
4
+ import { getCell } from "../../utils/utils";
5
+ import styles from './moh-505.scss';
6
+
7
+ const MOH505Header: React.FC = () => {
8
+ const tableRows = useMemo(() => {
9
+ return [
10
+ {
11
+ tableCells: [
12
+ getCell("", "County:", 1, 1, true),
13
+ getCell("", "", 3),
14
+ ],
15
+ },
16
+ {
17
+ tableCells: [
18
+ getCell("", "Sub-County:", 1, 1, true),
19
+ getCell("", "", 3),
20
+ ],
21
+ },
22
+ {
23
+ tableCells: [
24
+ getCell("", "Health Facility:", 1, 1, true),
25
+ getCell("", "", 3),
26
+ ],
27
+ },
28
+ {
29
+ tableCells: [
30
+ getCell("", "KMHFL code:", 1, 1, true),
31
+ getCell("", "", 3),
32
+ ],
33
+ },
34
+ {
35
+ tableCells: [
36
+ getCell("", "Facility Type:", 1, 1, true),
37
+ getCell("", ""),
38
+ getCell("", "Man. Agency:", 1, 1, true),
39
+ getCell("", ""),
40
+ ],
41
+ },
42
+ {
43
+ tableCells: [
44
+ getCell("", "Start date:", 1, 1, true),
45
+ getCell("", ""),
46
+ getCell("", "End date:", 1, 1, true),
47
+ getCell("", ""),
48
+ ],
49
+ },
50
+ ];
51
+ }, []);
52
+
53
+ return <div className={styles.headerSection}>
54
+ <h3>MOH 505 IDSR</h3>
55
+ <h3>Weekly Epidemic Monitoring Form</h3>
56
+ <TableWrapper>
57
+ <TableRowMapper tableRows={tableRows} />
58
+ </TableWrapper>
59
+ </div>
60
+ }
61
+
62
+ export default MOH505Header;
@@ -0,0 +1,240 @@
1
+ import React, { useMemo } from "react";
2
+ import TableWrapper from "../table-wrapper/table-wrapper.component";
3
+ import TableRowMapper from "../table-wrapper/table-row-mapper.component";
4
+ import { getCell } from "../../utils/utils";
5
+ import ReportFiltersComponent from "../../common/report-filters/report-filters.component";
6
+ import MOH505Header from "./moh-505-header.component";
7
+
8
+ const Moh505Report: React.FC = () => {
9
+ const tableRows = useMemo(() => {
10
+ return [
11
+ {
12
+ tableCells: [
13
+ getCell("", "Diseases, Conditions or Events", 1, 2, true),
14
+ getCell("", "< 5 years", 2, 1, true),
15
+ getCell("", "≥ 5 years", 6, 1, true),
16
+ getCell("", "Diseases, Conditions or Events", 1, 2, true),
17
+ getCell("", "< 5 years", 2, 1, true),
18
+ getCell("", "≥ 5 years", 2, 1, true),
19
+ ]
20
+ },
21
+ {
22
+ tableCells: [
23
+ ,
24
+ getCell("", "Cases", 1, 1, true),
25
+ getCell("", "Deaths", 1, 1, true),
26
+ getCell("", "Cases", 1, 1, true),
27
+ getCell("", "Deaths", 5, 1, true),
28
+ ,
29
+ getCell("", "Cases", 1, 1, true),
30
+ getCell("", "Deaths", 1, 1, true),
31
+ getCell("", "Cases", 1, 1, true),
32
+ getCell("", "Deaths", 1, 1, true),
33
+ ]
34
+ },
35
+ {
36
+ tableCells: [
37
+ getCell("", "AEFI*"), getCell(), getCell(), getCell(),
38
+ getCell("", "", 5),
39
+ getCell("", "Meningococcal Meningitis"), getCell(), getCell(), getCell(), getCell()
40
+ ]
41
+ },
42
+ {
43
+ tableCells: [
44
+ getCell("", "Acute Jaundice"), getCell(), getCell(), getCell(),
45
+ getCell("", "", 5),
46
+ getCell("", "Neonatal deaths"), getCell(), getCell(), getCell("", "", 2, 2)
47
+ ]
48
+ },
49
+ {
50
+ tableCells: [
51
+ getCell("", "Acute Malnutrition"), getCell(), getCell(), getCell(),
52
+ getCell("", "", 5),
53
+ getCell("", "Neonatal Tetanus"), getCell(), getCell()
54
+ ]
55
+ },
56
+ {
57
+ tableCells: [
58
+ getCell("", "AFP (Poliomyelitis)**"), getCell(), getCell(), getCell(),
59
+ getCell("", "", 5),
60
+ getCell("", "Plague"), getCell(), getCell(), getCell(), getCell()
61
+ ]
62
+ },
63
+ {
64
+ tableCells: [
65
+ getCell("", "Anthrax"), getCell(), getCell(), getCell(),
66
+ getCell("", "", 5),
67
+ getCell("", "Rabies"), getCell(), getCell(), getCell(), getCell()
68
+ ]
69
+ },
70
+ {
71
+ tableCells: [
72
+ getCell("", "Cholera"), getCell(), getCell(), getCell(),
73
+ getCell("", "", 5),
74
+ getCell("", "Rift Valley Fever"), getCell(), getCell(), getCell(), getCell()
75
+ ]
76
+ },
77
+ {
78
+ tableCells: [
79
+ getCell("", "Dengue"), getCell(), getCell(), getCell(),
80
+ getCell("", "", 5),
81
+ getCell("", "SARI (Cluster ≥3 cases)*****"), getCell(), getCell(), getCell(), getCell()
82
+ ]
83
+ },
84
+ {
85
+ tableCells: [
86
+ getCell("", "Dysentery (Bacillary)"), getCell(), getCell(), getCell(),
87
+ getCell("", "", 5),
88
+ getCell("", "Suspected MDR/XDR TB"), getCell(), getCell(), getCell(), getCell()
89
+ ]
90
+ },
91
+ {
92
+ tableCells: [
93
+ getCell("", "Guinea Worm Disease"), getCell(), getCell(), getCell(),
94
+ getCell("", "", 5),
95
+ getCell("", "Typhoid"), getCell(), getCell(), getCell(), getCell()
96
+ ]
97
+ },
98
+ {
99
+ tableCells: [
100
+ getCell("", "Measles"), getCell(), getCell(), getCell(),
101
+ getCell("", "", 5),
102
+ getCell("", "VHF******", 1, 2), getCell("", "", 1, 2), getCell("", "", 1, 2), getCell("", "", 1, 2), getCell("", "", 1, 2)
103
+ ]
104
+ },
105
+ {
106
+ tableCells: [
107
+ getCell("", "Suspected Malaria***"), getCell(), getCell(), getCell(),
108
+ getCell("", "", 5)
109
+ ]
110
+ },
111
+ {
112
+ tableCells: [
113
+ getCell("", "Deaths due to Malaria****", 1, 2), getCell("", "", 1, 2), getCell("", "", 1, 2), getCell("", "", 1, 2),
114
+ getCell("", "", 5, 2),
115
+ getCell("", "Yellow Fever", 1, 2), getCell("", "", 1, 2), getCell("", "", 1, 2), getCell("", "", 1, 2), getCell("", "", 1, 2)
116
+ ]
117
+ },
118
+ {
119
+ tableCells: [
120
+ ,
121
+ ]
122
+ },
123
+ {
124
+ tableCells: [
125
+ getCell("", "Maternal deaths"), getCell(), getCell(), getCell(),
126
+ getCell("", "", 5),
127
+ getCell("", "Others (Specify)*******"), getCell(), getCell(), getCell(), getCell()
128
+ ]
129
+ },
130
+ {
131
+ tableCells: [
132
+ getCell("", "", 14)
133
+ ]
134
+ },
135
+ {
136
+ tableCells: [
137
+ getCell("", "Disease", 1, 1, true), getCell("", "Microscopy", 3, 1, true),
138
+ getCell("", "mRDT", 5, 1, true),
139
+ getCell("", "Disease", 2, 1, true), getCell("", "Laboratory diagnosis", 3, 1, true),
140
+ ]
141
+ },
142
+ {
143
+ tableCells: [
144
+ getCell("", "Malaria", 1, 1, true), getCell("", "<5 yrs"), getCell("", "≥5 yrs"), getCell("", "Total"),
145
+ getCell("", "<5 yrs", 2), getCell("", "≥5 yrs", 3),
146
+ getCell("", "Shigella Dysentery", 2, 1, true),
147
+ getCell("", "<5 yrs", 2), getCell("", "≥5 yrs", 1),
148
+ ]
149
+ },
150
+ {
151
+ tableCells: [
152
+ getCell("", "Tested"), getCell(), getCell(), getCell(),
153
+ getCell("", "", 2), getCell("", "", 3),
154
+ getCell("", "Tested", 2), getCell("", "", 2), getCell("", "", 1)
155
+ ]
156
+ },
157
+ {
158
+ tableCells: [
159
+ getCell("", "Positive"), getCell(), getCell(), getCell(),
160
+ getCell("", "", 2), getCell("", "", 3),
161
+ getCell("", "Positive", 2), getCell("", "", 2), getCell("", "", 1)
162
+ ]
163
+ },
164
+ {
165
+ tableCells: [
166
+ getCell("", "Bacterial Meningitis", 1, 2, true), getCell("", "No CSF", 1, 2, true),
167
+ getCell("", "No contaminated", 1, 2, true), getCell("", "No Tested", 1, 2, true), getCell("", "+ve Nm", 1, 2, true),
168
+ getCell("", "+ve Sp", 1, 2, true), getCell("", "+ve H influenza", 3, 2, true), getCell("", "Tuberculosis (MDR/XDR)", 2, 2, true),
169
+ getCell("", "<5 yrs", 2, 2,), getCell("", "≥5 yrs", 1, 2,)
170
+ ]
171
+ },
172
+ {
173
+ tableCells: [
174
+ ,
175
+ ]
176
+ },
177
+ {
178
+ tableCells: [
179
+ getCell("", "", 1, 2), getCell("", "", 1, 2),
180
+ getCell("", "", 1, 2), getCell("", "", 1, 2), getCell("", "", 1, 2), getCell("", "", 1, 2),
181
+ getCell("", "", 1, 2), getCell("", "", 2, 2), getCell("", "Tested", 2), getCell("", "", 2), getCell()
182
+ ]
183
+ },
184
+ {
185
+ tableCells: [
186
+ , , , , , , , , getCell("", "Positive", 2), getCell("", "", 2), getCell()
187
+ ]
188
+ },
189
+ {
190
+ tableCells: [
191
+ getCell("", "No of CSF Sub-Typed", 1, 2, true),
192
+ getCell("", "+ve NmA", 1, 2, true),
193
+ getCell("", "+ve NmB", 1, 2, true),
194
+ getCell("", "+ve NmC", 1, 2, true),
195
+ getCell("", "+ve NmW 135", 1, 2, true),
196
+ getCell("", "+ve NmX", 1, 2, true),
197
+ getCell("", "+ve NmY", 1, 2, true),
198
+ getCell("", "Indeterminate", 1, 2, true),
199
+ getCell("", "Hib", 1, 2, true),
200
+ getCell("", "Typhoid", 2, 2, true),
201
+ getCell("", "< 5 years", 2, 2),
202
+ getCell("", "≥ 5 years", 1, 2)
203
+ ]
204
+ },
205
+ {
206
+ tableCells: [
207
+ ,
208
+ ]
209
+ },
210
+ {
211
+ tableCells: [
212
+ getCell("", "", 1, 2), getCell("", "", 1, 2),
213
+ getCell("", "", 1, 2), getCell("", "", 1, 2), getCell("", "", 1, 2), getCell("", "", 1, 2),
214
+ getCell("", "", 1, 2), getCell("", "", 1, 2), getCell("", "", 1, 2), getCell("", "Tested", 2), getCell("", "", 2), getCell("", "", 1)
215
+ ]
216
+ },
217
+ {
218
+ tableCells: [
219
+ , , , , , , , , , getCell("", "Positive", 2, 1,), getCell("", "", 2, 1), getCell("", "", 1, 1)
220
+ ]
221
+ },
222
+ {
223
+ tableCells: [
224
+ ,
225
+ ]
226
+ }
227
+ ]
228
+ }, []);
229
+
230
+
231
+ return <>
232
+ <ReportFiltersComponent reportName="MOH-505 Report" mode="monthly" />
233
+ <MOH505Header />
234
+ <TableWrapper>
235
+ <TableRowMapper tableRows={tableRows} />
236
+ </TableWrapper>
237
+ </>
238
+ }
239
+
240
+ export default Moh505Report;
@@ -0,0 +1,3 @@
1
+ .headerSection {
2
+ padding: 15px;
3
+ }