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

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

USS271.BEDEN_KITLE_INDEKSI_DURUMU AS BEDEN_KITLE_INDEKSI_DURUMU_ID,
TBEDEN_KITLE_INDEKSI_DURUMU.AD AS BEDEN_KITLE_INDEKSI_DURUMU_ADI,

USS271.KILO_KAYBI_DURUMU AS KILO_KAYBI_DURUMU_ID,
TKILO_KAYBI_DURUMU.AD AS KILO_KAYBI_DURUMU_ADI,

USS271.BESIN_ALIM_DURUMU AS BESIN_ALIM_DURUMU_ID,
TBESIN_ALIM_DURUMU.AD AS BESIN_ALIM_DURUMU_ADI,

USS271.CIDDI_HASTALIK_DURUMU AS CIDDI_HASTALIK_DURUMU_ID,
TCIDDI_HASTALIK_DURUMU.AD AS CIDDI_HASTALIK_DURUMU_ADI,

DEGERLENDIRME_TARIHI AS DEGERLENDIRME_TARIHI,

BOY AS BOY,
KILO AS KILO,

(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,

USS271.BESLENME_DURUMU_BOZUKLUGU AS BESLENME_DURUMU_BOZUKLUGU_ID,
TBESLENME_DURUMU_BOZUKLUGU.AD AS BESLENME_DURUMU_BOZUKLUGU_ADI,

USS271.NUTRISYONEL_GEREKSINIM AS NUTRISYONEL_GEREKSINIM_ID,
TNUTRISYONEL_GEREKSINIM.AD AS NUTRISYONEL_GEREKSINIM_ADI,

BESLENME_DURUMU_SKOR_SONUCU AS BESLENME_DURUMU_SKOR_SONUCU,

USS271.MALNUTRISYON_TEDAVI_PLANI AS MALNUTRISYON_TEDAVI_PLANI_ID,
TMALNUTRISYON_TEDAVI_PLANI.AD AS MALNUTRISYON_TEDAVI_PLANI_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 USS271_MALNUTRISYON_BILGILERI AS USS271
INNER JOIN HDOSYA ON HDOSYA.HDOSYAID = USS271.HDOSYAID
LEFT JOIN HKIMLIK ON HKIMLIK.HKIMLIKID=HDOSYA.HKIMLIKID
LEFT JOIN	SUBELER ON SUBELER.SUBEID=HDOSYA.SUBEID

LEFT JOIN 
(
SELECT 'EVET' AS AD, 1 AS ID
UNION ALL
SELECT 'HAYIR', 2
) TBEDEN_KITLE_INDEKSI_DURUMU ON TBEDEN_KITLE_INDEKSI_DURUMU.ID=USS271.BEDEN_KITLE_INDEKSI_DURUMU

LEFT JOIN 
(
SELECT 'EVET' AS AD, 1 AS ID
UNION ALL
SELECT 'HAYIR', 2
) TKILO_KAYBI_DURUMU ON TKILO_KAYBI_DURUMU.ID=USS271.KILO_KAYBI_DURUMU

LEFT JOIN
(
SELECT 'EVET' AS AD, 1 AS ID
UNION ALL
SELECT 'HAYIR', 2
) TBESIN_ALIM_DURUMU ON TBESIN_ALIM_DURUMU.ID = USS271.BESIN_ALIM_DURUMU

LEFT JOIN
(
SELECT 'EVET' AS AD, 1 AS ID
UNION ALL
SELECT 'HAYIR', 2
) TCIDDI_HASTALIK_DURUMU ON TCIDDI_HASTALIK_DURUMU.ID = USS271.CIDDI_HASTALIK_DURUMU

LEFT JOIN
(
SELECT 'YOK, SKOR 0' AS AD, 1 AS ID
UNION ALL
SELECT 'HAFİF, SKOR 1', 2
UNION ALL
SELECT 'ORTA, SKOR 2', 3
UNION ALL
SELECT 'YÜKSEK, SKOR 3', 4
) TBESLENME_DURUMU_BOZUKLUGU ON TBESLENME_DURUMU_BOZUKLUGU.ID = USS271.BESLENME_DURUMU_BOZUKLUGU

LEFT JOIN
(
SELECT 'YOK, SKOR 0' AS AD, 1 AS ID
UNION ALL
SELECT 'HAFİF, SKOR 1', 2
UNION ALL
SELECT 'ORTA, SKOR 2', 3
UNION ALL
SELECT 'YÜKSEK, SKOR 3', 4
) TNUTRISYONEL_GEREKSINIM ON TNUTRISYONEL_GEREKSINIM.ID = USS271.NUTRISYONEL_GEREKSINIM


LEFT JOIN
(
SELECT 'ORAL SUPLEMAN TEDAVİSİ' AS AD, 1 AS ID
UNION ALL
SELECT 'PARENTERAL DESTEK TEDAVİSİ', 2
UNION ALL
SELECT 'TÜPLE ENTERAL DESTEK TEDAVİSİ', 3
UNION ALL
SELECT 'KOMBINE TEDAVİ (PARENTERAL DESTEK TEDAVİSİ + TÜPLE ENTERAL DESTEK TEDAVİSİ)', 4
UNION ALL
SELECT 'BESLENME ENDIKASYONU YOK', 5
UNION ALL
SELECT 'BESLENME ENDİKASYONU VAR, BESLENME TEDAVİSİ YAPILMIYOR', 6
) TMALNUTRISYON_TEDAVI_PLANI ON TMALNUTRISYON_TEDAVI_PLANI.ID = USS271.MALNUTRISYON_TEDAVI_PLANI

WHERE USS271.HMUAYENEID= @HMUAYENEID AND USS271.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',
										   '271' AS 'messageType/@code',
										   'Malnütrisyon 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 
																   
																		
																		(SELECT 
																		  --<BEDEN_KITLE_INDEKSI_DURUMU version="1" codeSystemGuid="c9d56fee-d143-4602-ad7b-ba131ef92ad9" code="Code" value="BEDEN_KITLE_INDEKSI_DURUMU" />
																			'1' AS 'BEDEN_KITLE_INDEKSI_DURUMU/@version',
																			'c9d56fee-d143-4602-ad7b-ba131ef92ad9'   AS 'BEDEN_KITLE_INDEKSI_DURUMU/@codeSystemGuid',
																				BEDEN_KITLE_INDEKSI_DURUMU_ID  AS 'BEDEN_KITLE_INDEKSI_DURUMU/@code',
																				BEDEN_KITLE_INDEKSI_DURUMU_ADI AS 'BEDEN_KITLE_INDEKSI_DURUMU/@value',

																		--<KILO_KAYBI_DURUMU version="1" codeSystemGuid="c9d56fee-d143-4602-ad7b-ba131ef92ad9" code="Code" value="KILO_KAYBI_DURUMU" />																		
																			'1' AS 'KILO_KAYBI_DURUMU/@version',
																			'c9d56fee-d143-4602-ad7b-ba131ef92ad9'   AS 'KILO_KAYBI_DURUMU/@codeSystemGuid',
																				KILO_KAYBI_DURUMU_ID  AS 'KILO_KAYBI_DURUMU/@code',
																				KILO_KAYBI_DURUMU_ADI AS 'KILO_KAYBI_DURUMU/@value',

																		--<BESIN_ALIM_DURUMU version="1" codeSystemGuid="c9d56fee-d143-4602-ad7b-ba131ef92ad9" code="Code" value="BESIN_ALIM_DURUMU" />	
																			'1' AS 'BESIN_ALIM_DURUMU/@version',
																			'c9d56fee-d143-4602-ad7b-ba131ef92ad9'   AS 'BESIN_ALIM_DURUMU/@codeSystemGuid',
																				BESIN_ALIM_DURUMU_ID  AS 'BESIN_ALIM_DURUMU/@code',
																				BESIN_ALIM_DURUMU_ADI AS 'BESIN_ALIM_DURUMU/@value',

																		--<CIDDI_HASTALIK_DURUMU version="1" codeSystemGuid="c9d56fee-d143-4602-ad7b-ba131ef92ad9" code="Code" value="CIDDI_HASTALIK_DURUMU" />
																			'1' AS 'CIDDI_HASTALIK_DURUMU/@version',
																			'c9d56fee-d143-4602-ad7b-ba131ef92ad9'   AS 'CIDDI_HASTALIK_DURUMU/@codeSystemGuid',
																				CIDDI_HASTALIK_DURUMU_ID  AS 'CIDDI_HASTALIK_DURUMU/@code',
																				CIDDI_HASTALIK_DURUMU_ADI AS 'CIDDI_HASTALIK_DURUMU/@value',

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

																		ISNULL(BOY,'')  AS 'BOY/@value',
																		ISNULL(KILO,'') AS 'KILO/@value',

																		--<BESLENME_DURUMU_BOZUKLUGU version="1" codeSystemGuid="cca27d91-ab24-4f88-8fb6-5f10706f7aea" code="Code" value="BESLENME_DURUMU_BOZUKLUGU" />
																		'1' AS 'BESLENME_DURUMU_BOZUKLUGU/@version',
																			'cca27d91-ab24-4f88-8fb6-5f10706f7aea'   AS 'BESLENME_DURUMU_BOZUKLUGU/@codeSystemGuid',
																				BESLENME_DURUMU_BOZUKLUGU_ID  AS 'BESLENME_DURUMU_BOZUKLUGU/@code',
																				BESLENME_DURUMU_BOZUKLUGU_ADI AS 'BESLENME_DURUMU_BOZUKLUGU/@value',

																		--<NUTRISYONEL_GEREKSINIM version="1" codeSystemGuid="cca27d91-ab24-4f88-8fb6-5f10706f7aea" code="Code" value="NUTRISYONEL_GEREKSINIM" />
																		'1' AS 'NUTRISYONEL_GEREKSINIM/@version',
																			'cca27d91-ab24-4f88-8fb6-5f10706f7aea'   AS 'NUTRISYONEL_GEREKSINIM/@codeSystemGuid',
																				NUTRISYONEL_GEREKSINIM_ID  AS 'NUTRISYONEL_GEREKSINIM/@code',
																				NUTRISYONEL_GEREKSINIM_ADI AS 'NUTRISYONEL_GEREKSINIM/@value',

																		--<BESLENME_DURUMU_SKOR_SONUCU value="BESLENME_DURUMU_SKOR_SONUCU" />
																		ISNULL(BESLENME_DURUMU_SKOR_SONUCU,'') AS 'BESLENME_DURUMU_SKOR_SONUCU/@value',

																		--<MALNUTRISYON_TEDAVI_PLANI version="1" codeSystemGuid="dc9d1133-f5dd-43db-8fd9-37a67e32f713" code="Code" value="MALNUTRISYON_TEDAVI_PLANI" />
																		'1' AS 'MALNUTRISYON_TEDAVI_PLANI/@version',
																			'dc9d1133-f5dd-43db-8fd9-37a67e32f713'   AS 'MALNUTRISYON_TEDAVI_PLANI/@codeSystemGuid',
																				MALNUTRISYON_TEDAVI_PLANI_ID  AS 'MALNUTRISYON_TEDAVI_PLANI/@code',
																				MALNUTRISYON_TEDAVI_PLANI_ADI AS 'MALNUTRISYON_TEDAVI_PLANI/@value'

																		FOR XML PATH('TARAMA_BILGILERI'),TYPE)														
																			
 		
																FROM #TMPUSSDIGER
																
																FOR XML PATH(''),TYPE
															)
														FOR XML PATH('MALNUTRISYON_BILGILERI'),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
