Описание процесса синхронизации лаборатории
Две системы участника: МИС и ЛИС. ЛИС ведет на своей стороне справочник лабораторий и услуг которые они оказывают. Чтобы МИС имел доступ к этим данным, ЛИС реализует на своей стороне 2 метода: Получение справочника лабораторий и Получение справочника услуг. Оба метода описаны ниже на этой странице в разделе Методы на стороне ЛИС.
Алгоритм обновления данных лабораторий и услуг в МИС
МИС получает от ЛИС список лабораторий с уникальными идентификаторами и с привязкой к отделению методом Получение справочника лабораторий.
По каждой лаборатории из ответа происходит следующий процесс:
- МИС ищет отделение по ОИД в бд.
- Если отделения нет, то создается новая запись
- МИС убирает из ОИД последний сегмент и по полученному ОИД подразделения ищет его в справочнике.
- Если не найдено, то ошибка. Создания или обновления лаборатории не происходит
- Если найдено, то создаем отделение по данным из полей Department.OID, Department.Code и Department.Name. Такое отделение помечено в бд в поле Rem как "ЛИС".
- МИС убирает из ОИД последний сегмент и по полученному ОИД подразделения ищет его в справочнике.
- Если отделение есть, но оно находится в закрытом подразделении или подразделение относится к закрытой МО, то ошибка. Создания или обновления лаборатории не происходит.
- Если отделение есть и все валидации выше пройдены то переходим к шагу 2
- Если отделения нет, то создается новая запись
- МИС ищет лабораторию по Guid
- Если лаборатория не найдена, то создаем новую используя данные из полей Guid, Name и Department(указываем ссылку на отделение).
- Если лаборатория найдена, то производим ее обновление меняя имя и отделение на те что были переданы в ответе. Если лаборатория была закрыта, то мы также ее пере открываем.
- МИС выполняет запрос к методу Получение справочника услуг. Услуги очищаются от дублей по коду услуги
- МИС ищет среди них по кодам те услуги, которые не привязаны к лаборатории
- Если новых услуг на добавление не найдено, то заканчиваем обновление по лаборатории.
- Если новые услуги найдены, то по каждой такой услуге выполняем поиск в справочнике услуг по коду
- Если не найдено, то ошибка и выход.
- Если найдено, то создаем связь между услугой и лабораторией.
- МИС ищет среди существующих услуг лаборатории те, которых нет в ответе метода.
- Если такие услуги найдены, то связь между ними и лабораторией удаляется.
Важно
Чтобы избежать дублей лабораторий при одновременной работе нескольких служб синхронизаций, ЛПУ необходимо закрывать лаборатории в конкурирующей(старой) системе при переходе на новую.
Также следует передавать в ответе метода Получение справочника лабораторий только те лаборатории, которые ведутся в новой системе ЛИС и больше не ведутся в старой.
В случае одновременной синхронизации одной и той же лаборатории или данных отделений в двух разных ЛИС могут возникать конкурентные обновления и коллизии.
Методы на стороне ЛИС
Получение справочника лабораторий от ЛИС
МИС получает от ЛИС справочник лабораторий путём выполнения GET запроса в сервис ЛИС
Адрес запроса
GET: {{url}}/Laboratory |
где url - Хост + путь
Заголовки запроса
Заголовок | Значение |
---|---|
Authorization | ApiKey - ключ авторизации |
Ответ сервера
В случае успешного выполнения сервер вернет ответ в формате JSON со следующими данными:
№ п/п | Наименование | Тип данных | Описание | Обязательное поле | Комментарий |
---|---|---|---|---|---|
1 | Guid | Строка | Уникальный идентификатор лаборатории в системе | + | По этому идентификатору происходит поиск существующей лаборатории. |
2 | Name | Строка | Наименование лаборатории | + | В случае создания новой лаборатории ее название берем из этого поля. |
3 | Department | Объект | Отделение к которому относится лаборатория | + | |
3.1 | Department.OID | Строка | ОИД отделения по ФРМО | + | OID должен состоять из 14 сегментов, первый сегмент OID должен быть в диапазоне от 0 до 2.Следующие сегменты могут быть равны 0 или быть числами, начиная с 1 |
3.2 | Department.Code | Строка | Код отделения | + | |
3.3 | Department.Name | Строка | Наименование отделения | + |
Получение справочника услуг на стороне ЛИС
После получения справочника лабораторий МИС получает от ЛИС справочник услуг по лабораториям путем выполнения GET запроса в сервису ЛИС
Адрес запроса
GET: {{url}}/HealthCareService?laboratory={laboratory} |
где url - Хост + путь
Заголовки запроса
Заголовок | Значение |
---|---|
Authorization | ApiKey - ключ авторизации |
Параметры запроса
Параметр | Тип | Описание | По умолчанию | Обязательный | Комментарий |
---|---|---|---|---|---|
laboratory | query | Гуид лаборатории | + |
Ответ сервера
В случае успешного выполнения сервер вернет ответ в формате JSON со следующими данными:
Наименование | Тип данных | Описание | Обязательное поле | Комментарий |
---|---|---|---|---|
Code | Строка | Код услуги | + | согласно регионального справочника |
Description | Строка | Наименование услуги | + |
Получение отделений, лабораторий и оказываемых лабораториями услуг в МИС
Методы ниже находятся на стороне МИС. ЛИС не нужно реализовывать на своей стороне эти методы.
Они возвращают текущее состояние справочников на стороне МИС.
Данные методы можно использовать в ЛИС для получения справочников МИС и предупреждения создания дублей.
Получение отделений методом Получение списка отделений - API Docs - Confluence (softrust.ru)
Получение лаборатории методом Получение справочника лабораторий - API Docs - Confluence (softrust.ru)
Получение услуг методом Получение справочника медицинских услуг - API Docs - Confluence (softrust.ru)