@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,172 @@
1
+ @use '@openmrs/esm-styleguide/src/vars' as *;
2
+
3
+ /* MOH-705A laid out for A4, on the same scale as the other reports. Its 76 rows
4
+ are a single diagnoses table, so the sheet is one continuous form: masthead,
5
+ facility strip, table and sign-off share their edges. */
6
+
7
+ $ink: #000;
8
+ $rule: 1px solid $ink;
9
+
10
+ $text: 7pt;
11
+ $title: 7.5pt;
12
+ $meta: 6.5pt;
13
+
14
+ $pad: 3mm;
15
+
16
+ .mainTitleBox {
17
+ padding: $pad;
18
+ text-align: center;
19
+ border: $rule;
20
+ }
21
+
22
+ .ministry {
23
+ font-size: $meta;
24
+ }
25
+
26
+ .reportTitle {
27
+ font-size: $title;
28
+ font-weight: 700;
29
+ color: $ink;
30
+ }
31
+
32
+ .location {
33
+ display: flex;
34
+ flex-wrap: nowrap;
35
+ align-items: baseline;
36
+ justify-content: space-between;
37
+ gap: 2.5mm;
38
+ padding: 2mm $pad;
39
+ font-size: $meta;
40
+ white-space: nowrap;
41
+ border: $rule;
42
+ border-top: none;
43
+ }
44
+
45
+ .line,
46
+ .shortLine {
47
+ display: inline-block;
48
+ padding: 0 0.5mm;
49
+ margin-left: 1mm;
50
+ overflow: hidden;
51
+ font-weight: 600;
52
+ text-align: center;
53
+ text-overflow: ellipsis;
54
+ vertical-align: bottom;
55
+ border-bottom: $rule;
56
+ }
57
+
58
+ .line {
59
+ width: 26mm;
60
+ }
61
+
62
+ .shortLine {
63
+ width: 14mm;
64
+ }
65
+
66
+ .container {
67
+ overflow-x: visible;
68
+ margin: 0;
69
+ }
70
+
71
+ .table {
72
+ width: 100%;
73
+ table-layout: fixed;
74
+ border-collapse: collapse;
75
+ font-family: inherit;
76
+ }
77
+
78
+ .numberColumn {
79
+ width: 3mm;
80
+ }
81
+
82
+ .diseaseColumn {
83
+ width: 34mm;
84
+ }
85
+
86
+ .dayColumn {
87
+ width: 4.5mm;
88
+ }
89
+
90
+ .totalColumn {
91
+ width: 8mm;
92
+ }
93
+
94
+ .tableBordered td,
95
+ .tableBordered th {
96
+ box-sizing: border-box;
97
+ padding: 0.6mm 0.45mm;
98
+ font-size: $text;
99
+ text-align: left;
100
+ border: $rule;
101
+ }
102
+
103
+ .tableBordered tbody td:nth-child(n + 3):not(:last-child),
104
+ .tableBordered thead th:nth-child(n + 2):not(:last-child) {
105
+ width: 4.5mm;
106
+ font-size: 5pt;
107
+ white-space: nowrap;
108
+ text-align: center;
109
+ }
110
+
111
+ .tableBordered tbody td:last-child,
112
+ .tableBordered thead th:last-child {
113
+ width: 8mm;
114
+ text-align: center;
115
+ }
116
+
117
+ .tableBordered tbody td:nth-child(2) {
118
+ font-family: inherit;
119
+ overflow-wrap: anywhere;
120
+ }
121
+
122
+ .tableBordered tbody td:nth-child(n + 3) {
123
+ text-align: center;
124
+ }
125
+
126
+ .tableBordered th {
127
+ font-weight: 700;
128
+ color: $ink;
129
+ background-color: #f0f0f0;
130
+ }
131
+
132
+ .tableStriped tbody tr:nth-of-type(odd) {
133
+ background-color: #fafafa;
134
+ }
135
+
136
+ @media screen {
137
+ .tableStriped tbody tr:hover {
138
+ background-color: $brand-primary-10;
139
+ }
140
+ }
141
+
142
+ /* Sign-off, enclosed by the form. Three fields across the sheet, so its rules
143
+ are wider than the header strip's five. */
144
+
145
+ .signOff {
146
+ display: flex;
147
+ flex-wrap: nowrap;
148
+ align-items: baseline;
149
+ justify-content: space-between;
150
+ gap: 2.5mm;
151
+ padding: $pad;
152
+ font-size: $meta;
153
+ white-space: nowrap;
154
+ border: $rule;
155
+ border-top: none;
156
+
157
+ .line {
158
+ width: 45mm;
159
+ }
160
+
161
+ .shortLine {
162
+ width: 25mm;
163
+ }
164
+ }
165
+
166
+ /* On paper the striping is screen affordance that prints as grey noise */
167
+
168
+ @media print {
169
+ .tableStriped tbody tr:nth-of-type(odd) {
170
+ background-color: transparent;
171
+ }
172
+ }
@@ -0,0 +1,329 @@
1
+ import React from 'react';
2
+ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@carbon/react';
3
+
4
+ import styles from '../../../common/report-register/register-table.scss';
5
+ import classNames from 'classnames';
6
+ import { useLocation, useNavigate, useSearchParams } from 'react-router-dom';
7
+ import { getMoh705aPatientList } from '../../../resources/moh-705.resource';
8
+ import { moh204aExportColumns } from './moh-204a.columns';
9
+ import { RegisterLayout, usePatientList } from '../../../common/report-register';
10
+
11
+ interface Moh204ARegisterComponentProps { }
12
+
13
+ const Moh204ARegisterComponent: React.FC<Moh204ARegisterComponentProps> = () => {
14
+ const [searchParams] = useSearchParams();
15
+ const startDate = searchParams.get('startDate');
16
+ const endDate = searchParams.get('endDate');
17
+ const locationUuids = searchParams.get('locationUuids');
18
+ const indicator = searchParams.get('indicator');
19
+
20
+ const {
21
+ rows: patientlist,
22
+ total,
23
+ isTotalExact,
24
+ isLoading,
25
+ page,
26
+ pageSize,
27
+ onPageChange,
28
+ fetchAll,
29
+ } = usePatientList(
30
+ ({ startIndex, limit }) =>
31
+ getMoh705aPatientList({
32
+ startDate: startDate!,
33
+ endDate: endDate!,
34
+ locationUuids: locationUuids!,
35
+ indicator: indicator!,
36
+ startIndex,
37
+ limit,
38
+ }),
39
+ [startDate, endDate, locationUuids, indicator],
40
+ );
41
+
42
+ const removePatientListDuplicates = async () => {
43
+ const list = await fetchAll();
44
+ const filtered = uniqueBy(list, 'person_id');
45
+ return filtered;
46
+ }
47
+
48
+ const uniqueBy = (arr: any, key: string) =>
49
+ [...new Map(arr.map((item: any) => [item[key], item])).values()] as Record<string, any>[];
50
+
51
+ return (
52
+ <RegisterLayout
53
+ parentLabel="MOH-705A Report"
54
+ parentPath="/moh-705a"
55
+ title="MOH 204A Under-5 Outpatient Register"
56
+ isLoading={isLoading}
57
+ isEmpty={patientlist.length === 0}
58
+ page={page}
59
+ pageSize={pageSize}
60
+ total={total}
61
+ isTotalExact={isTotalExact}
62
+ onPageChange={onPageChange}
63
+ fetchAll={removePatientListDuplicates}
64
+ columns={moh204aExportColumns}
65
+ >
66
+ <div className={styles.tableContainer}>
67
+ <Table className={classNames(`${styles.table}`, `${styles.tableBordered}`, `${styles.tableStriped}`)}>
68
+ <TableHead>
69
+ <TableRow>
70
+ <TableHeader>
71
+ Date <br /> (DD/MM/YYYY)
72
+ </TableHeader>
73
+ <TableHeader>
74
+ OPD No.
75
+ <br />
76
+ (New)
77
+ </TableHeader>
78
+ <TableHeader>
79
+ OPD No.
80
+ <br />
81
+ (Revisit)
82
+ </TableHeader>
83
+ <TableHeader>
84
+ Referred
85
+ <br />
86
+ From 1=CU,
87
+ <br />
88
+ 2=From Other
89
+ <br />
90
+ facility, 3=
91
+ <br />
92
+ Within 4=N/A
93
+ </TableHeader>
94
+ <TableHeader>Full Names (THREE names)</TableHeader>
95
+ <TableHeader>Age</TableHeader>
96
+ <TableHeader>Sex</TableHeader>
97
+ <TableHeader>Countu/Sub-county</TableHeader>
98
+ <TableHeader>
99
+ Village /Estate / <br />
100
+ Landmark
101
+ </TableHeader>
102
+ <TableHeader>
103
+ Parent/Caregivers's
104
+ <br />
105
+ Telephone
106
+ <br />
107
+ No.
108
+ </TableHeader>
109
+ <TableHeader>Weight(kg)</TableHeader>
110
+ <TableHeader>
111
+ Height
112
+ <br />
113
+ /Length
114
+ <br />
115
+ (cm)
116
+ </TableHeader>
117
+ <TableHeader>
118
+ MUAC
119
+ <br />
120
+ 1.Green
121
+ <br />
122
+ 2.Yellow
123
+ <br />
124
+ 3.Red
125
+ </TableHeader>
126
+ <TableHeader>
127
+ Temp
128
+ <br />
129
+ (oC)
130
+ </TableHeader>
131
+ <TableHeader>
132
+ Respiratory
133
+ <br />
134
+ Rate
135
+ </TableHeader>
136
+ <TableHeader>
137
+ Oxygen Saturation
138
+ <br />
139
+ Reading <br />
140
+ (SPO2)
141
+ </TableHeader>
142
+ <TableHeader>
143
+ Pulse
144
+ <br />
145
+ Rate
146
+ </TableHeader>
147
+ <TableHeader>
148
+ DANGER SIGNS
149
+ <br />
150
+ 1.Unable to drink or <br />
151
+ breastfeed
152
+ <br />
153
+ 2.Vomits everything
154
+ <br />
155
+ 3.Had convulsions
156
+ <br />
157
+ in this illness
158
+ <br />
159
+ 4.Is lethargic or <br />
160
+ unconscious
161
+ <br />
162
+ 5.Is convulsing now
163
+ </TableHeader>
164
+ <TableHeader>
165
+ Duration
166
+ <br />
167
+ of Current
168
+ <br />
169
+ Illness
170
+ <br />
171
+ (in hours/
172
+ <br />
173
+ days)
174
+ </TableHeader>
175
+ <TableHeader>
176
+ Malaria
177
+ <br />
178
+ 1.Presenting with symptoms NOT
179
+ <br />
180
+ Tested
181
+ <br />
182
+ 2.RDT Tested (-ve)
183
+ <br />
184
+ 3.Microscopy
185
+ <br />
186
+ Tested (-ve)
187
+ <br />
188
+ 4.RDT Tested (+ve)
189
+ <br />
190
+ 5. Microscopy
191
+ <br />
192
+ Tested (+ve)
193
+ </TableHeader>
194
+ <TableHeader>
195
+ IMNCI Classification or <br />
196
+ Diagnosis
197
+ </TableHeader>
198
+ <TableHeader>
199
+ TRACER DRUGS <br />
200
+ PRESCRIBED
201
+ <br />
202
+ 1. ORS & Zinc <br />
203
+ (Co-pack)
204
+ <br />
205
+ 2.Zinc Only
206
+ <br />
207
+ 3. ORS Only 4.
208
+ <br />
209
+ Amoxicillin DT
210
+ <br />
211
+ 5. Vitamin A <br />
212
+ 6.Oxygen <br />
213
+ 7. Albendazole <br />
214
+ 8.IV Fluids
215
+ </TableHeader>
216
+ <TableHeader>
217
+ Other <br />
218
+ ALL <br />
219
+ Treatments <br />
220
+ Prescribed 1. <br />
221
+ CPAP 2.
222
+ <br />
223
+ Other
224
+ </TableHeader>
225
+ <TableHeader>
226
+ Immunization
227
+ <br />
228
+ Status Up to <br />
229
+ Date (Y/N)
230
+ </TableHeader>
231
+ <TableHeader>
232
+ TB Screening 1. <br />
233
+ presumed TB 2. <br />
234
+ Referred
235
+ </TableHeader>
236
+ <TableHeader>
237
+ Nutrition and diatetics <br />
238
+ Interventions 1=Nutrition
239
+ <br />
240
+ counselling 2=Nutrition
241
+ <br />
242
+ therapeutic supplements 3<br />
243
+ =. Diatetics
244
+ </TableHeader>
245
+ <TableHeader>
246
+ Referred to (1=CU, 2= to <br />
247
+ other H/F, 3=within the <br />
248
+ facility/ 4=N/A)
249
+ </TableHeader>
250
+ <TableHeader>REMARKS/ Outcome</TableHeader>
251
+ </TableRow>
252
+ <TableRow>
253
+ <TableHeader>A</TableHeader>
254
+ <TableHeader>B</TableHeader>
255
+ <TableHeader>C</TableHeader>
256
+ <TableHeader>D</TableHeader>
257
+ <TableHeader>E</TableHeader>
258
+ <TableHeader>F</TableHeader>
259
+ <TableHeader>G</TableHeader>
260
+ <TableHeader>H</TableHeader>
261
+ <TableHeader>I</TableHeader>
262
+ <TableHeader>J</TableHeader>
263
+ <TableHeader>K</TableHeader>
264
+ <TableHeader>L</TableHeader>
265
+ <TableHeader>M</TableHeader>
266
+ <TableHeader>N</TableHeader>
267
+ <TableHeader>O</TableHeader>
268
+ <TableHeader>P</TableHeader>
269
+ <TableHeader>Q</TableHeader>
270
+ <TableHeader>R</TableHeader>
271
+ <TableHeader>S</TableHeader>
272
+ <TableHeader>T</TableHeader>
273
+ <TableHeader>U</TableHeader>
274
+ <TableHeader>V</TableHeader>
275
+ <TableHeader>W</TableHeader>
276
+ <TableHeader>X</TableHeader>
277
+ <TableHeader>Y</TableHeader>
278
+ <TableHeader>Z</TableHeader>
279
+ <TableHeader>AA</TableHeader>
280
+ <TableHeader>AB</TableHeader>
281
+ </TableRow>
282
+ </TableHead>
283
+ <TableBody>
284
+ {patientlist?.length > 0 ? (
285
+ uniqueBy(patientlist, 'person_id')?.map((patient) => (
286
+ <TableRow key={patient.person_id || patient.id}>
287
+ <TableCell>{patient.date}</TableCell>
288
+ <TableCell>{patient.opd_number_new_visit}</TableCell>
289
+ <TableCell>{patient.opd_number_return_visit}</TableCell>
290
+ <TableCell>{patient.referred_from}</TableCell>
291
+ <TableCell>{patient.full_names}</TableCell>
292
+ <TableCell>{patient.age}</TableCell>
293
+ <TableCell>{patient.sex}</TableCell>
294
+ <TableCell>{patient.county_sub_county}</TableCell>
295
+ <TableCell>{patient.village_estate_landmark}</TableCell>
296
+ <TableCell>{patient.caregiver_phone_number}</TableCell>
297
+ <TableCell>{patient.weight}</TableCell>
298
+ <TableCell>{patient.height}</TableCell>
299
+ <TableCell>{patient.muac}</TableCell>
300
+ <TableCell>{patient.temp}</TableCell>
301
+ <TableCell>{patient.respiratory_rate}</TableCell>
302
+ <TableCell>{patient.oxygen_saturation}</TableCell>
303
+ <TableCell>{patient.pulse_rate}</TableCell>
304
+ <TableCell>{patient.danger_signs}</TableCell>
305
+ <TableCell>{patient.duration_of_illness}</TableCell>
306
+ <TableCell>{patient.suspected_malaria_cases}</TableCell>
307
+ <TableCell>{patient.diagnosis}</TableCell>
308
+ <TableCell>{patient.tracer_drugs_prescribed}</TableCell>
309
+ <TableCell>{patient.all_other_treatments_prescribed}</TableCell>
310
+ <TableCell>{patient.immunization_status_up_to_date}</TableCell>
311
+ <TableCell>{patient.tb_screening}</TableCell>
312
+ <TableCell>{patient.nutrition_dietetics}</TableCell>
313
+ <TableCell>{patient.referred_to}</TableCell>
314
+ <TableCell>{patient.remarks}</TableCell>
315
+ </TableRow>
316
+ ))
317
+ ) : (
318
+ <TableRow>
319
+ <TableCell colSpan={28}>No data available</TableCell>
320
+ </TableRow>
321
+ )}
322
+ </TableBody>
323
+ </Table>
324
+ </div>
325
+ </RegisterLayout>
326
+ );
327
+ };
328
+
329
+ export default Moh204ARegisterComponent;
@@ -0,0 +1,57 @@
1
+ import { type RegisterColumn } from '../../../common/report-register';
2
+
3
+ /**
4
+ * MOH 204A as the register prints it: one column per cell, in the order they appear.
5
+ */
6
+ export const moh204aExportColumns: RegisterColumn[] = [
7
+ { header: 'Date (DD/MM/YYYY) - A', value: (row) => row.date ?? '' },
8
+ { header: 'OPD No. (New) - B', value: (row) => row.opd_number_new_visit ?? '' },
9
+ { header: 'OPD No. (Revisit) - C', value: (row) => row.opd_number_return_visit ?? '' },
10
+ { header: 'Referred From 1=CU, 2=From Other facility, 3= Within 4=N/A - D', value: (row) => row.referred_from ?? '' },
11
+ { header: 'Full Names (THREE names) - E', value: (row) => row.full_names ?? '' },
12
+ { header: 'Age - F', value: (row) => row.age ?? '' },
13
+ { header: 'Sex - G', value: (row) => row.sex ?? '' },
14
+ { header: 'Countu/Sub-county - H', value: (row) => row.county_sub_county ?? '' },
15
+ { header: 'Village /Estate / Landmark - I', value: (row) => row.village_estate_landmark ?? '' },
16
+ { header: "Parent/Caregivers's Telephone No. - J", value: (row) => row.caregiver_phone_number ?? '' },
17
+ { header: 'Weight(kg) - K', value: (row) => row.weight ?? '' },
18
+ { header: 'Height /Length (cm) - L', value: (row) => row.height ?? '' },
19
+ { header: 'MUAC 1.Green 2.Yellow 3.Red - M', value: (row) => row.muac ?? '' },
20
+ { header: 'Temp (oC) - N', value: (row) => row.temp ?? '' },
21
+ { header: 'Respiratory Rate - O', value: (row) => row.respiratory_rate ?? '' },
22
+ { header: 'Oxygen Saturation Reading (SPO2) - P', value: (row) => row.oxygen_saturation ?? '' },
23
+ { header: 'Pulse Rate - Q', value: (row) => row.pulse_rate ?? '' },
24
+ {
25
+ header:
26
+ 'DANGER SIGNS 1.Unable to drink or breastfeed 2.Vomits everything 3.Had convulsions in this illness 4.Is lethargic or unconscious 5.Is convulsing now - R',
27
+ value: (row) => row.danger_signs ?? '',
28
+ },
29
+ { header: 'Duration of Current Illness (in hours/ days) - S', value: (row) => row.duration_of_illness ?? '' },
30
+ {
31
+ header:
32
+ 'Malaria 1.Presenting with symptoms NOT Tested 2.RDT Tested (-ve) 3.Microscopy Tested (-ve) 4.RDT Tested (+ve) 5. Microscopy Tested (+ve) - T',
33
+ value: (row) => row.suspected_malaria_cases ?? '',
34
+ },
35
+ { header: 'IMNCI Classification or Diagnosis - U', value: (row) => row.diagnosis ?? '' },
36
+ {
37
+ header:
38
+ 'TRACER DRUGS PRESCRIBED 1. ORS & Zinc (Co-pack) 2.Zinc Only 3. ORS Only 4. Amoxicillin DT 5. Vitamin A 6.Oxygen 7. Albendazole 8.IV Fluids - V',
39
+ value: (row) => row.tracer_drugs_prescribed ?? '',
40
+ },
41
+ {
42
+ header: 'Other ALL Treatments Prescribed 1. CPAP 2. Other - W',
43
+ value: (row) => row.all_other_treatments_prescribed ?? '',
44
+ },
45
+ { header: 'Immunization Status Up to Date (Y/N) - X', value: (row) => row.immunization_status_up_to_date ?? '' },
46
+ { header: 'TB Screening 1. presumed TB 2. Referred - Y', value: (row) => row.tb_screening ?? '' },
47
+ {
48
+ header:
49
+ 'Nutrition and diatetics Interventions 1=Nutrition counselling 2=Nutrition therapeutic supplements 3 =. Diatetics - Z',
50
+ value: (row) => row.nutrition_dietetics ?? '',
51
+ },
52
+ {
53
+ header: 'Referred to (1=CU, 2= to other H/F, 3=within the facility/ 4=N/A) - AA',
54
+ value: (row) => row.referred_to ?? '',
55
+ },
56
+ { header: 'REMARKS/ Outcome - AB', value: (row) => row.remarks ?? '' },
57
+ ];
@@ -0,0 +1,6 @@
1
+ export type ReportFilters = {
2
+ startDate?: string;
3
+ endDate?: string;
4
+ month?: string;
5
+ indicator?: string;
6
+ };
@@ -0,0 +1,66 @@
1
+ import React, { useMemo } from 'react';
2
+ import dayjs from 'dayjs';
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 { useLocationDetails } from '../../common/report-header';
7
+ import styles from './moh-706.scss';
8
+
9
+ interface MOH706HeaderProps {
10
+ facility?: string;
11
+ startDate?: string;
12
+ endDate?: string;
13
+ }
14
+
15
+ const asDate = (value?: string) => (value ? dayjs(value).format('DD/MM/YYYY') : '');
16
+
17
+ const MOH706Header: React.FC<MOH706HeaderProps> = ({ facility = '', startDate, endDate }) => {
18
+ const { county, subCounty, kmhflCode } = useLocationDetails();
19
+
20
+ const tableRows = useMemo(() => {
21
+ return [
22
+ {
23
+ tableCells: [getCell('', 'County:', 1, 1, true), getCell('', county ?? '', 3)],
24
+ },
25
+ {
26
+ tableCells: [getCell('', 'Sub-County:', 1, 1, true), getCell('', subCounty ?? '', 3)],
27
+ },
28
+ {
29
+ tableCells: [getCell('', 'Health Facility:', 1, 1, true), getCell('', facility, 3)],
30
+ },
31
+ {
32
+ tableCells: [getCell('', 'KMHFL Code:', 1, 1, true), getCell('', kmhflCode ?? '', 3)],
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('', asDate(startDate)),
46
+ getCell('', 'End Date:', 1, 1, true),
47
+ getCell('', asDate(endDate)),
48
+ ],
49
+ },
50
+ ];
51
+ }, [county, subCounty, kmhflCode, facility, startDate, endDate]);
52
+
53
+ return (
54
+ <div className={styles.headerSection}>
55
+ <div className={styles.mainTitleBox}>
56
+ <p className={styles.ministry}>Ministry of Health</p>
57
+ <h3 className={styles.reportTitle}>MOH 706 &ndash; Laboratory (LAB) Services Summary</h3>
58
+ </div>
59
+ <TableWrapper>
60
+ <TableRowMapper tableRows={tableRows} />
61
+ </TableWrapper>
62
+ </div>
63
+ );
64
+ };
65
+
66
+ export default MOH706Header;