Недействующий

Об утверждении Методических рекомендаций по проведению территориальными фондами ОМС автоматизированной экспертизы реестров рецептов лекарственных средств, отпущенных гражданам, имеющим право на получение государственной социальной ... (утратил силу)

3. Алгоритмы экспертиз


Алгоритмы автоматизированной экспертизы реестров рецептов разбиты на следующие группы:

- Синтаксический контроль (наличие формальных ошибок в реестрах данных);

- Семантический контроль (наличие смысловых ошибок в значениях данных);

- Строгий контроль.

Формальное описание алгоритмов экспертизы приведено на языке Т-SQL (Transact Structured Query Language) в соответствии со стандартом ANSI SQL-92

Перечень и описание алгоритмов автоматизированной экспертизы реестров рецептов приведены в таблице 2.

Таблица 2


Код
алго-
ритма

Наименование

Текст алгоритма (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

Входные данные: реестр рецептов (файл записей типа "Л"), файл типа "ПЦЛС"

Выходные данные: реестр рецептов с дополнительной колонкой "СуммаПревышения" и просчитанными для каждого рецепта значениями.