Понятие конфигурации импорта и описание основных параметров импорта приведены в разделе Общие сведения об импорте данных модуля "Учет услуг".
Настроенные конфигурации импорта прикреплений хранятся на локальном компьютере, с которого будет запускаться процесс импорта, в рабочем каталоге МЕДИАЛОГ в файле ImportClinkPatients.xml.
Примечание. До версии 7.20 конфигурации импорта хранились в виде файла import.ini. При первом запуске импорта прикреплений пациентов в МИС МЕДИАЛОГ версии 7.20 и выше система конвертирует старые настройки импорта, хранящиеся в файле import.ini, и создаст новый файл конфигурации ImportClinkPatients.xml.
Системные поля таблицы импорта
При импорте прикреплений в основную таблицу импорта МИС МЕДИАЛОГ автоматически добавляет системные поля, необходимые для обработки данных при импорте:
_PATIENTS_ID int | – ID пациента, который был найден или создан в базе данных МЕДИАЛОГ; |
_FM_CLINK_ID int | – ID медицинской программы, которая была найдена или создана в базе данных МЕДИАЛОГ; |
_FM_CLINK_PATIENTS_ID int | – ID прикрепления пациента, которое было найдено или создано в базе данных МЕДИАЛОГ; |
_STATUS int | – статус обработки записи; |
_ERR_TEXT varchar (2000) | – текст ошибки обработки импортируемой записи. |
При формировании SQL-запроса импорта в него необходимо добавить соответствующие параметры.
Вкладка "Выбор пациента"
При обработке каждой импортируемой записи о прикреплении пациента система ищет в базе данных МЕДИАЛОГ прикрепления пациентов, совпадающих по фамилии, имени, отчеству, дате рождения и номеру полиса. Если такие пациенты найдены, то система определяет наличие потенциальных "двойников" и выдает пользователю окно Обработка конфликтных пациентов (рис. 14.4.7), в котором необходимо указать актуальные прикрепления пациента.
В окне Настройка импорта на вкладке Выбор пациента (рис. 14.4.2) можно задать условия поиска прикрепления и определения "двойников".
Рисунок 14.4.2. Поиск пациента
В строке Дополнительные поля для поиска прикрепления по кнопке ... следует указать поля системной таблицы Прикрепленные пациенты (FM_CLINK_PATIENTS), по которым будет идентифицироваться прикрепление пациента. Прикрепления сравниваются по номеру полиса (поле POLICE) и дополнительным полям. Если поля поиска не заданы, то прикрепление ищется только по номеру полиса (поле POLICE).
В процессе импорта не обновляются поля, выбранные в качестве полей поиска, в том числе поле POLICE (Номер полиса).
Использование дополнительных полей поиска актуально, когда номер полиса (значения поля POLICE) является уникальным для застрахованного человека в рамках договора или хотя бы в рамках одной медицинской программы. При выполнении импорта должна быть возможность аннуляции импортируемой записи с номером полиса, для которого в базе данных МЕДИАЛОГ уже существует одно или несколько прикреплений. Поэтому рекомендуется при поиске прикрепления учитывать дополнительно даты прикрепления (DATE_FROM, DATE_TO).
Тип поля поиска в таблице импорта обязательно должен соответствовать типу данных соответствующего поля в базе данных МЕДИАЛОГ. При использовании в качестве полей поиска полей DATE_FROM и DATE_TO, они должны иметь тип Дата. Если производится преобразование данных SQl-запросом импорта, то корректный тип данных следует задать для соответствующего поля запроса. Если в SQL-запросе импорта нет обработки, то соответствующий тип данных должен быть задан в ячейках файла импорта.
Также на вкладке Выбор пациента в поле Формат отображения доп. информации о пациенте следует указать, какие поля из таблицы импорта должны отображаться в окне обработки прикреплений-"двойников" и в каком виде. Дополнительная информация отображается в верхнем разделе окна обработки конфликтных пациентов (рис. 14.4.7). Обращение к полю таблицы импорта следует указывать в формате %Имя_поля%. Пример соответствующей настройки показан на рис. 14.4.2.
Скрипт обработки медицинской программы
На вкладке SQL (медпрограмма) (рис. 14.4.3) конфигурации импорта можно задать SQL-скрипт обновления медицинской программы страхования, позволяющий обрабатывать сложные структуры данных непосредственно внутри программы.
Рисунок 14.4.3. SQL (медпрограмма)
Примеры применения скрипта обновления медицинской программы:
·обработка рисков по медицинской программе;
·добавление или изменение наборов услуг, оказываемых по медицинской программе;
·добавление или изменение условий страхования по медицинской программе;
·выполнение дополнительного контроля.
Скрипт обновления медицинской программы выполняется импортом только в том случае, когда происходит обновление существующей или создание новой медицинской программы, сразу после добавления данных в системные таблицы. При этом в скрипт будет передан ID текущей записи из основной таблицы импорта, в поле _FM_CLINK_ID которой уже прописан ID обрабатываемой медицинской программы.
При написании скрипта используется синтаксис языка SQL. Для обращения к текущей записи таблицы импорта используется параметр :IMPORT_RECORD_ID. Использование оператора GO не поддерживается при выполнении скрипта обработки.
Пример скрипта обновления медицинской программы
/* Добавляем условия страхования для всех новых прикреплений. */
set NOCOUNT on
update FM_CLINK
set FM_INSCOND_ID = imp_pr.FM_INSCOND_ID
from FM_CLINK as fm_c
inner join IMP_INSURANSE as imp_i
on (imp_i._FM_CLINK_ID = fm_c.FM_CLINK_ID)
inner join IMP_PROGRAMS as imp_pr
on imp_pr.PROGRAM = imp_i.PROGRAM
where imp_i.IMP_INSURANSE_ID = :IMPORT_RECORD_ID and isnull(imp_pr.IS_EXIST, 0) = 0
/* Добавляем наборы услуг, оказываемых по медицинской программе. */
declare @CLINK_PROG_ID int, @PROG_ID int, @CLINK_ID int
declare CURSOR_CLINK_PROG cursor local FORWARD_ONLY for
select distinct fm_c.FM_CLINK_ID, imp_i_s.FM_PROG_ID
from FM_CLINK AS FM_C
inner_join IMP_INSURANSE as imp_i
on imp_i._FM_CLINK_ID = fm_c.FM_CLINK_ID
inner_join IMP_PROGRAMS as imp_pr
on imp_pr.PROGRAM = imp_i.PROGRAM
inner_join IMP_INSURANSE_SERVICES as imp_i_s
on imp_i_s.PROGRAM = imp_i.PROGRAM
where imp_i.IMP_INSURANSE_ID = :IMPORT_RECORD_ID and isnull(imp_pr.IS_EXIST, 0) = 0
open CURSOR_CLINK_PROG
fetch next from CURSOR_CLINK_PROG into @CLINK_ID, @PROG_ID
while @@FETCH_STATUS = 0
BEGIN
exec UP_GET_ID @KEYNAME = 'FM_CLINK_PROG', @SHIFT = 1, @ID = @CLINK_PROG_ID output
insert into FM_CLINK_PROG (FM_CLINK_PROG_ID, FM_CLINK_ID, FM_PROG_ID, CANCEL, CANCEL_AN)
values(@CLINK_PROG_ID, @CLINK_ID, @PROG_ID, 0, 0)
fetch next from CURSOR_CLINK_PROG into @CLINK_ID, @PROG_ID
END
close CURSOR_CLINK_PROG
deallocate CURSOR_CLINK_PROG