public override IContentTemplate Create(TemplateContainer jsonTemplate) { EnsureArg.IsNotNull(jsonTemplate, nameof(jsonTemplate)); if (!jsonTemplate.MatchTemplateName(TargetTypeName)) { return(null); } if (jsonTemplate.Template?.Type != JTokenType.Object) { throw new InvalidTemplateException($"Expected an object for the template property value for template type {TargetTypeName}."); } var calculatedFunctionTemplate = jsonTemplate.Template.ToValidTemplate <CalculatedFunctionContentTemplate>(); calculatedFunctionTemplate.EnsureExpressionLanguageIsSet(); var measurementExtractor = new MeasurementExtractor(calculatedFunctionTemplate, CreateExpressionEvaluatorFactory(calculatedFunctionTemplate)); return(measurementExtractor); }
private void PerformEvaluation(CalculatedFunctionContentTemplate template) { var time = DateTime.UtcNow; var token = JToken.FromObject(new { heartrate = "60", device = "abc", date = time, session = "abcdefg", patient = "patient123", }); var measurementExtractor = new MeasurementExtractor(template, new TemplateExpressionEvaluatorFactory()); var result = measurementExtractor.GetMeasurements(token).ToArray(); Assert.NotNull(result); Assert.Collection(result, m => { Assert.Equal("heartrate", m.Type); Assert.Equal(time, m.OccurrenceTimeUtc); Assert.Equal("abc", m.DeviceId); Assert.Equal("patient123", m.PatientId); Assert.Equal("abcdefg", m.CorrelationId); Assert.Null(m.EncounterId); Assert.Collection( m.Properties, p => { Assert.Equal("hr", p.Name); Assert.Equal("60", p.Value); }, p => { Assert.Equal("pie", p.Name); Assert.Equal("patient123", p.Value); }); }); }