


ALTER PROCEDURE [dbo].[SPUSS_700_ISLEM_BILDIR] 
	@HDOSYAID INT=0,
	@HESAPISLID INT=0,
	@TUMUNUTEKRAR BIT = 0
AS
BEGIN
	--SPUSS_700_ISLEM_BILDIR 3465420,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..#TMPISLEMBILDIR') IS NOT NULL 
		DROP TABLE #TMPISLEMBILDIR

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

	SELECT	   SUBELER.SUBEADI AS SUBELER_SUBEADI,			
			   HDOSYA.SUBEID AS HDOSYA_SUBEID,
			   HDOSYA.SNOTAKIPNO AS HDOSYA_SNOTAKIPNO,
			   HDOSYA.MDLTAKIPVAR AS HDOSYA_MDLTAKIPVAR,			   	   
			   HDOSYA.MDLTAKIPNO AS HDOSYA_MDLTAKIPNO,
			   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='E-Nabız' AND PROGNAME='MEDISOFT' AND KEYNAME= 'E-nabız SGK Bildirim ID'),'2') AS ENABIZSGKBILDIRIMID
		INTO #TMPISLEMDOSYA
		FROM HDOSYA WITH(NOLOCK)
			 LEFT JOIN SUBELER WITH(NOLOCK) ON SUBELER.SUBEID = HDOSYA.SUBEID
		WHERE   
			  HDOSYA.HDOSYAID = @HDOSYAID



		SELECT HESAPISL.HESAPISLID AS HESAPISL_HESAPISLID			   		
		INTO #TMPISLEMBILDIR
		FROM HESAPISL
			 INNER JOIN TITEM WITH(NOLOCK) ON HESAPISL.ITEMID = TITEM.ITEMID			 
			 LEFT JOIN HMUAYENEISL WITH(NOLOCK) ON HESAPISL.HESAPISLID = HMUAYENEISL.HESAPISLID    
			 LEFT JOIN HMUAYENE WITH(NOLOCK) ON HMUAYENEISL.HMUAYENEID = HMUAYENE.HMUAYENEID    
			 LEFT JOIN HTETKIK WITH(NOLOCK) ON HESAPISL.HESAPISLID = HTETKIK.HESAPISLID    
			 LEFT JOIN HMALZILAC WITH(NOLOCK) ON HESAPISL.HESAPISLID = HMALZILAC.HESAPISLID    
			 LEFT JOIN HUYGISLEM WITH(NOLOCK) ON HESAPISL.HESAPISLID = HUYGISLEM.HESAPISLID    
			 LEFT JOIN HYATIS WITH(NOLOCK) ON HESAPISL.HESAPISLID = HYATIS.HESAPISLID    
			 LEFT JOIN HAMELIYAT WITH(NOLOCK) ON HESAPISL.HESAPISLID = HAMELIYAT.HESAPISLID			 
		WHERE HESAPISL.IPTAL = 0    
		  AND HESAPISL.ONAYLI = 1    
		  AND HESAPISL.TEKLIF = 0    
		  AND HESAPISL.SNKAYDET = 1
		  AND CASE TABLOTIPI    
				  WHEN 0    
				  THEN HMUAYENEISL.DURUM    
				  WHEN 1    
				  THEN HTETKIK.DURUM    
				  WHEN 2    
				  THEN HMALZILAC.DURUM    
				  WHEN 3    
				  THEN HUYGISLEM.DURUM    
				  WHEN 4    
				  THEN HYATIS.DURUM    
				  WHEN 5    
				  THEN HAMELIYAT.DURUM    
			  END < 3    
		  AND HESAPISL.HDOSYAID = @HDOSYAID
		  AND (@HESAPISLID=0 OR HESAPISL.HESAPISLID = @HESAPISLID)
		  AND (@TUMUNUTEKRAR=1 OR (@TUMUNUTEKRAR=0 AND ISNULL(HESAPISL.ENABIZISLEMBILDIRIM,0)=0))
		ORDER BY HESAPISL.HESAPISLID



	IF (SELECT COUNT(*) FROM #TMPISLEMBILDIR) = 0
	BEGIN
		SET @SAYIHATA = 1
		SET @MESAJ = @MESAJ + '700 işlem bildir için işlem kaydı bulunamadı! '
	END



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


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

		DECLARE @HIZMETSAYI INT = (SELECT COUNT(HESAPISL_HESAPISLID) FROM #TMPISLEMBILDIR)
		DECLARE @HIZMETDONUSSAYISI INT = CEILING(@HIZMETSAYI*1.0/100)
		DECLARE @MINHESAPISLID INT = 0
		DECLARE @MAXHESAPISLID INT = 0
	


		WHILE @HIZMETDONUSSAYISI>0
		BEGIN
			SET @HIZMETDONUSSAYISI = @HIZMETDONUSSAYISI - 1

			IF OBJECT_ID('tempdb..#TMPISLEM') IS NOT NULL 
				DROP TABLE #TMPISLEM
		
			SELECT TOP 100 * INTO #TMPISLEM FROM #TMPISLEMBILDIR WHERE HESAPISL_HESAPISLID>@MAXHESAPISLID  ORDER BY HESAPISL_HESAPISLID
			SET @MINHESAPISLID = (SELECT MIN(HESAPISL_HESAPISLID) FROM #TMPISLEM)	
			SET @MAXHESAPISLID = (SELECT MAX(HESAPISL_HESAPISLID) FROM #TMPISLEM)	


	

					BEGIN TRY
						INSERT INTO @GONDERIMTABLOSU (GONDERILECEKXML,HATA,MESAJ,XMLBASLIK,TABLOID,MINID,MAXID) 
						SELECT							 
							(
								SELECT 
									NEWID() as 'messageGuid/@value',
									'1' as 'messageType/@version',
									'918e32b3-04eb-4444-b721-e979fcee8c60' as 'messageType/@codeSystemGuid',
									'700' as 'messageType/@code',
									'SGK ISLEM BILDIR' 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',
											(
											
														SELECT 
																(
																	SELECT
																		ISNULL(HDOSYA_SNOTAKIPNO,'') AS 'SYSTakipNo/@value'
																	FOR XML PATH('HASTA_TAKIP_BILGISI'), TYPE
																),

																(
																
																	SELECT 
																			(
																				SELECT 
																					HESAPISL_HESAPISLID as 'ISLEM_REFERANS_NUMARASI/@value',
																					ISNULL(HDOSYA_MDLTAKIPNO,'') as 'SGK_TAKIP_NUMARASI/@value',
																					HESAPISL_HESAPISLID as 'SGK_HIZMET_REFERANS_NUMARASI/@value',
																					(CASE HDOSYA_MDLTAKIPVAR
																						WHEN 1 THEN (CASE WHEN ENABIZSGKBILDIRIMID='' THEN '2' ELSE ENABIZSGKBILDIRIMID END)
																						ELSE '0'
																						END) AS 'SGK_BILDIRIM/@value'
																				FROM #TMPISLEM									     
																				FOR XML PATH('BILDIRILECEK_ISLEM'),TYPE
																			)
																	 FOR XML PATH('SGK_ISLEM_BILDIR'),TYPE
																)															
													FOR XML PATH('recordData'), TYPE
										)
		   
				FROM #TMPISLEMDOSYA

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

					END CATCH
				


		END --DONGU SON

	END
	ELSE
	BEGIN
		
		INSERT INTO @GONDERIMTABLOSU (GONDERILECEKXML,HATA,MESAJ,XMLBASLIK,TABLOID,MINID,MAXID)
		SELECT	'' AS GONDERILECEKXML,
				@HATA AS HATA, 
				@MESAJ AS MESAJ,
				'' AS XMLBASLIK,	
				@HESAPISLID AS TABLOID,
				0 AS MINID,
				0 AS MAXID		 
	END

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

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


	SELECT * FROM @GONDERIMTABLOSU


END
