IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SPUSS_272_KAN_TRANSFUZYON]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE SPUSS_272_KAN_TRANSFUZYON
GO


CREATE PROCEDURE [dbo].[SPUSS_272_KAN_TRANSFUZYON] 
	@HDOSYAID INT=0,
	@HKANTRANSFUZYONID INT=0,
	@TUMUNUTEKRAR BIT = 0
AS
BEGIN

	--SPUSS_272_KAN_TRANSFUZYON 3480650,16,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..#TMPHKANTRANSFUZYON') IS NOT NULL 
		DROP TABLE #TMPHKANTRANSFUZYON

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

	SELECT	   SUBELER.SUBEADI AS SUBELER_SUBEADI,			
			   HDOSYA.SUBEID AS HDOSYA_SUBEID,
			   HDOSYA.SNOTAKIPNO AS HDOSYA_SNOTAKIPNO,
			   HDOSYA.MDLTAKIPVAR AS HDOSYA_MDLTAKIPVAR,			   	   
			   HDOSYA.MDLTAKIPNO AS HDOSYA_MDLTAKIPNO,
			   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,
			   ISNULL((SELECT TOP 1 VALUESTR FROM CONFIG WITH(NOLOCK) WHERE SECTIONSTR='E-Nabız' AND PROGNAME='MEDISOFT' AND KEYNAME= 'E-nabız SGK Bildirim ID'),'2') AS ENABIZSGKBILDIRIMID
		INTO #TMPISLEMDOSYA
		FROM HDOSYA WITH(NOLOCK)
			 LEFT JOIN SUBELER WITH(NOLOCK) ON SUBELER.SUBEID = HDOSYA.SUBEID
		WHERE   
			  HDOSYA.HDOSYAID = @HDOSYAID



SELECT 
		        CAST(NULL AS INT) AS RHANTIJEN, 
				dbo.TKANGRUBU.SKRSKANGRUBUID AS KANGRUBUID,
				dbo.TKANGRUBU.KANGRUBU AS KANGRUBU,
				dbo.KANURUNU.ISBTMERKEZKODU AS ISBTMERKEZKODU , 
				dbo.KANURUNU.ISBTUNITENO AS ISBTUNITENO, 
				dbo.HKANBILESENIISTEM.ENDIKASYONU AS DIGERENDIKASYONACIKLAMA,
				dbo.HKANBILESENIISTEM.ENDIKASYONID AS ENDIKASYONID,
				TKANTRANSFUZYONENDIKASYON.KODU AS ENDIKASYON,
				HYATISKANTRANSFUZYONU.TBASZAMANI AS TBASZAMANI,
				HYATISKANTRANSFUZYONU.TBITZAMANI AS TBITZAMANI,
				HYATIS.HESAPISLID AS ISLEMREFERANSNUMARASI,
				HYATISKANTRANSFUZYONU.EVRILENMIKTAR AS EVRILENMIKTAR,
				HYATISKANTRANSFUZYONU.TTAMAMLANDIMI,
				HYATISKANTRANSFUZYONU.TTAMAMLANMAMANEDENIID AS TTAMAMLANMAMANEDENIID,
				HYATISKANTRANSFUZYONU.TNOTLAR AS TNOTLAR ,
				HYATISKANTRANSFUZYONU.HYATISID,
				HYATISKANTRANSFUZYONU.HDOSYAID
		INTO #TMPHKANTRANSFUZYON
		FROM HYATISKANTRANSFUZYONU
			 LEFT JOIN KANURUNU ON dbo.HYATISKANTRANSFUZYONU.KANURUNUID = dbo.KANURUNU.KANURUNUID			 
			 LEFT  JOIN HKANBILESENIISTEMDETAY ON dbo.HKANBILESENIISTEMDETAY.HKANBILESENIISTEMDETAYID = dbo.KANURUNU.HKANBILESENIISTEMDETAYID
			 LEFT  JOIN HKANBILESENIISTEM ON dbo.HKANBILESENIISTEM.HKANBILESENIISTEMID = dbo.HKANBILESENIISTEMDETAY.HKANBILESENIISTEMID
			 LEFT JOIN HDOSYA WITH(NOLOCK) ON HDOSYA.HDOSYAID = HKANBILESENIISTEM.HDOSYAID
			 LEFT JOIN HYATIS WITH(NOLOCK) ON HDOSYA.HDOSYAID = HYATIS.HDOSYAID	
			 LEFT JOIN dbo.TKANBILESENI ON dbo.KANURUNU.KANBILESENIID = dbo.TKANBILESENI.KANBILESENIID
			 LEFT JOIN dbo.TKANGRUBU ON dbo.KANURUNU.KANGRUBUID = dbo.TKANGRUBU.KANGRUBUID
			 LEFT JOIN dbo.TKANTRANSFUZYONENDIKASYON ON dbo.TKANTRANSFUZYONENDIKASYON.KODU = dbo.HKANBILESENIISTEM.ENDIKASYONID
          
		WHERE 
			HYATISKANTRANSFUZYONU.HDOSYAID = @HDOSYAID AND
			HYATISKANTRANSFUZYONU.TRANSFUZYONID = @HKANTRANSFUZYONID

	IF (SELECT COUNT(*) FROM #TMPHKANTRANSFUZYON) = 0
	BEGIN
		SET @SAYIHATA = 1
		SET @MESAJ = @MESAJ + '272 Hasta Kan transfüzyon paketi için işlem kaydı bulunamadı! '
	END



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


	IF @HATA='' AND @SAYIHATA=0
	BEGIN		
		SELECT @SUBEID = HDOSYA_SUBEID FROM #TMPISLEMDOSYA
		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


	

					BEGIN TRY
						INSERT INTO @GONDERIMTABLOSU (GONDERILECEKXML,HATA,MESAJ,XMLBASLIK,TABLOID,MINID,MAXID) 
						SELECT							 
							(
								SELECT 
									NEWID() as 'messageGuid/@value',
									'1' as 'messageType/@version',
									'918e32b3-04eb-4444-b721-e979fcee8c60' as 'messageType/@codeSystemGuid',
									'272' as 'messageType/@code',
									'Kan Transfüzyonu 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 
															CASE WHEN ISNULL(KANGRUBUID,0) <> 0 THEN '1' END AS 'KAN_GRUBU/@version',
															CASE WHEN ISNULL(KANGRUBUID,0) <> 0 THEN  'a3d6e943-5d85-4c75-ac72-709115974fb7' END AS 'KAN_GRUBU/@codeSystemGuid',
															CASE WHEN ISNULL(KANGRUBUID,0) <> 0 THEN  KANGRUBUID END 'KAN_GRUBU/@code',
															CASE WHEN ISNULL(KANGRUBUID,0) <> 0 THEN KANGRUBU END AS 'KAN_GRUBU/@value',
															(SELECT
																 CASE WHEN ISNULL('',0) <> 0 THEN '1' END AS 'RH_ANTIJEN_PROFILI/@version', 
																	   CASE WHEN ISNULL('',0) <> 0 THEN '29bfe75e-cca0-45a8-978e-f3c4b3d25907' END AS 'RH_ANTIJEN_PROFILI/@codeSystemGuid', 
																	   CASE WHEN ISNULL('',0) <> 0 THEN '' END AS 'RH_ANTIJEN_PROFILI/@code', 
																	   CASE WHEN ISNULL('',0) <> 0 THEN '' END AS 'RH_ANTIJEN_PROFILI/@value', 
																	  CASE WHEN ISNULL(TNOTLAR,'') <> '' THEN '' END  AS 'KAN_TRANSFUZYONU_NOTLAR/@value', 
																	   ISNULL(DIGERENDIKASYONACIKLAMA, '') AS 'DIGER_KAN_TRANSFUZYON_ENDIKASYONU_ACIKLAMA/@value', 
																	   CASE WHEN ISNULL('',0) <> 0 THEN '1' END AS 'DIGER_ANTIJEN_PROFILI/@version', 
																	   CASE WHEN ISNULL('',0) <> 0 THEN '346f8996-cbfc-4b45-92ef-c0c3184d5fcd' END AS 'DIGER_ANTIJEN_PROFILI/@codeSystemGuid', 
																	  CASE WHEN ISNULL('',0) <> 0 THEN '' END AS 'DIGER_ANTIJEN_PROFILI/@code', 
																	  CASE WHEN ISNULL('',0) <> 0 THEN '' END AS 'DIGER_ANTIJEN_PROFILI/@value', 
																	CASE WHEN ISNULL(TTAMAMLANMAMANEDENIID,0) <> 0 THEN '1'  END AS 'KAN_TRANSFUZYONU_TAMAMLANMAMA_NEDENI/@version', 
											                          CASE WHEN ISNULL(TTAMAMLANMAMANEDENIID,0) <> 0 THEN 'c4042448-e764-4d85-9ff7-270f38adb984'  END AS  'KAN_TRANSFUZYONU_TAMAMLANMAMA_NEDENI/@codeSystemGuid', 
																	CASE WHEN ISNULL(TTAMAMLANMAMANEDENIID,0) <> 0 THEN TTAMAMLANMAMANEDENIID END  AS 'KAN_TRANSFUZYONU_TAMAMLANMAMA_NEDENI/@code', 
																		(CASE TTAMAMLANMAMANEDENIID 
																																	WHEN 1 THEN 'HASTA TRANSFÜZYONDAN VAZGEÇTİ'
																																	WHEN 2 THEN 'İSTENMEYEN REAKSİYON GELİŞTİ'
																																	WHEN 3 THEN 'BİLEŞEN VE TRANSFÜZYON SETİ KAYNAKLI SEBEPTEN DOLAYI TRANSFÜZYON TAMAMLANAMADI' END) AS 'KAN_TRANSFUZYONU_TAMAMLANMAMA_NEDENI/@value',
																	--   WHERE TTAMAMLANDIMI=1), 
																	 --  ISNULL(TTAMAMLANMAMANEDENIID,0) AS 'KAN_TRANSFUZYONU_TAMAMLANMAMA_NEDENI/@code', 
																	   (CASE WHEN EVRILENMIKTAR='TAMAMI' THEN '450' ELSE '0' END) AS 'TRANSFUZE_EDILEN_TOPLAM_MIKTAR/@value', 
																	   LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19), TBASZAMANI, 120), ' ', ''), '-', ''), ':', ''), 12) AS 'KAN_TRANSFUZYON_BASLANGIC_ZAMANI/@value', 
																	   LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19), TBITZAMANI, 120), ' ', ''), '-', ''), ':', ''), 12) AS 'KAN_TRANSFUZYON_BITIS_ZAMANI/@value', 
																	   '1' AS 'KAN_TRANSFUZYON_ENDIKASYONU/@version', 
																	   'c5136fcb-4386-4874-a731-585d66684a7c' AS 'KAN_TRANSFUZYON_ENDIKASYONU/@codeSystemGuid', 
																	   ISNULL(ENDIKASYONID, 0) AS 'KAN_TRANSFUZYON_ENDIKASYONU/@code', 
																	   ISNULL(ENDIKASYON, '') AS 'KAN_TRANSFUZYON_ENDIKASYONU/@value', 
																	   '1' AS 'KAN_TRANSFUZYON_TAMAMLANMA_DURUMU/@version', 
																	   'b7cbded5-0dd2-41e4-a3bf-9f424185015d' AS 'KAN_TRANSFUZYON_TAMAMLANMA_DURUMU/@codeSystemGuid', 
																	   CASE WHEN TTAMAMLANDIMI=1 THEN '1'ELSE '2' END AS 'KAN_TRANSFUZYON_TAMAMLANMA_DURUMU/@code', 
																	   CASE WHEN TTAMAMLANDIMI=1 THEN 'EVET' ELSE 'HAYIR' END AS 'KAN_TRANSFUZYON_TAMAMLANMA_DURUMU/@value', 
																	   ISNULL(ISLEMREFERANSNUMARASI, '') AS 'ISLEM_REFERANS_NUMARASI/@value'
															,
																(
																	SELECT ISNULL(ISBTUNITENO, '') AS 'ISBT_UNITE_NO/@value', 
																		   ISNULL(ISBTMERKEZKODU, '') AS 'ISBT_BILESEN_KODU/@value' 
																	FOR XML PATH('KULLANILAN_KAN_BILESENI_BILGILERI'), TYPE ) 
																FOR XML PATH('KAN_TRANSFUZYON_BILGISI'), TYPE)								 									    
																	 	
																												
															FROM #TMPHKANTRANSFUZYON
																							
									     
													FOR XML PATH('KAN_TRANSFUZYON_BILGILERI'),TYPE
															)														
													FOR XML PATH('recordData'), TYPE 
										)
		   
				FROM #TMPISLEMDOSYA

				FOR XML PATH(''), ROOT('SYSMessage')
	
	
							) AS GONDERILECEKXML,
							@HATA AS HATA, 
							@MESAJ AS MESAJ,
							@XMLBASLIK AS XMLBASLIK,
							@HKANTRANSFUZYONID 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 @GONDERIMTABLOSU (GONDERILECEKXML,HATA,MESAJ,XMLBASLIK,TABLOID,MINID,MAXID)		
						SELECT	'' AS GONDERILECEKXML,
								@HATA AS HATA, 
								@MESAJ AS MESAJ,
								'' AS XMLBASLIK,
								@HKANTRANSFUZYONID AS TABLOID,
								0 AS MINID,
								0 AS MAXID
			

					END CATCH
				



	END
	ELSE
	BEGIN

		
		INSERT INTO @GONDERIMTABLOSU (GONDERILECEKXML,HATA,MESAJ,XMLBASLIK,TABLOID,MINID,MAXID)
		SELECT	'' AS GONDERILECEKXML,
				@HATA AS HATA, 
				@MESAJ AS MESAJ,
				'' AS XMLBASLIK,	
				@HKANTRANSFUZYONID AS TABLOID,
				0 AS MINID,
				0 AS MAXID		 
	END

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

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


	SELECT * FROM @GONDERIMTABLOSU


END

