Esempio n. 1
0
        /// <summary>
        /// Convert a name
        /// </summary>
        internal NameSet ConvertName(HumanName name, List <IResultDetail> dtls)
        {
            NameSet retVal = new NameSet();

            if (name.Use != null)
            {
                retVal.Use  = HackishCodeMapping.Lookup(HackishCodeMapping.NAME_USE, name.Use);
                retVal.Use |= ExtensionUtil.ParsePNUseExtension(name.Use.Extension, dtls);
            }

            // Name text
            if (name.Text != null)
            {
                dtls.Add(new UnsupportedFhirDatatypePropertyResultDetail(ResultDetailType.Warning, "Text", "Name"));
                name.Text = null;
            }

            foreach (var fn in name.Family)
            {
                retVal.Parts.Add(new NamePart()
                {
                    Type = NamePart.NamePartType.Family, Value = fn
                });
            }
            foreach (var sfx in name.Suffix)
            {
                retVal.Parts.Add(new NamePart()
                {
                    Type = NamePart.NamePartType.Suffix, Value = sfx
                });
            }
            foreach (var gn in name.Given)
            {
                retVal.Parts.Add(new NamePart()
                {
                    Type = NamePart.NamePartType.Given, Value = gn
                });
            }
            foreach (var pfx in name.Prefix)
            {
                retVal.Parts.Add(new NamePart()
                {
                    Type = NamePart.NamePartType.Prefix, Value = pfx
                });
            }

            retVal.Parts.RemoveAll(o => String.IsNullOrEmpty(o.Value));
            // Use period
            if (name.Period != null)
            {
                dtls.Add(new UnsupportedFhirDatatypePropertyResultDetail(ResultDetailType.Warning, "Period", "Name"));
                name.Period = null;
            }

            return(retVal);
        }