示例#1
0
        public static ItemTypes.Address ToHealthVault(this Hl7.Fhir.Model.Address address)
        {
            if ((string.IsNullOrEmpty(address.City)) || (string.IsNullOrWhiteSpace(address.Line.ToString())) || (string.IsNullOrWhiteSpace(address.PostalCode)) ||
                (string.IsNullOrWhiteSpace(address.Country)))
            {
                return(null);
            }

            var hvAddress = new ItemTypes.Address();

            foreach (var line in address.Line)
            {
                hvAddress.Street.Add(line);
            }

            hvAddress.City       = address.City;
            hvAddress.State      = address.State;
            hvAddress.County     = address.District;
            hvAddress.PostalCode = address.PostalCode;
            if (!string.IsNullOrEmpty(address.Country))
            {
                hvAddress.Country = address.Country;
            }

            hvAddress.Description = address.Text;
            hvAddress.IsPrimary   = address.GetBoolExtension(HealthVaultExtensions.IsPrimary);
            return(hvAddress);
        }
示例#2
0
        public void WhenAddressTransformedToFhir_ThenValuesEqual()
        {
            var address = new ItemTypes.Address
            {
                Description = "John's Office Address",
                IsPrimary   = true,
                Street      = { "1", "Microsoft Way" },
                City        = "KEENE",
                State       = "California",
                Country     = "US",
                PostalCode  = "93531",
                County      = "NorthWest"
            };
            var fhirAddress = address.ToFhir();

            Assert.IsNotNull(fhirAddress);
            Assert.AreEqual(address.Description, fhirAddress.Text);
            Assert.AreEqual(address.Street.Count(), fhirAddress.Line.Count());
            Assert.AreEqual(address.City, fhirAddress.City);
            Assert.AreEqual(address.PostalCode, fhirAddress.PostalCode);
            Assert.AreEqual(address.State, fhirAddress.State);
            Assert.AreEqual(address.Country, fhirAddress.Country);
            Assert.AreEqual(address.County, fhirAddress.District);

            Assert.IsInstanceOfType(fhirAddress.Extension.Single().Value, typeof(FhirBoolean));
            var extensionValue = ((FhirBoolean)fhirAddress.Extension.Single().Value).Value;

            Assert.IsNotNull(extensionValue);
            Assert.AreEqual(true, extensionValue);
        }
        internal static Contact ToContact(this Patient patient)
        {
            var hasValue = false;
            var contact  = patient.ToThingBase <ItemTypes.Contact>();

            if (!patient.Address.IsNullOrEmpty())
            {
                hasValue = true;
                foreach (var address in patient.Address)
                {
                    var hvAddress = new ItemTypes.Address();

                    foreach (var line in address.Line)
                    {
                        hvAddress.Street.Add(line);
                    }
                    hvAddress.City       = address.City;
                    hvAddress.State      = address.State;
                    hvAddress.County     = address.District;
                    hvAddress.PostalCode = address.PostalCode;
                    hvAddress.Country    = address.Country;

                    hvAddress.Description = address.Text;
                    hvAddress.IsPrimary   = address.GetBoolExtension(HealthVaultExtensions.IsPrimary);

                    contact.ContactInformation.Address.Add(hvAddress);
                }
            }

            if (!patient.Telecom.IsNullOrEmpty())
            {
                hasValue = true;
                foreach (var contactPoint in patient.Telecom)
                {
                    switch (contactPoint.System)
                    {
                    case ContactPoint.ContactPointSystem.Email:
                        contact.ContactInformation.Email.Add(ConvertContactPointToEmail(contactPoint));
                        break;

                    case ContactPoint.ContactPointSystem.Phone:
                        contact.ContactInformation.Phone.Add(ConvertContactPointToPhone(contactPoint));
                        break;
                    }
                }
            }

            if (hasValue)
            {
                return(contact);
            }

            return(null);
        }
示例#4
0
        public void WhenPersonItemTransformedToFhir_ThenContactAddressIsCopiedToAddress()
        {
            const string description = "14503 Apt# 102";
            const bool   isPrimary   = true;
            const string street      = "SE 140th St"; //Required Multi
            const string city        = "DC";          //Required
            const string state       = "WA";
            const string postCode    = "98008";       //Required
            const string country     = "USA";         //Required
            const string county      = "County";
            PersonItem   person      = GetSamplePerson();
            var          address     = new ItemTypes.Address
            {
                Description = description,
                IsPrimary   = isPrimary,
                City        = city,
                State       = state,
                PostalCode  = postCode,
                Country     = country,
                County      = county
            };

            address.Street.Add(street);
            var contactInfo = new ContactInfo();

            contactInfo.Address.Add(address);
            person.ContactInformation = contactInfo;

            var practitioner = person.ToFhir();

            Assert.IsTrue(practitioner.Address.Any());

            var fhirAddress = practitioner.Address.First();

            Assert.AreEqual(description, fhirAddress.Text);
            Assert.AreEqual(street, fhirAddress.Line.First());
            Assert.AreEqual(city, fhirAddress.City);
            Assert.AreEqual(state, fhirAddress.State);
            Assert.AreEqual(postCode, fhirAddress.PostalCode);
            Assert.AreEqual(country, fhirAddress.Country);
            Assert.AreEqual(county, fhirAddress.District);

            Assert.IsTrue(fhirAddress.Extension.Any(ext => ext.Url == HealthVaultExtensions.IsPrimary));
        }
        internal static Hl7.Fhir.Model.Address ToFhirInternal(ItemTypes.Address hvAddress)
        {
            var address = new Hl7.Fhir.Model.Address
            {
                Text       = hvAddress.Description,
                Line       = hvAddress.Street,
                City       = hvAddress.City,
                PostalCode = hvAddress.PostalCode,
                District   = hvAddress.County,
                State      = hvAddress.State,
                Country    = hvAddress.Country,
            };

            if (hvAddress.IsPrimary.HasValue && hvAddress.IsPrimary.Value)
            {
                address.AddExtension(HealthVaultExtensions.IsPrimary, new FhirBoolean(true));
            }

            return(address);
        }
示例#6
0
        public void WhenMinimumAddressTransformedToFhir_ThenValuesEqual()
        {
            var address = new ItemTypes.Address
            {
                Street     = { "3804 Lakeland ", "Terrace" },
                City       = "KEENE",
                Country    = "US",
                PostalCode = "93531"
            };
            var fhirAddress = address.ToFhir();

            Assert.IsNotNull(fhirAddress);
            Assert.IsTrue(string.IsNullOrEmpty(fhirAddress.Text));
            Assert.IsTrue(string.IsNullOrEmpty(fhirAddress.State));
            Assert.IsTrue(string.IsNullOrEmpty(fhirAddress.District));
            Assert.IsTrue(fhirAddress.Extension.IsNullOrEmpty());

            Assert.AreEqual(address.Street.Count(), fhirAddress.Line.Count());
            Assert.AreEqual(address.City, fhirAddress.City);
            Assert.AreEqual(address.PostalCode, fhirAddress.PostalCode);
            Assert.AreEqual(address.Country, fhirAddress.Country);
        }
 public static Hl7.Fhir.Model.Address ToFhir(this ItemTypes.Address hvAddress)
 {
     return(AddressToFhir.ToFhirInternal(hvAddress));
 }
示例#8
0
        private static ItemTypes.PersonItem ToPerson(this Hl7.Fhir.Model.Practitioner fhirPractitioner)
        {
            if (!fhirPractitioner.Name.Any())
            {
                throw new NotSupportedException($"{fhirPractitioner} needs to have a {nameof(HumanName)}");
            }

            var practitionerName = fhirPractitioner.Name.First(); // Let's consider just the first item

            //name
            var person = new ItemTypes.PersonItem()
            {
                PersonType         = HealthVaultThingPersonTypesCodes.Provider,
                Name               = practitionerName.ToHealthVault(),
                ContactInformation = new ContactInfo()
            };

            //address
            if (!fhirPractitioner.Address.IsNullOrEmpty())
            {
                foreach (var address in fhirPractitioner.Address)
                {
                    ItemTypes.Address hvAddress = address.ToHealthVault();

                    if (hvAddress != null)
                    {
                        person.ContactInformation.Address.Add(hvAddress);
                    }
                }
            }

            //telecom
            if (!fhirPractitioner.Telecom.IsNullOrEmpty())
            {
                foreach (var contactPoint in fhirPractitioner.Telecom)
                {
                    switch (contactPoint.System)
                    {
                    case ContactPoint.ContactPointSystem.Email:
                        person.ContactInformation.Email.Add(contactPoint.ToHealthVault <Email>());
                        break;

                    case ContactPoint.ContactPointSystem.Phone:
                        person.ContactInformation.Phone.Add(contactPoint.ToHealthVault <Phone>());
                        break;
                    }
                }
            }

            //qualification
            if (!fhirPractitioner.Qualification.IsNullOrEmpty())
            {
                var firstQualification = fhirPractitioner.Qualification.First(); //Let's take just the first one
                if (!string.IsNullOrEmpty(firstQualification.Code.Text))
                {
                    person.ProfessionalTraining = firstQualification.Code.Text;
                }
                else if (!firstQualification.Code.Coding.IsNullOrEmpty())
                {
                    person.ProfessionalTraining = firstQualification.Code.Coding.First().Display;
                }
            }

            person.Organization = fhirPractitioner.GetStringExtension(HealthVaultExtensions.Organization);

            if (fhirPractitioner.Identifier.Any())
            {
                person.PersonId = fhirPractitioner.Identifier.First().Value;
            }

            return(person);
        }