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

CREATE PROCEDURE [dbo].[SPUSS_106106_AYAKTAN_CIKIS_KAYIT] 
	@HDOSYAID INT=0,
    @HYATISID INT=0,
	@TUMUNUTEKRAR BIT = 0	 	 
AS
BEGIN
	--SPUSS_106106_AYAKTAN_CIKIS_KAYIT 165792,0,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..#TMPHCIKIS') IS NOT NULL 
	DROP TABLE #TMPHCIKIS

		SELECT HDOSYA.SUBEID AS HDOSYA_SUBEID
			,SUBELER.SUBEADI AS SUBELER_SUBEADI
			,HDOSYA.SNOTAKIPNO AS HDOSYA_SNOTAKIPNO
			,HDOSYA.HDOSYAID AS HDOSYA_HDOSYAID
			--,DATEADD(MINUTE, 120, MAX(HESAPISL.ITARIH)) AS HDOSYA_GSSCIKISTARIHI

		,ISNULL(CASE WHEN  HDOSYA.GSSTABURCUKODU<>10 AND HDOSYA.MDLTEDAVITURU = 'A' AND ISNULL(HDOSYA.GSSCIKISTARIHI,'')='' THEN DATEADD(MINUTE, 15, MAX(HESAPISL.ITARIH)) 
				        WHEN  HDOSYA.GSSTABURCUKODU<>10 AND HDOSYA.MDLTEDAVITURU = 'G' AND ISNULL(HDOSYA.GSSCIKISTARIHI,'')='' THEN DATEADD(HOUR  , 6 , MAX(HESAPISL.ITARIH))
				        WHEN  HDOSYA.GSSTABURCUKODU<>10 AND HDOSYA.MDLTEDAVITURU = 'Y' AND ISNULL(HDOSYA.GSSCIKISTARIHI,'')='' THEN DATEADD(HOUR  , 24, MAX(HESAPISL.ITARIH)) 
				        WHEN  HDOSYA.GSSTABURCUKODU=10  THEN HDOSYA.GSSCIKISTARIHI
				 ELSE 
				    DATEADD(MINUTE, 15, 
				           DATEADD(SECOND, DATEDIFF(SECOND, 0, CAST(MAX(HESAPISL.ITARIH) AS TIME)), CAST(HDOSYA.GSSCIKISTARIHI AS DATETIME))
						   ) END, DATEADD(HOUR,3,HDOSYA.HDTARIH)) HDOSYA_GSSCIKISTARIHI

	    ,ISNULL((SELECT TOP 1 VALUESTR FROM CONFIG WITH(NOLOCK) WHERE SECTIONSTR=N'Saglik-Net' AND PROGNAME=N'MEDISOFT' AND KEYNAME= CONVERT(VARCHAR,HDOSYA.SUBEID)+N' 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=N'Saglik-Net' AND PROGNAME=N'MEDISOFT' AND /* VALUESTR='1' AND*/ KEYNAME LIKE CONVERT(VARCHAR,HDOSYA.SUBEID)+N' 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=N'Saglik-Net' AND PROGNAME=N'MEDISOFT' AND KEYNAME= CONVERT(VARCHAR,HDOSYA.SUBEID)+N' numaralı şubenin kurum numarası'),'') 
		END AS SAGLIKNETKURUMKODU,

		 CASE WHEN (SELECT TOP 1 VALUESTR FROM CONFIG WITH(NOLOCK) WHERE SECTIONSTR=N'Saglik-Net' AND PROGNAME=N'MEDISOFT' AND /* VALUESTR='1' AND*/ KEYNAME LIKE CONVERT(VARCHAR,HDOSYA.SUBEID)+N' 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=N'Saglik-Net' AND PROGNAME=N'MEDISOFT' AND KEYNAME= CONVERT(VARCHAR,HDOSYA.SUBEID)+N' numarali subede Hasta kayıt gönderiminde referans no ön Karakteri'),'') AS REFNOONEK

		INTO #TMPHCIKIS
		FROM HESAPISL WITH (NOLOCK)
		LEFT JOIN HDOSYA WITH (NOLOCK) ON HDOSYA.HDOSYAID = HESAPISL.HDOSYAID
		LEFT JOIN SUBELER WITH (NOLOCK) ON SUBELER.SUBEID = HDOSYA.SUBEID
		WHERE --HESAPISL.IPTAL = 0 
			--AND HESAPISL.ONAYLI = 1
			--AND HESAPISL.TEKLIF = 0
			--AND HESAPISL.SNKAYDET = 1
			 HDOSYA.HDIPTAL = 0
			AND HDOSYA.HDOSYAID = @HDOSYAID
			AND (
				@TUMUNUTEKRAR = 1
				OR @TUMUNUTEKRAR = 0
				)
		GROUP BY HDOSYA.SUBEID
			,SUBELER.SUBEADI
			,HDOSYA.SNOTAKIPNO
			,HDOSYA.HDOSYAID
			,HDOSYA.GSSCIKISTARIHI
			,HDOSYA.MDLTEDAVITURU
			,HDOSYA.HDTARIH
			,HDOSYA.GSSTABURCUKODU



	IF (SELECT COUNT(*) FROM #TMPHCIKIS) = 0 
	BEGIN
		SET @SAYIHATA=1
		SET @MESAJ= @MESAJ + 'Dosyaya ait yatış kaydı bulunamadı! '
	END

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

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


	IF @HATA='' AND @SAYIHATA=0
	BEGIN		
		SELECT @SUBEID = HDOSYA_SUBEID FROM #TMPHCIKIS
		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



			
					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',
							   '106' as 'messageType/@code',
							   'Çıkış Bilgisi Kayıt' 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
													ISNULL(HDOSYA_SNOTAKIPNO,'') AS 'SYSTakipNo/@value'
												FOR XML PATH('HASTA_TAKIP_BILGISI'), TYPE
											),
											
											(
												SELECT 
													replace(convert(varchar(8), HDOSYA_GSSCIKISTARIHI, 112) + convert(varchar(8), HDOSYA_GSSCIKISTARIHI, 114), ':','') AS 'CIKIS_ZAMANI/@value',
													
													'1' AS 'CIKIS_SEKLI/@version',
													'e8fba324-ae10-49a9-9178-e2c5ad0b57e9' AS 'CIKIS_SEKLI/@codeSystemGuid',
													8 AS 'CIKIS_SEKLI/@code',
													N'HALİYLE ÇIKIŞ/TABURCU' AS 'CIKIS_SEKLI/@value'	,

													
													'HAYIR' AS 'EVDE_SAGLIK_HIZMETI_IHTIYAC_DURUMU/@value',
													'1' AS 'EVDE_SAGLIK_HIZMETI_IHTIYAC_DURUMU/@version',
													'c9d56fee-d143-4602-ad7b-ba131ef92ad9' AS 'EVDE_SAGLIK_HIZMETI_IHTIYAC_DURUMU/@codeSystemGuid',
													2 AS 'EVDE_SAGLIK_HIZMETI_IHTIYAC_DURUMU/@code'

											

											
												FOR XML PATH('HASTA_CIKIS_BILGILERI'),TYPE
										)
						
											FOR XML PATH('recordData'), TYPE)
		   
				FROM #TMPHCIKIS
				

				FOR XML PATH(''), ROOT('SYSMessage')
	
	
							) AS goNDERILECEKXML,
							@HATA AS HATA, 
							@MESAJ AS MESAJ,
							@XMLBASLIK AS XMLBASLIK,
							@HDOSYAID 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,
								@HDOSYAID 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,
				@HDOSYAID AS TABLOID,
				0 AS MINID,
				0 AS MAXID

		SET @HATA = ''			 
	

   END

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

	SELECT * FROM @goNDERIMTABLOSU
  
END
