...
- СНИЛС (необязательный)
- Фамилия
- Имя
- Отчество
- Дата рождения
- Код ДУЛ
- Наименование ДУЛ
- Серия ДУЛ
- Номер ДУЛ
- Дата выдачи ДУЛ
1. Поиск карт пациента
Для поиска карт пациента все данные нормализуются, чтобы искать через *_Find поля.
Поиск карт пациента происходит в БД МИП по входным данным запроса:
...
Блок кода | ||
---|---|---|
| ||
DECLARE @@ss varchar(11) = @0
DECLARE @@fio varchar(200) = @1
DECLARE @@birthday datetime = @2
SELECT DISTINCT
j.SourceGuid
FROM oms_mn_Ident id WITH(NOLOCK)
JOIN oms_mn_Journal j WITH(NOLOCK) ON id.rf_mn_personid = j.rf_mn_personid
JOIN oms_mn_Person p WITH(NOLOCK) ON id.rf_mn_PersonID = p.mn_PersonID
WHERE 1=1
AND id.SS_Find = @@ss
AND p.FIO_Find = @@fio
AND p.BithDayDate = @@birthday |
2) Если нет СНИЛС, либо не нашли по такому набору параметров, то ищем по набору ФИО + ДР + ДУЛ:
Блок кода | ||
---|---|---|
| ||
DECLARE @@dul varchar(20) = @0 DECLARE @@fio varchar(200) = @1 DECLARE @@birthday datetime = @2 SELECT DISTINCT j.SourceGuid FROM oms_mn_DocIdent di WITH(NOLOCK) JOIN oms_mn_Journal j WITH(NOLOCK) ON di.rf_mn_PersonID = j.rf_mn_PersonID JOIN Oms_TypeDoc td WITH(NOLOCK) ON di.rf_TypeDocID = td.TYPEDOCID JOIN oms_mn_Person p WITH(NOLOCK) ON di.rf_mn_PersonID = p.mn_PersonID WHERE 1=1 AND di.SNDOC_FIND = @@dul AND p.FIO_Find = @@fio AND p.BithDayDate = @@birthday |
3) Если не нашли по набору параметров из п. 2, пытаемся найти по ФИО + ДР и пустыми серией и номером документа:
Блок кода | ||
---|---|---|
| ||
DECLARE @@fio varchar(200) = @0 DECLARE @@birthday datetime = @1 SELECT DISTINCT j.SourceGuid FROM oms_mn_Person p WITH(NOLOCK) JOIN oms_mn_Journal j WITH(NOLOCK) on j.rf_mn_PersonID = p.mn_PersonID WHERE 1 = 1 AND p.FIO_Find = @@fio AND p.BithDayDate = @@birthday AND DocIdent_Series = '' AND DocIdent_Number = '' |
4) Если по набору данных из п. 3 не было найдено информации о пациенте, сервис возвращает ответ со статусом 404 и сообщением: "По указанным данным не найдена информация о беременной" или "По указанным данным не найдена информация о ребенке" в зависимости от запроса.
2.1) Поиск подтверждения необходимости выплат для беременной
Для беременной поиск заключается в поиске карты беременной (МКБ), в которой установлена отметка о необходимости выплаты (поля rf_atc_milkFoodPaymentId и FoodPaymentDate). Поиск выполняется в БД ЦОД ИЭМК по идентификаторам карт, которые мы нашли ранее:
Блок кода | ||
---|---|---|
| ||
select
fp.Code as FoodPaymentStatus,
mk.FoodPaymentDate,
mk.DateOpen,
mk.FirstGestationalAge,
DATEADD(DAY, 279 - (FirstGestationalAge*7), mk.DateOpen) as [PlannedBirthDate]
from hlt_mkp_Card mk WITH(NOLOCK)
JOIN hlt_atc_MilkFoodPayment fp WITH(NOLOCK) on mk.rf_atc_MilkFoodPaymentID = fp.atc_MilkFoodPaymentID
WHERE 1 = 1
AND mk.DateClose > GETDATE()
AND mk.rf_MKABGUID in (@0) |
Далее полученными данными заполняется модель, и отдаётся в виде ответа метода Получение информации по выплатам по данным беременной.
2.2) Поиск подтверждения необходимости выплат для ребёнка
Для ребёнка поиск заключается в поиске МКАБ, в которой установлена отметка о необходимости выплаты (поля rf_atc_milkFoodPaymentId, rf_atc_milkFoodTypeId, FoodPaymentDate)
Блок кода | ||
---|---|---|
| ||
SELECT TOP 1
mkab.DATE_BD as [Birthday],
mft.Code as [FoodTypeCode],
mft.Name as [FoodTypeName],
mfp.Code as [FoodPaymentCode],
mkab.FoodPaymentDate as [FoodPaymentDate]
FROM hlt_MKAB mkab WITH(NOLOCK)
JOIN hlt_atc_MilkFoodPayment mfp WITH(NOLOCK) on mkab.rf_atc_MilkFoodPaymentID = mfp.atc_MilkFoodPaymentID
JOIN hlt_atc_MilkFoodType mft WITH(NOLOCK) on mkab.rf_atc_MilkFoodTypeID = mft.atc_MilkFoodTypeID
WHERE 1=1
AND mkab.UGUID in (@0) |
Далее полученными данными заполняется модель, и отдаётся в виде ответа метода Получение информации по выплатам по данным ребенка .