terra-clinical-result
Version:
The Terra Clinical Result package is a collection of standardized views for presenting clinical results documented to a Patient's Medical Chart, such as Vital Signs, Laboratory Results, and Discretely Documented Values
142 lines (141 loc) • 5.93 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _bind = _interopRequireDefault(require("classnames/bind"));
var _reactIntl = require("react-intl");
var _terraVisuallyHiddenText = _interopRequireDefault(require("terra-visually-hidden-text"));
var _statusPropTypes = _interopRequireDefault(require("./proptypes/statusPropTypes"));
var _interpretationPropTypes = _interopRequireDefault(require("./proptypes/interpretationPropTypes"));
var _valuePropTypes = _interopRequireDefault(require("./proptypes/valuePropTypes"));
var _Observation = _interopRequireDefault(require("./common/observation/_Observation"));
var _Icons = _interopRequireDefault(require("./_Icons"));
var _SecondaryDisplays = _interopRequireDefault(require("./_SecondaryDisplays"));
var _ClinicalResultModule = _interopRequireDefault(require("./ClinicalResult.module.scss"));
var _utils = require("./common/utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var cx = _bind.default.bind(_ClinicalResultModule.default);
var propTypes = {
/**
* Event ID
*/
eventId: _propTypes.default.string,
/**
* Value and optional Unit of Measure for the Observation Result
*/
result: _valuePropTypes.default,
/**
* Interpretation of the Result, indicates Criticality
*/
interpretation: _interpretationPropTypes.default,
/**
* If Result has not been verified
*/
isUnverified: _propTypes.default.bool,
/**
* Display to show the full Result Name/Label Concept, e.g. `'Temperature Oral'`.
*/
conceptDisplay: _propTypes.default.string,
/**
* Display to show an appropriate clinically relevant documented datetime.
*/
datetimeDisplay: _propTypes.default.string,
/**
* Visually hides the unit of measure when presented in a series of side-by-side columns of the same unit.
*/
hideUnit: _propTypes.default.bool,
/**
* Whether or not the text should be truncated in display. Restricts clinical result details each to one line.
*/
isTruncated: _propTypes.default.bool,
/**
* If the Result value has not been authenticated and committed to patient chart.
*/
isModified: _propTypes.default.bool,
/**
* If the Result value has been modified from it's original value for the same clinically documented event & datetime.
*/
hasComment: _propTypes.default.bool,
/**
* Enum for possible Result Statuses.
* One of `'entered-in-error'`s.
*/
status: _statusPropTypes.default,
/**
* @private
* Used by Flowsheet Result Cell to hide icons because it displays them in different positions.
*/
hideAccessoryDisplays: _propTypes.default.bool,
/**
* @private
* The intl object to be injected for translations.
*/
intl: _propTypes.default.shape({
formatMessage: _propTypes.default.func
}).isRequired
};
var ClinicalResultDisplay = function ClinicalResultDisplay(_ref) {
var eventId = _ref.eventId,
result = _ref.result,
interpretation = _ref.interpretation,
isUnverified = _ref.isUnverified,
status = _ref.status,
hideUnit = _ref.hideUnit,
isTruncated = _ref.isTruncated,
hideAccessoryDisplays = _ref.hideAccessoryDisplays,
isModified = _ref.isModified,
hasComment = _ref.hasComment,
conceptDisplay = _ref.conceptDisplay,
datetimeDisplay = _ref.datetimeDisplay,
intl = _ref.intl;
var isValidValue = result === null || result === void 0 ? void 0 : result.value;
var isUnitPresent = !hideUnit && (result === null || result === void 0 ? void 0 : result.unit);
var isStatusInError = !(0, _utils.isEmpty)(status) ? (0, _utils.checkIsStatusInError)(status) : false;
var decoratedResultClassnames = cx(['decorated-result-display', {
truncated: isTruncated
}, {
'status-in-error': isStatusInError
}]);
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
className: decoratedResultClassnames
}, /*#__PURE__*/_react.default.createElement("div", {
className: cx('result-display')
}, /*#__PURE__*/_react.default.createElement(_utils.ConditionalWrapper, {
key: "del-Observation-".concat(eventId),
condition: isStatusInError,
wrapper: function wrapper(children) {
return /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement("s", {
"aria-hidden": "true"
}, children), isValidValue ? /*#__PURE__*/_react.default.createElement(_terraVisuallyHiddenText.default, {
text: intl.formatMessage({
id: 'Terra.clinicalResult.statusInErrorStrikethrough'
}, {
strikethroughResult: "".concat(result.value, " ").concat(isUnitPresent ? result.unit : '')
})
}) : null);
}
}, /*#__PURE__*/_react.default.createElement(_Observation.default, {
key: "Observation-".concat(eventId),
eventId: eventId,
result: result,
interpretation: !isStatusInError ? interpretation : null,
isUnverified: isUnverified,
hideUnit: hideUnit
})), isTruncated ? null : !hideAccessoryDisplays && /*#__PURE__*/_react.default.createElement(_Icons.default, {
isUnverified: isUnverified,
isModified: isModified,
hasComment: hasComment
})), isTruncated ? !hideAccessoryDisplays && /*#__PURE__*/_react.default.createElement(_Icons.default, {
isUnverified: isUnverified,
isModified: isModified,
hasComment: hasComment
}) : null), !hideAccessoryDisplays && /*#__PURE__*/_react.default.createElement(_SecondaryDisplays.default, {
conceptDisplay: conceptDisplay,
datetimeDisplay: datetimeDisplay
}));
};
ClinicalResultDisplay.propTypes = propTypes;
var _default = exports.default = (0, _reactIntl.injectIntl)(ClinicalResultDisplay);