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

CREATE PROCEDURE [dbo].[SPUSS_216_DIYALIZ_HASTASI_BILDIRIM_KAYIT] 
	@HDOSYAID INT=0,
	@HMUAYENEID INT=0,
	@TUMUNUTEKRAR BIT = 0
	 	 
AS
BEGIN
	--SPUSS_216_DIYALIZ_HASTASI_BILDIRIM_KAYIT 165788,115370,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..#TMPUSSDIGER') IS NOT NULL 
	DROP TABLE #TMPUSSDIGER


SELECT 
 USS216.ID USSDIGER_ID
,USS216.HDOSYAID
,USS216.HMUAYENEID
,USS216.HKIMLIKID
,USS216.HYATISID,

DIYALIZ_TEDAVISINE_BASLAMA_TARIHI,

(SELECT TOP 1 ICDKOD FROM HDOSYAICD WHERE HDOSYAICD.HDOSYAID=HDOSYA.HDOSYAID ORDER BY ANATANI DESC) PRIMER_TANI_KODU,
(SELECT TOP 1 (SELECT TICD.ICDADI FROM TICD WHERE TICD.ICDKOD=HDOSYAICD.ICDKOD) FROM HDOSYAICD WHERE HDOSYAICD.HDOSYAID=HDOSYA.HDOSYAID ORDER BY ANATANI DESC) PRIMER_TANI_ADI,

(SELECT TOP 1 ICDKOD FROM HDOSYAICD WHERE HDOSYAICD.HDOSYAID=HDOSYA.HDOSYAID ORDER BY ANATANI DESC) BIRLIKTE_GORULEN_EK_HASTALIKLAR_KODU,
(SELECT TOP 1 (SELECT TICD.ICDADI FROM TICD WHERE TICD.ICDKOD=HDOSYAICD.ICDKOD) FROM HDOSYAICD WHERE HDOSYAICD.HDOSYAID=HDOSYA.HDOSYAID ORDER BY ANATANI DESC)BIRLIKTE_GORULEN_EK_HASTALIKLAR_ADI,

USS216.DIYALIZ_TEDAVISI_YONTEMI AS DIYALIZ_TEDAVISI_YONTEMI_ID,
TDIYALIZ_TEDAVISI_YONTEMI.AD AS DIYALIZ_TEDAVISI_YONTEMI_ADI,

USS216.HEMODIYALIZE_GECME_NEDENLERI AS HEMODIYALIZE_GECME_NEDENLERI_ID,
THEMODIYALIZE_GECME_NEDENLERI.AD AS HEMODIYALIZE_GECME_NEDENLERI_ADI,

USS216.ONCEKI_RRT_YONTEMI AS ONCEKI_RRT_YONTEMI_ID,
TONCEKI_RRT_YONTEMI.AD AS ONCEKI_RRT_YONTEMI_ADI,

HDOSYA.SUBEID HDOSYA_SUBEID
	  ,SUBELER.SUBEADI SUBELER_SUBEADI
	  ,HDOSYA.SNOTAKIPNO HDOSYA_SNOTAKIPNO
	  ,		 ISNULL((SELECT TOP 1 VALUESTR FROM CONFIG WITH(NOLOCK) WHERE SECTIONSTR='Saglik-Net' AND PROGNAME='MEDISOFT' AND KEYNAME= CONVERT(VARCHAR,HDOSYA.SUBEID)+' numarali subede Yenidoğanların Kimliksiz fatura edilebilir gün sayısı'),'') 	AS SAGLIKNETKIMLIKSIZYENIDOGANGUN,

		CASE WHEN (SELECT TOP 1 VALUESTR FROM CONFIG WITH(NOLOCK) WHERE SECTIONSTR='Saglik-Net' AND PROGNAME='MEDISOFT' AND /* VALUESTR='1' AND*/ KEYNAME LIKE CONVERT(VARCHAR,HDOSYA.SUBEID)+' numaral% %ubede Sa%l%k Net Online test modu aktif')='1' THEN
			'10000038' 
		ELSE
			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ı'),'') 
		END AS SAGLIKNETKURUMKODU,

			CASE WHEN (SELECT TOP 1 VALUESTR FROM CONFIG WITH(NOLOCK) WHERE SECTIONSTR='Saglik-Net' AND PROGNAME='MEDISOFT' AND /* VALUESTR='1' AND*/ KEYNAME LIKE CONVERT(VARCHAR,HDOSYA.SUBEID)+' numaral% %ubede Sa%l%k Net Online test modu aktif')='1' THEN
			'3bc26a7d-4a19-4edf-ab9f-1413ac85e7d0' /*TEST KTS FİRMA KODU*/
		ELSE
			'C740D0288ED4C45FE0407C0A04162BDD'  /*KTS TALYA*/ 
		END AS SNOKTSFIRMAKODU,

		ISNULL((SELECT TOP 1 VALUESTR FROM CONFIG WITH(NOLOCK) WHERE SECTIONSTR='Saglik-Net' AND PROGNAME='MEDISOFT' AND KEYNAME= CONVERT(VARCHAR,HDOSYA.SUBEID)+' numarali subede Hasta kayıt gönderiminde referans no ön Karakteri'),'') AS REFNOONEK

INTO #TMPUSSDIGER 

FROM USS216_DIYALIZ_HASTASI_BILDIRIM AS USS216
INNER JOIN HDOSYA ON HDOSYA.HDOSYAID = USS216.HDOSYAID
LEFT JOIN HKIMLIK ON HKIMLIK.HKIMLIKID=HDOSYA.HKIMLIKID
LEFT JOIN	SUBELER ON SUBELER.SUBEID=HDOSYA.SUBEID

LEFT JOIN 
(
SELECT 'HEMODİYALİZ' AS AD, 1 AS ID
UNION
SELECT 'PERİTON DİYALİZ', 2
) TDIYALIZ_TEDAVISI_YONTEMI ON TDIYALIZ_TEDAVISI_YONTEMI.ID=USS216.DIYALIZ_TEDAVISI_YONTEMI

LEFT JOIN 
(
SELECT 'İNFEKSİYÖZ KOMPLİKASYONLAR' AS AD, 1 AS ID
UNION ALL
SELECT 'ULTRAFİLTRASYON YETERSİZLİĞİ', 2
UNION ALL
SELECT 'DİYALİZ YETERSİZLİĞİ', 3
UNION ALL
SELECT 'SKLEROZAN ENKAPSÜLE PERİTONİT', 4
UNION ALL
SELECT 'MEKANİK KOMPLİKASYONLAR', 5
UNION ALL
SELECT 'MALNÜTRİSYON', 6
UNION ALL
SELECT 'HASTA VEYA AİLE İSTEĞİ', 7

) THEMODIYALIZE_GECME_NEDENLERI ON THEMODIYALIZE_GECME_NEDENLERI.ID=USS216.HEMODIYALIZE_GECME_NEDENLERI

LEFT JOIN
(
SELECT 'HEMODİYALİZ' AS AD, 1 AS ID
UNION ALL
SELECT 'PERİTON DİYALİZİ', 2
UNION ALL
SELECT 'TRANSPLANTASYON', 3
UNION ALL
SELECT 'YOK', 97
) TONCEKI_RRT_YONTEMI ON TONCEKI_RRT_YONTEMI.ID = USS216.ONCEKI_RRT_YONTEMI

WHERE USS216.HMUAYENEID= @HMUAYENEID AND USS216.HDOSYAID = @HDOSYAID 


	IF (SELECT COUNT(*) FROM #TMPUSSDIGER) = 0 
	BEGIN
		SET @SAYIHATA = 1
		SET @MESAJ = @MESAJ + 'Gönderilecek kayıt bulunamadı! '
	END

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

	IF (SELECT COUNT(*) FROM #TMPUSSDIGER WHERE ISNULL(HDOSYA_SNOTAKIPNO,'')='') > 0 
		SET @HATA = @HATA + 'Sağlık Net hasta takip numarası alınmadan USS sistemine kayIT yapılamaz. '

   	IF @HATA='' AND @SAYIHATA=0
	BEGIN		
		SELECT @SUBEID = HDOSYA_SUBEID FROM #TMPUSSDIGER
		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 @CURUSSDIGERID INT
		DECLARE CURUSSDIGER CURSOR FOR SELECT USSDIGER_ID FROM #TMPUSSDIGER
		OPEN CURUSSDIGER
		FETCH NEXT FROM CURUSSDIGER INTO @CURUSSDIGERID
		WHILE @@FETCH_STATUS =0
		BEGIN
		

	
					SET @HATA = ''
					SET @MESAJ = ''
					SET @SAYIHATA = 0

		
					 
					IF EXISTS(SELECT USSDIGER_ID FROM #TMPUSSDIGER WHERE  ISNULL(USSDIGER_ID,0)=0)
						SET @HATA = @HATA + ' ' + 'Kayıt seçilmemiş. '


					IF (SELECT COUNT(*) FROM #TMPUSSDIGER WHERE USSDIGER_ID=@CURUSSDIGERID) > 0
					BEGIN
						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',
										   '0a9ba485-e7e0-4abb-9c86-0a14fd364bb8' as 'messageType/@codeSystemGuid',
										   '216' AS 'messageType/@code',
										   'Diyaliz Hastasi Bildirim 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' ,
												 SNOKTSFIRMAKODU as 'firmaKodu/@value' ,
												 (
													SELECT 
														(
														   SELECT 
															  (
																 SELECT 
																   
																   --<DIYALIZ_TEDAVISINE_BASLAMA_TARIHI value="DIYALIZ_TEDAVISINE_BASLAMA_TARIHI" />
																   LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),DIYALIZ_TEDAVISINE_BASLAMA_TARIHI,120),' ',''),'-',''),':',''),12)	 AS 'DIYALIZ_TEDAVISINE_BASLAMA_TARIHI/@value',
																   
																   --<PRIMER_TANI version="1" codeSystemGuid="c3eaabad-8c4c-56ee-e043-14031b0a5530" code="Code" value="PRIMER_TANI" />
																		'1' AS 'PRIMER_TANI/@version',
																		'c3eaabad-8c4c-56ee-e043-14031b0a5530' AS 'PRIMER_TANI/@codeSystemGuid',
																		ISNULL(PRIMER_TANI_KODU,'')AS 'PRIMER_TANI/@code',
																		ISNULL(PRIMER_TANI_ADI,'') AS 'PRIMER_TANI/@value',
														
																	--<BIRLIKTE_GORULEN_EK_HASTALIKLAR version="1" codeSystemGuid="c3eaabad-8c4c-56ee-e043-14031b0a5530" code="Code" value="BIRLIKTE_GORULEN_EK_HASTALIKLAR" />
																		(SELECT 
																		'1' AS 'BIRLIKTE_GORULEN_EK_HASTALIKLAR/@version',
																		'c3eaabad-8c4c-56ee-e043-14031b0a5530' AS 'BIRLIKTE_GORULEN_EK_HASTALIKLAR/@codeSystemGuid',
																			ISNULL(BIRLIKTE_GORULEN_EK_HASTALIKLAR_KODU,'')AS 'BIRLIKTE_GORULEN_EK_HASTALIKLAR/@code',
																			ISNULL(BIRLIKTE_GORULEN_EK_HASTALIKLAR_ADI,'') AS 'BIRLIKTE_GORULEN_EK_HASTALIKLAR/@value'
																			FOR XML PATH('BIRLIKTE_GORULEN_EK_HASTALIKLAR_BILGISI'),TYPE),
																
																--<DIYALIZ_TEDAVISI_YONTEMI_BILGISI> <DIYALIZ_TEDAVISI_YONTEMI version="1" codeSystemGuid="0a573429-c8d3-40c3-abd3-a46f3919d721" code="Code" value="DIYALIZ_TEDAVISI_YONTEMI" />	
																		(SELECT 
																		'1' AS 'DIYALIZ_TEDAVISI_YONTEMI/@version',
																		'0a573429-c8d3-40c3-abd3-a46f3919d721' AS 'DIYALIZ_TEDAVISI_YONTEMI/@codeSystemGuid',
																			ISNULL(DIYALIZ_TEDAVISI_YONTEMI_ID,'')AS 'DIYALIZ_TEDAVISI_YONTEMI/@code',
																			ISNULL(DIYALIZ_TEDAVISI_YONTEMI_ADI,'') AS 'DIYALIZ_TEDAVISI_YONTEMI/@value'
																			FOR XML PATH('DIYALIZ_TEDAVISI_YONTEMI_BILGISI'),TYPE),

																--<HEMODIYALIZE_GECME_NEDENLERI_BILGISI> <HEMODIYALIZE_GECME_NEDENLERI version="1" codeSystemGuid="044ba38d-1794-4798-90c8-f9b7097202e7" code="Code" value="HEMODIYALIZE_GECME_NEDENLERI" />
																		(SELECT 
																		'1' AS 'HEMODIYALIZE_GECME_NEDENLERI/@version',
																		'044ba38d-1794-4798-90c8-f9b7097202e7' AS 'HEMODIYALIZE_GECME_NEDENLERI/@codeSystemGuid',
																			ISNULL(HEMODIYALIZE_GECME_NEDENLERI_ID,'')AS 'HEMODIYALIZE_GECME_NEDENLERI/@code',
																			ISNULL(HEMODIYALIZE_GECME_NEDENLERI_ADI,'') AS 'HEMODIYALIZE_GECME_NEDENLERI/@value'
																			FOR XML PATH('HEMODIYALIZE_GECME_NEDENLERI_BILGISI'),TYPE),

																--<ONCEKI_RRT_YONTEMI_BILGISI> <ONCEKI_RRT_YONTEMI version="1" codeSystemGuid="2b54e14f-011c-4007-a0e3-9fcaaed1c0ff" code="Code" value="ONCEKI_RRT_YONTEMI" />
																		(SELECT 
																		'1' AS 'ONCEKI_RRT_YONTEMI/@version',
																		'2b54e14f-011c-4007-a0e3-9fcaaed1c0ff' AS 'ONCEKI_RRT_YONTEMI/@codeSystemGuid',
																			ISNULL(ONCEKI_RRT_YONTEMI_ID,'')AS 'ONCEKI_RRT_YONTEMI/@code',
																			ISNULL(ONCEKI_RRT_YONTEMI_ADI,'') AS 'ONCEKI_RRT_YONTEMI/@value'
																			FOR XML PATH('ONCEKI_RRT_YONTEMI_BILGISI'),TYPE)
 		
																FROM #TMPUSSDIGER
																
																FOR XML PATH(''),TYPE
															)
														FOR XML PATH('DIYALIZ_HASTASI_BILDIRIM'),TYPE
													),					
													   (
														SELECT ISNULL(HDOSYA_SNOTAKIPNO, '' ) AS 'SYSTakipNo/@value'
														FOR XML PATH('HASTA_TAKIP_BILGISI'), TYPE 
													)							
												 FOR XML PATH('recordData'), TYPE
											  )
										   FROM #TMPUSSDIGER WITH(NOLOCK)
										   WHERE USSDIGER_ID = @CURUSSDIGERID
										FOR XML PATH (''), ROOT('SYSMessage')


									) AS goNDERILECEKXML,
									@HATA AS HATA, 
									@MESAJ AS MESAJ,
									@XMLBASLIK AS XMLBASLIK,
									@CURUSSDIGERID 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,
										@CURUSSDIGERID 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,
									LEFT(@HATA,2000) AS HATA, 
									@MESAJ AS MESAJ,
									'' AS XMLBASLIK,
									@CURUSSDIGERID AS TABLOID,
									0 AS MINID,
									0 AS MAXID

							SET @HATA = ''		 
						END
					END




		FETCH NEXT FROM CURUSSDIGER INTO @CURUSSDIGERID 
		END --son HER TETKIK KARTI AYRI AYRI goNDER DONGUSU
	

		CLOSE CURUSSDIGER
		DEALLOCATE CURUSSDIGER

		IF (SELECT COUNT(*) FROM @GONDERIMTABLOSU)=0
			INSERT INTO @GONDERIMTABLOSU (GONDERILECEKXML,HATA,MESAJ,XMLBASLIK,TABLOID,MINID,MAXID)
			SELECT	'' AS GONDERILECEKXML,
					'' AS HATA, 
					'Tüm KAYITLAR zaten gönderilmiş' AS MESAJ,
					'' AS XMLBASLIK,
					0 AS TABLOID,
					0 AS MINID,
					0 AS MAXID


	END
	ELSE
	BEGIN

		INSERT INTO @goNDERIMTABLOSU (goNDERILECEKXML,HATA,MESAJ,XMLBASLIK,TABLOID,MINID,MAXID)
		SELECT	'' AS goNDERILECEKXML,
				LEFT(@HATA,2000) AS HATA, 
				@MESAJ AS MESAJ,
				'' AS XMLBASLIK,
				@CURUSSDIGERID AS TABLOID,
				0 AS MINID,
				0 AS MAXID

		SET @HATA = ''		 
	END


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

	

	SELECT * FROM @goNDERIMTABLOSU


END
