Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 5
0
 // Register the type on the generic ThingToFhir partial class
 public static Condition ToFhir(this HVCondition cd)
 {
     return(HealthVaultConditionToFhir.ToFhirInternal(cd, ToFhirInternal <Condition>(cd)));
 }