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

CREATE PROCEDURE [dbo].[SPUSS_101_HASTA_KAYIT] 
	@HDOSYAID INT=0,
	@DOSYAID INT=0,
	@TUMUNUTEKRAR BIT = 0		 
AS
BEGIN
	--SPUSS_101_HASTA_KAYIT 3465420,0,1
	DECLARE @HATA NVARCHAR(2000) = ''
	DECLARE @SAYIHATA BIT = 0
	DECLARE @MESAJ NVARCHAR(2000) = ''
	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..#TMPDOSYA') IS NOT NULL 
		DROP TABLE #TMPDOSYA


		SELECT
		SUBELER.SUBEID AS SUBELER_SUBEID,
		SUBELER.SUBEADI AS SUBELER_SUBEADI,

		HKIMLIK.HKIMLIKID AS HKIMLIK_HKIMLIKID,
		HKIMLIK.HCINSIYETI AS HKIMLIK_HCINSIYETI, 
		HKIMLIK.HDTARIHI AS HKIMLIK_HDTARIHI,
		HKIMLIK.ULKEMERNISKODU AS HKIMLIK_ULKEMERNISKODU,
		HKIMLIK.HTCKIMLIKNO AS HKIMLIK_HTCKIMLIKNO,
		HKIMLIK.ANNETCKIMLIKNO AS HKIMLIK_ANNETCKIMLIKNO,
		HKIMLIK.DOGUMSIRANO AS HKIMLIK_DOGUMSIRANO,
		HKIMLIK.HADI AS HKIMLIK_HADI,
		HKIMLIK.HSOYADI AS HKIMLIK_HSOYADI,
		HKIMLIK.HPASAPORT AS HKIMLIK_HPASAPORT,
		HKIMLIK.YUPASNO AS HKIMLIK_YUPASNO,
		HKIMLIK.BABATCKIMLIKNO AS HKIMLIK_BABATCKIMLIKNO,
		   
		HDOSYA.HDOSYAID AS HDOSYA_HDOSYAID,
		HDOSYA.ACKKMTAKIPNO AS HDOSYA_ACKKMTAKIPNO, 
		HDOSYA.MDLTAKIPNO AS HDOSYA_MDLTAKIPNO, 
		HDOSYA.HDTARIH AS HDOSYA_HDTARIH,
		HDOSYA.SGDURUMID AS HDOSYA_SGDURUMID,  
		HDOSYA.GSSPROVTIPI AS HDOSYA_GSSPROVTIPI,
		HDOSYA.HDTRIYAJID AS HDOSYA_HDTRIYAJID, 
		HDOSYA.SNOTAKIPNO AS HDOSYA_SNOTAKIPNO,
		HDOSYA.HDYATIYOR AS HDOSYA_HDYATIYOR,
		HDOSYA.MDLTEDAVITURU AS HDOSYA_MDLTEDAVITURU,
		HDOSYA.SNOYAPILMAMAONAYLI AS HDOSYA_SNOYAPILMAMAONAYLI,
		HDOSYA.ALICITCKIMLIKNO AS HDOSYA_ALICITCKIMLIKNO,

		TSGDURUM.SGDURUMADI AS TSGDURUM_SGDURUMADI,

		HESAPISL.HESAPISLID AS HESAPISL_HESAPISLID,
		HESAPISL.ITARIH AS HESAPISL_ITARIH,

		TBOLUM.KLINIKKODU AS TBOLUM_KLINIKKODU,
		UYGTKLINIK.KLINIKADI AS UYGTKLINIK_KLINIKADI,
		UYGDR.DRTCKIMLIKNO AS UYGDR_DRTCKIMLIKNO,

		HMUAYENEISL.PPROTOKOLNO AS HMUAYENEISL_PPROTOKOLNO,
		HMUAYENEISL.MUAYENETIPIID AS HMUAYENEISL_MUAYENETIPIID,

		HYATIS.SERVISPROTOKOLNO AS HYATIS_SERVISPROTOKOLNO,
		HYATIS.HYYATAKNO AS HYATIS_HYYATAKNO,
		HYATIS.YATISACILIYETID AS HYATIS_YATISACILIYETID,

		TULKEMERNIS.ULKEADI AS TULKEMERNIS_ULKEADI,
		TILCEMAH.ADRESKODU AS TILCEMAH_ADRESKODU,
		TSNADRESKODU.ADI AS TSNADRESKODU_ADI,
		TIL.IL AS TIL_IL,  
		TILCENFS.ILCEADI AS TILCENFS_ILCEADI,
		HKIMLIK.YABANCIHASTATURUID AS HKIMLIK_YABANCIHASTATURUID, 
		TBOLUM.SNGONDERILMESIN,
		
		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='Saglik-Net' AND PROGNAME='MEDISOFT' AND KEYNAME= CONVERT(VARCHAR,HDOSYA.SUBEID)+' numarali subede Hasta kayıt gönderiminde referans no ön Karakteri'),'') AS REFNOONEK
		
	INTO #TMPDOSYA 
	FROM		HDOSYA WITH(NOLOCK)
	JOIN		HKIMLIK WITH(NOLOCK) ON HDOSYA.HKIMLIKID = HKIMLIK.HKIMLIKID
	JOIN		HESAPISL ON HESAPISL.HDOSYAID = HDOSYA.HDOSYAID
	LEFT JOIN	HMUAYENEISL ON HMUAYENEISL.HESAPISLID = HESAPISL.HESAPISLID
	LEFT JOIN	HMUAYENE ON HMUAYENE.HMUAYENEID = HMUAYENEISL.HMUAYENEID
	LEFT JOIN	HYATIS ON HYATIS.HESAPISLID = HESAPISL.HESAPISLID
	LEFT JOIN	SUBELER ON SUBELER.SUBEID=HDOSYA.SUBEID
	LEFT JOIN	TILCEMAH WITH(NOLOCK) ON TILCEMAH.MAHALLEID = HKIMLIK.HEVMAHID  
	LEFT JOIN	TSNADRESKODU WITH(NOLOCK) ON TSNADRESKODU.KODU = TILCEMAH.ADRESKODU  
									AND TSNADRESKODU.SEVIYE = 5  
	LEFT JOIN	TILCENFS WITH(NOLOCK) ON TILCENFS.ILCEID = HKIMLIK.HEVILCEID  
	LEFT JOIN	TIL WITH(NOLOCK) ON TIL.ILID = HKIMLIK.HEVILID  
	LEFT JOIN	TULKEMERNIS WITH(NOLOCK) ON TULKEMERNIS.ULKEMERNISKODU = HKIMLIK.ULKEMERNISKODU 
	LEFT JOIN	TBOLUM  WITH(NOLOCK) ON HDOSYA.BOLUMID = TBOLUM.BOLUMID  
	LEFT JOIN	TKLINIK AS UYGTKLINIK WITH(NOLOCK) ON UYGTKLINIK.KLINIKKODU = TBOLUM.KLINIKKODU   
	LEFT JOIN	TSGDURUM WITH(NOLOCK) ON TSGDURUM.SGDURUMID = HDOSYA.SGDURUMID 
	LEFT JOIN	TDRKIMLIK AS UYGDR WITH(NOLOCK) ON UYGDR.DRID = HESAPISL.UYGDRID
	LEFT JOIN	CARI WITH(NOLOCK) ON HDOSYA.HKCARIID = CARI.CARIID	
	WHERE CARI.USSHASTAKAYDIMUAFKURUM=0 AND HDOSYA.HDOSYAID = @HDOSYAID
	AND TBOLUM.SNGONDERILMESIN=0
	AND 
	HESAPISL.HESAPISLID =   (
						   CASE 
						   WHEN (
									SELECT COUNT(HESAPISL.HESAPISLID) FROM HYATIS JOIN HESAPISL ON HESAPISL.HESAPISLID=HYATIS.HESAPISLID 
									WHERE HYATIS.HDOSYAID=@HDOSYAID AND HESAPISL.IPTAL = 0 AND HESAPISL.ONAYLI = 1 AND (HESAPISL.TEKLIF = 0 OR HESAPISL.TEKLIF IS NULL)
								) > 0 
						   THEN (SELECT MIN(HESAPISL.HESAPISLID) FROM HYATIS JOIN HESAPISL ON HESAPISL.HESAPISLID=HYATIS.HESAPISLID WHERE HYATIS.HDOSYAID=@HDOSYAID AND HESAPISL.IPTAL = 0 AND HESAPISL.ONAYLI = 1 AND (HESAPISL.TEKLIF = 0 OR HESAPISL.TEKLIF IS NULL))           
						   WHEN (
									SELECT COUNT(HESAPISL.HESAPISLID) FROM HMUAYENEISL JOIN HMUAYENE ON HMUAYENE.HMUAYENEID = HMUAYENEISL.HMUAYENEID JOIN HESAPISL ON HESAPISL.HESAPISLID=HMUAYENEISL.HESAPISLID
									WHERE HMUAYENE.HDOSYAID=@HDOSYAID AND HESAPISL.IPTAL = 0 AND HESAPISL.ONAYLI = 1 AND (HESAPISL.TEKLIF = 0 OR HESAPISL.TEKLIF IS NULL)
								) > 0      
						   THEN (SELECT MIN(HESAPISL.HESAPISLID) FROM HMUAYENEISL JOIN HMUAYENE ON HMUAYENE.HMUAYENEID = HMUAYENEISL.HMUAYENEID JOIN HESAPISL ON HESAPISL.HESAPISLID=HMUAYENEISL.HESAPISLID WHERE HMUAYENE.HDOSYAID=@HDOSYAID AND HESAPISL.IPTAL = 0 AND HESAPISL.ONAYLI = 1 AND (HESAPISL.TEKLIF = 0 OR HESAPISL.TEKLIF IS NULL))
						   WHEN (
									SELECT COUNT(HESAPISL.HESAPISLID) FROM HUYGISLEM JOIN HESAPISL ON HESAPISL.HESAPISLID=HUYGISLEM.HESAPISLID 
									WHERE HUYGISLEM.HDOSYAID=@HDOSYAID AND HESAPISL.IPTAL = 0 AND HESAPISL.ONAYLI = 1 AND (HESAPISL.TEKLIF = 0 OR HESAPISL.TEKLIF IS NULL)
								) > 0      
						   THEN (SELECT MIN(HESAPISL.HESAPISLID) FROM HUYGISLEM JOIN HESAPISL ON HESAPISL.HESAPISLID=HUYGISLEM.HESAPISLID WHERE HUYGISLEM.HDOSYAID=@HDOSYAID AND HESAPISL.IPTAL = 0 AND HESAPISL.ONAYLI = 1 AND (HESAPISL.TEKLIF = 0 OR HESAPISL.TEKLIF IS NULL))   

						   ELSE (SELECT MIN(HESAPISL.HESAPISLID) FROM HESAPISL WHERE HESAPISL.HDOSYAID=@HDOSYAID AND HESAPISL.IPTAL = 0 AND HESAPISL.ONAYLI = 1 AND (HESAPISL.TEKLIF = 0 OR HESAPISL.TEKLIF IS NULL))
						   END						  
						)


	IF (SELECT COUNT(*) FROM #TMPDOSYA) = 0 
		SET @HATA = @HATA + 'Dosya kaydı bulunamadı! '

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

	IF (SELECT COUNT(*) FROM #TMPDOSYA) = 0
	BEGIN
		SET @SAYIHATA = 1
		SET @MESAJ = @MESAJ + 'Gönderilebilecek dosya bulunamadı'
	END

	IF @HATA='' AND @SAYIHATA=0
	BEGIN		
		SELECT @SUBEID = SUBELER_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

	/*	
		1- Yenidoğan ise Beyan Doğum Tarihi, Cinsiyet, Doğum Sırası ve Anne TC zorunlu.
		2- Vatandaş Hasta ise; TC ve Doğum Tarihi zorunlu alan olacak.
		3- Doğum tarihine göre hasta 3 yaşından küçükse Doğum Sırası zorunlu alan olacak.	
		4- Yenidoğan kaydında gönderilen anne tc için son 90 gün gebelik sonuç olmalı ve paket içerisinde canlı doğum sayısı 0 dan büyük olmalydyr. Beyan doğum tarihi bilgisi gebelik sonuç paketindeki gebelik sonlanma tarihinden + -5 gün farkly olabilir.
		55 "Hasta Tipi Yenidoğan ise Beyan doğum tarihinden itibaren en fazla 1 ay içinde gönderilebilir. Doğum tarihi ve paketin oluşturulma zamanı arasında 1 aydan daha fazla zaman olan paketler sisteme kabul edilmez."
	*/

	IF NOT EXISTS(SELECT HDOSYA_HDOSYAID FROM #TMPDOSYA WHERE ISNULL(HDOSYA_SNOYAPILMAMAONAYLI,0)=0)
		SET @HATA = @HATA + 'Uss kayıt yapılmasın onaylı durumdadır! '

	IF NOT EXISTS(SELECT HDOSYA_HDOSYAID FROM #TMPDOSYA WHERE (HKIMLIK_HCINSIYETI='E' OR HKIMLIK_HCINSIYETI='K'))
		SET @HATA = @HATA + 'Hastanın cinsiyeti girilmemiş! '

	IF EXISTS(SELECT HDOSYA_HDOSYAID FROM #TMPDOSYA WHERE ISNULL(HKIMLIK_ULKEMERNISKODU,0)<>0 AND RTRIM(ISNULL(TULKEMERNIS_ULKEADI,''))='')
		SET @HATA = @HATA  + 'Hastanın ülke kodu SKRS kodları içerisinde bulunamadı! '

	IF NOT EXISTS(SELECT HDOSYA_HDOSYAID FROM #TMPDOSYA WHERE RTRIM(ISNULL(TBOLUM_KLINIKKODU,''))<>'')                  
		SET @HATA = @HATA + 'Uygulama bölümü için klinik kodu tanımlanmamış! '

	IF NOT EXISTS(SELECT HDOSYA_HDOSYAID FROM #TMPDOSYA WHERE ISNULL(HKIMLIK_HDTARIHI,0)<>0)
		SET @HATA =@HATA+  'Hastanın doğum tarihi girilmemiş! '

	IF NOT EXISTS(SELECT HDOSYA_HDOSYAID FROM #TMPDOSYA WHERE ISNULL(HESAPISL_ITARIH,0)<>0)
		SET @HATA = @HATA+ 'Hastanın kabul zamanı girilmemiş! '

	IF NOT EXISTS(SELECT HDOSYA_HDOSYAID FROM #TMPDOSYA WHERE SNGONDERILMESIN=1)
			SET @HATA = @HATA+ 'Hasta dosyasının açıldığı bölüm USS gönderilmesin olarak işaretlenmiş! '
		
	IF (SELECT ISNULL(HKIMLIK_HTCKIMLIKNO,'') FROM #TMPDOSYA) = ''
		AND 
			(
				(SELECT ISNULL(HKIMLIK_ULKEMERNISKODU,0) FROM #TMPDOSYA) = 0
				OR 
				(SELECT HKIMLIK_ULKEMERNISKODU FROM #TMPDOSYA) = 9980
			)		
	BEGIN
		IF (SELECT ISNULL(HKIMLIK_ANNETCKIMLIKNO,'') FROM #TMPDOSYA) = ''	
			AND (SELECT DATEDIFF(DAY,HKIMLIK_HDTARIHI, HESAPISL_ITARIH) FROM #TMPDOSYA) <= 28
		BEGIN
			SET @HATA = @HATA + 'Yeni doğan hastanın anne TC kimlik numarası girilmemiş! '
		END
		IF (SELECT ISNULL(HKIMLIK_DOGUMSIRANO,0) FROM #TMPDOSYA) = 0
			AND (SELECT DATEDIFF(DAY,HKIMLIK_HDTARIHI, HESAPISL_ITARIH) FROM #TMPDOSYA) <= 1096
		BEGIN
			SET @HATA =@HATA +  'Yeni doğan hastanın doğum sıra numarası girilmemiş! '
		END
	END
	
	/*IF EXISTS(SELECT HDOSYA_HDOSYAID FROM #TMPDOSYA WHERE HDOSYA_MDLTEDAVITURU IN ('Y','G') AND ISNULL(HYATIS_YATISACILIYETID,0)=0)
	SET @HATA = @HATA+ 'Hastanın yatış aciliyeti seçilmemiş! USS sistemine hasta kaydını yapamazsınız! ' */
	

	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',
						'101' AS 'messageType/@code',
						'Hasta 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',
						(
							SELECT
								(
									SELECT
										
												--ISNULL(HKIMLIK_BABATCKIMLIKNO, '') AS 'BABA_KIMLIK_NUMARASI/@value', --Yenidoğanlar için Baba TC Kimlik Numarası bilgisi.
												--GELDIGI_ULKE
												--TELEFON_NUMARASI
												--RANDEVU_ZAMANI
												--DONOR_ALICI_KIMLIK_NUMARASI --Donor alan kişinin kimlik numarası bilgisi gönderilecektir.Takip Numarası Donor kişi Uzerinden alınacaktır.SGK Hizmet Bildirimi donor alan kişinin kimlik numarası üzerinden yapılacaktır.
												ISNULL(HDOSYA_ALICITCKIMLIKNO,'') AS 'DONOR_ALICI_KIMLIK_NUMARASI/@value',
												(SELECT CASE WHEN (ISNULL(HKIMLIK_ULKEMERNISKODU,0) = 0 OR HKIMLIK_ULKEMERNISKODU = 9980) AND HKIMLIK_HTCKIMLIKNO <> '' AND LEFT(ISNULL(HKIMLIK_HTCKIMLIKNO,''),1)<>'9' THEN HKIMLIK_HTCKIMLIKNO
													 ELSE ''
												END) AS 'HASTA_KIMLIK_NUMARASI/@value',

												ISNULL(HKIMLIK_HADI, '') AS 'AD/@value',

											   ISNULL(HKIMLIK_HSOYADI, '') AS 'SOYAD/@value',

											   '1' AS 'CINSIYET/@version',
											   '784d0f4f-0603-4425-937f-1a3941fc3a1f' AS 'CINSIYET/@codeSystemGuid',
											   ISNULL((
												   SELECT CASE HKIMLIK_HCINSIYETI
															  WHEN 'E' THEN
																  '1'
															  WHEN 'K' THEN
																  '2'
														  END),'') AS 'CINSIYET/@code',
												ISNULL((
													SELECT CASE HKIMLIK_HCINSIYETI
														  WHEN 'E' THEN
															  'ERKEK'
														  WHEN 'K' THEN
															  'KADIN'
													  END),'') AS 'CINSIYET/@value',

												ISNULL(LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),HKIMLIK_HDTARIHI,120),' ',''),'-',''),':',''),8) + '0000', '') AS 'DOGUM_TARIHI/@value',
												'1' AS 'UYRUK/@version',
												'd650777a-3d4d-a259-e040-7c0a01167a83' AS 'UYRUK/@codeSystemGuid',
											   (SELECT CASE
															  WHEN ISNULL(HKIMLIK_ULKEMERNISKODU,0) = 0 THEN
																  9980
															  ELSE
																  ISNULL(CONVERT(VARCHAR, HKIMLIK_ULKEMERNISKODU),0)
														  END) AS 'UYRUK/@code',
											   (SELECT CASE
														 WHEN ISNULL(HKIMLIK_ULKEMERNISKODU,0) = 0 THEN
																  'TÜRKİYE CUMHURİYETİ'
														 ELSE
																  ISNULL(TULKEMERNIS_ULKEADI, '')
														  END) AS 'UYRUK/@value',

											   (SELECT CASE
														  WHEN  (DATEDIFF(DAY, HKIMLIK_HDTARIHI, HESAPISL_ITARIH) <= 28) THEN
																ISNULL(HKIMLIK_ANNETCKIMLIKNO, '')
															ELSE
																 '' END) AS 'ANNE_KIMLIK_NUMARASI/@value',

											   (SELECT CASE
													WHEN (DATEDIFF(DAY, HKIMLIK_HDTARIHI, HESAPISL_ITARIH) <= 1096)
													 THEN (SELECT CASE WHEN HKIMLIK_DOGUMSIRANO > 0 THEN
															 ISNULL(CONVERT(VARCHAR, HKIMLIK_DOGUMSIRANO), '')
																			 ELSE
																				 '' END)
															  ELSE '' END) AS 'DOGUM_SIRASI/@value',

											   (SELECT CASE
															  WHEN ISNULL(HKIMLIK_HTCKIMLIKNO, '') <> '' AND LEFT(ISNULL(HKIMLIK_HTCKIMLIKNO, ''),1)='9'
															  THEN
																ISNULL(HKIMLIK_HTCKIMLIKNO, 0) 
															  WHEN
															  (ISNULL(HKIMLIK_ULKEMERNISKODU,0) <> 0
																  AND HKIMLIK_ULKEMERNISKODU <> 9980
																  AND HKIMLIK_HTCKIMLIKNO <> '' ) THEN
																  ISNULL(HKIMLIK_HTCKIMLIKNO, 0)
															  ELSE
																  ''
														  END) AS 'YABANCI_HASTA_KIMLIK_NUMARASI/@value',--Oturma izni almış yabancı hastalara verilen Yabancı Kimlik Numarası bilgisi.

											   (SELECT CASE WHEN
													(ISNULL(HKIMLIK_ULKEMERNISKODU,0) <> 0
														AND HKIMLIK_ULKEMERNISKODU <> 9980
														AND (HKIMLIK_HTCKIMLIKNO = '' or HKIMLIK_HTCKIMLIKNO  IS NULL)) THEN
														ISNULL(HKIMLIK_HPASAPORT, '')
													ELSE
														'' END) AS 'PASAPORT_NO/@value',

											   (SELECT CASE WHEN
													(ISNULL(HKIMLIK_ULKEMERNISKODU,0) <> 0
														AND HKIMLIK_ULKEMERNISKODU <> 9980
														AND (HKIMLIK_HTCKIMLIKNO = '' OR HKIMLIK_HTCKIMLIKNO IS NULL) 
														AND (HKIMLIK_HPASAPORT = '' OR HKIMLIK_HPASAPORT  IS NULL )) THEN
														SAGLIKNETKURUMKODU + '_' + ISNULL(CONVERT(VARCHAR, HKIMLIK_HKIMLIKID), '')
															  ELSE
																  '' END) AS 'KIMLIKSIZ_HASTA_BILGISI/@value', --Herhangi bir tanımlayıcı bilgisi bulunmayan yabancı hastalar için, (KIMLIKSIZ_HASTA_BILGISI) veri elemanı eklenmiştir. (YABANCI_HASTA_KIMLIK_NUMARASI) ve (PASAPORT_NO) olmayan yabancı uyruklu hastalar için bu alana Kurum SKRS Kodu (_) Kurum Hasta Referans Numarası bir araya getirilerek (örn: "3324_123456") oluşturulacak kurum bazında tekil numara bilgisidir.

											   ISNULL(LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),HKIMLIK_HDTARIHI,120),' ',''),'-',''),':',''),8) + '0000','') 
											   AS 'BEYAN_DOGUM_TARIHI/@value',

											   '1' AS 'HASTA_TIPI/@version',
											   '4f4fd85e-6f52-4c38-a302-6d5e3d6dc1c4' AS 'HASTA_TIPI/@codeSystemGuid',
												ISNULL(CONVERT(VARCHAR,
													(SELECT CASE 
																 WHEN HKIMLIK_HTCKIMLIKNO <> '' AND SUBSTRING(HKIMLIK_HTCKIMLIKNO, 1, 1) = '9'                      
																	THEN 2
																 WHEN((ISNULL(HKIMLIK_ULKEMERNISKODU,0) = 0
																		OR HKIMLIK_ULKEMERNISKODU = 9980)
																		AND HKIMLIK_HTCKIMLIKNO <> '') 
																	THEN 1
																 WHEN
																	((DATEDIFF(DAY, HKIMLIK_HDTARIHI, HESAPISL_ITARIH) + 1) <= 28 AND (HKIMLIK_HPASAPORT='' OR HKIMLIK_HPASAPORT IS NULL)) THEN
																		(SELECT CASE WHEN HKIMLIK_ULKEMERNISKODU <> 9980
																					AND (HKIMLIK_HTCKIMLIKNO = '' or HKIMLIK_HTCKIMLIKNO  IS NULL)
																					AND HKIMLIK_ANNETCKIMLIKNO <> ''
																					AND SUBSTRING(HKIMLIK_ANNETCKIMLIKNO, 1, 2) <> '99' 
																				THEN 6
																				ELSE 4
																				END)
																WHEN HKIMLIK_HPASAPORT <> ''
																		AND (HKIMLIK_HTCKIMLIKNO = '' or HKIMLIK_HTCKIMLIKNO  IS NULL)
																	THEN 2
																ELSE 3
																END)),'') AS 'HASTA_TIPI/@code',
												   ISNULL(CONVERT(VARCHAR,
														(SELECT CASE 
																 WHEN  HKIMLIK_HTCKIMLIKNO <> '' AND SUBSTRING(ISNULL(HKIMLIK_HTCKIMLIKNO,''), 1, 1) = '9'											 
																	THEN 'YABANCI_KAYIT'	
																 WHEN(
																	(ISNULL( HKIMLIK_ULKEMERNISKODU,0) = 0
																	OR HKIMLIK_ULKEMERNISKODU = 9980)
																	AND HKIMLIK_HTCKIMLIKNO <> '')
																THEN 'VATANDAŞ_KAYIT'
																WHEN ((DATEDIFF(DAY, HKIMLIK_HDTARIHI, HESAPISL_ITARIH) + 1) <= 28 AND (HKIMLIK_HPASAPORT='' OR HKIMLIK_HPASAPORT IS NULL))
																THEN
																	(SELECT CASE WHEN HKIMLIK_ULKEMERNISKODU <> 9980
																					AND HKIMLIK_HTCKIMLIKNO = ''
																					AND HKIMLIK_ANNETCKIMLIKNO <> ''
																					AND SUBSTRING(HKIMLIK_ANNETCKIMLIKNO, 1, 2) <> '99'			
																			THEN 'KİMLİKSİZ'
																			ELSE 'YENIDOĞAN_KAYIT' END)
																WHEN HKIMLIK_HPASAPORT <> ''
																	  AND (HKIMLIK_HTCKIMLIKNO = '' or HKIMLIK_HTCKIMLIKNO  IS NULL)
																THEN 'YABANCI_KAYIT'
																ELSE 'VATANSIZ_KAYIT(MÜLTECI)' 
																END)),'') AS 'HASTA_TIPI/@value',

												   (SELECT CASE
																WHEN ISNULL(HKIMLIK_YUPASNO,'')<>'' 
																	THEN HKIMLIK_YUPASNO
																WHEN (ISNULL(HKIMLIK_ULKEMERNISKODU,0) <> 0 AND HKIMLIK_ULKEMERNISKODU <> 9980 AND HKIMLIK_HTCKIMLIKNO <> '') OR (HKIMLIK_HTCKIMLIKNO <> '' AND LEFT(ISNULL(HKIMLIK_HTCKIMLIKNO,''),1)='9')
																	THEN HKIMLIK_HTCKIMLIKNO
																ELSE '' END
													) AS 'YUPASS_NO/@value',


													
													CASE	WHEN ISNULL(HKIMLIK_YABANCIHASTATURUID,0) <> 0 
															THEN '1' 
													END	AS 'YABANCI_HASTA_TURU/@version',

													CASE	WHEN ISNULL(HKIMLIK_YABANCIHASTATURUID,0) <> 0
															THEN 'd8e52cb9-4aa9-512c-e043-14031b0a419d' 
													END	AS 'YABANCI_HASTA_TURU/@codeSystemGuid',
													
													CASE	WHEN ISNULL(HKIMLIK_YABANCIHASTATURUID,0) <> 0  
															THEN ISNULL(CONVERT(VARCHAR, HKIMLIK_YABANCIHASTATURUID), '') 
													END	AS 'YABANCI_HASTA_TURU/@code',
													
													CASE	WHEN ISNULL(HKIMLIK_YABANCIHASTATURUID,0) <> 0
															THEN ISNULL((CASE
																	WHEN HKIMLIK_YABANCIHASTATURUID = '1' 
																	THEN 'SAGLİK TURİZM'
																	WHEN HKIMLIK_YABANCIHASTATURUID = '2' THEN
																		'TURİSTİN SAGLİGİ'
																	WHEN HKIMLIK_YABANCIHASTATURUID = '3' THEN
																		'SGK-MILLETLERARASI SÖZLEŞME'
																	WHEN HKIMLIK_YABANCIHASTATURUID = '4' THEN
																		'SAĞLIK BAKANLIĞI-MILLETLERARASI SÖZLEŞME'
																	WHEN HKIMLIK_YABANCIHASTATURUID = '5' THEN
																		'MÜLTECİ VE KACAK GİRİS'
																	WHEN HKIMLIK_YABANCIHASTATURUID = '6' THEN
																		'EGİTİM'
																	WHEN HKIMLIK_YABANCIHASTATURUID = '7' THEN
																		'TİKA'
																    ELSE ''
																		 END) ,'')  
													END	AS 'YABANCI_HASTA_TURU/@value',




/*

												  (SELECT CASE WHEN ( HKIMLIK_YABANCIHASTATURUID <> '') THEN
												 
														(	'1' AS 'YABANCI_HASTA_TURU/@version',
															'd8e52cb9-4aa9-512c-e043-14031b0a419d' AS 'YABANCI_HASTA_TURU/@codeSystemGuid',
															ISNULL(CONVERT(VARCHAR, HKIMLIK_YABANCIHASTATURUID), '') AS 'YABANCI_HASTA_TURU/@code',
															
															ISNULL((CASE
																	WHEN HKIMLIK_YABANCIHASTATURUID = '1' 
																	THEN 'SAGLİK TURİZM'
																	WHEN HKIMLIK_YABANCIHASTATURUID = '2' THEN
																		'TURİSTİN SAGLİGİ'
																	WHEN HKIMLIK_YABANCIHASTATURUID = '3' THEN
																		'SGK-MILLETLERARASI SÖZLEŞME'
																	WHEN HKIMLIK_YABANCIHASTATURUID = '4' THEN
																		'SAĞLIK BAKANLIĞI-MILLETLERARASI SÖZLEŞME'
																	WHEN HKIMLIK_YABANCIHASTATURUID = '5' THEN
																		'MÜLTECİ VE KACAK GİRİS'
																	WHEN HKIMLIK_YABANCIHASTATURUID = '6' THEN
																		'EGİTİM'
																	WHEN HKIMLIK_YABANCIHASTATURUID = '7' THEN
																		'TİKA'
																    ELSE ''
																		 END) ,'')  AS 'YABANCI_HASTA_TURU/@value' 
																		)  ,*/															
													(
														SELECT
															'1' AS 'ADRES_KODU_SEVIYESI/@version',
															'aa0e83ba-e9db-4817-80da-577fd6a17373' AS 'ADRES_KODU_SEVIYESI/@codeSystemGuid',
															'5' AS 'ADRES_KODU_SEVIYESI/@code',
															'MAHALLE' AS 'ADRES_KODU_SEVIYESI/@value',
															ISNULL(CONVERT(VARCHAR, TILCEMAH_ADRESKODU), '') AS 'ADRES_KODU/@value',
															ISNULL(TSNADRESKODU_ADI, '') AS 'ACIK_ADRES/@value',
															ISNULL(TIL_IL, '') AS 'ACIK_ADRES_IL/@value',
															ISNULL(TILCENFS_ILCEADI, '') AS 'ACIK_ADRES_ILCE/@value'
														FOR XML PATH('ADRES_BILGISI'), TYPE
													)
										FOR XML PATH('HASTA_KIMLIK_BILGILERI'), TYPE
									),
								   (
										SELECT 
										
												ISNULL((SELECT CASE
														 WHEN HDOSYA_ACKKMTAKIPNO <> '' THEN
														 ISNULL(HDOSYA_ACKKMTAKIPNO, '')
														 ELSE ''
														 END),'') AS 'AMBULANS_TAKIP_NUMARASI/@value',

											  '1' AS 'HIZMET_SUNUCU/@version',
											  'c3eade04-4f91-5dab-e043-14031b0ac9f9' AS 'HIZMET_SUNUCU/@codeSystemGuid',
											  SAGLIKNETKURUMKODU AS 'HIZMET_SUNUCU/@code',
											  ISNULL(SUBELER_SUBEADI, '') AS 'HIZMET_SUNUCU/@value',

											  '1' AS 'KAYIT_YERI/@version',
											  'c3eade04-4f91-5dab-e043-14031b0ac9f9' AS 'KAYIT_YERI/@codeSystemGuid',
											  SAGLIKNETKURUMKODU AS 'KAYIT_YERI/@code',
											  ISNULL(SUBELER_SUBEADI, '') AS 'KAYIT_YERI/@value', 
											                           
											  ISNULL(HYATIS_SERVISPROTOKOLNO,ISNULL(HMUAYENEISL_PPROTOKOLNO,'')) AS 'PROTOKOL_NUMARASI/@value',
											  REFNOONEK+CONVERT(VARCHAR,HDOSYA_HDOSYAID) AS 'HASTANE_REFERANS_NUMARASI/@value',--Hastanın ilgili başvurusuna ait hizmet sunucusu bazında tekil Referans Numarası bilgisi.
											  ISNULL(HDOSYA_MDLTAKIPNO, '') AS 'SGK_TAKIP_NUMARASI/@value',
											  ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),HDOSYA_HDTARIH,120),' ',''),'-',''),':',''),12)), '') AS 'KABUL_ZAMANI/@value',

											  '1' AS 'KLINIK_KODU/@version',
											  'c04bee57-c5d4-443d-e040-7b0a6f146a3d' AS 'KLINIK_KODU/@codeSystemGuid',
											  ISNULL(TBOLUM_KLINIKKODU, '') AS 'KLINIK_KODU/@code',
											  ISNULL(UYGTKLINIK_KLINIKADI, '') AS 'KLINIK_KODU/@value',

											  '1' AS 'SOSYAL_GUVENCE_DURUMU/@version',
											  '530da738-2be0-4adc-a7c1-aca18c66a3f8' AS 'SOSYAL_GUVENCE_DURUMU/@codeSystemGuid',
											  ISNULL(CONVERT(VARCHAR, HDOSYA_SGDURUMID), '') AS 'SOSYAL_GUVENCE_DURUMU/@code',
											  ISNULL(TSGDURUM_SGDURUMADI, '') AS 'SOSYAL_GUVENCE_DURUMU/@value',

											  ISNULL(UYGDR_DRTCKIMLIKNO, '') AS 'HEKIM_KIMLIK_NUMARASI/@value',--Hastanın muayene olduğu Hekim Kimlik Numarası bilgisi
											 
											  '1' AS 'VAKA_TURU/@version',
											  '46380e82-d8b1-407d-9554-255d95a9f959' AS 'VAKA_TURU/@codeSystemGuid',
											  (SELECT CASE
													WHEN HMUAYENEISL_MUAYENETIPIID = '6' THEN
														'13'
													WHEN HDOSYA_GSSPROVTIPI = 'A' THEN
														'2'
													WHEN HDOSYA_GSSPROVTIPI = 'T' THEN
														'3'
													WHEN HDOSYA_GSSPROVTIPI = 'I' THEN
														'4'
													WHEN HDOSYA_GSSPROVTIPI = 'V' THEN
														'5'
													WHEN HDOSYA_GSSPROVTIPI = 'M' THEN
														'6'
													ELSE
														'1'
												   END) AS 'VAKA_TURU/@code',
											  (SELECT CASE
													WHEN HMUAYENEISL_MUAYENETIPIID = '6' THEN
														'Konsultasyon Muayenesi'
													WHEN HDOSYA_GSSPROVTIPI = 'A' THEN
														'Acil'
													WHEN HDOSYA_GSSPROVTIPI = 'T' THEN
														'Trafik kazası'
													WHEN HDOSYA_GSSPROVTIPI = 'I' THEN
														'İş kazası'
													WHEN HDOSYA_GSSPROVTIPI = 'V' THEN
														'Adli Vaka'
													WHEN HDOSYA_GSSPROVTIPI = 'M' THEN
														'Meslek hastalığı'
													ELSE
													  'Normal'
														 END) AS 'VAKA_TURU/@value',

											  '' AS 'MHRS_RANDEVU_NUMARASI/@value',--MHRS sisteminden randevu alarak gelmiş hastalar için MHRS tarafından verilen Hasta Randevu Numarası bilgisi
											  
											  '1' AS 'TRIAJ/@version',
											  '1ddcbef5-4006-41fe-87c0-6190c9801708' AS 'TRIAJ/@codeSystemGuid',
											  ( SELECT CASE HDOSYA_HDTRIYAJID																	
															WHEN 0 THEN '3'
															WHEN 1 THEN '2'
															WHEN 2 THEN '1'
															WHEN 3 THEN '4'																
															ELSE '0'
														END ) 
											  AS 'TRIAJ/@code',
											  ( SELECT CASE HDOSYA_HDTRIYAJID																	
															WHEN 0 THEN 'KIRMIZI'
															WHEN 1 THEN 'SARI'
															WHEN 2 THEN 'YEŞİL'
															WHEN 3 THEN 'SİYAH'																
															ELSE 'BELİRTİLMEMİŞ'
														END ) 
											  AS 'TRIAJ/@value',

    										  ISNULL(HDOSYA_SNOTAKIPNO, '') AS 'SYSTakipNo/@value',

											  (SELECT
												  (SELECT CASE HDOSYA_HDYATIYOR
													WHEN 1 THEN
														ISNULL(CONVERT(VARCHAR,
														LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),HDOSYA_HDTARIH,120),' ',''),'-',''),':',''),12)),'')
														ELSE '' END) AS 'YATIS_KABUL_ZAMANI/@value',
												  (SELECT CASE HDOSYA_HDYATIYOR
													WHEN 1 THEN
														ISNULL(HYATIS_HYYATAKNO, '')
													ELSE
														'' END) AS 'YATAK_NO/@value',
												 (SELECT CASE HDOSYA_HDYATIYOR
													  WHEN 1 THEN
														(SELECT CASE
															WHEN HDOSYA_MDLTEDAVITURU='G' /*YATISTIPI = 'Müşahade' OR YATISTIPI = 'Günubirlik Yatış'*/
															THEN '1'
															  ELSE '0'  
															END) ELSE '' END) AS 'YATIS_GUNUBIRLIK_MI/@value',

													  '1' AS 'YATISIN_ACILIYETI/@version',
													  'dc6ff680-555f-44b2-855e-a47c51207e4f'
													   AS 'YATISIN_ACILIYETI/@codeSystemGuid',
													(SELECT CASE HDOSYA_HDYATIYOR
													   WHEN 1
													THEN ISNULL(CONVERT(VARCHAR, HYATIS_YATISACILIYETID), '99')
													   ELSE '99'
														END) AS 'YATISIN_ACILIYETI/@code',
													  ISNULL((SELECT CASE HDOSYA_HDYATIYOR
															   WHEN 1 THEN
																(SELECT CASE HYATIS_YATISACILIYETID
																	WHEN 1 THEN
																		'Aciliyet Durumu Atanmış - Acil'
																	WHEN 2 THEN
																		'Aciliyet Durumu Atanmış - Elektif'
																	WHEN 3 THEN
																		'Aciliyet Durumu Atanmamış'
																	WHEN 9 THEN
																		'BELİRTİLMEDİ'
																	ELSE
																		'BELİRTİLMEDİ' END)END),
													'BELİRTİLMEDİ') AS 'YATISIN_ACILIYETI/@value'


												FOR XML PATH('YATIS_BILGISI'), TYPE)
										FOR XML PATH('HASTA_BASVURU_BILGILERI'), TYPE
									)
							   FOR XML PATH('recordData'), TYPE
							)		  
					FROM #TMPDOSYA (NOLOCK)
					FOR XML PATH(''), ROOT('SYSMessage')





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

		SET @HATA = ''	 
	END
	
	IF OBJECT_ID('tempdb..#TMPDOSYA') IS NOT NULL 
		DROP TABLE #TMPDOSYA


	SELECT * FROM @GONDERIMTABLOSU	


END
