public void WhenHealthVaultConditionTransformedToFhir_ThenValuesEquals() { HVCondition hvCondition = new HVCondition(new ItemTypes.CodableValue("High blood pressure", new ItemTypes.CodedValue("1147", "MayoConditions", "Mayo", "2.0"))); hvCondition.Name.Add(new ItemTypes.CodedValue("1148", "MayoConditions", "Mayo", "1.0")); hvCondition.OnsetDate = new ItemTypes.ApproximateDateTime(SystemClock.Instance.InBclSystemDefaultZone().GetCurrentLocalDateTime().Minus(NodaTime.Period.FromDays(15))); hvCondition.StopDate = new ItemTypes.ApproximateDateTime() { ApproximateDate = new ItemTypes.ApproximateDate(2013, 03, 11) }; hvCondition.StopDate.ApproximateDate = new ItemTypes.ApproximateDate(2015); hvCondition.Status = new ItemTypes.CodableValue("Past: No longer has this", new ItemTypes.CodedValue("intermittent", "condition-occurrence", "wc", "1")); hvCondition.CommonData.Note = "condition critical"; hvCondition.StopReason = "In Control"; hvCondition.Key = new ThingKey(new Guid("1C855AC0-892A-4352-9A82-3DCBD22BF0BC"), new Guid("706CEAFA-D506-43A8-9758-441FD9C3D407")); var fhirCondition = hvCondition.ToFhir() as FhirCondition; var conditionExtension = fhirCondition.GetExtension(HealthVaultExtensions.Condition); Assert.IsNotNull(fhirCondition); Assert.IsNotNull(fhirCondition.Code); Assert.IsNotNull(fhirCondition.Code.Coding); Assert.AreEqual(2, fhirCondition.Code.Coding.Count); Assert.AreEqual("2015", fhirCondition.Abatement.ToString()); Assert.AreEqual("High blood pressure", fhirCondition.Code.Text); Assert.AreEqual("In Control", conditionExtension.GetStringExtension(HealthVaultExtensions.ConditionStopReason)); Assert.AreEqual("intermittent", conditionExtension.GetStringExtension(HealthVaultExtensions.ConditionOccurrence)); Assert.AreEqual("1c855ac0-892a-4352-9a82-3dcbd22bf0bc", fhirCondition.Id); Assert.AreEqual("706ceafa-d506-43a8-9758-441fd9c3d407", fhirCondition.VersionId); Assert.AreEqual("1147", fhirCondition.Code.Coding[0].Code); Assert.AreEqual("1148", fhirCondition.Code.Coding[1].Code); }
public void WhenHealthVaultConditionTransformedToFhir_ThenValuesEqualWithAbatementString() { HVCondition hvCondition = new HVCondition(new ItemTypes.CodableValue("High blood pressure", new ItemTypes.CodedValue("1147", "MayoConditions", "Mayo", "2.0"))); hvCondition.OnsetDate = new ItemTypes.ApproximateDateTime(SystemClock.Instance.InBclSystemDefaultZone().GetCurrentLocalDateTime().Minus(NodaTime.Period.FromDays(15))); hvCondition.StopDate = new ItemTypes.ApproximateDateTime(); hvCondition.StopDate.Description = "around december 9, 2013"; var fhirCondition = hvCondition.ToFhir() as FhirCondition; Assert.IsNotNull(fhirCondition); Assert.IsNotNull(fhirCondition.Code); Assert.AreEqual("around december 9, 2013", fhirCondition.Abatement.ToString()); }
internal static Condition ToFhirInternal(HVCondition hvCondition, Condition fhirCondition) { var conditionExtension = new Extension { Url = HealthVaultExtensions.Condition }; if (hvCondition.CommonData != null) { fhirCondition.AddNoteAsText(hvCondition.CommonData.Note); var note = new Annotation(); note.Text = hvCondition.CommonData.Note; fhirCondition.Note = new List <Annotation> { note }; } fhirCondition.Code = hvCondition.Name.ToFhir(); if (hvCondition.Status != null) { fhirCondition.SetClinicalStatusCode(hvCondition.Status, conditionExtension); } if (hvCondition.StopDate != null) { fhirCondition.SetAbatement(hvCondition.StopDate); } if (hvCondition.OnsetDate != null) { fhirCondition.Onset = hvCondition.OnsetDate.ToFhir(); } if (hvCondition.StopReason != null) { conditionExtension.AddExtension(HealthVaultExtensions.ConditionStopReason, new FhirString(hvCondition.StopReason)); } fhirCondition.Extension.Add(conditionExtension); return(fhirCondition); }
public static HVCondition ToHealthVault(this Condition fhirCondition) { if (fhirCondition.Code.IsNullOrEmpty()) { throw new System.ArgumentNullException($"Can not transform a {typeof(Condition)} with no code into {typeof(HVCondition)}"); } HVCondition hvCondition = fhirCondition.ToThingBase <HVCondition>(); string conditionOccurence = string.Empty; var conditionExtension = fhirCondition.GetExtension(HealthVaultExtensions.Condition); if (conditionExtension != null) { hvCondition.StopReason = conditionExtension.GetStringExtension(HealthVaultExtensions.ConditionStopReason); conditionOccurence = conditionExtension.GetStringExtension(HealthVaultExtensions.ConditionOccurrence); } hvCondition.Name = fhirCondition.Code.ToCodableValue(); hvCondition.OnsetDate = fhirCondition.Onset.ToAproximateDateTime(); hvCondition.StopDate = fhirCondition.Abatement.ToAproximateDateTime(); if (fhirCondition.ClinicalStatus.HasValue) { hvCondition.Status = new ItemTypes.CodableValue(fhirCondition.ClinicalStatus.Value.ToString()); hvCondition.Status.Add(new ItemTypes.CodedValue(fhirCondition.ClinicalStatus.Value.ToString(), FhirCategories.Hl7Condition, HealthVaultVocabularies.Fhir, "")); } else if (!string.IsNullOrWhiteSpace(conditionOccurence)) { hvCondition.Status = new ItemTypes.CodableValue(conditionOccurence); hvCondition.Status.Add(new ItemTypes.CodedValue(conditionOccurence, HealthVaultVocabularies.ConditionOccurrence, HealthVaultVocabularies.Wc, "1")); } if (fhirCondition.Note != null) { foreach (Annotation annotation in fhirCondition.Note) { hvCondition.CommonData.Note += annotation.Text; } } return(hvCondition); }
// Register the type on the generic ThingToFhir partial class public static Condition ToFhir(this HVCondition cd) { return(HealthVaultConditionToFhir.ToFhirInternal(cd, ToFhirInternal <Condition>(cd))); }