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

CREATE PROCEDURE [dbo].[SPUSS_215_DIYABET_KAYIT] 
	@HDOSYAID INT=0,
	@HMUAYENEID INT=0,
	@TUMUNUTEKRAR BIT = 0
	 	 
AS
BEGIN
	--SPUSS_215_DIYABET_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 
 USS215.ID USSDIGER_ID
,USS215.HDOSYAID
,USS215.HMUAYENEID
,USS215.HKIMLIKID
,USS215.HYATISID,
USS215.DIYABET_EGITIMI DIYABET_EGITIMI_ID,
TDIYABET_EGITIMI.AD DIYABET_EGITIMI_ADI,
ILK_TANI_TARIHI,
USS215.DIYABET_KOMPLIKASYONLARI DIYABET_KOMPLIKASYONLARI_ID,
TDIYABET_KOMPLIKASYONLARI.AD DIYABET_KOMPLIKASYONLARI_ADI,
BOY,
KILO,

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 USS215_DIYABET AS USS215
INNER JOIN HDOSYA ON HDOSYA.HDOSYAID = USS215.HDOSYAID
LEFT JOIN HKIMLIK ON HKIMLIK.HKIMLIKID=HDOSYA.HKIMLIKID
LEFT JOIN	SUBELER ON SUBELER.SUBEID=HDOSYA.SUBEID

LEFT JOIN --<DIYABET_EGITIMI version="1" codeSystemGuid="f007d4ed-302d-4b7a-897d-48240924bb2d" code="Code" value="DIYABET_EGITIMI" />
(
SELECT 'EVET' AD,1 ID
UNION ALL
SELECT 'HAYIR' AD,2 ID

) TDIYABET_EGITIMI ON TDIYABET_EGITIMI.ID=USS215.DIYABET_EGITIMI
LEFT JOIN --<DIYABET_KOMPLIKASYONLARI version="1" codeSystemGuid="0d4c699c-06ca-4983-b3b5-617dd5def8e6" code="Code" value="DIYABET_KOMPLIKASYONLARI" />
(
SELECT 'ACANTHOSİS NİGRİCANS' AS AD, 1 AS ID
UNION ALL
SELECT 'KATARAKT', 10
UNION ALL
SELECT 'KORONER ARTER HASTALIĞI', 11
UNION ALL
SELECT 'LİPOATROFİ', 12
UNION ALL
SELECT 'LİPOHİPERTROFİ', 13
UNION ALL
SELECT 'MAKÜLA ÖDEMİ', 14
UNION ALL
SELECT 'NECROBİASİS LİPOİDİCO DİABETİCORUM', 15
UNION ALL
SELECT 'NON-PROLİFERATİF RETİNOPATİ', 16
UNION ALL
SELECT 'OTONOM NÖROPATİ', 17
UNION ALL
SELECT 'PERİFERİK ARTER HASTALIĞI', 18
UNION ALL
SELECT 'PERİFERİK POLİNÖROPATİ', 19
UNION ALL
SELECT 'DİYABETİK AYAK (AMPUTASYON)', 2
UNION ALL
SELECT 'PRE-PROLİFERATİF RETİNOPATİ', 20
UNION ALL
SELECT 'PROLİFERATİF RETİNOPATİ', 21
UNION ALL
SELECT 'SEREBROVASKÜLER HASTALIK', 22
UNION ALL
SELECT 'PERSISTAN MIKROALBUMINÜRI', 23
UNION ALL
SELECT 'DIYABETIK NEFROPATI', 24
UNION ALL
SELECT 'FOKAL NÖROPATI (MONONÖROPOATI-KARPAL TÜNEL GIBI)', 25
UNION ALL
SELECT 'MIKROANEVRIZMAHEMORAJI', 26
UNION ALL
SELECT 'SERT VE YUMUŞAK EKSUDA', 27
UNION ALL
SELECT 'İNTRA RETINAL MIKROVASKÜLER ANORMALLIKLER', 28
UNION ALL
SELECT 'DİYABETİK AYAK (KANGREN)', 3
UNION ALL
SELECT 'DİYABETİK AYAK (NASIR)', 4
UNION ALL
SELECT 'DİYABETİK AYAK (OSTEOMYELİT)', 5
UNION ALL
SELECT 'DİYABETİK AYAK (TIRNAK BATMASI)', 6
UNION ALL
SELECT 'DİYABETİK AYAK (YÜZEYSEL ÜLSER)', 7
UNION ALL
SELECT 'DİYABETİK DERMOPATİ', 8
UNION ALL
SELECT 'GLOKOM', 9
UNION ALL
SELECT 'YOK', 97
UNION ALL
SELECT 'DİĞER', 98
UNION ALL
SELECT 'BELİRTİLMEDİ', 99

) TDIYABET_KOMPLIKASYONLARI ON TDIYABET_KOMPLIKASYONLARI.ID=USS215.DIYABET_KOMPLIKASYONLARI



WHERE USS215.HMUAYENEID= @HMUAYENEID AND USS215.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',
										   '215' AS 'messageType/@code',
										   'Diyabet 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 
																  
																   --<DIYABET_EGITIMI version="1" codeSystemGuid="f007d4ed-302d-4b7a-897d-48240924bb2d" code="Code" value="DIYABET_EGITIMI" />
																		'1' AS 'DIYABET_EGITIMI/@version',
																		'f007d4ed-302d-4b7a-897d-48240924bb2d' AS 'DIYABET_EGITIMI/@codeSystemGuid',
																		ISNULL(DIYABET_EGITIMI_ID,'')AS 'DIYABET_EGITIMI/@code',
																		ISNULL(DIYABET_EGITIMI_ADI,'') AS 'DIYABET_EGITIMI/@value',
														 
																   --<DIYALIZ_TEDAVISINE_BASLAMA_TARIHI value="DIYALIZ_TEDAVISINE_BASLAMA_TARIHI" />
																   LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),ILK_TANI_TARIHI,120),' ',''),'-',''),':',''),12)	 AS 'ILK_TANI_TARIHI/@value',
																   (SELECT
																   -- <DIYABET_KOMPLIKASYONLARI version="1" codeSystemGuid="0d4c699c-06ca-4983-b3b5-617dd5def8e6" code="Code" value="DIYABET_KOMPLIKASYONLARI" />
																   '1' AS 'DIYABET_KOMPLIKASYONLARI/@version',
																		'0d4c699c-06ca-4983-b3b5-617dd5def8e6' AS 'DIYABET_KOMPLIKASYONLARI/@codeSystemGuid',
																		ISNULL(DIYABET_KOMPLIKASYONLARI_ID,'')AS 'DIYABET_KOMPLIKASYONLARI/@code',
																		ISNULL(DIYABET_KOMPLIKASYONLARI_ADI,'') AS 'DIYABET_KOMPLIKASYONLARI/@value'
																   FOR XML PATH('DIYABET_KOMPLIKASYONLARI_BILGISI'),TYPE
																   ),
																 (
																 SELECT 	
																	ISNULL(BOY,'') AS 'BOY/@value',
																	--ISNULL(KILO,'') AS 'KILO/@value'

																	CASE 
																			WHEN KILO IS NULL THEN NULL
																			ELSE REPLACE(STR(KILO, 6, 2), ' ', '')
																		END AS 'KILO/@value'

																
																FOR XML PATH('BOY_KILO_BILGILERI'),TYPE
															)

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