При работе с конфигурациями "1С:Медицина. Поликлиника" или "1С:Медицина. Больница" мы часто сталкиваемся с необходимостью создания и настройки собственных Шаблонов Медицинских Документов (ШМД). Эти шаблоны являются ключевым инструментом для стандартизации оформления медицинских записей, ускорения создания документов и облегчения работы медицинского персонала. Однако, при разработке собственных ШМД могут возникнуть трудности, особенно связанные с отображением и форматированием данных, таких как таблицы, при их выводе стандартным визуализатором.
Давайте разберем, как мы можем настроить макеты ШМД, решить распространенные проблемы с визуализацией таблиц и внести необходимые изменения для корректного отображения медицинских документов.
Медицинские документы в "1С:Медицина" отображаются с использованием визуализаторов в формате CDA (Clinical Document Architecture). Это позволяет унифицировать структуру документов для обмена между различными информационными системами. Табличные визуализаторы представляют медицинский документ в формате CDA в виде табличного документа, обычно являющегося внешней обработкой платформы "1С:Предприятие 8".
Итак, мы выяснили, что напрямую настроить макет ШМД в пользовательском режиме для влияния на окончательный вывод документа может быть сложно. Вывод документа в значительной степени определяется визуализатором. Однако, это не означает, что у нас нет инструментов для контроля над отображением. Мы можем работать с визуализатором двумя основными способами:
Обработки.ТабличныйВизуализатор. Мы можем сохранить его как внешнюю обработку и внести свои корректировки.Для создания собственного табличного визуализатора нам нужно разработать внешнюю обработку. Эта обработка может содержать макет табличного документа с именем Макет. Если такой макет отсутствует, будет использоваться стандартный макет Обработки.ТабличныйВизуализатор.Макеты.Макет.
Макет табличного документа внутри визуализатора определяет порядок следования областей и их оформление. Он может содержать:
CDA_: Предназначены для заполнения данными из CDA-документа, например, Заголовок, Шапка, Подвал.CDA: Содержит оформление документа по умолчанию. Эта область может включать вложенные области, соответствующие элементам человекочитаемой части CDA-документа, таким как title, paragraph, table, tbody, thead, tfoot, tr, th, td, list, item, img.CDA_: Предназначены для описания оформления отдельных секций section из человекочитаемой части CDA-документа.Наиболее простой путь – это взять за основу стандартный табличный визуализатор, сохранить его как внешнюю обработку и модифицировать. В нем мы можем настроить параметры страницы и отображение колонтитулов.
Мы часто сталкиваемся с ситуацией, когда таблицы, созданные в ШМД и отлично отформатированные в макете, при выводе стандартным визуализатором отображаются некорректно. Колонки могут быть слишком узкими (2-3 символа), из-за чего таблица становится нечитаемой, особенно если она содержит много колонок.
Давайте проанализируем причину такого поведения и предложим несколько шагов для устранения проблемы.
Причина проблемы: Ширина колонок при выводе визуализатором вычисляется пропорционально ширинам, указанным в макете ШМД. Однако, сумма этих ширин не должна превышать ширину области печати, которая задана в макете визуализатора. Например, в макете табличного визуализатора по умолчанию могут быть установлены параметры страницы А4, портретная ориентация, при которой ширина области печати составляет около 102 условных единиц (средних символов шрифта), или примерно 190 мм (с учетом полей). Если наша таблица содержит, например, 24 колонки, то на каждую колонку приходится в среднем всего около 8 мм. Если первая колонка в макете ШМД имеет большую ширину, то остальные колонки могут стать еще уже.
Для решения этой проблемы нам нужно предпринять следующие шаги:
Чтобы колонки отображались шире, нам необходимо увеличить доступную ширину области печати. Мы можем сделать это, изменив формат бумаги или ориентацию в макете визуализатора. Рассмотрим варианты:
После изменения формата или ориентации бумаги, мы должны соответственно установить ширину области печати в макете визуализатора. Например, при использовании формата А4 в альбомной ориентации, ширина страницы составит 297 мм. Если вычесть поля (например, 20 мм на левое и правое), ширина области печати будет около 277 мм. В таком случае средняя ширина колонки для 24 колонок составит уже около 11.5 мм.
Для правильного пересчета размеров нам необходимо учитывать, что 1 мм содержит примерно 0.54 "средних символов шрифта". Таким образом, 277 мм соответствуют примерно 149.58 средним символам шрифта. Именно такие границы нам и нужно будет установить в макете нашего визуализатора.
Помним, что 1 символ шрифта = 105 твипов, а 1 твип = 1/1440 дюйма = 1/567 см. Эти соотношения могут быть полезны при точной настройке размеров.
Для корректного вывода полей, особенно тех, которые предполагают достаточно объемный контент, мы рекомендуем объединять ячейки в макете ШМД. Например, если у нас есть несколько ячеек в одной строке, которые должны содержать одну логическую часть информации, лучше их объединить. Это важно, потому что при конвертации в CDA каждая необъединенная ячейка может быть представлена как отдельный элемент td CDA. При выводе это может привести к тому, что отобразятся несколько пустых или некорректно заполненных ячеек рядом с основной, или текст будет переноситься внутри очень узкой ячейки, делая ее нечитаемой.
Даже после настройки параметров страницы в макете визуализатора и выбора альбомной ориентации, мы можем столкнуться с проблемой, когда секции "Данные" и "Подвал" продолжают отображаться так, как будто установлена портретная ориентация, в то время как "Заголовок" отображается корректно. Это указывает на ошибку в конфигурации, которая неправильно рассчитывает максимальную ширину таблицы для альбомной ориентации.
К счастью, для этой проблемы существует конкретное исправление, которое мы можем применить в общем модуле ВизуализаторCDA. Нам необходимо найти и заменить строку, отвечающую за расчет максимальной ширины таблицы.
Исходная строка кода:
МаксимальнаяШиринаТаблицыВМм = Макет.ШиринаСтраницы - Макет.ПолеСлева - Макет.ПолеСправа - 13;
Эта строка неправильно учитывает ориентацию страницы. Для корректной работы нам необходимо заменить ее следующим условным выражением:
Если Макет.ОриентацияСтраницы = ОриентацияСтраницы.Портрет Тогда
МаксимальнаяШиринаТаблицыВМм = Макет.ШиринаСтраницы - Макет.ПолеСлева - Макет.ПолеСправа;
Иначе
МаксимальнаяШиринаТаблицыВМм = Макет.ВысотаСтраницы - Макет.ПолеСверху - Макет.ПолеСнизу - 13;
КонецЕсли;
Объяснение исправления:
В случае портретной ориентации (ОриентацияСтраницы.Портрет), расчет остается прежним, используя Макет.ШиринаСтраницы. Однако, при альбомной ориентации (ветка Иначе), мы должны использовать Макет.ВысотаСтраницы для определения доступной ширины, поскольку страница повернута. Также учитываются соответствующие поля: Макет.ПолеСверху и Макет.ПолеСнизу, которые при альбомной ориентации фактически становятся боковыми полями для расчета ширины.
После применения этого исправления все элементы таблиц должны начать отображаться корректно, в соответствии с заданной альбомной ориентацией и настроенными размерами.
При создании ШМД с макетом табличного документа мы можем столкнуться с тем, что в сформированном документе не указывается тип МД, что приводит к неполноценности документа в списке МД. Для того чтобы передать тип медицинского документа (МД) через макет ШМД, нам необходимо выполнить следующие шаги после создания "Формы редактора ШМД":
Убедитесь, что справочники "Типы МД", "Руководства по реализации и протоколы информационного взаимодействия СЭМД" и "Структура секций МД" корректно заполнены и настроены для вашего типа документа.
Если нам необходимо добавить в шапку или подвал медицинского документа произвольную информацию, например, указание звания врача ("кандидат медицинских наук"), то для этого наиболее подходящим решением являются ШМД-обработки. В отличие от ШМД, созданных на основании формы редактора, ШМД-обработки разрабатываются в конфигураторе, что позволяет нам:
Решения для таких задач часто реализуются через расширения конфигурации. Это позволяет модифицировать поведение существующих ШМД или создавать новые без изменения типовой конфигурации, что облегчает ее обновление в будущем. Внешние обработки позволяют формировать содержимое документа, где данные сохраняются в виде XML-структуры, которую затем обрабатывает визуализатор. Разрабатывая свою ШМД-обработку, мы получаем полный контроль над формированием заголовков, подвалов и основного тела документа.
Давайте еще раз систематизируем подходы к созданию ШМД в "1С:Медицина":
ШМД являются неотъемлемой частью электронной медицинской карты пациента и используются для формирования СЭМД (Структурированных Электронных Медицинских Документов) — для этой задачи есть готовое решение для передачи СЭМД в ЕГИСЗ. СЭМД – это электронные документы с четкой структурой, обеспечивающие взаимодействие информационных систем. Перед созданием СЭМД с помощью редактора ШМД крайне важно предварительно заполнить и настроить соответствующие справочники, такие как "Типы МД", "Руководства по реализации и протоколы информационного взаимодействия СЭМД", "Структура секций МД", "Кодируемые поля CDA документов", а также классификаторы (МКБ10) и номенклатуру медицинских услуг.
Мы знаем, что в "1С:Медицина. Поликлиника" (и "Больница") поддерживается функционал голосового заполнения медицинских документов. Это может быть весьма полезно для врачей, работающих с хорошо структурированными формами, в условиях, когда использование клавиатуры затруднено (например, врачи УЗИ, патологоанатомы, врачи на выезде), или в нешумных помещениях. Система голосового ввода предоставляет широкий спектр возможностей:
Для настройки голосового ввода нам необходимо задать синонимы для элементов формы редактора ШМД и для элементов списков выбора. Инфраструктура решения обычно включает конфигурацию "1С:Медицина. Поликлиника (Больница)" и специализированную программу Voice2Med, которая обеспечивает функционал распознавания речи.
Таким образом, мы видим, что настройка и работа с ШМД в "1С:Медицина" требует комплексного подхода, включающего как понимание общих принципов работы визуализатора, так и умение применять конкретные технические решения и исправления. Следуя этим рекомендациям, мы сможем эффективно управлять отображением медицинских документов и обеспечивать их корректное формирование.