Про (не)простые типы данных или что в имени тебе моем?
Вы, наверное, заметили, что я очень люблю стандарты. Ещё я люблю изучать разные стандарты и подходы из разных предметных областей — это тренирует насмотренность и можно подглядеть решения типовых проблем и как с ними справляются. Например, почти у всех есть задачи назначения и контроля полномочий, управления пользователями, какие-то инфраструктурные вещи (синхронизация времени для ведения журналов, например, из PCI DSS).
Я в начале своего трудового пути писал софт для медицины — цифровая обработка ЭКГ, комплекс диагностики тканей в раневой зоне в процессе заживления, ранняя диагностика катаракты глаза — было интересно. Коллеги рядом писали учетный софт для больниц — первые электронные мед.карты, статистика для страховых — тоже любопытно. Это ещё в прошлом веке было.
В медицине есть такой стандарт — HL7, Health Level 7, он ещё в 80-х разрабатывался, до XML, в общем, старинная история. Ну и за это время много кейсов в себя вобрал. Я не знаю, насколько он в России сейчас распространен, но официальный перевод существует (ГОСТ Р ИСО/HL7 27931-2015) и некоторые системы точно его поддерживают.
И вот в этом HL7 есть поле для хранения имени пациента. Ну, что тут можно изобрести? ФИО в одну строку или ФИО в трех полях, какие ещё варианты, казалось бы? В HL7 под имя заведено 15 полей. Ну ладно, под расширенное имя. Поля там такие: XPN.1 Семейное имя. Это сложный тип, у которого в свою очередь следующие поля: FN.1 Фамилия FN.2 Префикс собственной фамилии ("де", "фон") FN.3 Собственная фамилия (девичья фамилия) FN.4 Префикс фамилии партнера/супруга FN.5 Фамилия партнера/супруга
Префикс тут выделяется не просто так, а по прагматичным соображениям: он не участвует в сортировке (иначе все "фоны" были бы на "ф").
XPN.2 Личное имя. XPN.3 Последующие личные имена, отчество, инициалы (через пробел) XPN.4 Суффикс ("мл." или "III") XPN.5 Префикс ("д-р") XPN.6 Ученая степень / сертификат (раньше тут был справочник степеней, типа "MD" или "PHD", по нашему будет "к.т.н."; с версии 2.5 не используется, см. XPN.14) XPN.7 Код типа имени (ссылка на справочник типов имен, он достоин быть приведенным целиком: "псевдоним", "имя при рождении", "имя при усыновлении", "для отображения на экране", "указанное в лицензии", "юридически признаваемое", "девичье", "кличка, прозвище", "зарегистрированная кличка (для животных)", "кодированный псевдоним для анонимизации", "племенное имя", "религиозное", "имя новорожденного до получения документов", "более неиспользуемое, деднейм", "временное", "неправильное", "неизвестное")
Тут видны разнообразные кейсы, с которыми медицина сталкивается.
XPN.8 Код представления имени (это для иероглифических языков: алфавитное, идеографическое, фонетическое) XPN.9 Контекст использования имени (ссылка на пользовательский справочник; я не нашел примеров, говорят, это актуально для австралийских аборигенов, которые называют себя разными именами в разных больницах) XPN.10 Период действия имени (с версии 2.5 не используется, заменен на XPN.12 и XPN.13) XPN.11 Порядок сборки имени (ссылка на справочник со значениями типа "Prefix Family Middle Given Suffix") XPN.12 Дата начала действия (да, это ещё и темпоральная таблица!) XPN.13 Срок действия (последняя дата использования) XPN.14 Профессиональный суффикс (просто строка, используется только для отображения) XPN.15 Как обращаться (например, по всем документам человек Владимир, а предпочитает, чтобы его звали Дима. Или у священнослужителей — "отец Иоанн").
Я почему-то не вижу тут признака языка, он есть только в конкретном сообщении, хотя напрашивается несколько вариантов, но видимо как-то с этим справляются.
В общем, пока это самая замороченная система хранения личных имен, которая мне встречалась. Не уверен, что всё из этого я бы стал реализовывать в каждой системе, но вот с разными написаниями, девичьими фамилиями, множественными фамилиями и именами, деднеймами и сроком действия имен приходилось сталкиваться, каждый раз это какое-то мучение.
Про (не)простые типы данных или что в имени тебе моем?
Вы, наверное, заметили, что я очень люблю стандарты. Ещё я люблю изучать разные стандарты и подходы из разных предметных областей — это тренирует насмотренность и можно подглядеть решения типовых проблем и как с ними справляются. Например, почти у всех есть задачи назначения и контроля полномочий, управления пользователями, какие-то инфраструктурные вещи (синхронизация времени для ведения журналов, например, из PCI DSS).
Я в начале своего трудового пути писал софт для медицины — цифровая обработка ЭКГ, комплекс диагностики тканей в раневой зоне в процессе заживления, ранняя диагностика катаракты глаза — было интересно. Коллеги рядом писали учетный софт для больниц — первые электронные мед.карты, статистика для страховых — тоже любопытно. Это ещё в прошлом веке было.
В медицине есть такой стандарт — HL7, Health Level 7, он ещё в 80-х разрабатывался, до XML, в общем, старинная история. Ну и за это время много кейсов в себя вобрал. Я не знаю, насколько он в России сейчас распространен, но официальный перевод существует (ГОСТ Р ИСО/HL7 27931-2015) и некоторые системы точно его поддерживают.
И вот в этом HL7 есть поле для хранения имени пациента. Ну, что тут можно изобрести? ФИО в одну строку или ФИО в трех полях, какие ещё варианты, казалось бы? В HL7 под имя заведено 15 полей. Ну ладно, под расширенное имя. Поля там такие: XPN.1 Семейное имя. Это сложный тип, у которого в свою очередь следующие поля: FN.1 Фамилия FN.2 Префикс собственной фамилии ("де", "фон") FN.3 Собственная фамилия (девичья фамилия) FN.4 Префикс фамилии партнера/супруга FN.5 Фамилия партнера/супруга
Префикс тут выделяется не просто так, а по прагматичным соображениям: он не участвует в сортировке (иначе все "фоны" были бы на "ф").
XPN.2 Личное имя. XPN.3 Последующие личные имена, отчество, инициалы (через пробел) XPN.4 Суффикс ("мл." или "III") XPN.5 Префикс ("д-р") XPN.6 Ученая степень / сертификат (раньше тут был справочник степеней, типа "MD" или "PHD", по нашему будет "к.т.н."; с версии 2.5 не используется, см. XPN.14) XPN.7 Код типа имени (ссылка на справочник типов имен, он достоин быть приведенным целиком: "псевдоним", "имя при рождении", "имя при усыновлении", "для отображения на экране", "указанное в лицензии", "юридически признаваемое", "девичье", "кличка, прозвище", "зарегистрированная кличка (для животных)", "кодированный псевдоним для анонимизации", "племенное имя", "религиозное", "имя новорожденного до получения документов", "более неиспользуемое, деднейм", "временное", "неправильное", "неизвестное")
Тут видны разнообразные кейсы, с которыми медицина сталкивается.
XPN.8 Код представления имени (это для иероглифических языков: алфавитное, идеографическое, фонетическое) XPN.9 Контекст использования имени (ссылка на пользовательский справочник; я не нашел примеров, говорят, это актуально для австралийских аборигенов, которые называют себя разными именами в разных больницах) XPN.10 Период действия имени (с версии 2.5 не используется, заменен на XPN.12 и XPN.13) XPN.11 Порядок сборки имени (ссылка на справочник со значениями типа "Prefix Family Middle Given Suffix") XPN.12 Дата начала действия (да, это ещё и темпоральная таблица!) XPN.13 Срок действия (последняя дата использования) XPN.14 Профессиональный суффикс (просто строка, используется только для отображения) XPN.15 Как обращаться (например, по всем документам человек Владимир, а предпочитает, чтобы его звали Дима. Или у священнослужителей — "отец Иоанн").
Я почему-то не вижу тут признака языка, он есть только в конкретном сообщении, хотя напрашивается несколько вариантов, но видимо как-то с этим справляются.
В общем, пока это самая замороченная система хранения личных имен, которая мне встречалась. Не уверен, что всё из этого я бы стал реализовывать в каждой системе, но вот с разными написаниями, девичьими фамилиями, множественными фамилиями и именами, деднеймами и сроком действия имен приходилось сталкиваться, каждый раз это какое-то мучение.