ALTER FUNCTION [dbo].[FNTELETIP_HL7DATA](@TETKIKID VARCHAR(15))
RETURNS @PATIENT TABLE 
(
	MSH_FieldSeparator NVARCHAR(100) NULL,
	MSH_EncodingCharacters NVARCHAR(100) NULL,
	MSH_SendingApplication  NVARCHAR(100) NULL,
	MSH_SendingFacility NVARCHAR(100) NULL,
	MSH_ReceivingApplication NVARCHAR(100) NULL,
	MSH_ReceivingFacility NVARCHAR(100) NULL,
	MSH_DateTimeOfMessage NVARCHAR(100) NULL,
	MSH_MessageType NVARCHAR(100) NULL,
	MSH_MessageControlID NVARCHAR(100) NULL,
	MSH_ProcessingID NVARCHAR(100) NULL,
	MSH_VersionID NVARCHAR(100) NULL,
	MSH_CharacterSet NVARCHAR(100) NULL,

	PID_PatientID NVARCHAR(100) NULL,
	PID_PatientIdentifierList NVARCHAR(100) NULL,
	PID_AlternatePatientID NVARCHAR(100) NULL,
	PID_PatientName NVARCHAR(200) NULL,
	PID_DateTimeofBirth NVARCHAR(100) NULL,
	PID_Sex NVARCHAR(100) NULL,
	PID_PatientAddress NVARCHAR(400) NULL,
	PID_PhoneNumberHome NVARCHAR(100) NULL,
	PID_EmailAddress NVARCHAR(100) NULL,
	PID_PhoneNumberBusiness NVARCHAR(100) NULL,
	PID_SSNNumberPatient  NVARCHAR(100) NULL,
	PID_MothersIdentifier NVARCHAR(100) NULL,
	PID_BirthPlace NVARCHAR(100) NULL,
	PID_MultipleBirthIndicator NVARCHAR(100) NULL,
	PID_BirthOrder NVARCHAR(100) NULL,
	PID_Citizenship NVARCHAR(100) NULL,

	PV1_PatientClass  NVARCHAR(100) NULL,
	PV1_ReferringDoctor NVARCHAR(200) NULL,
	PV1_ConsultingDoctor NVARCHAR(200) NULL,
	PV1_VisitNumber NVARCHAR(200) NULL,
	PV1_FinancialClass NVARCHAR(200) NULL,
	PV1_AdmitDateTime NVARCHAR(200) NULL,
	PV1_AlternateVisitID NVARCHAR(200) NULL,
	PV1_VisitIndicator NVARCHAR(200) NULL,

	ORC_OrderControl NVARCHAR(100) NULL,
	ORC_PlacerOrderNumber  NVARCHAR(100) NULL,
	ORC_OrderStatus NVARCHAR(100) NULL,
	ORC_QuantityTiming  NVARCHAR(100) NULL,
	ORC_DateTimeofTransaction NVARCHAR(100) NULL,
	ORC_EnteredBy NVARCHAR(200) NULL,
	ORC_VerifiedBy NVARCHAR(200) NULL,
	ORC_OrderingProvider NVARCHAR(200) NULL,
	ORC_EnteringOrganization NVARCHAR(200) NULL,
	ORC_OrderingFacilityName NVARCHAR(200) NULL,

	OBR_SetID NVARCHAR(100) NULL,
	OBR_PlacerOrderNumber NVARCHAR(100) NULL,
	OBR_FillerOrderNumber NVARCHAR(100) NULL,
	OBR_UniversalServiceID  NVARCHAR(200) NULL,
	OBR_RequestDateTime NVARCHAR(100) NULL,
	OBR_ObservationDateTime NVARCHAR(100) NULL,
	OBR_RelevantClinicalInfo NVARCHAR(100) NULL,
	OBR_SpecimenSource  NVARCHAR(100) NULL,
	OBR_OrderingProvider NVARCHAR(200) NULL,
	OBR_Placerfield1  NVARCHAR(100) NULL,
	OBR_DiagnosticServSectID NVARCHAR(100) NULL,
	OBR_QuantityTiming  NVARCHAR(100) NULL,
	OBR_ReasonforStudy NVARCHAR(2000) NULL,
	OBR_Technician  NVARCHAR(200) NULL,
	OBR_ScheduledDateTime NVARCHAR(100) NULL,

	DG1_SetID NVARCHAR(100) NULL,
	DG1_DiagnosisCode NVARCHAR(200) NULL,
	DG1_DiagnosisType NVARCHAR(100) NULL,

	NTE_SetID NVARCHAR(100) NULL,
	NTE_SourceofComment NVARCHAR(100) NULL,
	NTE_Comment NVARCHAR(2000) NULL,
	NTE_CommentType NVARCHAR(100) NULL,

	NTE_SetID2 NVARCHAR(100) NULL,
	NTE_SourceofComment2 NVARCHAR(100) NULL,
	NTE_Comment2 NVARCHAR(2000) NULL,
	NTE_CommentType2 NVARCHAR(100) NULL,

	NTE_SetID3 NVARCHAR(100) NULL,
	NTE_SourceofComment3 NVARCHAR(100) NULL,
	NTE_Comment3 NVARCHAR(2000) NULL,
	NTE_CommentType3 NVARCHAR(100) NULL,
	
	NTE_SetID4 NVARCHAR(100) NULL,
	NTE_SourceofComment4 NVARCHAR(100) NULL,
	NTE_Comment4 NVARCHAR(2000) NULL,
	NTE_CommentType4 NVARCHAR(100) NULL
) 
AS
BEGIN

  INSERT INTO @PATIENT (MSH_FieldSeparator, MSH_EncodingCharacters, MSH_SendingApplication, MSH_SendingFacility, MSH_ReceivingApplication, MSH_ReceivingFacility, MSH_DateTimeOfMessage, 
					MSH_MessageType, MSH_MessageControlID, MSH_ProcessingID, MSH_VersionID, MSH_CharacterSet,
					PID_PatientID, PID_PatientIdentifierList, PID_AlternatePatientID,PID_PatientName,PID_DateTimeofBirth,PID_Sex,PID_PatientAddress,PID_PhoneNumberHome,PID_EmailAddress,PID_PhoneNumberBusiness,
					PID_SSNNumberPatient,PID_MothersIdentifier,PID_BirthPlace,PID_MultipleBirthIndicator,PID_BirthOrder,PID_Citizenship,
					PV1_PatientClass,PV1_ReferringDoctor,PV1_ConsultingDoctor,PV1_VisitNumber,PV1_FinancialClass,PV1_AdmitDateTime,PV1_AlternateVisitID,PV1_VisitIndicator,
					ORC_OrderControl,ORC_PlacerOrderNumber,ORC_OrderStatus,ORC_QuantityTiming,ORC_DateTimeofTransaction,ORC_EnteredBy,ORC_VerifiedBy,ORC_OrderingProvider,ORC_EnteringOrganization,ORC_OrderingFacilityName,
					OBR_SetID,OBR_PlacerOrderNumber,OBR_FillerOrderNumber,OBR_UniversalServiceID,OBR_RequestDateTime,OBR_ObservationDateTime,
					OBR_RelevantClinicalInfo,OBR_SpecimenSource,OBR_OrderingProvider,OBR_Placerfield1,OBR_DiagnosticServSectID,OBR_QuantityTiming,OBR_ReasonforStudy,OBR_Technician,OBR_ScheduledDateTime,DG1_SetID,DG1_DiagnosisCode,DG1_DiagnosisType,
					NTE_SetID,NTE_SourceofComment,NTE_Comment,NTE_CommentType,NTE_SetID2,NTE_SourceofComment2,NTE_Comment2,NTE_CommentType2,NTE_SetID3,NTE_SourceofComment3,NTE_Comment3,NTE_CommentType3,NTE_SetID4,NTE_SourceofComment4,NTE_Comment4,NTE_CommentType4--,
					
					   )
  SELECT 
	  --MSH Bölümü
	  '|' AS MSH_FieldSeparator,--1- Field Separator -  |
	  '^~\&' AS MSH_EncodingCharacters,--2- Encoding Characters -  ^~\&
	  'C740D0288ED4C45FE0407C0A04162BDD' AS MSH_SendingApplication,--3- Sending Application -  HBYS program adı
	  'Talya Bilişim Ltd. Şti.' AS MSH_SendingFacility,--4- Sending Facility -  HBYS adı
	  'TELETIP' AS MSH_ReceivingApplication,--5- Receiving Application - TELETIP
	  'TELETIP' AS MSH_ReceivingFacility,--6- Receiving Facility  -  TELETIP
	  ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),GETDATE(),120),' ',''),'-',''),':',''),14)), '') AS MSH_DateTimeOfMessage,--7- Date/Time Of Message  -  yyyyMMddHHmmss
	  'ORM^O01' AS MSH_MessageType,--9- Message Type -  ORM^O01 - ORU^R01
	  CASE WHEN ISNULL(HESAPISL.GELDIGIKURUMPATIENTID,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMACCESSIONNO,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMKODU,0)<>0
		  THEN 
			 CONVERT(VARCHAR,HESAPISL.GELDIGIKURUMACCESSIONNO)
		  ELSE 
			 (CASE WHEN ISNULL(HTETKIK.AccessionNo,'')='' THEN ISNULL((SELECT TOP 1 VALUESTR FROM [CONFIG] WHERE KEYNAME = 'Teletip Accession Prefix'),'')+CONVERT(VARCHAR,HTETKIK.HTETKIKID) ELSE CONVERT(VARCHAR,HTETKIK.AccessionNo) END) 
		  END AS MSH_MessageControlID,--10- Message Control ID -  Mesaj numarası
	  'P' AS MSH_ProcessingID,--11- Processing ID  -  P
	  '2.3.1' AS MSH_VersionID,--12- Version ID  -  2.3.1
	  'UTF8' AS MSH_CharacterSet,--18- Character Set -  UTF8
	 
	  --PID Bölümü
	  CONVERT(VARCHAR,(CASE WHEN ISNULL(HESAPISL.GELDIGIKURUMPATIENTID,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMACCESSIONNO,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMKODU,0)<>0 THEN CONVERT(VARCHAR,HESAPISL.GELDIGIKURUMKODU) ELSE (SELECT TOP 1 VALUESTR FROM [CONFIG] WHERE KEYNAME = CONVERT(VARCHAR,SUBELER.SUBEID)+' numaralı şubenin Sağlık.NET 2 kullanıcı adı') END))
	  +'-' +CONVERT(VARCHAR,(CASE WHEN ISNULL(HESAPISL.GELDIGIKURUMPATIENTID,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMACCESSIONNO,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMKODU,0)<>0 THEN HESAPISL.GELDIGIKURUMPATIENTID ELSE ISNULL((SELECT TOP 1 VALUESTR FROM [CONFIG] WHERE KEYNAME = 'Teletip PID Prefix'),'')+CONVERT(VARCHAR,HKIMLIK.HKIMLIKID) END)) AS PID_PatientID,--2- Patient ID Kurum kodu – hastanın HBYS’deki tekil numarası Örnek: 14555-12345
	  CONVERT(VARCHAR,(CASE WHEN ISNULL(HESAPISL.GELDIGIKURUMPATIENTID,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMACCESSIONNO,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMKODU,0)<>0 THEN HESAPISL.GELDIGIKURUMPATIENTID ELSE ISNULL((SELECT TOP 1 VALUESTR FROM [CONFIG] WHERE KEYNAME = 'Teletip PID Prefix'),'')+CONVERT(VARCHAR,HKIMLIK.HKIMLIKID) END))+'^^HBYS' AS PID_PatientIdentifierList,--3- Patient Identifier List - Hastane Dosya Numarası^^HBYS HBYS tarafından üretilen hasta dosya numarası  Burada gönderilen değer boş olması halinde hatadönülmektedir.
	 
	 CASE 
	   WHEN HKIMLIK.HTCKIMLIKNO <> '' AND SUBSTRING(HKIMLIK.HTCKIMLIKNO, 1, 1) = '9'                      
		  THEN HKIMLIK.HTCKIMLIKNO + '^^^TC'--2 SURIYELI YABANCI KAYIT
	   WHEN((ISNULL(HKIMLIK.ULKEMERNISKODU,0) = 0
				OR HKIMLIK.ULKEMERNISKODU = 9980)
				AND HKIMLIK.HTCKIMLIKNO <> '') 
		  THEN HKIMLIK.HTCKIMLIKNO + '^^^TC' --1 TC
	   WHEN
		  (DATEDIFF(DAY, HKIMLIK.HDTARIHI, HESAPISL.ITARIH) + 1) <= 28 AND ISNULL(HKIMLIK.ANNETCKIMLIKNO,'') <> '' 
		  THEN HKIMLIK.ANNETCKIMLIKNO + '^^^TC'-- YENI DOGAN
						 
	   WHEN HKIMLIK.HPASAPORT <> ''-- AND HKIMLIK.HTCKIMLIKNO = '' 
		  THEN ISNULL(HKIMLIK.HPASAPORT, '')+'^^^PASS'--2 YABANCI KAYIT
      
	   WHEN HKIMLIK.HPASAPORT = '' AND HKIMLIK.HTCKIMLIKNO = '' AND HKIMLIK.YUPASNO <> ''
		  THEN HKIMLIK.YUPASNO +'^^^PASS'--3 SADECE YUPASLI YABANCI HASTA KAYIT
       ELSE ''--4 VATANSIZ MÜLTECİ
	  END AS PID_AlternatePatientID,--4- **Alternate Patient ID -TC Kimlik No^^^TC Yabancı hastalar için pasaport numarası gönderilebilir. Ancak bunun için PID-26 alanında ülke kodu gönderilmesi gerekmektedir. Pasaport numarası şu şekilde gönderilecektir:Pasaport No^^^PASS
	  HKIMLIK.HSOYADI + '^' + HKIMLIK.HADI+'^' AS PID_PatientName, --5- Patient Name -Soyad^Ad^İkinci Ad
	  ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),HKIMLIK.HDTARIHI,120),' ',''),'-',''),':',''),14)), '') AS PID_DateTimeofBirth, --7- DateTimeofBirth  -yyyyMMddHHmm
	  CASE WHEN HKIMLIK.HCINSIYETI='K' THEN 'F' ELSE 'M' END AS PID_Sex, --8- Sex -F / M / U / O
	  LEFT(REPLACE(REPLACE(CAST(ISNULL(HKIMLIK.HEVADRES,'') as NVARCHAR(MAX)), CHAR(13), ''), CHAR(10), ''),399) AS PID_PatientAddress, --11- PatientAddress -Adres bilgisi
	  ISNULL(HKIMLIK.HEVTEL,'') AS PID_PhoneNumberHome,  --13-1- Phone NumbeR Home  - Ev Telefonu
	  ISNULL(HKIMLIK.HEMAIL, '') AS PID_EmailAddress, --13-4- Email Address  -Hastanın e-mail adresi
	  ISNULL(HKIMLIK.HCEP, ISNULL(HKIMLIK.HTEL, '')) AS PID_PhoneNumberBusiness, --14- ** Phone Number Business - iş Telefonu
	   CASE 
	   WHEN ISNULL(HKIMLIK.YUPASNO,'')<>''
		  THEN ISNULL(HKIMLIK.YUPASNO,'')
	   WHEN HKIMLIK.HTCKIMLIKNO <> '' AND SUBSTRING(HKIMLIK.HTCKIMLIKNO, 1, 1) = '9'                      
		  THEN --ISNULL(HKIMLIK.YUPASNO, HKIMLIK.HTCKIMLIKNO)--2 SURIYELI YABANCI KAYIT
			 CASE WHEN ISNULL(HKIMLIK.YUPASNO,'')=''
				THEN HKIMLIK.HTCKIMLIKNO
				ELSE HKIMLIK.YUPASNO
				END
	   WHEN((ISNULL(HKIMLIK.ULKEMERNISKODU,0) = 0
				OR HKIMLIK.ULKEMERNISKODU = 9980)
				AND HKIMLIK.HTCKIMLIKNO <> '') 
		  THEN HKIMLIK.HTCKIMLIKNO --1 TC
	   WHEN
		  (DATEDIFF(DAY, HKIMLIK.HDTARIHI, HESAPISL.ITARIH) + 1) <= 28 AND ISNULL(HKIMLIK.ANNETCKIMLIKNO,'') <> '' 
		  THEN HKIMLIK.ANNETCKIMLIKNO -- YENI DOGAN
	   ELSE ISNULL(HKIMLIK.YUPASNO,'')--3 VATANSIZ MÜLTECİ
	   END AS PID_SSNNumberPatient,--19- SSNNumber Patient - Medula’ya bildirilecek sosyal güvenlik numarası. TC vatandaşları için TCKN olacak. YUPAS kaydı olan hastalar için YUPAS numarası olacak. Bebek hastalar anneleri üzerinden faturalandırılacaksa bu alanda anne TCKN gönderilecektir
      ISNULL(HKIMLIK.ANNETCKIMLIKNO,'') AS PID_MothersIdentifier, --21- Mother's Identifier - Hastanın annesine ait TC kimlik numarası
	  ISNULL(HKIMLIK.HDYERI,'') AS PID_BirthPlace, --23- Birth Place -Doğum Yeri
	  CASE WHEN 
	  (DATEDIFF(DAY, HKIMLIK.HDTARIHI, HESAPISL.ITARIH) + 1) <= 28 AND HKIMLIK.HTCKIMLIKNO = '' THEN CASE WHEN HDOGUM.CANLIBEBEKSAYISI>1 THEN 'Y' ELSE 'N' END ELSE '' END AS PID_MultipleBirthIndicator, --24- **MultipleBirthIndicator -Bebek ve henüz kimliği olmayan hastalar için eğer çoklu doğumsa Y; tekli doğumsa N olacak. TCKN’si olan hastalar için boş bırakılacak.
      ISNULL(HKIMLIK.DOGUMSIRANO,'1') AS PID_BirthOrder, --25- Birth Order PID-24 alanında bir değer girildi ise bu alana hastanın doğum sırası girilecek. Örnek:1
	  CASE WHEN (NOT (ISNULL(HKIMLIK.ULKEMERNISKODU,0) = 0 OR HKIMLIK.ULKEMERNISKODU = 9980)) AND HKIMLIK.HPASAPORT <> '' THEN HKIMLIK.ULKEMERNISKODU ELSE '' END AS PID_Citizenship,--26- Citizenship -Eğer yabancı hastaların PID-4 alanında pasaport numarası gönderilecek ise bu alanda hastanın vatandaşı olduğu ülkenin 4 rakamdan oluşan SKRS ülke mernis kodu girilmesi gerekmektedir. Örnek: Yugoslavya için 9500
	  
	   --PV1 Bölümü
	    CASE
           WHEN HDOSYA.GSSPROVTIPI = 'A'
           THEN 'E'
           WHEN HDOSYA.HDYATIYOR = 1
           THEN 'I'
           ELSE 'O'
       END AS PV1_PatientClass  ,--2--Patient Class  - E (Acil) – I (Yatan) - O (Ayaktan)
	   CONVERT(VARCHAR,TDRKIMLIKISTEYEN.DRTCKIMLIKNO) + '^' + SUBSTRING(TDRKIMLIKISTEYEN.DRADI,CHARINDEX(' ',TDRKIMLIKISTEYEN.DRADI)+1,50) + '^' + SUBSTRING(TDRKIMLIKISTEYEN.DRADI,0,CHARINDEX(' ',TDRKIMLIKISTEYEN.DRADI))+'^^^'+ISNULL(TDRKIMLIKISTEYEN.DRUNVAN,'') AS PV1_ReferringDoctor,--8--Referring Doctor  - Personel ID^Soyad^Ad^İkinci Ad^^Ön ek 
	   CONVERT(VARCHAR,TDRKIMLIKUYGULAYAN.DRTCKIMLIKNO) + '^' + SUBSTRING(TDRKIMLIKUYGULAYAN.DRADI,CHARINDEX(' ',TDRKIMLIKUYGULAYAN.DRADI)+1,50) + '^' + SUBSTRING(TDRKIMLIKUYGULAYAN.DRADI,0,CHARINDEX(' ',TDRKIMLIKUYGULAYAN.DRADI))+'^^^'+ISNULL(TDRKIMLIKUYGULAYAN.DRUNVAN,'') AS PV1_ConsultingDoctor,--9--Consulting Doctor   - Personel ID^Soyad^Ad^İkinci Ad^^Ön ek
	   CONVERT(VARCHAR,HDOSYA.HDOSYAID)+'^^^^^^^^'+CONVERT(VARCHAR,ISNULL(TDRKIMLIKISTEYEN.BOLUMID,''))+'&'+ISNULL(ISTBOLUM.BOLUMADI,'')+'&HBYS' AS PV1_VisitNumber, --19--**Visit Number  - Visit No^^^^^^^^Birim Id& Birim Adı & HBYS  - Visit No: Hasta ziyaret numarası
	   
	   CASE
	    WHEN ((ITEMKODU2 BETWEEN '803870' AND '804510') OR (ITEMKODU2 = '801590')) --AND HDOSYA.MDLTAKIPVAR=1
		   THEN 'SGK'
		ELSE 'OTHER'
	   END AS PV1_FinancialClass,--20--FinancialClass -Hasta SGK’lı ise SGK değilse OTHER veya boş olmalı
	   ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),ISNULL(HDOSYA.KYTARIH,''),120),' ',''),'-',''),':',''),14)), '') AS PV1_AdmitDateTime,--44--AdmitDateTime -yyyyMMddHHmmss
	   ISNULL(HDOSYA.MDLTAKIPNO, '') AS PV1_AlternateVisitID,--50--Alternate Visit ID -PV1-20 alanında SGK olarak belirtilmişse bu alanda Medula Takip Numarası gönderilecektir. 
	   'V' AS PV1_VisitIndicator ,--51--Visit Indicator - V
	  
	  
	  --ORC Bölümü   

	   CASE WHEN HTETKIK.HL7GONDERILDI=1 THEN 'XO' ELSE 'NW' END AS ORC_OrderControl,--1--OrderControl - NW
	   CONVERT(VARCHAR,(CASE WHEN ISNULL(HESAPISL.GELDIGIKURUMPATIENTID,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMACCESSIONNO,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMKODU,0)<>0 
		  THEN 
			 CONVERT(VARCHAR,HESAPISL.GELDIGIKURUMACCESSIONNO)
		  ELSE 
			 (CASE WHEN ISNULL(HTETKIK.AccessionNo,'')='' THEN ISNULL((SELECT TOP 1 VALUESTR FROM [CONFIG] WHERE KEYNAME = 'Teletip Accession Prefix'),'')+CONVERT(VARCHAR,HTETKIK.HTETKIKID) ELSE CONVERT(VARCHAR,HTETKIK.AccessionNo) END) 
		  END))+'^HBYS' AS ORC_PlacerOrderNumber,--2-- Placer Order Number - Tetkik İstek Id^HBYS Tetkik İstek Id alanına HBYS’nin ürettiği OBR-18 alanında gönderilen benzersiz Accession numarası yazılacak
	   'SC' AS ORC_OrderStatus,--5-- Order Status  - SC

	   '1^once^^'+ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),GETDATE(),120),' ',''),'-',''),':',''),14)), '') AS ORC_QuantityTiming,--7--Quantity Timing - 1^once^^yyyyMMddHHmmss
	   ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),(CASE WHEN HESAPISL.ITARIH BETWEEN '2019-08-31' AND '2025-01-01' THEN GETDATE() ELSE HESAPISL.ITARIH END),120),' ',''),'-',''),':',''),14)), '') AS ORC_DateTimeofTransaction,--9--Date Time of Transaction -yyyyMMddHHmmss
	   CONVERT(VARCHAR,U.USERID) + '^' + SUBSTRING(U.ADI,CHARINDEX(' ',U.ADI)+1,50) + '^' + SUBSTRING(U.ADI,0,CHARINDEX(' ',U.ADI))+'^^^' AS ORC_EnteredBy,--10--Entered By -Personel ID^Soyad^Ad^İkinci Ad^^Önek (sisteme giren)
	   CONVERT(VARCHAR,U.USERID) + '^' + SUBSTRING(U.ADI,CHARINDEX(' ',U.ADI)+1,50) + '^' + SUBSTRING(U.ADI,0,CHARINDEX(' ',U.ADI))+'^^^' AS ORC_VerifiedBy,--11--Verified By Personel ID^Soyad^Ad^İkinci Ad^^Önek (istemi onaylayan)
	   CONVERT(VARCHAR,TDRKIMLIKISTEYEN.DRTCKIMLIKNO) + '^' + SUBSTRING(TDRKIMLIKISTEYEN.DRADI,CHARINDEX(' ',TDRKIMLIKISTEYEN.DRADI)+1,50) + '^' + SUBSTRING(TDRKIMLIKISTEYEN.DRADI,0,CHARINDEX(' ',TDRKIMLIKISTEYEN.DRADI))+'^^^'+ISNULL(TDRKIMLIKISTEYEN.DRUNVAN,'') AS ORC_OrderingProvider ,--12--Ordering Provider -Doktor TCKN^Soyad^Ad^İkinci Ad^^Önek (tetkik isteminde bulunan)
	   CONVERT(VARCHAR, ISNULL(ISTBOLUM.KLINIKKODU, 0))+ '^' + ISNULL(ISTBOLUM.BOLUMADI,'') +'^'+ ISNULL((CASE WHEN ISNULL(HESAPISL.GELDIGIKURUMPATIENTID,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMACCESSIONNO,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMKODU,0)<>0 THEN (SELECT TOP 1 KURUMADI FROM TTETKIKPACSKURUM WHERE KURUMKODU=HESAPISL.GELDIGIKURUMKODU) ELSE SUBELER.SUBEADI END),'') AS ORC_EnteringOrganization,--17--Entering Organization  - Birim Id^Birim Adı ^Kurum Kısa Adı
	   CONVERT(VARCHAR,ISNULL((CASE WHEN ISNULL(HESAPISL.GELDIGIKURUMPATIENTID,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMACCESSIONNO,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMKODU,0)<>0 THEN (SELECT TOP 1 KURUMADI FROM TTETKIKPACSKURUM WHERE KURUMKODU=HESAPISL.GELDIGIKURUMKODU) ELSE SUBELER.SUBEADI END),'')) 
	   + '^^' + CONVERT(VARCHAR,ISNULL(CONVERT(VARCHAR,(CASE WHEN ISNULL(HESAPISL.GELDIGIKURUMPATIENTID,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMACCESSIONNO,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMKODU,0)<>0 THEN CONVERT(VARCHAR,HESAPISL.GELDIGIKURUMKODU) ELSE (SELECT TOP 1 VALUESTR FROM [CONFIG] WHERE KEYNAME = CONVERT(VARCHAR,SUBELER.SUBEID)+' numaralı şubenin Sağlık.NET 2 kullanıcı adı') END)),''))
	   +'\S\1\S\'+CONVERT(VARCHAR,ISNULL(CONVERT(VARCHAR,(CASE WHEN ISNULL(HESAPISL.GELDIGIKURUMPATIENTID,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMACCESSIONNO,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMKODU,0)<>0 THEN (SELECT TOP 1 CONVERT(VARCHAR,ISNULL(MEDULATESISKODU,ISNULL(KURUMKODU,''))) FROM TTETKIKPACSKURUM WHERE KURUMKODU=HESAPISL.GELDIGIKURUMKODU) ELSE (SELECT TOP 1 VALUESTR FROM [CONFIG] WHERE KEYNAME = CONVERT(VARCHAR,SUBELER.SUBEID)+' numaralı sube gercek ortam tesis kodu') END)),'')) AS ORC_OrderingFacilityName,--21--Ordering Facility Name   -Kurum adı^^Kurum SKRS kodu\S\Şube numarası\S\MEDULA Tesis Kodu
	  
	   --OBR Bölümü
	   '1' AS OBR_SetID,--1--Set ID - OBR -1
	   CONVERT(VARCHAR,(CASE WHEN ISNULL(HESAPISL.GELDIGIKURUMPATIENTID,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMACCESSIONNO,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMKODU,0)<>0 
		  THEN 
			 HESAPISL.GELDIGIKURUMACCESSIONNO 
		  ELSE 
			 (CASE WHEN ISNULL(HTETKIK.AccessionNo,'')='' THEN ISNULL((SELECT TOP 1 VALUESTR FROM [CONFIG] WHERE KEYNAME = 'Teletip Accession Prefix'),'')+CONVERT(VARCHAR,HTETKIK.HTETKIKID) ELSE CONVERT(VARCHAR,HTETKIK.AccessionNo) END) 
		  END))+'^HBYS' AS OBR_PlacerOrderNumber,--2--Placer Order Number -HBYS Tetkik İstek Id^HBYS Tetkik İstek Id alanına HBYS’nin ürettiği OBR-18 alanında gönderilen benzersiz Accession numarası yazılacaktır
	   CONVERT(VARCHAR,(CASE WHEN ISNULL(HESAPISL.GELDIGIKURUMPATIENTID,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMACCESSIONNO,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMKODU,0)<>0
		  THEN 
			 HESAPISL.GELDIGIKURUMACCESSIONNO 
		  ELSE 
			 (CASE WHEN ISNULL(HTETKIK.AccessionNo,'')='' THEN ISNULL((SELECT TOP 1 VALUESTR FROM [CONFIG] WHERE KEYNAME = 'Teletip Accession Prefix'),'')+CONVERT(VARCHAR,HTETKIK.HTETKIKID) ELSE CONVERT(VARCHAR,HTETKIK.AccessionNo) END) 
		  END))+'^RBS' AS OBR_FillerOrderNumber ,--3--Filler Order Number -RBS Tetkik İstek Id^RBS Tetkik İstek Id alanına HBYS’nin ürettiği OBR-18alanında gönderilen benzersiz Accession numarası yazılacaktır
	   ISNULL(TITEM.ITEMKODU2,'')+'^'+LEFT(ISNULL(TITEM.ITEMADI,''),140)+'^SUT'+(CASE WHEN ISNULL(TSUTLOINC.LOINCID,'')<>'' THEN '^'+ISNULL(TSUTLOINC.LOINCID,'')+'^'+ISNULL(TSUTLOINC.LOINCADI,'')+'^LNC' ELSE '' END) AS OBR_UniversalServiceID ,--4--UniversalServiceID -Resmi SUT Kodu^SUT Açıklaması -Burada resmi SUT kodu gönderilmelidir. Hastane içinde kullanılan hastaneye özgü genişletilmiş kodlar gönderilmemelidir SUT kodu 6 karakterden az olması halinde mesaj reddedilecektir.
	   ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),(CASE WHEN HESAPISL.ITARIH BETWEEN '2019-08-31' AND '2025-01-01' THEN GETDATE() ELSE HESAPISL.ITARIH END),120),' ',''),'-',''),':',''),14)), '') AS OBR_RequestDateTime ,--6--Request Date/Time -Klinisyen hekim tarafından istemin yapıldığı tarih ve saat
	   ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),ISNULL((CASE WHEN HESAPISL.ITARIH BETWEEN '2019-08-31' AND '2025-01-01' THEN GETDATE() ELSE HTETKIK.SONUCTARIH END),''),120),' ',''),'-',''),':',''),14)), '') AS OBR_ObservationDateTime,--7--**ObservationDateTime -Radyolog tarafından raporun onaylandığı tarih ve saat
	   ISNULL(ISTBOLUM.BOLUMADI,'') AS OBR_RelevantClinicalInfo,--13--**Relevant Clinical Info. - Klinik Bilgi
	   CONVERT(VARCHAR,(CASE WHEN ISNULL(HESAPISL.GITTIGIKURUMKODU,'')='' THEN 'Radiology' ELSE CONVERT(VARCHAR,HESAPISL.GITTIGIKURUMKODU)+'&&SKRS' END))+'^^^^^R' AS OBR_SpecimenSource,--15--Specimen Source  - Radiology^^^^^R
	   CONVERT(VARCHAR,TDRKIMLIKUYGULAYAN.DRTCKIMLIKNO) + '^' + SUBSTRING(TDRKIMLIKUYGULAYAN.DRADI,CHARINDEX(' ',TDRKIMLIKUYGULAYAN.DRADI)+1,50) + '^' + SUBSTRING(TDRKIMLIKUYGULAYAN.DRADI,0,CHARINDEX(' ',TDRKIMLIKUYGULAYAN.DRADI))+'^^^'+ISNULL(TDRKIMLIKUYGULAYAN.DRUNVAN,'') AS OBR_OrderingProvider,--16--Ordering Provider -Doktor TCKN^Soyad^Ad^İkinci Ad^^Önek (tetkik isteminde bulunan)
	   CONVERT(VARCHAR,(CASE WHEN ISNULL(HESAPISL.GELDIGIKURUMPATIENTID,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMACCESSIONNO,'')<>'' AND ISNULL(HESAPISL.GELDIGIKURUMKODU,0)<>0 
		  THEN 
			 HESAPISL.GELDIGIKURUMACCESSIONNO 
		  ELSE 
			 (CASE WHEN ISNULL(HTETKIK.AccessionNo,'')='' THEN ISNULL((SELECT TOP 1 VALUESTR FROM [CONFIG] WHERE KEYNAME = 'Teletip Accession Prefix'),'')+CONVERT(VARCHAR,HTETKIK.HTETKIKID) ELSE CONVERT(VARCHAR,HTETKIK.AccessionNo) END) 
		  END)) AS OBR_Placerfield1,--18--Placer field 1 -Accession numarası
	   ISNULL(TCIHAZ.MODALITE,'CR') AS OBR_DiagnosticServSectID,--24--**Diagnostic Serv Sect ID - Modalite tipi (MR, CR, XA gibi).Burada en az 2 karakterli bir veri gönderilmezse hata dönülmektedir.
	   '1^once^^'+ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),GETDATE(),120),' ',''),'-',''),':',''),14)), '') AS OBR_QuantityTiming,--27--Quantity/Timing  -1^once^^yyyyMMddHHmmss
	   CASE WHEN ISNULL(HTETKIKTELETIPACIKLAMA.ACIKLAMA,'')<>'' THEN REPLACE(HTETKIKTELETIPACIKLAMA.ACIKLAMA,'-','^') ELSE	   
	   LEFT(REPLACE(REPLACE(CAST(ISNULL(HMUAYENE.HMSIKAYETI,'') as NVARCHAR(MAX)), CHAR(13), ''), CHAR(10), ''),1999) END AS OBR_ReasonforStudy,--31--**Reason for Study -İstek Notu
	   CONVERT(VARCHAR,U.USERID) + '&' + SUBSTRING(U.ADI,CHARINDEX(' ',U.ADI)+1,50) + '&' + SUBSTRING(U.ADI,0,CHARINDEX(' ',U.ADI))+'&&&' AS OBR_Technician,--34--Technician -Personel ID&Soyad&Ad&İkinci Ad&&Ön ek
	   ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),(CASE WHEN HESAPISL.ITARIH BETWEEN '2019-08-31' AND '2025-01-01' THEN GETDATE() ELSE (CASE WHEN HESAPISL.RANDTARIH<HESAPISL.ITARIH THEN DATEADD(MINUTE,1,HESAPISL.ITARIH) ELSE DATEADD(MINUTE,1,ISNULL(HESAPISL.RANDTARIH,HESAPISL.ITARIH)) END) END),120),' ',''),'-',''),':',''),14)), '') AS OBR_ScheduledDateTime,--36--Scheduled Date/ -Time Randevu tarih ve saati veya hastanın çekim için kabul edildiği tarih ve *saat*
	    
		--DG1 Bölümü
	    '1' AS DG1_SetID,--1--SetID-DG1 - 1 (Her bir ICD10 kodu için ayrı bir DG1 alanı HL7 mesajı içinde yer alır. Her bölümün ID’si bu duruma göre 1 artırılır.)
	    ISNULL(CONVERT(VARCHAR(20), HDICD.ICDKOD), 'Z00.0')+'^'+ISNULL(HDICD.ICDADI, 'GENEL TIBBİ MUAYENE')+'^I10' AS DG1_DiagnosisCode,--3--Diagnosis Code - ICD 10 tanı kodu Örnek:Z56.3^Stresli çalışma proğramı^I10
	    'F' AS DG1_DiagnosisType,--6--Diagnosis Type - A (Ön tanı) / F (Kesin Tanı)
		
		--NTE Bölümü
		
		--Hasta şikâyetinin aktarılması için nte
		
		'1' AS NTE_SetID,--1--Set ID  - “1”
		'P' AS NTE_SourceofComment,--2--Source of Comment -"P"
		LEFT(REPLACE(REPLACE(CAST(ISNULL(HMUAYENE.HMSIKAYETI,'') as NVARCHAR(MAX)), CHAR(13), ''), CHAR(10), ''),1999) AS NTE_Comment,--3--Comment- Hasta şikâyetine ait bilgiler
		'NTE0001^PatientComplaints^TELETIP' AS NTE_CommentType,--4--**Comment Type - NTE0001^PatientComplaints^TELETIP
		
		--Hasta geçmişinin aktarılması için nte
		
		'2' AS NTE_SetID2,--1--Set ID  - “2”
		'P' AS NTE_SourceofComment2,--2--Source of Comment -"P"
		 LEFT(REPLACE(REPLACE(CAST(ISNULL(HMUAYENE.HMKLINIKIZLEM,'') as NVARCHAR(MAX)), CHAR(13), ''), CHAR(10), ''),1999) AS NTE_Comment2,--3--Comment -Hasta geçmişine ait bilgiler
		'NTE0002^PatientHistory^TELETIP' AS NTE_CommentType2,--4--Comment Type - NTE0002^PatientHistory^TELETIP
		
		--Bulgunun aktarılması için nte

		'3' AS NTE_SetID3,--1--**Set ID  - “3”
		'P' AS NTE_SourceofComment3,--2--**Source of Comment -"P"
		LEFT(REPLACE(REPLACE(CAST(ISNULL(HMUAYENE.HMSONUC,'') as NVARCHAR(MAX)), CHAR(13), ''), CHAR(10), ''),1999) AS NTE_Comment3,--3--Comment -Bulguya ait bilgiler
		'NTE0003^PatientSymptom^TELETIP' AS NTE_CommentType3,--4--Comment Type - NTE0003^^PatientSymptom^TELETIP

		--Tedavinin aktarılması için nte

		'4' AS NTE_SetID4,--1--Set ID  - “4”
		'P' AS NTE_SourceofComment4,--2--Source of Comment -"P"
		LEFT(REPLACE(REPLACE(CAST(ISNULL(HMUAYENE.HMTEDAVI,'') as NVARCHAR(MAX)), CHAR(13), ''), CHAR(10), ''),1999) AS NTE_Comment4,--3--Comment -Tedaviye ait bilgiler
		'NTE0004^PatientCure^TELETIP' AS NTE_CommentType4 --4--Comment Type - NTE0004^PatientCure^TELETIP

FROM HTETKIK
	   INNER JOIN HESAPISL ON HTETKIK.HESAPISLID = HESAPISL.HESAPISLID
	   INNER JOIN TITEM ON HESAPISL.ITEMID = TITEM.ITEMID
	   INNER JOIN HDOSYA ON HESAPISL.HDOSYAID = HDOSYA.HDOSYAID
	   INNER JOIN HKIMLIK ON HKIMLIK.HKIMLIKID = HDOSYA.HKIMLIKID
	   INNER JOIN CARI ON HDOSYA.HKCARIID = CARI.CARIID
	   INNER JOIN TBOLUM AS ISTBOLUM ON HESAPISL.ISTBOLUMID = ISTBOLUM.BOLUMID
	   LEFT OUTER JOIN TBOLUM AS UYGBOLUM ON UYGBOLUM.BOLUMID = HESAPISL.UYGBOLUMID 
                           

	   LEFT JOIN HYATIS ON HYATIS.HYATISID in (SELECT TOP 1 HY.HYATISID FROM HYATIS HY WHERE HY.HDOSYAID = HDOSYA.HDOSYAID ORDER BY HY.HYATISID DESC ) 
	   LEFT JOIN HMUAYENEISL ON HMUAYENEISL.HESAPISLID = HESAPISL.OPHESAPISLID 
	   LEFT JOIN HMUAYENE ON HMUAYENE.HMUAYENEID = HMUAYENEISL.HMUAYENEID 
                           
	   LEFT JOIN TDRKIMLIK TDRKIMLIKISTEYEN ON TDRKIMLIKISTEYEN.DRID = HESAPISL.ISTDRID 
	   LEFT JOIN TDRKIMLIK TDRKIMLIKUYGULAYAN ON TDRKIMLIKUYGULAYAN.DRID = HESAPISL.UYGDRID 
	   LEFT JOIN [USER] U ON HESAPISL.KYKULLANICI = U.KODU 
	   LEFT JOIN TTETKIK ON TTETKIK.ITEMID = HESAPISL.ITEMID AND TTETKIK.PACS = 1 
	   LEFT JOIN TCIHAZ ON TCIHAZ.CIHAZID = TTETKIK.CIHAZID   
	   LEFT JOIN SUBELER ON SUBELER.SUBEID = HDOSYA.SUBEID 
	   LEFT JOIN HDOGUM ON HDOGUM.HMUAYENEID = HMUAYENE.HMUAYENEID
	   LEFT JOIN HDOGUMDETAY ON HDOGUM.HDOGUMID = HDOGUMDETAY.HDOGUMID
	   LEFT JOIN TSUTLOINC ON TSUTLOINC.SUTLOINCID=TITEM.SUTLOINCID
	   LEFT JOIN HTETKIKTELETIPACIKLAMA ON HTETKIKTELETIPACIKLAMA.HESAPISLID = HESAPISL.HESAPISLID
	   OUTER APPLY (   SELECT TOP 1 HDOSYAICD.ICDKOD,TICD.ICDADI 
				    FROM HDOSYAICD
				    LEFT JOIN TICD ON TICD.ICDKOD = HDOSYAICD.ICDKOD
				    WHERE HDOSYAICD.HDOSYAID = HDOSYA.HDOSYAID AND HDOSYAICD.ICDTURUID IN (1,2)	
				    ORDER BY  HDOSYAICD.ICDTURUID DESC, HDOSYAICD.ANATANI DESC
				) AS HDICD
	   WHERE (HESAPISL.IPTAL = 0)
			 AND (ISNULL(HESAPISL.TEKLIF, 0) = 0) 
			 AND HTETKIK.HTETKIKID = @TETKIKID 

  
  RETURN 
END


GO


