@phema/cql-execution
Version:
An execution framework for the Clinical Quality Language (CQL)
75 lines (65 loc) • 2.22 kB
JavaScript
;
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
};