@ltht-react/diagnosis-summary 2.0.88 → 2.0.90
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/README.md +22 -22
- package/lib/atoms/diagnosis-sub-header.d.ts +7 -0
- package/lib/atoms/diagnosis-sub-header.js +45 -0
- package/lib/atoms/diagnosis-sub-header.js.map +1 -0
- package/lib/atoms/diagnosis-sub-title.d.ts +7 -0
- package/lib/atoms/diagnosis-sub-title.js +45 -0
- package/lib/atoms/diagnosis-sub-title.js.map +1 -0
- package/lib/atoms/diagnosis-title.js +0 -4
- package/lib/atoms/diagnosis-title.js.map +1 -1
- package/lib/constants.d.ts +2 -0
- package/lib/constants.js +5 -0
- package/lib/constants.js.map +1 -0
- package/lib/organisms/diagnosis-summary.js +6 -3
- package/lib/organisms/diagnosis-summary.js.map +1 -1
- package/package.json +10 -10
- package/src/atoms/diagnosis-category.tsx +31 -31
- package/src/atoms/diagnosis-onset-estimated.tsx +39 -39
- package/src/atoms/diagnosis-status.tsx +38 -38
- package/src/atoms/diagnosis-sub-header.tsx +29 -0
- package/src/atoms/diagnosis-title.tsx +37 -39
- package/src/constants.ts +3 -0
- package/src/index.tsx +3 -3
- package/src/molecules/diagnosis-redacted.tsx +31 -31
- package/src/organisms/diagnosis-summary.tsx +168 -165
package/README.md
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
# DiagnosisSummary
|
|
2
|
-
|
|
3
|
-
<!-- STORY -->
|
|
4
|
-
|
|
5
|
-
### Import
|
|
6
|
-
|
|
7
|
-
```js
|
|
8
|
-
import DiagnosisSummary from '@ltht-react/diagnosis-summary'
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
### Usage
|
|
12
|
-
|
|
13
|
-
```jsx
|
|
14
|
-
<DiagnosisSummary title="Conditions" conditions={conditions} clickHandler={handleCLick} />
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
### Properties
|
|
18
|
-
|
|
19
|
-
| Prop | Required | Default | Type | Description |
|
|
20
|
-
| :------------- | :------- | :-------- | :---------- | :------------------------------------------------------------ |
|
|
21
|
-
| `conditions` | Yes | | Condition[] | Array of conditions to display |
|
|
22
|
-
| `clickHandler` | No | undefined | Function | Callback click handler containing the selected condition item |
|
|
1
|
+
# DiagnosisSummary
|
|
2
|
+
|
|
3
|
+
<!-- STORY -->
|
|
4
|
+
|
|
5
|
+
### Import
|
|
6
|
+
|
|
7
|
+
```js
|
|
8
|
+
import DiagnosisSummary from '@ltht-react/diagnosis-summary'
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Usage
|
|
12
|
+
|
|
13
|
+
```jsx
|
|
14
|
+
<DiagnosisSummary title="Conditions" conditions={conditions} clickHandler={handleCLick} />
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Properties
|
|
18
|
+
|
|
19
|
+
| Prop | Required | Default | Type | Description |
|
|
20
|
+
| :------------- | :------- | :-------- | :---------- | :------------------------------------------------------------ |
|
|
21
|
+
| `conditions` | Yes | | Condition[] | Array of conditions to display |
|
|
22
|
+
| `clickHandler` | No | undefined | Function | Callback click handler containing the selected condition item |
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
3
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
|
+
return cooked;
|
|
5
|
+
};
|
|
6
|
+
var __assign = (this && this.__assign) || function () {
|
|
7
|
+
__assign = Object.assign || function(t) {
|
|
8
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9
|
+
s = arguments[i];
|
|
10
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
11
|
+
t[p] = s[p];
|
|
12
|
+
}
|
|
13
|
+
return t;
|
|
14
|
+
};
|
|
15
|
+
return __assign.apply(this, arguments);
|
|
16
|
+
};
|
|
17
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
18
|
+
var t = {};
|
|
19
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
20
|
+
t[p] = s[p];
|
|
21
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
22
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
23
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
24
|
+
t[p[i]] = s[p[i]];
|
|
25
|
+
}
|
|
26
|
+
return t;
|
|
27
|
+
};
|
|
28
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
29
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
33
|
+
var styled_1 = __importDefault(require("@emotion/styled"));
|
|
34
|
+
var styles_1 = require("@ltht-react/styles");
|
|
35
|
+
var StyledConditionSubHeader = styled_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n color: ", ";\n text-align: left;\n font-size: smaller;\n padding-top: 0.25rem;\n text-decoration: ", ";\n"], ["\n color: ", ";\n text-align: left;\n font-size: smaller;\n padding-top: 0.25rem;\n text-decoration: ", ";\n"])), styles_1.TEXT_COLOURS.SECONDARY.VALUE, function (_a) {
|
|
36
|
+
var enteredInError = _a.enteredInError;
|
|
37
|
+
return (enteredInError ? 'line-through' : 'none');
|
|
38
|
+
});
|
|
39
|
+
var DiagnosisSubHeader = function (_a) {
|
|
40
|
+
var text = _a.text, enteredInError = _a.enteredInError, rest = __rest(_a, ["text", "enteredInError"]);
|
|
41
|
+
return ((0, jsx_runtime_1.jsx)(StyledConditionSubHeader, __assign({ enteredInError: enteredInError }, rest, { children: text })));
|
|
42
|
+
};
|
|
43
|
+
exports.default = DiagnosisSubHeader;
|
|
44
|
+
var templateObject_1;
|
|
45
|
+
//# sourceMappingURL=diagnosis-sub-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosis-sub-header.js","sourceRoot":"","sources":["../../src/atoms/diagnosis-sub-header.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,2DAAoC;AAEpC,6CAAiD;AAEjD,IAAM,wBAAwB,GAAG,gBAAM,CAAC,GAAG,sLAAoB,aACpD,EAA4B,6FAIlB,EAAkE,KACtF,KALU,qBAAY,CAAC,SAAS,CAAC,KAAK,EAIlB,UAAC,EAAkB;QAAhB,cAAc,oBAAA;IAAO,OAAA,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC;AAA1C,CAA0C,CACtF,CAAA;AAED,IAAM,kBAAkB,GAAc,UAAC,EAAiC;IAA/B,IAAA,IAAI,UAAA,EAAE,cAAc,oBAAA,EAAK,IAAI,cAA/B,0BAAiC,CAAF;IAAO,OAAA,CAC3E,uBAAC,wBAAwB,aAAC,cAAc,EAAE,cAAc,IAAM,IAAI,cAC/D,IAAI,IACoB,CAC5B,CAAA;CAAA,CAAA;AAWD,kBAAe,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
3
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
|
+
return cooked;
|
|
5
|
+
};
|
|
6
|
+
var __assign = (this && this.__assign) || function () {
|
|
7
|
+
__assign = Object.assign || function(t) {
|
|
8
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9
|
+
s = arguments[i];
|
|
10
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
11
|
+
t[p] = s[p];
|
|
12
|
+
}
|
|
13
|
+
return t;
|
|
14
|
+
};
|
|
15
|
+
return __assign.apply(this, arguments);
|
|
16
|
+
};
|
|
17
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
18
|
+
var t = {};
|
|
19
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
20
|
+
t[p] = s[p];
|
|
21
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
22
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
23
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
24
|
+
t[p[i]] = s[p[i]];
|
|
25
|
+
}
|
|
26
|
+
return t;
|
|
27
|
+
};
|
|
28
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
29
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
33
|
+
var styled_1 = __importDefault(require("@emotion/styled"));
|
|
34
|
+
var styles_1 = require("@ltht-react/styles");
|
|
35
|
+
var StyledConditionSubHeader = styled_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n color: ", ";\n text-align: left;\n font-size: smaller;\n padding-top: 0.25rem;\n text-decoration: ", ";\n"], ["\n color: ", ";\n text-align: left;\n font-size: smaller;\n padding-top: 0.25rem;\n text-decoration: ", ";\n"])), styles_1.TEXT_COLOURS.SECONDARY.VALUE, function (_a) {
|
|
36
|
+
var enteredInError = _a.enteredInError;
|
|
37
|
+
return (enteredInError ? 'line-through' : 'none');
|
|
38
|
+
});
|
|
39
|
+
var DiagnosisSubHeader = function (_a) {
|
|
40
|
+
var text = _a.text, enteredInError = _a.enteredInError, rest = __rest(_a, ["text", "enteredInError"]);
|
|
41
|
+
return ((0, jsx_runtime_1.jsx)(StyledConditionSubHeader, __assign({ enteredInError: enteredInError }, rest, { children: text })));
|
|
42
|
+
};
|
|
43
|
+
exports.default = DiagnosisSubHeader;
|
|
44
|
+
var templateObject_1;
|
|
45
|
+
//# sourceMappingURL=diagnosis-sub-title.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosis-sub-title.js","sourceRoot":"","sources":["../../src/atoms/diagnosis-sub-title.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,2DAAoC;AAEpC,6CAAiD;AAEjD,IAAM,wBAAwB,GAAG,gBAAM,CAAC,GAAG,sLAAoB,aACpD,EAA4B,6FAIlB,EAAkE,KACtF,KALU,qBAAY,CAAC,SAAS,CAAC,KAAK,EAIlB,UAAC,EAAkB;QAAhB,cAAc,oBAAA;IAAO,OAAA,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC;AAA1C,CAA0C,CACtF,CAAA;AAED,IAAM,kBAAkB,GAAc,UAAC,EAAiC;IAA/B,IAAA,IAAI,UAAA,EAAE,cAAc,oBAAA,EAAK,IAAI,cAA/B,0BAAiC,CAAF;IAAO,OAAA,CAC3E,uBAAC,wBAAwB,aAAC,cAAc,EAAE,cAAc,IAAM,IAAI,cAC/D,IAAI,IACoB,CAC5B,CAAA;CAAA,CAAA;AAWD,kBAAe,kBAAkB,CAAA"}
|
|
@@ -44,10 +44,6 @@ var DiagnosisTitle = function (_a) {
|
|
|
44
44
|
if (condition.code)
|
|
45
45
|
codes.push(condition.code);
|
|
46
46
|
snippets.push((0, utils_1.codeableConceptTextSummary)(codes));
|
|
47
|
-
if (condition.clinicalStatus)
|
|
48
|
-
snippets.push((0, utils_1.titleCase)(condition.clinicalStatus));
|
|
49
|
-
if (condition.verificationStatus)
|
|
50
|
-
snippets.push((0, utils_1.titleCase)(condition.verificationStatus));
|
|
51
47
|
return ((0, jsx_runtime_1.jsx)(StyledConditionTitle, __assign({ enteredInError: enteredInError }, rest, { children: snippets.length > 0 ? snippets.join(', ') : 'Insufficient data provided' })));
|
|
52
48
|
};
|
|
53
49
|
exports.default = DiagnosisTitle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnosis-title.js","sourceRoot":"","sources":["../../src/atoms/diagnosis-title.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,2DAAoC;AAEpC,6CAAiD;AAEjD,
|
|
1
|
+
{"version":3,"file":"diagnosis-title.js","sourceRoot":"","sources":["../../src/atoms/diagnosis-title.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,2DAAoC;AAEpC,6CAAiD;AAEjD,2CAA8D;AAE9D,IAAM,oBAAoB,GAAG,gBAAM,CAAC,GAAG,sIAAoB,aAChD,EAAoB,6CAEV,EAAkE,KACtF,KAHU,qBAAY,CAAC,OAAO,EAEV,UAAC,EAAkB;QAAhB,cAAc,oBAAA;IAAO,OAAA,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC;AAA1C,CAA0C,CACtF,CAAA;AAED,IAAM,cAAc,GAAc,UAAC,EAAsC;IAApC,IAAA,SAAS,eAAA,EAAE,cAAc,oBAAA,EAAK,IAAI,cAApC,+BAAsC,CAAF;IACrE,IAAM,KAAK,GAAG,EAAE,CAAA;IAChB,IAAM,QAAQ,GAAG,EAAE,CAAA;IAEnB,IAAI,SAAS,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC9C,QAAQ,CAAC,IAAI,CAAC,IAAA,kCAA0B,EAAC,KAAK,CAAC,CAAC,CAAA;IAEhD,OAAO,CACL,uBAAC,oBAAoB,aAAC,cAAc,EAAE,cAAc,IAAM,IAAI,cAC3D,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,4BAA4B,IACpD,CACxB,CAAA;AACH,CAAC,CAAA;AAWD,kBAAe,cAAc,CAAA"}
|
package/lib/constants.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;AAAA,IAAM,kBAAkB,GAAG,+CAA+C,CAAA;AAE1E,kBAAe,kBAAkB,CAAA"}
|
|
@@ -36,10 +36,11 @@ var type_summary_1 = require("@ltht-react/type-summary");
|
|
|
36
36
|
var icon_1 = __importDefault(require("@ltht-react/icon"));
|
|
37
37
|
var button_1 = require("@ltht-react/button");
|
|
38
38
|
var styles_1 = require("@ltht-react/styles");
|
|
39
|
-
var diagnosis_category_1 = __importDefault(require("../atoms/diagnosis-category"));
|
|
40
39
|
var diagnosis_title_1 = __importDefault(require("../atoms/diagnosis-title"));
|
|
40
|
+
var diagnosis_sub_header_1 = __importDefault(require("../atoms/diagnosis-sub-header"));
|
|
41
41
|
var diagnosis_onset_estimated_1 = __importDefault(require("../atoms/diagnosis-onset-estimated"));
|
|
42
42
|
var diagnosis_redacted_1 = __importDefault(require("../molecules/diagnosis-redacted"));
|
|
43
|
+
var constants_1 = __importDefault(require("../constants"));
|
|
43
44
|
var StyledTitle = styled_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: inline-block;\n"], ["\n display: inline-block;\n"])));
|
|
44
45
|
var StyledSummary = styled_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: flex;\n justify-content: center;\n"], ["\n display: flex;\n justify-content: center;\n"])));
|
|
45
46
|
var StyledDescription = styled_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n flex-grow: 1;\n"], ["\n flex-grow: 1;\n"])));
|
|
@@ -50,12 +51,14 @@ var StyledDate = styled_1.default.div(templateObject_7 || (templateObject_7 = __
|
|
|
50
51
|
var IconButtonWrapper = (0, styled_1.default)(button_1.Button)(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n margin-right: 0.5rem;\n display: inline-block !important;\n margin-left: 0.5rem;\n width: auto;\n"], ["\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n margin-right: 0.5rem;\n display: inline-block !important;\n margin-left: 0.5rem;\n width: auto;\n"])));
|
|
51
52
|
var IconWrapper = styled_1.default.div(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n margin-left: 0.5rem;\n display: inline-block;\n"], ["\n margin-left: 0.5rem;\n display: inline-block;\n"])));
|
|
52
53
|
var DiagnosisSummary = function (_a) {
|
|
53
|
-
var
|
|
54
|
+
var _b, _c, _d;
|
|
55
|
+
var condition = _a.condition, extendedTemplateDisplayName = _a.extendedTemplateDisplayName, extensionTemplateDisplayName = _a.extensionTemplateDisplayName, extensionClickHandler = _a.extensionClickHandler, _e = _a.isReadOnly, isReadOnly = _e === void 0 ? false : _e, _f = _a.dateOnlyView, dateOnlyView = _f === void 0 ? false : _f, _g = _a.canExtendDiagnosis, canExtendDiagnosis = _g === void 0 ? false : _g, _h = _a.controls, controls = _h === void 0 ? [] : _h, rest = __rest(_a, ["condition", "extendedTemplateDisplayName", "extensionTemplateDisplayName", "extensionClickHandler", "isReadOnly", "dateOnlyView", "canExtendDiagnosis", "controls"]);
|
|
54
56
|
if (condition.metadata.isRedacted) {
|
|
55
57
|
return ((0, jsx_runtime_1.jsx)(StyledSummary, __assign({}, rest, { children: (0, jsx_runtime_1.jsx)(diagnosis_redacted_1.default, { condition: condition }) })));
|
|
56
58
|
}
|
|
57
59
|
var enteredInError = condition.verificationStatus === types_1.ConditionVerificationStatus.EnteredInError;
|
|
58
|
-
|
|
60
|
+
var snippetText = (_d = (_c = (_b = condition === null || condition === void 0 ? void 0 : condition.metadata.tag) === null || _b === void 0 ? void 0 : _b.find(function (coding) { return (coding === null || coding === void 0 ? void 0 : coding.system) === constants_1.default; })) === null || _c === void 0 ? void 0 : _c.display) !== null && _d !== void 0 ? _d : '';
|
|
61
|
+
return ((0, jsx_runtime_1.jsxs)(StyledSummary, __assign({}, rest, { children: [(0, jsx_runtime_1.jsxs)(StyledLeftContainer, { children: [(0, jsx_runtime_1.jsxs)(StyledDescription, { children: [(0, jsx_runtime_1.jsx)(StyledTitle, { children: (0, jsx_runtime_1.jsx)(diagnosis_title_1.default, { enteredInError: enteredInError, condition: condition }) }), extensionTemplateDisplayName && !isReadOnly && canExtendDiagnosis && !enteredInError && ((0, jsx_runtime_1.jsx)(IconButtonWrapper, { onClick: extensionClickHandler, type: "button", styling: { buttonStyle: 'clear' }, value: "", icon: (0, jsx_runtime_1.jsx)(icon_1.default, { type: "folder-plus", size: "medium" }), iconPlacement: "center", iconColour: styles_1.BTN_COLOURS.PRIMARY.VALUE, title: "This diagnosis can be extended further using form '".concat(extensionTemplateDisplayName, "' by clicking here") })), extendedTemplateDisplayName && ((0, jsx_runtime_1.jsx)(IconWrapper, { children: (0, jsx_runtime_1.jsx)(icon_1.default, { type: "comment", size: "medium", title: "This diagnosis has been extended beyond standard diagnosis with form '".concat(extendedTemplateDisplayName, "'.\n To view these extra details, click into the full diagnosis detail or edit the existing form.") }) })), (0, jsx_runtime_1.jsx)(diagnosis_sub_header_1.default, { enteredInError: enteredInError, text: snippetText })] }), !isReadOnly && controls.length > 0 && ((0, jsx_runtime_1.jsx)(StyledControlsContainer, { children: controls.map(function (props, index) { return ((0, jsx_runtime_1.jsx)(StyledButton, __assign({}, props), index)); }) }))] }), (0, jsx_runtime_1.jsxs)(StyledDate, { children: [(0, jsx_runtime_1.jsx)(type_summary_1.DateSummary, { enteredInError: enteredInError, datetime: condition === null || condition === void 0 ? void 0 : condition.assertedDate, dateOnlyView: dateOnlyView }), (0, jsx_runtime_1.jsx)(diagnosis_onset_estimated_1.default, { enteredInError: enteredInError, condition: condition })] })] })));
|
|
59
62
|
};
|
|
60
63
|
exports.default = DiagnosisSummary;
|
|
61
64
|
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnosis-summary.js","sourceRoot":"","sources":["../../src/organisms/diagnosis-summary.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,2DAAoC;AAEpC,2CAA0E;AAC1E,yDAAsD;AACtD,0DAAmC;AACnC,6CAAwD;AAExD,6CAA8G;AAC9G,
|
|
1
|
+
{"version":3,"file":"diagnosis-summary.js","sourceRoot":"","sources":["../../src/organisms/diagnosis-summary.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ltht-react/diagnosis-summary",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.90",
|
|
4
4
|
"description": "ltht-react clinical DiagnosisSummary component.",
|
|
5
5
|
"author": "LTHT",
|
|
6
6
|
"homepage": "",
|
|
@@ -28,15 +28,15 @@
|
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@emotion/react": "^11.0.0",
|
|
30
30
|
"@emotion/styled": "^11.0.0",
|
|
31
|
-
"@ltht-react/button": "^2.0.
|
|
32
|
-
"@ltht-react/hooks": "^2.0.
|
|
33
|
-
"@ltht-react/icon": "^2.0.
|
|
34
|
-
"@ltht-react/list": "^2.0.
|
|
35
|
-
"@ltht-react/styles": "^2.0.
|
|
36
|
-
"@ltht-react/type-summary": "^2.0.
|
|
37
|
-
"@ltht-react/types": "^2.0.
|
|
38
|
-
"@ltht-react/utils": "^2.0.
|
|
31
|
+
"@ltht-react/button": "^2.0.90",
|
|
32
|
+
"@ltht-react/hooks": "^2.0.90",
|
|
33
|
+
"@ltht-react/icon": "^2.0.90",
|
|
34
|
+
"@ltht-react/list": "^2.0.90",
|
|
35
|
+
"@ltht-react/styles": "^2.0.90",
|
|
36
|
+
"@ltht-react/type-summary": "^2.0.90",
|
|
37
|
+
"@ltht-react/types": "^2.0.90",
|
|
38
|
+
"@ltht-react/utils": "^2.0.90",
|
|
39
39
|
"react": "^18.2.0"
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "accb8dfc4d3ffaf51452d17eba3e967018dbce3d"
|
|
42
42
|
}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { FC, HTMLAttributes } from 'react'
|
|
2
|
-
import styled from '@emotion/styled'
|
|
3
|
-
|
|
4
|
-
import { TEXT_COLOURS } from '@ltht-react/styles'
|
|
5
|
-
import { Condition } from '@ltht-react/types'
|
|
6
|
-
import { codeableConceptDisplaySummary } from '@ltht-react/utils'
|
|
7
|
-
|
|
8
|
-
const StyledConditionCategory = styled.div<IStyledDescription>`
|
|
9
|
-
color: ${TEXT_COLOURS.SECONDARY.VALUE};
|
|
10
|
-
text-align: left;
|
|
11
|
-
font-size: smaller;
|
|
12
|
-
padding-top: 0.25rem;
|
|
13
|
-
text-decoration: ${({ enteredInError }) => (enteredInError ? 'line-through' : 'none')};
|
|
14
|
-
`
|
|
15
|
-
|
|
16
|
-
const DiagnosisCategory: FC<Props> = ({ condition, enteredInError, ...rest }) => (
|
|
17
|
-
<StyledConditionCategory enteredInError={enteredInError} {...rest}>
|
|
18
|
-
{codeableConceptDisplaySummary(condition.severity)}
|
|
19
|
-
</StyledConditionCategory>
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
interface Props extends HTMLAttributes<HTMLDivElement> {
|
|
23
|
-
condition: Condition
|
|
24
|
-
enteredInError: boolean
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
interface IStyledDescription {
|
|
28
|
-
enteredInError: boolean
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export default DiagnosisCategory
|
|
1
|
+
import { FC, HTMLAttributes } from 'react'
|
|
2
|
+
import styled from '@emotion/styled'
|
|
3
|
+
|
|
4
|
+
import { TEXT_COLOURS } from '@ltht-react/styles'
|
|
5
|
+
import { Condition } from '@ltht-react/types'
|
|
6
|
+
import { codeableConceptDisplaySummary } from '@ltht-react/utils'
|
|
7
|
+
|
|
8
|
+
const StyledConditionCategory = styled.div<IStyledDescription>`
|
|
9
|
+
color: ${TEXT_COLOURS.SECONDARY.VALUE};
|
|
10
|
+
text-align: left;
|
|
11
|
+
font-size: smaller;
|
|
12
|
+
padding-top: 0.25rem;
|
|
13
|
+
text-decoration: ${({ enteredInError }) => (enteredInError ? 'line-through' : 'none')};
|
|
14
|
+
`
|
|
15
|
+
|
|
16
|
+
const DiagnosisCategory: FC<Props> = ({ condition, enteredInError, ...rest }) => (
|
|
17
|
+
<StyledConditionCategory enteredInError={enteredInError} {...rest}>
|
|
18
|
+
{codeableConceptDisplaySummary(condition.severity)}
|
|
19
|
+
</StyledConditionCategory>
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
interface Props extends HTMLAttributes<HTMLDivElement> {
|
|
23
|
+
condition: Condition
|
|
24
|
+
enteredInError: boolean
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
interface IStyledDescription {
|
|
28
|
+
enteredInError: boolean
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export default DiagnosisCategory
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { FC, HTMLAttributes } from 'react'
|
|
2
|
-
import styled from '@emotion/styled'
|
|
3
|
-
|
|
4
|
-
import { TEXT_COLOURS } from '@ltht-react/styles'
|
|
5
|
-
import { Condition } from '@ltht-react/types'
|
|
6
|
-
|
|
7
|
-
import { getBooleanExtension } from '@ltht-react/utils'
|
|
8
|
-
|
|
9
|
-
const StyledOnsetEstimated = styled.div<IStyledDescription>`
|
|
10
|
-
color: ${TEXT_COLOURS.INFO};
|
|
11
|
-
font-size: x-small;
|
|
12
|
-
white-space: pre-wrap;
|
|
13
|
-
display: inline-block;
|
|
14
|
-
text-decoration: ${({ enteredInError }) => (enteredInError ? 'line-through' : 'none')};
|
|
15
|
-
`
|
|
16
|
-
|
|
17
|
-
const DiagnosisOnsetEstimated: FC<Props> = ({ condition, enteredInError, ...rest }) => {
|
|
18
|
-
const onsetDateEstimated = getBooleanExtension(
|
|
19
|
-
condition.extension,
|
|
20
|
-
'https://fhir.leedsth.nhs.uk/ValueSet/diagnosis-onset-date-estimated-1'
|
|
21
|
-
)
|
|
22
|
-
|
|
23
|
-
return (
|
|
24
|
-
<StyledOnsetEstimated enteredInError={enteredInError} {...rest}>
|
|
25
|
-
{onsetDateEstimated ? ' (estimated)' : ''}
|
|
26
|
-
</StyledOnsetEstimated>
|
|
27
|
-
)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
interface Props extends HTMLAttributes<HTMLDivElement> {
|
|
31
|
-
condition: Condition
|
|
32
|
-
enteredInError: boolean
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
interface IStyledDescription {
|
|
36
|
-
enteredInError: boolean
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export default DiagnosisOnsetEstimated
|
|
1
|
+
import { FC, HTMLAttributes } from 'react'
|
|
2
|
+
import styled from '@emotion/styled'
|
|
3
|
+
|
|
4
|
+
import { TEXT_COLOURS } from '@ltht-react/styles'
|
|
5
|
+
import { Condition } from '@ltht-react/types'
|
|
6
|
+
|
|
7
|
+
import { getBooleanExtension } from '@ltht-react/utils'
|
|
8
|
+
|
|
9
|
+
const StyledOnsetEstimated = styled.div<IStyledDescription>`
|
|
10
|
+
color: ${TEXT_COLOURS.INFO};
|
|
11
|
+
font-size: x-small;
|
|
12
|
+
white-space: pre-wrap;
|
|
13
|
+
display: inline-block;
|
|
14
|
+
text-decoration: ${({ enteredInError }) => (enteredInError ? 'line-through' : 'none')};
|
|
15
|
+
`
|
|
16
|
+
|
|
17
|
+
const DiagnosisOnsetEstimated: FC<Props> = ({ condition, enteredInError, ...rest }) => {
|
|
18
|
+
const onsetDateEstimated = getBooleanExtension(
|
|
19
|
+
condition.extension,
|
|
20
|
+
'https://fhir.leedsth.nhs.uk/ValueSet/diagnosis-onset-date-estimated-1'
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<StyledOnsetEstimated enteredInError={enteredInError} {...rest}>
|
|
25
|
+
{onsetDateEstimated ? ' (estimated)' : ''}
|
|
26
|
+
</StyledOnsetEstimated>
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
interface Props extends HTMLAttributes<HTMLDivElement> {
|
|
31
|
+
condition: Condition
|
|
32
|
+
enteredInError: boolean
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
interface IStyledDescription {
|
|
36
|
+
enteredInError: boolean
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export default DiagnosisOnsetEstimated
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
import { FC, HTMLAttributes } from 'react'
|
|
2
|
-
import styled from '@emotion/styled'
|
|
3
|
-
|
|
4
|
-
import { TEXT_COLOURS } from '@ltht-react/styles'
|
|
5
|
-
import { Condition } from '@ltht-react/types'
|
|
6
|
-
import { titleCase } from '@ltht-react/utils'
|
|
7
|
-
|
|
8
|
-
const StyledConditionStatus = styled.div<IStyledDescription>`
|
|
9
|
-
color: ${TEXT_COLOURS.SECONDARY.VALUE};
|
|
10
|
-
text-align: left;
|
|
11
|
-
font-size: smaller;
|
|
12
|
-
padding-top: 0.25rem;
|
|
13
|
-
text-decoration: ${({ enteredInError }) => (enteredInError ? 'line-through' : 'none')};
|
|
14
|
-
`
|
|
15
|
-
|
|
16
|
-
const DiagnosisStatus: FC<Props> = ({ condition, enteredInError, ...rest }) => {
|
|
17
|
-
const values = []
|
|
18
|
-
|
|
19
|
-
if (condition.clinicalStatus) values.push(titleCase(condition.clinicalStatus))
|
|
20
|
-
if (condition.verificationStatus) values.push(titleCase(condition.verificationStatus))
|
|
21
|
-
|
|
22
|
-
return (
|
|
23
|
-
<StyledConditionStatus enteredInError={enteredInError} {...rest}>
|
|
24
|
-
{values.length > 0 ? values.join(' - ') : 'Insufficient data provided'}
|
|
25
|
-
</StyledConditionStatus>
|
|
26
|
-
)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
interface Props extends HTMLAttributes<HTMLDivElement> {
|
|
30
|
-
condition: Condition
|
|
31
|
-
enteredInError: boolean
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
interface IStyledDescription {
|
|
35
|
-
enteredInError: boolean
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export default DiagnosisStatus
|
|
1
|
+
import { FC, HTMLAttributes } from 'react'
|
|
2
|
+
import styled from '@emotion/styled'
|
|
3
|
+
|
|
4
|
+
import { TEXT_COLOURS } from '@ltht-react/styles'
|
|
5
|
+
import { Condition } from '@ltht-react/types'
|
|
6
|
+
import { titleCase } from '@ltht-react/utils'
|
|
7
|
+
|
|
8
|
+
const StyledConditionStatus = styled.div<IStyledDescription>`
|
|
9
|
+
color: ${TEXT_COLOURS.SECONDARY.VALUE};
|
|
10
|
+
text-align: left;
|
|
11
|
+
font-size: smaller;
|
|
12
|
+
padding-top: 0.25rem;
|
|
13
|
+
text-decoration: ${({ enteredInError }) => (enteredInError ? 'line-through' : 'none')};
|
|
14
|
+
`
|
|
15
|
+
|
|
16
|
+
const DiagnosisStatus: FC<Props> = ({ condition, enteredInError, ...rest }) => {
|
|
17
|
+
const values = []
|
|
18
|
+
|
|
19
|
+
if (condition.clinicalStatus) values.push(titleCase(condition.clinicalStatus))
|
|
20
|
+
if (condition.verificationStatus) values.push(titleCase(condition.verificationStatus))
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<StyledConditionStatus enteredInError={enteredInError} {...rest}>
|
|
24
|
+
{values.length > 0 ? values.join(' - ') : 'Insufficient data provided'}
|
|
25
|
+
</StyledConditionStatus>
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
interface Props extends HTMLAttributes<HTMLDivElement> {
|
|
30
|
+
condition: Condition
|
|
31
|
+
enteredInError: boolean
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
interface IStyledDescription {
|
|
35
|
+
enteredInError: boolean
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export default DiagnosisStatus
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { FC, HTMLAttributes } from 'react'
|
|
2
|
+
import styled from '@emotion/styled'
|
|
3
|
+
|
|
4
|
+
import { TEXT_COLOURS } from '@ltht-react/styles'
|
|
5
|
+
|
|
6
|
+
const StyledConditionSubHeader = styled.div<IStyledDescription>`
|
|
7
|
+
color: ${TEXT_COLOURS.SECONDARY.VALUE};
|
|
8
|
+
text-align: left;
|
|
9
|
+
font-size: smaller;
|
|
10
|
+
padding-top: 0.25rem;
|
|
11
|
+
text-decoration: ${({ enteredInError }) => (enteredInError ? 'line-through' : 'none')};
|
|
12
|
+
`
|
|
13
|
+
|
|
14
|
+
const DiagnosisSubHeader: FC<Props> = ({ text, enteredInError, ...rest }) => (
|
|
15
|
+
<StyledConditionSubHeader enteredInError={enteredInError} {...rest}>
|
|
16
|
+
{text}
|
|
17
|
+
</StyledConditionSubHeader>
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
interface Props extends HTMLAttributes<HTMLDivElement> {
|
|
21
|
+
text: string
|
|
22
|
+
enteredInError: boolean
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
interface IStyledDescription {
|
|
26
|
+
enteredInError: boolean
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export default DiagnosisSubHeader
|
|
@@ -1,39 +1,37 @@
|
|
|
1
|
-
import { FC, HTMLAttributes } from 'react'
|
|
2
|
-
import styled from '@emotion/styled'
|
|
3
|
-
|
|
4
|
-
import { TEXT_COLOURS } from '@ltht-react/styles'
|
|
5
|
-
import { Condition } from '@ltht-react/types'
|
|
6
|
-
import { codeableConceptTextSummary
|
|
7
|
-
|
|
8
|
-
const StyledConditionTitle = styled.div<IStyledDescription>`
|
|
9
|
-
color: ${TEXT_COLOURS.PRIMARY};
|
|
10
|
-
text-align: left;
|
|
11
|
-
text-decoration: ${({ enteredInError }) => (enteredInError ? 'line-through' : 'none')};
|
|
12
|
-
`
|
|
13
|
-
|
|
14
|
-
const DiagnosisTitle: FC<Props> = ({ condition, enteredInError, ...rest }) => {
|
|
15
|
-
const codes = []
|
|
16
|
-
const snippets = []
|
|
17
|
-
|
|
18
|
-
if (condition.code) codes.push(condition.code)
|
|
19
|
-
snippets.push(codeableConceptTextSummary(codes))
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
export default DiagnosisTitle
|
|
1
|
+
import { FC, HTMLAttributes } from 'react'
|
|
2
|
+
import styled from '@emotion/styled'
|
|
3
|
+
|
|
4
|
+
import { TEXT_COLOURS } from '@ltht-react/styles'
|
|
5
|
+
import { Condition } from '@ltht-react/types'
|
|
6
|
+
import { codeableConceptTextSummary } from '@ltht-react/utils'
|
|
7
|
+
|
|
8
|
+
const StyledConditionTitle = styled.div<IStyledDescription>`
|
|
9
|
+
color: ${TEXT_COLOURS.PRIMARY};
|
|
10
|
+
text-align: left;
|
|
11
|
+
text-decoration: ${({ enteredInError }) => (enteredInError ? 'line-through' : 'none')};
|
|
12
|
+
`
|
|
13
|
+
|
|
14
|
+
const DiagnosisTitle: FC<Props> = ({ condition, enteredInError, ...rest }) => {
|
|
15
|
+
const codes = []
|
|
16
|
+
const snippets = []
|
|
17
|
+
|
|
18
|
+
if (condition.code) codes.push(condition.code)
|
|
19
|
+
snippets.push(codeableConceptTextSummary(codes))
|
|
20
|
+
|
|
21
|
+
return (
|
|
22
|
+
<StyledConditionTitle enteredInError={enteredInError} {...rest}>
|
|
23
|
+
{snippets.length > 0 ? snippets.join(', ') : 'Insufficient data provided'}
|
|
24
|
+
</StyledConditionTitle>
|
|
25
|
+
)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface Props extends HTMLAttributes<HTMLDivElement> {
|
|
29
|
+
condition: Condition
|
|
30
|
+
enteredInError: boolean
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
interface IStyledDescription {
|
|
34
|
+
enteredInError: boolean
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export default DiagnosisTitle
|
package/src/constants.ts
ADDED
package/src/index.tsx
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import DiagnosisSummary from './organisms/diagnosis-summary'
|
|
2
|
-
|
|
3
|
-
export default DiagnosisSummary
|
|
1
|
+
import DiagnosisSummary from './organisms/diagnosis-summary'
|
|
2
|
+
|
|
3
|
+
export default DiagnosisSummary
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { FC } from 'react'
|
|
2
|
-
import styled from '@emotion/styled'
|
|
3
|
-
|
|
4
|
-
import { Condition } from '@ltht-react/types'
|
|
5
|
-
import { DateSummary, RedactedDescription } from '@ltht-react/type-summary'
|
|
6
|
-
|
|
7
|
-
const StyledRedactedDescription = styled.div`
|
|
8
|
-
flex-grow: 1;
|
|
9
|
-
text-align: left;
|
|
10
|
-
`
|
|
11
|
-
|
|
12
|
-
const StyledDateSummary = styled.div`
|
|
13
|
-
text-align: right;
|
|
14
|
-
`
|
|
15
|
-
|
|
16
|
-
const DiagnosisRedacted: FC<Props> = ({ condition }) => (
|
|
17
|
-
<>
|
|
18
|
-
<StyledRedactedDescription>
|
|
19
|
-
<RedactedDescription />
|
|
20
|
-
</StyledRedactedDescription>
|
|
21
|
-
<StyledDateSummary>
|
|
22
|
-
<DateSummary datetime={condition?.onset?.dateTime} />
|
|
23
|
-
</StyledDateSummary>
|
|
24
|
-
</>
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
interface Props {
|
|
28
|
-
condition?: Condition | null
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export default DiagnosisRedacted
|
|
1
|
+
import { FC } from 'react'
|
|
2
|
+
import styled from '@emotion/styled'
|
|
3
|
+
|
|
4
|
+
import { Condition } from '@ltht-react/types'
|
|
5
|
+
import { DateSummary, RedactedDescription } from '@ltht-react/type-summary'
|
|
6
|
+
|
|
7
|
+
const StyledRedactedDescription = styled.div`
|
|
8
|
+
flex-grow: 1;
|
|
9
|
+
text-align: left;
|
|
10
|
+
`
|
|
11
|
+
|
|
12
|
+
const StyledDateSummary = styled.div`
|
|
13
|
+
text-align: right;
|
|
14
|
+
`
|
|
15
|
+
|
|
16
|
+
const DiagnosisRedacted: FC<Props> = ({ condition }) => (
|
|
17
|
+
<>
|
|
18
|
+
<StyledRedactedDescription>
|
|
19
|
+
<RedactedDescription />
|
|
20
|
+
</StyledRedactedDescription>
|
|
21
|
+
<StyledDateSummary>
|
|
22
|
+
<DateSummary datetime={condition?.onset?.dateTime} />
|
|
23
|
+
</StyledDateSummary>
|
|
24
|
+
</>
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
interface Props {
|
|
28
|
+
condition?: Condition | null
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export default DiagnosisRedacted
|
|
@@ -1,165 +1,168 @@
|
|
|
1
|
-
import { FC, HTMLAttributes } from 'react'
|
|
2
|
-
import styled from '@emotion/styled'
|
|
3
|
-
|
|
4
|
-
import { Condition, ConditionVerificationStatus } from '@ltht-react/types'
|
|
5
|
-
import { DateSummary } from '@ltht-react/type-summary'
|
|
6
|
-
import Icon from '@ltht-react/icon'
|
|
7
|
-
import { Button, ButtonProps } from '@ltht-react/button'
|
|
8
|
-
|
|
9
|
-
import { BTN_COLOURS, MOBILE_MAXIMUM_MEDIA_QUERY, SMALL_SCREEN_MAXIMUM_MEDIA_QUERY } from '@ltht-react/styles'
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import OnsetDateEstimated from '../atoms/diagnosis-onset-estimated'
|
|
13
|
-
import Redacted from '../molecules/diagnosis-redacted'
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
flex-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
align
|
|
73
|
-
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
<
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
1
|
+
import { FC, HTMLAttributes } from 'react'
|
|
2
|
+
import styled from '@emotion/styled'
|
|
3
|
+
|
|
4
|
+
import { Condition, ConditionVerificationStatus } from '@ltht-react/types'
|
|
5
|
+
import { DateSummary } from '@ltht-react/type-summary'
|
|
6
|
+
import Icon from '@ltht-react/icon'
|
|
7
|
+
import { Button, ButtonProps } from '@ltht-react/button'
|
|
8
|
+
|
|
9
|
+
import { BTN_COLOURS, MOBILE_MAXIMUM_MEDIA_QUERY, SMALL_SCREEN_MAXIMUM_MEDIA_QUERY } from '@ltht-react/styles'
|
|
10
|
+
import Title from '../atoms/diagnosis-title'
|
|
11
|
+
import SubHeader from '../atoms/diagnosis-sub-header'
|
|
12
|
+
import OnsetDateEstimated from '../atoms/diagnosis-onset-estimated'
|
|
13
|
+
import Redacted from '../molecules/diagnosis-redacted'
|
|
14
|
+
import SNIPPET_HOVER_TEXT from '../constants'
|
|
15
|
+
|
|
16
|
+
const StyledTitle = styled.div`
|
|
17
|
+
display: inline-block;
|
|
18
|
+
`
|
|
19
|
+
const StyledSummary = styled.div`
|
|
20
|
+
display: flex;
|
|
21
|
+
justify-content: center;
|
|
22
|
+
`
|
|
23
|
+
const StyledDescription = styled.div`
|
|
24
|
+
flex-grow: 1;
|
|
25
|
+
`
|
|
26
|
+
const StyledLeftContainer = styled.div`
|
|
27
|
+
display: flex;
|
|
28
|
+
flex-grow: 1;
|
|
29
|
+
flex-direction: row;
|
|
30
|
+
|
|
31
|
+
${MOBILE_MAXIMUM_MEDIA_QUERY} {
|
|
32
|
+
flex-direction: column;
|
|
33
|
+
}
|
|
34
|
+
`
|
|
35
|
+
const StyledControlsContainer = styled.div`
|
|
36
|
+
display: flex;
|
|
37
|
+
margin: auto 10px auto 10px;
|
|
38
|
+
flex-direction: column;
|
|
39
|
+
|
|
40
|
+
${MOBILE_MAXIMUM_MEDIA_QUERY} {
|
|
41
|
+
margin: 10px 0 0 0;
|
|
42
|
+
flex-flow: row wrap;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
${SMALL_SCREEN_MAXIMUM_MEDIA_QUERY} {
|
|
46
|
+
margin: 10px 5px 0 0;
|
|
47
|
+
flex-direction: column;
|
|
48
|
+
}
|
|
49
|
+
`
|
|
50
|
+
const StyledButton = styled(Button)`
|
|
51
|
+
margin: 2px 0 2px 0;
|
|
52
|
+
font-size: 0.8em !important;
|
|
53
|
+
padding: 1px 5px;
|
|
54
|
+
|
|
55
|
+
${MOBILE_MAXIMUM_MEDIA_QUERY} {
|
|
56
|
+
margin: 2px 5px 2px 0;
|
|
57
|
+
width: fit-content;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
${SMALL_SCREEN_MAXIMUM_MEDIA_QUERY} {
|
|
61
|
+
margin: 2px 0 2px 0;
|
|
62
|
+
width: 100%;
|
|
63
|
+
max-width: 200px;
|
|
64
|
+
}
|
|
65
|
+
`
|
|
66
|
+
|
|
67
|
+
const StyledDate = styled.div`
|
|
68
|
+
text-align: left;
|
|
69
|
+
width: 15%;
|
|
70
|
+
`
|
|
71
|
+
const IconButtonWrapper = styled(Button)`
|
|
72
|
+
-webkit-box-align: center;
|
|
73
|
+
align-items: center;
|
|
74
|
+
-webkit-box-pack: center;
|
|
75
|
+
justify-content: center;
|
|
76
|
+
margin-right: 0.5rem;
|
|
77
|
+
display: inline-block !important;
|
|
78
|
+
margin-left: 0.5rem;
|
|
79
|
+
width: auto;
|
|
80
|
+
`
|
|
81
|
+
const IconWrapper = styled.div`
|
|
82
|
+
margin-left: 0.5rem;
|
|
83
|
+
display: inline-block;
|
|
84
|
+
`
|
|
85
|
+
|
|
86
|
+
const DiagnosisSummary: FC<Props> = ({
|
|
87
|
+
condition,
|
|
88
|
+
extendedTemplateDisplayName,
|
|
89
|
+
extensionTemplateDisplayName,
|
|
90
|
+
extensionClickHandler,
|
|
91
|
+
isReadOnly = false,
|
|
92
|
+
dateOnlyView = false,
|
|
93
|
+
canExtendDiagnosis = false,
|
|
94
|
+
controls = [],
|
|
95
|
+
...rest
|
|
96
|
+
}) => {
|
|
97
|
+
if (condition.metadata.isRedacted) {
|
|
98
|
+
return (
|
|
99
|
+
<StyledSummary {...rest}>
|
|
100
|
+
<Redacted condition={condition} />
|
|
101
|
+
</StyledSummary>
|
|
102
|
+
)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const enteredInError = condition.verificationStatus === ConditionVerificationStatus.EnteredInError
|
|
106
|
+
|
|
107
|
+
const snippetText = condition?.metadata.tag?.find((coding) => coding?.system === SNIPPET_HOVER_TEXT)?.display ?? ''
|
|
108
|
+
|
|
109
|
+
return (
|
|
110
|
+
<StyledSummary {...rest}>
|
|
111
|
+
<StyledLeftContainer>
|
|
112
|
+
<StyledDescription>
|
|
113
|
+
<StyledTitle>
|
|
114
|
+
<Title enteredInError={enteredInError} condition={condition} />
|
|
115
|
+
</StyledTitle>
|
|
116
|
+
{extensionTemplateDisplayName && !isReadOnly && canExtendDiagnosis && !enteredInError && (
|
|
117
|
+
<IconButtonWrapper
|
|
118
|
+
onClick={extensionClickHandler}
|
|
119
|
+
type="button"
|
|
120
|
+
styling={{ buttonStyle: 'clear' }}
|
|
121
|
+
value=""
|
|
122
|
+
icon={<Icon type="folder-plus" size="medium" />}
|
|
123
|
+
iconPlacement="center"
|
|
124
|
+
iconColour={BTN_COLOURS.PRIMARY.VALUE}
|
|
125
|
+
title={`This diagnosis can be extended further using form '${extensionTemplateDisplayName}' by clicking here`}
|
|
126
|
+
/>
|
|
127
|
+
)}
|
|
128
|
+
{extendedTemplateDisplayName && (
|
|
129
|
+
<IconWrapper>
|
|
130
|
+
<Icon
|
|
131
|
+
type="comment"
|
|
132
|
+
size="medium"
|
|
133
|
+
title={`This diagnosis has been extended beyond standard diagnosis with form '${extendedTemplateDisplayName}'.
|
|
134
|
+
To view these extra details, click into the full diagnosis detail or edit the existing form.`}
|
|
135
|
+
/>
|
|
136
|
+
</IconWrapper>
|
|
137
|
+
)}
|
|
138
|
+
<SubHeader enteredInError={enteredInError} text={snippetText} />
|
|
139
|
+
</StyledDescription>
|
|
140
|
+
|
|
141
|
+
{!isReadOnly && controls.length > 0 && (
|
|
142
|
+
<StyledControlsContainer>
|
|
143
|
+
{controls.map((props, index) => (
|
|
144
|
+
<StyledButton key={index} {...props} />
|
|
145
|
+
))}
|
|
146
|
+
</StyledControlsContainer>
|
|
147
|
+
)}
|
|
148
|
+
</StyledLeftContainer>
|
|
149
|
+
<StyledDate>
|
|
150
|
+
<DateSummary enteredInError={enteredInError} datetime={condition?.assertedDate} dateOnlyView={dateOnlyView} />
|
|
151
|
+
<OnsetDateEstimated enteredInError={enteredInError} condition={condition} />
|
|
152
|
+
</StyledDate>
|
|
153
|
+
</StyledSummary>
|
|
154
|
+
)
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
interface Props extends HTMLAttributes<HTMLDivElement> {
|
|
158
|
+
condition: Condition
|
|
159
|
+
extendedTemplateDisplayName?: string | undefined
|
|
160
|
+
extensionTemplateDisplayName?: string | undefined
|
|
161
|
+
extensionClickHandler?(): void
|
|
162
|
+
isReadOnly: boolean
|
|
163
|
+
dateOnlyView?: boolean
|
|
164
|
+
controls?: ButtonProps[]
|
|
165
|
+
canExtendDiagnosis?: boolean
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export default DiagnosisSummary
|