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

151 lines (150 loc) 7.06 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 _classnames = _interopRequireDefault(require("classnames")); var _bind = _interopRequireDefault(require("classnames/bind")); var _terraThemeContext = _interopRequireDefault(require("terra-theme-context")); var _IconCritical = _interopRequireDefault(require("terra-icon/lib/icon/IconCritical")); var _IconHigh = _interopRequireDefault(require("terra-icon/lib/icon/IconHigh")); var _IconLow = _interopRequireDefault(require("terra-icon/lib/icon/IconLow")); var _IconAbnormal = _interopRequireDefault(require("terra-icon/lib/icon/IconAbnormal")); var _reactIntl = require("react-intl"); var _interpretationPropTypes = _interopRequireDefault(require("../../proptypes/interpretationPropTypes")); var _valuePropTypes = _interopRequireDefault(require("../../proptypes/valuePropTypes")); var _ResultError = _interopRequireDefault(require("../other/_ResultError")); var _ObservationModule = _interopRequireDefault(require("./Observation.module.scss")); var _excluded = ["eventId", "result", "interpretation", "isUnverified", "hideUnit", "intl"]; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } var cx = _bind.default.bind(_ObservationModule.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, /** * Visually hides the unit of measure when presented in a series of side-by-side columns of the same unit. */ hideUnit: _propTypes.default.bool, /** * Internationalization object with translation APIs. Provided by `injectIntl`. */ intl: _propTypes.default.shape({ formatMessage: _propTypes.default.func }) }; var interpretationTextClassMap = { critical: 'critical', 'critical-high': 'critical', 'critical-low': 'critical', positive: 'positive', abnormal: 'abnormal', high: 'high', low: 'low' }; var Observation = function Observation(props) { var eventId = props.eventId, result = props.result, interpretation = props.interpretation, isUnverified = props.isUnverified, hideUnit = props.hideUnit, intl = props.intl, customProps = _objectWithoutProperties(props, _excluded); var interpretationIndicatorMap = { critical: /*#__PURE__*/_react.default.createElement(_IconCritical.default, { className: cx('icon-interpretation'), a11yLabel: intl.formatMessage({ id: 'Terra.clinicalResult.interpretationCritical' }), role: "img", focusable: "true" }), 'critical-high': /*#__PURE__*/_react.default.createElement(_IconCritical.default, { className: cx('icon-interpretation'), a11yLabel: intl.formatMessage({ id: 'Terra.clinicalResult.interpretationCriticalHigh' }), role: "img", focusable: "true" }), 'critical-low': /*#__PURE__*/_react.default.createElement(_IconCritical.default, { className: cx('icon-interpretation'), a11yLabel: intl.formatMessage({ id: 'Terra.clinicalResult.interpretationCriticalLow' }), role: "img", focusable: "true" }), positive: /*#__PURE__*/_react.default.createElement(_IconCritical.default, { className: cx('icon-interpretation'), a11yLabel: intl.formatMessage({ id: 'Terra.clinicalResult.interpretationPositive' }), role: "img", focusable: "true" }), abnormal: /*#__PURE__*/_react.default.createElement(_IconAbnormal.default, { className: cx('icon-interpretation'), a11yLabel: intl.formatMessage({ id: 'Terra.clinicalResult.interpretationAbnormal' }), role: "img", focusable: "true" }), high: /*#__PURE__*/_react.default.createElement(_IconHigh.default, { className: cx('icon-interpretation'), a11yLabel: intl.formatMessage({ id: 'Terra.clinicalResult.interpretationOutOfRangeHigh' }), role: "img", focusable: "true" }), low: /*#__PURE__*/_react.default.createElement(_IconLow.default, { className: cx('icon-interpretation'), a11yLabel: intl.formatMessage({ id: 'Terra.clinicalResult.interpretationOutOfRangeLow' }), role: "img", focusable: "true" }) }; var isValidValue = result && result.value && (!Array.isArray(result.value) || result.value.length !== 0); var theme = _react.default.useContext(_terraThemeContext.default); var valueTextClasses = (0, _classnames.default)(cx('value', !isUnverified && interpretationTextClassMap[interpretation], { unverified: isUnverified }, theme.className), customProps.className); var unitClassNames = cx(['unit', { 'unit-hidden': hideUnit }, theme.className]); var observationDisplay = function observationDisplay() { if (isValidValue) { return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", _extends({}, customProps, { className: valueTextClasses }), interpretation && !isUnverified && interpretationIndicatorMap[interpretation], result.value), result.unit ? /*#__PURE__*/_react.default.createElement("span", { className: unitClassNames }, result.unit) : null); } return /*#__PURE__*/_react.default.createElement(_ResultError.default, null); }; return observationDisplay(); }; Observation.propTypes = propTypes; var _default = exports.default = (0, _reactIntl.injectIntl)(Observation);