UNPKG

@phema/cql-execution

Version:

An execution framework for the Clinical Quality Language (CQL)

75 lines (65 loc) 2.22 kB
"use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var ThreeValuedLogic = /*#__PURE__*/function () { function ThreeValuedLogic() { _classCallCheck(this, ThreeValuedLogic); } _createClass(ThreeValuedLogic, null, [{ key: "and", value: function and() { for (var _len = arguments.length, val = new Array(_len), _key = 0; _key < _len; _key++) { val[_key] = arguments[_key]; } if (val.includes(false)) { return false; } else if (val.includes(null)) { return null; } else { return true; } } }, { key: "or", value: function or() { for (var _len2 = arguments.length, val = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { val[_key2] = arguments[_key2]; } if (val.includes(true)) { return true; } else if (val.includes(null)) { return null; } else { return false; } } }, { key: "xor", value: function xor() { for (var _len3 = arguments.length, val = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { val[_key3] = arguments[_key3]; } if (val.includes(null)) { return null; } else { return val.reduce(function (a, b) { return (!a ^ !b) === 1; }); } } }, { key: "not", value: function not(val) { if (val != null) { return !val; } else { return null; } } }]); return ThreeValuedLogic; }(); module.exports = { ThreeValuedLogic: ThreeValuedLogic };