V015.NameWithID AS 'Специальность',
case when SLUCH. usl_ok=1 then datediff(day, SLUCH. date_1,SLUCH. date_2) else datediff(day, SLUCH. date_1,SLUCH. date_2)+1- (select count(*) from WORK_DAY where h_date between SLUCH. date_1 and SLUCH. date_2 and podr_id=USL. LPU_1) end
as Койкодни,
ksg. idksg as КСГ,
ENTSL AS 'КСГ',
SLUCH. IDDOKTO AS 'врач закрывший случ',
SLUCH. IDDOKTP AS 'врач приемного отдел',
DoctorBd. FioWithId AS 'Врач из услуг',
SLUCH. NHISTORY AS 'номер истории' ,
MV As 'сумма',
SLUCH. nhistory, SLUCH. podr as Отдел,
case when SLUCH. usl_ok=1 then 'Круглосуточный' else 'Дневной' end as Тип
FROM SLUCH
join USL on USL. slid=SLUCH. id
join schet on SCHET. ID= SLUCH. SCHET_ID
INNER JOIN otdeldb ON otdeldb. id = SLUCH. PODR
INNER JOIN DoctorBd ON USL. CODE_MDLPU = DoctorBd. id
INNER JOIN PACIENT ON SLUCH. PID = PACIENT. id
LEFT JOIN V015 ON SLUCH. MSPID = V015.ID
INNER JOIN V006 ON SLUCH. USL_OK = V006.IDUMP
INNER JOIN F002 ON PACIENT. SMO = F002.smocod
left join [CalcKsgTarif] ksg on USL. IDKSG=ksg. id
where
SCHET. year=2016
and
SCHET. MONTH in (3)
and vopl=1
and
SLUCH. usl_ok in (1,2)
and
left(USL. CODE_USL,2)='TF'
order by SLUCH. podr
комментарии касательно названий полей в скриптах
vopl - вид оплаты, везде ОМС - 1, но иногда по ошибке стоит пустое
ConditionHelp - условия оказания помощи (3 - поликлиника, стационар)
MSPID Код Специальности
Doctor - код доктора
OsobSluch Региональный признак 11 - дети проф осмотр, 1 старая диспансеризация взрослых, 22 новая диспансеризация взрослых
Файл со скриптами
1) скрипты по исправлению Z00.0 в зависимости от того какой врач и сколько лет паиценту на более специфичные диагнозы
/* Меняет Z00.0 по возрастам в таблице Uslugi */
UPDATE Uslugi
SET Uslugi, Diagnoz = 'Z00.1'
/* Z00.1 | Z00.2 | Z00.3 */
WHERE
Uslugi. Diagnoz = 'Z00.0'
AND
ReestrMedOrgId = 'XX'
AND
PacientVisit. OsobSluch = '11'
AND
(datediff(year, PacientVisit. DR, Uslugi. DateStart) >= 0
/* 0 | 3 | 12 */
AND
datediff(year, PacientVisit. DR, Uslugi. DateStart) < 3)
/* 3 | 12 | 18 */
/* ============================================================== */
/* Меняет Z00.0 по возрастам в таблице PacientVisit */
UPDATE dbo. PacientVisit
SET PacientVisit. MKB = 'Z00.1'
/* Z00.1 | Z00.2 | Z00.3 */
WHERE
PacientVisit. ReestrMedOrgID = XX
AND
PacientVisit. MKB='Z00.0'
AND
(datediff(year, PacientVisit. DR, PacientVisit. HelpStart) >= 0
/* 0 | 3 | 12 */
AND
datediff(year, PacientVisit. DR, PacientVisit. HelpStart) < 3)
/* 3 | 12 | 18 */
Пояснения
datediff(year, PacientVisit. DR, Uslugi. DateStart) < 3 - как пример до трёх лет и >= 0 такая же вторая строчка чтоб не было отрицательного возраста по ошибке, всего три интервала с 0 до 3 , с 3 до 12 и с 12 до 18, каждая первая цифра в интервале включительно в интервал, а вторая нетю Ставить три разных Z зависимости от интервала Z00.1 или Z00.2 или Z00.3
Uslugi. DateStart - дата начала услуги
PacientVisit. DR - дата рождения
datediff - считает разницу между датами чтоб определить возраст
year - требование считать в целых годах разницу
/* Меняет Z00.0 по специалистам в таблице Uslugi */
UPDATE Uslugi
SET Uslugi, Diagnoz = 'Z01.0'
/* Z01.0 | Z01.1 | Z01.2 | Z01.4 */
WHERE
Uslugi. Diagnoz = 'Z00.0'
AND
ReestrMedOrgId = 'XX'
AND
Uslugi. Profil = '65'
/* 65 | 64 | 86 | 2 */
/* ============================================================== */
/* Меняет Z00.0 по специалистам в таблице PacientVisit */
UPDATE dbo. PacientVisit
SET PacientVisit. MKB = 'Z01.0'
/* Z01.0 | Z01.1 | Z01.2 | Z01.4 */
WHERE
PacientVisit. ReestrMedOrgID = XX
AND
PacientVisit. MKB='Z00.0'
AND
PacientVisit. Profil = '65'
/* 65 | 162 | 89 | 136 */
2) прошедшие диспансеризации
SELECT DISTINCT PacientVisit. FAM, PacientVisit. IM, PacientVisit. OT, PacientVisit. DR, PacientVisit. W, datediff(year, PacientVisit. DR,'31.12.2015')
FROM PacientVisit
INNER JOIN ReestrMedOrgDb ON PacientVisit. ReestrMedOrgID = ReestrMedOrgDb. ID
WHERE
((OsobSluch = 1) OR (OsobSluch = 22)) AND (PacientVisit. HelpEnd >= '01.01.2015' AND PacientVisit. HelpEnd <= '31.12.2015') AND ReestrMedOrgDb. NameWithId LIKE 'Реестр%' AND datediff(year, PacientVisit. DR,'31.12.2015') IN (SELECT DISTINCT DISP_SPR. VOZR FROM DISP_SPR)
ORDER BY PacientVisit. FAM, PacientVisit. IM, PacientVisit. OT, PacientVisit. DR
3) Диспансеризация по группам
SELECT COUNT (DISTINCT PacientVisit. Polis)
FROM PacientVisit
INNER JOIN ReestrMedOrgDb ON PacientVisit. ReestrMedOrgID = ReestrMedOrgDb. ID
WHERE
((OsobSluch = 1) OR (OsobSluch = 22)) AND (PacientVisit. HelpEnd >= '01.01.2015' AND PacientVisit. HelpEnd <= '31.12.2015') AND ReestrMedOrgDb. NameWithId LIKE 'Реестр%' AND datediff(year, PacientVisit. DR,'31.12.2015') IN (21, 24, 27, 30, 33) AND PacientVisit. W = '1'
UNION ALL
SELECT COUNT (DISTINCT PacientVisit. Polis)
FROM PacientVisit
INNER JOIN ReestrMedOrgDb ON PacientVisit. ReestrMedOrgID = ReestrMedOrgDb. ID
WHERE
((OsobSluch = 1) OR (OsobSluch = 22)) AND (PacientVisit. HelpEnd >= '01.01.2015' AND PacientVisit. HelpEnd <= '31.12.2015') AND ReestrMedOrgDb. NameWithId LIKE 'Реестр%' AND datediff(year, PacientVisit. DR,'31.12.2015') IN (78, 84, 90, 96) AND PacientVisit. W = '1'
UNION ALL
SELECT COUNT (DISTINCT PacientVisit. Polis)
FROM PacientVisit
INNER JOIN ReestrMedOrgDb ON PacientVisit. ReestrMedOrgID = ReestrMedOrgDb. ID
WHERE
((OsobSluch = 1) OR (OsobSluch = 22)) AND (PacientVisit. HelpEnd >= '01.01.2015' AND PacientVisit. HelpEnd <= '31.12.2015') AND ReestrMedOrgDb. NameWithId LIKE 'Реестр%' AND datediff(year, PacientVisit. DR,'31.12.2015') IN (36, 42) AND PacientVisit. W = '1'
UNION ALL
SELECT COUNT (DISTINCT PacientVisit. Polis)
FROM PacientVisit
INNER JOIN ReestrMedOrgDb ON PacientVisit. ReestrMedOrgID = ReestrMedOrgDb. ID
WHERE
((OsobSluch = 1) OR (OsobSluch = 22)) AND (PacientVisit. HelpEnd >= '01.01.2015' AND PacientVisit. HelpEnd <= '31.12.2015') AND ReestrMedOrgDb. NameWithId LIKE 'Реестр%' AND datediff(year, PacientVisit. DR,'31.12.2015') IN (48, 54, 60, 66, 72) AND PacientVisit. W = '1'
UNION ALL
SELECT COUNT (DISTINCT PacientVisit. Polis)
FROM PacientVisit
INNER JOIN ReestrMedOrgDb ON PacientVisit. ReestrMedOrgID = ReestrMedOrgDb. ID
WHERE
((OsobSluch = 1) OR (OsobSluch = 22)) AND (PacientVisit. HelpEnd >= '01.01.2015' AND PacientVisit. HelpEnd <= '31.12.2015') AND ReestrMedOrgDb. NameWithId LIKE 'Реестр%' AND datediff(year, PacientVisit. DR,'31.12.2015') IN (39, 45, 81, 87, 93, 99) AND PacientVisit. W = '1'
UNION ALL
SELECT COUNT (DISTINCT PacientVisit. Polis)
FROM PacientVisit
INNER JOIN ReestrMedOrgDb ON PacientVisit. ReestrMedOrgID = ReestrMedOrgDb. ID
WHERE
((OsobSluch = 1) OR (OsobSluch = 22)) AND (PacientVisit. HelpEnd >= '01.01.2015' AND PacientVisit. HelpEnd <= '31.12.2015') AND ReestrMedOrgDb. NameWithId LIKE 'Реестр%' AND datediff(year, PacientVisit. DR,'31.12.2015') IN (51, 57, 63, 69, 75) AND PacientVisit. W = '1'
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


