


ALTER PROCEDURE [dbo].[SPUSS_502_YOGUN_BAKIM_KAYIT] 
	@HDOSYAID INT=0,
	@HYATISID INT=0,
	@TUMUNUTEKRAR BIT = 0
AS
BEGIN
	--SPUSS_502_YOGUN_BAKIM_KAYIT 173969,0,1
	DECLARE @HATA NVARCHAR(2000) = ''
	DECLARE @MESAJ NVARCHAR(2000) = ''
	DECLARE @SAYIHATA BIT = 0
	DECLARE @XMLBASLIK NVARCHAR(2000) = ''
	DECLARE @SUBEID INT = 1
	DECLARE @GONDERIMTABLOSU TABLE 
		(
			GONDERILECEKXML XML,
			HATA NVARCHAR(2000),
			MESAJ NVARCHAR(2000),	
			XMLBASLIK NVARCHAR(3500),
			TABLOID INT,
			MINID INT,
			MAXID INT
		)

	IF OBJECT_ID('tempdb..#TMPHYATIS') IS NOT NULL 
		DROP TABLE #TMPHYATIS

	IF OBJECT_ID('tempdb..#TMPYOGUNBAKIM') IS NOT NULL 
		DROP TABLE #TMPYOGUNBAKIM


	SELECT 
	HDOSYA.SUBEID AS HDOSYA_SUBEID,
	SUBELER.SUBEADI AS SUBELER_SUBEADI,
	HDOSYA.SNOTAKIPNO AS HDOSYA_SNOTAKIPNO,
	HYATIS.HESAPISLID AS HYATIS_HESAPISLID,
	HYATIS.HYATISID AS  HYATIS_HYATISID,
	HYATIS.HYYATISTARIH AS  HYATIS_HYYATISTARIH,
	HYATIS.HYCIKISTARIH AS  HYATIS_HYCIKISTARIH,
	HYATIS.CIKISSEVKTURUID AS HYATIS_CIKISSEVKTURUID,
	HYATIS.HASTATIPI AS HYATIS_HASTATIPI,  
	ISNULL((SELECT TOP 1 VALUESTR FROM CONFIG WITH(NOLOCK) WHERE SECTIONSTR='Saglik-Net' AND PROGNAME='MEDISOFT' AND KEYNAME= CONVERT(VARCHAR,HDOSYA.SUBEID)+' numaralı şubenin kurum numarası'),'') AS SAGLIKNETKURUMKODU
	INTO #TMPHYATIS
	FROM HYATIS WITH(NOLOCK)
	JOIN HESAPISL WITH(NOLOCK) ON HESAPISL.HESAPISLID = HYATIS.HESAPISLID   
	LEFT JOIN	 HDOSYA WITH(NOLOCK) ON HDOSYA.HDOSYAID = HYATIS.HDOSYAID 
	LEFT JOIN	 SUBELER WITH(NOLOCK) ON SUBELER.SUBEID = HDOSYA.SUBEID
	WHERE HESAPISL.IPTAL = 0 
	  AND HESAPISL.ONAYLI = 1 
	  AND HESAPISL.TEKLIF = 0
	  AND HESAPISL.SNKAYDET = 1
	  AND HDOSYA.HDIPTAL = 0
	  --AND HDOSYA.
	  AND HDOSYA.HDOSYAID = @HDOSYAID
	  AND (@HYATISID=0 OR HYATIS.HYATISID = @HYATISID)	  


	SELECT HYIZLEM.HYIZLEMID AS HYIZLEM_HYIZLEMID,			
			HYIZLEM.HYATISID AS HYIZLEM_HYATISID,		
			HYIZLEM.YBHESAPISLID AS HYIZLEM_YBHESAPISLID, 
			HYIZLEM.BASAMAK AS HYIZLEM_BASAMAK, 
			HYIZLEM.SEPTIKSOK AS HYIZLEM_SEPTIKSOK, 
			HYIZLEM.SEPSISDURUMU AS HYIZLEM_SEPSISDURUMU, 
			HYIZLEM.IZLEM AS HYIZLEM_IZLEM ,		    
			HYIZLEM.TARIH AS HYIZLEM_TARIH, 
			HYIZLEM.KAYITTARIHI AS HYIZLEM_KAYITTARIHI, 
			HYATIS.HYYATISTARIH AS HYATIS_HYYATISTARIH, 
			HYIZLEM.APACHESKORU AS HYIZLEM_APACHESKORU, 
			HYIZLEM.APACHEBEKLENENOLUMORANI AS HYIZLEM_APACHEBEKLENENOLUMORANI, 
			HYIZLEM.APACHEBEKLENENOLUMORANIDUZELTILMIS AS HYIZLEM_APACHEBEKLENENOLUMORANIDUZELTILMIS, 
			CASE WHEN HYIZLEM.APACHEOLCUMZAMANI IS NULL THEN ISNULL(replace(convert(varchar(8), HYIZLEM.TARIH, 112)+convert(varchar(8),HYATIS.HYYATISTARIH, 114), ':',''),'')
			ELSE ISNULL(replace(convert(varchar(8), HYIZLEM.APACHEOLCUMZAMANI, 112)+convert(varchar(8),HYATIS.HYYATISTARIH, 114), ':',''),'') END AS HYIZLEM_APACHEOLCUMZAMANI, 
			HYIZLEM.SNAPIISKORU AS HYIZLEM_SNAPIISKORU, 
			HYIZLEM.SNAPPEIISKORU AS HYIZLEM_SNAPPEIISKORU, 
			CASE WHEN HYIZLEM.SNAPIIOLCUMZAMANI IS NULL THEN ISNULL(replace(convert(varchar(8), HYIZLEM.TARIH, 112)+convert(varchar(8),HYATIS.HYYATISTARIH, 114), ':',''),'')
			ELSE ISNULL(replace(convert(varchar(8), HYIZLEM.SNAPIIOLCUMZAMANI, 112)+convert(varchar(8),HYATIS.HYYATISTARIH, 114), ':',''),'') END AS HYIZLEM_SNAPIIOLCUMZAMANI, 
			HYIZLEM.GLASKOWGOZLER AS HYIZLEM_GLASKOWGOZLER, 
			HYIZLEM.GLASKOWMOTOR AS HYIZLEM_GLASKOWMOTOR, 
			HYIZLEM.GLASKOWSOZEL AS HYIZLEM_GLASKOWSOZEL, 
			HYIZLEM.PRISMSKORU AS HYIZLEM_PRISMSKORU, 
			HYIZLEM.PRISMBEKLENENORANI AS HYIZLEM_PRISMBEKLENENORANI,			
			CASE WHEN HYIZLEM.PRISMOLCUMZAMANI IS NULL THEN ISNULL(replace(convert(varchar(8), HYIZLEM.TARIH, 112)+convert(varchar(8),HYATIS.HYYATISTARIH, 114), ':',''),'')
			ELSE ISNULL(replace(convert(varchar(8), HYIZLEM.PRISMOLCUMZAMANI, 112)+convert(varchar(8),HYATIS.HYYATISTARIH, 114), ':',''),'') END AS HYIZLEM_PRISMOLCUMZAMANI			
	INTO #TMPYOGUNBAKIM
	FROM		HYATIS
	INNER JOIN	HYIZLEM ON HYIZLEM.HYATISID = HYATIS.HYATISID
    INNER JOIN HDOSYA ON HDOSYA.HDOSYAID=HYATIS.HDOSYAID
	WHERE HYATIS.HDOSYAID = @HDOSYAID
		AND (@HYATISID=0 OR HYATIS.HYATISID = @HYATISID)
		AND (@TUMUNUTEKRAR=1 OR (@TUMUNUTEKRAR=0 AND ISNULL(HYATIS.YOGUNBAKIMGONDERILDI,0)=0))
		AND DBO.TARIHAL(HDOSYA.GSSCIKISTARIHI)>HYIZLEM.TARIH 
	ORDER BY KAYITTARIHI DESC

	
	--DBO.TARIHAL(GSSCIKISTARIHI) > HYIZLEM.TARIH/*EKKONTROL*/		

	IF NOT EXISTS(SELECT HYATIS_HYCIKISTARIH FROM #TMPHYATIS )
		SET @HATA = @HATA+ 'Hastanın çıkış tarihi girilmemiş! '

	IF (SELECT COUNT(*) FROM #TMPYOGUNBAKIM) = 0 
	BEGIN
		SET @SAYIHATA = 1
		SET @MESAJ = @MESAJ + 'Dosyaya ait yoğun bakım kaydı bulunamadı! '
	END

	IF (SELECT COUNT(*) FROM #TMPHYATIS WHERE HDOSYA_SUBEID IS NULL) > 0 
		SET @HATA = @HATA + 'İşlemin şube kaydı bulunamadı! '

	IF (SELECT HDOSYA_SUBEID FROM #TMPHYATIS WHERE ISNULL(HDOSYA_SNOTAKIPNO,'')='') > 0 
		SET @HATA = @HATA + 'Sağlık Net hasta takip numarası alınmadan USS sistemine yoğun bakım kaydı yapılamaz. '


	IF @HATA='' AND @SAYIHATA=0
	BEGIN		
		SELECT @SUBEID = HDOSYA_SUBEID FROM #TMPHYATIS
		DECLARE @TBLXMLBASLIK TABLE (XMLBASLIK NVARCHAR(2000), HATA NVARCHAR(2000),MESAJ NVARCHAR(2000))
		INSERT INTO @TBLXMLBASLIK (XMLBASLIK, HATA, MESAJ) EXEC SPUSS_000_XML_BASLIK @SUBEID		
		SELECT @HATA=HATA, @MESAJ=MESAJ, @XMLBASLIK=XMLBASLIK FROM @TBLXMLBASLIK		
	END


	IF @HATA = '' AND @SAYIHATA=0
	BEGIN

		--HER TETKIK KARTI AYRI AYRI GONDER DONGUSU
   		DECLARE @CURYATISID INT
		DECLARE CURYATIS CURSOR FOR SELECT HYATIS_HYATISID FROM #TMPHYATIS
		OPEN CURYATIS
		FETCH NEXT FROM CURYATIS INTO @CURYATISID
		WHILE @@FETCH_STATUS =0
		BEGIN

	
				
						BEGIN TRY
							INSERT INTO @GONDERIMTABLOSU (GONDERILECEKXML,HATA,MESAJ,XMLBASLIK,TABLOID,MINID,MAXID) 
							SELECT							 
								(
								SELECT 
								   NEWID() as 'messageGuid/@value',
								   '1' as 'messageType/@version',
								   '0a9ba485-e7e0-4abb-9c86-0a14fd364bb8' as 'messageType/@codeSystemGuid',
								   '502' as 'messageType/@code',
								   'Yoğun Bakım Izlem Veri Seti' as 'messageType/@value',
								   LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),GETDATE(),120),' ',''),'-',''),':',''),12) as 'documentGenerationTime/@value',
										 (
						 
											SELECT	
												'1' AS 'healthcareProvider/@version',
												'c3eade04-4f91-5dab-e043-14031b0ac9f9' as 'healthcareProvider/@codeSystemGuid',
												SAGLIKNETKURUMKODU AS 'healthcareProvider/@code',
												SUBELER_SUBEADI as 'healthcareProvider/@value'  
												FOR XML PATH('author'), TYPE
										  ),
											'C740D0288ED4C45FE0407C0A04162BDD' as 'firmaKodu/@value',
											(
											SELECT 
												(
													SELECT
														ISNULL(HDOSYA_SNOTAKIPNO,'') AS 'SYSTakipNo/@value'
													FOR XML PATH('HASTA_TAKIP_BILGISI'), TYPE
												),
												(
													SELECT
														ISNULL(replace(convert(varchar(8), HYATIS_HYYATISTARIH, 112)+convert(varchar(8),HYATIS_HYYATISTARIH, 114), ':',''),'')AS 'YOGUN_BAKIM_YATIS_TARIHI/@value',
														'1' AS 'YOGUN_BAKIM_TIPI/@version',
														'e725df2c-402f-4f0d-ae8a-f4e23b6e178c' AS 'YOGUN_BAKIM_TIPI/@codeSystemGuid',
														CASE HYATIS_HASTATIPI
														WHEN 1 THEN '1'
														WHEN 2 THEN '2'													
														ELSE '3'
														END AS 'YOGUN_BAKIM_TIPI/@code',
														CASE HYATIS_HASTATIPI
														WHEN 1 THEN 'ERİŞKİN'
														WHEN 2 THEN 'ÇOCUK'													
														ELSE 'YENIDOGAN'
														END AS 'YOGUN_BAKIM_TIPI/@value',

														(
															SELECT 
																ISNULL(replace(convert(varchar(8), HYIZLEM_TARIH, 112)+convert(varchar(8),HYATIS_HYYATISTARIH, 114), ':',''),'')AS 'IZLEM_ZAMANI/@value',
																ISNULL(HYIZLEM_YBHESAPISLID, '') AS 'ISLEM_REFERANS_NUMARASI/@value',
																ISNULL(HYIZLEM_IZLEM, '') AS 'GUNLUK_IZLEM_NOTU/@value',

																'1' AS 'SEPTIK_SOK/@version',
																'c9d56fee-d143-4602-ad7b-ba131ef92ad9' AS 'SEPTIK_SOK/@codeSystemGuid',
																CASE WHEN HYIZLEM_SEPTIKSOK = 1 THEN '1' ELSE '2' END AS 'SEPTIK_SOK/@code',
																CASE WHEN HYIZLEM_SEPTIKSOK = 1 THEN 'EVET' ELSE 'HAYIR' END AS 'SEPTIK_SOK/@value',

																'1' AS 'SEPSIS_DURUMU/@version',
																'c9d56fee-d143-4602-ad7b-ba131ef92ad9' AS 'SEPSIS_DURUMU/@codeSystemGuid',
																CASE WHEN HYIZLEM_SEPSISDURUMU = 1 THEN '1' ELSE '2' END AS 'SEPSIS_DURUMU/@code',
																CASE WHEN HYIZLEM_SEPSISDURUMU = 1 THEN 'EVET' ELSE 'HAYIR' END AS 'SEPSIS_DURUMU/@value',													

																'1' AS 'YOGUN_BAKIM_SEVIYE_BILGISI/@version',
																'3c20a43e-74ee-4a04-9649-05359b5f9c5d' AS 'YOGUN_BAKIM_SEVIYE_BILGISI/@codeSystemGuid',
																ISNULL(HYIZLEM_BASAMAK,'') AS 'YOGUN_BAKIM_SEVIYE_BILGISI/@code',
																CASE HYIZLEM_BASAMAK
																WHEN 1 THEN '1. BASAMAK YOĞUN BAKIM'
																WHEN 2 THEN '2. BASAMAK YOĞUN BAKIM'	
																WHEN 3 THEN '3. BASAMAK YOĞUN BAKIM'												
																ELSE ''
																END AS 'YOGUN_BAKIM_SEVIYE_BILGISI/@value',

																(SELECT 
																	ISNULL(HYIZLEM_APACHESKORU, 0) AS 'TOPLAM_APACHE_SKORU/@value',
																	ISNULL(HYIZLEM_APACHEBEKLENENOLUMORANI, 0) AS 'BEKLENEN_OLUM_ORANI/@value',
																	ISNULL(HYIZLEM_APACHEBEKLENENOLUMORANIDUZELTILMIS, ISNULL(HYIZLEM_APACHEBEKLENENOLUMORANI, 0)) AS 'BEKLENEN_OLUM_ORANI_DUZELTILMIS/@value',
																	ISNULL(HYIZLEM_APACHEOLCUMZAMANI, 0) AS 'OLCUM_ZAMANI/@value'
																FOR XML PATH('APACHE_II_SKOR_BILGISI'),TYPE),

																(SELECT 
																	ISNULL(HYIZLEM_SNAPIISKORU, 0) AS 'SNAP_II_SKORU/@value',
																	ISNULL(HYIZLEM_SNAPPEIISKORU, 0) AS 'SNAP_PE_II_SKORU/@value',
																	ISNULL(HYIZLEM_SNAPIIOLCUMZAMANI, 0) AS 'OLCUM_ZAMANI/@value'
																FOR XML PATH('SNAP_II_SKOR_BILGISI'),TYPE),
																
																(SELECT 
																	HYIZLEM_GLASKOWGOZLER AS 'GOZLER/@value',
																	HYIZLEM_GLASKOWSOZEL AS 'SOZEL/@value',
																	HYIZLEM_GLASKOWMOTOR AS 'MOTOR/@value'
																	WHERE HYATIS_HASTATIPI <> 3 																	
																FOR XML PATH('GLASGOW_SKALASI'),TYPE),
																(SELECT 
																	'' AS 'GOZLER/@value',
																	'' AS 'SOZEL/@value',
																	'' AS 'MOTOR/@value'
																	WHERE HYATIS_HASTATIPI = 3 																	
																FOR XML PATH('GLASGOW_SKALASI'),TYPE),

																(SELECT 
																	ISNULL(HYIZLEM_PRISMSKORU, 0) AS 'TOPLAM_PRISM_SKORU/@value',
																	ISNULL(HYIZLEM_PRISMBEKLENENORANI, 0) AS 'BEKLENEN_OLUM_ORANI/@value',
																	ISNULL(HYIZLEM_PRISMOLCUMZAMANI, 0) AS 'OLCUM_ZAMANI/@value'
																FOR XML PATH('PRISM_SKOR_BILGISI'),TYPE)
																												
															FROM #TMPYOGUNBAKIM
															WHERE HYIZLEM_HYATISID = HYATIS_HYATISID
															FOR XML PATH('IZLEM_BILGISI'),TYPE
														)									
									     
													FOR XML PATH('YOGUN_BAKIM_IZLEM_BILGILERI'),TYPE
												)
						
												FOR XML PATH('recordData'), TYPE)
		   
					FROM #TMPHYATIS
					WHERE HYATIS_HYATISID = @CURYATISID
					FOR XML PATH(''), ROOT('SYSMessage')
	
	
								) AS GONDERILECEKXML,
								@HATA AS HATA, 
								@MESAJ AS MESAJ,
								@XMLBASLIK AS XMLBASLIK,
								@CURYATISID AS TABLOID,
								0 AS MINID,
								0 AS MAXID

						END TRY
						BEGIN CATCH
							SET @HATA = ERROR_MESSAGE()
							IF @HATA = ''
								SET @HATA = 'Bilinmeyen bir hata oluştu'

							INSERT INTO ZAMANLAYICIHATALARI (HDOSYAID,ISLEMKODU,TABLOID,HATAVEREN,HATAKODU,HATA,MESAJ,OLUSTURULMAZAMANI)
							SELECT @HDOSYAID,'502',@CURYATISID,'SP','',@HATA,@MESAJ,GETDATE()
			
							INSERT INTO @GONDERIMTABLOSU (GONDERILECEKXML,HATA,MESAJ,XMLBASLIK,TABLOID,MINID,MAXID)			
							SELECT	'' AS GONDERILECEKXML,
									@HATA AS HATA, 
									@MESAJ AS MESAJ,
									'' AS XMLBASLIK,
									@CURYATISID AS TABLOID,
									0 AS MINID,
									0 AS MAXID
			

						END CATCH				



		FETCH NEXT FROM CURYATIS INTO @CURYATISID 
		END -- CURYATIS son
	

		CLOSE CURYATIS
		DEALLOCATE CURYATIS

	END
	ELSE
	BEGIN
		IF @HATA<>''		
			INSERT INTO ZAMANLAYICIHATALARI (HDOSYAID,ISLEMKODU,TABLOID,HATAVEREN,HATAKODU,HATA,MESAJ,OLUSTURULMAZAMANI)
			SELECT @HDOSYAID,'502',@CURYATISID,'SP','',@HATA,@MESAJ,GETDATE()
		
		INSERT INTO @GONDERIMTABLOSU (GONDERILECEKXML,HATA,MESAJ,XMLBASLIK,TABLOID,MINID,MAXID)
		SELECT	'' AS GONDERILECEKXML,
				@HATA AS HATA, 
				@MESAJ AS MESAJ,
				'' AS XMLBASLIK,
				@CURYATISID AS TABLOID,
				0 AS MINID,
				0 AS MAXID
				
		SET @HATA = ''				 
	END


	
	IF OBJECT_ID('tempdb..#TMPHYATIS') IS NOT NULL 
		DROP TABLE #TMPHYATIS

	IF OBJECT_ID('tempdb..#TMPYOGUNBAKIM') IS NOT NULL 
		DROP TABLE #TMPYOGUNBAKIM


	SELECT * FROM @GONDERIMTABLOSU


END
