/// <summary> /// Updates an <see cref="XPN"/> segment. /// </summary> /// <param name="entityName">The entity name to use to update the XPN segment.</param> /// <param name="name">The XPN segment to update.</param> internal static XPN UpdateXPN(EntityName entityName, XPN name) { // ensure authenticated EnsureAuthenticated(); tracer.TraceEvent(TraceEventType.Verbose, 0, "Adding names"); name.NameTypeCode.Value = MessageUtil.GetCode(entityName.NameUseKey.Value, CodeSystemKeys.EntityNameUse); name.DegreeEgMD.Value = string.Join(" ", entityName.LoadCollection <EntityNameComponent>("Component").Where(c => c.ComponentTypeKey == NameComponentKeys.Suffix).Select(c => c.Value)); name.FamilyLastName.FamilyName.Value = string.Join(" ", entityName.Component.Where(c => c.ComponentTypeKey == NameComponentKeys.Family).Select(c => c.Value)); name.GivenName.Value = string.Join(" ", entityName.Component.Where(c => c.ComponentTypeKey == NameComponentKeys.Given).Select(c => c.Value)); name.PrefixEgDR.Value = string.Join(" ", entityName.Component.Where(c => c.ComponentTypeKey == NameComponentKeys.Prefix).Select(c => c.Value)); name.MiddleInitialOrName.Value = string.Join(" ", entityName.Component.Where(c => c.ComponentTypeKey == NameComponentKeys.Delimiter).Select(c => c.Value)); return(name); }
/// <summary> /// Convert name to XPN /// </summary> public static XPN FromModel(this XPN me, EntityName name) { var refTerm = ApplicationServiceContext.Current.GetService <IConceptRepositoryService>().GetConceptReferenceTerm(name.NameUseKey.GetValueOrDefault(), NameUseCodeSystem); if (refTerm != null) { me.NameTypeCode.Value = refTerm.Mnemonic; } // Convert components foreach (var itm in name.LoadCollection <EntityNameComponent>("Component")) { if (itm.ComponentTypeKey == NameComponentKeys.Family) { if (string.IsNullOrEmpty(me.FamilyName.Surname.Value)) { me.FamilyName.Surname.Value = itm.Value; } else if (string.IsNullOrEmpty(me.FamilyName.OwnSurname.Value)) { me.FamilyName.OwnSurname.Value = itm.Value; } } else if (itm.ComponentTypeKey == NameComponentKeys.Given) { if (String.IsNullOrEmpty(me.GivenName.Value)) { me.GivenName.Value = itm.Value; } else { me.SecondAndFurtherGivenNamesOrInitialsThereof.Value += itm.Value + " "; } } else if (itm.ComponentTypeKey == NameComponentKeys.Suffix) { me.SuffixEgJRorIII.Value = itm.Value; } else if (itm.ComponentTypeKey == NameComponentKeys.Prefix) { me.PrefixEgDR.Value = itm.Value; } } return(me); }
/// <summary> /// Converts an <see cref="EntityName"/> instance to a <see cref="FhirHumanName"/> instance. /// </summary> /// <param name="entityName">Name of the entity.</param> /// <returns>Returns the mapped FHIR human name.</returns> public static FhirHumanName ToFhirHumanName(EntityName entityName) { traceSource.TraceEvent(EventLevel.Verbose, "Mapping entity name"); if (entityName == null) { return(null); } // Return value var retVal = new FhirHumanName { Use = DataTypeConverter.ToFhirCodeableConcept(entityName.NameUse, "http://hl7.org/fhir/name-use")?.GetPrimaryCode()?.Code }; // Process components foreach (var com in entityName.LoadCollection <EntityNameComponent>(nameof(EntityName.Component))) { if (string.IsNullOrEmpty(com.Value)) { continue; } if (com.ComponentTypeKey == NameComponentKeys.Given) { retVal.Given.Add(com.Value); } else if (com.ComponentTypeKey == NameComponentKeys.Family) { retVal.Family.Add(com.Value); } else if (com.ComponentTypeKey == NameComponentKeys.Prefix) { retVal.Prefix.Add(com.Value); } else if (com.ComponentTypeKey == NameComponentKeys.Suffix) { retVal.Suffix.Add(com.Value); } } return(retVal); }