Bir e-Nabız entegrasyonunda kod yazma işi projenin en kısa parçasıdır. Sağlık Bakanlığı'nın SYS servisine veri gönderen bir hattın geliştirilmesi, kapsamı dar tutulduğunda 18-28 adam-günlük bir iştir; ininia'nın kullandığı 300-400 USD/adam-gün bandıyla bu 5.400 - 11.200 USD aralığına denk gelir. Takvimi belirleyen ise geliştirme değil, Kayıt Tescil Sistemi (KTS) süreci: ıslak imzalı üst yazı, gizlilik sözleşmesi, ISO belgeleri ve uygunluk testleri. Bu iki sayıyı ayrı ayrı planlamayan her bütçe şaşar.
Bu yazı, e-Nabız Entegrasyonu: Teknik Rehber yazımızın devamıdır. O yazı "nasıl bağlanılır"ı anlatıyor; bu yazı "ne kadar sürer, kaç para eder, nerede tıkanır" sorusunu cevaplıyor.
Önce Doğru Soruyu Sorun: İki Farklı Proje Var
"e-Nabız entegrasyonu" tek bir iş değil. Fiyat sorduğunuzda karşınızdaki ekip hangisini anladıysa o rakamı söyler, siz de elmayla armudu karşılaştırırsınız.
| Proje tipi | Ne yapar | Tescil gerekir mi |
|---|---|---|
| A. Veri gönderen taraf (SBYS / HBYS / LBYS) |
Sağlık tesisinde üretilen klinik veriyi XML paketleri hâlinde SYS web servisine gönderir. | Evet. Yazılım üreticisi KTS'ye kayıtlı, yazılım tescilli olmalı. |
| B. Vatandaş tarafı (mobil uygulama, tele-tıp) |
Kişinin kendi rızasıyla kendi kaydına erişen uygulama. | Farklı bir izin akışı; SYS gönderim tescili ile aynı şey değildir. |
Bu yazı A tipini fiyatlıyor, çünkü kurumsal bütçe sorularının büyük çoğunluğu oradan geliyor. B tipi için teknik rehber yazımıza bakın.
Takvimi Kod Değil, KTS Belirliyor
Sağlık Bakanlığı'nın yayımladığı Kayıt Tescil Sistemi Kayıt Aşamaları Kılavuzu, yeni kayıt yaptıracak bir yazılım üreticisi için sekiz adımlı bir yol haritası tanımlıyor. Adımların hiçbiri "API anahtarını panelden al" değil:
- Yetki Belgesi (EK-1): e-devlet şifresi olan bir personel, süreci yürütmek üzere resmen görevlendirilir.
- Başvuru üst yazısı (EK-2) ve ekleri hazırlanır.
- Üst yazı Genel Evrak Birimi'ne elden veya posta ile teslim edilir, tarih ve sayı alınır.
- Belgeleri tam olan üreticinin yetkilisiyle Gizlilik Sözleşmesi (EK-3) imzalanır;
kts.saglik.gov.trüzerinde pasif kayıt açılır. - Yazılım, veri gönderme ve sağlık bilişim standartlarına uygunluk testlerine tabi tutulur. Test için üreticiye "yazılım erişim test kodu" verilir.
- Testleri geçen üreticiye gerçek ortam için "yazılım erişim kodu" teslim edilir.
- TS ISO/IEC 27001 belgesi, kayıt için gerekli belgelerle birlikte teslim edilir.
- Kayıtlı üreticiler Bakanlığın sayfasında ilan edilir.
Kılavuz ayrıca TS ISO/IEC 15504 (SPICE) için 01.07.2017, TS ISO/IEC 15408 (Ortak Kriterler) için 01.01.2019 son tarihlerini veriyor. Bu tarihler geçti. Yani bugün bu belgeler artık "yakında zorunlu olacak" değil, zorunlu statüde; eksik olan üretici yetki belgesi alamıyor. Portaldan alınan yetki belgesinin geçerlilik süresi de sadece 15 gün, dolayısıyla ihale takviminizi belgeyi alma tarihine göre ayarlamanız gerekiyor.
03.07.2026 değişikliği: süre artık sabit değil
Sağlık Bilgi Yönetim Sistemleri Hakkında Yönetmelik (RG 31934, 25.08.2022), 3 Temmuz 2026 tarihli ve 33299 sayılı Resmî Gazete ile değiştirildi. İki madde doğrudan planınızı etkiliyor:
- Kayıt ve akreditasyonu düzenleyen 6'ncı maddedeki "bir yıl süre verilir" ifadesi kaldırıldı; yerine "gereken süre Genel Müdürlük tarafından ilan edilir" geldi. Uyum süresi artık mevzuattan okunamıyor, duyurudan takip ediliyor.
- Kaydı silinen üreticinin yeniden kayıt başvurusu, silme tarihinden itibaren bir yıl işleme alınmıyor. Bu, tescili bir "bir kere hallettik" kalemi olmaktan çıkarıp süreklilik gerektiren bir yükümlülüğe dönüştürüyor.
Pratik sonuç: sözleşmenizde "entegrasyon X ayda teslim edilir" yazıyorsa, o cümlenin altına "tescil sürecindeki kurum kaynaklı bekleme süreleri teslim süresine dâhil değildir" maddesini koyun. Koymazsanız kendi kontrolünüzde olmayan bir takvimi taahhüt etmiş olursunuz.
KTS Kapsamı Sandığınızdan Geniş
Kılavuz, kayıt altına alınacak yazılımları tek tek sayıyor ve liste hastane yazılımının çok ötesine geçiyor: HBYS, AHBS, LBYS, PACS, DHBS, MHBS, KDS, KMBYS, DYBS, ATBS, DVYS, İYBS, İİBYS, İTS, OBS, TPS. Yani "biz sadece laboratuvar yazılımı yapıyoruz" ya da "bizimki bir karar destek ürünü" demek kapsam dışında kalmanızı sağlamıyor.
Uygunluk testleri de yazılım tipine göre değişiyor. Kılavuzun verdiği örnekler:
| Yazılım tipi | Test edilen başlıklar |
|---|---|
| HBYS | Sağlık.Net Online veri gönderim durumu, minimum veri (VEM) oluşturma, ICD-O standardına göre gönderim, MKYS entegrasyonu, MHRS entegrasyonu, ekranların örneklem yoluyla kontrolü |
| AHBS | Sağlık.Net Online veri gönderim durumu, ekran kontrolü |
| LBYS | Sağlık.Net Online veri gönderim durumu, laboratuvar veri modeli (VEM), LOINC standardına göre gönderim, ekran kontrolü |
| PACS | Teletıp ve teleradyoloji sistemine entegrasyon, PACS veri modeli, ekran kontrolü |
| KDS / iş zekâsı | Ekranların örneklem yoluyla kontrolü |
Bu tablo bütçe açısından önemli çünkü testlerin bir kısmı sizin geliştirmenizi değil, ürünün başka sistemlerle entegre olmasını ölçüyor. LBYS yapıyorsanız LOINC eşleme çalışması, HBYS yapıyorsanız MKYS ve MHRS entegrasyonları ayrı iş kalemleridir ve e-Nabız gönderim hattına dâhil değildir. Tescile girmeden önce bunların hazır olması gerekir.
Üreticisi yurt dışında olan bir yazılımı temsil ediyorsanız kılavuz bir belge daha istiyor: apostil tasdikli distribütörlük sözleşmesi. Bu belgenin temini tek başına haftalar alabilir; takvime ayrı bir kalem olarak yazın.
Geliştirme Tarafında Gerçekten Ne Yapılıyor?
SYS servisinin sözleşmesi neredeyse boştur. WSDL tek bir operasyon tanımlar, SYSSendMessage, ve bu operasyon string alıp string döner. Yani kod üreticisi size tip güvenliği sağlamaz; bütün iş, doğru XML paketini kurmakta ve dönen kodu doğru yorumlamaktadır.
Endpoint : https://sys.sagliknet.saglik.gov.tr/SYS/SYSWS.svc
WSDL : https://sys.sagliknet.saglik.gov.tr/SYS/SYSWS.svc?wsdl
Binding : BasicHttpBinding_ISYSWS (WCF, SOAP 1.1)
Operation: SYSSendMessage // string in, string out
e-Nabız rehberi, sistemde "6 farklı kategoride 118 adet aktif veri paketi" bulunduğunu ve hemen ardından "Aktif paket sayısı değişiklik göstermektedir" uyarısını yapıyor. Rehberin kendi menüsünde 101'den 907'ye kadar numaralı paketler listeleniyor. Bu sayı sizin işinizin büyüklüğü değildir. Tipik bir poliklinik + laboratuvar akışı için gerçekten dokunacağınız paketler şunlardır:
| Paket | Adı | Neden ilk turda |
|---|---|---|
101 | Hasta Kayıt | SYSTakipNo burada üretilir; diğer her paket buna bağlanır. |
102 | Hizmet/İlaç/Malzeme Bilgisi Kayıt | Faturalama ve SUT tarafıyla temas eden ilk pakettir. |
103 | Muayene Bilgisi Kayıt | Tanı ve muayene verisi; klinik içeriğin çekirdeği. |
105 | Laboratuvar Sonuç Kayıt | LIS entegrasyonu varsa hacmin çoğu buradan gelir. |
106 | Çıkış Bilgisi Kayıt | Başvuruyu kapatır; eksikse kayıt yarım kalır. |
200 | Veri Paketi Silme | Düzeltme akışınız yoksa üretimde eliniz kolunuz bağlanır. |
402 / 404 | SYS Takip No / Hastane Referans No Sorgulama | Mutabakat ve tekrar gönderim mantığınızın temeli. |
Paket numaralarını ve zorunlu alan listesini koda gömmeyin. Rehberin kendi uyarısı bunu yapmamanız gerektiğini söylüyor; paket tanımlarını sürümlenmiş bir konfigürasyon tablosunda tutun, kod tarafında yalnızca şema doğrulaması ve gönderim mantığı olsun.
Gönderim katmanı ne kadar kod? Bu kadar.
Aşağıdaki PHP 8 örneği, gönderim katmanının iskeletini gösteriyor. İşin zor kısmının nerede olmadığını görmek için faydalı: SoapClient çağrısı üç satır, geri kalan her şey sonuç kodunun yorumlanması.
<?php
// PHP 8.4 · ext-soap gerekli. XML paketi ayrıca üretilip $paketXml'e konur.
$client = new SoapClient(
'https://sys.sagliknet.saglik.gov.tr/SYS/SYSWS.svc?wsdl',
['soap_version' => SOAP_1_1, 'trace' => true, 'connection_timeout' => 30]
);
$yanit = $client->SYSSendMessage(['input' => $paketXml]);
$ham = $yanit->SYSSendMessageResult; // string döner, tipli nesne değil
// Ham istek/yanıtı MUTLAKA saklayın; sorun anında tek kanıtınız budur.
$log->kaydet($client->__getLastRequest(), $ham);
$kod = sysSonucKodunuCikar($ham); // yanıt XML'inden sonuç kodu
match (true) {
$kod === 'S0000' => $kuyruk->basarili(),
in_array($kod, ['E0001','E0005','E0006','E0097','E1006'], true)
=> $kuyruk->yenidenDene(gecikme: 'ustel'),
$kod === 'E0020' => $kuyruk->beklet(saniye: 60), // dk'da 3 hata limiti
$kod === 'E2033' => $kuyruk->mevcutTakipNoyuEslestir($ham),
$kod === 'E2025' => $kuyruk->paketiBol(),
default => $kuyruk->oluMektup($kod, $ham),
};
Bu iskeletteki tek "akıllı" parça match bloğudur ve içindeki her dal, rehberdeki gerçek bir sonuç koduna karşılık gelir. Kalıcı hatayı (şema hatası, geçersiz kod) yeniden denemeye sokarsanız E0020 limitine çarparsınız; geçici hatayı ölü mektup kuyruğuna atarsanız veri kaybedersiniz. Ayrımı doğru yapmak, kod yazmaktan daha uzun sürer.
Test kodu ile gerçek ortam kodu iki ayrı şeydir
KTS kılavuzu bu ikisini açıkça ayırıyor. Gizlilik sözleşmesi imzalanan üreticiye önce "yazılım erişim test kodu" verilir ve uygunluk testleri bu kodla yapılır. Testleri geçen üreticiye ancak sonra, gerçek ortamda veri gönderebilmesi için "yazılım erişim kodu" teslim edilir. Kılavuz kodun muhafazasından üretici yetkilisini sorumlu tutuyor.
Buradan çıkan mimari kural: ortam seçimini if ($production) ile değil, konfigürasyondan okunan bir profille yapın. Test ve gerçek ortam kimlik bilgileri farklı olduğu için yanlış ortam seçiminin belirtisi E9004 olur ve bu kod size "yanlış ortamdasın" demez, sadece "kullanıcı adı veya şifre yanlış" der.
Adam-Gün Dökümü ve Fiyat Bandı
Aşağıdaki tablo, ininia'nın proje tahmin motorunda kullandığı kalibrasyon kurallarıyla hesaplanmıştır: kıdemli ve AI destekli bir ekip varsayımı, test için geliştirme toplamının %8-10'u, proje yönetimi ve teknik liderlik için ayrı ayrı %6-8'i, DevOps için sabit 3-6 gün, ve overhead toplamının hiçbir koşulda %25'i aşmaması kuralı.
| Kalem | Dar kapsam | Geniş kapsam |
|---|---|---|
| SOAP istemcisi, kimlik bilgisi yönetimi, kuyruk | 3 | 5 |
| Paket üretimi ve XML şema doğrulaması (5-8 paket) | 6 | 10 |
| Kod listesi senkronizasyonu ve sürümleme | 2 | 4 |
| Sonuç kodu yorumlama, yeniden deneme, ölü mektup kuyruğu | 3 | 4 |
| Gözlemlenebilirlik: ham istek/yanıt saklama, başarı oranı metriği | 2 | 3 |
| Geliştirme ara toplamı | 16 | 26 |
| Test + PM + teknik liderlik + DevOps (overhead, tavan %25) | 4 | 6 |
| Toplam adam-gün | 20 | 32 |
| 300 - 400 USD/adam-gün ile | 6.000 - 8.000 USD | 9.600 - 12.800 USD |
Bu tablo bir teklif değil, bir kontrol listesidir. Aldığınız teklifte "gözlemlenebilirlik" ve "kod listesi senkronizasyonu" satırları yoksa, o iş daha sonra ikinci bir faturayla karşınıza gelir. Kendi kapsamınız için hızlı bir bant görmek isterseniz proje fiyat hesaplama aracını kullanabilirsiniz.
Burası Kırılıyor: Sonuç Kodlarının Söylemediği Şeyler
e-Nabız rehberinin Sonuç Kodları tablosu, entegrasyonun gerçek maliyetinin nerede biriktiğini açık ediyor. Başarı tek koddur: S0000. Geri kalan her şey, sizin mimarinizin tasarlanmasını gerektiren bir durumdur.
| Kod | Mesaj | Mimarinize yansıması |
|---|---|---|
E2025 | XML boyutu 10 MB limitinin üzerinde | Toplu gönderim yapan bir gün sonu işinde paket bölme stratejisi zorunludur. Sonradan eklemek pahalıdır. |
E0020 | SysTakipNo başına hatalı istek limit aşımı. Limit: dakikada 3 istek | Naif bir "hata aldık, hemen tekrar dene" döngüsü sizi kilitler. Üstel geri çekilme ve takip numarası bazlı sayaç gerekir. |
E1009 | KABUL_ZAMANI 01.01.2019 öncesi olan kayıtlar için işlem yapılamaz | Geçmiş veri taşıma planınızın üst sınırı budur. Eski arşivi göndermeyi bütçelemeyin. |
E2033 | Bu HASTANE_REFERANS_NUMARASI ile daha önce alınmış bir SYSTakipNo var | Servis idempotent değil, ama çakışmada size kullanılabilir numarayı döndürüyor. Bunu hata değil, eşleştirme sinyali olarak işleyin. |
E2011 | Temel paketler 200 ile silinemez | 101, 102, 105, 106, 108, 201, 203, 268, 409, 502 ve 700 için düzeltme akışınız "sil ve yeniden gönder" olamaz. |
E1014 | Aşı bilgisi içeren hasta kaydı silinemez | 207 numaralı aşı veri setinde silme ve güncelleme kapalıdır. Yanlış aşı kaydı kalıcıdır; giriş tarafında doğrulayın. |
E8000 | SGK Bildirim kontrolü başarısız | 700 numaralı paket SGK tarafına dokunur. Yani Bakanlık hattınız, MEDULA verinizin doğruluğuna bağımlı hâle gelir. |
E9004 | Kullanıcı adı veya şifre yanlış | Test ve gerçek ortam kimlik bilgileri ayrıdır. Ortam seçimini koda değil konfigürasyona bağlayın. |
Bu listeye bakarak şunu söyleyebiliriz: e-Nabız entegrasyonunda pahalı olan şey mutlu yol değil, hata yolu. Gönderim kodunu bir günde yazarsınız. Dakikada üç hatayla kilitlenen bir servise karşı dayanıklı bir kuyruk, sürümlenmiş kod tabloları ve silinemeyen paketler için düzeltme stratejisi kurmak, işin geri kalanıdır.
Ölçmediğiniz tek metrik: gönderim başarı oranı
Sahada en sık görülen arıza, entegrasyonun sessizce bozulmasıdır. Servis 200 OK döner, SOAP zarfı geçerlidir, ama gövdedeki sonuç kodu E1007'dir ve kimse bakmıyordur. Aylar sonra kurum "veri gönderimi eksik" uyarısı alır. Bunu engellemenin yolu, gönderim başarı oranını birinci sınıf bir metrik olarak izlemek ve kod bazında dağılımını günlük raporlamaktır. Bu, tablodaki "gözlemlenebilirlik" satırının neden pazarlık konusu olmadığını açıklar.
Kendiniz mi Yazmalısınız, Tescilli Bir SBYS Üzerinden mi Gitmelisiniz?
Karar kuralı basit: hedefiniz ürün satmak mı, yoksa tek bir kurumun veri yükümlülüğünü kapatmak mı?
| Durumunuz | Öneri |
|---|---|
| Birden çok sağlık tesisine satacağınız bir yazılım geliştiriyorsunuz | KTS tescilini kendiniz alın. ISO 27001 ve SPICE/Ortak Kriterler yatırımını baştan planlayın; bunlar entegrasyon bütçesinden ayrı kalemlerdir. |
| Tek bir hastane için yardımcı bir modül yazıyorsunuz | Kurumun mevcut tescilli HBYS'si üzerinden gönderin. Kendi tescilinizi almak bu kapsam için orantısız. |
| Vatandaşa dönük bir mobil uygulama yapıyorsunuz | SYS gönderim tescili sizin probleminiz değil. Farklı bir izin ve rıza akışına bakıyorsunuz. |
| Mevcut HBYS'niz var ama gönderim sürekli hata veriyor | Yeni entegrasyon değil, teşhis işi alın. Çoğu vakada sorun sürümü geçmiş kod listeleri ya da kuyruğu olmayan gönderim mimarisidir. |
Sağlık tarafındaki tescil, HBYS mimarisi ve SKRS kod yönetimi konularını ayrıntılı ele aldığımız yazı: HBYS Nedir? Mimari, USS Entegrasyonu ve SBYS Tescili. Faturalama ayağı için ise MEDULA Entegrasyonu: SGK Web Servisleri yazımıza bakın; E8000 kodunun neden sizi ilgilendirdiğini orada göreceksiniz.
Teklif Alırken Sözleşmeye Koyacağınız Dört Madde
- Tescil beklemesi teslim süresine dâhil değildir. Kurum kaynaklı bekleme süreleri ayrı izlenir ve gecikme cezasına konu edilmez.
- Kapsam, paket numaralarıyla yazılır. "e-Nabız entegrasyonu" değil, "101, 102, 103, 105, 106, 200, 402 paketleri" denir. Sonradan eklenen her paket değişiklik talebidir.
- Kod listeleri sürümlenerek senkronize edilir. Sabit kodlanmış SKRS değerleri kabul edilmez.
- Gönderim başarı oranı teslim kriteridir. Kabul testinde "kod çalışıyor" değil, "son 7 günde
S0000oranı %X'in üzerinde" ölçülür.
Bu dördü sözleşmede varsa, e-Nabız entegrasyonu tahmin edilebilir bir iştir. Yoksa, kimsenin sorumluluğunu üstlenmediği bir kurum yazışması sürecine dönüşür.
Sırada Ne Var
Kendi kapsamınızı netleştirmek için sıradaki adım şu: rehberdeki paket listesini açın, hastanenizin (ya da müşterinizin) gerçekten ürettiği veri türlerini bu listeyle eşleştirin ve elinizde kalan paket sayısını sayın. Beş paketin altındaysanız yukarıdaki dar kapsam bandındasınız. On paketi geçtiyseniz geniş kapsam bandına geçtiniz ve muhtemelen laboratuvar veya radyoloji tarafı işin içine girdi.
Bu eşleştirmeyi birlikte yapmamızı isterseniz sağlık ve medikal yazılım sayfamıza ya da doğrudan iletişim sayfasına bakabilirsiniz.
Bu yazıdaki teknik ayrıntılar 25 Eylül 2026 tarihinde birincil kaynaklardan doğrulanmıştır: servis sözleşmesi sys.sagliknet.saglik.gov.tr/SYS/SYSWS.svc?wsdl, sonuç kodları ve veri paketi listesi rehber.enabiz.gov.tr, tescil adımları Sağlık Bakanlığı "Kayıt Tescil Sistemi Kayıt Aşamaları Kılavuzu" (2016), mevzuat ise 25.08.2022 tarihli 31934 sayılı Resmî Gazete'de yayımlanan Sağlık Bilgi Yönetim Sistemleri Hakkında Yönetmelik ve 03.07.2026 tarihli 33299 sayılı değişiklik. Adam-gün ve birim fiyat aralıkları ininia'nın kendi tahmin modelindeki değerlerdir (300-400 USD/adam-gün, overhead tavanı %25) ve bağlayıcı teklif değildir. Mevzuat ile servis sözleşmeleri değişebilir; üretime çıkmadan önce güncel kılavuzu teyit edin.