From f6cb8eef0bb6e938dcb676a80df72e101af64f9d Mon Sep 17 00:00:00 2001 From: sedinkinya Date: Wed, 18 Mar 2020 13:33:27 -0400 Subject: [PATCH 01/13] Implement toQuantity(unit) LF-1351 --- src/fhirpath.js | 1 + src/misc.js | 36 +++++++++++++++++ src/types.js | 40 ++++++++++++++++++ test/cases/fhir-r4.yaml | 90 +++++++++++++++++++++++++---------------- 4 files changed, 132 insertions(+), 35 deletions(-) diff --git a/src/fhirpath.js b/src/fhirpath.js index ea90d0d..83f30ac 100644 --- a/src/fhirpath.js +++ b/src/fhirpath.js @@ -87,6 +87,7 @@ engine.invocationTable = { toString: {fn: misc.toString}, toDateTime: {fn: misc.toDateTime}, toTime: {fn: misc.toTime}, + toQuantity: {fn: misc.toQuantity, arity: {0: [], 1: ["String"]}}, indexOf: {fn: strings.indexOf, arity: {1: ["String"]}}, substring: {fn: strings.substring, arity: {1: ["Integer"], 2: ["Integer","Integer"]}}, diff --git a/src/misc.js b/src/misc.js index b786b75..8620429 100644 --- a/src/misc.js +++ b/src/misc.js @@ -5,6 +5,9 @@ var util = require("./utilities"); var types = require("./types"); +const {FP_Quantity} = types; +const ucumUtils = require('@lhncbc/ucum-lhc').UcumLhcUtils.getInstance(); + var engine = {}; engine.iifMacro = function(data, cond, ok, fail) { @@ -43,6 +46,39 @@ engine.toInteger = function(coll){ return []; }; +const quantityReqex = /(?(\+|-)?\d+(\.\d+)?)\s*((?'[^']+')|(?