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