Навигация:  МОДУЛЬ "УЧЕТ УСЛУГ" > ИМПОРТ ДАННЫХ МОДУЛЯ "УЧЕТ УСЛУГ" > Импорт прикреплений пациентов >

Механизм импорта прикреплений

Предыдущая страницаВернуться в начало главыСледующая страница

Все импортируемые данные должны быть подготовлены в виде таблицы в одном или нескольких файлах с расширением XLS или DBF, в том числе, DBF, сопряженный с DBT-файлами. Данные в файлах (далее файлы импорта) должны иметь определенную структуру, описанную в подразделе Требования к файлу импорта.

Первый этап: загрузка импортируемых данных в таблицы импорта

Первым этапом импорта прикреплений пациентов данные из одного или нескольких файлов импорта переносятся в неизмененном виде в поля таблиц базы данных МЕДИАЛОГ (таблицы импорта) с именами IMP_<имя_файла_импорта без расширения>, где временно хранятся до начала обработки. Название таблицы импорта может быть, например, IMP_STRAHOVAYA (файл strahovaya.xls). Загрузка данных происходит низкоуровневыми функциями SQL-сервера, поэтому процесс загрузки не занимает много времени.

Количество созданных таблиц импорта соответствует количеству файлов импорта, набор полей в каждой таблице определяется структурой данных в соответствующем файле. В дальнейшем таблицы импорта хранятся в базе данных, их структура может оставаться постоянной или при необходимости изменяться пользователем при последующем импортировании данных.

В основную таблицу импорта, указанную в параметрах конфигурации, МИС МЕДИАЛОГ автоматически добавляет системные поля, необходимые для обработки данных при импорте:

_PATIENTS_ID int– ID пациента, который был найден или создан в базе данных МЕДИАЛОГ;
_FM_CLINK_ID int– ID медицинской программы, которая была найдена или создана в базе данных МЕДИАЛОГ;
_FM_CLINK_PATIENTS_ID int– ID прикрепления пациента, которое было найдено или создано в базе данных МЕДИАЛОГ;
_STATUS int – статус обработки записи;
_ERR_TEXT varchar (2000)– текст ошибки обработки импортируемой записи.

Если в параметрах конфигурации импорта указаны Поля маппинга, т.е. соответствие параметров файла импорта и системных параметров, то основная таблица импорта будет создана с системными именами полей, а значения полей будут прописаны из соответствующих полей файла импорта.

Перед каждой новой загрузкой данных таблицы импорта очищаются от записей предыдущего импорта. При необходимости обнуления значения ID в таблицах импорта следует добавить в SQL-скрипт инициализации процедуру удаления строки из таблицы ID_VALUES, где KEY_NAME = 'IMP_файл_импорта'.

Второй этап: скрипт инициализации

После того, как все входящие файлы загружены в соответствующие им таблицы импорта, выполняется скрипт инициализации, заданный на вкладке SQL (подготовка). После того, как все входящие данные из файлов импорта файлы загружены в соответствующие им таблицы импорта базы данных МЕДИАЛОГ, запускается SQL-скрипт инициализации, выполнение которого подготавливает импортируемые данные к быстрой обработке и переносу в системные таблицы. Скрипт инициализации можно указать в параметрах конфигурации импорта.

Третий этап: выполнение SQL-запроса импорта

Следующим шагом после отработки скрипта инициализации выполняется SQL-запрос, результат которого хранится в оперативной памяти. Запрос может формироваться в процессе импорта автоматически в виде:

SELECT * FROM [основная таблица импорта]

с учетом заданных в параметрах конфигурации импорта полей сортировки:

ORDER BY IMP_FIELD1, IMP_FIELD2,...IMP_FIELDn

либо сформирован отдельно в модуле статистики МИС МЕДИАЛОГ и указан в параметрах конфигурации импорта.

Четвертый этап: обработка записей

Далее cистема последовательно обрабатывает записи, возвращенные SQL-запросом импорта, при этом проводятся все необходимые проверки и обновления данных, заданные в коде программы (проверка правильности указанных типов данных, удаление "ненужных" значений, поиск соответствия данных в базе и т.п.).

После обработки каждая импортируемая запись получает статус, который указывается в поле _STATUS таблицы импорта. Основные значения статуса: 0 (не обработана), 1 (пропущена), 100 (успешно обработана). Другие значения фиксируют ошибки обработки импортируемой записи, описание которых представлено в поле _ERR_TEXT основной таблицы импорта.

Во время обработки записи в таблицу импорта прописываются также найденные значения системных полей:

_PATIENTS_ID        – ID пациента, который был найден или создан в базе данных МЕДИАЛОГ;

_FM_CLINK_ID        – ID медицинской программы, которая была найдена или создана в базе данных МЕДИАЛОГ;

_FM_CLINK_PATIENTS_ID        – ID прикрепления пациента, которое было найдено или создано в базе данных МЕДИАЛОГ.

При обработке каждой импортируемой записи о прикреплении пациента система ищет в базе данных МЕДИАЛОГ пациентов, совпадающих по фамилии, имени, отчеству и дате (году) рождения, а также сравнивает данные о прикреплениях пациента по номеру полиса и дополнительным полям для поиска прикрепления, указанным в конфигурации импорта. Если такие пациенты или прикрепления найдены, то система устанавливает импортируемой записи соответствующий статус и определяет наличие потенциальных "двойников".

Данные из успешно обработанных записей попадают в системные таблицы базы данных МЕДИАЛОГ, при этом учитывается параметр Дополнительные поля в настройках конфигурации импорта:

PATIENTS        – Пациенты

FM_CONTR        – Договоры

FM_CLINK        – Медицинские программы

FM_CLINK_ORG        – Филиалы, где действует медицинская программа

FM_CLINK_PROG        – Наборы услуг, оказываемых по медицинской программе

FM_CLINK_PATIENTS        – Прикрепления пациентов

Пятый этап: дополнительная обработка SQL-скриптами

Для каждой успешно обработанной импортируемой записи непосредственно после добавления данных в системные таблицы могут запускаться на выполнение SQL-скрипт обработки прикрепления (после создания или обновления прикрепления) или SQL-скрипт обработки медицинской программы (после создания или обновления медпрограммы).

Шестой этап: обработка конфликтных записей

После первого круга обработки импортируемых данных запускается второй круг обработки, когда пользователю предлагается поочередно просмотреть все конфликтные записи  и вручную указать, какое действие необходимо выполнить с каждой записью. При этом после добавления информации в базу данных МЕДИАЛОГ запись также подвергается дополнительной обработке SQL-скриптами (см. пятый этап).

Журнал импорта прикреплений

Все операции с импортом прикреплений фиксируются в системной таблице IMPORT_LOG. При каждой операции загрузки входящих файлов в таблицы импорта, в Журнале создается запись с кодом импорта. В этой записи фиксируются следующие данные:

·дата и время загрузки данных в таблицы импорта;

·пользователь, выполнивший загрузку данных,

·дата и время выполнения последнего импорта данных;

·пользователь, который последним выполнял импорт данных;

·количество записей в основной таблице импорта;

·количество ошибок;

·количество обработанных записей;

·количество пропущенных записей.

Просмотр Журнала импорта прикреплений осуществляется из окна Статистика импорта (рис. 14.4.6) по ссылкам Последняя загрузка файлов в базу данных и Последний запуск импорта данных. Для просмотра данных зарегистрирован системный статистический запрос sys_import_log.ini.

Блокировка импорта прикреплений

В МИС МЕДИАЛОГ установлен запрет на запуск импорта прикреплений в процессе выполнения импорта этой же конфигурации (т.е. запуск одной и той же конфигурации импорта несколькими пользователями). Блокировка импорта прикреплений может происходить в тот момент, когда пользователь запускает процесс импорта, а именно:

·нажимает кнопку Импортировать или Загрузить данные в окне импорта прикреплений (рис. 14.4.1),

·нажимает кнопку Создать таблицы импорта в окне настройки конфигурации,

·нажимает кнопку Начать в окне статистики импорта (рис. 14.4.6).

При попытке повторного запуска импорта по данной конфигурации пользователю выдается сообщение: "Этот импорт уже выполняется другим пользователем". В окне Предупреждение (рис. 14.4.5) доступны следующие действия:

·Послать сообщение – отправить сообщение пользователю, выполняющему импорт;

·Закрыть – закрыть сообщение.

Алгоритмы обработки данных о пациенте

·Если в таблице импорта у пациента заданы и год, и дата рождения, но год в дате рождения не соответствует заданному году, то информация об этом пациенте записывается в Журнал импорта и запись пропускается со статусом 1.

·Если в таблице импорта у пациента не задана фамилия или не заданы ни год, ни дата рождения, то информация об этом пациенте записывается в Журнал импорта и запись пропускается со статусом 1.

·Если в базе данных МЕДИАЛОГ по критерию [ФИО+Дата рождения] найден только один пациент, то при импорте информация об этом пациенте обновится.

·Если в базе данных МЕДИАЛОГ по критерию [ФИО+Год рождения] найден только один пациент и в файле импорта для пациента задан год рождения, то информация о данном пациенте будет обновлена без дополнительных вопросов.

·Если скриптом обработки задано значение поля _PATIENTS_ID, поиск потенциальных дубликатов пациента не производится, а обновляются данные существующего пациента.

·Если в базе данных МЕДИАЛОГ по критерию [ФИО+Год рождения] найден только один пациент, но в файле импорта для пациента задана дата рождения, то для импортируемой записи будет проставлен статус ошибки "Потенциальный дубликат пациента".

·Если в базе данных МЕДИАЛОГ найдено несколько пациентов с совпадающими [ФИО+Год рождения], то для импортируемой записи будет проставлен статус ошибки "Потенциальный дубликат пациента".

Алгоритмы обработки данных о медицинской программе и договоре

·Если импортируемый код медицинской программы не найден в базе данных МЕДИАЛОГ, то создается новая медпрограмма.

·Если импортируемый код договора не найден в базе данных МЕДИАЛОГ, то создается новый договор.

·Если импортируемый ID для валюты договора не найден в базе данных МЕДИАЛОГ, то записи о договоре и всех прикреплениях пациентов, не будут импортироваться, а в окне статистики импорта сгенерируется сообщение об ошибке.

·Если импортируемый ID для вида курса валюты договора не найден в базе данных МЕДИАЛОГ, то записи о договоре и всех прикреплениях пациентов, не будут импортироваться, а в окне статистики импорта сгенерируется сообщение об ошибке.

·Если заданный в файле импорта код организации-плательщика по договору не найден в базе данных МЕДИАЛОГ, то будет создана новая организация с указанным кодом.

·Если какой-либо из импортируемых кодов наборов услуг, оказываемых по медицинской программе, не найден в базе данных МЕДИАЛОГ, то будет создан новый набор услуг с указанным кодом.

·Если какой-либо из кодов филиалов, в которых действует медицинская программа, не найден в базе данных МЕДИАЛОГ, то будет создан новый набор услуг с указанным кодом.

Алгоритмы обработки данных о прикреплении пациента

·Если в окне импорта установлен флажок Не использовать номер полиса для поиска пациента, поиск потенциальных дубликатов импортируемого пациента по его номеру полиса (POLICE) не производится.

·Если в базе данных МЕДИАЛОГ найдено несколько пациентов с одним номером полиса и кодом медицинской программы, то в окне конфликта будут отображены пациенты с тем же номером полиса или совпадающими ФИО и годом рождения. При осуществлении действия Выбрать, если фамилия, имя, отчество или дата рождения импортируемого пациента отличаются от пациента в базе, то информация о пациенте в базе будет обновлена.

·Если у пациента в базе данных МЕДИАЛОГ и импортируемого пациента совпадают ФИО, год рождения и номер полиса, то в окне конфликта будут перечислены пациенты: а) с таким же номером полиса, б) с такими же ФИО и годом рождения, в) с такими же ФИО, годом рождения и полисом.

·Если у пациента в базе и импортируемого совпадают ФИО, дата рождения и номер полиса, обновляется информация для пациента в базе; однако если таких пациентов в базе найдено несколько, выдается окно конфликта.

·Если для пациента в рамках заданной медицинской программы уже имеется прикрепление с заданным полисом, и дата начала, дата окончания или дата отмены прикрепления различаются, то при выключенной опции Не обновлять прикрепления (всегда создавать новые) эти даты в базе обновляются на заданные. Если же в рамках заданной медицинской программы прикрепление с таким номером полиса отсутствует либо опция включена, то создается новое прикрепление с заданными датами.

·Если импортируется прикрепление с пустым номером полиса, а у пациента в базе уже есть прикрепление с теми же характеристиками, но с указанным номером полиса, то будет создано новое прикрепление.