IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[FNTELETIP_HL7DATA]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION  [dbo].[FNTELETIP_HL7DATA]
GO


CREATE 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ü
	  '|',--Field Separator -  |
	  '^~\&',--Encoding Characters -  ^~\&
	  'Medisoft',--Sending Application -  HBYS program adı
	  'Talya Bilişim Ltd. Şti.',--Sending Facility -  HBYS adı
	  'TELETIP',--Receiving Application - TELETIP
	  'TELETIP',--Receiving Facility  -  TELETIP
	  ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),GETDATE(),120),' ',''),'-',''),':',''),14)), ''),--Date/Time Of Message  -  yyyyMMddHHmmss
	  'ORM^O01',--Message Type -  ORM^O01 - ORU^R01
	  (CASE WHEN ISNULL(HTETKIK.AccessionNo,'')='' THEN CONVERT(VARCHAR,HTETKIK.HTETKIKID) ELSE HTETKIK.AccessionNo END),--Message Control ID -  Mesaj numarası
	  'P',--Processing ID  -  P
	  '2.3.1',--Version ID  -  2.3.1
	  'UTF8',--Character Set -  UTF8
	 
	  --PID Bölümü
	  (SELECT TOP 1 VALUESTR FROM [CONFIG] WHERE KEYNAME = CONVERT(VARCHAR,SUBELER.SUBEID)+' numaralı şubenin Sağlık.NET 2 kullanıcı adı')+'-' +CONVERT(VARCHAR,HKIMLIK.HKIMLIKID),--Patient ID Kurum kodu – hastanın HBYS’deki tekil numarası Örnek: 14555-12345
	  CONVERT(VARCHAR,HDOSYA.HKIMLIKID)+'^^HBYS',--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 -- YENI DOGAN
						 
	   WHEN HKIMLIK.HPASAPORT <> ''-- AND HKIMLIK.HTCKIMLIKNO = '' 
		  THEN ISNULL(HKIMLIK.HPASAPORT, '')+'^^^PASS'--2 YABANCI KAYIT
	   ELSE ''--3 VATANSIZ MÜLTECİ
	   END,--**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+'^', --Patient Name -Soyad^Ad^İkinci Ad
	  ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),HKIMLIK.HDTARIHI,120),' ',''),'-',''),':',''),14)), ''), --DateTimeofBirth  -yyyyMMddHHmm
	  CASE WHEN HKIMLIK.HCINSIYETI='K' THEN 'F' ELSE 'M' END, --Sex -F / M / U / O
	  LEFT(REPLACE(REPLACE(CAST(ISNULL(HKIMLIK.HEVADRES,'') as NVARCHAR(MAX)), CHAR(13), ''), CHAR(10), ''),399), --PatientAddress -Adres bilgisi
	  ISNULL(HKIMLIK.HEVTEL,'') ,  --Phone NumbeR Home  - Ev Telefonu
	  ISNULL(HKIMLIK.HEMAIL, '') , --Email Address  -Hastanın e-mail adresi
	  ISNULL(HKIMLIK.HCEP, ISNULL(HKIMLIK.HTEL, '')), --** Phone Number Business - iş Telefonu
	  CASE 
	   WHEN HKIMLIK.HTCKIMLIKNO <> '' AND SUBSTRING(HKIMLIK.HTCKIMLIKNO, 1, 1) = '9'                      
		  THEN ISNULL(HKIMLIK.YUPASNO, HKIMLIK.HTCKIMLIKNO)--2 SURIYELI YABANCI KAYIT
	   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
	   WHEN HKIMLIK.HPASAPORT <> '' AND HKIMLIK.HTCKIMLIKNO = '' 
		  THEN ISNULL(HKIMLIK.YUPASNO, HKIMLIK.HPASAPORT)--2 YABANCI KAYIT
	   ELSE ISNULL(HKIMLIK.YUPASNO,'')--3 VATANSIZ MÜLTECİ
	   END,--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,''), --Mother's Identifier - Hastanın annesine ait TC kimlik numarası
	  ISNULL(HKIMLIK.HDYERI,''), --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 YENIDOGAN, --**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(HDOGUMDETAY.DHDOGUMSIRANO,''), --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,--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 'O'
           ELSE 'I'
       END , --Patient Class  - E (Acil) – I (Yatan) - O (Ayaktan)
	   CONVERT(VARCHAR,TDRKIMLIKISTEYEN.DRID) + '^' + SUBSTRING(TDRKIMLIKISTEYEN.DRADI,CHARINDEX(' ',TDRKIMLIKISTEYEN.DRADI)+1,50) + '^' + SUBSTRING(TDRKIMLIKISTEYEN.DRADI,0,CHARINDEX(' ',TDRKIMLIKISTEYEN.DRADI))+'^^^'+ISNULL(TDRKIMLIKISTEYEN.DRUNVAN,''), --Referring Doctor  - Personel ID^Soyad^Ad^İkinci Ad^^Ön ek 
	   CONVERT(VARCHAR,TDRKIMLIKUYGULAYAN.DRID) + '^' + SUBSTRING(TDRKIMLIKUYGULAYAN.DRADI,CHARINDEX(' ',TDRKIMLIKUYGULAYAN.DRADI)+1,50) + '^' + SUBSTRING(TDRKIMLIKUYGULAYAN.DRADI,0,CHARINDEX(' ',TDRKIMLIKUYGULAYAN.DRADI))+'^^^'+ISNULL(TDRKIMLIKUYGULAYAN.DRUNVAN,''), --Consulting Doctor   - Personel ID^Soyad^Ad^İkinci Ad^^Ön ek
	   CONVERT(VARCHAR,HDOSYA.HDOSYAID)+'^^^^^^^^'+CONVERT(VARCHAR,ISNULL(TDRKIMLIKISTEYEN.BOLUMID,''))+'&'+ISNULL(ISTBOLUM.BOLUMADI,'')+'&HBYS', --**Visit Number  - Visit No^^^^^^^^Birim Id& Birim Adı & HBYS  - Visit No: Hasta ziyaret numarası
	   
	   '',--ISNULL(VWTETKIK.SGKULLANICI, 0) AS SGKKULLANICI,--FinancialClass -Hasta SGK’lı ise SGK değilse OTHER veya boş olmalı
	   ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),GETDATE(),120),' ',''),'-',''),':',''),14)), ''), --AdmitDateTime -yyyyMMddHHmmss
	   '',--ISNULL(HDOSYA.MDLTAKIPNO, '') AS MDLTAKIPNO, --Alternate Visit ID -PV1-20 alanında SGK olarak belirtilmişse bu alanda Medula Takip Numarası gönderilecektir. 
	   'V', --Visit Indicator - V
	  
	  
	  --ORC Bölümü   

	  'NW',--OrderControl - NW
	   (CASE WHEN ISNULL(HTETKIK.AccessionNo,'')='' THEN CONVERT(VARCHAR,HTETKIK.HTETKIKID) ELSE HTETKIK.AccessionNo END)+'^HBYS',-- 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',-- Order Status  - SC
	   '1^once^^'+ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),GETDATE(),120),' ',''),'-',''),':',''),14)), ''), --Quantity Timing - 1^once^^yyyyMMddHHmmss
	   ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),HESAPISL.ITARIH,120),' ',''),'-',''),':',''),14)), ''), --Date Time of Transaction -yyyyMMddHHmmss
	   CONVERT(VARCHAR,U.USERID) + '^' + SUBSTRING(U.ADI,CHARINDEX(' ',U.ADI)+1,50) + '^' + SUBSTRING(U.ADI,0,CHARINDEX(' ',U.ADI))+'^^^',--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))+'^^^',--Verified By Personel ID^Soyad^Ad^İkinci Ad^^Önek (istemi onaylayan)
	   CONVERT(VARCHAR,TDRKIMLIKISTEYEN.DRID) + '^' + SUBSTRING(TDRKIMLIKISTEYEN.DRADI,CHARINDEX(' ',TDRKIMLIKISTEYEN.DRADI)+1,50) + '^' + SUBSTRING(TDRKIMLIKISTEYEN.DRADI,0,CHARINDEX(' ',TDRKIMLIKISTEYEN.DRADI))+'^^^'+ISNULL(TDRKIMLIKISTEYEN.DRUNVAN,''),--Ordering Provider -Doktor TCKN^Soyad^Ad^İkinci Ad^^Önek (tetkik isteminde bulunan)
	   CONVERT(VARCHAR, ISNULL(HESAPISL.ISTBOLUMID, 0))+ '^' + ISNULL(ISTBOLUM.BOLUMADI,'') +'^'+ ISNULL(SUBELER.SUBEADI,'') ,--Entering Organization  - Birim Id^Birim Adı ^Kurum Kısa Adı
	   ISNULL(SUBELER.SUBEADI,'') + '^^' + ISNULL((SELECT TOP 1 VALUESTR FROM [CONFIG] WHERE KEYNAME = CONVERT(VARCHAR,SUBELER.SUBEID)+' numaralı şubenin Sağlık.NET 2 kullanıcı adı'),'')+'\S\1\S\'+ISNULL((SELECT TOP 1 VALUESTR FROM [CONFIG] WHERE KEYNAME = CONVERT(VARCHAR,SUBELER.SUBEID)+' numaralı sube gercek ortam tesis kodu'),''),--Ordering Facility Name   -Kurum adı^^Kurum SKRS kodu\S\Şube numarası\S\MEDULA Tesis Kodu
	  
	   --OBR Bölümü
	   '1',--Set ID - OBR -1
	   (CASE WHEN ISNULL(HTETKIK.AccessionNo,'')='' THEN CONVERT(VARCHAR,HTETKIK.HTETKIKID) ELSE HTETKIK.AccessionNo END)+'^HBYS', --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
	   (CASE WHEN ISNULL(HTETKIK.AccessionNo,'')='' THEN CONVERT(VARCHAR,HTETKIK.HTETKIKID) ELSE HTETKIK.AccessionNo END)+'^RBS', --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), --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),HESAPISL.ITARIH,120),' ',''),'-',''),':',''),14)), ''), --Request Date/Time -Klinisyen hekim tarafından istemin yapıldığı tarih ve saat
	   ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),ISNULL(HTETKIK.CEKIMTARIHI, HESAPISL.ITARIH),120),' ',''),'-',''),':',''),14)), ''),--**ObservationDateTime -Radyolog tarafından raporun onaylandığı tarih ve saat
		ISNULL(ISTBOLUM.BOLUMADI,''),--**Relevant Clinical Info. - Klinik Bilgi
	    'Radiology^^^^^R',--Specimen Source  - Radiology^^^^^R
	   CONVERT(VARCHAR,TDRKIMLIKUYGULAYAN.DRID) + '^' + SUBSTRING(TDRKIMLIKUYGULAYAN.DRADI,CHARINDEX(' ',TDRKIMLIKUYGULAYAN.DRADI)+1,50) + '^' + SUBSTRING(TDRKIMLIKUYGULAYAN.DRADI,0,CHARINDEX(' ',TDRKIMLIKUYGULAYAN.DRADI))+'^^^'+ISNULL(TDRKIMLIKUYGULAYAN.DRUNVAN,''), --Ordering Provider -Doktor TCKN^Soyad^Ad^İkinci Ad^^Önek (tetkik isteminde bulunan)
	   (CASE WHEN ISNULL(HTETKIK.AccessionNo,'')='' THEN CONVERT(VARCHAR,HTETKIK.HTETKIKID) ELSE HTETKIK.AccessionNo END),--Placer field 1 -Accession numarası
	   ISNULL(TCIHAZ.MODALITE,'CR'),--**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)), ''),--Quantity/Timing  -1^once^^yyyyMMddHHmmss
	   LEFT(REPLACE(REPLACE(CAST(ISNULL(HMUAYENE.HMSIKAYETI,'') as NVARCHAR(MAX)), CHAR(13), ''), CHAR(10), ''),1999),--**Reason for Study -İstek Notu
	   CONVERT(VARCHAR,U.USERID) + '&' + SUBSTRING(U.ADI,CHARINDEX(' ',U.ADI)+1,50) + '&' + SUBSTRING(U.ADI,0,CHARINDEX(' ',U.ADI))+'&&&',--Technician -Personel ID&Soyad&Ad&İkinci Ad&&Ön ek
	   ISNULL(CONVERT(VARCHAR, LEFT(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19),ISNULL(HTETKIK.CEKIMTARIHI, HESAPISL.ITARIH),120),' ',''),'-',''),':',''),14)), ''), --Scheduled Date/ -Time Randevu tarih ve saati veya hastanın çekim için kabul edildiği tarih ve *saat*
	    
		--DG1 Bölümü
	    '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), '')+'^'+ISNULL(HDICD.ICDADI, '')+'^I10',--Diagnosis Code - ICD 10 tanı kodu Örnek:Z56.3^Stresli çalışma proğramı^I10
	    'F',--Diagnosis Type - A (Ön tanı) / F (Kesin Tanı)
		
		--NTE Bölümü
		
		--Hasta şikâyetinin aktarılması için nte
		
		'1',--Set ID  - “1”
		'P',--Source of Comment -"P"
		LEFT(REPLACE(REPLACE(CAST(ISNULL(HMUAYENE.HMSIKAYETI,'') as NVARCHAR(MAX)), CHAR(13), ''), CHAR(10), ''),1999),--Comment- Hasta şikâyetine ait bilgiler
		'NTE0001^PatientComplaints^TELETIP',--**Comment Type - NTE0001^PatientComplaints^TELETIP
		
		--Hasta geçmişinin aktarılması için nte
		
		'2',--Set ID  - “2”
		'P',--Source of Comment -"P"
		 LEFT(REPLACE(REPLACE(CAST(ISNULL(HMUAYENE.HMKLINIKIZLEM,'') as NVARCHAR(MAX)), CHAR(13), ''), CHAR(10), ''),1999),--Comment -Hasta geçmişine ait bilgiler
		'NTE0002^PatientHistory^TELETIP',--Comment Type - NTE0002^PatientHistory^TELETIP
		
		--Bulgunun aktarılması için nte

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

		--Tedavinin aktarılması için nte

		'4',--Set ID  - “4”
		'P',--Source of Comment -"P"
		LEFT(REPLACE(REPLACE(CAST(ISNULL(HMUAYENE.HMTEDAVI,'') as NVARCHAR(MAX)), CHAR(13), ''), CHAR(10), ''),1999),--Comment -Tedaviye ait bilgiler
		'NTE0004^PatientCure^TELETIP'--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
	   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


