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

  • СНИЛС (необязательный)
  • Фамилия
  • Имя
  • Отчество
  • Дата рождения
  • Код ДУЛ
  • Наименование ДУЛ
  • Серия ДУЛ
  • Номер ДУЛ
  • Дата выдачи ДУЛ

1. Поиск карт пациента

Для поиска карт пациента все данные нормализуются, чтобы искать через *_Find поля.

Поиск карт пациента происходит в БД МИП по входным данным запроса:

    1) Если есть СНИЛС, то ищем по набору данных ФИО + ДР + СНИЛС:

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)

Далее полученными данными заполняется модель, и отдаётся в виде ответа метода Получение информации по выплатам по данным ребенка .

  • Нет меток