ГОСТ Р ИСО 21090—2016
Атрибут updateMode начинает приносить реальную пользу при управлении списками. В следую
щей группе примеров это демонстрируется на списке контактной информации пациента.
В типичном пользовательском интерфейсе для детализации разных видов контактной информа
ции используются разные группы полей ввода. В информационную эру конкретные виды контактной
информации, которые необходимо обеспечивать в интерфейсе, имеют тенденцию меняться, поэтому
в настоящем стандарте детализация контактной информации представлена в виде типизированного
списка (все больше и больше приложений следуют этому подходу). В данном гипотетическом случае
используются отдельные поля ввода для номера стационарного телефона, номера мобильного теле
фона. номера факса и адреса электронной почты, а результатом ввода является атрибут contacts
: DSET(TEL). Типичная запись пациента может содержать список контактной информации наподобие
следующего, передаваемого в нетранзакционной среде:
<contacts>
<item value-"tel:♦11315551234" use-"H" capabilities-"voice"/>
<item value—"teli*-11995556787" use-"MC" capabilities-"voice sms"/>
<item value-"tel!t11015551235" capabilities-"fax"/>
<item value-
"mailto:example@example.com"/>
</conracts>
В тесно связанной системе, использующей транзакционную обработку на основе атрибута
updateMode, такой полный список редко будет передаваться. Вместо этого чаще будет передаваться
только его часть.
Если пользователь открыл экранную форму с данными о пациенте и изменил в ней номер домаш
него телефона, то может быть передан следующий экземпляр:
<contacts>
citem value-"tel:♦11015551234" use-"H"
capabilities-"voice" updateMode-"D"/>
citem value-"tel:♦12315559876» use-"H"
capabilities-"voice" updateMode-"A"/>
</contactз>
Приложение-получатель сравнивает имеющуюся у него информацию с этим экземпляром.
Если оно не может найти исходный номер +11015551234, то это ошибка, которая должна быть об
работана в соответствии с местными соглашениями. Если оно нашло этот номер, то удаляет
его, а затем добавляет новый номер. Вместо указанного выше экземпляра можно попытаться
послать другой, а именно:
<contacts>
citem value-"tel:*12315559876" use-"H"
capabilities-"voice" updateMode-"R"/>
</contact s>
с инструкцией о замене существующего номера. Однако какой номер следует заменить? На это нет
ответа, поскольку совпадение основано на равенстве, значит, этот фрагмент означает замену номера
домашнего телефона +12315559876 на номер +12315559876.
Поэтому лучше использовать операции удаления (О) и добавления (А), указывая значения типа
данных. Операции замены (R) и добавления/замены (AR) не очень полезны: поскольку совпадение
основано на равенстве, все. что можно сказать, это заменить значение А на значение А, что не имеет
особого смысла. В общем случае полезнее использовать сложные объекты, включаемые в список до
пустимых значений типа данных, тем самым обеспечивая удовлетворение всех известных вариантов
транзакционной обработки.
Существует пример, в котором можно использовать значение UpdateModel.R. Поскольку совпа
дение основано на равенстве, в котором используется передаваемый номер, то следующие два экзем
пляра несут один и тот же смысл:
29