UNPKG

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
"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);