public IResource MapBloodPressure(ViSiBloodPressure bp) { var observation = new Observation { Id = bp.Id.ToString(), Subject = new ResourceReference($"Patient/{bp.PatientId}"), Effective = new FhirDateTime(new DateTimeOffset(bp.MeasuredAt, TimeSpan.FromHours(2))), //Change to your local offset. Status = ObservationStatus.Final }; observation.Category.Add(new CodeableConcept("http://hl7.org/fhir/observation-category", "vital-signs", "Vital Signs")); observation.Component.Add( new Observation.ComponentComponent() { Code = new CodeableConcept("http://loinc.org", "8480-6", "Systolic blood pressure"), Value = new Quantity(bp.Systolic, "mm[Hg]", VonkConstants.UcumSystem) }); observation.Component.Add( new Observation.ComponentComponent() { Code = new CodeableConcept("http://loinc.org", "8462-4", "Diastolic blood pressure"), Value = new Quantity(bp.Diastolic, "mm[Hg]", VonkConstants.UcumSystem) }); return(observation.ToIResource()); }
public ViSiBloodPressure MapViSiBloodPressure(IResource source) { var fhirObservation = source.ToPoco <Observation>(); var visiBloodPressure = new ViSiBloodPressure(); if (source.Id != null) { visiBloodPressure.Id = int.Parse(source.Id); } visiBloodPressure.PatientId = int.Parse(new ResourceIdentity(fhirObservation.Subject.Reference).Id); visiBloodPressure.MeasuredAt = Convert.ToDateTime(((FhirDateTime)fhirObservation.Effective).ToString()); var systolicComponent = fhirObservation.Component.Find(c => c.Code.Coding.Exists(coding => coding.Code == "8480-6")); var diastolicComponent = fhirObservation.Component.Find(c => c.Code.Coding.Exists(coding => coding.Code == "8462-4")); visiBloodPressure.Systolic = Convert.ToInt32(((Quantity)systolicComponent.Value).Value); visiBloodPressure.Diastolic = Convert.ToInt32(((Quantity)diastolicComponent.Value).Value);; return(visiBloodPressure); }