healthone
Version:
Health One format library for JavaScript
3 lines • 2.46 kB
JavaScript
function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _defineProperty(a,b,c){return(b=_toPropertyKey(b))in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}import{count}from"@iterable-iterator/cardinality";import{filter}from"@iterable-iterator/filter";import{enumerate}from"@iterable-iterator/zip";import defaultParseOptions from"./defaultParseOptions.js";import expandAndMergeOptions from"./expandAndMergeOptions.js";import parseRecord from"./parseRecord.js";import insertRecord from"./insertRecord.js";import insertLine from"./insertLine.js";export default function parse(a,b){b=expandAndMergeOptions(defaultParseOptions,b);const c=a.match(b.newline);return Array.from(parseLines(c,b))}function*parseLines(a,b){let c=null;for(const[d,e]of enumerate(a,1)){const a=e.split(b.separator);if(1===a.length&&b.end.constructor.prototype===String.prototype)if(a[0]===b.end)break;else if(b.end===void 0)break;// Accept any ending
if(3>a.length)throw new Error(`Line ${d} consists of less than three parts separated by '\\'`);const f=parseRecord(a,b);if("A1"===f.descriptor)null!==c&&(yield sanitizeReport(c)),c={reference:f.reference,identifier:f.identifier,lines:[e]};else if(null===c)throw new Error(`Document did not start with 'A1\\': ${d}`);else c=insertRecord(c,f),c=insertLine(c,e)}null!==c&&(yield sanitizeReport(c))}function sanitizeReport(a){return"lab"===a.kind?_objectSpread(_objectSpread({},a),{},{anomalies:count(filter(a=>"*"===a.flag,a.results))}):a}
//# sourceMappingURL=parse.js.map