@medplum/react 0.10.0 → 0.10.1
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/cjs/CodeableConceptInput.d.ts +1 -1
- package/dist/cjs/CodingInput.d.ts +1 -1
- package/dist/cjs/DiagnosticReportDisplay.d.ts +0 -1
- package/dist/cjs/ResourceHistoryTable.d.ts +0 -1
- package/dist/cjs/StatusBadge.d.ts +0 -1
- package/dist/cjs/ValueSetAutocomplete.d.ts +1 -1
- package/dist/cjs/index.d.ts +0 -7
- package/dist/cjs/index.js +120 -121
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.min.js +1 -1
- package/dist/cjs/index.min.js.map +1 -1
- package/dist/cjs/stories/{Tabs.stories.d.ts → CodeInput.stories.d.ts} +1 -1
- package/dist/{esm/stories/Tabs.stories.d.ts → cjs/stories/CodeableConceptInput.stories.d.ts} +1 -1
- package/dist/cjs/styles.css +7 -195
- package/dist/esm/CodeInput.js +2 -2
- package/dist/esm/CodeInput.js.map +1 -1
- package/dist/esm/CodeableConceptInput.d.ts +1 -1
- package/dist/esm/CodeableConceptInput.js +1 -1
- package/dist/esm/CodeableConceptInput.js.map +1 -1
- package/dist/esm/CodingInput.d.ts +1 -1
- package/dist/esm/CodingInput.js +1 -1
- package/dist/esm/CodingInput.js.map +1 -1
- package/dist/esm/DiagnosticReportDisplay.d.ts +0 -1
- package/dist/esm/DiagnosticReportDisplay.js +6 -2
- package/dist/esm/DiagnosticReportDisplay.js.map +1 -1
- package/dist/esm/ResourceHistoryTable.d.ts +0 -1
- package/dist/esm/ResourceHistoryTable.js +2 -1
- package/dist/esm/ResourceHistoryTable.js.map +1 -1
- package/dist/esm/ResourceTimeline.js +11 -9
- package/dist/esm/ResourceTimeline.js.map +1 -1
- package/dist/esm/SearchFilterEditor.js +4 -3
- package/dist/esm/SearchFilterEditor.js.map +1 -1
- package/dist/esm/StatusBadge.d.ts +0 -1
- package/dist/esm/StatusBadge.js +55 -1
- package/dist/esm/StatusBadge.js.map +1 -1
- package/dist/esm/ValueSetAutocomplete.d.ts +1 -1
- package/dist/esm/ValueSetAutocomplete.js +48 -40
- package/dist/esm/ValueSetAutocomplete.js.map +1 -1
- package/dist/esm/index.d.ts +0 -7
- package/dist/esm/index.js +0 -7
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +1 -1
- package/dist/esm/index.min.js.map +1 -1
- package/dist/esm/stories/CodeInput.stories.d.ts +6 -0
- package/dist/esm/stories/CodeableConceptInput.stories.d.ts +6 -0
- package/dist/esm/styles.css +7 -195
- package/package.json +5 -5
- package/dist/cjs/FooterLinks.d.ts +0 -6
- package/dist/cjs/Scrollable.d.ts +0 -9
- package/dist/cjs/Tab.d.ts +0 -12
- package/dist/cjs/TabList.d.ts +0 -10
- package/dist/cjs/TabPanel.d.ts +0 -6
- package/dist/cjs/TabSwitch.d.ts +0 -6
- package/dist/cjs/TitleBar.d.ts +0 -6
- package/dist/esm/FooterLinks.d.ts +0 -6
- package/dist/esm/FooterLinks.js +0 -8
- package/dist/esm/FooterLinks.js.map +0 -1
- package/dist/esm/Scrollable.d.ts +0 -9
- package/dist/esm/Scrollable.js +0 -12
- package/dist/esm/Scrollable.js.map +0 -1
- package/dist/esm/Tab.d.ts +0 -12
- package/dist/esm/Tab.js +0 -19
- package/dist/esm/Tab.js.map +0 -1
- package/dist/esm/TabList.d.ts +0 -10
- package/dist/esm/TabList.js +0 -23
- package/dist/esm/TabList.js.map +0 -1
- package/dist/esm/TabPanel.d.ts +0 -6
- package/dist/esm/TabPanel.js +0 -8
- package/dist/esm/TabPanel.js.map +0 -1
- package/dist/esm/TabSwitch.d.ts +0 -6
- package/dist/esm/TabSwitch.js +0 -16
- package/dist/esm/TabSwitch.js.map +0 -1
- package/dist/esm/TitleBar.d.ts +0 -6
- package/dist/esm/TitleBar.js +0 -8
- package/dist/esm/TitleBar.js.map +0 -1
|
@@ -5,6 +5,6 @@ export interface CodeableConceptInputProps {
|
|
|
5
5
|
name: string;
|
|
6
6
|
placeholder?: string;
|
|
7
7
|
defaultValue?: CodeableConcept;
|
|
8
|
-
onChange?: (value: CodeableConcept) => void;
|
|
8
|
+
onChange?: (value: CodeableConcept | undefined) => void;
|
|
9
9
|
}
|
|
10
10
|
export declare function CodeableConceptInput(props: CodeableConceptInputProps): JSX.Element;
|
|
@@ -5,6 +5,6 @@ export interface CodingInputProps {
|
|
|
5
5
|
name: string;
|
|
6
6
|
placeholder?: string;
|
|
7
7
|
defaultValue?: Coding;
|
|
8
|
-
onChange?: (value: Coding) => void;
|
|
8
|
+
onChange?: (value: Coding | undefined) => void;
|
|
9
9
|
}
|
|
10
10
|
export declare function CodingInput(props: CodingInputProps): JSX.Element;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { DiagnosticReport, Observation, Reference } from '@medplum/fhirtypes';
|
|
3
3
|
import './DiagnosticReportDisplay.css';
|
|
4
|
-
import './Table.css';
|
|
5
4
|
export interface DiagnosticReportDisplayProps {
|
|
6
5
|
value?: DiagnosticReport | Reference<DiagnosticReport>;
|
|
7
6
|
}
|
|
@@ -5,6 +5,6 @@ export interface ValueSetAutocompleteProps {
|
|
|
5
5
|
name: string;
|
|
6
6
|
placeholder?: string;
|
|
7
7
|
defaultValue?: ValueSetExpansionContains;
|
|
8
|
-
onChange?: (value: ValueSetExpansionContains) => void;
|
|
8
|
+
onChange?: (value: ValueSetExpansionContains | undefined) => void;
|
|
9
9
|
}
|
|
10
10
|
export declare function ValueSetAutocomplete(props: ValueSetAutocompleteProps): JSX.Element;
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -23,7 +23,6 @@ export * from './Document';
|
|
|
23
23
|
export * from './EncounterTimeline';
|
|
24
24
|
export * from './ErrorBoundary';
|
|
25
25
|
export * from './FhirPathTable';
|
|
26
|
-
export * from './FooterLinks';
|
|
27
26
|
export * from './Form';
|
|
28
27
|
export * from './FormSection';
|
|
29
28
|
export * from './FormUtils';
|
|
@@ -57,19 +56,13 @@ export * from './ResourcePropertyInput';
|
|
|
57
56
|
export * from './ResourceTable';
|
|
58
57
|
export * from './ResourceTimeline';
|
|
59
58
|
export * from './Scheduler';
|
|
60
|
-
export * from './Scrollable';
|
|
61
59
|
export * from './SearchControl';
|
|
62
60
|
export * from './SearchFieldEditor';
|
|
63
61
|
export * from './SearchFilterEditor';
|
|
64
62
|
export * from './SearchUtils';
|
|
65
63
|
export * from './ServiceRequestTimeline';
|
|
66
64
|
export * from './StatusBadge';
|
|
67
|
-
export * from './Tab';
|
|
68
|
-
export * from './TabList';
|
|
69
|
-
export * from './TabPanel';
|
|
70
|
-
export * from './TabSwitch';
|
|
71
65
|
export * from './Timeline';
|
|
72
|
-
export * from './TitleBar';
|
|
73
66
|
export * from './useResource';
|
|
74
67
|
export * from './utils';
|
|
75
68
|
export * from './utils/date';
|
package/dist/cjs/index.js
CHANGED
|
@@ -1228,51 +1228,59 @@
|
|
|
1228
1228
|
return (React__default["default"].createElement(core$1.TextInput, { name: props.name, placeholder: "Annotation text", defaultValue: value.text, onChange: (e) => setText(e.currentTarget.value) }));
|
|
1229
1229
|
}
|
|
1230
1230
|
|
|
1231
|
+
function valueSetElementToAutocompleteItem(element) {
|
|
1232
|
+
return {
|
|
1233
|
+
value: element.code,
|
|
1234
|
+
label: getDisplay(element),
|
|
1235
|
+
element,
|
|
1236
|
+
};
|
|
1237
|
+
}
|
|
1231
1238
|
function ValueSetAutocomplete(props) {
|
|
1232
1239
|
const medplum = useMedplum();
|
|
1233
|
-
const defaultValue = props
|
|
1234
|
-
const [
|
|
1235
|
-
const [
|
|
1236
|
-
const
|
|
1237
|
-
|
|
1238
|
-
|
|
1240
|
+
const { property, defaultValue } = props;
|
|
1241
|
+
const [textValues, setTextValues] = React.useState(defaultValue ? [defaultValue.code] : []);
|
|
1242
|
+
const [data, setData] = React.useState(defaultValue ? [valueSetElementToAutocompleteItem(defaultValue)] : []);
|
|
1243
|
+
const dataRef = React.useRef();
|
|
1244
|
+
dataRef.current = data;
|
|
1245
|
+
const loadValues = React.useCallback((input) => __awaiter(this, void 0, void 0, function* () {
|
|
1239
1246
|
var _a, _b;
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
}
|
|
1249
|
-
function handleChange(val) {
|
|
1250
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1251
|
-
setText(val);
|
|
1252
|
-
return loadValues(val);
|
|
1253
|
-
});
|
|
1254
|
-
}
|
|
1255
|
-
function handleSelect(item) {
|
|
1256
|
-
setValue(item.element);
|
|
1257
|
-
setText(item.value);
|
|
1258
|
-
setData([]);
|
|
1259
|
-
if (props.onChange) {
|
|
1260
|
-
props.onChange(item.element);
|
|
1247
|
+
const system = (_a = property.binding) === null || _a === void 0 ? void 0 : _a.valueSet;
|
|
1248
|
+
const valueSet = yield medplum.searchValueSet(system, input);
|
|
1249
|
+
const valueSetElements = (_b = valueSet.expansion) === null || _b === void 0 ? void 0 : _b.contains;
|
|
1250
|
+
const newData = [...dataRef.current];
|
|
1251
|
+
for (const valueSetElement of valueSetElements) {
|
|
1252
|
+
if (!newData.some((item) => item.value === valueSetElement.code)) {
|
|
1253
|
+
newData.push(valueSetElementToAutocompleteItem(valueSetElement));
|
|
1254
|
+
}
|
|
1261
1255
|
}
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
if (
|
|
1271
|
-
|
|
1256
|
+
setData(newData);
|
|
1257
|
+
}), [medplum, property, dataRef]);
|
|
1258
|
+
function handleChange(values) {
|
|
1259
|
+
setTextValues(values);
|
|
1260
|
+
const textValue = values[0];
|
|
1261
|
+
let currentItem = undefined;
|
|
1262
|
+
if (textValue) {
|
|
1263
|
+
currentItem = dataRef.current.find((item) => item.value === values[0]);
|
|
1264
|
+
if (!currentItem) {
|
|
1265
|
+
const newElement = { code: textValue, display: textValue };
|
|
1266
|
+
currentItem = valueSetElementToAutocompleteItem(newElement);
|
|
1267
|
+
setData([...dataRef.current, currentItem]);
|
|
1272
1268
|
}
|
|
1273
1269
|
}
|
|
1270
|
+
if (props.onChange) {
|
|
1271
|
+
props.onChange(currentItem === null || currentItem === void 0 ? void 0 : currentItem.element);
|
|
1272
|
+
}
|
|
1274
1273
|
}
|
|
1275
|
-
|
|
1274
|
+
React.useEffect(() => {
|
|
1275
|
+
loadValues('').catch(console.log);
|
|
1276
|
+
}, [loadValues]);
|
|
1277
|
+
return (React__default["default"].createElement(core$1.MultiSelect, { data: data, placeholder: props.placeholder, searchable: true, creatable: true, clearable: true, value: textValues, filter: (value, selected, item) => {
|
|
1278
|
+
var _a, _b;
|
|
1279
|
+
return !!(textValues.length === 0 &&
|
|
1280
|
+
!selected &&
|
|
1281
|
+
(((_a = item.element.display) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(value.toLowerCase().trim())) ||
|
|
1282
|
+
((_b = item.element.code) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes(value.toLowerCase().trim()))));
|
|
1283
|
+
}, onChange: handleChange, getCreateLabel: (query) => `+ Create ${query}`, onCreate: (query) => valueSetElementToAutocompleteItem({ code: query, display: query }) }));
|
|
1276
1284
|
}
|
|
1277
1285
|
function getDisplay(item) {
|
|
1278
1286
|
return item.display || item.code || '';
|
|
@@ -1281,7 +1289,7 @@
|
|
|
1281
1289
|
function CodeableConceptInput(props) {
|
|
1282
1290
|
const [value, setValue] = React.useState(props.defaultValue);
|
|
1283
1291
|
function handleChange(newValue) {
|
|
1284
|
-
const newConcept = valueSetElementToCodeableConcept(newValue);
|
|
1292
|
+
const newConcept = newValue && valueSetElementToCodeableConcept(newValue);
|
|
1285
1293
|
setValue(newConcept);
|
|
1286
1294
|
if (props.onChange) {
|
|
1287
1295
|
props.onChange(newConcept);
|
|
@@ -1322,16 +1330,16 @@
|
|
|
1322
1330
|
return (React__default["default"].createElement(ValueSetAutocomplete, { property: props.property, name: props.name, placeholder: props.placeholder, defaultValue: codeToValueSetElement(value), onChange: handleChange }));
|
|
1323
1331
|
}
|
|
1324
1332
|
function codeToValueSetElement(code) {
|
|
1325
|
-
return { code };
|
|
1333
|
+
return code ? { code } : undefined;
|
|
1326
1334
|
}
|
|
1327
1335
|
function valueSetElementToCode(element) {
|
|
1328
|
-
return element.code;
|
|
1336
|
+
return element === null || element === void 0 ? void 0 : element.code;
|
|
1329
1337
|
}
|
|
1330
1338
|
|
|
1331
1339
|
function CodingInput(props) {
|
|
1332
1340
|
const [value, setValue] = React.useState(props.defaultValue);
|
|
1333
1341
|
function handleChange(newValue) {
|
|
1334
|
-
const newConcept = valueSetElementToCoding(newValue);
|
|
1342
|
+
const newConcept = newValue && valueSetElementToCoding(newValue);
|
|
1335
1343
|
setValue(newConcept);
|
|
1336
1344
|
if (props.onChange) {
|
|
1337
1345
|
props.onChange(newConcept);
|
|
@@ -2058,7 +2066,7 @@
|
|
|
2058
2066
|
}
|
|
2059
2067
|
function ObservationTable(props) {
|
|
2060
2068
|
var _a;
|
|
2061
|
-
return (React__default["default"].createElement(
|
|
2069
|
+
return (React__default["default"].createElement(core$1.Table, { withBorder: true, withColumnBorders: true },
|
|
2062
2070
|
React__default["default"].createElement("thead", null,
|
|
2063
2071
|
React__default["default"].createElement("tr", null,
|
|
2064
2072
|
React__default["default"].createElement("th", null, "Test"),
|
|
@@ -2107,6 +2115,9 @@
|
|
|
2107
2115
|
if (!range) {
|
|
2108
2116
|
return null;
|
|
2109
2117
|
}
|
|
2118
|
+
if (range.text) {
|
|
2119
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null, range.text);
|
|
2120
|
+
}
|
|
2110
2121
|
return React__default["default"].createElement(RangeDisplay, { value: range });
|
|
2111
2122
|
}
|
|
2112
2123
|
/**
|
|
@@ -2118,7 +2129,7 @@
|
|
|
2118
2129
|
function isCritical(observation) {
|
|
2119
2130
|
var _a, _b, _c, _d;
|
|
2120
2131
|
const code = (_d = (_c = (_b = (_a = observation.interpretation) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.coding) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.code;
|
|
2121
|
-
return code === 'AA' || code === 'LL' || code === 'HH';
|
|
2132
|
+
return code === 'AA' || code === 'LL' || code === 'HH' || code === 'RR';
|
|
2122
2133
|
}
|
|
2123
2134
|
|
|
2124
2135
|
function ResourceDiffTable(props) {
|
|
@@ -2187,14 +2198,6 @@
|
|
|
2187
2198
|
return (React__default["default"].createElement(BackboneElementDisplay, { value: { type: value.resourceType, value }, ignoreMissingValues: props.ignoreMissingValues }));
|
|
2188
2199
|
}
|
|
2189
2200
|
|
|
2190
|
-
function Scrollable(props) {
|
|
2191
|
-
const containerHeight = props.height || '100%';
|
|
2192
|
-
const contentHeight = props.height ? props.height + 25 : '100%';
|
|
2193
|
-
const className = 'medplum-scrollable-content' + (props.className ? ` ${props.className}` : '');
|
|
2194
|
-
return (React__default["default"].createElement("div", { className: "medplum-scrollable-container", style: { height: containerHeight } },
|
|
2195
|
-
React__default["default"].createElement("div", { className: className, role: props.role, style: { height: contentHeight } }, props.children)));
|
|
2196
|
-
}
|
|
2197
|
-
|
|
2198
2201
|
/**
|
|
2199
2202
|
* ErrorBoundary is a React component that handles errors in its child components.
|
|
2200
2203
|
* See: https://reactjs.org/docs/error-boundaries.html
|
|
@@ -2422,10 +2425,13 @@
|
|
|
2422
2425
|
input.focus();
|
|
2423
2426
|
}
|
|
2424
2427
|
} },
|
|
2425
|
-
React__default["default"].createElement(core$1.Group, { noWrap: true },
|
|
2428
|
+
React__default["default"].createElement(core$1.Group, { spacing: "xs", noWrap: true, style: { width: '100%' } },
|
|
2426
2429
|
React__default["default"].createElement(ResourceAvatar, { value: sender }),
|
|
2427
|
-
React__default["default"].createElement(core$1.TextInput, { name: "text",
|
|
2428
|
-
|
|
2430
|
+
React__default["default"].createElement(core$1.TextInput, { name: "text", ref: inputRef, placeholder: "Add comment", style: { width: '100%', maxWidth: 300 } }),
|
|
2431
|
+
React__default["default"].createElement(core$1.ActionIcon, { type: "submit", radius: "xl", color: "blue", variant: "filled" },
|
|
2432
|
+
React__default["default"].createElement(icons.IconMessage, { size: 16 })),
|
|
2433
|
+
React__default["default"].createElement(AttachmentButton, { onUpload: createMedia }, (props) => (React__default["default"].createElement(core$1.ActionIcon, Object.assign({}, props, { radius: "xl", color: "blue", variant: "filled" }),
|
|
2434
|
+
React__default["default"].createElement(icons.IconCloudUpload, { size: 16 }))))))))),
|
|
2429
2435
|
items.map((item) => {
|
|
2430
2436
|
var _a;
|
|
2431
2437
|
if (item.resourceType === resource.resourceType && item.id === resource.id) {
|
|
@@ -2498,7 +2504,7 @@
|
|
|
2498
2504
|
}
|
|
2499
2505
|
function AuditEventTimelineItem(props) {
|
|
2500
2506
|
return (React__default["default"].createElement(TimelineItem, { resource: props.resource, padding: true, popupMenuItems: React__default["default"].createElement(TimelineItemPopupMenu, Object.assign({}, props)) },
|
|
2501
|
-
React__default["default"].createElement(
|
|
2507
|
+
React__default["default"].createElement(core$1.ScrollArea, null,
|
|
2502
2508
|
React__default["default"].createElement("pre", null, props.resource.outcomeDesc))));
|
|
2503
2509
|
}
|
|
2504
2510
|
function DiagnosticReportTimelineItem(props) {
|
|
@@ -3455,7 +3461,8 @@
|
|
|
3455
3461
|
}
|
|
3456
3462
|
}),
|
|
3457
3463
|
React__default["default"].createElement(FilterRowInput, { resourceType: resourceType, searchParams: searchParams, okText: "Add", onOk: onAddFilter })))),
|
|
3458
|
-
React__default["default"].createElement(core$1.
|
|
3464
|
+
React__default["default"].createElement(core$1.Group, { position: "right", mt: "xl" },
|
|
3465
|
+
React__default["default"].createElement(core$1.Button, { onClick: () => props.onOk(searchRef.current) }, "OK"))));
|
|
3459
3466
|
}
|
|
3460
3467
|
function FilterRowDisplay(props) {
|
|
3461
3468
|
const { filter } = props;
|
|
@@ -3487,7 +3494,7 @@
|
|
|
3487
3494
|
return (React__default["default"].createElement("tr", null,
|
|
3488
3495
|
React__default["default"].createElement("td", null,
|
|
3489
3496
|
React__default["default"].createElement(core$1.NativeSelect, { "data-testid": "filter-field", defaultValue: valueRef.current.code, onChange: (e) => setFilterCode(e.currentTarget.value), data: Object.keys(props.searchParams).map((param) => ({ value: param, label: buildFieldNameString(param) })) })),
|
|
3490
|
-
React__default["default"].createElement("td", null, operators && (React__default["default"].createElement(core$1.NativeSelect, { "data-testid": "filter-operation", defaultValue: value.operator, onChange: (e) => setFilterOperator(e.currentTarget.value), data: operators.map((op) => ({ value: op, label: getOpString(op) })) }))),
|
|
3497
|
+
React__default["default"].createElement("td", null, operators && (React__default["default"].createElement(core$1.NativeSelect, { "data-testid": "filter-operation", defaultValue: value.operator, onChange: (e) => setFilterOperator(e.currentTarget.value), data: ['', ...operators.map((op) => ({ value: op, label: getOpString(op) }))] }))),
|
|
3491
3498
|
React__default["default"].createElement("td", null, searchParam && value.operator && (React__default["default"].createElement(SearchFilterValueInput, { resourceType: props.resourceType, searchParam: searchParam, defaultValue: value.value, onChange: setFilterValue }))),
|
|
3492
3499
|
React__default["default"].createElement("td", null,
|
|
3493
3500
|
value.code && value.operator && value.value && (React__default["default"].createElement(core$1.Button, { compact: true, variant: "outline", onClick: () => {
|
|
@@ -4006,10 +4013,6 @@
|
|
|
4006
4013
|
}
|
|
4007
4014
|
const MemoizedFhirPathTable = React__default["default"].memo(FhirPathTable);
|
|
4008
4015
|
|
|
4009
|
-
function FooterLinks(props) {
|
|
4010
|
-
return React__default["default"].createElement("div", { className: "medplum-footer" }, props.children);
|
|
4011
|
-
}
|
|
4012
|
-
|
|
4013
4016
|
const searches = [
|
|
4014
4017
|
'$/_history',
|
|
4015
4018
|
'Communication?subject=$',
|
|
@@ -4725,8 +4728,61 @@
|
|
|
4725
4728
|
return options.map((option) => (Object.assign(Object.assign({}, option), { id: option.id || generateId() })));
|
|
4726
4729
|
}
|
|
4727
4730
|
|
|
4731
|
+
/*
|
|
4732
|
+
* Request status: https://hl7.org/fhir/valueset-request-status.html
|
|
4733
|
+
* draft, active, on-hold, revoked, completed, entered-in-error, unknown
|
|
4734
|
+
*
|
|
4735
|
+
* Publication status: https://hl7.org/fhir/valueset-publication-status.html
|
|
4736
|
+
* draft, active, retired, unknown
|
|
4737
|
+
*
|
|
4738
|
+
* Observation status: https://www.hl7.org/fhir/valueset-observation-status.html
|
|
4739
|
+
* registered, preliminary, final, amended, cancelled, entered-in-error, unknown
|
|
4740
|
+
*
|
|
4741
|
+
* DiagnosticReport status: https://hl7.org/fhir/valueset-diagnostic-report-status.html
|
|
4742
|
+
* registered, preliminary, final, amended, corrected, appended, cancelled, entered-in-error, unknown
|
|
4743
|
+
*
|
|
4744
|
+
* Task status: https://hl7.org/fhir/valueset-task-status.html
|
|
4745
|
+
* draft, requested, received, accepted, rejected, ready, cancelled, in-progress, on-hold, failed, completed, entered-in-error
|
|
4746
|
+
*
|
|
4747
|
+
* Appointment status: https://www.hl7.org/fhir/valueset-appointmentstatus.html
|
|
4748
|
+
* proposed, pending, booked, arrived, fulfilled, cancelled, noshow, entered-in-error, chcked-in, waitlist
|
|
4749
|
+
*/
|
|
4750
|
+
const statusToColor = {
|
|
4751
|
+
draft: 'blue',
|
|
4752
|
+
active: 'blue',
|
|
4753
|
+
'on-hold': 'yellow',
|
|
4754
|
+
revoked: 'red',
|
|
4755
|
+
completed: 'green',
|
|
4756
|
+
'entered-in-error': 'red',
|
|
4757
|
+
unknown: 'gray',
|
|
4758
|
+
retired: 'gray',
|
|
4759
|
+
registered: 'blue',
|
|
4760
|
+
preliminary: 'blue',
|
|
4761
|
+
final: 'green',
|
|
4762
|
+
amended: 'yellow',
|
|
4763
|
+
cancelled: 'red',
|
|
4764
|
+
requested: 'blue',
|
|
4765
|
+
received: 'blue',
|
|
4766
|
+
accepted: 'blue',
|
|
4767
|
+
rejected: 'red',
|
|
4768
|
+
ready: 'blue',
|
|
4769
|
+
'in-progress': 'blue',
|
|
4770
|
+
failed: 'red',
|
|
4771
|
+
proposed: 'blue',
|
|
4772
|
+
pending: 'blue',
|
|
4773
|
+
booked: 'blue',
|
|
4774
|
+
arrived: 'blue',
|
|
4775
|
+
fulfilled: 'green',
|
|
4776
|
+
noshow: 'red',
|
|
4777
|
+
'checked-in': 'blue',
|
|
4778
|
+
waitlist: 'gray',
|
|
4779
|
+
routine: 'gray',
|
|
4780
|
+
urgent: 'red',
|
|
4781
|
+
asap: 'red',
|
|
4782
|
+
stat: 'red',
|
|
4783
|
+
};
|
|
4728
4784
|
function StatusBadge(props) {
|
|
4729
|
-
return React__default["default"].createElement(
|
|
4785
|
+
return React__default["default"].createElement(core$1.Badge, { color: statusToColor[props.status] }, props.status);
|
|
4730
4786
|
}
|
|
4731
4787
|
|
|
4732
4788
|
function RequestGroupDisplay(props) {
|
|
@@ -5071,7 +5127,7 @@
|
|
|
5071
5127
|
if (!value) {
|
|
5072
5128
|
return React__default["default"].createElement("div", null, "Loading...");
|
|
5073
5129
|
}
|
|
5074
|
-
return (React__default["default"].createElement(
|
|
5130
|
+
return (React__default["default"].createElement(core$1.Table, { withBorder: true, withColumnBorders: true },
|
|
5075
5131
|
React__default["default"].createElement("thead", null,
|
|
5076
5132
|
React__default["default"].createElement("tr", null,
|
|
5077
5133
|
React__default["default"].createElement("th", null, "Author"),
|
|
@@ -5311,56 +5367,6 @@
|
|
|
5311
5367
|
}) }));
|
|
5312
5368
|
}
|
|
5313
5369
|
|
|
5314
|
-
function Tab(props) {
|
|
5315
|
-
let className = 'medplum-tab';
|
|
5316
|
-
if (props.selected) {
|
|
5317
|
-
className += ' selected';
|
|
5318
|
-
}
|
|
5319
|
-
function clickHandler(e) {
|
|
5320
|
-
killEvent(e);
|
|
5321
|
-
// The onClick prop is set by TabBar as parent component.
|
|
5322
|
-
// Using Tab outside of a TabBar is unsupported.
|
|
5323
|
-
props.onClick(props.name, e.button);
|
|
5324
|
-
}
|
|
5325
|
-
return (React__default["default"].createElement("a", { href: `#${props.name}`, role: "tab", "aria-selected": props.selected, className: className, onClick: clickHandler, onAuxClick: clickHandler }, props.label));
|
|
5326
|
-
}
|
|
5327
|
-
|
|
5328
|
-
function TabList(props) {
|
|
5329
|
-
return (React__default["default"].createElement(Scrollable, { className: "medplum-surface", height: 50 },
|
|
5330
|
-
React__default["default"].createElement("div", { role: "tablist", className: "medplum-tablist" },
|
|
5331
|
-
React__default["default"].createElement("div", { className: "medplum-tablist-foreground" }, React__default["default"].Children.map(props.children, (child, tabIndex) => {
|
|
5332
|
-
if (React__default["default"].isValidElement(child) && child.type === Tab) {
|
|
5333
|
-
return React__default["default"].cloneElement(child, {
|
|
5334
|
-
selected: child.props.name === props.value,
|
|
5335
|
-
onClick: props.onChange,
|
|
5336
|
-
tabIndex,
|
|
5337
|
-
});
|
|
5338
|
-
}
|
|
5339
|
-
else {
|
|
5340
|
-
return null;
|
|
5341
|
-
}
|
|
5342
|
-
})))));
|
|
5343
|
-
}
|
|
5344
|
-
|
|
5345
|
-
function TabPanel(props) {
|
|
5346
|
-
return React__default["default"].createElement("div", { role: "tabpanel" }, props.children);
|
|
5347
|
-
}
|
|
5348
|
-
|
|
5349
|
-
function TabSwitch(props) {
|
|
5350
|
-
return (React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].Children.map(props.children, (child) => {
|
|
5351
|
-
if (React__default["default"].isValidElement(child) && child.type === TabPanel && child.props.name === props.value) {
|
|
5352
|
-
return child;
|
|
5353
|
-
}
|
|
5354
|
-
else {
|
|
5355
|
-
return null;
|
|
5356
|
-
}
|
|
5357
|
-
})));
|
|
5358
|
-
}
|
|
5359
|
-
|
|
5360
|
-
function TitleBar(props) {
|
|
5361
|
-
return React__default["default"].createElement("div", { className: "medplum-title-bar" }, props.children);
|
|
5362
|
-
}
|
|
5363
|
-
|
|
5364
5370
|
exports.AddressDisplay = AddressDisplay;
|
|
5365
5371
|
exports.AddressInput = AddressInput;
|
|
5366
5372
|
exports.AttachmentArrayDisplay = AttachmentArrayDisplay;
|
|
@@ -5387,7 +5393,6 @@
|
|
|
5387
5393
|
exports.EncounterTimeline = EncounterTimeline;
|
|
5388
5394
|
exports.ErrorBoundary = ErrorBoundary;
|
|
5389
5395
|
exports.FhirPathTable = FhirPathTable;
|
|
5390
|
-
exports.FooterLinks = FooterLinks;
|
|
5391
5396
|
exports.Form = Form;
|
|
5392
5397
|
exports.FormSection = FormSection;
|
|
5393
5398
|
exports.HumanNameDisplay = HumanNameDisplay;
|
|
@@ -5424,7 +5429,6 @@
|
|
|
5424
5429
|
exports.ResourceTable = ResourceTable;
|
|
5425
5430
|
exports.ResourceTimeline = ResourceTimeline;
|
|
5426
5431
|
exports.Scheduler = Scheduler;
|
|
5427
|
-
exports.Scrollable = Scrollable;
|
|
5428
5432
|
exports.SearchChangeEvent = SearchChangeEvent;
|
|
5429
5433
|
exports.SearchClickEvent = SearchClickEvent;
|
|
5430
5434
|
exports.SearchControl = SearchControl;
|
|
@@ -5434,13 +5438,8 @@
|
|
|
5434
5438
|
exports.ServiceRequestTimeline = ServiceRequestTimeline;
|
|
5435
5439
|
exports.SignInForm = SignInForm;
|
|
5436
5440
|
exports.StatusBadge = StatusBadge;
|
|
5437
|
-
exports.Tab = Tab;
|
|
5438
|
-
exports.TabList = TabList;
|
|
5439
|
-
exports.TabPanel = TabPanel;
|
|
5440
|
-
exports.TabSwitch = TabSwitch;
|
|
5441
5441
|
exports.Timeline = Timeline;
|
|
5442
5442
|
exports.TimelineItem = TimelineItem;
|
|
5443
|
-
exports.TitleBar = TitleBar;
|
|
5444
5443
|
exports.addDateEqualsFilter = addDateEqualsFilter;
|
|
5445
5444
|
exports.addDateFilter = addDateFilter;
|
|
5446
5445
|
exports.addDateFilterBetween = addDateFilterBetween;
|