--Tabela Karşılama Transferleri
UPDATE    DEPOFISISL
SET              HDOSYAID = VWYATIS.HDOSYAID
--SELECT     TOP (1000) *, HYATIS.HDOSYAID
FROM         DEPOFISISL INNER JOIN
                      DEPOFIS WITH (NOLOCK) ON DEPOFISISL.DEPOFISID = DEPOFIS.DEPOFISID INNER JOIN
                      TALEPFIS WITH (NOLOCK) ON DEPOFIS.TALEPFISID = TALEPFIS.TALEPFISID INNER JOIN
                      HTEDAVITABELA WITH (NOLOCK) ON TALEPFIS.HTEDAVITABELAID = HTEDAVITABELA.HTEDAVITABELAID INNER JOIN
                      VWYATIS WITH (NOLOCK) ON HTEDAVITABELA.HYATISID = VWYATIS.HYATISID
WHERE (DEPOFISISL.HDOSYAID IS NULL) AND 
VWYATIS.HDOSYAID IN (SELECT DISTINCT HDOSYAID FROM
	(SELECT VWYATIS.HDOSYAID
	FROM         VWHTEDAVITABELAKULLANIM INNER JOIN
						  VWYATIS ON VWHTEDAVITABELAKULLANIM.HYATISID = VWYATIS.HYATISID
	WHERE     (uygulandı = 0) AND (pasıf = 0) AND (kulpasıf = 0) AND (VWYATIS.DURUM = 2) AND (VWHTEDAVITABELAKULLANIM.TARIH >= DATEADD(DAY, - 4, dbo.TARIHAL(GETDATE())))
	UNION ALL
	SELECT HDOSYAID
	FROM         VWYATIS
	WHERE     (DURUM = 1) AND EXISTS
							  (SELECT     HTEDAVITABELAID
								FROM          HTEDAVITABELA
								WHERE      (VWYATIS.HYATISID = HYATISID))) Q)                      
GO

-- Tüketimler
UPDATE    DEPOFISISL
SET              HDOSYAID = HESAPISL.HDOSYAID
--select HESAPISL.HTEDAVITABELAKULLANIMID, * 
FROM         DEPOFISISL (NOLOCK) INNER JOIN
                      HESAPISL (NOLOCK) ON DEPOFISISL.ISLREFID = HESAPISL.HESAPISLID INNER JOIN
                      HYATIS (NOLOCK) ON HYATIS.HESAPISLID = HESAPISL.HESAPISLID                     
WHERE     (DEPOFISISL.HDOSYAID IS NULL) AND (DEPOFISISL.ISLREFID IS NOT NULL) AND (HESAPISL.HTEDAVITABELAKULLANIMID IS NOT NULL) AND 
HYATIS.HDOSYAID IN 
(SELECT DISTINCT HDOSYAID FROM
	(SELECT VWYATIS.HDOSYAID
	FROM         VWHTEDAVITABELAKULLANIM INNER JOIN
						  VWYATIS ON VWHTEDAVITABELAKULLANIM.HYATISID = VWYATIS.HYATISID
	WHERE     (uygulandı = 0) AND (pasıf = 0) AND (kulpasıf = 0) AND (VWYATIS.DURUM = 2) AND (VWHTEDAVITABELAKULLANIM.TARIH >= DATEADD(DAY, - 4, dbo.TARIHAL(GETDATE())))
	UNION ALL
	SELECT HDOSYAID
	FROM         VWYATIS
	WHERE     (DURUM = 1) AND EXISTS
							  (SELECT     HTEDAVITABELAID
								FROM          HTEDAVITABELA
								WHERE      (VWYATIS.HYATISID = HYATISID))) Q)
GO

-- Birimler arası transferler
UPDATE    DEPOFISISL
SET              HDOSYAID = SUBSTRING(DEPOFISISL.ACIKLAMA, CHARINDEX('hastanın ', DEPOFISISL.ACIKLAMA) + 9, CHARINDEX('dosyasındaki ', DEPOFISISL.ACIKLAMA) - 1 - (CHARINDEX('hastanın ', DEPOFISISL.ACIKLAMA) + 9) + 1)
--SELECT     TOP (1000) *
FROM         DEPOFISISL INNER JOIN
                      DEPOFIS WITH (NOLOCK) ON DEPOFISISL.DEPOFISID = DEPOFIS.DEPOFISID
WHERE     (DEPOFISISL.HDOSYAID IS NULL) AND  
			(DEPOFISISL.ACIKLAMA LIKE '% isimli hastanın %dosyasındaki yatış işleminin birim değişikliği sebebi ile transfer') AND
			(ISNUMERIC(SUBSTRING(DEPOFISISL.ACIKLAMA, CHARINDEX('hastanın ', DEPOFISISL.ACIKLAMA) + 9, CHARINDEX('dosyasındaki ', DEPOFISISL.ACIKLAMA) - 1 - (CHARINDEX('hastanın ', DEPOFISISL.ACIKLAMA) + 9) + 1)) = 1) AND
  CAST(SUBSTRING(DEPOFISISL.ACIKLAMA, CHARINDEX('hastanın ', DEPOFISISL.ACIKLAMA) + 9, CHARINDEX('dosyasındaki ', DEPOFISISL.ACIKLAMA) - 1 - (CHARINDEX('hastanın ', DEPOFISISL.ACIKLAMA) + 9) + 1) AS INT) IN
  (SELECT DISTINCT HDOSYAID FROM
	(SELECT VWYATIS.HDOSYAID
	FROM         VWHTEDAVITABELAKULLANIM INNER JOIN
						  VWYATIS ON VWHTEDAVITABELAKULLANIM.HYATISID = VWYATIS.HYATISID
	WHERE     (uygulandı = 0) AND (pasıf = 0) AND (kulpasıf = 0) AND (VWYATIS.DURUM = 2) AND (VWHTEDAVITABELAKULLANIM.TARIH >= DATEADD(DAY, - 4, dbo.TARIHAL(GETDATE())))
	UNION ALL
	SELECT HDOSYAID
	FROM         VWYATIS
	WHERE     (DURUM = 1) AND EXISTS
							  (SELECT     HTEDAVITABELAID
								FROM          HTEDAVITABELA
								WHERE      (VWYATIS.HYATISID = HYATISID))) Q)
GO