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

CREATE PROCEDURE [dbo].[SPUSS_242_ENFEKSIYON_ETKENI_BILDIRIM] 
	@HDOSYAID INT=0,
	@HMUAYENEID INT=0,
	@TUMUNUTEKRAR BIT = 0	 
AS
BEGIN
	--SPUSS_242_ENFEKSIYON_ETKENI_BILDIRIM 3485844,3141764,1
	DECLARE @HATA NVARCHAR(2000) = ''
	DECLARE @MESAJ NVARCHAR(2000) = ''
	DECLARE @SAYIHATA BIT = 0
	DECLARE @XMLBASLIK NVARCHAR(2000) = ''
	DECLARE @SUBEID INT = 1
	DECLARE @ENFEKSIYONETKENBILDIRIMID INT = 0
	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..#TMPENFEKSIYONETKENI') IS NOT NULL 
		DROP TABLE #TMPENFEKSIYONETKENI

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

	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	ENFEKSIYONETKENBILDIRIMID,BILDIRIMTARIH BILDIRIM_TARIHI,TANITARIH TANI_TARIHI,
		TDRKIMLIK.DRTCKIMLIKNO HEKIM_KIMLIK_NUMARASI, TELEFONNO TELEFON_NUMARASI, TELEFONTIPIID TELEFON_TIPI,
		ADRESTIPID ADRES_TIPI,BUCAKID BUCAK_KODU,CSBM CSBM_KODU,DISKAPINO DIS_KAPI,ICKAPINO IC_KAPI,ENFEKSIYONETKENBILDIRIM.ILCEID ILCE_KODU,
		ENFEKSIYONETKENBILDIRIM.ILID IL_KODU,ENFEKSIYONETKENBILDIRIM.KOYID KOY_KODU,ENFEKSIYONETKENBILDIRIM.MAHALLEID MAHALLE_KODU,
		dbo.HDOSYA.SNOTAKIPNO SYSTakipNo,HDOSYA.HDOSYAID ,ENFEKSIYONETKENBILDIRIM.HMUAYENEID,
        --ENFEKSIYONETKENBILDIRIM.*,
       dbo.HMUAYENE.HMTARIH,  dbo.HMUAYENE.HMDRID, TDRKIMLIK.DRTCKIMLIKNO,TDRKIMLIK.DRADI
	INTO #TMPENFEKSIYONETKENI
	FROM ENFEKSIYONETKENBILDIRIM  WITH(NOLOCK) 
	INNER JOIN HKIMLIK WITH(NOLOCK)  ON HKIMLIK.HKIMLIKID=ENFEKSIYONETKENBILDIRIM.HKIMLIKID 
	INNER JOIN HMUAYENE  WITH(NOLOCK)  ON HMUAYENE.HMUAYENEID=ENFEKSIYONETKENBILDIRIM.HMUAYENEID
	INNER JOIN dbo.HDOSYA WITH(NOLOCK) ON dbo.HDOSYA.HDOSYAID = dbo.HMUAYENE.HDOSYAID
	INNER JOIN dbo.TDRKIMLIK WITH(NOLOCK) ON dbo.HMUAYENE.HMDRID = dbo.TDRKIMLIK.DRID     
	WHERE(dbo.HMUAYENE.IPTAL = 0)    AND HDOSYA.HDOSYAID=@HDOSYAID --and ENFEKSIYONETKENBILDIRIM.HMUAYENEID= @HMUAYENEID
	
	SELECT ENFEKSIYONETKENADI,ENFEKSYONETKENKODU,ENFEKSIYONETKENBILDIRIMDETAY.ENFEKSIYONETKENBILDIRIMID,HMUAYENEID
	INTO #TMPENFEKSIYONETKENIDETAY
	FROM ENFEKSIYONETKENBILDIRIMDETAY 
	INNER JOIN ENFEKSIYONETKENBILDIRIM  WITH(NOLOCK) ON ENFEKSIYONETKENBILDIRIM.ENFEKSIYONETKENBILDIRIMID=ENFEKSIYONETKENBILDIRIMDETAY.ENFEKSIYONETKENBILDIRIMID 
	INNER JOIN TSKRSENFEKSIYONETKENLERI ON EEKODU=ENFEKSYONETKENKODU WHERE ENFEKSIYONETKENBILDIRIMDETAY.ENFEKSIYONETKENBILDIRIMID IN (SELECT ENFEKSIYONETKENBILDIRIMID FROM #TMPENFEKSIYONETKENI)

			      
	IF (SELECT COUNT(*) FROM #TMPENFEKSIYONETKENI) = 0
	BEGIN
		SET @SAYIHATA = 1 
		SET @MESAJ = @MESAJ + 'Enfeksiyon etken bildirimi bulunmadı'
	END

	IF (SELECT COUNT(*) FROM #TMPENFEKSIYONETKENIDETAY) = 0
	BEGIN
		SET @SAYIHATA = 1 
		SET @MESAJ = @MESAJ + 'Enfeksiyon etken detay bulunmadı'
	END


	IF (SELECT COUNT(*) FROM #TMPDOSYA 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 Kuduz izlem kaydı yapılamaz. '

	IF @HATA='' AND @SAYIHATA=0
	BEGIN		
		SELECT @SUBEID = HDOSYA_SUBEID FROM #TMPDOSYA
		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-0a14fd364bb' AS 'messageType/@codeSystemGuid' ,
												'242' AS 'messageType/@code',
												'Enfeksiyon Etkeni Bildirim 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',
												  (

													 SELECT--RECORD DATA
														(
															SELECT
															   ISNULL(HDOSYA_SNOTAKIPNO,'') AS 'SYSTakipNo/@value'
															FOR XML PATH('HASTA_TAKIP_BILGISI'), TYPE
														),
														(																														
															SELECT --ENFEKSIYON_ETKENI_BILDIRIM
															ISNULL(BILDIRIM_TARIHI,GETDATE()) as 'BILDIRIM_TARIHI/@value' ,
															ISNULL(TANI_TARIHI,HMTARIH) AS 'TANI_TARIHI/@value' ,
																																													
															ISNULL(HEKIM_KIMLIK_NUMARASI,'') AS 'HEKIM_KIMLIK_NUMARASI/@value',

															(SELECT --TELEFON_BILGISI
																    TELEFON_NUMARASI AS 'TELEFON_NUMARASI/@value',
																	'1' AS 'TELEFON_TIPI/@version',													
																	'e387c902-9062-4406-85ef-63e085754f9e'  AS 'TELEFON_TIPI/@codeSystemGuid',
																	ISNULL(TELEFON_TIPI,0) AS 'TELEFON_TIPI/@code',
																	TELEFON_TIPI AS 'TELEFON_TIPI/@value'
																	FOR XML PATH('TELEFON_BILGISI'),TYPE),
                                                             
															    (SELECT --BILDIRIM_ADRES_BILGISI  --Seçimli
																ISNULL(BUCAK_KODU,'') AS 'BUCAK_KODU/@value',
																ISNULL(CSBM_KODU,'') AS 'CSBM_KODU/@value',
																ISNULL(DIS_KAPI,'') AS 'DIS_KAPI/@value',
																ISNULL(IC_KAPI,'') AS 'IC_KAPI/@value',

																'1' AS 'ILCE_KODU/@version', 														
																'96184a9e-537c-4a70-8b3a-27a7a170355b'  AS 'ILCE_KODU/@codeSystemGuid',
																ISNULL(ILCE_KODU,0) AS 'ILCE_KODU/@code',
																ILCE_KODU AS 'ILCE_KODU/@value',	

																'1' AS 'IL_KODU/@version',													
																'5bc508fa-782a-4d75-831f-34948e350e72'  AS 'IL_KODU/@codeSystemGuid',
																ISNULL(IL_KODU,0) AS 'IL_KODU/@code',
																IL_KODU AS 'IL_KODU/@value',

																ISNULL(KOY_KODU,0) AS 'KOY_KODU/@value',
																ISNULL(MAHALLE_KODU,0) AS 'MAHALLE_KODU/@value'
															    WHERE (IL_KODU IS NOT NULL) AND (ILCE_KODU IS NOT NULL)
																FOR XML PATH('BILDIRIM_ADRES_BILGISI'),TYPE),

																(SELECT --ENFEKSIYON_ETKEN_BILGILERI  														

																'1' AS 'ENFEKSIYON_ETKENI/@version', 														
																'39553bb6-8007-4efb-a862-d648073426db'  AS 'ENFEKSIYON_ETKENI/@codeSystemGuid',
																ISNULL(ENFEKSYONETKENKODU,0) AS 'ENFEKSIYON_ETKENI/@code',
																ENFEKSIYONETKENADI AS 'ENFEKSIYON_ETKENI/@value'	

																
																
																FROM #TMPENFEKSIYONETKENIDETAY WHERE HMUAYENEID=#TMPENFEKSIYONETKENI.HMUAYENEID
															    
																FOR XML PATH('ENFEKSIYON_ETKEN_BILGILERI'),TYPE)

																

										
															FROM #TMPENFEKSIYONETKENI
																	
															FOR XML PATH('ENFEKSIYON_ETKENI_BILDIRIM'), TYPE
														)
												  FOR XML PATH('recordData'), TYPE
											  )
	
										FROM #TMPDOSYA 

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

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

		SET @HATA = ''	 
	END


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

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


	SELECT * FROM @GONDERIMTABLOSU


END
GO


