| | | | |
Код алго- ритма | Наименование | Текст алгоритма (T-SQL) | Описание | Код ошибки |
00 | Синтаксический контроль | |
00.01 | Номер рецепта не корректен
| SELECT * FROM L WHERE ISNUMERIC (REVERSE(SUBSTRING(REVERSE(LTRIM(RTRIM(SN_LR))), 1, CHARINDEX(' ',REVERSE(LTRIM(RTRIM(SN_LR))), 1) -1))) = 0 | Проверка корректности формата номера рецепта (номер рецепта должен быть положительным целым числом). Номер рецепта получаем из строки SN_LR , учитывая, что между серией и номером стоит пробел.
Входные данные: реестр рецептов (файл записей типа "Л")
Выходные данные: перечень рецептов реестра, содержащих ошибку | P06 |
00.02 | Серия рецепта не корректна
| SELECT * FROM L WHERE REVERSE(SUBSTRING(REVERSE(LTRIM(RTRIM(SN_LR))), CHARINDEX(' ', REVERSE(LTRIM(RTRIM(SN_LR))), 1) + 1, LEN(LTRIM(RTRIM(SN_LR))))) NOT IN ("50","5006") | Проверка серии рецепта на отличие от допустимых значений, принятых в регионе.
Замечание: "50" и "5006" (пример допустимых серий на территории региона)
Входные данные: реестр рецептов (файл записей типа "Л")
Выходные данные: перечень рецептов реестра, содержащих ошибку | P07 |
00.03 | Код диагноза отсутствует в справочнике МКБ-10
| SELECT * FROM L WHERE DS NOT IN (SELECT DS FROM MKB) | Проверка диагноза, поставленного в рецепте, на наличие его в справочнике МКБ-10. Поиск диагноза осуществляется по полю DS.
Входные данные: реестр рецептов (файл записей типа "Л"), файл типа МКБ
Выходные данные: перечень рецептов реестра, содержащих ошибку | P08 |
00.04 | Код ЛПУ отсутствует в справочнике ЛПУ, работающих в системе ДЛО
| SELECT L.* FROM L LEFT OUTER JOIN LPU ON LPU.C_OGRN = L.C_OGRN AND LPU.MCOD = L.MCOD AND L.DATE_VR BETWEEN LPU.DATE_B AND (CASE LPU.DATE_E WHEN '' THEN '01/01/2222' ELSE ISNULL(LPU.DATE_E, '01/01/2222') END ) WHERE LPU.C_OGRN IS NULL | Проверка рецепта на соответствие хотя бы одному из критериев: - лечебно-профилактическое учреждение с таким C_OGRN и MCOD не найдено в справочнике ЛПУ; - на дату выписки рецепта (DATE_VR) ЛПУ не имело права выписки льготных рецептов.
L.DATE_VR > LPU.DATE_E (Дата исключения ЛПУ из справочника, при этом учитывается, что эта дата может быть пустой) или
L.DATE_VR < LPU.DATE_B (Дата включения ЛПУ в справочник)
Входные данные: реестр рецептов (файл записей типа "Л"), файл типа "ЛПУ"
Выходные данные: перечень рецептов реестра, содержащих ошибку | P04 |
01 | Семантический контроль | |
01.01 | Просроченный рецепт | SELECT L.* FROM L WHERE DATE_OBR > DATEADD(DAY,30,DATE_VR) | Проверка рецепта на соответствие критерию: - дата выписки рецепта отличается от даты обращения больше чем на 30 дней.
L.DATE_OBR > L.DATE _VR +30 дней
Входные данные: реестр рецептов (файл записей типа "Л")
Выходные данные: перечень рецептов реестра, содержащих ошибку | P10 |
01.02 | Проверка дублей внутри реестра
| SELECT L.* FROM L INNER JOIN ( SELECT SN_LR FROM L GROUP BY SN_LR HAVING COUNT(*) > 1) T ON T.SN_LR = L.SN_LR AND T.D_TYPE = `000'
| Проверка рецепта на соответствие обоим критериям: - рецепт имеет поле D_TYPE=000; - в текущем реестре существует более одного рецепта, имеющего такую же серию и номер (SN_LR).
Входные данные: реестр рецептов (файл записей типа "Л")
Выходные данные: перечень рецептов реестра, содержащих ошибку | Л04 |
01.03 | МНН отпущенного ЛС не соответствует указанному в реестре выписанных рецептов
| SELECT L.* FROM L INNER OUTER PLS ON PLS.NOMK_LS = L.NOMK_LS INNER JOIN R ON R.SN_LR = L.SN_LR AND R.DATE_VR = L.DATE_VR AND R.C_OGRN = L.C_OGRN AND R.MCOD = L.MCOD AND R.С_MNN <> PLS.С_MNN | Проверка рецепта на соответствие критерию:
- рецепт найден в списке выписанных рецептов, но ЛС в рецепте, предъявленном на экспертизу, не соответствует МНН выписанного рецепта.
Поиск рецепта осуществляется по следующим полям: - Серия и номер рецепта SN_LR; - Дата выписки DATE_VR; - ЛПУ с такими C_OGRN и MCOD.
Входные данные: реестр рецептов (файл записей типа "Л"), реестр выписанных рецептов, файл типа "ПЛС"
Выходные данные: перечень рецептов реестра, содержащих ошибку | Р05 |
01.04 | Код ЛПУ в обслуженном рецепте не соответствует коду, указанному в реестре выписанных рецептов
| SELECT L.* FROM L INNER JOIN R ON R.SN_LR = L.SN_LR AND (R.C_OGRN <> L.C_OGRN OR R.MCOD <> L.MCOD) | Проверка рецепта на соответствие критерию: - рецепт найден в списке выписанных рецептов, полученных от ЛПУ, но в выписанном рецепте и в рецепте, предъявленном на экспертизу, указаны разные ЛПУ.
Поиск рецепта осуществляется по полю: - Серия и номер рецепта SN_LR.
Входные данные: реестр рецептов (файл записей типа "Л"), реестр выписанных рецептов
Выходные данные: перечень рецептов реестра, содержащих ошибку | Р11 |
01.05 | СНИЛС пациента в обслуженном рецепте не соответствует СНИЛС, указанному в реестре выписанных рецептов | SELECT L.* FROM L INNER JOIN R ON R.SN_LR = L.SN_LR AND R.DATE_VR = L.DATE_VR AND R.C_OGRN = L.C_OGRN AND R.MCOD = L.MCOD AND R.SS <> L.SS | Проверка рецепта на соответствие критерию: - рецепт найден в списке выписанных рецептов, полученных от ЛПУ, но в выписанном рецепте и в рецепте, предъявленном на экспертизу, указаны разные пациенты.
Поиск рецепта осуществляется по следующим полям: - Серия и номер рецепта SN_LR; - ЛПУ (C_OGRN, MCOD).
Входные данные: реестр рецептов (файл записей типа "Л"), реестр выписанных рецептов
Выходные данные: перечень рецептов реестра, содержащих ошибку | П05 |
01.06 | Дата выписки в обслуженном рецепте не соответствует дате, указанной в реестре выписанных рецептов | SELECT L.* FROM L INNER JOIN R ON R.SN_LR = L.SN_LR AND R.C_OGRN = L.C_OGRN AND R.MCOD = L.MCOD AND R. DATE_VR <> L.DATE_VR
| Проверка рецепта на соответствие критерию: - рецепт найден в списке выписанных рецептов, полученных от ЛПУ, но в выписанном рецепте и в рецепте, предъявленном на экспертизу, указаны разные даты выписки.
Поиск рецепта осуществляется по следующим полям: - Серия и номер рецепта SN_LR; - ЛПУ (C_OGRN, MCOD).
Входные данные: реестр рецептов (файл записей типа "Л"), реестр выписанных рецептов
Выходные данные: перечень рецептов реестра, содержащих ошибку | Р12 |
01.07 | Рецепт не найден в реестре выписанных рецептов
| SELECT L.* FROM L LEFT OUTER JOIN R ON R.SN_LR = L.SN_LR WHERE R.SN_LR IS NULL
| Проверка рецепта на соответствие критерию: - рецепт не найден в списке выписанных рецептов, полученных от ЛПУ.
Поиск рецепта осуществляется по полю: - Серия и номер рецепта SN_LR.
Входные данные: реестр рецептов (файл записей типа "Л"), реестр выписанных рецептов
Выходные данные: перечень рецептов реестра, содержащих ошибку | P09 |
02 | Строгий контроль | |
02.01 | На дату выписки рецепта врач был исключен из регистра врачей
| SELECT L.* FROM L LEFT OUTER JOIN DOCTOR ON DOCTOR.PCOD = L.PCOD AND L.DATE_VR < (CASE DOCTOR.DATE_E WHEN '' THEN '01/01/2222' ELSE ISNULL(DOCTOR.DATE_E, '01/01/2222') END ) WHERE DOCTOR.PCOD IS NULL
| Проверка рецепта на соответствие хотя бы одному из критериев: - врач, выписавший рецепт, не найден в справочнике врачей и фельдшеров, имеющих право на выписку рецептов.
Поиск осуществляется по полю: - PCOD доктора.
- врач был исключен из регистра врачей до даты выписки рецепта L.DATE_VR > Doctor.DATE_E (дата исключения из регистра врачей, имеющих право на выписку льготных категорий граждан, учитывается, что эта дата может быть пустой).
Входные данные: реестр рецептов (файл записей типа "Л"), файл типа "СВФ"
Выходные данные: перечень рецептов реестра, содержащих ошибку | Р13 |
02.02 | Рецепт уже оплачен
| SELECT L.* FROM L INNER JOIN PAYL ON PAYL.SN_LR = L.SN_LR AND PAYL.C_OGRN = L.C_OGRN AND PAYL.PCOD = L.PCOD AND PAYL.SS = L.SS AND PAYL.DATE_VR <> L.DATE_VR
| Проверка рецептов реестра на соответствие критерию: - присутствует ли рецепт среди оплаченных ранее.
Поиск осуществляется по совпадению (всех) следующих полей: - SN_LR; - C_OGRN; - PCOD; - SS; - DATE_VR.
Входные данные: реестр рецептов (файл записей типа "Л"), реестр оплаченных рецептов
Выходные данные: перечень рецептов реестра, содержащих ошибку | Л03 |
02.03 | Отпущенное ЛС не входит в перечень ЛС на дату отпуска
| SELECT L.* FROM L LEFT OUTER JOIN PLS ON PLS.NOMK_LS = L.NOMK_LS AND L.DATE_OTP BETWEEN PLS.DATE_B AND (CASE PLS.DATE_E WHEN '' THEN '01/01/2222' ELSE ISNULL(PLS.DATE_E, '01/01/2222') END ) WHERE PLS. NOMK_LS IS NULL
| Проверка рецепта на соответствие хотя бы одному из критериев: - лекарственное средство с NOMK_LS, отпущенным по рецепту, не найдено в справочнике лекарственных средств; - ЛС не действует (не действовало) на дату отпуска рецепта.
L.DATE_OTP < PLS.DATE_B (Дата включения в справочник)
или
L.DATE_OTP > PLS.DATE_E (Дата исключения из справочника, учитывается, что эта дата может быть пустой)
Входные данные: реестр рецептов (файл записей типа "Л"), файл типа "ПЛС"
Выходные данные: перечень рецептов реестра, содержащих ошибку | Л05 |
02.04 | В рецепте указан не корректный код позиции перечня
| SELECT L.* FROM L LEFT OUTER JOIN CLS ON CLS.C_PFS = L.C_PFS AND L.DATE_OTP BETWEEN CLS.DATE_BP AND (CASE CLS.DATE_EP WHEN '' THEN '01/01/2222' ELSE ISNULL(CLS.DATE_EP, '01/01/2222') END ) WHERE CLS.C_PFS IS NULL
| Проверка рецепта на соответствие хотя бы одному из критериев: - в справочнике зарегистрированных цен не найдена цена с кодом C_PFS, указанным в рецепте; - дата действия цены не соответствует дате отпуска рецепта.
L.DATE_OTP > CLS.DATE_EP (Дата окончания действия цены, учитывается, что эта дата может быть пустой) или
L.DATE_OTP < CLS.DATE_BP (Дата начала действия цены)
Входные данные: реестр рецептов (файл записей типа "Л"), файл типа "ЦЛС"
Выходные данные: перечень рецептов реестра, содержащих ошибку | Л06 |
02.05 | Пациент не имеет право на ГСП
| SELECT L.* FROM L LEFT OUTER JOIN FP ON FP.SS = L.SS AND FP.S_EDV = 1 AND L.DATE_VR < (CASE FP.DATE_RSE WHEN '' THEN '01/01/2222' ELSE ISNULL(FP.DATE_RSE, '01/01/2222') END ) WHERE FP.SS IS NULL
| Проверка рецепта на соответствие хотя бы одному из следующих критериев: - человек с таким СНИЛС-ом (SS) не найден в реестре лиц, имеющих право на получение НСУ; - человек, получивший рецепт, отказался от получения НСУ (S_EDV=0); - человек, получивший рецепт, исключен из регистра лиц, имеющих право на получение НСУ раньше, чем был выписан рецепт.
L.DATE_VR > P.DATE_RSE (Дата исключения из регионального сегмента регистра, учитывается, что эта дата может быть пустой)
Входные данные: реестр рецептов (файл записей типа "Л"), региональный сегмент регистра лиц, имеющих право на получение государственной социальной помощи в виде дополнительного набора социальных услуг рецептов (файл записей типа "ФП")
Выходные данные: перечень рецептов реестра, содержащих ошибку | П01 |
02.06 | У пациента нет льготы на дату выписки рецепта
| SELECT L.* FROM L LEFT OUTER JOIN FL ON FL.SS = L.SS AND L.DATE_VR BETWEEN FL.DATE_BL AND (CASE FP.DATE_ EL WHEN '' THEN '01/01/2222' ELSE ISNULL(FP.DATE_ EL, '01/01/2222') END ) WHERE FL.SS IS NULL
| Проверка рецепта на соответствие критерию: - на дату выписки рецепта льготник не имел ни одной действующей льготы.
L.DATE_VR < FL.DATE_BL ( Дата начала действия)
или L.DATE_VR > FL.DATE_EL (Дата окончания действия, учитывается, что эта дата может быть пустой)
Входные данные: реестр рецептов (файл записей типа "Л"), файл типа "ФЛ" - данные о документах
Выходные данные: перечень рецептов реестра, содержащих ошибку | П03 |
02.07 | Превышена цена отпущенного ЛС
| SELECT L.* FROM L LEFT OUTER JOIN PCLS ON L.C_PFS = PCLS.C_PFS WHERE ((PCLS.MSG_TEXT LIKE '%ЦЕНА УКАЗАНА ЗА%') AND (L.SL_ALL - ROUND(ROUND(PCLS.PR_REG_LIM * L.DOZ_LS, 2) * L.KO_ALL, 2) >=0.01 )) OR ((PCLS.MSG_TEXT NOT LIKE '%ЦЕНА УКАЗАНА ЗА%') AND (L.SL_ALL - ROUND(PCLS.PR_REG_LIM * L.KO_ALL, 2)) >0.01)) OR PCLS.PR_REG_LIM IS NULL
| Проверка рецепта на соответствие хотя бы одному из следующих критериев: - в справочнике зарегистрированных цен не найдена цена с кодом C_PFS, указанным в рецепте; - превышение предельной цены отпуска на 0,01 руб.
Более подробно алгоритм расчета суммы превышения приведен в описании алгоритма Расчет цены превышения (код 02.08).
Входные данные: реестр рецептов (файл записей типа "Л"), файл типа "ПЦЛС"
Выходные данные: перечень рецептов реестра, содержащих ошибку | Л02 |
02.08 | Расчет цены превышения | SELECT L.* , CASE WHEN PCLS.PR_REG_LIM IS NULL THEN L.SL_ALL WHEN (PCLS.MSG_TEXT LIKE '%ЦЕНА УКАЗАНА ЗА%') AND (L.SL_ALL > ROUND(ROUND(PCLS.PR_REG_LIM * L.DOZ_LS, 2) * L.KO_ALL, 2)) THEN L.SL_ALL - ROUND(ROUND(PCLS.PR_REG_LIM * L.DOZ_LS, 2) * L.KO_ALL, 2) WHEN (PCLS.MSG_TEXT NOT LIKE '%ЦЕНА УКАЗАНА ЗА%') AND (L.SL_ALL > ROUND(PCLS.PR_REG_LIM * L.KO_ALL, 2)) THEN L.SL_ALL - ROUND(PCLS.PR_REG_LIM*L.KO_ALL, 2) ELSE 0 END AS [СУММАПРЕВЫШЕНИЯ] FROM L LEFT OUTER JOIN PCLS ON L.C_PFS = PCLS.C_PFS
| Расчет суммы отказа для рецептов с превышением предельной цены.
Для заданного в рецепте C_PFS берется цена из справочника зарегистрированных предельных цен (PR_REG_LIM) для данного региона.
Если PR_REG_LIM не найдена, то СуммаПревышения = SL_ALL
в противном случае:
ПредельнаяЦена = PR_REG_LIM
Если для цены в справочнике цен указано примечание - `Цена указана за 1 МЕ' или
`Цена указана за 1 грамм', то полученная предельная Цена вычисляется так:
ПредельнаяЦена = ОкруглитьДоКопеек Значение (PR_REG_LIM * DOZ_ME (УказаннаяВРецептеДозировка))
Тогда
Если SL_ALL > ОкруглитьДоКопеек (ПредельнаяЦена*KO_ALL)
Считаем
СуммаПревышения = SL_ALL- ОкруглитьДоКопеек (ПредельнаяЦена*КолВо)
В противном случае
СуммаПревышения=0
Входные данные: реестр рецептов (файл записей типа "Л"), файл типа "ПЦЛС"
Выходные данные: реестр рецептов с дополнительной колонкой "СуммаПревышения" и просчитанными для каждого рецепта значениями. | |