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

CREATE PROCEDURE [dbo].[SPUSS_413_HEKIM_MESAJLASMA_KAYIT] 
	@HMUAYENEID INT=0,
	@TUMUNUTEKRAR BIT = 0,
	@TEKRAR BIT = 0
AS
BEGIN
   --'SPUSS_413_HEKIM_MESAJLASMA_KAYIT 115348,0,1'
	--SPUSS_413_HEKIM_MESAJLASMA_KAYIT 115287,0
	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..#TMPUSS413') IS NOT NULL 
	DROP TABLE #TMPUSS413
    

	SELECT 
	VWMUAYENE.ITARIH AS MESAJ_TARIHI,
	USS_413_HEKIM_MESAJLASMA.HEKIMMESAJ AS MESAJ_DETAYI,
	VWMUAYENE.DRTCKIMLIKNO AS HEKIM_KIMLIK_NUMARASI,
	
	SUBSTRING(
		 CASE WHEN LEN(REPLACE(CASE WHEN ISNULL(DBO.[FN_OzelKarekterleriTemizle](TEL,0),'')<>'' THEN DBO.[FN_OzelKarekterleriTemizle](TEL,0) ELSE TEL END,' ',''))>10  THEN
          
				  CASE WHEN  LEFT(REPLACE(CASE WHEN ISNULL(DBO.[FN_OzelKarekterleriTemizle](TEL,0),'')<>'' THEN DBO.[FN_OzelKarekterleriTemizle](TEL,0) ELSE TEL END,' ',''),1)='0' THEN
				   SUBSTRING(REPLACE(CASE WHEN ISNULL(DBO.[FN_OzelKarekterleriTemizle](TEL,0),'')<>'' THEN DBO.[FN_OzelKarekterleriTemizle](TEL,0) ELSE TEL END,' ',''),
							 2,LEN(REPLACE(CASE WHEN ISNULL(DBO.[FN_OzelKarekterleriTemizle](TEL,0),'')<>'' THEN DBO.[FN_OzelKarekterleriTemizle](TEL,0) ELSE TEL END,' ',''))+2)
				  ELSE
					SUBSTRING(REPLACE(CASE WHEN ISNULL(DBO.[FN_OzelKarekterleriTemizle](TEL,0),'')<>'' THEN DBO.[FN_OzelKarekterleriTemizle](TEL,0) ELSE TEL END,' ',''),
							 1,11) END

		  ELSE
				REPLACE(CASE WHEN ISNULL(DBO.[FN_OzelKarekterleriTemizle](TEL,0),'')<>'' THEN DBO.[FN_OzelKarekterleriTemizle](TEL,0) ELSE TEL END,' ','')
			END
			,1,10) AS	 HEKIM_TELEFON_NUMARASI,

    /*AİLE HEKİMLERİ DOLDURACAĞI İÇİN BOŞ BIRAKILDI*/
	'' AS MHRS_TALEP_NUMARASI,
	'' AS MHRS_RANDEVU_NUMARASI,
	'' AS YONLENDIRME_KLINIK_KODU,
	'' AS YONLENDIRME_KLINIK_ADI ,
	--TKLINIKIST.KLINIKKODU AS YONLENDIRME_KLINIK_KODU,
	--TKLINIKIST.KLINIKADI  AS YONLENDIRME_KLINIK_ADI ,
	USS_413_HEKIM_MESAJLASMA.TIBBIPERSONELKODU AS  TIBBI_MESAJ_PERSONEL_KODU,
	VWMUAYENE.SNOTAKIPNO AS HDOSYA_SNOTAKIPNO,

	VWMUAYENE.SUBEID AS HDOSYA_SUBEID,
	SUBELER.SUBEADI AS SUBELER_SUBEADI,
	
	VWMUAYENE.HMUAYENEID AS  HMUAYENE_HMUAYENEID,
	
	
	
	ISNULL((SELECT TOP 1 VALUESTR FROM CONFIG WITH(NOLOCK) WHERE SECTIONSTR='Saglik-Net' AND PROGNAME='MEDISOFT' AND KEYNAME= CONVERT(VARCHAR,VWMUAYENE.SUBEID)+' numaralı şubenin kurum numarası'),'') AS SAGLIKNETKURUMKODU
	
	INTO #TMPUSS413
	
	FROM VWMUAYENE WITH(NOLOCK)
	INNER JOIN USS_413_HEKIM_MESAJLASMA WITH(NOLOCK) ON USS_413_HEKIM_MESAJLASMA.HMUAYENEID = VWMUAYENE.HMUAYENEID   
	LEFT JOIN SUBELER WITH(NOLOCK) ON SUBELER.SUBEID = VWMUAYENE.SUBEID
	LEFT JOIN TBOLUM TBOLUMIST WITH(NOLOCK) ON VWMUAYENE.ISTBOLUMID = TBOLUMIST.BOLUMID    
    LEFT JOIN TKLINIK TKLINIKIST WITH(NOLOCK) ON TBOLUMIST.KLINIKKODU = TKLINIKIST.KLINIKKODU 


	WHERE  VWMUAYENE.HMUAYENEID = @HMUAYENEID
	  AND (@TUMUNUTEKRAR=1 OR @TUMUNUTEKRAR=0)



	IF (SELECT COUNT(*) FROM #TMPUSS413) = 0 
	BEGIN
		SET @SAYIHATA=1
		SET @MESAJ= @MESAJ + 'Muayene ait uss 413 mesaj kaydı bulunamadı! '
	END

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

	IF (SELECT HDOSYA_SUBEID FROM #TMPUSS413 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 #TMPUSS413
		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 @CURMUAYENEID INT
		--DECLARE CURMUAYENE CURSOR FOR SELECT HMUAYENE_HMUAYENEID FROM #TMPUSS413
		--OPEN CURMUAYENE
		--FETCH NEXT FROM CURMUAYENE INTO @CURMUAYENEID
		--WHILE @@FETCH_STATUS =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',
							   '413' as 'messageType/@code',
							   'Hekim Mesajlasma 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 
											(
												SELECT
													ISNULL(HDOSYA_SNOTAKIPNO,'') AS 'SYSTakipNo/@value'
												FOR XML PATH('HASTA_TAKIP_BILGISI'), TYPE
											),
											/***/	
												(
													SELECT 
														ISNULL(replace(convert(varchar(8), MESAJ_TARIHI, 112)+convert(varchar(8), MESAJ_TARIHI, 114), ':',''),'')AS 'MESAJ_TARIHI/@value',													
														ISNULL(MESAJ_DETAYI,'')AS 'MESAJ_DETAYI/@value',
														ISNULL(HEKIM_KIMLIK_NUMARASI,'')AS 'HEKIM_KIMLIK_NUMARASI/@value',  
														ISNULL(MHRS_RANDEVU_NUMARASI,'')AS 'MHRS_RANDEVU_NUMARASI/@value', 											
														ISNULL(HEKIM_TELEFON_NUMARASI ,'')AS 'HEKIM_TELEFON_NUMARASI/@value', 
														ISNULL(MHRS_TALEP_NUMARASI ,'')AS 'MHRS_TALEP_NUMARASI/@value', 														
														'1' AS 'TIBBI_MESAJ_PERSONEL_KODU/@version',
														'9e625677-cd55-4b69-9b1f-008db366c617' AS 'TIBBI_MESAJ_PERSONEL_KODU/@codeSystemGuid',
														ISNULL(TIBBI_MESAJ_PERSONEL_KODU,'') AS 'TIBBI_MESAJ_PERSONEL_KODU/@code',
														(SELECT  CASE ISNULL(TIBBI_MESAJ_PERSONEL_KODU,'') 
																WHEN '1' THEN 'AİLE HEKİMİ'
																WHEN '2' THEN 'HASTANE HEKİMİ'
																WHEN '3' THEN 'SAĞLIKLI HAYAT MERKEZİ' END)  AS 'TIBBI_MESAJ_PERSONEL_KODU/@value'
															
													
									     
													FOR XML PATH('HEKIM_MESAJI_VERI_SETI'),TYPE

											 )
										/***/
											  FOR XML PATH('recordData'), TYPE
										)
		   
				      FROM #TMPUSS413
				   WHERE HMUAYENE_HMUAYENEID = HMUAYENE_HMUAYENEID

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

					END CATCH
				



		--FETCH NEXT FROM CURMUAYENE INTO @CURMUAYENEID 
		--END -- CURYATIS son
	

		--CLOSE CURMUAYENE
		--DEALLOCATE CURMUAYENE

	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..##TMPUSS413') IS NOT NULL 
			DROP TABLE #TMPUSS413

	SELECT * FROM @goNDERIMTABLOSU

END
