@ampath/esm-reports-app 1.0.0-next.79 → 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.
- package/dist/0.css +1 -0
- package/dist/0.css.map +1 -0
- package/dist/0.js +1 -0
- package/dist/0.js.map +1 -0
- package/dist/410.js +1 -1
- package/dist/410.js.map +1 -1
- package/dist/600.js +1 -1
- package/dist/600.js.map +1 -1
- package/dist/757.js +1 -0
- package/dist/757.js.map +1 -0
- package/dist/ampath-esm-reports-app.js +1 -1
- package/dist/ampath-esm-reports-app.js.map +1 -1
- package/dist/routes.json +1 -1
- package/package.json +1 -1
- package/src/common/report-filters/report-filters.scss +15 -6
- package/src/common/report-page/download-sheet-pdf.ts +193 -27
- package/src/common/report-register/report-parents.ts +2 -0
- package/src/dashboard/report-catalog.ts +18 -0
- package/src/registers/moh-267/moh-267-register.component.tsx +407 -0
- package/src/registers/moh-267/moh-267-register.scss +298 -0
- package/src/registers/moh-267/moh-267-summary.ts +102 -0
- package/src/registers/moh-267/moh-267.component.tsx +94 -0
- package/src/registers/moh-267/moh-267.types.ts +47 -0
- package/src/registers/moh-362/moh-362-lab-register.component.tsx +469 -310
- package/src/registers/moh-362/moh-362-lab-register.scss +412 -0
- package/src/registers/moh-362/moh-362-linkage-register.component.tsx +188 -93
- package/src/registers/moh-362/moh-362-linkage-register.scss +91 -0
- package/src/registers/moh-362/moh-362.component.tsx +33 -15
- package/src/registers/moh-362/moh-362.types.ts +15 -25
- package/src/registers/presumptive-tb/presumptive-tb-register.component.tsx +391 -0
- package/src/registers/presumptive-tb/presumptive-tb-register.scss +262 -0
- package/src/registers/presumptive-tb/presumptive-tb.component.tsx +92 -0
- package/src/registers/presumptive-tb/presumptive-tb.types.ts +88 -0
- package/src/registers/register-catalog.ts +37 -3
- package/src/registers/register-file-name.ts +18 -0
- package/src/registers/tb4/tb4-parts.tsx +164 -0
- package/src/registers/tb4/tb4-patient-sheet.component.tsx +418 -0
- package/src/registers/tb4/tb4-register.scss +282 -0
- package/src/registers/tb4/tb4-treatment-sheet.component.tsx +349 -0
- package/src/registers/tb4/tb4.component.tsx +120 -0
- package/src/registers/tb4/tb4.types.ts +129 -0
- package/src/reports/acf-summary/acf-summary-form.component.tsx +176 -0
- package/src/reports/acf-summary/acf-summary-linelist.component.tsx +86 -0
- package/src/reports/acf-summary/acf-summary.component.tsx +97 -0
- package/src/reports/acf-summary/acf-summary.counts.ts +37 -0
- package/src/reports/acf-summary/acf-summary.scss +162 -0
- package/src/reports/moh-729b/moh-729b-form.component.tsx +385 -0
- package/src/reports/moh-729b/moh-729b-linelist.component.tsx +205 -0
- package/src/reports/moh-729b/moh-729b-summary.component.tsx +258 -0
- package/src/reports/moh-729b/moh-729b-summary.config.ts +229 -0
- package/src/reports/moh-729b/moh-729b.component.tsx +157 -0
- package/src/reports/moh-729b/moh-729b.config.ts +235 -0
- package/src/reports/moh-729b/moh-729b.scss +276 -0
- package/src/reports/moh-729b/moh-729b.types.ts +111 -0
- package/src/reports/moh-731/moh-731.component.tsx +10 -7
- package/src/reports/moh-731/moh-731.scss +3 -6
- package/src/reports/moh-731/summary/moh-731-summary.config.ts +2 -4
- package/src/reports/moh-731/summary/moh-731-summary.scss +5 -0
- package/src/resources/moh-267.resource.ts +27 -0
- package/src/resources/moh-729b.resource.ts +25 -0
- package/src/resources/presumptive-tb.resource.ts +27 -0
- package/src/root.component.tsx +14 -0
- package/dist/177.css +0 -1
- package/dist/177.css.map +0 -1
- package/dist/177.js +0 -1
- package/dist/177.js.map +0 -1
- package/dist/580.js +0 -1
- package/dist/580.js.map +0 -1
- package/src/registers/moh-362/moh-362-register.scss +0 -222
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
@use '@carbon/layout';
|
|
2
|
+
@use '@openmrs/esm-styleguide/src/vars' as *;
|
|
3
|
+
|
|
4
|
+
/* MOH 362: HTS LAB REGISTER as A4 landscape pages, drawn in the units the paper
|
|
5
|
+
is measured in (mm, pt) so a page is one sheet: the ruled client rows and the
|
|
6
|
+
summary blocks inside one frame, as on page 5 of the form. Heights are fixed
|
|
7
|
+
so a page never spills over: 23 clients on a full page, and 15 clients with
|
|
8
|
+
the summary on the last. The referral and linkage register draws its pages
|
|
9
|
+
with these same page, frame and cell styles. */
|
|
10
|
+
|
|
11
|
+
/* On screen a page is the printable area only, A4 landscape less its 8mm
|
|
12
|
+
margins: the card around it (`.reportFrame`) gives the margin, as MOH 731's
|
|
13
|
+
does, and `usePageScale` is told this width. */
|
|
14
|
+
$page-w: 297mm - 2 * 8mm;
|
|
15
|
+
$page-h: 210mm - 2 * 8mm;
|
|
16
|
+
|
|
17
|
+
$ink: #000;
|
|
18
|
+
$rule: 0.6pt solid $ink;
|
|
19
|
+
$thick: 1.4pt solid $ink;
|
|
20
|
+
$dotted: 0.6pt dotted $ink;
|
|
21
|
+
$shade: #d9d9d9; // the grey label cells of the summary blocks
|
|
22
|
+
$lower-shade: #f2f2f2; // the lower half of columns (b) and (i)
|
|
23
|
+
|
|
24
|
+
$heading-h: 38mm;
|
|
25
|
+
$ids-h: 3.2mm;
|
|
26
|
+
$line-h: 2.95mm; // half a client row: each client takes two lines
|
|
27
|
+
|
|
28
|
+
/* The card the pages sit in, drawn like the filter card above it and like
|
|
29
|
+
MOH 731's report card (same margin, padding, rule and fill). It wraps
|
|
30
|
+
`.viewport` rather than styling it: the pages are scaled to the viewport's
|
|
31
|
+
width, so padding there would push them into a scrollbar. */
|
|
32
|
+
.reportFrame {
|
|
33
|
+
margin-top: layout.$spacing-05;
|
|
34
|
+
padding: layout.$spacing-05;
|
|
35
|
+
background-color: $ui-02;
|
|
36
|
+
border: 1px solid $ui-03;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Holds the fixed-width pages without making the app scroll sideways; the
|
|
40
|
+
pages are spaced apart as separate sheets */
|
|
41
|
+
.viewport {
|
|
42
|
+
display: flex;
|
|
43
|
+
flex-direction: column;
|
|
44
|
+
gap: layout.$spacing-09;
|
|
45
|
+
overflow-x: auto;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.page {
|
|
49
|
+
display: flex;
|
|
50
|
+
flex-direction: column;
|
|
51
|
+
flex: none;
|
|
52
|
+
box-sizing: border-box;
|
|
53
|
+
width: $page-w;
|
|
54
|
+
height: $page-h;
|
|
55
|
+
margin: 0 auto;
|
|
56
|
+
color: $ink;
|
|
57
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
58
|
+
font-size: 6pt;
|
|
59
|
+
line-height: 1.15;
|
|
60
|
+
background-color: #fff;
|
|
61
|
+
/* set by `usePageScale` from the measured container width, floored at 1 */
|
|
62
|
+
zoom: var(--page-zoom, 1);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.runningHead {
|
|
66
|
+
display: grid;
|
|
67
|
+
grid-template-columns: 1fr auto 1fr;
|
|
68
|
+
font-size: 7.5pt;
|
|
69
|
+
|
|
70
|
+
span:nth-child(2) {
|
|
71
|
+
text-align: center;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
span:last-child {
|
|
75
|
+
text-align: right;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.title {
|
|
80
|
+
margin: 1mm 0 0.6mm;
|
|
81
|
+
font-size: 8pt;
|
|
82
|
+
font-weight: 700;
|
|
83
|
+
line-height: 1;
|
|
84
|
+
text-align: center;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* The ruled sheet: register, summary and sign-off in one border. A full page's
|
|
88
|
+
frame ends with its last row; the last page's runs down to the foot. */
|
|
89
|
+
.frame {
|
|
90
|
+
display: flex;
|
|
91
|
+
flex-direction: column;
|
|
92
|
+
min-height: 0;
|
|
93
|
+
border: $rule;
|
|
94
|
+
border-top: none;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.lastFrame {
|
|
98
|
+
flex: 1;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.register {
|
|
102
|
+
width: 100%;
|
|
103
|
+
table-layout: fixed;
|
|
104
|
+
border-collapse: collapse;
|
|
105
|
+
|
|
106
|
+
th,
|
|
107
|
+
td {
|
|
108
|
+
padding: 0 0.5mm;
|
|
109
|
+
overflow: hidden;
|
|
110
|
+
text-align: center;
|
|
111
|
+
vertical-align: middle;
|
|
112
|
+
border: $rule;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* the frame draws the outer edge */
|
|
116
|
+
tr > :first-child {
|
|
117
|
+
border-left: none;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
tr > :last-child {
|
|
121
|
+
border-right: none;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
th {
|
|
125
|
+
font-weight: 400;
|
|
126
|
+
font-size: 5.5pt;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.headings th {
|
|
131
|
+
height: $heading-h;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/* (a), (b) ... under the headings, in a heavy rule as on the form */
|
|
135
|
+
.columnIds th {
|
|
136
|
+
height: $ids-h;
|
|
137
|
+
font-size: 5.5pt;
|
|
138
|
+
border-top: $thick;
|
|
139
|
+
border-bottom: $thick;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.upperLine td,
|
|
143
|
+
.lowerLine td {
|
|
144
|
+
height: $line-h;
|
|
145
|
+
white-space: nowrap;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.upperCell {
|
|
149
|
+
border-bottom: $dotted !important;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.lowerCell {
|
|
153
|
+
border-top: $dotted !important;
|
|
154
|
+
background-color: $lower-shade;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* the final result in full: "Inconclusive" must fit the narrow column (n) */
|
|
158
|
+
.finalResult {
|
|
159
|
+
padding: 0 0.3mm !important;
|
|
160
|
+
font-size: 5.5pt;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* national ID over the Client Registry ID (CR + 13 digits + check digit) */
|
|
164
|
+
.idCell {
|
|
165
|
+
padding: 0 0.3mm !important;
|
|
166
|
+
font-size: 5pt;
|
|
167
|
+
letter-spacing: -0.1pt;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.left {
|
|
171
|
+
text-align: left !important;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/* names and remarks may take both lines of the row, never more */
|
|
175
|
+
.clamp {
|
|
176
|
+
display: -webkit-box;
|
|
177
|
+
overflow: hidden;
|
|
178
|
+
white-space: normal;
|
|
179
|
+
-webkit-box-orient: vertical;
|
|
180
|
+
-webkit-line-clamp: 2;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.codeList {
|
|
184
|
+
text-align: left !important;
|
|
185
|
+
font-size: 5pt !important;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/* Headings ruled inside: each stack fills the heading's height */
|
|
189
|
+
|
|
190
|
+
.splitStack,
|
|
191
|
+
.headerStack,
|
|
192
|
+
.codedStack,
|
|
193
|
+
.referralStack {
|
|
194
|
+
display: flex;
|
|
195
|
+
flex-direction: column;
|
|
196
|
+
height: $heading-h;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.splitHeader,
|
|
200
|
+
.testHeader {
|
|
201
|
+
padding: 0 !important;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.splitStack span {
|
|
205
|
+
display: flex;
|
|
206
|
+
flex: 1;
|
|
207
|
+
align-items: center;
|
|
208
|
+
justify-content: center;
|
|
209
|
+
padding: 0 0.5mm;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.splitStack span:first-child {
|
|
213
|
+
border-bottom: $rule;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.headerStack {
|
|
217
|
+
text-align: left;
|
|
218
|
+
|
|
219
|
+
span {
|
|
220
|
+
padding: 0.3mm 0.5mm;
|
|
221
|
+
border-bottom: $rule;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* the kit, lot and expiry used on this page, written in */
|
|
225
|
+
em {
|
|
226
|
+
display: block;
|
|
227
|
+
overflow: hidden;
|
|
228
|
+
font-style: normal;
|
|
229
|
+
font-weight: 700;
|
|
230
|
+
text-overflow: ellipsis;
|
|
231
|
+
white-space: nowrap;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.testName {
|
|
235
|
+
flex: 1.3;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.kit {
|
|
239
|
+
flex: 1.6;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
span:nth-child(3),
|
|
243
|
+
span:nth-child(4) {
|
|
244
|
+
flex: 1.1;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
.codes {
|
|
248
|
+
flex: 0.7;
|
|
249
|
+
text-align: center;
|
|
250
|
+
border-bottom: none;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/* A client's HIV test: the result in full, then the kit, lot and expiry used,
|
|
255
|
+
wrapped to the column's width in small type. The box is a fixed height
|
|
256
|
+
within the client's two lines, so the wrapped text never stretches the row
|
|
257
|
+
and its split cells keep their proportions (the full line is also the cell's
|
|
258
|
+
tooltip). */
|
|
259
|
+
.testCell {
|
|
260
|
+
padding: 0 0.4mm !important;
|
|
261
|
+
text-align: left !important;
|
|
262
|
+
vertical-align: top !important;
|
|
263
|
+
white-space: normal !important;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.testBox {
|
|
267
|
+
/* 2px short of the client's two lines, so the ruled row heights alone set
|
|
268
|
+
the layout: a box of the full height plus the cell's borders made each row
|
|
269
|
+
a fraction taller, and drawn for the PDF, where borders round to whole
|
|
270
|
+
pixels, the rows drifted until the last ran past the foot of the frame */
|
|
271
|
+
height: calc(2 * #{$line-h} - 2px);
|
|
272
|
+
overflow: hidden;
|
|
273
|
+
line-height: 1;
|
|
274
|
+
|
|
275
|
+
strong {
|
|
276
|
+
display: block;
|
|
277
|
+
font-size: 5pt;
|
|
278
|
+
font-weight: 700;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
.testDetail {
|
|
283
|
+
display: block;
|
|
284
|
+
font-size: 3.6pt;
|
|
285
|
+
/* three lines of it fit under the result within the box */
|
|
286
|
+
line-height: 0.92;
|
|
287
|
+
overflow-wrap: anywhere;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
.codedStack {
|
|
291
|
+
justify-content: center;
|
|
292
|
+
|
|
293
|
+
span:first-child {
|
|
294
|
+
flex: 1;
|
|
295
|
+
display: flex;
|
|
296
|
+
align-items: center;
|
|
297
|
+
justify-content: center;
|
|
298
|
+
border-bottom: $dotted;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.codes {
|
|
302
|
+
flex: 0 0 5.5mm;
|
|
303
|
+
display: flex;
|
|
304
|
+
align-items: center;
|
|
305
|
+
justify-content: center;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.referralStack {
|
|
310
|
+
justify-content: space-evenly;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/* Summary blocks at the foot of the page, laid out as on the form */
|
|
314
|
+
|
|
315
|
+
.summary {
|
|
316
|
+
display: flex;
|
|
317
|
+
flex: 1;
|
|
318
|
+
align-items: stretch;
|
|
319
|
+
justify-content: space-between;
|
|
320
|
+
padding: 2mm 3mm 0 7mm;
|
|
321
|
+
font-weight: 700;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
.summaryColumn {
|
|
325
|
+
display: flex;
|
|
326
|
+
flex-direction: column;
|
|
327
|
+
justify-content: space-between;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
.summaryTable {
|
|
331
|
+
border-collapse: collapse;
|
|
332
|
+
|
|
333
|
+
th,
|
|
334
|
+
td {
|
|
335
|
+
height: 4.2mm;
|
|
336
|
+
padding: 0 1mm;
|
|
337
|
+
font-size: 7pt;
|
|
338
|
+
text-align: center;
|
|
339
|
+
white-space: nowrap;
|
|
340
|
+
border: $rule;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
td {
|
|
344
|
+
min-width: 8mm;
|
|
345
|
+
font-weight: 400;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
thead th {
|
|
349
|
+
background-color: $shade;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
.titleCell {
|
|
354
|
+
text-align: left !important;
|
|
355
|
+
font-size: 7.5pt !important;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
.rowLabel {
|
|
359
|
+
text-align: right !important;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
.summaryTable tbody .rowLabel {
|
|
363
|
+
background-color: transparent;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/* the HIV test block shades its labels, as on the form */
|
|
367
|
+
.summaryColumn:last-child .rowLabel {
|
|
368
|
+
background-color: $shade;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
.figureLabel {
|
|
372
|
+
min-width: 25mm;
|
|
373
|
+
text-align: right !important;
|
|
374
|
+
background-color: $shade;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
.figure {
|
|
378
|
+
min-width: 13mm !important;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
.figureBox {
|
|
382
|
+
th {
|
|
383
|
+
min-width: 22mm;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
td {
|
|
387
|
+
height: 8.6mm;
|
|
388
|
+
font-size: 8pt;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
.signOff {
|
|
393
|
+
display: flex;
|
|
394
|
+
justify-content: flex-end;
|
|
395
|
+
gap: 20mm;
|
|
396
|
+
padding: 1mm 12mm 1.2mm 0;
|
|
397
|
+
font-size: 6.5pt;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
.rule {
|
|
401
|
+
display: inline-block;
|
|
402
|
+
width: 32mm;
|
|
403
|
+
border-bottom: $rule;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.pageFoot {
|
|
407
|
+
display: flex;
|
|
408
|
+
justify-content: space-between;
|
|
409
|
+
margin-top: auto;
|
|
410
|
+
padding-top: 1.5mm;
|
|
411
|
+
font-size: 7.5pt;
|
|
412
|
+
}
|