public void WhenHealthVaultBasicV2TransformedToFhir_ThenCodeAndValuesEqual() { var basic = new ItemTypes.BasicV2 { Gender = Gender.Female, BirthYear = 1975, City = "Redmond", StateOrProvince = new CodableValue("Washington", "WA", "states", "wc", "1"), PostalCode = "98052", Country = new CodableValue("United States of America", "US", "iso3166", "iso", "1"), FirstDayOfWeek = DayOfWeek.Sunday, Languages = { new Language(new CodableValue("English", "en", "iso639-1", "iso", "1"), true), new Language(new CodableValue("French", "fr", "iso639-1", "iso", "1"), false), } }; var patient = basic.ToFhir(); Assert.IsNotNull(patient); Assert.AreEqual(AdministrativeGender.Female, patient.Gender.Value); var basicV2Extension = patient.GetExtension(HealthVaultExtensions.PatientBasicV2); Assert.AreEqual(1975, basicV2Extension.GetIntegerExtension(HealthVaultExtensions.PatientBirthYear)); Assert.AreEqual("0", basicV2Extension.GetExtensionValue <Coding>(HealthVaultExtensions.PatientFirstDayOfWeek).Code); Assert.AreEqual("Sunday", basicV2Extension.GetExtensionValue <Coding>(HealthVaultExtensions.PatientFirstDayOfWeek).Display); var basicAddress = basicV2Extension.GetExtension(HealthVaultExtensions.PatientBasicAddress); Assert.AreEqual("Redmond", basicAddress.GetStringExtension(HealthVaultExtensions.PatientBasicAddressCity)); Assert.AreEqual("WA", basicAddress.GetExtensionValue <CodeableConcept>(HealthVaultExtensions.PatientBasicAddressState).Coding[0].Code); Assert.AreEqual("98052", basicAddress.GetStringExtension(HealthVaultExtensions.PatientBasicAddressPostalCode)); Assert.AreEqual("US", basicAddress.GetExtensionValue <CodeableConcept>(HealthVaultExtensions.PatientBasicAddressCountry).Coding[0].Code); Assert.AreEqual(2, patient.Communication.Count); Assert.AreEqual("English", patient.Communication[0].Language.Text); Assert.AreEqual(true, patient.Communication[0].Preferred); }
// Register the type on the generic ThingToFhir partial class public static Patient ToFhir(this ItemTypes.BasicV2 basic, Patient patient) { return(BasicV2ToFhir.ToFhirInternal(basic, patient)); }
internal static Patient ToFhirInternal(ItemTypes.BasicV2 basic, Patient patient) { var basicV2Extension = new Extension { Url = HealthVaultExtensions.PatientBasicV2 }; if (basic.Gender.HasValue) { switch (basic.Gender.Value) { case Gender.Male: patient.Gender = AdministrativeGender.Male; break; case Gender.Female: patient.Gender = AdministrativeGender.Female; break; case Gender.Unknown: patient.Gender = AdministrativeGender.Unknown; break; } } if (basic.BirthYear.HasValue) { basicV2Extension.AddExtension(HealthVaultExtensions.PatientBirthYear, new Integer(basic.BirthYear)); } if (basic.FirstDayOfWeek.HasValue) { basicV2Extension.AddExtension(HealthVaultExtensions.PatientFirstDayOfWeek, new Coding { Code = ((int)basic.FirstDayOfWeek).ToString(), Display = basic.FirstDayOfWeek.Value.ToString() }); } if (basic.Languages != null && basic.Languages.Count > 0) { foreach (var language in basic.Languages) { patient.Communication.Add( new Patient.CommunicationComponent { Language = language.SpokenLanguage.ToFhir(), Preferred = language.IsPrimary } ); } } var basicAddress = new Extension { Url = HealthVaultExtensions.PatientBasicAddress }; basicAddress.AddExtension(HealthVaultExtensions.PatientBasicAddressCity, new FhirString(basic.City)); basicAddress.AddExtension(HealthVaultExtensions.PatientBasicAddressState, basic.StateOrProvince.ToFhir()); basicAddress.AddExtension(HealthVaultExtensions.PatientBasicAddressPostalCode, new FhirString(basic.PostalCode)); basicAddress.AddExtension(HealthVaultExtensions.PatientBasicAddressCountry, basic.Country.ToFhir()); basicV2Extension.Extension.Add(basicAddress); patient.Extension.Add(basicV2Extension); return(patient); }
// Register the type on the generic ThingToFhir partial class public static Patient ToFhir(this ItemTypes.BasicV2 basic) { return(BasicV2ToFhir.ToFhirInternal(basic, ThingBaseToFhir.ToFhirInternal <Patient>(basic))); }