@ampath/esm-reports-app 1.0.0-next.7 → 1.0.0-next.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/dist/197.js +1 -1
  2. package/dist/282.js +1 -1
  3. package/dist/282.js.map +1 -1
  4. package/dist/295.css +1 -0
  5. package/dist/295.css.map +1 -0
  6. package/dist/295.js +1 -0
  7. package/dist/295.js.map +1 -0
  8. package/dist/299.js +2 -0
  9. package/dist/299.js.LICENSE.txt +3 -0
  10. package/dist/299.js.map +1 -0
  11. package/dist/300.js +1 -1
  12. package/dist/311.js +1 -1
  13. package/dist/311.js.map +1 -1
  14. package/dist/335.js +1 -1
  15. package/dist/353.js +1 -1
  16. package/dist/353.js.map +1 -1
  17. package/dist/354.js +2 -0
  18. package/dist/354.js.LICENSE.txt +20 -0
  19. package/dist/354.js.map +1 -0
  20. package/dist/410.js +1 -0
  21. package/dist/410.js.map +1 -0
  22. package/dist/457.js +2 -0
  23. package/dist/457.js.LICENSE.txt +261 -0
  24. package/dist/457.js.map +1 -0
  25. package/dist/478.js +1 -1
  26. package/dist/478.js.map +1 -1
  27. package/dist/480.js +1 -0
  28. package/dist/540.js +1 -1
  29. package/dist/540.js.map +1 -1
  30. package/dist/55.js +1 -1
  31. package/dist/580.js +1 -0
  32. package/dist/580.js.map +1 -0
  33. package/dist/600.js +2 -0
  34. package/dist/600.js.LICENSE.txt +35 -0
  35. package/dist/600.js.map +1 -0
  36. package/dist/652.js +1 -1
  37. package/dist/781.js +1 -0
  38. package/dist/781.js.map +1 -0
  39. package/dist/919.css +1 -0
  40. package/dist/919.css.map +1 -0
  41. package/dist/919.js +1 -0
  42. package/dist/919.js.map +1 -0
  43. package/dist/961.js +1 -1
  44. package/dist/961.js.map +1 -1
  45. package/dist/99.js +1 -1
  46. package/dist/99.js.map +1 -0
  47. package/dist/ampath-esm-reports-app.js +1 -1
  48. package/dist/ampath-esm-reports-app.js.map +1 -1
  49. package/dist/routes.json +1 -1
  50. package/package.json +4 -2
  51. package/src/common/daily-summary-table.tsx +55 -0
  52. package/src/common/linelist-table/index.ts +3 -0
  53. package/src/common/linelist-table/linelist-columns.ts +48 -0
  54. package/src/common/linelist-table/linelist-table.component.tsx +442 -0
  55. package/src/common/linelist-table/linelist-table.scss +306 -0
  56. package/src/common/linelist-table/linelist-table.test.tsx +120 -0
  57. package/src/common/linelist-table/use-all-rows.ts +93 -0
  58. package/src/common/linelist-table/use-column-layout.ts +123 -0
  59. package/src/common/report-error/index.ts +1 -0
  60. package/src/common/report-error/show-report-error.ts +25 -0
  61. package/src/common/report-filters/date-range.ts +137 -0
  62. package/src/common/report-filters/index.ts +4 -0
  63. package/src/common/report-filters/report-filters.component.tsx +317 -99
  64. package/src/common/report-filters/report-filters.scss +255 -32
  65. package/src/common/report-filters/types.ts +79 -0
  66. package/src/common/report-filters/use-restore-period.ts +43 -0
  67. package/src/common/report-header/index.ts +1 -0
  68. package/src/common/report-header/use-location-details.ts +58 -0
  69. package/src/common/report-page/download-sheet-pdf.ts +59 -0
  70. package/src/common/report-page/index.ts +3 -0
  71. package/src/common/report-page/report-page.component.tsx +32 -0
  72. package/src/common/report-page/report-page.scss +45 -0
  73. package/src/common/report-page/use-page-scale.ts +60 -0
  74. package/src/common/report-placeholder/has-report-data.ts +15 -0
  75. package/src/common/report-placeholder/index.ts +3 -0
  76. package/src/common/report-placeholder/report-placeholder.component.tsx +81 -0
  77. package/src/common/report-placeholder/report-placeholder.scss +48 -0
  78. package/src/common/report-placeholder/use-generated-location.ts +62 -0
  79. package/src/common/report-register/index.ts +6 -0
  80. package/src/common/report-register/register-columns.ts +46 -0
  81. package/src/common/report-register/register-layout.component.tsx +265 -0
  82. package/src/common/report-register/register-layout.scss +150 -0
  83. package/src/common/report-register/register-table.scss +71 -0
  84. package/src/common/report-register/report-parents.ts +27 -0
  85. package/src/common/report-register/rows-to-csv.ts +89 -0
  86. package/src/common/report-register/use-location-name.ts +54 -0
  87. package/src/common/report-register/use-patient-list.ts +92 -0
  88. package/src/common/report-skeleton/index.ts +1 -0
  89. package/src/common/report-skeleton/report-skeleton.component.tsx +46 -0
  90. package/src/common/report-skeleton/report-skeleton.scss +29 -0
  91. package/src/config-schema.ts +9 -1
  92. package/src/dashboard/report-catalog.ts +173 -0
  93. package/src/dashboard/reports-dasboard.tsx +189 -18
  94. package/src/dashboard/reports-dashboard.module.scss +357 -14
  95. package/src/index.ts +13 -1
  96. package/src/registers/moh-240/moh-240-register.scss +41 -0
  97. package/src/registers/moh-240/moh-240.component.test.tsx +166 -0
  98. package/src/registers/moh-240/moh-240.component.tsx +164 -0
  99. package/src/registers/moh-362/moh-362-lab-register.component.tsx +392 -0
  100. package/src/registers/moh-362/moh-362-linkage-register.component.tsx +120 -0
  101. package/src/registers/moh-362/moh-362-register.scss +222 -0
  102. package/src/registers/moh-362/moh-362.component.tsx +99 -0
  103. package/src/registers/moh-362/moh-362.scss +11 -0
  104. package/src/registers/moh-362/moh-362.types.ts +97 -0
  105. package/src/registers/register-catalog.ts +96 -0
  106. package/src/registers/tb-lab-register/tb-lab-register-table.component.tsx +116 -0
  107. package/src/registers/tb-lab-register/tb-lab-register-table.scss +123 -0
  108. package/src/registers/tb-lab-register/tb-lab-register.columns.ts +164 -0
  109. package/src/registers/tb-lab-register/tb-lab-register.component.test.tsx +232 -0
  110. package/src/registers/tb-lab-register/tb-lab-register.component.tsx +153 -0
  111. package/src/reports/datatable-wrapper/datatable-wrapper.component.tsx +63 -48
  112. package/src/reports/moh-240/moh-240-header.component.tsx +62 -0
  113. package/src/reports/moh-240/moh-240.columns.ts +113 -0
  114. package/src/reports/moh-240/moh-240.component.tsx +72 -9
  115. package/src/reports/moh-240/moh-240.scss +40 -0
  116. package/src/reports/moh-240/sub-reports/moh-240-register.component.tsx +31 -37
  117. package/src/reports/moh-240/sub-reports/page-summary.component.tsx +143 -106
  118. package/src/reports/moh-505/moh-505-header.component.tsx +67 -0
  119. package/src/reports/moh-505/moh-505.component.tsx +441 -0
  120. package/src/reports/moh-505/moh-505.scss +117 -0
  121. package/src/reports/moh-705B/moh-204b-register.component.tsx +244 -0
  122. package/src/reports/moh-705B/moh-204b.columns.ts +39 -0
  123. package/src/reports/moh-705B/moh-705b.component.tsx +659 -0
  124. package/src/reports/moh-705B/moh-705b.scss +172 -0
  125. package/src/reports/moh-705a/moh-705a.component.tsx +661 -0
  126. package/src/reports/moh-705a/moh-705a.scss +172 -0
  127. package/src/reports/moh-705a/registers/moh-204a-register.component.tsx +329 -0
  128. package/src/reports/moh-705a/registers/moh-204a.columns.ts +57 -0
  129. package/src/reports/moh-705a/type.ts +6 -0
  130. package/src/reports/moh-706/moh-706-header.component.tsx +66 -0
  131. package/src/reports/moh-706/moh-706.component.tsx +150 -24
  132. package/src/reports/moh-706/moh-706.scss +119 -11
  133. package/src/reports/moh-706/sub-reports/bacteriology/bacteriology.component.tsx +54 -62
  134. package/src/reports/moh-706/sub-reports/blood-chemistry/blood-chemistry.component.tsx +228 -317
  135. package/src/reports/moh-706/sub-reports/drug-susceptibility-testing/drug-susceptibility-testing.component.tsx +31 -46
  136. package/src/reports/moh-706/sub-reports/haematology/haematology.component.tsx +47 -55
  137. package/src/reports/moh-706/sub-reports/histology-and-cytology/histology-and-cytology.component.tsx +43 -58
  138. package/src/reports/moh-706/sub-reports/parasitology/parasitology.component.tsx +31 -39
  139. package/src/reports/moh-706/sub-reports/serology/serology.component.tsx +26 -34
  140. package/src/reports/moh-706/sub-reports/specimen-referral-to-higher-levels/specimen-referral-to-higher-levels.component.tsx +9 -24
  141. package/src/reports/moh-706/sub-reports/urine-analysis/urine-analysis.component.tsx +43 -51
  142. package/src/reports/moh-710/moh-710.component.tsx +799 -632
  143. package/src/reports/moh-710/moh-710.scss +142 -21
  144. package/src/reports/moh-710/registers/moh-510/moh-510.columns.ts +40 -0
  145. package/src/reports/moh-710/registers/moh-510/moh-510.component.tsx +144 -0
  146. package/src/reports/moh-710/registers/moh-510/moh-510.scss +130 -0
  147. package/src/reports/moh-710/registers/moh-511-710-register.component.tsx +268 -0
  148. package/src/reports/moh-710/registers/moh-511-710.columns.ts +52 -0
  149. package/src/reports/moh-710/registers/type.ts +31 -0
  150. package/src/reports/moh-711/moh-711.component.tsx +138 -1269
  151. package/src/reports/moh-711/moh711.scss +135 -20
  152. package/src/reports/moh-711/registers/moh-333-register.component.tsx +637 -0
  153. package/src/reports/moh-711/registers/moh-333.columns.ts +119 -0
  154. package/src/reports/moh-711/registers/moh-405-register.component.tsx +520 -0
  155. package/src/reports/moh-711/registers/moh-405.columns.ts +120 -0
  156. package/src/reports/moh-711/registers/moh-406-register.component.tsx +530 -0
  157. package/src/reports/moh-711/registers/moh-406.columns.ts +133 -0
  158. package/src/reports/moh-711/registers/moh-510-register.component.tsx +55 -0
  159. package/src/reports/moh-711/registers/moh-511-register.component.tsx +270 -0
  160. package/src/reports/moh-711/registers/moh-511.columns.ts +59 -0
  161. package/src/reports/moh-711/registers/type.ts +192 -0
  162. package/src/reports/moh-711/sections/anc.component.tsx +159 -0
  163. package/src/reports/moh-711/sections/cervical-cancer.component.tsx +148 -0
  164. package/src/reports/moh-711/sections/chanis.component.tsx +366 -0
  165. package/src/reports/moh-711/sections/family-planning.component.tsx +221 -0
  166. package/src/reports/moh-711/sections/gbv.component.tsx +115 -0
  167. package/src/reports/moh-711/sections/maternity.component.tsx +321 -0
  168. package/src/reports/moh-711/sections/medical-social-work.component.tsx +73 -0
  169. package/src/reports/moh-711/sections/other.component.tsx +47 -0
  170. package/src/reports/moh-711/sections/physiotherapy.component.tsx +61 -0
  171. package/src/reports/moh-711/sections/pnc.component.tsx +127 -0
  172. package/src/reports/moh-711/sections/post-abortion.component.tsx +42 -0
  173. package/src/reports/moh-711/sections/rehabilitation.component.tsx +57 -0
  174. package/src/reports/moh-711/sections/report-compiled-by.component.tsx +50 -0
  175. package/src/reports/moh-711/sections/tb-screening.component.tsx +57 -0
  176. package/src/reports/moh-717/moh-717.component.tsx +149 -985
  177. package/src/reports/moh-717/moh717.scss +217 -21
  178. package/src/reports/moh-717/registers/nutrition-register.component.tsx +48 -0
  179. package/src/reports/moh-717/sections/finance.component.tsx +42 -0
  180. package/src/reports/moh-717/sections/inpatient.component.tsx +374 -0
  181. package/src/reports/moh-717/sections/maternity.component.tsx +126 -0
  182. package/src/reports/moh-717/sections/medical-records.component.tsx +35 -0
  183. package/src/reports/moh-717/sections/mortuary.component.tsx +43 -0
  184. package/src/reports/moh-717/sections/operations.component.tsx +53 -0
  185. package/src/reports/moh-717/sections/orthopaedic-trauma.component.tsx +98 -0
  186. package/src/reports/moh-717/sections/outpatient.component.tsx +597 -0
  187. package/src/reports/moh-717/sections/pharmacy.component.tsx +43 -0
  188. package/src/reports/moh-717/sections/preparedby.component.tsx +52 -0
  189. package/src/reports/moh-717/sections/special-services.component.tsx +114 -0
  190. package/src/reports/moh-731/linelist/moh-731-indicators.ts +1122 -0
  191. package/src/reports/moh-731/linelist/moh-731-linelist-sections.ts +472 -0
  192. package/src/reports/moh-731/linelist/moh-731-linelist.component.tsx +102 -0
  193. package/src/reports/moh-731/linelist/use-open-moh-731-linelist.ts +50 -0
  194. package/src/reports/moh-731/moh-731.component.tsx +266 -0
  195. package/src/reports/moh-731/moh-731.scss +499 -0
  196. package/src/reports/moh-731/registers/moh-366.columns.ts +38 -0
  197. package/src/reports/moh-731/registers/moh-366.component.tsx +471 -0
  198. package/src/reports/moh-731/registers/prep-register.component.tsx +284 -0
  199. package/src/reports/moh-731/registers/prep.columns.ts +34 -0
  200. package/src/reports/moh-731/sections/hiv-and-tb-treatment.component.tsx +1206 -0
  201. package/src/reports/moh-731/sections/hiv-testing-and-pre-exposure.component.tsx +727 -0
  202. package/src/reports/moh-731/sections/pmtct.component.tsx +572 -0
  203. package/src/reports/moh-731/summary/moh-731-summary.component.tsx +313 -0
  204. package/src/reports/moh-731/summary/moh-731-summary.config.ts +529 -0
  205. package/src/reports/moh-731/summary/moh-731-summary.scss +242 -0
  206. package/src/reports/moh-740/moh-740.component.scss +202 -0
  207. package/src/reports/moh-740/moh-740.component.tsx +1332 -0
  208. package/src/reports/moh-740/moh-740.resource.ts +54 -0
  209. package/src/reports/moh-740/registers/moh-222-daily-register/moh-222-daily-register.tsx +149 -0
  210. package/src/reports/moh-740/registers/moh-270-permanent-register/moh-270-permanent-register.tsx +123 -0
  211. package/src/reports/moh-740/registers/moh-740-patient-list.scss +0 -0
  212. package/src/reports/moh-740/registers/moh-740-patient-list.tsx +60 -0
  213. package/src/reports/moh-740/registers/moh-740.columns.ts +54 -0
  214. package/src/reports/moh-740/shared/data-cell/data-cell.scss +6 -0
  215. package/src/reports/moh-740/shared/data-cell/data-cell.tsx +23 -0
  216. package/src/reports/moh-740/shared/utils/indicator-register-map.ts +159 -0
  217. package/src/reports/moh-740/types/index.ts +223 -0
  218. package/src/reports/moh-745/moh-745.component.tsx +1021 -0
  219. package/src/reports/moh-745/moh-745.scss +132 -0
  220. package/src/reports/moh-745/registers/moh-412-register.component.tsx +249 -0
  221. package/src/reports/moh-745/registers/moh-412.columns.ts +52 -0
  222. package/src/reports/moh-745/registers/type.ts +181 -0
  223. package/src/reports/table-wrapper/table-row-mapper.component.tsx +57 -0
  224. package/src/reports/table-wrapper/table-wrapper.component.tsx +23 -14
  225. package/src/reports/table-wrapper/table-wrapper.scss +1 -16
  226. package/src/resources/moh-362.resource.ts +27 -0
  227. package/src/resources/moh-505.resource.ts +69 -0
  228. package/src/resources/moh-705.resource.ts +106 -0
  229. package/src/resources/moh-706.resource.ts +80 -0
  230. package/src/resources/moh-710.resource.ts +32 -9
  231. package/src/resources/moh-711.resource.ts +137 -9
  232. package/src/resources/moh-717.resource.ts +26 -9
  233. package/src/resources/moh-731.resource.ts +90 -0
  234. package/src/resources/moh-745.resource.ts +76 -0
  235. package/src/resources/patient-list-page.ts +65 -0
  236. package/src/root.component.tsx +59 -8
  237. package/src/root.scss +36 -0
  238. package/src/routes.json +3 -1
  239. package/src/utils/format-indicator.ts +39 -0
  240. package/src/utils/get-base-url.ts +39 -7
  241. package/src/utils/utils.ts +36 -0
  242. package/tsconfig.json +1 -1
  243. package/webpack.config.js +22 -1
  244. package/dist/138.js +0 -2
  245. package/dist/138.js.LICENSE.txt +0 -20
  246. package/dist/138.js.map +0 -1
  247. package/dist/184.js +0 -2
  248. package/dist/184.js.LICENSE.txt +0 -14
  249. package/dist/184.js.map +0 -1
  250. package/dist/205.js +0 -1
  251. package/dist/205.js.map +0 -1
  252. package/dist/711.js +0 -1
  253. package/dist/711.js.map +0 -1
  254. package/dist/812.js +0 -1
  255. package/dist/812.js.map +0 -1
  256. package/dist/ampath-esm-reports-app.js.buildmanifest.json +0 -539
  257. package/dist/main.js +0 -1
  258. package/dist/main.js.map +0 -1
@@ -0,0 +1,441 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { formatDate, useSession } from '@openmrs/esm-framework';
3
+ import TableWrapper from '../table-wrapper/table-wrapper.component';
4
+ import TableRowMapper from '../table-wrapper/table-row-mapper.component';
5
+ import { getCell } from '../../utils/utils';
6
+ import { ReportFiltersComponent, type ReportPeriod } from '../../common/report-filters';
7
+ import { showReportError } from '../../common/report-error';
8
+ import { hasReportData, ReportPlaceholder, useGeneratedLocation } from '../../common/report-placeholder';
9
+ import { getMoh505 } from '../../resources/moh-505.resource';
10
+ import MOH505Header from './moh-505-header.component';
11
+ import { useSearchParams } from 'react-router-dom';
12
+ import { ReportSkeleton } from '../../common/report-skeleton';
13
+ import { ReportPage } from '../../common/report-page';
14
+ import styles from './moh-505.scss';
15
+
16
+ const Moh505Report: React.FC = () => {
17
+ const [moh505Data, setMoh505Data] = useState<any>({});
18
+ /* Only a report for the current location counts: after switching location the
19
+ old figures would otherwise be shown, and labelled, as the new location's. */
20
+ const { isForCurrentLocation, hasLocationChanged, markGenerated } = useGeneratedLocation();
21
+ const isReportGenerated = hasReportData(moh505Data) && isForCurrentLocation;
22
+ const [isLoading, setIsLoading] = useState<boolean>(false);
23
+ const [filters, setFilters] = useState<{ locationUuids?: string; startDate?: string; endDate?: string }>({});
24
+
25
+ const session = useSession();
26
+ const locationUuids = session?.sessionLocation?.uuid;
27
+
28
+ /* Masthead and sign-off fill themselves in, as on the other reports */
29
+ const facility = session?.sessionLocation?.display ?? '';
30
+ const compiledBy = session?.user?.person?.display ?? session?.user?.display ?? '';
31
+ const compiledOn = formatDate(new Date(), { mode: 'standard', time: false, noToday: true });
32
+
33
+ const [searchParams] = useSearchParams();
34
+
35
+ useEffect(() => {
36
+ const startDate = searchParams.get('startDate');
37
+ const endDate = searchParams.get('endDate');
38
+
39
+ if (startDate && endDate) {
40
+ setFilters({ locationUuids, startDate, endDate });
41
+ fetchMoh505Data({ startDate, endDate });
42
+ }
43
+ }, [searchParams]);
44
+
45
+ const fetchMoh505Data = async ({ startDate, endDate }: Pick<ReportPeriod, 'startDate' | 'endDate'>) => {
46
+ setIsLoading(true);
47
+
48
+ const params = {
49
+ locationUuids: locationUuids || '',
50
+ startDate,
51
+ endDate,
52
+ };
53
+
54
+ try {
55
+ const result = await getMoh505(params);
56
+ const flatData = Object.assign({}, ...result);
57
+ setMoh505Data(flatData);
58
+ markGenerated(params.locationUuids);
59
+ setFilters({ locationUuids: params.locationUuids, startDate, endDate });
60
+ } catch (error: any) {
61
+ showReportError('the MOH-505 report', error);
62
+ } finally {
63
+ setIsLoading(false);
64
+ }
65
+ };
66
+
67
+ // Static table rows for now - can be updated to use moh505Data
68
+ const tableRows = [
69
+ {
70
+ tableCells: [
71
+ getCell('', 'Diseases, Conditions or Events', 1, 2, true),
72
+ getCell('', '< 5 years', 2, 1, true),
73
+ getCell('', '≥ 5 years', 6, 1, true),
74
+ getCell('', 'Diseases, Conditions or Events', 1, 2, true),
75
+ getCell('', '< 5 years', 2, 1, true),
76
+ getCell('', '≥ 5 years', 2, 1, true),
77
+ ],
78
+ },
79
+ {
80
+ tableCells: [
81
+ ,
82
+ getCell('', 'Cases', 1, 1, true),
83
+ getCell('', 'Deaths', 1, 1, true),
84
+ getCell('', 'Cases', 1, 1, true),
85
+ getCell('', 'Deaths', 5, 1, true),
86
+ ,
87
+ getCell('', 'Cases', 1, 1, true),
88
+ getCell('', 'Deaths', 1, 1, true),
89
+ getCell('', 'Cases', 1, 1, true),
90
+ getCell('', 'Deaths', 1, 1, true),
91
+ ],
92
+ },
93
+ {
94
+ tableCells: [
95
+ getCell('', 'AEFI*'),
96
+ getCell('dc__age_range__0_to_4__aefi'),
97
+ getCell(),
98
+ getCell('dc__age_range__5_and_above__aefi'),
99
+ getCell('', '', 5),
100
+ getCell('', 'Meningococcal Meningitis'),
101
+ getCell('dc__age_range__0_to_4__bacterial_meningitis'),
102
+ getCell(),
103
+ getCell('dc__age_range__5_and_above__bacterial_meningitis'),
104
+ getCell(),
105
+ ],
106
+ },
107
+ {
108
+ tableCells: [
109
+ getCell('', 'Acute Jaundice'),
110
+ getCell('dc__age_range__0_to_4__acute_jaundice', ''),
111
+ getCell(),
112
+ getCell('dc__age_range__5_and_above__acute_jaundice', ''),
113
+ getCell('', '', 5),
114
+ getCell('', 'Neonatal deaths'),
115
+ getCell('dc__age_range__0_to_4__neonatal_deaths', ''),
116
+ getCell(),
117
+ getCell('dc__age_range__5_and_above__neonatal_deaths', ''),
118
+ getCell('', '', 2, 2),
119
+ ],
120
+ },
121
+ {
122
+ tableCells: [
123
+ getCell('', 'Acute Malnutrition'),
124
+ getCell('dc__age_range__0_to_4__acute_malnutrition', ''),
125
+ getCell(),
126
+ getCell('dc__age_range__5_and_above__acute_malnutrition', ''),
127
+ getCell('', '', 5),
128
+ getCell('', 'Neonatal Tetanus'),
129
+ getCell('dc__age_range__0_to_4__neonatal_tetanus', ''),
130
+ getCell(),
131
+ ],
132
+ },
133
+ {
134
+ tableCells: [
135
+ getCell('', 'AFP (Poliomyelitis)**'),
136
+ getCell(),
137
+ getCell(),
138
+ getCell(),
139
+ getCell('', '', 5),
140
+ getCell('', 'Plague'),
141
+ getCell('dc__age_range__0_to_4__plague', ''),
142
+ getCell(),
143
+ getCell('dc__age_range__5_and_above__plague', ''),
144
+ getCell(),
145
+ ],
146
+ },
147
+ {
148
+ tableCells: [
149
+ getCell('', 'Anthrax'),
150
+ getCell('dc__age_range__0_to_4__anthrax', ''),
151
+ getCell(),
152
+ getCell('dc__age_range__5_and_above__anthrax', ''),
153
+ getCell('', '', 5),
154
+ getCell('', 'Rabies'),
155
+ getCell('dc__age_range__0_to_4__rabies', ''),
156
+ getCell(),
157
+ getCell('dc__age_range__5_and_above__rabies', ''),
158
+ getCell(),
159
+ ],
160
+ },
161
+ {
162
+ tableCells: [
163
+ getCell('', 'Cholera'),
164
+ getCell('dc__age_range__0_to_4__cholera', ''),
165
+ getCell(),
166
+ getCell('dc__age_range__5_and_above__cholera', ''),
167
+ getCell('', '', 5),
168
+ getCell('', 'Rift Valley Fever'),
169
+ getCell(),
170
+ getCell(),
171
+ getCell(),
172
+ getCell(),
173
+ ],
174
+ },
175
+ {
176
+ tableCells: [
177
+ getCell('', 'Dengue'),
178
+ getCell('dc__age_range__0_to_4__dengue', ''),
179
+ getCell(),
180
+ getCell('dc__age_range__5_and_above__dengue', ''),
181
+ getCell('', '', 5),
182
+ getCell('', 'SARI (Cluster ≥3 cases)*****'),
183
+ getCell(),
184
+ getCell(),
185
+ getCell(),
186
+ getCell(),
187
+ ],
188
+ },
189
+ {
190
+ tableCells: [
191
+ getCell('', 'Dysentery (Bacillary)'),
192
+ getCell('dc__age_range__0_to_4__dysentery_bacillary', ''),
193
+ getCell(),
194
+ getCell('dc__age_range__5_and_above__dysentery_bacillary', ''),
195
+ getCell('', '', 5),
196
+ getCell('', 'Suspected MDR/XDR TB'),
197
+ getCell(),
198
+ getCell(),
199
+ getCell(),
200
+ getCell(),
201
+ ],
202
+ },
203
+ {
204
+ tableCells: [
205
+ getCell('', 'Guinea Worm Disease'),
206
+ getCell(),
207
+ getCell(),
208
+ getCell(),
209
+ getCell('', '', 5),
210
+ getCell('', 'Typhoid'),
211
+ getCell('dc__age_range__0_to_4__typhoid', ''),
212
+ getCell(),
213
+ getCell('dc__age_range__5_and_above__typhoid', ''),
214
+ getCell(),
215
+ ],
216
+ },
217
+ {
218
+ tableCells: [
219
+ getCell('', 'Measles'),
220
+ getCell('dc__age_range__0_to_4__measles', ''),
221
+ getCell(),
222
+ getCell('dc__age_range__5_and_above__measles', ''),
223
+ getCell('', '', 5),
224
+ getCell('', 'VHF******', 1, 2),
225
+ getCell('', '', 1, 2),
226
+ getCell('', '', 1, 2),
227
+ getCell('', '', 1, 2),
228
+ getCell('', '', 1, 2),
229
+ ],
230
+ },
231
+ {
232
+ tableCells: [getCell('', 'Suspected Malaria***'), getCell(), getCell(), getCell(), getCell('', '', 5)],
233
+ },
234
+ {
235
+ tableCells: [
236
+ getCell('', 'Deaths due to Malaria****', 1, 2),
237
+ getCell('', '', 1, 2),
238
+ getCell('', '', 1, 2),
239
+ getCell('', '', 1, 2),
240
+ getCell('', '', 5, 2),
241
+ getCell('', 'Yellow Fever', 1, 2),
242
+ getCell('dc__age_range__0_to_4__yellow_fever', '', 1, 2),
243
+ getCell('', '', 1, 2),
244
+ getCell('dc__age_range__5_and_above__yellow_fever', '', 1, 2),
245
+ getCell('', '', 1, 2),
246
+ ],
247
+ },
248
+ {
249
+ tableCells: [,],
250
+ },
251
+ {
252
+ tableCells: [
253
+ getCell('', 'Maternal deaths'),
254
+ getCell('dc__age_range__0_to_4__maternal_deaths', ''),
255
+ getCell(),
256
+ getCell('dc__age_range__5_and_above__maternal_deaths', ''),
257
+ getCell('', '', 5),
258
+ getCell('', 'Others (Specify)*******'),
259
+ getCell(),
260
+ getCell(),
261
+ getCell(),
262
+ getCell(),
263
+ ],
264
+ },
265
+ {
266
+ tableCells: [getCell('', '', 14)],
267
+ },
268
+ {
269
+ tableCells: [
270
+ getCell('', 'Disease', 1, 1, true),
271
+ getCell('', 'Microscopy', 3, 1, true),
272
+ getCell('', 'mRDT', 5, 1, true),
273
+ getCell('', 'Disease', 2, 1, true),
274
+ getCell('', 'Laboratory diagnosis', 3, 1, true),
275
+ ],
276
+ },
277
+ {
278
+ tableCells: [
279
+ getCell('', 'Malaria', 1, 1, true),
280
+ getCell('', '<5 yrs'),
281
+ getCell('', '≥5 yrs'),
282
+ getCell('', 'Total'),
283
+ getCell('', '<5 yrs', 2),
284
+ getCell('', '≥5 yrs', 3),
285
+ getCell('', 'Shigella Dysentery', 2, 1, true),
286
+ getCell('', '<5 yrs', 2),
287
+ getCell('', '≥5 yrs', 1),
288
+ ],
289
+ },
290
+ {
291
+ tableCells: [
292
+ getCell('', 'Tested'),
293
+ getCell('dc__age_range__0_to_4__malaria_microscopy_tested', ''),
294
+ getCell('dc__age_range__5_and_above__malaria_microscopy_tested', ''),
295
+ getCell(),
296
+ getCell('dc__age_range__0_to_4__malaria_mrdt_tested', '', 2),
297
+ getCell('dc__age_range__5_and_above__malaria_mrdt_tested', '', 3),
298
+ getCell('', 'Tested', 2),
299
+ getCell('dc__age_range__0_to_4__typhoid_lab_tested', '', 2),
300
+ getCell('dc__age_range__5_and_above__typhoid_lab_tested', '', 1),
301
+ ],
302
+ },
303
+ {
304
+ tableCells: [
305
+ getCell('', 'Positive'),
306
+ getCell('dc__age_range__0_to_4__malaria_microscopy_positive', ''),
307
+ getCell('dc__age_range__5_and_above__malaria_microscopy_positive', ''),
308
+ getCell(),
309
+ getCell('dc__age_range__0_to_4__malaria_mrdt_positive', '', 2),
310
+ getCell('dc__age_range__5_and_above__malaria_mrdt_positive', '', 3),
311
+ getCell('', 'Positive', 2),
312
+ getCell('dc__age_range__0_to_4__typhoid_lab_positive', '', 2),
313
+ getCell('dc__age_range__5_and_above__typhoid_lab_positive', '', 1),
314
+ ],
315
+ },
316
+ {
317
+ tableCells: [
318
+ getCell('', 'Bacterial Meningitis', 1, 2, true),
319
+ getCell('', 'No CSF', 1, 2, true),
320
+ getCell('', 'No contaminated', 1, 2, true),
321
+ getCell('', 'No Tested', 1, 2, true),
322
+ getCell('', '+ve Nm', 1, 2, true),
323
+ getCell('', '+ve Sp', 1, 2, true),
324
+ getCell('', '+ve H influenza', 3, 2, true),
325
+ getCell('', 'Tuberculosis (MDR/XDR)', 2, 2, true),
326
+ getCell('', '<5 yrs', 2, 2),
327
+ getCell('', '≥5 yrs', 1, 2),
328
+ ],
329
+ },
330
+ {
331
+ tableCells: [,],
332
+ },
333
+ {
334
+ tableCells: [
335
+ getCell('', '', 1, 2),
336
+ getCell('', '', 1, 2),
337
+ getCell('', '', 1, 2),
338
+ getCell('', '', 1, 2),
339
+ getCell('', '', 1, 2),
340
+ getCell('', '', 1, 2),
341
+ getCell('', '', 1, 2),
342
+ getCell('', '', 2, 2),
343
+ getCell('', 'Tested', 2),
344
+ getCell('', '', 2),
345
+ getCell(),
346
+ ],
347
+ },
348
+ {
349
+ tableCells: [, , , , , , , , getCell('', 'Positive', 2), getCell('', '', 2), getCell()],
350
+ },
351
+ {
352
+ tableCells: [
353
+ getCell('', 'No of CSF Sub-Typed', 1, 2, true),
354
+ getCell('', '+ve NmA', 1, 2, true),
355
+ getCell('', '+ve NmB', 1, 2, true),
356
+ getCell('', '+ve NmC', 1, 2, true),
357
+ getCell('', '+ve NmW 135', 1, 2, true),
358
+ getCell('', '+ve NmX', 1, 2, true),
359
+ getCell('', '+ve NmY', 1, 2, true),
360
+ getCell('', 'Indeterminate', 1, 2, true),
361
+ getCell('', 'Hib', 1, 2, true),
362
+ getCell('', 'Typhoid', 2, 2, true),
363
+ getCell('', '< 5 years', 2, 2),
364
+ getCell('', '≥ 5 years', 1, 2),
365
+ ],
366
+ },
367
+ {
368
+ tableCells: [,],
369
+ },
370
+ {
371
+ tableCells: [
372
+ getCell('', '', 1, 2),
373
+ getCell('', '', 1, 2),
374
+ getCell('', '', 1, 2),
375
+ getCell('', '', 1, 2),
376
+ getCell('', '', 1, 2),
377
+ getCell('', '', 1, 2),
378
+ getCell('', '', 1, 2),
379
+ getCell('', '', 1, 2),
380
+ getCell('', '', 1, 2),
381
+ getCell('', 'Tested', 2),
382
+ getCell('', '', 2),
383
+ getCell('', '', 1),
384
+ ],
385
+ },
386
+ {
387
+ tableCells: [, , , , , , , , , getCell('', 'Positive', 2, 1), getCell('', '', 2, 1), getCell('', '', 1, 1)],
388
+ },
389
+ {
390
+ tableCells: [,],
391
+ },
392
+ ];
393
+
394
+ return (
395
+ <>
396
+ <ReportFiltersComponent
397
+ reportName="MOH-505 Report"
398
+ mode="both"
399
+ onGenerate={fetchMoh505Data}
400
+ isLoading={isLoading}
401
+ isReportGenerated={isReportGenerated}
402
+ />
403
+ {isLoading && <ReportSkeleton />}
404
+ {!isLoading && !isReportGenerated && (
405
+ <ReportPlaceholder reportName="MOH-505" isLocationChanged={hasReportData(moh505Data) && hasLocationChanged} />
406
+ )}
407
+ {!isLoading && isReportGenerated && (
408
+ <ReportPage>
409
+ <div className={styles.sheet}>
410
+ <MOH505Header facility={facility} startDate={filters.startDate} endDate={filters.endDate} />
411
+ <TableWrapper>
412
+ <TableRowMapper
413
+ tableRows={tableRows}
414
+ data={moh505Data}
415
+ locationUuids={filters.locationUuids}
416
+ startDate={filters.startDate}
417
+ endDate={filters.endDate}
418
+ report="moh-505"
419
+ />
420
+ </TableWrapper>
421
+
422
+ <div className={styles.signOff}>
423
+ <span>
424
+ Compiled by:<span className={styles.line}>{compiledBy}</span>
425
+ </span>
426
+ <span>
427
+ Signature:
428
+ <span className={styles.line} />
429
+ </span>
430
+ <span>
431
+ Date:<span className={styles.shortLine}>{compiledOn}</span>
432
+ </span>
433
+ </div>
434
+ </div>
435
+ </ReportPage>
436
+ )}
437
+ </>
438
+ );
439
+ };
440
+
441
+ export default Moh505Report;
@@ -0,0 +1,117 @@
1
+ /* MOH-505 laid out for A4, on the same scale as the other reports.
2
+
3
+ This one renders through the shared TableWrapper, so its cells are styled
4
+ from `table-wrapper.scss` rather than here. Those rules are all single-class,
5
+ so scoping these under `.sheet` (a class plus an element, one step more
6
+ specific) wins deterministically -- no reliance on which module loads first.
7
+ The wrapper is asked for a plain table so Carbon's data-table rules, which
8
+ are far more specific, never apply at all. */
9
+
10
+ $ink: #000;
11
+ $rule: 1px solid $ink;
12
+
13
+ $text: 7pt;
14
+ $title: 7.5pt;
15
+ $meta: 6.5pt;
16
+
17
+ $pad: 3mm;
18
+
19
+ .mainTitleBox {
20
+ padding: 2mm $pad;
21
+ text-align: center;
22
+ border: $rule;
23
+ }
24
+
25
+ .ministry {
26
+ font-size: $meta;
27
+ }
28
+
29
+ .reportTitle {
30
+ font-size: $title;
31
+ font-weight: 700;
32
+ color: $ink;
33
+ }
34
+
35
+ .subTitle {
36
+ font-size: $meta;
37
+ font-weight: 600;
38
+ }
39
+
40
+ .headerSection {
41
+ padding: 0;
42
+ }
43
+
44
+ .sheet {
45
+ font-size: $text;
46
+
47
+ table {
48
+ width: 100%;
49
+ border-collapse: collapse;
50
+ }
51
+
52
+ td,
53
+ th {
54
+ height: auto;
55
+ min-width: 0;
56
+ padding: 0.7mm 1mm;
57
+ overflow-wrap: anywhere;
58
+ font-size: $text;
59
+ line-height: 1.25;
60
+ text-align: center;
61
+ border: $rule;
62
+ }
63
+
64
+ /* Row labels read as text, not as data */
65
+ td:first-child {
66
+ text-align: left;
67
+ }
68
+
69
+ /* The facility block's labels sit against their values rather than centred */
70
+
71
+ .headerTable td {
72
+ text-align: left;
73
+ }
74
+ }
75
+
76
+ /* Sign-off, enclosed by the form */
77
+
78
+ .signOff {
79
+ display: flex;
80
+ flex-wrap: nowrap;
81
+ align-items: baseline;
82
+ justify-content: space-between;
83
+ gap: 2.5mm;
84
+ padding: $pad;
85
+ font-size: $meta;
86
+ white-space: nowrap;
87
+ border: $rule;
88
+ border-top: none;
89
+
90
+ > span {
91
+ display: flex;
92
+ flex: 1 1 auto;
93
+ align-items: baseline;
94
+ min-width: 0;
95
+ }
96
+ }
97
+
98
+ .line,
99
+ .shortLine {
100
+ padding: 0 0.5mm;
101
+ margin-left: 1mm;
102
+ overflow: hidden;
103
+ font-weight: 600;
104
+ text-align: center;
105
+ text-overflow: ellipsis;
106
+ border-bottom: $rule;
107
+ }
108
+
109
+ .line {
110
+ flex: 1 1 45mm;
111
+ min-width: 15mm;
112
+ }
113
+
114
+ .shortLine {
115
+ flex: 1 1 25mm;
116
+ min-width: 12mm;
117
+ }