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

CREATE PROCEDURE [dbo].[SPUSS_304_NAKIL_IPTAL] 
	@HDOSYAID INT=0,
	@HNAKILBILGILERIID INT=0,
	@TUMUNUTEKRAR BIT = 0	 
AS
BEGIN
	--SPUSS_304_NAKIL_IPTAL 3439329,54659290,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..#TMPDOSYA') IS NOT NULL 
		--DROP TABLE #TMPDOSYA
	IF OBJECT_ID('tempdb..#TMPHNAKILIPTAL') IS NOT NULL 
		DROP TABLE #TMPHNAKILIPTAL


	/*SELECT 
		HDOSYA.SUBEID AS HDOSYA_SUBEID,
		SUBELER.SUBEADI AS SUBELER_SUBEADI,
		HDOSYA.SNOTAKIPNO AS HDOSYA_SNOTAKIPNO,		
		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				
	INTO #TMPDOSYA
	FROM
		HDOSYA WITH(NOLOCK)
		LEFT JOIN SUBELER WITH(NOLOCK) ON SUBELER.SUBEID = HDOSYA.SUBEID
	WHERE
		HDOSYA.HDOSYAID = @HDOSYAID		*/
		

	SELECT
			HDOSYA.SUBEID AS HDOSYA_SUBEID,
			SUBELER.SUBEADI AS SUBELER_SUBEADI,
			HDOSYA.SNOTAKIPNO AS HDOSYA_SNOTAKIPNO,		
			--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='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,

		    HNAKILBILGILERI.HNAKILBILGILERIID AS HNAKILBILGILERI_HNAKILBILGILERIID,			
		    HNAKILBILGILERI.NAKILIPTALNEDENI AS HNAKILBILGILERI_NAKILIPTALNEDENI,
			HNAKILSNOTAKIPNO AS HNAKILSNOTAKIPNO	
	INTO #TMPHNAKILIPTAL
	FROM		HDOSYA
	INNER JOIN	HNAKILBILGILERI ON HNAKILBILGILERI.HDOSYAID = HDOSYA.HDOSYAID
	LEFT JOIN SUBELER WITH(NOLOCK) ON SUBELER.SUBEID = HDOSYA.SUBEID
	WHERE HDOSYA.HDOSYAID = @HDOSYAID AND HNAKILBILGILERIID= @HNAKILBILGILERIID
	

			      
	IF (SELECT COUNT(*) FROM #TMPHNAKILIPTAL) = 0
	BEGIN
		SET @SAYIHATA = 1 
		SET @MESAJ = @MESAJ + 'Silinecek nakil bulunmadı'
	END

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

	--IF (SELECT HDOSYA_SUBEID FROM #TMPDOSYA WHERE ISNULL(HDOSYA_SNOTAKIPNO,'')='') > 0 
		--SET @HATA = @HATA + 'Sağlık Net hasta takip numarası alınmadan USS sistemine nakil silme yapılamaz. '

	IF @HATA='' AND @SAYIHATA=0
	BEGIN		
		SELECT @SUBEID = HDOSYA_SUBEID FROM #TMPHNAKILIPTAL
		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+HATA, @MESAJ=@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',
												'0a9ba485-e7e0-4abb-9c86-0a14fd364bb8' AS 'messageType/@codeSystemGuid' ,
												'304' AS 'messageType/@code',
												'Hasta Nakil Iptal' 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--RECORT DATA
														(
															SELECT
															   ISNULL(HNAKILSNOTAKIPNO,'') AS 'SYSTakipNo/@value'
															FOR XML PATH('HASTA_TAKIP_BILGISI'), TYPE
														),
														(
															SELECT
																	(															
																		SELECT
																		   ISNULL(HNAKILBILGILERI_HNAKILBILGILERIID,'') AS 'NAKIL_REFERANS_NUMARASI/@value',
                                                                           '1' AS 'NAKIL_IPTAL_NEDENI/@version',
											                               '6ee6c762-cdbf-4b7e-a8e1-169721751f38' AS 'NAKIL_IPTAL_NEDENI/@codeSystemGuid',
											                               ISNULL(HNAKILBILGILERI_NAKILIPTALNEDENI,0) AS 'NAKIL_IPTAL_NEDENI/@code',
											                               (CASE HNAKILBILGILERI_NAKILIPTALNEDENI 
																			WHEN 1 THEN 'SEVK NEDENİNİN ORTADAN KALKMASI'
																			WHEN 2 THEN 'HASTANIN İYİLEŞMESİ'
																			WHEN 3 THEN 'HASTANIN EX OLMASI'
																			ELSE 'HASTA İSTEĞİ' END) AS 'NAKIL_IPTAL_NEDENI/@value'
																		
																		FOR XML PATH('IPTAL_EDILECEK_NAKIL'), TYPE 
																	)
															FOR XML PATH('IPTAL_EDILECEK_NAKIL_BILGISI'), TYPE
														)
												  FOR XML PATH('recordData'), TYPE
											  )
	
										FROM #TMPHNAKILIPTAL

										FOR XML PATH (''), ROOT('SYSMessage')

									) AS GONDERILECEKXML,
									@HATA AS HATA, 
									@MESAJ AS MESAJ,
									@XMLBASLIK AS XMLBASLIK,
									@HNAKILBILGILERIID AS TABLOID,
									'' AS MINID,
									'' 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,
										@HNAKILBILGILERIID 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,
				@HNAKILBILGILERIID AS TABLOID,
				0 AS MINID,
				0 AS MAXID	

		SET @HATA = ''	 
	END


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

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


	SELECT * FROM @GONDERIMTABLOSU


END
