@ampath/esm-reports-app 1.0.0-next.26 → 1.0.0-next.27

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 (42) hide show
  1. package/dist/645.js +1 -0
  2. package/dist/645.js.map +1 -0
  3. package/dist/812.js +1 -1
  4. package/dist/ampath-esm-reports-app.js.buildmanifest.json +26 -26
  5. package/dist/main.js +1 -1
  6. package/dist/routes.json +1 -1
  7. package/package.json +1 -1
  8. package/src/reports/moh-705B/moh-204b-register.component.tsx +235 -0
  9. package/src/reports/moh-705B/moh-705b.component.tsx +141 -83
  10. package/src/reports/moh-705B/moh-705b.scss +4 -1
  11. package/src/reports/moh-705a/moh-705a.component.tsx +141 -86
  12. package/src/reports/moh-705a/moh-705a.scss +5 -1
  13. package/src/reports/moh-705a/registers/moh-204a-register.component.tsx +320 -0
  14. package/src/reports/moh-705a/type.ts +6 -0
  15. package/src/reports/moh-710/moh-710.component.tsx +3 -1
  16. package/src/reports/moh-710/moh-710.scss +4 -0
  17. package/src/reports/moh-710/patient-list/moh-710-patient-list.component.tsx +13 -0
  18. package/src/reports/moh-711/moh-711.component.tsx +30 -12
  19. package/src/reports/moh-711/moh711.scss +11 -0
  20. package/src/reports/moh-711/registers/moh-333-register.component.tsx +636 -0
  21. package/src/reports/moh-711/registers/moh-405-register.component.tsx +518 -0
  22. package/src/reports/moh-711/registers/moh-406-register.component.tsx +530 -0
  23. package/src/reports/moh-711/registers/moh-510-register.component.tsx +61 -0
  24. package/src/reports/moh-711/registers/moh-511-register.component.tsx +263 -0
  25. package/src/reports/moh-711/registers/type.ts +194 -0
  26. package/src/reports/moh-711/sections/anc.component.tsx +45 -22
  27. package/src/reports/moh-711/sections/maternity.component.tsx +79 -40
  28. package/src/reports/moh-711/sections/pnc.component.tsx +39 -13
  29. package/src/reports/moh-717/moh-717.component.tsx +28 -10
  30. package/src/reports/moh-717/moh717.scss +4 -0
  31. package/src/reports/moh-717/sections/maternity.component.tsx +38 -13
  32. package/src/reports/moh-745/moh-745.component.tsx +440 -141
  33. package/src/reports/moh-745/moh-745.scss +5 -0
  34. package/src/reports/moh-745/registers/moh-412-register.component.tsx +190 -0
  35. package/src/reports/moh-745/registers/type.ts +29 -0
  36. package/src/resources/moh-705.resource.ts +57 -0
  37. package/src/resources/moh-710.resource.ts +26 -0
  38. package/src/resources/moh-711.resource.ts +141 -0
  39. package/src/resources/moh-745.resource.ts +32 -2
  40. package/src/root.component.tsx +18 -0
  41. package/dist/269.js +0 -1
  42. package/dist/269.js.map +0 -1
@@ -0,0 +1,530 @@
1
+ import { Button, Loading } from '@carbon/react';
2
+ import React, { useEffect, useState } from 'react';
3
+ import { useNavigate, useSearchParams } from 'react-router-dom';
4
+
5
+ import styles from '../moh711.scss';
6
+ import classNames from 'classnames';
7
+ import { getMoh406PatientList } from '../../../resources/moh-711.resource';
8
+ import { moh406Columns } from './type';
9
+
10
+ const Moh406Register: React.FC = () => {
11
+ const navigate = useNavigate();
12
+
13
+ const [patientlist, setPatientList] = useState<any[]>([]);
14
+ const [isLoading, setIsLoading] = useState(false);
15
+
16
+ const [searchParams] = useSearchParams();
17
+
18
+ const startDate = searchParams.get('startDate');
19
+ const endDate = searchParams.get('endDate');
20
+ const locationUuids = searchParams.get('locationUuids');
21
+ const indicator = searchParams.get('indicator');
22
+
23
+ useEffect(() => {
24
+ const fetchData = async () => {
25
+ if (!startDate || !endDate || !locationUuids || !indicator) return;
26
+
27
+ setIsLoading(true);
28
+
29
+ try {
30
+ const params = {
31
+ startDate,
32
+ endDate,
33
+ locationUuids,
34
+ indicator,
35
+ };
36
+
37
+ const data = await getMoh406PatientList(params);
38
+
39
+ setPatientList(data?.result || []);
40
+ } catch (error) {
41
+ console.error('Failed to fetch register data', error);
42
+ } finally {
43
+ setIsLoading(false);
44
+ }
45
+ };
46
+
47
+ fetchData();
48
+ }, [startDate, endDate, locationUuids, indicator]);
49
+ function navigateBack() {
50
+ navigate('/moh-711');
51
+ }
52
+ return (
53
+ <>
54
+ <div className={styles.buttonContainer}>
55
+ <Button onClick={navigateBack}>Back</Button>
56
+ </div>
57
+ <div>{isLoading && <Loading />}</div>
58
+ <div className={styles.tableContainer}>
59
+ <table className={classNames(`${styles.table}`, `${styles.tableBordered}`, `${styles.tableStriped}`)}>
60
+ <thead>
61
+ <tr>
62
+ <th colSpan={8}>Registration Information</th>
63
+ <th colSpan={3}>Maternity History</th>
64
+ <th colSpan={2}>Postpartum Visit</th>
65
+ <th colSpan={3}>Vital Signs</th>
66
+ <th colSpan={8}>Postnatal Examinations</th>
67
+ <th>TB screening</th>
68
+ <th colSpan={6}></th>
69
+ <th colSpan={4}>HAART & Infant Prophylaxis and Treatment</th>
70
+ <th>
71
+ Cervical Cancer
72
+ <br />
73
+ Screening
74
+ <br />
75
+ (VIA/VILLI/PAP
76
+ <br />
77
+ Smear/ND)
78
+ </th>
79
+ <th>
80
+ Modern Post
81
+ <br />
82
+ Partum Family
83
+ <br />
84
+ Planning
85
+ <br />
86
+ (Y/N)
87
+ </th>
88
+ <th>
89
+ Other Maternal
90
+ <br />
91
+ Complications
92
+ </th>
93
+ <th>
94
+ Haematinics
95
+ <br />
96
+ (Y/N)
97
+ </th>
98
+ <th colSpan={3}>Refferals</th>
99
+ <th rowSpan={7}>Remarks</th>
100
+ </tr>
101
+ <tr>
102
+ <th rowSpan={6}>
103
+ Date of Visit
104
+ <br />
105
+ (dd/mm/yyyy)
106
+ </th>
107
+ <th>
108
+ PNC Number
109
+ <br />
110
+ (New Visit)
111
+ </th>
112
+ <th rowSpan={6}>
113
+ PNC Number/NUPI <br />
114
+ (Revisit)
115
+ </th>
116
+ <th rowSpan={6}>AMRSID</th>
117
+ <th rowSpan={6}>
118
+ Full Name(first name, middle and <br />
119
+ surname)
120
+ </th>
121
+ <th>
122
+ Date of Birth
123
+ <br />
124
+ (dd/mm/yyyy)
125
+ </th>
126
+ <th rowSpan={6}>
127
+ County/ <br />
128
+ SubCounty
129
+ </th>
130
+ <th>Village/Estate/ Landmark</th>
131
+ <th rowSpan={6}>
132
+ Date of Delivery
133
+ <br />
134
+ (dd/mm/yyyy)
135
+ </th>
136
+ <th rowSpan={6}>
137
+ Place of <br />
138
+ Delivery
139
+ <br />
140
+ 1)Facility <br />
141
+ 2) Home
142
+ <br />
143
+ 3) BBA
144
+ </th>
145
+ <th rowSpan={6}>
146
+ Mode of
147
+ <br />
148
+ Delivery
149
+ <br />
150
+ 1) SVD
151
+ <br />
152
+ 2) CS
153
+ <br />
154
+ 3) Breech
155
+ <br />
156
+ 4) AVD
157
+ </th>
158
+ <th>
159
+ Timing <br />
160
+ Mother
161
+ </th>
162
+ <th>Timing Baby</th>
163
+ <th rowSpan={6}>Temp</th>
164
+ <th rowSpan={6}>Pulse</th>
165
+ <th rowSpan={6}>
166
+ Blood <br />
167
+ Pressure
168
+ </th>
169
+ <th>
170
+ Pallor
171
+ <br />
172
+ (Y/N)
173
+ </th>
174
+ <th rowSpan={6}>
175
+ Breast <br />
176
+ 1=normal <br />
177
+ 2= cracked
178
+ <br />
179
+ nipple
180
+ <br />
181
+ 3=engorged <br />
182
+ 4=mastitis
183
+ </th>
184
+ <th rowSpan={6}>
185
+ Uterus <br />
186
+ 1=
187
+ <br />
188
+ contracte d<br />
189
+ 2= not
190
+ <br />
191
+ contracte d <br />
192
+ 3= Others
193
+ <br />
194
+ Specify
195
+ </th>
196
+ <th rowSpan={6}>
197
+ PPH <br />
198
+ 1=present
199
+ <br />
200
+ 2=Absent
201
+ </th>
202
+ <th rowSpan={6}>
203
+ C-Section Site <br />
204
+ 1=Bleeding <br />
205
+ 2=Normal <br />
206
+ 3=Infected
207
+ <br />
208
+ 4=Gapping <br />
209
+ 5=N/A
210
+ </th>
211
+ <th rowSpan={6}>
212
+ Lochia <br />
213
+ 1=Normal <br />
214
+ 2=Foul <br />
215
+ smelling <br />
216
+ 3=Excessi <br />
217
+ ve
218
+ </th>
219
+ <th rowSpan={6}>
220
+ Episiotomy <br />
221
+ 1=Repaired <br />
222
+ 2=Gaping <br />
223
+ 3=Infected <br />
224
+ 4=Healed <br />
225
+ 5=N/
226
+ </th>
227
+ <th rowSpan={6}>
228
+ Fistula <br />
229
+ 1=VVF <br />
230
+ 2=RVF <br />
231
+ 3=VVR <br />
232
+ 4=Non
233
+ </th>
234
+ <th>
235
+ TB Screening
236
+ <br />
237
+ 1: Presumed TB
238
+ <br />
239
+ 2: No signs
240
+ <br />
241
+ 3: On TB treatment
242
+ <br />
243
+ 4: On TPT
244
+ <br />
245
+ 5: Not done
246
+ </th>
247
+ <th>Tested PNC</th>
248
+ <th>HIV Test 1</th>
249
+ <th>HIV Test 2</th>
250
+ <th>HIV Test 3</th>
251
+ <th colSpan={2}>Results in PNC</th>
252
+ <th colSpan={2}>&le;6wks</th>
253
+ <th colSpan={2}>&gt;6wks</th>
254
+ <th>
255
+ Results
256
+ <br />
257
+ 1=Normal,
258
+ <br />
259
+ 2=Suspected,
260
+ <br />
261
+ 3= Confirmed,
262
+ <br />
263
+ 4= Not done
264
+ </th>
265
+ <th>
266
+ Counseled <br />
267
+ Method received
268
+ </th>
269
+ <th rowSpan={6}></th>
270
+ <th rowSpan={6}></th>
271
+ <th>From</th>
272
+ <th>To</th>
273
+ <th>
274
+ Reasons for <br />
275
+ referral <br />
276
+ (specify)
277
+ </th>
278
+ </tr>
279
+ <tr>
280
+ <th rowSpan={6}>NUPI</th>
281
+ <th rowSpan={6}>Age in Years</th>
282
+ <th rowSpan={6}>Telephone number</th>
283
+ <th rowSpan={5}>
284
+ 1=no change, <br />
285
+ 2=10 days to
286
+ <br />
287
+ 14 days; <br />
288
+ 3=4 to 6 <br />
289
+ weeks; <br />
290
+ 4=4 to 6 <br />
291
+ months
292
+ </th>
293
+ <th rowSpan={5}>
294
+ 1=no change,
295
+ <br />
296
+ 2=10 days to <br />
297
+ 14 days; <br />
298
+ 3=4 to 6 <br />
299
+ weeks; <br />
300
+ 4=4 to 6 <br />
301
+ months
302
+ </th>
303
+ <th rowSpan={5}>
304
+ 1= mild;
305
+ <br />
306
+ 2= moderate;
307
+ <br />
308
+ 3= severe
309
+ </th>
310
+ <th rowSpan={5}></th>
311
+ <th rowSpan={5}>(I/R/ND/KP)</th>
312
+ <th>Kit Name:</th>
313
+ <th>Kit Name:</th>
314
+ <th>Kit Name:</th>
315
+ <th>&le;6wks</th>
316
+ <th>&gt;6wks</th>
317
+ <th>Infant</th>
318
+ <th>Mother</th>
319
+ <th>Infant</th>
320
+ <th>Mother</th>
321
+ <th rowSpan={5}></th>
322
+ <th rowSpan={5}></th>
323
+ <th>
324
+ 1 = Community Unit
325
+ <br />
326
+ 2 = Another Health
327
+ <br />
328
+ Facility
329
+ <br />3 = Not Applicable
330
+ </th>
331
+ <th>
332
+ 1 = Community Unit
333
+ <br />
334
+ <br />
335
+ 2 = Another Health
336
+ <br />
337
+ Facility
338
+ <br />3 = Not Applicable
339
+ </th>
340
+ <th rowSpan={5}></th>
341
+ </tr>
342
+ <tr>
343
+ <th>Lot No.</th>
344
+ <th>Lot No.</th>
345
+ <th>Lot No.</th>
346
+ <th rowSpan={4}>(N/P/Ic/NA)</th>
347
+ <th rowSpan={4}>(N/P/Ic/NA)</th>
348
+ <th>
349
+ NVP +AZT
350
+ <br />
351
+ +CTX
352
+ <br />
353
+ or
354
+ <br />
355
+ NVP +CTX
356
+ </th>
357
+ <th>HAART</th>
358
+ <th>
359
+ NVP +AZT
360
+ <br />
361
+ +CTX
362
+ <br />
363
+ or
364
+ <br />
365
+ NVP +CTX
366
+ </th>
367
+ <th>HAART</th>
368
+ <th rowSpan={4}></th>
369
+ <th rowSpan={4}></th>
370
+ </tr>
371
+ <tr>
372
+ <th>Expiry No. / /</th>
373
+ <th>Expiry No. / /</th>
374
+ <th>Expiry No. / /</th>
375
+ <th rowSpan={3}>(Y/N/NA/R)</th>
376
+ <th rowSpan={3}>(Y/N/NA/R)</th>
377
+ <th rowSpan={3}>(Y/N/NA/R)</th>
378
+ <th rowSpan={3}>(Y/N/NA/R)</th>
379
+ </tr>
380
+ <tr>
381
+ <th rowSpan={2}>(N,P,I,NA)</th>
382
+ <th rowSpan={2}>(N,P,I,NA)</th>
383
+ <th rowSpan={2}>(N,P,I,NA)</th>
384
+ </tr>
385
+ </thead>
386
+ <tbody>
387
+ <tr>
388
+ <td className={styles.textCenter}>(a)</td>
389
+ <td className={styles.textCenter}>(b)</td>
390
+ <td className={styles.textCenter}>(c)</td>
391
+ <td className={styles.textCenter}>(d)</td>
392
+ <td className={styles.textCenter}>(e)</td>
393
+ <td className={styles.textCenter}>(f)</td>
394
+ <td className={styles.textCenter}>(g)</td>
395
+ <td className={styles.textCenter}>(h)</td>
396
+ <td className={styles.textCenter}>(i)</td>
397
+ <td className={styles.textCenter}>(j)</td>
398
+ <td className={styles.textCenter}>(k)</td>
399
+ <td className={styles.textCenter}>(l)</td>
400
+ <td className={styles.textCenter}>(m)</td>
401
+ <td className={styles.textCenter}>(n)</td>
402
+ <td className={styles.textCenter}>(o)</td>
403
+ <td className={styles.textCenter}>(p)</td>
404
+ <td className={styles.textCenter}>(q)</td>
405
+ <td className={styles.textCenter}>(r)</td>
406
+ <td className={styles.textCenter}>(s)</td>
407
+ <td className={styles.textCenter}>(t)</td>
408
+ <td className={styles.textCenter}>(u)</td>
409
+ <td className={styles.textCenter}>(v)</td>
410
+ <td className={styles.textCenter}>(w)</td>
411
+ <td className={styles.textCenter}>(x)</td>
412
+ <td className={styles.textCenter}>(y)</td>
413
+ <td className={styles.textCenter}>(z)</td>
414
+ <td className={styles.textCenter}>(aa)</td>
415
+ <td className={styles.textCenter}>(ab)</td>
416
+ <td className={styles.textCenter}>(ac)</td>
417
+ <td className={styles.textCenter}>(ad)</td>
418
+ <td className={styles.textCenter}>(ae)</td>
419
+ <td className={styles.textCenter}>(af)</td>
420
+ <td className={styles.textCenter}>(ag)</td>
421
+ <td className={styles.textCenter}>(ah)</td>
422
+ <td className={styles.textCenter}>(ai)</td>
423
+ <td className={styles.textCenter}>(aj)</td>
424
+ <td className={styles.textCenter}>(ak)</td>
425
+ <td className={styles.textCenter}>(al)</td>
426
+ <td className={styles.textCenter}>(am)</td>
427
+ <td className={styles.textCenter}>(an)</td>
428
+ <td className={styles.textCenter}>(ao)</td>
429
+ <td className={styles.textCenter}>(ap)</td>
430
+ <td className={styles.textCenter}>(aq)</td>
431
+ </tr>
432
+ {patientlist?.length > 0 ? (
433
+ patientlist.map((patient, index) => (
434
+ <React.Fragment key={index}>
435
+ <tr>
436
+ <td rowSpan={2}>
437
+ {patient.date_of_visit ? new Date(patient.date_of_visit).toLocaleDateString('en-GB') : ''}
438
+ </td>
439
+ <td>{patient.pnc_number}</td>
440
+ <td rowSpan={2}>{patient.pnc_number}</td>
441
+ <td rowSpan={2}>{patient.amrsID}</td>
442
+ <td rowSpan={2}>{patient.full_names}</td>
443
+
444
+ <td>{patient.date_of_birth ? new Date(patient.date_of_birth).toLocaleDateString('en-GB') : ''}</td>
445
+
446
+ <td rowSpan={2}>{patient.subcounty_county}</td>
447
+ <td>{patient.village_estate_landmark}</td>
448
+
449
+ <td rowSpan={2}>
450
+ {patient.date_of_delivery ? new Date(patient.date_of_delivery).toLocaleDateString('en-GB') : ''}
451
+ </td>
452
+
453
+ <td rowSpan={2}>{patient.place_of_delivery}</td>
454
+ <td rowSpan={2}>{patient.mode_of_delivery}</td>
455
+ <td rowSpan={2}>{patient.timing_mother}</td>
456
+ <td rowSpan={2}>{patient.timing_baby}</td>
457
+ <td rowSpan={2}>{patient.temperature}</td>
458
+ <td rowSpan={2}>{patient.pulse}</td>
459
+ <td rowSpan={2}>{patient.blood_pressure}</td>
460
+
461
+ <td>{patient.pallor_present}</td>
462
+
463
+ <td rowSpan={2}>{patient.breast}</td>
464
+ <td rowSpan={2}>{patient.uterus}</td>
465
+ <td rowSpan={2}>{patient.pph}</td>
466
+ <td rowSpan={2}>{patient.c_section_site}</td>
467
+ <td rowSpan={2}>{patient.lochia}</td>
468
+ <td rowSpan={2}>{patient.episiotomy}</td>
469
+ <td rowSpan={2}>{patient.fistula}</td>
470
+ <td rowSpan={2}>{patient.tb_screening}</td>
471
+ <td rowSpan={2}>{patient.tested_pnc}</td>
472
+
473
+ <td rowSpan={2}>
474
+ {patient.hiv_test_1_kit_name} / {patient.hiv_test_1_lot_no} / {patient.hiv_test_1_expiry_date} /{' '}
475
+ {patient.hiv_test_1_test_result}
476
+ </td>
477
+
478
+ <td rowSpan={2}>
479
+ {patient.hiv_test_2_kit_name} / {patient.hiv_test_2_lot_no} / {patient.hiv_test_2_expiry_date} /{' '}
480
+ {patient.hiv_test_2_test_result}
481
+ </td>
482
+
483
+ <td rowSpan={2}>
484
+ {patient.hiv_test_3_kit_name} / {patient.hiv_test_3_lot_no} / {patient.hiv_test_3_expiry_date} /{' '}
485
+ {patient.hiv_test_3_test_result}
486
+ </td>
487
+
488
+ <td rowSpan={2}>{patient.results_less_6_weeks}</td>
489
+ <td rowSpan={2}>{patient.results_greater_6_weeks}</td>
490
+ <td rowSpan={2}>{patient.infant_prophylaxis_less_6_weeks}</td>
491
+ <td rowSpan={2}>{patient.maternal_haart_less_6_weeks}</td>
492
+ <td rowSpan={2}>{patient.infant_prophylaxis_greater_6_weeks}</td>
493
+ <td rowSpan={2}>{patient.maternal_haart_greater_6_weeks}</td>
494
+
495
+ <td>{patient.cervical_cancer_method}</td>
496
+ <td>{patient.counselled}</td>
497
+
498
+ <td rowSpan={2}>{patient.other_maternal_complications}</td>
499
+ <td rowSpan={2}>{patient.haematinics}</td>
500
+ <td rowSpan={2}>{patient.referrals_from}</td>
501
+ <td rowSpan={2}>{patient.referrals_to}</td>
502
+ <td rowSpan={2}>{patient.reason_for_referral}</td>
503
+ <td rowSpan={2}>{patient.remarks}</td>
504
+ </tr>
505
+
506
+ <tr>
507
+ <td>{patient.nupi}</td>
508
+ <td>{patient.age}</td>
509
+ <td>{patient.phone_number}</td>
510
+ <td>{patient.pallor}</td>
511
+ <td>{patient.cervical_cancer_results}</td>
512
+ <td>{patient.family_planning_method}</td>
513
+ </tr>
514
+ </React.Fragment>
515
+ ))
516
+ ) : (
517
+ <tr>
518
+ <td colSpan={moh406Columns.length} className={styles.textCenter}>
519
+ No data available
520
+ </td>
521
+ </tr>
522
+ )}
523
+ </tbody>
524
+ </table>
525
+ </div>
526
+ </>
527
+ );
528
+ };
529
+
530
+ export default Moh406Register;
@@ -0,0 +1,61 @@
1
+ import { Button, Loading } from '@carbon/react';
2
+ import React, { useEffect, useState } from 'react';
3
+ import { useNavigate, useSearchParams } from 'react-router-dom';
4
+
5
+ import styles from '../moh711.scss';
6
+ import { getMoh510PatientList } from '../../../resources/moh-711.resource';
7
+
8
+ const Moh510Register: React.FC = () => {
9
+ const navigate = useNavigate();
10
+
11
+ const [patientlist, setPatientList] = useState<any[]>([]);
12
+ const [isLoading, setIsLoading] = useState(false);
13
+
14
+ const [searchParams] = useSearchParams();
15
+
16
+ const startDate = searchParams.get('startDate');
17
+ const endDate = searchParams.get('endDate');
18
+ const locationUuids = searchParams.get('locationUuids');
19
+ const indicator = searchParams.get('indicator');
20
+
21
+ useEffect(() => {
22
+ const fetchData = async () => {
23
+ if (!startDate || !endDate || !locationUuids || !indicator) return;
24
+
25
+ setIsLoading(true);
26
+
27
+ try {
28
+ const params = {
29
+ startDate,
30
+ endDate,
31
+ locationUuids,
32
+ indicator,
33
+ };
34
+
35
+ const data = await getMoh510PatientList(params);
36
+
37
+ setPatientList(data?.result || []);
38
+ } catch (error) {
39
+ console.error('Failed to fetch register data', error);
40
+ } finally {
41
+ setIsLoading(false);
42
+ }
43
+ };
44
+
45
+ fetchData();
46
+ }, [startDate, endDate, locationUuids, indicator]);
47
+
48
+ function navigateBack() {
49
+ navigate('/moh-711');
50
+ }
51
+ return (
52
+ <>
53
+ <div className={styles.buttonContainer}>
54
+ <Button onClick={navigateBack}>Back</Button>
55
+ </div>
56
+ <div>{isLoading && <Loading />}</div>
57
+ </>
58
+ );
59
+ };
60
+
61
+ export default Moh510Register;