healthone
Version:
Health One format library for JavaScript
3 lines • 1.67 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=parse;var _cardinality=require("@iterable-iterator/cardinality"),_filter=require("@iterable-iterator/filter"),_zip=require("@iterable-iterator/zip"),_defaultParseOptions=_interopRequireDefault(require("./defaultParseOptions.cjs")),_expandAndMergeOptions=_interopRequireDefault(require("./expandAndMergeOptions.cjs")),_parseRecord=_interopRequireDefault(require("./parseRecord.cjs")),_insertRecord=_interopRequireDefault(require("./insertRecord.cjs")),_insertLine=_interopRequireDefault(require("./insertLine.cjs"));function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function parse(a,b){b=(0,_expandAndMergeOptions.default)(_defaultParseOptions.default,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(0,_zip.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=(0,_parseRecord.default)(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=(0,_insertRecord.default)(c,f),c=(0,_insertLine.default)(c,e)}null!==c&&(yield sanitizeReport(c))}function sanitizeReport(a){return"lab"===a.kind?{...a,anomalies:(0,_cardinality.count)((0,_filter.filter)(a=>"*"===a.flag,a.results))}:a}
//# sourceMappingURL=parse.cjs.map