@openmrs/esm-patient-tests-app 11.3.1-patch.9064 → 11.3.1-patch.9310

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 (80) hide show
  1. package/.turbo/turbo-build.log +22 -19
  2. package/dist/1479.js +1 -1
  3. package/dist/1479.js.map +1 -1
  4. package/dist/3509.js +1 -1
  5. package/dist/4055.js +1 -1
  6. package/dist/4300.js +1 -1
  7. package/dist/{1935.js → 5348.js} +1 -1
  8. package/dist/5348.js.map +1 -0
  9. package/dist/5670.js +1 -1
  10. package/dist/5670.js.map +1 -1
  11. package/dist/6231.js +1 -1
  12. package/dist/6231.js.map +1 -1
  13. package/dist/6301.js +1 -1
  14. package/dist/6301.js.map +1 -1
  15. package/dist/6336.js +1 -0
  16. package/dist/6336.js.map +1 -0
  17. package/dist/790.js +1 -1
  18. package/dist/790.js.map +1 -1
  19. package/dist/8307.js +2 -0
  20. package/dist/8307.js.map +1 -0
  21. package/dist/9540.js +2 -0
  22. package/dist/9540.js.map +1 -0
  23. package/dist/9838.js +1 -0
  24. package/dist/9838.js.map +1 -0
  25. package/dist/main.js +1 -1
  26. package/dist/main.js.map +1 -1
  27. package/dist/openmrs-esm-patient-tests-app.js +1 -1
  28. package/dist/openmrs-esm-patient-tests-app.js.buildmanifest.json +172 -193
  29. package/dist/openmrs-esm-patient-tests-app.js.map +1 -1
  30. package/dist/routes.json +1 -1
  31. package/package.json +3 -3
  32. package/src/edit-test-results/modal/edit-lab-results.modal.tsx +8 -4
  33. package/src/routes.json +3 -4
  34. package/src/test-orders/add-test-order/add-test-order.component.tsx +125 -0
  35. package/src/test-orders/add-test-order/add-test-order.test.tsx +23 -43
  36. package/src/test-orders/add-test-order/add-test-order.workspace.tsx +21 -116
  37. package/src/test-orders/add-test-order/exported-add-test-order.workspace.tsx +30 -0
  38. package/src/test-orders/add-test-order/test-order-form.component.tsx +67 -25
  39. package/src/test-orders/add-test-order/test-order.ts +3 -3
  40. package/src/test-orders/add-test-order/test-type-search.component.tsx +40 -24
  41. package/src/test-orders/api.ts +6 -2
  42. package/src/test-orders/lab-order-basket-panel/lab-order-basket-item-tile.component.tsx +1 -1
  43. package/src/test-orders/lab-order-basket-panel/lab-order-basket-panel.extension.tsx +30 -48
  44. package/src/test-orders/lab-order-basket-panel/lab-order-basket-panel.test.tsx +15 -4
  45. package/src/test-results/filter/filter-types.ts +19 -0
  46. package/src/test-results/grouped-timeline/grouped-timeline.test.tsx +49 -0
  47. package/src/test-results/grouped-timeline/reference-range-helpers.test.ts +272 -0
  48. package/src/test-results/grouped-timeline/reference-range-helpers.ts +112 -0
  49. package/src/test-results/grouped-timeline/timeline-data-group.component.tsx +10 -3
  50. package/src/test-results/grouped-timeline/useObstreeData.ts +71 -9
  51. package/src/test-results/individual-results-table/individual-results-table.component.tsx +23 -6
  52. package/src/test-results/individual-results-table/individual-results-table.test.tsx +65 -3
  53. package/src/test-results/individual-results-table-tablet/helper.tsx +8 -2
  54. package/src/test-results/individual-results-table-tablet/individual-results-table-tablet.component.tsx +2 -2
  55. package/src/test-results/individual-results-table-tablet/lab-set-panel.component.tsx +5 -1
  56. package/src/test-results/loadPatientTestData/helpers.test.ts +834 -0
  57. package/src/test-results/loadPatientTestData/helpers.ts +114 -0
  58. package/src/test-results/loadPatientTestData/loadPatientData.ts +66 -11
  59. package/src/test-results/loadPatientTestData/usePatientResultsData.ts +3 -3
  60. package/src/test-results/overview/common-datatable.component.tsx +1 -1
  61. package/src/test-results/overview/useOverviewData.ts +22 -10
  62. package/src/test-results/results-viewer/results-viewer.extension.tsx +4 -3
  63. package/src/test-results/tree-view/tree-view.component.tsx +14 -4
  64. package/src/test-results/trendline/trendline-resource.tsx +48 -5
  65. package/src/types.ts +20 -10
  66. package/translations/en.json +2 -0
  67. package/translations/fr.json +2 -2
  68. package/dist/1935.js.map +0 -1
  69. package/dist/2537.js +0 -1
  70. package/dist/2537.js.map +0 -1
  71. package/dist/34.js +0 -1
  72. package/dist/34.js.map +0 -1
  73. package/dist/4918.js +0 -1
  74. package/dist/4918.js.map +0 -1
  75. package/dist/5836.js +0 -2
  76. package/dist/5836.js.map +0 -1
  77. package/dist/7053.js +0 -2
  78. package/dist/7053.js.map +0 -1
  79. /package/dist/{7053.js.LICENSE.txt → 8307.js.LICENSE.txt} +0 -0
  80. /package/dist/{5836.js.LICENSE.txt → 9540.js.LICENSE.txt} +0 -0
@@ -7,6 +7,8 @@ import {
7
7
  type ObsMetaInfo,
8
8
  type OBSERVATION_INTERPRETATION,
9
9
  } from '@openmrs/esm-patient-common-lib';
10
+ import type { FHIRObservationResource } from '../../types';
11
+ import { type ReferenceRanges } from '../grouped-timeline/reference-range-helpers';
10
12
 
11
13
  const PAGE_SIZE = 300;
12
14
  const CHUNK_PREFETCH_COUNT = 1;
@@ -151,6 +153,118 @@ export function exist(...args: any[]): boolean {
151
153
  return true;
152
154
  }
153
155
 
156
+ /**
157
+ * Extracts reference ranges from FHIR Observation referenceRange field.
158
+ * Handles different range types: normal, treatment, and absolute.
159
+ */
160
+ export function extractObservationReferenceRanges(
161
+ resource: FHIRObservationResource | ObsRecord,
162
+ ): ReferenceRanges | undefined {
163
+ if (!resource.referenceRange || resource.referenceRange.length === 0) {
164
+ return undefined;
165
+ }
166
+
167
+ const ranges: ReferenceRanges = {
168
+ units: resource.valueQuantity?.unit,
169
+ };
170
+
171
+ resource.referenceRange.forEach((range) => {
172
+ const rangeType = range.type?.coding?.[0]?.code;
173
+ const rangeSystem = range.type?.coding?.[0]?.system;
174
+
175
+ if (rangeSystem === 'http://terminology.hl7.org/CodeSystem/referencerange-meaning') {
176
+ if (rangeType === 'normal') {
177
+ ranges.hiNormal = range.high?.value;
178
+ ranges.lowNormal = range.low?.value;
179
+ } else if (rangeType === 'treatment') {
180
+ ranges.hiCritical = range.high?.value;
181
+ ranges.lowCritical = range.low?.value;
182
+ }
183
+ } else if (rangeSystem === 'http://fhir.openmrs.org/ext/obs/reference-range' && rangeType === 'absolute') {
184
+ ranges.hiAbsolute = range.high?.value;
185
+ ranges.lowAbsolute = range.low?.value;
186
+ }
187
+ });
188
+
189
+ // Only return if we found at least one range value
190
+ if (
191
+ ranges.hiNormal !== undefined ||
192
+ ranges.lowNormal !== undefined ||
193
+ ranges.hiCritical !== undefined ||
194
+ ranges.lowCritical !== undefined ||
195
+ ranges.hiAbsolute !== undefined ||
196
+ ranges.lowAbsolute !== undefined
197
+ ) {
198
+ return ranges;
199
+ }
200
+
201
+ return undefined;
202
+ }
203
+
204
+ /**
205
+ * Extracts and maps FHIR Observation interpretation to OBSERVATION_INTERPRETATION.
206
+ * Supports both interpretation codes (e.g., "LL", "N", "H") and display values (e.g., "Critically Low", "Normal").
207
+ */
208
+ export function extractObservationInterpretation(
209
+ resource: FHIRObservationResource | ObsRecord,
210
+ ): OBSERVATION_INTERPRETATION | undefined {
211
+ if (!resource.interpretation || resource.interpretation.length === 0) {
212
+ return undefined;
213
+ }
214
+
215
+ const interpretation = resource.interpretation[0];
216
+ const code = interpretation.coding?.[0]?.code;
217
+ const display = interpretation.coding?.[0]?.display || interpretation.text;
218
+
219
+ // Map FHIR interpretation codes (HL7 v3 ObservationInterpretation codes)
220
+ if (code) {
221
+ switch (code.toUpperCase()) {
222
+ case 'LL':
223
+ return 'CRITICALLY_LOW';
224
+ case 'HH':
225
+ return 'CRITICALLY_HIGH';
226
+ case 'L':
227
+ return 'LOW';
228
+ case 'H':
229
+ return 'HIGH';
230
+ case 'N':
231
+ return 'NORMAL';
232
+ case 'LU':
233
+ return 'OFF_SCALE_LOW';
234
+ case 'HU':
235
+ return 'OFF_SCALE_HIGH';
236
+ default:
237
+ // Fall through to display mapping
238
+ break;
239
+ }
240
+ }
241
+
242
+ // Map FHIR interpretation display values
243
+ if (display) {
244
+ const normalized = display.trim().toLowerCase();
245
+ switch (normalized) {
246
+ case 'critically low':
247
+ return 'CRITICALLY_LOW';
248
+ case 'critically high':
249
+ return 'CRITICALLY_HIGH';
250
+ case 'low':
251
+ return 'LOW';
252
+ case 'high':
253
+ return 'HIGH';
254
+ case 'normal':
255
+ return 'NORMAL';
256
+ case 'off scale low':
257
+ return 'OFF_SCALE_LOW';
258
+ case 'off scale high':
259
+ return 'OFF_SCALE_HIGH';
260
+ default:
261
+ return undefined;
262
+ }
263
+ }
264
+
265
+ return undefined;
266
+ }
267
+
154
268
  export const assessValue =
155
269
  (meta: ObsMetaInfo) =>
156
270
  (value: string): OBSERVATION_INTERPRETATION => {
@@ -7,13 +7,21 @@ import {
7
7
  type ObsMetaInfo,
8
8
  } from '@openmrs/esm-patient-common-lib';
9
9
  import {
10
+ addUserDataToCache,
11
+ assessValue,
12
+ extractMetaInformation,
13
+ extractObservationReferenceRanges,
14
+ extractObservationInterpretation,
10
15
  getEntryConceptClassUuid,
11
16
  getUserDataFromCache,
12
17
  loadObsEntries,
13
18
  loadPresentConcepts,
14
- extractMetaInformation,
15
- addUserDataToCache,
16
19
  } from './helpers';
20
+ import {
21
+ selectReferenceRange,
22
+ formatReferenceRange,
23
+ type ReferenceRanges,
24
+ } from '../grouped-timeline/reference-range-helpers';
17
25
 
18
26
  function parseSingleObsData(
19
27
  testConceptNameMap: Record<ConceptUuid, string>,
@@ -23,6 +31,11 @@ function parseSingleObsData(
23
31
  return (entry: ObsRecord) => {
24
32
  entry.conceptClass = getEntryConceptClassUuid(entry);
25
33
 
34
+ // Extract observation-level reference ranges from FHIR Observation referenceRange field
35
+ const observationRanges = extractObservationReferenceRanges(entry);
36
+ // Extract observation-level interpretation from FHIR Observation interpretation field
37
+ const observationInterpretation = extractObservationInterpretation(entry);
38
+
26
39
  if (entry.hasMember) {
27
40
  // is a panel
28
41
  entry.members = new Array(entry.hasMember.length);
@@ -31,17 +44,59 @@ function parseSingleObsData(
31
44
  });
32
45
  } else {
33
46
  // is a single test
34
- entry.meta = metaInfomation[entry.conceptClass];
35
- }
36
47
 
37
- if (entry.valueQuantity) {
38
- entry.value = entry.valueQuantity.value;
39
- delete entry.valueQuantity;
40
- }
48
+ // Extract value FIRST before computing interpretation
49
+ if (entry.valueQuantity) {
50
+ entry.value = String(entry.valueQuantity.value);
51
+ delete entry.valueQuantity;
52
+ } else if (entry.valueCodeableConcept) {
53
+ entry.value = entry.valueCodeableConcept.coding?.[0]?.display;
54
+ delete entry.valueCodeableConcept;
55
+ } else if (entry.valueString) {
56
+ entry.value = entry.valueString;
57
+ delete entry.valueString;
58
+ }
41
59
 
42
- if (entry.valueCodeableConcept) {
43
- entry.value = entry?.valueCodeableConcept.coding[0].display;
44
- delete entry.valueCodeableConcept;
60
+ const conceptMeta = metaInfomation[entry.conceptClass];
61
+
62
+ // Node-level (concept-level) reference ranges
63
+ const nodeRanges: ReferenceRanges = {
64
+ hiAbsolute: conceptMeta.hiAbsolute,
65
+ hiCritical: conceptMeta.hiCritical,
66
+ hiNormal: conceptMeta.hiNormal,
67
+ lowAbsolute: conceptMeta.lowAbsolute,
68
+ lowCritical: conceptMeta.lowCritical,
69
+ lowNormal: conceptMeta.lowNormal,
70
+ units: conceptMeta.units,
71
+ };
72
+
73
+ // Merge observation-level and concept-level ranges (observation takes precedence)
74
+ const selectedRanges = selectReferenceRange(observationRanges, nodeRanges);
75
+
76
+ // Create merged meta with observation-level ranges taking precedence
77
+ const mergedMeta: ObsMetaInfo = {
78
+ ...conceptMeta,
79
+ // Update meta with merged ranges
80
+ hiAbsolute: selectedRanges?.hiAbsolute ?? conceptMeta.hiAbsolute,
81
+ hiCritical: selectedRanges?.hiCritical ?? conceptMeta.hiCritical,
82
+ hiNormal: selectedRanges?.hiNormal ?? conceptMeta.hiNormal,
83
+ lowAbsolute: selectedRanges?.lowAbsolute ?? conceptMeta.lowAbsolute,
84
+ lowCritical: selectedRanges?.lowCritical ?? conceptMeta.lowCritical,
85
+ lowNormal: selectedRanges?.lowNormal ?? conceptMeta.lowNormal,
86
+ units: selectedRanges?.units ?? conceptMeta.units,
87
+ // Update range string with merged ranges
88
+ range: selectedRanges ? formatReferenceRange(selectedRanges, selectedRanges.units) : conceptMeta.range,
89
+ };
90
+
91
+ // Always update assessValue to use merged ranges (computed after mergedMeta to avoid unsafe cast)
92
+ // This ensures assessValue is computed even when only concept-level ranges exist
93
+ mergedMeta.assessValue = assessValue(mergedMeta);
94
+
95
+ entry.meta = mergedMeta;
96
+
97
+ // Use observation-level interpretation if available, otherwise compute using merged ranges
98
+ entry.interpretation =
99
+ observationInterpretation ?? (mergedMeta.assessValue ? mergedMeta.assessValue(entry.value) : 'NORMAL');
45
100
  }
46
101
 
47
102
  entry.name = testConceptNameMap[entry.conceptClass];
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useEffect, useState } from 'react';
2
2
  import { type PatientData } from '@openmrs/esm-patient-common-lib';
3
3
  import loadPatientData from './loadPatientData';
4
4
 
@@ -9,13 +9,13 @@ type LoadingState = {
9
9
  };
10
10
 
11
11
  const usePatientResultsData = (patientUuid: string): LoadingState => {
12
- const [state, setState] = React.useState<LoadingState>({
12
+ const [state, setState] = useState<LoadingState>({
13
13
  sortedObs: {},
14
14
  loaded: false,
15
15
  error: undefined,
16
16
  });
17
17
 
18
- React.useEffect(() => {
18
+ useEffect(() => {
19
19
  let unmounted = false;
20
20
  if (patientUuid) {
21
21
  const [data, reloadedDataPromise] = loadPatientData(patientUuid);
@@ -77,7 +77,7 @@ const CommonDataTable: React.FC<CommonDataTableProps> = ({ title, data, descript
77
77
  {rows.map((row, i) => (
78
78
  <TypedTableRow
79
79
  key={row.id}
80
- interpretation={data[i]?.value?.interpretation as OBSERVATION_INTERPRETATION}
80
+ interpretation={data[i]?.interpretation as OBSERVATION_INTERPRETATION}
81
81
  {...getRowProps({ row })}
82
82
  >
83
83
  {row.cells.map((cell) => {
@@ -23,24 +23,36 @@ export type OverviewPanelEntry = [string, string, Array<OverviewPanelData>, Date
23
23
 
24
24
  export function parseSingleEntry(entry: ObsRecord, type: string, panelName: string): Array<OverviewPanelData> {
25
25
  if (type === 'Test') {
26
+ // Use observation-level interpretation set during data loading
27
+ const interpretation = entry.interpretation || 'NORMAL';
26
28
  return [
27
29
  {
28
30
  id: entry.id,
29
31
  name: panelName,
30
32
  range: entry.meta?.range || '--',
31
- interpretation: entry.meta.assessValue ? entry.meta.assessValue(entry.value) : '--',
32
- value: entry.value,
33
+ interpretation,
34
+ value: {
35
+ value: entry.value,
36
+ interpretation,
37
+ },
33
38
  },
34
39
  ];
35
40
  } else {
36
- return entry.members.map((gm) => ({
37
- id: gm.id,
38
- key: gm.id,
39
- name: gm.name,
40
- range: gm.meta?.range || '--',
41
- interpretation: gm.meta.assessValue(gm.value),
42
- value: gm.value,
43
- }));
41
+ return entry.members.map((member) => {
42
+ // Use observation-level interpretation set during data loading
43
+ const interpretation = member.interpretation || 'NORMAL';
44
+ return {
45
+ id: member.id,
46
+ key: member.id,
47
+ name: member.name,
48
+ range: member.meta?.range || '--',
49
+ interpretation,
50
+ value: {
51
+ value: member.value,
52
+ interpretation,
53
+ },
54
+ };
55
+ });
44
56
  }
45
57
  }
46
58
 
@@ -1,6 +1,7 @@
1
1
  import React, { useContext, useEffect, useRef, useState } from 'react';
2
2
  import classNames from 'classnames';
3
- import { type TFunction, useTranslation } from 'react-i18next';
3
+ import { useTranslation } from 'react-i18next';
4
+ import type { TFunction } from 'i18next';
4
5
  import { ContentSwitcher, Switch, Button } from '@carbon/react';
5
6
  import { EmptyState, ErrorState } from '@openmrs/esm-patient-common-lib';
6
7
  import { RenewIcon, useConfig, useLayoutType } from '@openmrs/esm-framework';
@@ -22,14 +23,14 @@ interface RefreshDataButtonProps {
22
23
 
23
24
  interface ResultsViewerProps {
24
25
  basePath: string;
25
- patientUuid?: string;
26
+ patientUuid: string;
26
27
  }
27
28
 
28
29
  const RoutedResultsViewer: React.FC<ResultsViewerProps> = ({ basePath, patientUuid }) => {
29
30
  const { t } = useTranslation();
30
31
  const config = useConfig<ConfigObject>();
31
32
  const conceptUuids = config.resultsViewerConcepts.map((concept) => concept.conceptUuid) ?? [];
32
- const { roots, isLoading, error } = useGetManyObstreeData(conceptUuids);
33
+ const { roots, isLoading, error } = useGetManyObstreeData(patientUuid, conceptUuids);
33
34
 
34
35
  if (error) {
35
36
  return <ErrorState error={error} headerTitle={t('dataLoadError', 'Data Load Error')} />;
@@ -19,9 +19,10 @@ interface TreeViewProps {
19
19
  error?: string;
20
20
  }
21
21
 
22
- const GroupedPanelsTables: React.FC<{ className: string; loadingPanelData: boolean }> = ({
22
+ const GroupedPanelsTables: React.FC<{ patientUuid: string; className: string; loadingPanelData: boolean }> = ({
23
23
  className,
24
24
  loadingPanelData,
25
+ patientUuid,
25
26
  }) => {
26
27
  const { t } = useTranslation();
27
28
  const { checkboxes, someChecked, tableData } = useContext(FilterContext);
@@ -70,6 +71,7 @@ const GroupedPanelsTables: React.FC<{ className: string; loadingPanelData: boole
70
71
  })}
71
72
  >
72
73
  <IndividualResultsTable
74
+ patientUuid={patientUuid}
73
75
  isLoading={loadingPanelData}
74
76
  subRows={filteredSubRows}
75
77
  index={index}
@@ -88,7 +90,7 @@ const TreeView: React.FC<TreeViewProps> = ({ patientUuid, expanded, view }) => {
88
90
  const [showTreeOverlay, setShowTreeOverlay] = useState(false);
89
91
  const config = useConfig<ConfigObject>();
90
92
  const conceptUuids = config?.resultsViewerConcepts?.map((c) => c.conceptUuid) ?? [];
91
- const { roots, error } = useGetManyObstreeData(conceptUuids);
93
+ const { roots, error } = useGetManyObstreeData(patientUuid, conceptUuids);
92
94
 
93
95
  const { timelineData, tableData, totalResultsCount, filteredResultsCount, resetTree, isLoading } =
94
96
  useContext(FilterContext);
@@ -113,7 +115,11 @@ const TreeView: React.FC<TreeViewProps> = ({ patientUuid, expanded, view }) => {
113
115
  {!isLoading && view === 'over-time' ? (
114
116
  <GroupedTimeline patientUuid={patientUuid} />
115
117
  ) : view === 'individual-test' ? (
116
- <GroupedPanelsTables className={styles.groupPanelsTables} loadingPanelData={isLoading} />
118
+ <GroupedPanelsTables
119
+ className={styles.groupPanelsTables}
120
+ loadingPanelData={isLoading}
121
+ patientUuid={patientUuid}
122
+ />
117
123
  ) : (
118
124
  <DataTableSkeleton role="progressbar" />
119
125
  )}
@@ -160,7 +166,11 @@ const TreeView: React.FC<TreeViewProps> = ({ patientUuid, expanded, view }) => {
160
166
  <DataTableSkeleton />
161
167
  ) : view === 'individual-test' ? (
162
168
  <div className={styles.panelViewTimeline}>
163
- <GroupedPanelsTables className={styles.groupPanelsTables} loadingPanelData={isLoading} />
169
+ <GroupedPanelsTables
170
+ patientUuid={patientUuid}
171
+ className={styles.groupPanelsTables}
172
+ loadingPanelData={isLoading}
173
+ />
164
174
  </div>
165
175
  ) : view === 'over-time' ? (
166
176
  <GroupedTimeline patientUuid={patientUuid} />
@@ -3,6 +3,11 @@ import useSWR from 'swr';
3
3
  import { type FetchResponse, openmrsFetch, showSnackbar, restBaseUrl } from '@openmrs/esm-framework';
4
4
  import { assessValue } from '../loadPatientTestData/helpers';
5
5
  import { type TreeNode } from '../filter/filter-types';
6
+ import {
7
+ selectReferenceRange,
8
+ formatReferenceRange,
9
+ type ReferenceRanges,
10
+ } from '../grouped-timeline/reference-range-helpers';
6
11
 
7
12
  function computeTrendlineData(treeNode: TreeNode): Array<TreeNode> {
8
13
  const tests: Array<TreeNode> = [];
@@ -11,12 +16,50 @@ function computeTrendlineData(treeNode: TreeNode): Array<TreeNode> {
11
16
  }
12
17
  treeNode?.subSets.forEach((subNode) => {
13
18
  if ((subNode as TreeNode)?.obs) {
14
- const TreeNode = subNode as TreeNode;
15
- const assess = assessValue(TreeNode);
19
+ const subTreeNode = subNode as TreeNode;
20
+ // Node-level reference ranges for trendline (aggregate view)
21
+ const nodeRanges: ReferenceRanges = {
22
+ hiAbsolute: subTreeNode.hiAbsolute,
23
+ hiCritical: subTreeNode.hiCritical,
24
+ hiNormal: subTreeNode.hiNormal,
25
+ lowAbsolute: subTreeNode.lowAbsolute,
26
+ lowCritical: subTreeNode.lowCritical,
27
+ lowNormal: subTreeNode.lowNormal,
28
+ units: subTreeNode.units,
29
+ };
30
+
31
+ const range = formatReferenceRange(nodeRanges, subTreeNode.units);
32
+
33
+ const processedObs = subTreeNode.obs.map((ob) => {
34
+ // Note: Units are only at the concept/node level, not observation-level
35
+ const observationRanges: ReferenceRanges | undefined =
36
+ ob.lowNormal !== undefined || ob.hiNormal !== undefined
37
+ ? {
38
+ hiAbsolute: ob.hiAbsolute,
39
+ hiCritical: ob.hiCritical,
40
+ hiNormal: ob.hiNormal,
41
+ lowAbsolute: ob.lowAbsolute,
42
+ lowCritical: ob.lowCritical,
43
+ lowNormal: ob.lowNormal,
44
+ }
45
+ : undefined;
46
+
47
+ const selectedRanges = selectReferenceRange(observationRanges, nodeRanges);
48
+ const assess = selectedRanges ? assessValue(selectedRanges) : assessValue(nodeRanges);
49
+ const interpretation = ob.interpretation ?? assess(ob.value);
50
+
51
+ return {
52
+ ...ob,
53
+ interpretation,
54
+ lowNormal: ob.lowNormal,
55
+ hiNormal: ob.hiNormal,
56
+ };
57
+ });
58
+
16
59
  tests.push({
17
- ...TreeNode,
18
- range: TreeNode.hiNormal && TreeNode.lowNormal ? `${TreeNode.lowNormal} - ${TreeNode.hiNormal}` : '',
19
- obs: TreeNode.obs.map((ob) => ({ ...ob, interpretation: assess(ob.value) })),
60
+ ...subTreeNode,
61
+ range,
62
+ obs: processedObs,
20
63
  });
21
64
  } else if (subNode?.subSets) {
22
65
  const subTreesTests = computeTrendlineData(subNode as TreeNode); // recursion
package/src/types.ts CHANGED
@@ -67,6 +67,14 @@ export interface FHIRObservationResource {
67
67
  hasMember?: Array<{
68
68
  reference: string;
69
69
  }>;
70
+ interpretation?: Array<{
71
+ coding: Array<{
72
+ code: string;
73
+ display: string;
74
+ system?: string;
75
+ }>;
76
+ text?: string;
77
+ }>;
70
78
  }
71
79
 
72
80
  export interface Concept {
@@ -107,7 +115,7 @@ export interface ConceptMeta {
107
115
  range: string;
108
116
  }
109
117
 
110
- export interface ObsRecord extends FHIRObservationResource {
118
+ export interface ObsRecord extends Omit<FHIRObservationResource, 'interpretation'> {
111
119
  conceptUuid: string;
112
120
  relatedObs: Array<ObsRecord>;
113
121
  meta: ConceptMeta;
@@ -142,6 +150,15 @@ export type Observation = {
142
150
  obsDatetime: string;
143
151
  value: string;
144
152
  interpretation: OBSERVATION_INTERPRETATION;
153
+ // Observation-level reference ranges (criteria-based)
154
+ // Note: Units are only at the concept/node level (TestResult.units), not observation-level
155
+ hiAbsolute?: number;
156
+ hiCritical?: number;
157
+ hiNormal?: number;
158
+ lowAbsolute?: number;
159
+ lowCritical?: number;
160
+ lowNormal?: number;
161
+ range?: string; // Formatted range string for display
145
162
  };
146
163
 
147
164
  export type TestResult = {
@@ -168,6 +185,8 @@ export type MappedObservation = {
168
185
  units: string;
169
186
  lowCritical: number;
170
187
  hiNormal: number;
188
+ hiAbsolute?: number;
189
+ hiCritical?: number;
171
190
  flatName: string;
172
191
  hasData: boolean;
173
192
  range: string;
@@ -183,12 +202,3 @@ export interface GroupedObservation {
183
202
  flatName: string;
184
203
  entries: MappedObservation[];
185
204
  }
186
-
187
- export interface TestOrderBasketItem extends OrderBasketItem {
188
- testType: {
189
- label: string;
190
- conceptUuid: string;
191
- };
192
- orderReason?: string;
193
- specimenSource?: string;
194
- }
@@ -25,10 +25,12 @@
25
25
  "directlyAddToBasket": "Add to basket",
26
26
  "discard": "Discard",
27
27
  "editLabResults": "Edit laboratory tests",
28
+ "editOrderableForOrderType": "Edit {{orderTypeDisplay}}",
28
29
  "editTestResults": "Edit test results",
29
30
  "endDate": "End date",
30
31
  "error": "Error",
31
32
  "errorFetchingTestTypes": "Error fetching results for \"{{searchTerm}}\"",
33
+ "errorSavingLabOrder": "Error saving lab order",
32
34
  "expandAll": "Expand all",
33
35
  "female": "Female",
34
36
  "gender": "Gender",
@@ -13,7 +13,7 @@
13
13
  "clearFilters": "Effacer les filtres",
14
14
  "clearSearchResults": "Effacer les résultats",
15
15
  "closeSearchBar": "Fermer la recherche",
16
- "collapseAll": "Collapse all",
16
+ "collapseAll": "Tout réduire",
17
17
  "confirmationText": "Voulez-vous modifier les résultats du test {{test}} pour le patient suivant ?",
18
18
  "data": "donnée",
19
19
  "dataLoadError": "Erreur lors du chargement des données",
@@ -29,7 +29,7 @@
29
29
  "endDate": "Date de fin",
30
30
  "error": "Erreur",
31
31
  "errorFetchingTestTypes": "Erreur lors de la récupération des résultats pour « {{searchTerm}} »",
32
- "expandAll": "Expand all",
32
+ "expandAll": "Tout étendre",
33
33
  "female": "Féminin",
34
34
  "gender": "Sexe",
35
35
  "goToDrugOrderForm": "Prescrire",
package/dist/1935.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"1935.js","mappings":"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","sources":["webpack://@openmrs/esm-patient-tests-app/./src/test-orders/add-test-order/test-type-search.scss","webpack://@openmrs/esm-patient-tests-app/./src/test-orders/add-test-order/test-order-form.scss","webpack://@openmrs/esm-patient-tests-app/./src/test-orders/api.ts","webpack://@openmrs/esm-patient-tests-app/./src/test-orders/add-test-order/test-order-form.scss?3103","webpack://@openmrs/esm-patient-tests-app/./src/test-orders/add-test-order/test-order-form.component.tsx","webpack://@openmrs/esm-patient-tests-app/./src/test-orders/add-test-order/test-order.ts","webpack://@openmrs/esm-patient-tests-app/./src/test-orders/add-test-order/test-type-search.scss?00d3","webpack://@openmrs/esm-patient-tests-app/./src/test-orders/add-test-order/test-type-search.component.tsx","webpack://@openmrs/esm-patient-tests-app/./src/test-orders/add-test-order/useTestTypes.ts","webpack://@openmrs/esm-patient-tests-app/./src/test-orders/add-test-order/add-test-order.scss?7d74","webpack://@openmrs/esm-patient-tests-app/./src/test-orders/add-test-order/add-test-order.workspace.tsx","webpack://@openmrs/esm-patient-tests-app/./src/test-orders/add-test-order/add-test-order.scss"],"names":["___CSS_LOADER_EXPORT___","push","module","id","locals","careSettingUuid","useOrderReasons","conceptUuids","useSWRImmutable","length","chunk","map","partition","restBaseUrl","join","getConceptReferenceUrls","key","Promise","all","url","openmrsFetch","data","error","isLoading","ob","reduce","acc","response","orderReasons","Object","values","value","uuid","display","showSnackbar","title","name","subtitle","message","kind","prepTestOrderPostData","order","patientUuid","encounterUuid","action","type","patient","careSetting","orderer","encounter","concept","testType","conceptUuid","instructions","orderReason","accessionNumber","urgency","scheduledDate","toOmrsIsoString","previousOrder","Error","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","LabOrderForm","initialOrder","config","session","closeWorkspace","closeWorkspaceWithSavedChanges","promptBeforeClosing","orderTypeUuid","orderableConceptSets","useTranslation","t","isTablet","useLayoutType","useSession","useOrderBasket","useMemo","orders","setOrders","useState","showErrorNotification","setShowErrorNotification","useConfig","useOrderType","orderType","orderReasonRequired","isLoadingOrderType","labTestsWithOrderReasons","find","c","labTestUuid","required","labOrderFormSchema","z","object","string","nullish","refine","label","required_error","invalid_type_error","optional","date","Boolean","path","useForm","mode","resolver","zodResolver","defaultValues","control","handleSubmit","formState","errors","isDirty","setValue","isScheduledDateRequired","watch","orderReasonUuids","filterItemsByName","useCallback","menu","inputValue","toLowerCase","itemDisplay","item","includes","handleFormSubmission","finalizedOrder","currentProvider","newOrders","existingOrder","order2","order1","indexOf","isOrderIncomplete","onWorkspaceClose","launchWorkspace","closeWorkspaceGroup","cancelOrder","filter","handleUpdateUrgency","fieldOnChange","e","target","useEffect","responsiveSize","Form","className","styles","orderForm","onSubmit","div","form","ExtensionSlot","state","Grid","gridRow","Column","lg","md","sm","InputWrapper","testTypeLabel","p","showReferenceNumberField","Controller","render","field","onChange","onBlur","TextInput","invalid","invalidText","labelText","maxLength","size","fieldState","Select","priorityOptions","option","SelectItem","text","OpenmrsDatePicker","minDate","Date","ComboBox","items","itemToString","selectedItem","shouldFilterItem","titleText","TextArea","enableCounter","maxCount","errorContainer","InlineNotification","lowContrast","onClose","ButtonSet","classNames","buttonSet","tabletButtonSet","desktopButtonSet","Button","button","onClick","children","Layer","level","TestTypeSearch","openLabForm","searchTerm","setSearchTerm","debouncedSearchTerm","useDebounce","searchInputRef","useRef","focusAndClearSearchInput","current","focus","ignoreChanges","handleSearchTermChange","event","ResponsiveWrapper","Search","autoFocus","placeholder","ref","TestTypeSearchResults","useTestTypes","useOrderableConceptSets","concepts","mappedTestTypes","synonyms","testTypes","TestTypeSearchSkeleton","Tile","emptyState","h4","heading","bodyShort01","span","container","orderBasketSearchResultsHeader","searchResultsCount","count","resultsContainer","TestTypeSearchResultItem","openOrderForm","separatorContainer","separator","iconDescription","link","role","tabIndex","testTypeAlreadyInBasket","some","createLabOrder","orderableConcept","createEmptyLabOrder","addToBasket","labOrder","removeFromBasket","searchResultTile","tabletSearchResultTile","searchResultTileContent","text02","searchResultActions","renderIcon","props","ShoppingCartArrowUp","ShoppingCartArrowDownIcon","ArrowRightIcon","tileClassName","desktopSearchResultTile","skeletonTile","buttonSize","searchResultSkeletonWrapper","SkeletonText","searchResultCntSkeleton","ButtonSkeleton","Array","_","index","AddLabOrderWorkspace","setTitle","usePatientChartStore","currentLabOrder","setCurrentLabOrder","additionalTestOrderTypes","orderTypeDisplay","toLocaleLowerCase","labOrderTypeUuid","labOrderableConcepts","patientName","getPatientName","patientHeader","bodyShort02","capitalize","gender","age","birthDate","formatDate","parseDate","time","backButton","ArrowLeftIcon"],"sourceRoot":""}