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

CREATE PROCEDURE [dbo].[SPUSS_240_OBEZITE_IZLEM_KAYIT] 
	@HDOSYAID INT=0,
	@HMUAYENEID INT=0,
	@TUMUNUTEKRAR BIT = 0
	 	 
AS
BEGIN
	--SPUSS_240_OBEZITE_IZLEM_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 
 USS240.ID USSDIGER_ID
,USS240.HDOSYAID
,USS240.HMUAYENEID
,USS240.HKIMLIKID
,USS240.HYATISID,

BEL_CEVRESI,

USS240.DIYET_TEDAVISI_TIBBI_BESLENME_TEDAVISI AS DIYET_TEDAVISI_TIBBI_BESLENME_TEDAVISI_ID,
TDIYET_TEDAVISI_TIBBI_BESLENME_TEDAVISI.AD AS DIYET_TEDAVISI_TIBBI_BESLENME_TEDAVISI_ADI,

ILK_TANI_TARIHI,

KALCA_CEVRESI,
BOY,
KILO,
USS240.MORBID_OBEZ_HASTA_LENFATIK_ODEM_VARLIGI AS MORBID_OBEZ_HASTA_LENFATIK_ODEM_VARLIGI_ID,
TMORBID_OBEZ_HASTA_LENFATIK_ODEM_VARLIGI.AD AS MORBID_OBEZ_HASTA_LENFATIK_ODEM_VARLIGI_ADI,

USS240.OBEZITE_ILAC_TEDAVISI AS OBEZITE_ILAC_TEDAVISI_ID,
TOBEZITE_ILAC_TEDAVISI.AD AS OBEZITE_ILAC_TEDAVISI_ADI,

USS240.PSIKOLOJIK_TEDAVI AS PSIKOLOJIK_TEDAVI_ID,
TPSIKOLOJIK_TEDAVI.AD AS PSIKOLOJIK_TEDAVI_ADI,

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

USS240.EGZERSIZ AS EGZERSIZ_ID,
TEGZERSIZ.AD AS EGZERSIZ_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 USS240_OBEZITE_IZLEM AS USS240
INNER JOIN HDOSYA ON HDOSYA.HDOSYAID = USS240.HDOSYAID
LEFT JOIN HKIMLIK ON HKIMLIK.HKIMLIKID=HDOSYA.HKIMLIKID
LEFT JOIN	SUBELER ON SUBELER.SUBEID=HDOSYA.SUBEID

LEFT JOIN 
(
SELECT 'HASTA DİYETİNE UYMUYOR' AS AD, 1 AS ID
UNION ALL
SELECT 'HASTA DİYETİNE UYUYOR' AS AD, 2 AS ID
UNION ALL
SELECT 'DEĞIŞIM LISTESI' AS AD, 3 AS ID
UNION ALL
SELECT 'KARBONHIRDAT SAYIMI' AS AD, 4 AS ID
UNION ALL
SELECT 'YOK' AS AD, 97 AS ID
) TDIYET_TEDAVISI_TIBBI_BESLENME_TEDAVISI ON TDIYET_TEDAVISI_TIBBI_BESLENME_TEDAVISI.ID=USS240.DIYET_TEDAVISI_TIBBI_BESLENME_TEDAVISI

LEFT JOIN 
(
SELECT 'VAR' AS AD, 1 AS ID
UNION ALL
SELECT 'YOK' AS AD, 97 AS ID
) TMORBID_OBEZ_HASTA_LENFATIK_ODEM_VARLIGI ON TMORBID_OBEZ_HASTA_LENFATIK_ODEM_VARLIGI.ID=USS240.MORBID_OBEZ_HASTA_LENFATIK_ODEM_VARLIGI

LEFT JOIN
(
SELECT 'VAR' AS AD, 1 AS ID
UNION ALL
SELECT 'YOK' AS AD, 97 AS ID
) TOBEZITE_ILAC_TEDAVISI ON TOBEZITE_ILAC_TEDAVISI.ID = USS240.OBEZITE_ILAC_TEDAVISI

LEFT JOIN
(
SELECT 'VAR' AS AD, 1 AS ID
UNION ALL
SELECT 'YOK' AS AD, 97 AS ID
) TPSIKOLOJIK_TEDAVI ON TPSIKOLOJIK_TEDAVI.ID = USS240.PSIKOLOJIK_TEDAVI

LEFT JOIN
(
SELECT 'EGZERSİZ DÜZEYİ HAFTANIN 3 GÜNÜ VEYA DAHA FAZLA GÜNDE EN AZ 25 DAKİKA YÜKSEK ŞİDDETLİ FİZİKSEL AKTİVİTE İÇERİYOR.' AS AD, 10 AS ID
UNION ALL
SELECT 'EGZERSİZ DÜZEYİ HAFTANIN 5 GÜNÜ VEYA DAHA FAZLA GÜNDE EN AZ 30 DAKİKA ORTA ŞİDDETLİ FİZİKSEL AKTİVİTE İÇERİYOR.' AS AD, 11 AS ID
UNION ALL
SELECT 'EGZERSİZ DÜZEYİ HEM HAFTANIN 3 GÜNÜ VEYA DAHA FAZLA GÜNDE EN AZ 25 DAKİKA YÜKSEK ŞİDDETLİ FİZİKSEL AKTİVİTE HEM DE HAFTANIN 5 GÜNÜ VEYA DAHA FAZLA GÜNDE EN AZ 30 DAKİKA ORTA ŞİDDETLİ FİZİKSEL AKTİVİTE İÇERİYOR.' AS AD, 12 AS ID
UNION ALL
SELECT 'EGZERSİZ DÜZEYİ YETERSİZ (İLK ÜÇ SEÇENEKTEN AZ)' AS AD, 13 AS ID
UNION ALL
SELECT 'EGZERSİZ YAPMIYOR' AS AD, 14 AS ID
UNION ALL
SELECT 'EGZERSİZ DÜZEYİ HAFTANIN 3-5 GÜNÜ GÜNDE 30-40 DAKİKA DÜŞÜK/ORTA ŞİDDETTE AEROBİK EGZERSİZ İÇERİYOR' AS AD, 15 AS ID
UNION ALL
SELECT 'BELİRTİLMEDİ' AS AD, 99 AS ID
) TEGZERSIZ ON TEGZERSIZ.ID = USS240.EGZERSIZ

WHERE USS240.HMUAYENEID= @HMUAYENEID AND USS240.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',
										   '240' AS 'messageType/@code',
										   'Obezite 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' ,
												 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',
																   
																--<BEL_CEVRESI value="BEL_CEVRESI" />
																ISNULL(BEL_CEVRESI,'') as 'BEL_CEVRESI/@value', 

																--<DIYET_TEDAVISI_TIBBI_BESLENME_TEDAVISI version="1" codeSystemGuid="8c0e3f06-e381-4415-9446-a6251d655f91" code="Code" value="DIYET_TEDAVISI_TIBBI_BESLENME_TEDAVISI" />
																	'1' AS 'DIYET_TEDAVISI_TIBBI_BESLENME_TEDAVISI/@version',
																		'8c0e3f06-e381-4415-9446-a6251d655f91' AS 'DIYET_TEDAVISI_TIBBI_BESLENME_TEDAVISI/@codeSystemGuid',
																			ISNULL(DIYET_TEDAVISI_TIBBI_BESLENME_TEDAVISI_ID,'') AS 'DIYET_TEDAVISI_TIBBI_BESLENME_TEDAVISI/@code',
																			ISNULL(DIYET_TEDAVISI_TIBBI_BESLENME_TEDAVISI_ADI,'') AS 'DIYET_TEDAVISI_TIBBI_BESLENME_TEDAVISI/@value',

																--<ILK_TANI_TARIHI value="ILK_TANI_TARIHI" />
																LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),ILK_TANI_TARIHI,120),' ',''),'-',''),':',''),12)	 AS 'ILK_TANI_TARIHI/@value',

																--<KALCA_CEVRESI value="KALCA_CEVRESI" />
																ISNULL(KALCA_CEVRESI,'') as 'KALCA_CEVRESI/@value',
																
																--<MORBID_OBEZ_HASTA_LENFATIK_ODEM_VARLIGI version="1" codeSystemGuid="7516d5d8-7ed7-4bbc-88f6-cd26d7925c16" code="Code" value="MORBID_OBEZ_HASTA_LENFATIK_ODEM_VARLIGI" />
																	'1' AS 'MORBID_OBEZ_HASTA_LENFATIK_ODEM_VARLIGI/@version',
																		'7516d5d8-7ed7-4bbc-88f6-cd26d7925c16' AS 'MORBID_OBEZ_HASTA_LENFATIK_ODEM_VARLIGI/@codeSystemGuid',
																			ISNULL(MORBID_OBEZ_HASTA_LENFATIK_ODEM_VARLIGI_ID,'') AS 'MORBID_OBEZ_HASTA_LENFATIK_ODEM_VARLIGI/@code',
																			ISNULL(MORBID_OBEZ_HASTA_LENFATIK_ODEM_VARLIGI_ADI,'') AS 'MORBID_OBEZ_HASTA_LENFATIK_ODEM_VARLIGI/@value',

																--<OBEZITE_ILAC_TEDAVISI version="1" codeSystemGuid="e263f61b-bacb-482e-b048-f6eb89a6b3ba" code="Code" value="OBEZITE_ILAC_TEDAVISI" />
																		'1' AS 'OBEZITE_ILAC_TEDAVISI/@version',
																		'e263f61b-bacb-482e-b048-f6eb89a6b3ba' AS 'OBEZITE_ILAC_TEDAVISI/@codeSystemGuid',
																			ISNULL(OBEZITE_ILAC_TEDAVISI_ID,'') AS 'OBEZITE_ILAC_TEDAVISI/@code',
																			ISNULL(OBEZITE_ILAC_TEDAVISI_ADI,'') AS 'OBEZITE_ILAC_TEDAVISI/@value',

																--<PSIKOLOJIK_TEDAVI version="1" codeSystemGuid="e6e4e0ab-4f88-4e28-99cd-dd0dadcfbf3f" code="Code" value="PSIKOLOJIK_TEDAVI" />
																'1' AS 'PSIKOLOJIK_TEDAVI/@version',
																		'e6e4e0ab-4f88-4e28-99cd-dd0dadcfbf3f' AS 'PSIKOLOJIK_TEDAVI/@codeSystemGuid',
																			ISNULL(PSIKOLOJIK_TEDAVI_ID,'') AS 'PSIKOLOJIK_TEDAVI/@code',
																			ISNULL(PSIKOLOJIK_TEDAVI_ADI,'') AS 'PSIKOLOJIK_TEDAVI/@value',


																(SELECT 
																'1' AS 'BIRLIKTE_GORULEN_EK_HASTALIKLAR/@version',
																'c3eaabad-8c4c-56ee-e043-14031b0a5530' AS 'BIRLIKTE_GORULEN_EK_HASTALIKLAR/@codeSystemGuid',
																	ISNULL(BIRLIKTE_GORULEN_EK_HASTALIKLAR_ID,'') AS 'BIRLIKTE_GORULEN_EK_HASTALIKLAR/@code',
																	ISNULL(BIRLIKTE_GORULEN_EK_HASTALIKLAR_ADI,'') AS 'BIRLIKTE_GORULEN_EK_HASTALIKLAR/@value'
																	FOR XML PATH('BIRLIKTE_GORULEN_EK_HASTALIK_BILGISI'),TYPE),

																(SELECT 
																'1' AS 'EGZERSIZ/@version',
																'f61204f8-08d4-4aae-9032-893f58319183' AS 'EGZERSIZ/@codeSystemGuid',
																	ISNULL(EGZERSIZ_ID,'') AS 'EGZERSIZ/@code',
																	ISNULL(EGZERSIZ_ADI,'') AS 'EGZERSIZ/@value'
																	FOR XML PATH('EGZERSIZ_BILGISI'),TYPE),

																(SELECT 
																   ISNULL(BOY,'') as 'BOY/@value',
																   ISNULL(KILO,'') as 'KILO/@value'
																FOR XML PATH('BOY_KILO_BILGILERI'),TYPE)
																	
 		
																FROM #TMPUSSDIGER
																
																FOR XML PATH(''),TYPE
															)
														FOR XML PATH('OBEZITE_IZLEM'),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
