/// <summary> /// Parse an AD Use extension /// </summary> public static AddressSet.AddressSetUse ParseADUseExtension(List <Extension> extension, List <IResultDetail> dtls) { try { // Now fun part parse AddressSet.AddressSetUse value = 0; foreach (var ext in extension.FindAll(o => o.Url == GetExtensionNameUrl("addressUse"))) { var coding = ext.Value as Coding; if (coding == null) { dtls.Add(new VocabularyIssueResultDetail(ResultDetailType.Error, String.Format("Address use extension must carry a coding from system {0}", typeof(PostalAddressUse).GetValueSetDefinition()), null, null)); } else { value |= (AddressSet.AddressSetUse)Enum.Parse(typeof(AddressSet.AddressSetUse), MARC.Everest.Connectors.Util.Convert <PostalAddressUse>(coding.Code).ToString()); } } return(value); } catch (VocabularyException e) { dtls.Add(new VocabularyIssueResultDetail(ResultDetailType.Error, String.Format(ApplicationContext.LocalizationService.GetString("FHIR007"), GetExtensionNameUrl("addressUse"), e.Message), e)); return(0); } }
/// <summary> /// Create an address set /// </summary> public AddressSet CreateAddressSet(AD address, List <IResultDetail> dtls) { AddressSet retVal = new AddressSet(); AddressSet.AddressSetUse internalNameUse = ConvertAddressUse(address.Use, dtls); if (address == null || address.IsNull) { return(null); } retVal.Use = internalNameUse; // Create the parts foreach (ADXP namePart in address.Part) { var pt = new AddressPart() { AddressValue = namePart.Value, PartType = (AddressPart.AddressPartType)Enum.Parse(typeof(AddressPart.AddressPartType), namePart.Type.ToString()) }; if (pt.PartType == AddressPart.AddressPartType.AddressLine) // R1 doesn't use AL but SAL and the formatter { pt.PartType = AddressPart.AddressPartType.StreetAddressLine; } retVal.Parts.Add(pt); } if (address.UseablePeriod != null && !address.UseablePeriod.IsNull) { dtls.Add(new NotImplementedElementResultDetail("useablePeriod", "urn:hl7-org:v3")); } return(retVal); }
/// <summary> /// Convert address uses /// </summary> private AddressSet.AddressSetUse ConvertAddressUse(SET <CS <PostalAddressUse> > uses, List <IResultDetail> dtls) { AddressSet.AddressSetUse retVal = 0; if (uses == null) { return(0); } foreach (var use in uses) { switch ((PostalAddressUse)use) { case PostalAddressUse.Direct: retVal |= AddressSet.AddressSetUse.Direct; break; case PostalAddressUse.BadAddress: retVal |= AddressSet.AddressSetUse.BadAddress; break; case PostalAddressUse.HomeAddress: retVal |= AddressSet.AddressSetUse.HomeAddress; break; case PostalAddressUse.PhysicalVisit: retVal |= AddressSet.AddressSetUse.PhysicalVisit; break; case PostalAddressUse.PostalAddress: retVal |= AddressSet.AddressSetUse.PostalAddress; break; case PostalAddressUse.PrimaryHome: retVal |= AddressSet.AddressSetUse.PrimaryHome; break; case PostalAddressUse.Public: retVal |= AddressSet.AddressSetUse.Public; break; case PostalAddressUse.TemporaryAddress: retVal |= AddressSet.AddressSetUse.TemporaryAddress; break; case PostalAddressUse.VacationHome: retVal |= AddressSet.AddressSetUse.VacationHome; break; case PostalAddressUse.WorkPlace: retVal |= AddressSet.AddressSetUse.WorkPlace; break; default: dtls.Add(new VocabularyIssueResultDetail(ResultDetailType.Error, String.Format(m_localeService.GetString("MSGE04D"), use), null, null)); break; } } return(retVal); }
public static Extension CreateADUseExtension(AddressSet.AddressSetUse use) { if (use == AddressSet.AddressSetUse.Search) { return(CreateNullElementExtension(NullFlavor.Other)); } PostalAddressUse v3Use = (PostalAddressUse)Enum.Parse(typeof(PostalAddressUse), use.ToString()); string wireCode = MARC.Everest.Connectors.Util.ToWireFormat(v3Use); return(new Extension() { Url = GetExtensionNameUrl("addressUse"), Value = new Coding(typeof(PostalAddressUse).GetValueSetDefinition(), wireCode) }); }