private static string JsonStringForPersonName(IPersonName personName)
        {
            if (personName == null)
            {
                return(null);
            }

            var stringBuilder = new System.Text.StringBuilder();

            stringBuilder.Append("{");

            TryAddKeyValue(StringDictionaryFormat, "_namePrefix", personName.NamePrefix, stringBuilder);
            TryAddKeyValue(StringDictionaryFormat, "_givenName", personName.GivenName, stringBuilder);
            TryAddKeyValue(StringDictionaryFormat, "_middleName", personName.MiddleName, stringBuilder);
            TryAddKeyValue(StringDictionaryFormat, "_familyName", personName.FamilyName, stringBuilder);
            TryAddKeyValue(StringDictionaryFormat, "_nameSuffix", personName.NameSuffix, stringBuilder);
            TryAddKeyValue(StringDictionaryFormat, "_nickname", personName.Nickname, stringBuilder);

            var phoneticRepresentationJson = JsonStringForPersonName(personName.PhoneticRepresentation);

            TryAddKeyValue(StringObjectFormat, "_phoneticRepresentation", phoneticRepresentationJson, stringBuilder);

            stringBuilder.Append("}");
            return(stringBuilder.ToString());
        }
Example #2
0
        public void SetName_WhenFullNameIsWhiteSpace_ThrowsArgumentNullException()
        {
            IPersonName sut = CreateSut();

            ArgumentNullException result = Assert.Throws <ArgumentNullException>(() => sut.SetName(" "));

            Assert.That(result.ParamName, Is.EqualTo("fullName"));
        }
Example #3
0
 /// <summary>
 /// Gets the formatted full name of the patient.
 /// </summary>
 /// <returns>The full name of the patient.</returns>
 public static string GetFullName(this IPersonName value)
 {
     return(string.Format(
                "{0}{1}{2}",
                value.Forename,
                string.IsNullOrWhiteSpace(value.Forename) || string.IsNullOrWhiteSpace(value.Surname) ? string.Empty : " ",
                value.Surname));
 }
Example #4
0
        public void SetName_WhenFullNameHasOnlyValueForSurname_AssertSurnameIsSetToValue()
        {
            IPersonName sut = CreateSut();

            string surname = _fixture.Create <string>().Replace(" ", string.Empty);

            sut.SetName(surname);

            Assert.That(sut.Surname, Is.EqualTo(surname));
        }
Example #5
0
        public void SetName_WhenFullNameHasValueForGivenNameAndSurname_AssertGivenNameIsExtractedAndSet()
        {
            IPersonName sut = CreateSut();

            string givenName = _fixture.Create <string>().Replace(" ", string.Empty);
            string surname   = _fixture.Create <string>().Replace(" ", string.Empty);

            sut.SetName($"{givenName} {surname}");

            Assert.That(sut.GivenName, Is.EqualTo(givenName));
        }
Example #6
0
        public void SetName_WhenFullNameHasValueForGivenNameAndSurname_AssertMiddleNameIsSetToNull()
        {
            IPersonName sut = CreateSut();

            string givenName = _fixture.Create <string>().Replace(" ", string.Empty);
            string surname   = _fixture.Create <string>().Replace(" ", string.Empty);

            sut.SetName($"{givenName} {surname}");

            Assert.That(sut.MiddleName, Is.Null);
        }
Example #7
0
        /// <summary>
        /// Creates a PersonName instance from a CN instance.
        /// </summary>
        /// <param name="name">The HL7 V2 CN instance.</param>
        /// <returns></returns>
        internal static IPersonName GetPersonNameFromCn(CN name)
        {
            IPersonName personName = BaseCDAModel.CreatePersonName();

            personName.FamilyName = name.familyname;
            personName.GivenNames = new List <string> {
                name.givenname
            };
            if (!string.IsNullOrWhiteSpace(name.prefix))
            {
                personName.Titles = new List <string> {
                    name.prefix
                };
            }

            return(personName);
        }
        public static string ToLocalizedString(
            this IPersonName personName,
            PersonNameFormatterStyle style = PersonNameFormatterStyle.Default,
            bool usePhoneticRepresentation = false)
        {
#if NATIVE_PERSON_NAME_COMPONENTS_AVAILABLE
            var jsonString      = JsonStringForPersonName(personName);
            var localizedString = PInvoke.AppleAuth_GetPersonNameUsingFormatter(jsonString, (int)style, usePhoneticRepresentation);
            if (localizedString != null)
            {
                return(localizedString);
            }
#endif
            var orderedParts = new System.Collections.Generic.List <string>();
            if (string.IsNullOrEmpty(personName.NamePrefix))
            {
                orderedParts.Add(personName.NamePrefix);
            }

            if (string.IsNullOrEmpty(personName.GivenName))
            {
                orderedParts.Add(personName.GivenName);
            }

            if (string.IsNullOrEmpty(personName.MiddleName))
            {
                orderedParts.Add(personName.MiddleName);
            }

            if (string.IsNullOrEmpty(personName.FamilyName))
            {
                orderedParts.Add(personName.FamilyName);
            }

            if (string.IsNullOrEmpty(personName.NameSuffix))
            {
                orderedParts.Add(personName.NameSuffix);
            }

            return(string.Join(" ", orderedParts.ToArray()));
        }
        public static string ToLocalizedString(
            this IPersonName personName,
            PersonNameFormatterStyle style = PersonNameFormatterStyle.Default,
            bool usePhoneticRepresentation = false)
        {
#if UNITY_IOS && !UNITY_EDITOR
            var jsonString = JsonStringForPersonName(personName);
            return(PInvoke.AppleAuth_IOS_GetPersonNameUsingFormatter(jsonString, (int)style, usePhoneticRepresentation));
#else
            var orderedParts = new System.Collections.Generic.List <string>();
            if (string.IsNullOrEmpty(personName.NamePrefix))
            {
                orderedParts.Add(personName.NamePrefix);
            }

            if (string.IsNullOrEmpty(personName.GivenName))
            {
                orderedParts.Add(personName.GivenName);
            }

            if (string.IsNullOrEmpty(personName.MiddleName))
            {
                orderedParts.Add(personName.MiddleName);
            }

            if (string.IsNullOrEmpty(personName.FamilyName))
            {
                orderedParts.Add(personName.FamilyName);
            }

            if (string.IsNullOrEmpty(personName.NameSuffix))
            {
                orderedParts.Add(personName.NameSuffix);
            }

            return(string.Join(" ", orderedParts));
#endif
        }
        public void Parse(string name, IName person, string format = null)
        {
            if (guard)
            {
                return;
            }
            guard = true;

            try
            {
                if (!(person is IPersonName))
                {
                    throw new ArgumentException("Cannot parse as object is not an IPersonName");
                }

                // Assign the person
                Person = (IPersonName)person;

                // Initialise the person and ourselves
                Initialise();

                // Process the supplied name
                Lex.Source = new StringReader(name);

                var symbol = Lex.GetToken();
                while (symbol.Token != TokenClass.EOF)
                {
                    switch (symbol.Token)
                    {
                    case TokenClass.Comma:
                        SurnameHint += 1;
                        break;

                    case TokenClass.Value:
                        var nameSymbol = symbol as NameSymbol;
                        if (nameSymbol == null)
                        {
                            AddValue(symbol);
                        }
                        else
                        {
                            switch (nameSymbol.NameType)
                            {
                            case NameToken.Title:
                                AddTitle(nameSymbol);
                                break;

                            case NameToken.Given:
                                AddForename(symbol);
                                break;

                            case NameToken.Prefix:
                                AddPrefix(symbol);
                                break;

                            case NameToken.Family:
                                AddSurname(symbol);
                                break;

                            case NameToken.Suffix:
                                AddSuffix(symbol);
                                break;

                            case NameToken.Civil:
                            case NameToken.Military:
                            case NameToken.Academic:
                            case NameToken.Professional:
                                AddLetters(symbol);
                                break;

                            case NameToken.Multiple:
                                AddMultiple(nameSymbol);
                                break;
                            }
                        }
                        break;

                    case TokenClass.Minus:
                        AddMinus(symbol);
                        break;

                    case TokenClass.SingleQuote:
                    case TokenClass.Apostrophe:
                        AddSurname(symbol);
                        break;
                    }
                    symbol = Lex.GetToken();
                }

                AdjustHints();

                // Rebuild the name from the parsed components
                ConstructName();

                // Tidy up the elements
                TidyName();

                // Push the values back into the name
                AssignName(lastTitle == 0 ? "TFS" : "FTS");
            }
            finally
            {
                guard = false;
            }
        }
Example #11
0
 public User SetPersonName(IPersonName value)
 {
     PersonName = new PersonName(value.FamilyName, value.GivenName, value.MiddleName);
     return(this);
 }