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

CREATE PROCEDURE [dbo].[SPUSS_252_KONSULTASYON_KAYIT] 
	@HDOSYAID INT=0,
	@HMUAYENEID INT = 0,
	@TUMUNUTEKRAR BIT = 0
AS
BEGIN
	--SPUSS_252_KONSULTASYON_KAYIT 3439378
	DECLARE @HATA NVARCHAR(2000) = ''
	DECLARE @MESAJ NVARCHAR(2000) = ''
	DECLARE @SAYIHATA BIT = 0
	DECLARE @XMLBASLIK NVARCHAR(2000) = ''
	DECLARE @SUBEID INT = 1
	DECLARE @ADET INT;
	DECLARE @GONDERIMTABLOSU TABLE 
		(
			GONDERILECEKXML XML,
			HATA NVARCHAR(2000),
			MESAJ NVARCHAR(2000),	
			XMLBASLIK NVARCHAR(3500),
			TABLOID INT,
			MINID INT,
			MAXID INT
		)

	IF OBJECT_ID('tempdb..#TMPKONSULTASYON') IS NOT NULL 
		DROP TABLE #TMPKONSULTASYON
	IF OBJECT_ID('tempdb..#TMPTANI') IS NOT NULL 
		DROP TABLE #TMPTANI
	IF OBJECT_ID('tempdb..#TMPMUAYENE') IS NOT NULL 
		DROP TABLE #TMPMUAYENE

	
	SELECT	DISTINCT 
			TICD.ICDKOD AS TICD_ICDKOD,
			TICD.ICDADI AS TICD_ICDADI,
			HDOSYAICD.ICDTURUID AS TICD_ICDTURUID
	INTO #TMPTANI
	FROM HDOSYAICD
		INNER JOIN TICD ON TICD.ICDKOD = HDOSYAICD.ICDKOD
	WHERE HDOSYAICD.HDOSYAID = @HDOSYAID 
		




	SELECT	DISTINCT  HMUAYENE.HMUAYENEID AS KONSULTASYON_HMUAYENEID,

			HESAPISL.HESAPISLID AS HESAPISL_HESAPISLID,
			CONVERT(VARCHAR,TDRKIMLIKISTEYEN.DRTCKIMLIKNO) AS KONSULTASYON_TALEBINI_YAPAN_HEKIM_KIMLIK_NUMARASI,
			CONVERT(VARCHAR,TDRKIMLIKUYGULAYAN.DRTCKIMLIKNO) AS KONSULTASYON_TALEBINE_CEVAP_VEREN_HEKIM_KIMLIK_NUMARASI,
			(SELECT COUNT(*) FROM #TMPTANI) AS ICD_SAYI,			
			HESAPISL.ITARIH AS KONSULTASYON_BASLANGIC_ZAMANI,
			DATEADD(MINUTE,15,HESAPISL.ITARIH) AS KONSULTASYON_BITIS_ZAMANI,					
			
			HESAPISL.ACIKLAMA AS KONSULTASYON_NOTU_ACIKLAMA
	INTO #TMPKONSULTASYON
	FROM HDOSYA WITH(NOLOCK)
	 INNER JOIN HMUAYENE WITH(NOLOCK) ON HMUAYENE.HDOSYAID = HDOSYA.HDOSYAID
	 LEFT JOIN HMUAYENEISL WITH(NOLOCK) ON HMUAYENEISL.HMUAYENEID = HMUAYENE.HMUAYENEID 
     LEFT JOIN HESAPISL WITH(NOLOCK) ON HESAPISL.HESAPISLID = HMUAYENEISL.HESAPISLID
	 LEFT JOIN HYATIS WITH(NOLOCK) ON HYATIS.HMUAYENEID = HMUAYENE.HMUAYENEID
	 LEFT JOIN HESAPISL HESAPISL2 WITH(NOLOCK) ON HESAPISL2.HESAPISLID = HYATIS.HESAPISLID
	 LEFT JOIN TDRKIMLIK TDRKIMLIKISTEYEN ON TDRKIMLIKISTEYEN.DRID = HESAPISL.ISTDRID 
	 LEFT JOIN TDRKIMLIK TDRKIMLIKUYGULAYAN ON TDRKIMLIKUYGULAYAN.DRID = HESAPISL.UYGDRID 

	
WHERE (ISNULL(HESAPISL.IPTAL,0) <> 1 AND ISNULL(HESAPISL2.IPTAL,0) <> 1) AND 
	  (ISNULL(HESAPISL.ONAYLI,1)=1 AND ISNULL(HESAPISL2.ONAYLI,1)=1) AND
	  (ISNULL(HESAPISL.TEKLIF,0) <> 1 AND ISNULL(HESAPISL2.TEKLIF,0) <> 1)
	 AND	HDOSYA.HDOSYAID =  @HDOSYAID
	 AND	(
				@HMUAYENEID=0
				OR 
				HMUAYENE.HMUAYENEID =@HMUAYENEID
			)
	AND (@TUMUNUTEKRAR=1 OR (@TUMUNUTEKRAR=0 AND 
	
	((HMUAYENEISL.SNKONGONDERILDI = 0 OR HMUAYENEISL.SNKONGONDERILDI IS NULL)
	OR
	(HYATIS.SNOMUAYENEGONDERILDI = 0 OR HYATIS.SNOMUAYENEGONDERILDI IS NULL)) 
	))
	
		
	SELECT DISTINCT 			HDOSYA.SUBEID AS HDOSYA_SUBEID,
			SUBELER.SUBEADI AS SUBELER_SUBEADI,			
			HDOSYA.SNOTAKIPNO AS HDOSYA_SNOTAKIPNO,
			HMUAYENE.HMUAYENEID AS HMUAYENE_HMUAYENEID,
			ISNULL((SELECT VALUESTR FROM CONFIG WHERE SECTIONSTR = 'Saglik-Net' AND PROGNAME = 'MEDISOFT' AND KEYNAME = CONVERT(VARCHAR, HDOSYA.SUBEID)+' numaralı şubenin kurum numarası'), '') AS KURUMKODU
	INTO #TMPMUAYENE
	FROM HDOSYA WITH(NOLOCK)
	 INNER JOIN HMUAYENE WITH(NOLOCK) ON HMUAYENE.HDOSYAID = HDOSYA.HDOSYAID
	 LEFT JOIN HMUAYENEISL WITH(NOLOCK) ON HMUAYENEISL.HMUAYENEID = HMUAYENE.HMUAYENEID 
	 INNER JOIN SUBELER WITH(NOLOCK) ON SUBELER.SUBEID = HDOSYA.SUBEID

	 WHERE 
	 	HDOSYA.HDOSYAID =  @HDOSYAID
	 AND	(
				@HMUAYENEID=0
				OR 
				HMUAYENE.HMUAYENEID =@HMUAYENEID
			)
	/*AND (@TUMUNUTEKRAR=1 OR (	@TUMUNUTEKRAR=0 AND 	
								(HMUAYENEISL.SNOMUAYENEGONDERILDI = 0 OR HMUAYENEISL.SNOMUAYENEGONDERILDI IS NULL)))*/
	AND HMUAYENE.HMUAYENEID IN (SELECT KONSULTASYON_HMUAYENEID FROM #TMPKONSULTASYON)
	
	
		
	IF (SELECT COUNT(*) FROM #TMPKONSULTASYON) = 0
	BEGIN
		SET @SAYIHATA = 1
		SET @MESAJ = @MESAJ + CONVERT(VARCHAR,@HDOSYAID)+' Dosyasına ait ussye göndeilecek muayene kaydı bulunamadı! '		
	END



	IF (SELECT COUNT(*) FROM #TMPTANI)=0
	BEGIN
		SET @HATA = @HATA + 'Muayene kaydı için tanı girişi yapılmamış! USS sistemine kayıt yapılamaz. '
	END

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

	IF (SELECT COUNT(*) FROM #TMPMUAYENE WHERE ISNULL(HDOSYA_SNOTAKIPNO,'')='') > 0 
		SET @HATA = @HATA + 'Sağlık Net hasta takip numarası alınmadan USS sistemine muayene yapılamaz. '

	IF @HATA='' and @SAYIHATA=0
	BEGIN		
		SELECT @SUBEID = HDOSYA_SUBEID FROM #TMPMUAYENE
		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 #TMPMUAYENE
		OPEN CURMUAYENE
		FETCH NEXT FROM CURMUAYENE INTO @CURMUAYENEID
		WHILE @@FETCH_STATUS =0
		BEGIN

				SET @HATA = ''
				SET @MESAJ = ''
				SET @SAYIHATA = 0






				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',
									'252' AS 'messageType/@code',
									'Konsültasyon 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',
											KURUMKODU AS 'healthcareProvider/@code',			    
											SUBELER_SUBEADI AS 'healthcareProvider/@value' FOR XML PATH('author'), TYPE
									),
	   
									'C740D0288ED4C45FE0407C0A04162BDD' AS 'firmaKodu/@value',
	   
									(/*p1*/
											
										 SELECT--RECORT DATA
											(--HASTA TAKIP BILGISI
												SELECT
													ISNULL(HDOSYA_SNOTAKIPNO,'') AS 'SYSTakipNo/@value'
												FOR XML PATH('HASTA_TAKIP_BILGISI'), TYPE
											),						
											(--HASTA KONSULTASYON BILGILERI  /*p2*/
													SELECT/*s1*/									
															
															(/*p3*/
																SELECT /*s2*/ 
																(/*p4*/ 
																SELECT
																    ( /*p5*/
																	SELECT	
	
																		ISNULL(HESAPISL_HESAPISLID,'') AS 'ISLEM_REFERANS_NUMARASI/@value',
																		ISNULL(LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),KONSULTASYON_BASLANGIC_ZAMANI,120),' ',''),'-',''),':',''),12),'') AS 'KONSULTASYON_BASLAMA_ZAMANI/@value',
																		ISNULL(LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),KONSULTASYON_BITIS_ZAMANI,120),' ',''),'-',''),':',''),12),'') AS 'KONSULTASYON_BITIS_ZAMANI/@value',
																		ISNULL(KONSULTASYON_TALEBINI_YAPAN_HEKIM_KIMLIK_NUMARASI,'') AS 'KONSULTASYON_TALEBINI_YAPAN_HEKIM_KIMLIK_NUMARASI/@value',
																		ISNULL(KONSULTASYON_TALEBINE_CEVAP_VEREN_HEKIM_KIMLIK_NUMARASI,'') AS 'KONSULTASYON_TALEBINE_CEVAP_VEREN_HEKIM_KIMLIK_NUMARASI/@value',
																		
																		(/*p5*/SELECT

																			CASE
																			WHEN ICD_SAYI>0
																			THEN
																					(
																						SELECT	'1' AS 'TANI_TURU/@version',
																								'55894edb-1a8c-4f7f-a447-0119e61c14f1' AS 'TANI_TURU/@codeSystemGuid',
																								ISNULL(CONVERT(VARCHAR(20), TICD_ICDTURUID), '') AS 'TANI_TURU/@code',
																								CASE TICD_ICDTURUID
																								WHEN 1 THEN 'ANA TANI' 
																								WHEN 2 THEN 'EK TANI' 
																								WHEN 3 THEN 'ÖN TANI'
																								ELSE '' 
																								END AS 'TANI_TURU/@value',

																								'1' AS 'ICD10/@version',
																								'c3eaabad-8c4c-56ee-e043-14031b0a5530' AS 'ICD10/@codeSystemGuid',
																								ISNULL(CONVERT(VARCHAR(20), TICD_ICDKOD), '') AS 'ICD10/@code',
																								ISNULL(TICD_ICDADI, '') AS 'ICD10/@value'
																						FROM #TMPTANI
																						FOR XML PATH('TANI_BILGISI'), TYPE
																					)
																			END)/*p5 end*/,

																		(SELECT
																		ISNULL(KONSULTASYON_NOTU_ACIKLAMA,'') AS 'KONSULTASYON_NOTU_BASLIK/@value',
																		ISNULL(KONSULTASYON_NOTU_ACIKLAMA,'') AS 'KONSULTASYON_NOTU_ACIKLAMA/@value'
																		FOR XML PATH('KONSULTASYON_NOTU_BILGISI'), TYPE)
																FROM #TMPKONSULTASYON
																WHERE #TMPKONSULTASYON.KONSULTASYON_HMUAYENEID = #TMPMUAYENE.HMUAYENE_HMUAYENEID
																FOR XML PATH('KONSULTASYON_BILGISI'), TYPE		
																		
																		
																		)/*p5 end*/ 
																 )/*p4 end*/ 
															)/*p3 end*/ FOR XML PATH('HASTA_KONSULTASYON_BILGILERI'), TYPE
												   /*s1 end*/)  /*p2 end*/ FOR XML PATH('recordData'), TYPE
									)/*p1 end*/
							FROM #TMPMUAYENE
							WHERE #TMPMUAYENE.HMUAYENE_HMUAYENEID = @CURMUAYENEID
											
							FOR XML PATH(''), ROOT('SYSMessage')

							) AS GONDERILECEKXML,
							@HATA AS HATA, 
							@MESAJ AS MESAJ,
							@XMLBASLIK AS XMLBASLIK,
							@CURMUAYENEID 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 ZAMANLAYICIHATALARI (HDOSYAID,ISLEMKODU,TABLOID,HATAVEREN,HATAKODU,HATA,MESAJ,OLUSTURULMAZAMANI)
						SELECT @HDOSYAID,'252',@CURMUAYENEID,'SP','',@HATA,@MESAJ,GETDATE()
			
						INSERT INTO @GONDERIMTABLOSU (GONDERILECEKXML,HATA,MESAJ,XMLBASLIK,TABLOID,MINID,MAXID)			
						SELECT	'' AS GONDERILECEKXML,
								@HATA AS HATA, 
								@MESAJ AS MESAJ,
								'' AS XMLBASLIK,
								@CURMUAYENEID AS TABLOID,
								0 AS MINID,
								0 AS MAXID
			

					END CATCH

				END
				ELSE
				BEGIN
					IF @HATA<>''
					INSERT INTO ZAMANLAYICIHATALARI (HDOSYAID,ISLEMKODU,TABLOID,HATAVEREN,HATAKODU,HATA,MESAJ,OLUSTURULMAZAMANI)
						SELECT @HDOSYAID,'252',@HMUAYENEID,'SP','',@HATA,@MESAJ,GETDATE()
		
					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

		FETCH NEXT FROM CURMUAYENE INTO @CURMUAYENEID
	END --son HER TETKIK KARTI AYRI AYRI GONDER DONGUSU


	

	CLOSE CURMUAYENE
	DEALLOCATE CURMUAYENE

	END
	ELSE
	BEGIN
		IF @HATA<>''
		INSERT INTO ZAMANLAYICIHATALARI (HDOSYAID,ISLEMKODU,TABLOID,HATAVEREN,HATAKODU,HATA,MESAJ,OLUSTURULMAZAMANI)
			SELECT @HDOSYAID,'252',@HMUAYENEID,'SP','',@HATA,@MESAJ,GETDATE()
		
		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..#TMPKONSULTASYON') IS NOT NULL 
		DROP TABLE #TMPKONSULTASYON
	IF OBJECT_ID('tempdb..#TMPTANI') IS NOT NULL 
		DROP TABLE #TMPTANI
	IF OBJECT_ID('tempdb..#TMPMUAYENE') IS NOT NULL 
		DROP TABLE #TMPMUAYENE

	SELECT * FROM @GONDERIMTABLOSU
	


END
GO


