====== Инструкция по работе с базой данных ======
~~TOC:2-4 ~~
[[{}:remd|← Назад]]
==== Подключение к базе ====
1. Для подключения к базе данных (далее БД) необходимо открыть приложение DBeaver и в левом верхнем углу нажать на кнопку “Новое соединение”.
{{:remd:istr.remd_1.jpg?200|}}
2. Выбрать тип БД, к которой необходимо подключиться и нажать “Далее”.
{{:remd:istr.remd_2.jpg?200|}}
3. В окне настроек соединения, которое откроется следом, надо заполнить поля:
Хост - адрес сервера, на котором развернута БД;
Порт;
База данных – имя БД;
Пользователь – имя пользователя БД;
Пароль – пароль пользователя БД (поставить галочку «сохранять пароль локально» чтобы не вводить его при каждом подключении к БД).
{{:remd:istr.remd_3.jpg?200|}}
Когда все поля будут заполнены, появится возможность провести тест соединения. Рекомендуется этой возможностью воспользоваться и нажать на одноименную кнопку в левом нижнем углу окна.
Если тест соединения успешно пройден, то появится небольшое сообщение с временем отклика сервера БД и информацией о ее версии. Ознакомившись, это сообщение можно закрыть, и нажать “Готово”
В случае, если выходит сообщение об ошибке, необходимо проверить правильность заполнения полей и доступность сервера.
{{:remd:istr.remd_4.jpg?200|}}
Чтобы открыть редактор SQL запросов нужно перейти во вкладку “Редактор SQL” и выбрать пункт “Новый Редактор SQL”.
{{:remd:istr.remd_5.jpg?200|}}
----
==== Перезапросить статус документа во ФРЭМД, переотправить документ в ФРЭМД (отправка на повторную регистрацию) ====
Бывают случаи, когда по документу долго не приходит асинхронный ответ от ФРЭМД или не приходит вообще. В таком случае можно перезапросить статус документа в ФРЭМД.
Также перезапрос статуса документа необходим, когда в асинхронном ответе от ФРЭМД (ответ на запрос регистрации документа) вернулась ошибка с кодом 'NOT_UNIQUE_PROVIDED_ID' или 'CANT_REG_VERSION'
1. Необходимо найти нужный документ в БД. Для этого в ранее открытый редактор SQL вводим:
select * from update_registry_item where local_uid = ‘’
Если документ не найден таблица ниже будет пустой, как на скриншоте.
{{:remd:istr.remd_6.jpg?200|}}
В этом случае добавляем его с помощью следующего запроса:
INSERT INTO emds.update_registry_item
(local_uid, status, upload_dt)
select md.local_uid, '1', timezone('UTC':: text, now())
FROM emds.med_docs md
left join emds.update_registry_item u on md.local_uid=u.local_uid
where md.local_uid in ('')
Если в асинхронном ответе от ФРЭМД была ошибка 'NOT_UNIQUE_PROVIDED_ID', то запрос должен быть таким:
INSERT INTO emds.update_registry_item
(local_uid, status, upload_dt)
select md.local_uid, '1', timezone('UTC'::text, now())
FROM emds.med_docs md
left join emds.update_registry_item u on md.local_uid=u.local_uid
where emdr_metadata -> 'errors' -> 0 ->> 'code' = 'NOT_UNIQUE_PROVIDED_ID'
and create_dt>='<ограничение по дате публикации документа в РРЭМД>'
and u.local_uid is null
И для ошибки 'CANT_REG_VERSION' соответственно:
INSERT INTO emds.update_registry_item
(local_uid, status, upload_dt)
select md.local_uid, '1', timezone('UTC'::text, now())
FROM emds.med_docs md
left join emds.update_registry_item u on md.local_uid=u.local_uid
where emdr_metadata -> 'errors' -> 0 ->> 'code' = 'CANT_REG_VERSION'
and create_dt>='<ограничение по дате публикации документа в РРЭМД>'
and u.local_uid is null
2. Далее необходимо снова выполнить запрос
select * from update_registry_item where local_uid = ‘’
и в полученной выборке посмотреть значение колонки «status».
{{:remd:istr.remd_7.jpg?200|}}
1 - статус документа еще не запрошен в ФРЭМД
2 - статус документа успешно запрошен в ФРЭМД
3 - статус документа запрошен в ФРЭМД, но вернулась ошибка
Если получили status=2, то смотрим в таблице med_docs что вернулось (документ либо зарегистрирован в ФРЭМД, либо по нему ошибка)
Сделать это можно с помощью следующего запроса:
select * from med_docs md where local_uid = ‘’
Если получили status=3, то необходимо посмотреть колонку emds.update_registry_item.error_message
{{:remd:istr.remd_8.jpg?200|}}
Если emds.update_registry_item.error_message <> 'Ошибка получения регистрационных сведений: Документ не найден', то это системная ошибка ФРЭМД и нужно по новой перезапросить статус, для этого делаем апдейт status=1 для этой записи:
UPDATE emds.update_registry_item
set status = 1
where local_uid in ('')
Если в итоге получили error_message = 'Ошибка получения регистрационных сведений: Документ не найден', то это значит, что документ не зарегистрирован во ФРЭМД и нужно переотправить его повторно на регистрацию. Для этого выставляем is_done = false в таблице emdfr_send_task для соответствующей записи:
UPDATE emds.emdfr_send_task
set is_done = false
where local_uid in ('')
Данный запрос ставит документ в очередь на отправку. После его выполнения документ будет обработан в очереди и отправлен во ФРЭМД.
Документы следует переотправлять только по истечении определенного времени с момента первой отправки на регистрацию. Рекомендуемые сроки для направления на МСЭ 2-3 дня, для остальных видов документов 5-7 дней.