Advertisement
WildFrag

Untitled

Jan 23rd, 2024
1,332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 4.90 KB | None | 0 0
  1. /****** Object:  StoredProcedure [dbo].[QueryForCel1]    Script Date: 23.01.2024 14:48:52 ******/
  2. SET ANSI_NULLS ON
  3. GO
  4. SET QUOTED_IDENTIFIER ON
  5. GO
  6. ALTER PROCEDURE [dbo].[QueryForCel1]
  7.     @god    INT,
  8.     @mes    INT
  9. AS
  10. BEGIN
  11.     SET NOCOUNT ON;
  12.  
  13.  
  14.     CREATE TABLE #find (
  15.         idschet     INT,
  16.         idcase      INT,
  17.         god         INT,
  18.         mes         INT,
  19.         kodbaselpu  INT,
  20.         Id          BIGINT,
  21.         vidpom      INT,
  22.         kodmkb      NVARCHAR(10),
  23.         dnach       DATE,
  24.         dkon        DATE,
  25.         kodspec     INT,
  26.         kodprofilgg INT,
  27.         ishodG      INT,
  28.         KZG         INT
  29.     )
  30.  
  31.     CREATE TABLE #t (
  32.         idschet_1 INT, idcase_1 INT, idschet_2 INT, idcase_2 int
  33.     )
  34.  
  35.     CREATE TABLE #pair (idschet INT, idcase INT)
  36.  
  37.     INSERT INTO #find
  38.             ( idschet ,
  39.               idcase,  
  40.               god ,
  41.               mes ,
  42.               kodbaselpu ,
  43.               Id ,
  44.               vidpom ,
  45.               kodmkb ,
  46.               dnach ,
  47.               dkon ,
  48.               kodspec ,
  49.               kodprofilgg ,
  50.               ishodG,
  51.               KZG
  52.             )
  53.     SELECT r.idschet, r.idcase, s.year, s.month, r.lpu, r.Id,
  54.     r.usl_ok,
  55.     r.ds1, CAST(r.date_1 AS DATE) AS DNach, CAST(r.date_2 AS DATE) AS DKon, 0/*zd.KodSpec*/, di.KodProfilGG, r.rslt, di.KodDRG
  56.     FROM WORKPLACE.sluch_base r
  57.     JOIN WORKPLACE.sluch_dopinfo di ON di.idschet = r.idschet AND di.idcase = r.idcase
  58.     JOIN dbo.vw_schet s ON s.idschet = r.idschet
  59.     OUTER APPLY (
  60.         SELECT TOP 1  
  61.             CASE ISNULL(KodPrichOtkaz,0)
  62.                 WHEN 0 THEN 1 -- полная оплата
  63.                 ELSE IIF(r.sumv>m.SummaP,3,2) -- если сумма выставленная больше принятой то частичный, иначе полный отказ
  64.             END AS Oplata
  65.         FROM EXPERT.mek m
  66.         LEFT OUTER JOIN EXPERT.ActOut ON ActOut.idact = m.idact
  67.         WHERE m.idschet=r.idschet AND m.idcase=r.idcase AND (m.idact IS NULL OR ActStatusId IN (1,2))
  68.         ORDER BY m.FinSank DESC
  69.         ) mek
  70.     WHERE ((s.year=@god AND s.month<=@mes) OR s.year=@god-1) AND r.usl_ok=1 AND ISNULL(mek.Oplata,0)<>2 AND ISNULL(r.id,0)>0-- AND di.PovodObraj=38
  71.     AND NOT (di.kodprofilgg IN (25,7) AND ( -- онкология и гематология
  72.                                         (di.KodDRG BETWEEN 18146 AND 18155)
  73.                                     OR  (di.KodDRG=18157)
  74.                                     OR  (di.KodDRG BETWEEN 18160 AND 18162)
  75.                                     )) 
  76.     AND NOT (kodprofilgg IN (25,7) AND s.SchetType='T' AND di.KodDRG=20022) --4.2018 пункт 1.6
  77.         AND NOT (kodprofilgg IN (25,7) AND (r.ds1 LIKE 'C8[1-9]%' OR r.ds1 LIKE 'C9[0-6]%') AND EXISTS(SELECT * FROM WORKPLACE.usl_base u JOIN DICT.FSMedUsl mu ON u.code_usl=mu.Kod WHERE u.idschet=r.idschet AND u.idcase=r.idcase AND mu.FSKod='A25.30.033.00[1-2]'))
  78.         AND NOT (KodProfilGG IN (10,144,25) AND r.ds1 LIKE 'C%' AND (DATEDIFF(DAY,r.date_1,r.date_2)) BETWEEN 0 AND 4)
  79.         AND NOT (KodProfilGG=28/*офтольмология*/ AND r.ds1 LIKE 'H2[5-6]%' AND EXISTS(SELECT * FROM WORKPLACE.usl_base u JOIN DICT.FSMedUsl mu ON u.code_usl=mu.Kod WHERE u.idschet=r.idschet AND u.idcase=r.idcase AND mu.FSKod='А16.26.09[3-4]') AND di.KodDRG IN (18173,18174))
  80.         AND NOT (KodProfilGG=28/*офтольмология*/ AND r.ds1 LIKE 'H35.3' AND EXISTS(SELECT * FROM WORKPLACE.usl_base u JOIN DICT.FSMedUsl mu ON u.code_usl=mu.Kod WHERE u.idschet=r.idschet AND u.idcase=r.idcase AND mu.FSKod='А16.26.086.001')) --4.2018 пункт 1.7
  81.         AND NOT (KodProfilGG=139/*мед. реабилитиция*/ AND di.KodDRG BETWEEN 18325 AND 18342)
  82.         AND NOT (KodProfilGG IN (26/*гинекология*/,33/*Патологии беременности*/) AND r.ds1 LIKE 'O[0-9][0-9]%' AND di.KodDRG=18002) -- 04.2018 пункт 1.8
  83.         AND NOT (KodProfilGG IN (2,3)/*ревматология и гастро*/ AND di.KodDRG IN (18316,20030)) -- 04.2018 пункт 1.9
  84.         AND NOT (r.ds1 LIKE 'M91.1') -- Болезнь Пертеса
  85.     AND NOT (r.ds1 LIKE 'E76%') -- Мукополисахаридоз -- 04.2018 пункт 1.10
  86.  
  87.     INSERT INTO #t
  88.             ( idschet_1, idcase_1, idschet_2, idcase_2 )
  89.     SELECT r1.idschet, r1.idcase, r2.idschet, r2.idcase
  90.     FROM (SELECT * FROM #find WHERE god=@god AND mes<=@mes) r1
  91.     JOIN (SELECT * FROM #find) r2 ON r2.Id = r1.Id
  92.     WHERE ((r1.idschet<>r2.idschet) OR (r1.idschet=r2.idschet AND r1.idcase<>r2.idcase))
  93.     AND (r1.kodbaselpu=r2.KodBaseLPU AND r1.KodProfilGG=r2.kodprofilgg AND r1.KodMKB=r2.KodMKB)
  94.     AND ((DATEDIFF(DAY,r2.DKon,r1.DNach)) BETWEEN 0 AND 30 or (DATEDIFF(DAY,r1.DKon,r2.DNach)) BETWEEN 0 AND 30)
  95.     AND ((r1.dnach<=r2.dnach AND r1.ishodG=101) OR (r2.dnach<=r1.dnach AND r2.ishodG=101)) -- выбираем только случаи у которых первый более ранний случай с исходом выписан из стационара
  96.  
  97.    
  98.  
  99.     INSERT INTO #pair (idschet, idcase)
  100.     SELECT idschet_1, idcase_1 FROM #t
  101.  
  102.     INSERT INTO #pair (idschet, idcase)
  103.     SELECT idschet_2, idcase_2 FROM #t
  104.  
  105.     SELECT r.* FROM dbo.vw_reestr r
  106.     JOIN (SELECT DISTINCT idschet, idcase FROM #pair) p ON p.idschet = r.idschet AND p.idcase = r.idcase
  107.     ORDER BY r.Id, r.date_1, r.date_2
  108.  
  109.     DROP TABLE #find
  110.     DROP TABLE #t
  111.     DROP TABLE #pair
  112.  
  113. END
  114.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement