· 2026
Fonet HBYS veri anonimleştirici
Hastanenin HBYS sisteminden alınan ham acil servis verisini, retrospektif araştırmaya uygun, kimliksizleştirilmiş veri setlerine dönüştüren bir masaüstü uygulaması.
Sorun
Yürüttüğüm retrospektif çalışmaların hepsi aynı ham veriye dayanıyor: hastanenin HBYS sisteminin (Fonet) ürettiği acil servis kayıt dökümleri. Bu dökümler ham hâlleriyle araştırmada kullanılamaz — içlerinde TC kimlik numarası, ad-soyad, telefon, adres var. Araştırma için bu alanların çıkarılması, doğum tarihinin yıla yuvarlanması, doktor adlarının takma adlara çevrilmesi gerekiyor. Bunu her çalışma için elle yapmak hem yorucu hem de hata yapmaya açık; bir kez bir kimlik alanını unutmak, kimliksizleştirilmiş sanılan bir veri setinde gerçek kimlik bilgisi bırakmak demek.
Buna ek olarak Fonet’in dökümleri teknik olarak zahmetli: eski BIFF .xls formatında geliyorlar, Türkçe karakter kodlaması bozuk okunabiliyor, ve tek bir aydan fazla veri istediğinizde dosya satır sınırını aşıp birden çok sayfaya bölünüyor — bu sayfaların bir kısmında başlık satırı tekrar basılmıyor.
Ne yaptım — ve ilk versiyonun neden başarısız olduğu
İlk versiyonu bir Flask web aracı olarak yazdım. Çalışıyordu — ama yazılım geçmişi olmayan hekim arkadaşlarım onu kullanamadı, çünkü çalıştırmak için bir Python ortamı kurmaları gerekiyordu. pip install, sanal ortam, komut satırı — bunlar bana görünmez bir engel değil, ama yazılım tecrübesi olmayan uzman doktorlara öyle. Araç teknik olarak çalışıyordu ve pratikte işe yaramazdı, çünkü “pratik” kelimesi “hedef kullanıcı bunu açabiliyor mu” sorusunu da içeriyor.
Bunun üzerine aracı sıfırdan, C# ve WPF ile bir Windows masaüstü uygulaması olarak yeniden yazdım. Tek bir paketlenmiş çalıştırılabilir dosya — çift tıkla, açılır. Python yok, kurulum yok, komut satırı yok. Daha tanıdık bir dilde, daha kolay bir şey yazmadım; daha az tanıdık bir dilde (C#‘ı bu proje için öğrendim), daha karmaşık bir şey yazdım — ama benim için kolay olan seçim, onlar için imkânsız olan seçimdi.
Yeni versiyon dosyaları içeri alıyor, kimlik alanlarını çıkarıyor, doğum tarihini yıla yuvarlıyor, doktor adlarını Dr_1, Dr_2 şeklinde takma adlara çeviriyor, ve R veya Python’da analize hazır bir CSV üretiyor. Ayrıca bir özet paneli var — tanı dağılımı, yaş histogramı, başvuru saatleri, kalış süreleri — ve bu grafiklerin her bir öğesine tıklayınca o filtreyle satır görünümüne geçiliyor.
Teknik olarak ilginç olan ne
İki şey.
Birincisi, bir veri bütünlüğü kuralı: türetmeden önce kimliksizleştirme yapılamaz. Aracın ürettiği veri setinde, bir hastanın o ay kaç kez başvurduğu da bir sütun olarak yer alıyor. Bu sayıyı hesaplamak için hastayı TC kimlik numarasından gruplamak gerekiyor — ama TC kimlik numarası, kimliksizleştirme adımında çıkarılan ilk şey. Yani hasta-bazlı her türlü hesaplama, kimlik bilgisi hâlâ bellekteyken yapılmak zorunda; kimliksizleştirilmiş çıktının üzerinde artık gruplama yapılamaz, çünkü gruplama anahtarı silinmiş oluyor. Bu, sıralamayı zorunlu kılan bir kural: önce türet, sonra kimliksizleştir. Kulağa basit geliyor ama tersini yapmak çok kolay, ve tersini yaptığınızda hata sessiz — kod çalışır, çıktı yanlış olur.
İkincisi, Fonet’in çok-sayfalı dökümlerindeki sessiz veri bozulması. Fonet, eski Excel formatının 65.535 satırlık sayfa sınırını aşan dökümleri birden çok sayfaya bölüyor — ama bu sayfaların hepsinde başlık satırını tekrar basmıyor. Excel okuyucu kütüphanesinin varsayılan ayarıyla, başlıksız sayfalardaki satırlar her alanı boş olan kayıtlar olarak okunuyordu: veri kaybı, ama hata vermeden. Çözüm, başlığı yalnızca ilk sayfadan okuyup tüm sayfalara uygulamak, ve başlığın tekrar basıldığı durumu da ayrıca tespit edip o satırı atlamak.
İlk versiyonun kodu hâlâ açık: data_extractor_tool. Çalışan Flask aracı olarak duruyor — ama artık kullanılmıyor, ve neden kullanılmadığı bu projenin asıl dersi.
Sonuç
C# versiyonu, devam eden retrospektif çalışmaların veri hattı olarak kullanılıyor. Hekim arkadaşlar artık kendi veri setlerini kendileri çıkarabiliyor — bana bir Python ortamı kurdurmak zorunda kalmadan, sadece bir dosyayı çift tıklayarak.
Bu proje bana, “kendi makinemde çalışıyor” ile “meslektaşlarımın makinesinde çalışıyor” ifadelerinin aynı şey olmadığını öğretti. Portföydeki tek dosyalık HTML araçları — konsültasyon üretici, çizelge araçları — bu dersi zaten öğrenmiş hâlde tasarlandı. Bu proje, bu dersi öğrendiğim yer.