private static Observation VitalSignsResultToFhir(VitalSignsResultType vitalSignsResult)
        {
            var observation = new Observation();

            observation.Category = new List <CodeableConcept> {
                FhirCategories.VitalSigns
            };
            observation.Code   = vitalSignsResult.Title.ToFhir();
            observation.Status = ObservationStatus.Final;

            var referenceRangeValue = new Observation.ReferenceRangeComponent();

            referenceRangeValue.Low  = new Quantity((decimal)vitalSignsResult.ReferenceMinimum, vitalSignsResult.Unit.Text) as SimpleQuantity;
            referenceRangeValue.High = new Quantity((decimal)vitalSignsResult.ReferenceMaximum, vitalSignsResult.Unit.Text) as SimpleQuantity;
            observation.ReferenceRange.Add(referenceRangeValue);

            var quantity = new Quantity((decimal)vitalSignsResult.Value, vitalSignsResult.Unit.Text);

            var codableUnitExtension = new Extension
            {
                Url = HealthVaultExtensions.CodableUnit
            };

            codableUnitExtension.Value = vitalSignsResult.Unit.ToFhir();
            quantity.Extension.Add(codableUnitExtension);
            observation.Value = quantity;

            return(observation);
        }
Esempio n. 2
0
        private List <Observation.ReferenceRangeComponent> buildReferenceRanges(fhir.model.ReferenceRange referenceRange)
        {
            if (referenceRange == null)
            {
                return(null);
            }
            var ret = new Observation.ReferenceRangeComponent();

            ret.Low = referenceRange.NumericLower.HasValue ? new SimpleQuantity()
            {
                Value = referenceRange.NumericLower.Value
            } : null;
            ret.High = referenceRange.NumericUpper.HasValue ? new SimpleQuantity()
            {
                Value = referenceRange.NumericUpper.Value
            } : null;
            ret.Text = referenceRange.Text;
            return(new List <Observation.ReferenceRangeComponent>()
            {
                ret
            });
        }
Esempio n. 3
0
        private List <Observation.ReferenceRangeComponent> GetReferenceRange(entitystorematerialised_CoreResult1 result, Observation obs)
        {
            var referenceRanges = new List <Observation.ReferenceRangeComponent>();

            if (obs.ReferenceRange.IsCollectionValid())
            {
                obs.ReferenceRange.Each(refRange => referenceRanges.Add(refRange));
            }

            Observation.ReferenceRangeComponent referenceRange = new Observation.ReferenceRangeComponent();

            referenceRange.Low = new SimpleQuantity
            {
                Value = Decimal.TryParse(result.Referencerangelow, out Decimal refLow) ? refLow : default(decimal?)
            };

            referenceRange.High = new SimpleQuantity
            {
                Value = Decimal.TryParse(result.Referencerangehigh, out Decimal refHigh) ? refHigh : default(decimal?)
            };

            referenceRanges.Add(referenceRange);
            return(referenceRanges);
        }