Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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);
        }