public void WhenPersonalImageTransformedToFhir_ThenPhotoAddedToPatient() { var personalImage = new PersonalImage(); string resourceName = "Microsoft.HealthVault.Fhir.UnitTests.Samples.HealthVaultIcon.png"; using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) { if (stream != null) { using (var reader = new StreamReader(stream)) { personalImage.WriteImage(reader.BaseStream, "image/png"); } } } var patient = personalImage.ToFhir(); Assert.IsNotNull(patient); Assert.AreEqual(1757, patient.Photo[0].Data.Length); }
public void WhenMultipleHeathVaultThingsTransformedToFhirPatient_ThenCodeAndValuesEqual() { var basic = new 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(); var contact = new Contact(); contact.ContactInformation.Address.Add(new ItemTypes.Address { Street = { "123 Main St.", "Apt. 3B" }, City = "Redmond", PostalCode = "98052", County = "King", State = "WA", Country = "USA", Description = "Home address", IsPrimary = true, }); contact.ContactInformation.Address.Add(new ItemTypes.Address { Street = { "1 Back Lane" }, City = "Holmfirth", PostalCode = "HD7 1HQ", County = "HUDDERSFIELD", Country = "UK", Description = "business address", }); contact.ContactInformation.Email.Add(new Email { Address = "*****@*****.**", Description = "Address 1", IsPrimary = true, }); contact.ContactInformation.Email.Add(new Email { Address = "*****@*****.**", Description = "Address 2", }); contact.ContactInformation.Phone.Add(new Phone { Number = "1-425-555-0100", Description = "Phone 1", IsPrimary = true, }); contact.ContactInformation.Phone.Add(new Phone { Number = "0491 570 156", Description = "Phone 2", }); contact.ToFhir(patient); var personalImage = new PersonalImage(); string resourceName = "Microsoft.HealthVault.Fhir.UnitTests.Samples.HealthVaultIcon.png"; using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) { if (stream != null) { using (var reader = new StreamReader(stream)) { personalImage.WriteImage(reader.BaseStream, "image/png"); } } } personalImage.ToFhir(patient); var personal = new Personal { Name = new Name { Full = "Dr. John Phillip Doe, Jr.", First = "John", Middle = "Phillip", Last = "Doe", Suffix = new CodableValue("Junior", "Jr", "name-suffixes", "wc", "1"), Title = new CodableValue("Dr.", "Dr", "name-prefixes", "wc", "1"), }, BirthDate = new HealthServiceDateTime { Date = new HealthServiceDate(1975, 2, 5), Time = new ApproximateTime(1, 30, 34, 15), }, DateOfDeath = new ApproximateDateTime { ApproximateDate = new ApproximateDate(2075, 5, 7), }, SocialSecurityNumber = "000-12-3456", BloodType = new CodableValue("A+", "A+", "blood-types", "wc", "1"), Religion = new CodableValue("Agnostic", "Agn", "religion", "wc", "1"), MaritalStatus = new CodableValue("Never Married", "NM", "marital-status", "wc", "1"), EmploymentStatus = "Employed", IsDeceased = true, IsVeteran = true, Ethnicity = new CodableValue("Other Race", "8", "ethnicity-types", "wc", "1"), HighestEducationLevel = new CodableValue("College Graduate", "ColG", "Education-level", "wc", "1"), OrganDonor = "Organ Donor", IsDisabled = false, }; personal.ToFhir(patient); var json = FhirSerializer.SerializeToJson(patient); Assert.IsNotNull(patient); // Basic Portion 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); // Contact portion Assert.AreEqual(2, patient.Address.Count); var address1 = patient.Address[0]; Assert.AreEqual(2, address1.Line.Count()); Assert.AreEqual("123 Main St.", address1.Line.First()); Assert.AreEqual("Redmond", address1.City); Assert.AreEqual("King", address1.District); Assert.AreEqual("WA", address1.State); Assert.AreEqual("98052", address1.PostalCode); Assert.AreEqual("USA", address1.Country); Assert.AreEqual("Home address", address1.Text); Assert.AreEqual(true, address1.GetBoolExtension(HealthVaultExtensions.IsPrimary)); Assert.AreEqual(4, patient.Telecom.Count); var email1 = patient.Telecom[0]; Assert.AreEqual("*****@*****.**", email1.Value); Assert.AreEqual("Address 1", email1.GetStringExtension(HealthVaultExtensions.Description)); Assert.AreEqual(1, email1.Rank); var phone1 = patient.Telecom[2]; Assert.AreEqual("1-425-555-0100", phone1.Value); Assert.AreEqual("Phone 1", phone1.GetStringExtension(HealthVaultExtensions.Description)); Assert.AreEqual(1, phone1.Rank); // Personal Image portion Assert.IsNotNull(patient); Assert.AreEqual(1757, patient.Photo[0].Data.Length); // Personal portion Assert.IsNotNull(patient); var personalExtension = patient.GetExtension(HealthVaultExtensions.PatientPersonal); Assert.AreEqual("Dr. John Phillip Doe, Jr.", patient.Name[0].Text); Assert.AreEqual("John", patient.Name[0].Given.ToList()[0]); Assert.AreEqual("Phillip", patient.Name[0].Given.ToList()[1]); Assert.AreEqual("Doe", patient.Name[0].Family); Assert.AreEqual("Dr.", patient.Name[0].Prefix.ToList()[0]); Assert.AreEqual("Junior", patient.Name[0].Suffix.ToList()[0]); Assert.AreEqual("1975-02-05", patient.BirthDate); Assert.AreEqual("000-12-3456", patient.Identifier[0].Value); Assert.AreEqual("2075-05-07", ((FhirDateTime)patient.Deceased).Value); Assert.AreEqual("A+", personalExtension.GetExtensionValue <CodeableConcept>(HealthVaultExtensions.PatientBloodType).Coding[0].Code); Assert.AreEqual("Agn", personalExtension.GetExtensionValue <CodeableConcept>(HealthVaultExtensions.PatientReligion).Coding[0].Code); Assert.AreEqual("NM", personalExtension.GetExtensionValue <CodeableConcept>(HealthVaultExtensions.PatientMaritalStatus).Coding[0].Code); Assert.AreEqual("8", personalExtension.GetExtensionValue <CodeableConcept>(HealthVaultExtensions.PatientEthnicity).Coding[0].Code); Assert.AreEqual("ColG", personalExtension.GetExtensionValue <CodeableConcept>(HealthVaultExtensions.PatientHighestEducationLevel).Coding[0].Code); Assert.AreEqual("Employed", personalExtension.GetStringExtension(HealthVaultExtensions.PatientEmploymentStatus)); Assert.AreEqual("Organ Donor", personalExtension.GetStringExtension(HealthVaultExtensions.PatientOrganDonor)); Assert.AreEqual(true, personalExtension.GetBoolExtension(HealthVaultExtensions.PatientIsVeteran)); Assert.AreEqual(false, personalExtension.GetBoolExtension(HealthVaultExtensions.PatientIsDisabled)); }