@ampath/esm-reports-app 1.0.0-next.8 → 1.0.0-next.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/dist/0.css +1 -0
  2. package/dist/0.css.map +1 -0
  3. package/dist/0.js +1 -0
  4. package/dist/0.js.map +1 -0
  5. package/dist/197.js +1 -1
  6. package/dist/282.js +1 -1
  7. package/dist/282.js.map +1 -1
  8. package/dist/295.css +1 -0
  9. package/dist/295.css.map +1 -0
  10. package/dist/295.js +1 -0
  11. package/dist/295.js.map +1 -0
  12. package/dist/299.js +2 -0
  13. package/dist/299.js.LICENSE.txt +3 -0
  14. package/dist/299.js.map +1 -0
  15. package/dist/300.js +1 -1
  16. package/dist/311.js +1 -1
  17. package/dist/311.js.map +1 -1
  18. package/dist/335.js +1 -1
  19. package/dist/353.js +1 -1
  20. package/dist/353.js.map +1 -1
  21. package/dist/354.js +2 -0
  22. package/dist/354.js.LICENSE.txt +20 -0
  23. package/dist/354.js.map +1 -0
  24. package/dist/410.js +1 -0
  25. package/dist/410.js.map +1 -0
  26. package/dist/457.js +2 -0
  27. package/dist/457.js.LICENSE.txt +261 -0
  28. package/dist/457.js.map +1 -0
  29. package/dist/478.js +1 -1
  30. package/dist/478.js.map +1 -1
  31. package/dist/480.js +1 -0
  32. package/dist/540.js +1 -1
  33. package/dist/540.js.map +1 -1
  34. package/dist/55.js +1 -1
  35. package/dist/600.js +2 -0
  36. package/dist/600.js.LICENSE.txt +35 -0
  37. package/dist/600.js.map +1 -0
  38. package/dist/652.js +1 -1
  39. package/dist/757.js +1 -0
  40. package/dist/757.js.map +1 -0
  41. package/dist/781.js +1 -0
  42. package/dist/781.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 +264 -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 +225 -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 +29 -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 +191 -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-267/moh-267-register.component.tsx +407 -0
  100. package/src/registers/moh-267/moh-267-register.scss +298 -0
  101. package/src/registers/moh-267/moh-267-summary.ts +102 -0
  102. package/src/registers/moh-267/moh-267.component.tsx +94 -0
  103. package/src/registers/moh-267/moh-267.types.ts +47 -0
  104. package/src/registers/moh-362/moh-362-lab-register.component.tsx +551 -0
  105. package/src/registers/moh-362/moh-362-lab-register.scss +412 -0
  106. package/src/registers/moh-362/moh-362-linkage-register.component.tsx +215 -0
  107. package/src/registers/moh-362/moh-362-linkage-register.scss +91 -0
  108. package/src/registers/moh-362/moh-362.component.tsx +117 -0
  109. package/src/registers/moh-362/moh-362.scss +11 -0
  110. package/src/registers/moh-362/moh-362.types.ts +87 -0
  111. package/src/registers/presumptive-tb/presumptive-tb-register.component.tsx +391 -0
  112. package/src/registers/presumptive-tb/presumptive-tb-register.scss +262 -0
  113. package/src/registers/presumptive-tb/presumptive-tb.component.tsx +92 -0
  114. package/src/registers/presumptive-tb/presumptive-tb.types.ts +88 -0
  115. package/src/registers/register-catalog.ts +202 -0
  116. package/src/registers/register-file-name.ts +18 -0
  117. package/src/registers/tb-lab-register/tb-lab-register-table.component.tsx +116 -0
  118. package/src/registers/tb-lab-register/tb-lab-register-table.scss +123 -0
  119. package/src/registers/tb-lab-register/tb-lab-register.columns.ts +164 -0
  120. package/src/registers/tb-lab-register/tb-lab-register.component.test.tsx +232 -0
  121. package/src/registers/tb-lab-register/tb-lab-register.component.tsx +153 -0
  122. package/src/registers/tb4/tb4-parts.tsx +164 -0
  123. package/src/registers/tb4/tb4-patient-sheet.component.tsx +418 -0
  124. package/src/registers/tb4/tb4-register.scss +282 -0
  125. package/src/registers/tb4/tb4-treatment-sheet.component.tsx +349 -0
  126. package/src/registers/tb4/tb4.component.tsx +120 -0
  127. package/src/registers/tb4/tb4.types.ts +129 -0
  128. package/src/reports/acf-summary/acf-summary-form.component.tsx +176 -0
  129. package/src/reports/acf-summary/acf-summary-linelist.component.tsx +86 -0
  130. package/src/reports/acf-summary/acf-summary.component.tsx +97 -0
  131. package/src/reports/acf-summary/acf-summary.counts.ts +37 -0
  132. package/src/reports/acf-summary/acf-summary.scss +162 -0
  133. package/src/reports/datatable-wrapper/datatable-wrapper.component.tsx +63 -48
  134. package/src/reports/moh-240/moh-240-header.component.tsx +62 -0
  135. package/src/reports/moh-240/moh-240.columns.ts +113 -0
  136. package/src/reports/moh-240/moh-240.component.tsx +72 -9
  137. package/src/reports/moh-240/moh-240.scss +40 -0
  138. package/src/reports/moh-240/sub-reports/moh-240-register.component.tsx +31 -37
  139. package/src/reports/moh-240/sub-reports/page-summary.component.tsx +143 -106
  140. package/src/reports/moh-505/moh-505-header.component.tsx +67 -0
  141. package/src/reports/moh-505/moh-505.component.tsx +441 -0
  142. package/src/reports/moh-505/moh-505.scss +117 -0
  143. package/src/reports/moh-705B/moh-204b-register.component.tsx +246 -0
  144. package/src/reports/moh-705B/moh-204b.columns.ts +39 -0
  145. package/src/reports/moh-705B/moh-705b.component.tsx +659 -0
  146. package/src/reports/moh-705B/moh-705b.scss +172 -0
  147. package/src/reports/moh-705a/moh-705a.component.tsx +661 -0
  148. package/src/reports/moh-705a/moh-705a.scss +172 -0
  149. package/src/reports/moh-705a/registers/moh-204a-register.component.tsx +331 -0
  150. package/src/reports/moh-705a/registers/moh-204a.columns.ts +57 -0
  151. package/src/reports/moh-705a/type.ts +6 -0
  152. package/src/reports/moh-706/moh-706-header.component.tsx +66 -0
  153. package/src/reports/moh-706/moh-706.component.tsx +150 -24
  154. package/src/reports/moh-706/moh-706.scss +119 -11
  155. package/src/reports/moh-706/sub-reports/bacteriology/bacteriology.component.tsx +35 -28
  156. package/src/reports/moh-706/sub-reports/blood-chemistry/blood-chemistry.component.tsx +229 -305
  157. package/src/reports/moh-706/sub-reports/haematology/haematology.component.tsx +26 -19
  158. package/src/reports/moh-706/sub-reports/histology-and-cytology/histology-and-cytology.component.tsx +23 -23
  159. package/src/reports/moh-706/sub-reports/parasitology/parasitology.component.tsx +25 -18
  160. package/src/reports/moh-706/sub-reports/serology/serology.component.tsx +21 -14
  161. package/src/reports/moh-706/sub-reports/specimen-referral-to-higher-levels/specimen-referral-to-higher-levels.component.tsx +2 -2
  162. package/src/reports/moh-706/sub-reports/urine-analysis/urine-analysis.component.tsx +27 -20
  163. package/src/reports/moh-710/moh-710.component.tsx +815 -632
  164. package/src/reports/moh-710/moh-710.scss +142 -21
  165. package/src/reports/moh-710/registers/moh-413/moh-413-columns.ts +22 -0
  166. package/src/reports/moh-710/registers/moh-413/moh-413.component.tsx +140 -0
  167. package/src/reports/moh-710/registers/moh-413/moh-413.scss +64 -0
  168. package/src/reports/moh-710/registers/moh-510/moh-510.columns.ts +40 -0
  169. package/src/reports/moh-710/registers/moh-510/moh-510.component.tsx +191 -0
  170. package/src/reports/moh-710/registers/moh-510/moh-510.scss +130 -0
  171. package/src/reports/moh-710/registers/moh-511-710-register.component.tsx +268 -0
  172. package/src/reports/moh-710/registers/moh-511-710.columns.ts +52 -0
  173. package/src/reports/moh-710/registers/type.ts +31 -0
  174. package/src/reports/moh-711/moh-711.component.tsx +153 -1269
  175. package/src/reports/moh-711/moh711.scss +135 -20
  176. package/src/reports/moh-711/registers/moh-333-register.component.tsx +680 -0
  177. package/src/reports/moh-711/registers/moh-333.columns.ts +119 -0
  178. package/src/reports/moh-711/registers/moh-405-register.component.tsx +566 -0
  179. package/src/reports/moh-711/registers/moh-405.columns.ts +120 -0
  180. package/src/reports/moh-711/registers/moh-406-register.component.tsx +581 -0
  181. package/src/reports/moh-711/registers/moh-406.columns.ts +133 -0
  182. package/src/reports/moh-711/registers/moh-407-register.component.tsx +157 -0
  183. package/src/reports/moh-711/registers/moh-407.columns.ts +24 -0
  184. package/src/reports/moh-711/registers/moh-407.scss +64 -0
  185. package/src/reports/moh-711/registers/moh-510-register.component.tsx +55 -0
  186. package/src/reports/moh-711/registers/moh-511-register.component.tsx +270 -0
  187. package/src/reports/moh-711/registers/moh-511.columns.ts +59 -0
  188. package/src/reports/moh-711/registers/moh-512-columns.ts +94 -0
  189. package/src/reports/moh-711/registers/moh-512.component.tsx +191 -0
  190. package/src/reports/moh-711/registers/moh-512.scss +64 -0
  191. package/src/reports/moh-711/registers/tb-register-columns.ts +17 -0
  192. package/src/reports/moh-711/registers/tb-register.component.tsx +96 -0
  193. package/src/reports/moh-711/registers/tb-register.scss +64 -0
  194. package/src/reports/moh-711/registers/type.ts +192 -0
  195. package/src/reports/moh-711/sections/anc.component.tsx +159 -0
  196. package/src/reports/moh-711/sections/cervical-cancer.component.tsx +148 -0
  197. package/src/reports/moh-711/sections/chanis.component.tsx +389 -0
  198. package/src/reports/moh-711/sections/family-planning.component.tsx +299 -0
  199. package/src/reports/moh-711/sections/gbv.component.tsx +115 -0
  200. package/src/reports/moh-711/sections/maternity.component.tsx +321 -0
  201. package/src/reports/moh-711/sections/medical-social-work.component.tsx +73 -0
  202. package/src/reports/moh-711/sections/other.component.tsx +47 -0
  203. package/src/reports/moh-711/sections/physiotherapy.component.tsx +61 -0
  204. package/src/reports/moh-711/sections/pnc.component.tsx +127 -0
  205. package/src/reports/moh-711/sections/post-abortion.component.tsx +42 -0
  206. package/src/reports/moh-711/sections/rehabilitation.component.tsx +57 -0
  207. package/src/reports/moh-711/sections/report-compiled-by.component.tsx +50 -0
  208. package/src/reports/moh-711/sections/tb-screening.component.tsx +94 -0
  209. package/src/reports/moh-717/moh-717.component.tsx +149 -985
  210. package/src/reports/moh-717/moh717.scss +217 -21
  211. package/src/reports/moh-717/registers/nutrition-register.component.tsx +48 -0
  212. package/src/reports/moh-717/sections/finance.component.tsx +42 -0
  213. package/src/reports/moh-717/sections/inpatient.component.tsx +374 -0
  214. package/src/reports/moh-717/sections/maternity.component.tsx +126 -0
  215. package/src/reports/moh-717/sections/medical-records.component.tsx +35 -0
  216. package/src/reports/moh-717/sections/mortuary.component.tsx +43 -0
  217. package/src/reports/moh-717/sections/operations.component.tsx +53 -0
  218. package/src/reports/moh-717/sections/orthopaedic-trauma.component.tsx +98 -0
  219. package/src/reports/moh-717/sections/outpatient.component.tsx +597 -0
  220. package/src/reports/moh-717/sections/pharmacy.component.tsx +43 -0
  221. package/src/reports/moh-717/sections/preparedby.component.tsx +52 -0
  222. package/src/reports/moh-717/sections/special-services.component.tsx +114 -0
  223. package/src/reports/moh-729b/moh-729b-form.component.tsx +385 -0
  224. package/src/reports/moh-729b/moh-729b-linelist.component.tsx +205 -0
  225. package/src/reports/moh-729b/moh-729b-summary.component.tsx +258 -0
  226. package/src/reports/moh-729b/moh-729b-summary.config.ts +229 -0
  227. package/src/reports/moh-729b/moh-729b.component.tsx +157 -0
  228. package/src/reports/moh-729b/moh-729b.config.ts +235 -0
  229. package/src/reports/moh-729b/moh-729b.scss +276 -0
  230. package/src/reports/moh-729b/moh-729b.types.ts +111 -0
  231. package/src/reports/moh-731/linelist/moh-731-indicators.ts +1122 -0
  232. package/src/reports/moh-731/linelist/moh-731-linelist-sections.ts +472 -0
  233. package/src/reports/moh-731/linelist/moh-731-linelist.component.tsx +102 -0
  234. package/src/reports/moh-731/linelist/use-open-moh-731-linelist.ts +50 -0
  235. package/src/reports/moh-731/moh-731.component.tsx +269 -0
  236. package/src/reports/moh-731/moh-731.scss +496 -0
  237. package/src/reports/moh-731/registers/moh-366.columns.ts +38 -0
  238. package/src/reports/moh-731/registers/moh-366.component.tsx +471 -0
  239. package/src/reports/moh-731/registers/prep-register.component.tsx +284 -0
  240. package/src/reports/moh-731/registers/prep.columns.ts +34 -0
  241. package/src/reports/moh-731/sections/hiv-and-tb-treatment.component.tsx +1206 -0
  242. package/src/reports/moh-731/sections/hiv-testing-and-pre-exposure.component.tsx +727 -0
  243. package/src/reports/moh-731/sections/pmtct.component.tsx +572 -0
  244. package/src/reports/moh-731/summary/moh-731-summary.component.tsx +313 -0
  245. package/src/reports/moh-731/summary/moh-731-summary.config.ts +527 -0
  246. package/src/reports/moh-731/summary/moh-731-summary.scss +247 -0
  247. package/src/reports/moh-740/moh-740.component.scss +202 -0
  248. package/src/reports/moh-740/moh-740.component.tsx +1332 -0
  249. package/src/reports/moh-740/moh-740.resource.ts +54 -0
  250. package/src/reports/moh-740/registers/moh-222-daily-register/moh-222-daily-register.tsx +149 -0
  251. package/src/reports/moh-740/registers/moh-270-permanent-register/moh-270-permanent-register.tsx +123 -0
  252. package/src/reports/moh-740/registers/moh-740-patient-list.scss +0 -0
  253. package/src/reports/moh-740/registers/moh-740-patient-list.tsx +60 -0
  254. package/src/reports/moh-740/registers/moh-740.columns.ts +54 -0
  255. package/src/reports/moh-740/shared/data-cell/data-cell.scss +6 -0
  256. package/src/reports/moh-740/shared/data-cell/data-cell.tsx +23 -0
  257. package/src/reports/moh-740/shared/utils/indicator-register-map.ts +159 -0
  258. package/src/reports/moh-740/types/index.ts +223 -0
  259. package/src/reports/moh-745/moh-745.component.tsx +2058 -0
  260. package/src/reports/moh-745/moh-745.scss +142 -0
  261. package/src/reports/moh-745/registers/moh-412-register.component.tsx +249 -0
  262. package/src/reports/moh-745/registers/moh-412.columns.ts +52 -0
  263. package/src/reports/moh-745/registers/type.ts +223 -0
  264. package/src/reports/table-wrapper/table-row-mapper.component.tsx +20 -5
  265. package/src/reports/table-wrapper/table-wrapper.component.tsx +23 -14
  266. package/src/reports/table-wrapper/table-wrapper.scss +1 -16
  267. package/src/resources/moh-267.resource.ts +27 -0
  268. package/src/resources/moh-362.resource.ts +27 -0
  269. package/src/resources/moh-505.resource.ts +69 -0
  270. package/src/resources/moh-705.resource.ts +118 -0
  271. package/src/resources/moh-706.resource.ts +80 -0
  272. package/src/resources/moh-710.resource.ts +60 -9
  273. package/src/resources/moh-711.resource.ts +206 -9
  274. package/src/resources/moh-717.resource.ts +26 -9
  275. package/src/resources/moh-729b.resource.ts +25 -0
  276. package/src/resources/moh-731.resource.ts +90 -0
  277. package/src/resources/moh-745.resource.ts +76 -0
  278. package/src/resources/patient-list-page.ts +66 -0
  279. package/src/resources/presumptive-tb.resource.ts +27 -0
  280. package/src/root.component.tsx +79 -8
  281. package/src/root.scss +36 -0
  282. package/src/routes.json +3 -1
  283. package/src/utils/format-indicator.ts +39 -0
  284. package/src/utils/get-base-url.ts +39 -7
  285. package/src/utils/utils.ts +30 -1
  286. package/tsconfig.json +1 -1
  287. package/webpack.config.js +22 -1
  288. package/dist/138.js +0 -2
  289. package/dist/138.js.LICENSE.txt +0 -20
  290. package/dist/138.js.map +0 -1
  291. package/dist/184.js +0 -2
  292. package/dist/184.js.LICENSE.txt +0 -14
  293. package/dist/184.js.map +0 -1
  294. package/dist/205.js +0 -1
  295. package/dist/205.js.map +0 -1
  296. package/dist/812.js +0 -1
  297. package/dist/812.js.map +0 -1
  298. package/dist/879.js +0 -1
  299. package/dist/879.js.map +0 -1
  300. package/dist/ampath-esm-reports-app.js.buildmanifest.json +0 -539
  301. package/dist/main.js +0 -1
  302. package/dist/main.js.map +0 -1
@@ -1,26 +1,152 @@
1
- import React from "react";
2
- import UrineAnalysis from "./sub-reports/urine-analysis/urine-analysis.component";
3
- import BloodChemistry from "./sub-reports/blood-chemistry/blood-chemistry.component";
4
- import Parasitology from "./sub-reports/parasitology/parasitology.component";
5
- import Haematology from "./sub-reports/haematology/haematology.component";
6
- import Bacteriology from "./sub-reports/bacteriology/bacteriology.component";
7
- import HistologyAndCytology from "./sub-reports/histology-and-cytology/histology-and-cytology.component";
8
- import Serology from "./sub-reports/serology/serology.component";
9
- import SpecimenReferralToHigherLevels from "./sub-reports/specimen-referral-to-higher-levels/specimen-referral-to-higher-levels.component";
10
- import DrugSusceptibilityTesting from "./sub-reports/drug-susceptibility-testing/drug-susceptibility-testing.component";
1
+ import React, { useEffect, useState } from 'react';
2
+ import { formatDate, useSession } from '@openmrs/esm-framework';
3
+ import { Column, Grid } from '@carbon/react';
4
+ import UrineAnalysis from './sub-reports/urine-analysis/urine-analysis.component';
5
+ import BloodChemistry from './sub-reports/blood-chemistry/blood-chemistry.component';
6
+ import Parasitology from './sub-reports/parasitology/parasitology.component';
7
+ import Haematology from './sub-reports/haematology/haematology.component';
8
+ import Bacteriology from './sub-reports/bacteriology/bacteriology.component';
9
+ import HistologyAndCytology from './sub-reports/histology-and-cytology/histology-and-cytology.component';
10
+ import Serology from './sub-reports/serology/serology.component';
11
+ import SpecimenReferralToHigherLevels from './sub-reports/specimen-referral-to-higher-levels/specimen-referral-to-higher-levels.component';
12
+ import DrugSusceptibilityTesting from './sub-reports/drug-susceptibility-testing/drug-susceptibility-testing.component';
13
+ import { ReportFiltersComponent, type ReportPeriod } from '../../common/report-filters';
14
+ import { showReportError } from '../../common/report-error';
15
+ import { hasReportData, ReportPlaceholder, useGeneratedLocation } from '../../common/report-placeholder';
16
+ import { getMoh706 } from '../../resources/moh-706.resource';
17
+ import styles from './moh-706.scss';
18
+ import MOH706Header from './moh-706-header.component';
19
+ import { useSearchParams } from 'react-router-dom';
20
+ import { ReportSkeleton } from '../../common/report-skeleton';
21
+ import { ReportPage } from '../../common/report-page';
11
22
 
12
23
  const MoH706Report: React.FC = () => {
13
- return <>
14
- <UrineAnalysis />
15
- <BloodChemistry />
16
- <Parasitology />
17
- <Haematology />
18
- <Bacteriology />
19
- <HistologyAndCytology />
20
- <Serology />
21
- <SpecimenReferralToHigherLevels />
22
- <DrugSusceptibilityTesting />
23
- </>;
24
- }
25
-
26
- export default MoH706Report;
24
+ const [moh706Data, setMoh706Data] = useState<any>({});
25
+ /* Only a report for the current location counts: after switching location the
26
+ old figures would otherwise be shown, and labelled, as the new location's. */
27
+ const { isForCurrentLocation, hasLocationChanged, markGenerated } = useGeneratedLocation();
28
+ const isReportGenerated = hasReportData(moh706Data) && isForCurrentLocation;
29
+ const [isLoading, setIsLoading] = useState<boolean>(false);
30
+ const [filters, setFilters] = useState<{ locationUuids?: string; startDate?: string; endDate?: string }>({});
31
+
32
+ const session = useSession();
33
+ const locationUuids = session?.sessionLocation?.uuid;
34
+
35
+ /* Masthead and sign-off fill themselves in, as on the other reports */
36
+ const facility = session?.sessionLocation?.display ?? '';
37
+ const compiledBy = session?.user?.person?.display ?? session?.user?.display ?? '';
38
+ const compiledOn = formatDate(new Date(), { mode: 'standard', time: false, noToday: true });
39
+
40
+ const [searchParams] = useSearchParams();
41
+
42
+ useEffect(() => {
43
+ const startDate = searchParams.get('startDate');
44
+ const endDate = searchParams.get('endDate');
45
+
46
+ if (startDate && endDate) {
47
+ setFilters({ locationUuids, startDate, endDate });
48
+ fetchMoh706Data({ startDate, endDate });
49
+ }
50
+ }, [searchParams]);
51
+
52
+ const fetchMoh706Data = async ({ startDate, endDate }: Pick<ReportPeriod, 'startDate' | 'endDate'>) => {
53
+ setIsLoading(true);
54
+
55
+ const params = {
56
+ locationUuids: locationUuids || '',
57
+ startDate,
58
+ endDate,
59
+ };
60
+
61
+ try {
62
+ const result = await getMoh706(params);
63
+ const flatData = Object.assign({}, ...result);
64
+ setMoh706Data(flatData);
65
+ markGenerated(params.locationUuids);
66
+ setFilters({ locationUuids: params.locationUuids, startDate, endDate });
67
+ } catch (error: any) {
68
+ showReportError('the MOH-706 report', error);
69
+ } finally {
70
+ setIsLoading(false);
71
+ }
72
+ };
73
+
74
+ return (
75
+ <>
76
+ <ReportFiltersComponent
77
+ reportName="MOH-706 Report"
78
+ mode="both"
79
+ onGenerate={fetchMoh706Data}
80
+ isLoading={isLoading}
81
+ isReportGenerated={isReportGenerated}
82
+ />
83
+ {isLoading && <ReportSkeleton />}
84
+ {!isLoading && !isReportGenerated && (
85
+ <ReportPlaceholder reportName="MOH-706" isLocationChanged={hasReportData(moh706Data) && hasLocationChanged} />
86
+ )}
87
+ {!isLoading && isReportGenerated && (
88
+ <ReportPage>
89
+ <div className={styles.sheet}>
90
+ <MOH706Header facility={facility} startDate={filters.startDate} endDate={filters.endDate} />
91
+ <div className={styles.reportSections}>
92
+ <UrineAnalysis
93
+ data={moh706Data}
94
+ locationUuids={filters.locationUuids}
95
+ startDate={filters.startDate}
96
+ endDate={filters.endDate}
97
+ />
98
+ <BloodChemistry
99
+ data={moh706Data}
100
+ locationUuids={filters.locationUuids}
101
+ startDate={filters.startDate}
102
+ endDate={filters.endDate}
103
+ />
104
+ <Parasitology
105
+ data={moh706Data}
106
+ locationUuids={filters.locationUuids}
107
+ startDate={filters.startDate}
108
+ endDate={filters.endDate}
109
+ />
110
+ <Haematology
111
+ data={moh706Data}
112
+ locationUuids={filters.locationUuids}
113
+ startDate={filters.startDate}
114
+ endDate={filters.endDate}
115
+ />
116
+ <Bacteriology
117
+ data={moh706Data}
118
+ locationUuids={filters.locationUuids}
119
+ startDate={filters.startDate}
120
+ endDate={filters.endDate}
121
+ />
122
+ <HistologyAndCytology />
123
+ <Serology
124
+ data={moh706Data}
125
+ locationUuids={filters.locationUuids}
126
+ startDate={filters.startDate}
127
+ endDate={filters.endDate}
128
+ />
129
+ <SpecimenReferralToHigherLevels />
130
+ <DrugSusceptibilityTesting />
131
+ </div>
132
+
133
+ <div className={styles.signOff}>
134
+ <span>
135
+ Compiled by:<span className={styles.line}>{compiledBy}</span>
136
+ </span>
137
+ <span>
138
+ Signature:
139
+ <span className={styles.line} />
140
+ </span>
141
+ <span>
142
+ Date:<span className={styles.shortLine}>{compiledOn}</span>
143
+ </span>
144
+ </div>
145
+ </div>
146
+ </ReportPage>
147
+ )}
148
+ </>
149
+ );
150
+ };
151
+
152
+ export default MoH706Report;
@@ -1,18 +1,126 @@
1
- .tableWrapper {
2
- overflow-x: auto;
3
- border: 1px solid #d0d0d0;
4
- border-radius: 4px;
1
+ /* MOH-706 laid out for A4, on the same scale as the other reports.
2
+
3
+ Its nine sub-reports all render through the shared TableWrapper, so their
4
+ cells are styled from `table-wrapper.scss` rather than here. Those rules are
5
+ all single-class, so scoping these under `.sheet` (a class plus an element,
6
+ one step more specific) wins deterministically -- no reliance on which module
7
+ loads first. The wrapper is asked for a plain table so Carbon's data-table
8
+ rules, which 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
+ .headerSection {
36
+ padding: 0;
5
37
  }
6
38
 
7
- .tableContainer {
39
+ /* The nine sub-reports run continuously down the sheet, as they do on the form.
40
+ Each is kept off a page break so a block is never split from the heading row
41
+ that names its columns. */
42
+
43
+ .reportSections {
8
44
  width: 100%;
9
- border-collapse: collapse;
45
+ margin: 0;
46
+ padding: 0;
47
+
48
+ > * {
49
+ break-inside: avoid;
50
+ page-break-inside: avoid;
51
+ }
52
+ }
53
+
54
+ .sheet {
55
+ font-size: $text;
10
56
 
11
- thead {
12
- background-color: #f4f4f4;
57
+ table {
58
+ width: 100%;
59
+ border-collapse: collapse;
13
60
  }
14
61
 
15
- tbody tr {
16
- border-bottom: 1px solid #e0e0e0;
62
+ td,
63
+ th {
64
+ height: auto;
65
+ min-width: 0;
66
+ padding: 0.7mm 1mm;
67
+ overflow-wrap: anywhere;
68
+ font-size: $text;
69
+ line-height: 1.25;
70
+ text-align: center;
71
+ border: $rule;
17
72
  }
18
- }
73
+
74
+ /* Row labels read as text, not as data */
75
+ td:first-child {
76
+ text-align: left;
77
+ }
78
+
79
+ /* The facility block is all labels and values, none of it tabular data */
80
+ .headerSection td {
81
+ text-align: left;
82
+ }
83
+ }
84
+
85
+ /* Sign-off, enclosed by the form */
86
+
87
+ .signOff {
88
+ display: flex;
89
+ flex-wrap: nowrap;
90
+ align-items: baseline;
91
+ justify-content: space-between;
92
+ gap: 2.5mm;
93
+ padding: $pad;
94
+ font-size: $meta;
95
+ white-space: nowrap;
96
+ border: $rule;
97
+ border-top: none;
98
+
99
+ > span {
100
+ display: flex;
101
+ flex: 1 1 auto;
102
+ align-items: baseline;
103
+ min-width: 0;
104
+ }
105
+ }
106
+
107
+ .line,
108
+ .shortLine {
109
+ padding: 0 0.5mm;
110
+ margin-left: 1mm;
111
+ overflow: hidden;
112
+ font-weight: 600;
113
+ text-align: center;
114
+ text-overflow: ellipsis;
115
+ border-bottom: $rule;
116
+ }
117
+
118
+ .line {
119
+ flex: 1 1 45mm;
120
+ min-width: 15mm;
121
+ }
122
+
123
+ .shortLine {
124
+ flex: 1 1 25mm;
125
+ min-width: 12mm;
126
+ }
@@ -3,7 +3,14 @@ import TableWrapper from "../../../table-wrapper/table-wrapper.component";
3
3
  import TableRowMapper from "../../../table-wrapper/table-row-mapper.component";
4
4
  import { getCell } from "../../../../utils/utils";
5
5
 
6
- const Bacteriology: React.FC = () => {
6
+ interface BacteriologyProps {
7
+ data?: any,
8
+ locationUuids?: string,
9
+ startDate?: string,
10
+ endDate?: string
11
+ }
12
+
13
+ const Bacteriology: React.FC<BacteriologyProps> = ({ data, locationUuids, startDate, endDate }) => {
7
14
  const tableRows = useMemo(() => {
8
15
  return [
9
16
  {
@@ -18,14 +25,14 @@ const Bacteriology: React.FC = () => {
18
25
  ]
19
26
  },
20
27
  { tableCells: [getCell("", "5.1 Urine"), getCell(), getCell(), getCell()] },
21
- { tableCells: [getCell("", "5.2 Pus swabs"), getCell(), getCell(), getCell()] },
28
+ { tableCells: [getCell("", "5.2 Pus swabs"), getCell("total_bact_pus_swab"), getCell(), getCell()] },
22
29
  { tableCells: [getCell("", "5.3 High Vaginal Swabs"), getCell(), getCell(), getCell()] },
23
- { tableCells: [getCell("", "5.4 Throat swab"), getCell(), getCell(), getCell()] },
24
- { tableCells: [getCell("", "5.5 Rectal swab"), getCell(), getCell(), getCell()] },
25
- { tableCells: [getCell("", "5.6 Blood"), getCell(), getCell(), getCell()] },
26
- { tableCells: [getCell("", "5.7 Water"), getCell(), getCell(), getCell()] },
27
- { tableCells: [getCell("", "5.8 Food"), getCell(), getCell(), getCell()] },
28
- { tableCells: [getCell("", "5.9 Urethral swabs"), getCell(), getCell(), getCell()] },
30
+ { tableCells: [getCell("", "5.4 Throat swab"), getCell("total_bact_throat_swab"), getCell(), getCell()] },
31
+ { tableCells: [getCell("", "5.5 Rectal swab"), getCell("total_bact_rectal_swab"), getCell(), getCell()] },
32
+ { tableCells: [getCell("", "5.6 Blood"), getCell("total_bact_blood"), getCell(), getCell()] },
33
+ { tableCells: [getCell("", "5.7 Water"), getCell("total_bact_water"), getCell(), getCell()] },
34
+ { tableCells: [getCell("", "5.8 Food"), getCell("total_bact_food"), getCell(), getCell()] },
35
+ { tableCells: [getCell("", "5.9 Urethral swabs"), getCell("total_bact_urethral"), getCell(), getCell()] },
29
36
  {
30
37
  tableCells: [
31
38
  getCell("", "Bacterial enteric pathogens", 2, 1, true),
@@ -46,10 +53,10 @@ const Bacteriology: React.FC = () => {
46
53
  getCell("", "Number Positive", 1, 1, true),
47
54
  ]
48
55
  },
49
- { tableCells: [getCell("", "5.11 Salmonella typhi", 3), getCell()] },
50
- { tableCells: [getCell("", "5.12 Shigella - dysenteriae type1", 3), getCell()] },
51
- { tableCells: [getCell("", "5.13 E. coli O157:H7", 3), getCell()] },
52
- { tableCells: [getCell("", "5.14 V. cholerae O1", 3), getCell()] },
56
+ { tableCells: [getCell("", "5.11 Salmonella typhi", 3), getCell("positive_salmonella")] },
57
+ { tableCells: [getCell("", "5.12 Shigella - dysenteriae type1", 3), getCell("positive_bact_shigella_dysenteriae1")] },
58
+ { tableCells: [getCell("", "5.13 E. coli O157:H7", 3), getCell("positive_bact_ecoli_o157")] },
59
+ { tableCells: [getCell("", "5.14 V. cholerae O1", 3), getCell("positive_bact_v_cholerae_o1")] },
53
60
  { tableCells: [getCell("", "5.15 V. cholerae O139", 3), getCell()] },
54
61
 
55
62
  {
@@ -66,7 +73,7 @@ const Bacteriology: React.FC = () => {
66
73
  {
67
74
  tableCells: [
68
75
  getCell("", "5.16 CSF"),
69
- getCell(),
76
+ getCell("total_bact_csf"),
70
77
  getCell(),
71
78
  getCell(),
72
79
  ]
@@ -77,21 +84,21 @@ const Bacteriology: React.FC = () => {
77
84
  getCell("", "Number Positive", 3, 1, true),
78
85
  ]
79
86
  },
80
- { tableCells: [getCell("", "5.17 Neisseria meningitidis A"), getCell("", "", 3)] },
81
- { tableCells: [getCell("", "5.18 Neisseria meningitidis B"), getCell("", "", 3)] },
82
- { tableCells: [getCell("", "5.19 Neisseria meningitidis C"), getCell("", "", 3)] },
83
- { tableCells: [getCell("", "5.20 Neisseria meningitidis W135"), getCell("", "", 3)] },
87
+ { tableCells: [getCell("", "5.17 Neisseria meningitidis A"), getCell("positive_bact_men_a", "", 3)] },
88
+ { tableCells: [getCell("", "5.18 Neisseria meningitidis B"), getCell("positive_bact_men_b", "", 3)] },
89
+ { tableCells: [getCell("", "5.19 Neisseria meningitidis C"), getCell("positive_bact_men_c", "", 3)] },
90
+ { tableCells: [getCell("", "5.20 Neisseria meningitidis W135"), getCell("positive_bact_men_w135", "", 3)] },
84
91
  { tableCells: [getCell("", "5.21 Neisseria meningitidis X"), getCell("", "", 3)] },
85
- { tableCells: [getCell("", "5.22 Neisseria meningitidis Y"), getCell("", "", 3)] },
86
- { tableCells: [getCell("", "5.23 Neisseria meningitidis (indeterminate)"), getCell("", "", 3)] },
87
- { tableCells: [getCell("", "5.24 Streptococcus pneumoniae"), getCell("", "", 3)] },
88
- { tableCells: [getCell("", "5.25 Haemophilus influenzae (type b)"), getCell("", "", 3)] },
92
+ { tableCells: [getCell("", "5.22 Neisseria meningitidis Y"), getCell("positive_bact_men_y", "", 3)] },
93
+ { tableCells: [getCell("", "5.23 Neisseria meningitidis (indeterminate)"), getCell("positive_bact_men_indeterminate", "", 3)] },
94
+ { tableCells: [getCell("", "5.24 Streptococcus pneumoniae"), getCell("positive_bact_strep_pneumoniae", "", 3)] },
95
+ { tableCells: [getCell("", "5.25 Haemophilus influenzae (type b)"), getCell("positive_bact_h_influenzae_b", "", 3)] },
89
96
  { tableCells: [getCell("", "5.26 Cryptococcal Meningitis"), getCell("", "", 3)] },
90
97
  {
91
98
  tableCells: [getCell("", "Bacterial Pathogens from other types of specimen", 4, 1, true)]
92
99
  },
93
- { tableCells: [getCell("", "5.27 B. anthracis"), getCell("", "", 3)] },
94
- { tableCells: [getCell("", "5.28 Y. pestis"), getCell("", "", 3)] },
100
+ { tableCells: [getCell("", "5.27 B. anthracis"), getCell("positive_bact_b_anthracis", "", 3)] },
101
+ { tableCells: [getCell("", "5.28 Y. pestis"), getCell("positive_bact_y_pestis", "", 3)] },
95
102
  { tableCells: [getCell("", "TB SPUTUM", 4)] },
96
103
  {
97
104
  tableCells: [
@@ -100,17 +107,17 @@ const Bacteriology: React.FC = () => {
100
107
  getCell("", "Number Positive", 1, 1, true),
101
108
  ]
102
109
  },
103
- { tableCells: [getCell("", "5.29 Total TB smears"), getCell(), getCell()] },
104
- { tableCells: [getCell("", "5.30 New presumptive TB cases"), getCell(), getCell()] },
105
- { tableCells: [getCell("", "5.31 TB Follow up"), getCell(), getCell()] },
110
+ { tableCells: [getCell("", "5.29 Total TB smears"), getCell("total_tb_smear"), getCell("positive_tb_smear")] },
111
+ { tableCells: [getCell("", "5.30 New presumptive TB cases"), getCell("total_tb_sputum_new"), getCell("positive_tb_sputum_new")] },
112
+ { tableCells: [getCell("", "5.31 TB Follow up"), getCell("total_tb_sputum_followup"), getCell("positive_tb_sputum_followup")] },
106
113
  { tableCells: [getCell("", "5.32 Rifampicin Resistant TB"), getCell(), getCell()] },
107
- { tableCells: [getCell("", "5.33 MDR TB"), getCell(), getCell()] },
114
+ { tableCells: [getCell("", "5.33 MDR TB"), getCell("total_tb_sputum_mdr"), getCell("positive_tb_sputum_mdr")] },
108
115
  ]
109
116
  }, []);
110
117
 
111
118
 
112
119
  return <TableWrapper>
113
- <TableRowMapper tableRows={tableRows} />
120
+ <TableRowMapper tableRows={tableRows} data={data} locationUuids={locationUuids} startDate={startDate} endDate={endDate} />
114
121
  </TableWrapper>
115
122
  }
116
123