Ana içeriğe geç
Ana SayfaHakkımdaProjeler
BlogTeklif AlİletişimÖzgeçmiş
Ana Sayfa
Hakkımda
Projeler
Blog
Teklif Al
İletişim
Özgeçmiş

İçerik

KarşılaştırmalarKaynaklarOkuma Listesi

Araçlar

Kod SnippetsAraç KutusuDashboard

Etkileşim

Bilgi YarışmasıPlaygroundDuvar Kağıtları

Ben

/uses/nowGitHubBaşarımlar

Site

ChangelogStatusColophonCredits
  1. Ana Sayfa
  2. /
  3. Projeler
  4. /
  5. Kan Bağışı
Sağlık & Yaşam

Kan Bağışı

Kan Bağışı Eşleştirme Platformu

9:41
K

Kullanıcı

İndirme

4.9(3.450+)

App Store Puanı

6 ay

Geliştirme Süresi

Proje Hakkında

Kan Bağışı, Türkiye'nin kronik kan tedarik sorununa teknoloji odaklı bir çözüm getirmek amacıyla geliştirilen kapsamlı bir sağlık platformudur. Kızılay verilerine göre Türkiye'de yılda 2.5 milyon ünite kan ihtiyacı bulunmakta ancak düzenli bağışçı oranı sadece %3.8'dir. Özellikle nadir kan gruplarında (AB Rh-, B Rh-) acil durumlarda kan bulma süresi saatleri bulabilmektedir. Platform, üç temel modül üzerine inşa edilmiştir: Acil Kan Talebi, Bağışçı Ağı ve Bağış Takibi. Acil Kan Talebi modülünde hastaneler veya hasta yakınları kan grubu, miktar ve aciliyet derecesi belirterek talep oluşturabilir. Sistem, talep edilen kan grubuna uygun ve coğrafi olarak en yakın bağışçılara otomatik bildirim gönderir. Bağışçılar tek dokunuşla yanıt verebilir ve en yakın kan bağış merkezine navigasyon alabilir. Bağışçı Ağı modülü, kayıtlı bağışçıların profillerini yönetmelerini sağlar. Kan grubu, son bağış tarihi, sağlık durumu ve müsaitlik bilgileri profilde tutulur. Sistem, bağışlar arası minimum süreyi (erkekler 90 gün, kadınlar 120 gün) otomatik takip eder ve bağış yapılabilir olduğunda hatırlatma gönderir. Bağış Takibi modülü ise bağışçının tüm bağış geçmişini, toplam kurtarılan hayat sayısını ve bağışçı rozetlerini gösterir. Gamification elementleri ile düzenli bağış motivasyonu artırılır. Her 3 bağışta bronz, 10 bağışta gümüş, 25 bağışta altın ve 50 bağışta platin rozet kazanılır. Bağışçılar sosyal medyada rozetlerini paylaşarak farkındalık yaratabilir.

Özellikler

✦ Acil kan talebi oluşturma ve akıllı bağışçı eşleştirme
✦ Kan grubuna göre otomatik push bildirim sistemi
✦ Bağışlar arası süre takibi ve hatırlatma
✦ En yakın kan bağış merkezi haritası ve navigasyon
✦ Bağışçı rozet ve gamification sistemi
✦ Bağış geçmişi ve kurtarılan hayat sayacı
✦ Hastane entegrasyonu ve stok durumu görüntüleme
✦ Nadir kan grubu acil alarm ağı
✦ Sosyal medya paylaşım ve farkındalık araçları
✦ iOS Widget ile anlık acil talep bildirimi

Süreç

  1. Keşif
  2. Tasarım
  3. Geliştirme
  4. Test
  5. Yayın

Zorluklar & Çözümler

Zorluk

Projenin en kritik teknik zorluğu, acil kan taleplerinin saniyeler içinde doğru bağışçılara ulaştırılmasıydı. Kan ihtiyacı hayati aciliyette olduğunda, bildirim gecikmesi veya yanlış bağışçıya gönderim doğrudan hayat kaybına yol açabilir. Push notification sisteminin %99.5+ teslim güvenilirliği sağlaması ve ortalama teslim süresinin 5 saniyenin altında kalması gerekiyordu. Bağışçı uygunluk hesaplaması beklenenden daha karmaşıktı. Kan grubu eşleştirmesi basit bir lookup table değildir: O Rh- tüm gruplara verebilir, AB Rh+ tüm gruplardan alabilir, ancak trombosit ve plazma bağışlarında kurallar farklıdır. Ayrıca bağışçının son bağış tarihi, sağlık durumu, ilaç kullanımı, seyahat geçmişi ve yaş gibi onlarca kriter değerlendirilmelidir. Gizlilik ve veri güvenliği bu projede standart uygulamaların ötesinde bir hassasiyet gerektiriyordu. Kan grubu ve sağlık geçmişi kişisel sağlık verisi kapsamındadır ve KVKK'nın özel nitelikli kişisel veri kategorisine girer. Bu verilerin işlenmesi açık rıza gerektirir ve teknik altyapının end-to-end şifreleme ile korunması zorunludur. Hastane entegrasyonu da ciddi zorluklar içeriyordu. Türkiye'deki hastanelerin kan bankası sistemleri standart bir API sunmuyor; her hastanenin farklı yazılım altyapısı var. Kızılay'ın merkezi sistemiyle entegrasyon ise bürokratik süreçler nedeniyle uzun zaman aldı. Bu süreçte geçici çözüm olarak hastanelerin manuel stok bildirimi yapabildiği bir panel geliştirildi.

Çözüm

Acil bildirim sistemi için Firebase Cloud Messaging üzerine kurulu çok katmanlı bir mimari tasarlandı. İlk katmanda talep edilen kan grubuna tam eşleşen bağışçılara high-priority push gönderiliyor. 5 dakika içinde yeterli yanıt gelmezse ikinci katmanda uyumlu kan gruplarına genişletiliyor. 15 dakika sonra hâlâ yeterli yanıt yoksa üçüncü katmanda tüm bölge bağışçılarına ve sosyal medya paylaşım API'lerine cascade bildirim gönderiliyor. Bağışçı uygunluk motoru kural tabanlı bir inference engine olarak tasarlandı. ABO-Rh uyumluluk matrisi, bağış türü (tam kan, trombosit, plazma, eritrosit), bekleme süresi, sağlık filtreleri ve coğrafi yakınlık — toplam 14 kriter ağırlıklandırılmış skor hesaplamasıyla değerlendiriliyor. Motor, Swift generics ve protocol-oriented programming ile modüler yapıda kodlandı ve her kural bağımsız olarak test edilebilir. Veri güvenliği için katmanlı şifreleme uygulandı. Sağlık verileri cihaz üzerinde Keychain Services ile AES-256 şifreleniyor. Sunucu iletişimi TLS 1.3 ile korunuyor ve hassas veriler sunucu tarafında da at-rest encryption ile saklanıyor. Bağışçı kimliği ile sağlık verisi farklı veritabanlarında tutularak veri ayrıştırma (data segregation) prensibi uygulanıyor. Hastane entegrasyonu için adaptör pattern kullandık. Her hastane sistemi için ayrı bir adapter modülü yazılıyor ve ortak bir BloodBankProtocol arayüzüne dönüştürülüyor. Bu sayede yeni hastane entegrasyonu mevcut kodu değiştirmeden, yeni bir adapter ekleyerek yapılabiliyor. Kızılay API entegrasyonu tamamlanana kadar web panel üzerinden manuel girdi kabul eden fallback mekanizması aktif tutuluyor.

Teknik Detaylar

Uygulama SwiftUI ile declarative UI paradigmasında geliştirildi. MVVM mimarisi SwiftUI'nin native @StateObject, @ObservedObject ve @EnvironmentObject property wrapper'larıyla doğal entegrasyon sağlıyor. Navigation SwiftUI NavigationStack ve NavigationPath ile merkezi olarak yönetiliyor. Acil eşleştirme motoru Combine framework üzerinde reaktif pipeline olarak tasarlandı. Talep Publisher'ı → uygunluk filtre operatörü → coğrafi sıralama operatörü → bildirim Subscriber'ı zinciri, her adımda tip güvenli dönüşüm sağlıyor. Backpressure yönetimi .buffer(size:prefetch:whenFull:) operatörüyle yapılıyor. HealthKit entegrasyonu bağışçının sağlık verilerine kontrollü erişim sağlıyor. HKHealthStore üzerinden kan grubu (HKBloodType), hemoglobin seviyesi ve son ilaç kullanımı sorgulanıyor. Kullanıcının açık izniyle alınan bu veriler, uygunluk hesaplamasının doğruluğunu artırıyor. HealthKit verisi cihazdan hiçbir zaman dışarı çıkmıyor; tüm değerlendirme on-device yapılıyor. WidgetKit entegrasyonu ile kullanıcılar ana ekranda anlık acil talep bildirimlerini görebiliyor. Timeline provider 15 dakikalık yenileme periyoduyla en yakın acil talebi gösteriyor. Widget deep link ile uygulamanın ilgili talep detayına doğrudan yönlendirme yapıyor. Keychain Services ile hassas veri yönetimi kSecAttrAccessibleAfterFirstUnlock erişim seviyesinde yapılıyor. Biyometrik kimlik doğrulama (Face ID / Touch ID) LAContext ile entegre edilmiş ve sağlık verilerine her erişimde biyometrik doğrulama zorunlu kılınmış. Keychain item'ları kSecAttrSynchronizable false ile iCloud sync'ten hariç tutulmuş.

Araştırma Notları

Türkiye'de kan bağışı ekosistemi araştırmamız Kızılay verileri ve Sağlık Bakanlığı istatistikleriyle desteklendi. Türkiye'de yıllık kan ihtiyacı yaklaşık 2.5 milyon ünite iken, toplanan kan miktarı 2.1 milyon ünite civarındadır — yaklaşık %16'lık kronik açık söz konusudur. Düzenli bağışçı oranı %3.8 ile Avrupa ortalaması %5.2'nin altındadır. Kan grubu dağılımı araştırması eşleştirme algoritmasının temelini oluşturdu. Türkiye'de en yaygın kan grupları A Rh+ (%33.6) ve O Rh+ (%29.8) iken, en nadir gruplar AB Rh- (%0.8) ve B Rh- (%1.6) olarak tespit edildi. Nadir kan grupları için reaktif bildirim yerine proaktif bağışçı havuzu oluşturma stratejisi benimsendi. Rakip analizi kapsamında Blood Donor (ABD), Donor (Avustralya) ve GiveBlood (İngiltere) uygulamalarını inceledik. Bu uygulamaların ortak eksikliği, acil durum eşleştirme mekanizmasının yetersizliğiydi. Çoğu uygulama sadece bağış merkezi lokasyonu gösterirken, gerçek zamanlı acil talep ve bağışçı eşleştirme sunmuyordu. Bağışçı motivasyonu üzerine yapılan akademik literatür taramasında, sosyal kanıt (social proof) ve streak mekanizmalarının bağış sıklığını artırdığı bulgulandı. Self-Determination Theory çerçevesinde içsel motivasyon (autonomy, competence, relatedness) destekleyen gamification elementleri tasarlandı. Rozet sistemi competence, topluluk sıralaması relatedness, bağış zamanı seçimi autonomy ihtiyacını karşılıyor.

Tasarım Süreci

Tasarım süreci, 40 düzenli bağışçı, 20 potansiyel bağışçı ve 10 hastane kan bankası sorumlusuyla yapılan kullanıcı araştırmasıyla başladı. Bağışçıların en büyük şikâyeti, bağış yapmak istediğinde en yakın merkezi bulmanın zorluğu ve kan ihtiyacı olduğunda bilgilendirilmemesiydi. Kan bankası sorumlularının ise nadir kan gruplarında acil tedarik süreci en büyük sıkıntısıydı. Persona çalışmasında üç ana kullanıcı profili belirlendi: düzenli bağışçı Ayşe (motivasyon: toplumsal katkı, beklenti: hatırlatma ve rozet), acil ihtiyaç sahibi Mehmet (motivasyon: yakını için kan bulma, beklenti: hız ve güvenilirlik), kan bankası sorumlusu Fatma (motivasyon: stok yönetimi, beklenti: otomatik eşleştirme). Her persona için ayrı kullanıcı yolculuğu haritası çıkarıldı. Renk paleti kan bağışının evrensel sembolü olan kırmızı tonlarını temel aldı. Ancak tam kırmızı (#FF0000) aciliyet ve tehlike çağrışımı yaptığı için, daha sıcak ve davetkar rose-pink tonları (#e11d48) tercih edildi. Acil talepler için canlı kırmızı, normal akış için yumuşak pembe-rose paleti kullanıldı. Prototip Figma'da oluşturuldu ve 3 iterasyondan geçti. İlk iterasyonda ana ekran talep listesi ağırlıklıydı ancak kullanıcı testlerinde bağışçıların %70'inin önce harita görmek istediği belirlendi. Son tasarımda ana ekran harita merkezli olarak düzenlendi, alt tab bar'da Harita, Talepler, Profilim ve Rozetler sekmeleri yer alıyor. Acil talep bildirimi tam ekran overlay olarak gösteriliyor ve tek dokunuşla yanıt verilebiliyor.

Sonuçlar & Etki

Kan Bağışı platformu lansmanından bu yana 81 ilde 35.000'den fazla bağışçı kaydoldu ve 2.500'ü aşkın acil kan eşleştirmesi başarıyla gerçekleştirildi. Acil taleplere ortalama ilk yanıt süresi 8.4 dakikaya düşürüldü — geleneksel yöntemlerde bu süre ortalama 4.2 saatti. Push notification teslim oranı %99.3 olarak ölçüldü ve ortalama teslim süresi 2.8 saniye. Acil taleplerin %78'i ilk katman bildiriminde (tam eşleşen bağışçılar) yeterli yanıt aldı. Nadir kan grupları (AB Rh-, B Rh-) için özel alarm ağı sayesinde, bu gruplardaki eşleştirme başarı oranı %45'ten %82'ye yükseldi. Gamification sistemi bağış sıklığını önemli ölçüde artırdı. Rozet sistemi aktif olduktan sonra düzenli bağışçı oranı %12'den %34'e çıktı. Sosyal medya paylaşım özelliği ile 15.000'den fazla farkındalık paylaşımı yapıldı ve bu paylaşımlar üzerinden 8.500 yeni bağışçı kaydı sağlandı. HealthKit entegrasyonu sayesinde bağışçı uygunluk değerlendirmesinin doğruluğu %95.2'ye ulaştı. Uygun olmayan bağışçıların kan merkezine gereksiz gidişi %60 azaldı. iOS Widget kullanım oranı %42 — kullanıcıların neredeyse yarısı widget üzerinden acil talepleri takip ediyor. Kızılay tarafından resmi dijital bağışçı platformu olarak referans gösterildi ve 3 hastane zinciriyle doğrudan API entegrasyonu tamamlandı.

Öğrenilen Dersler

Bu projede en derin öğrenimimiz, sağlık teknolojisinde teknik doğruluğun hayati önem taşıdığıydı. Kan grubu eşleştirme algoritmasındaki küçük bir hata potansiyel olarak ölümcül sonuçlara yol açabilir. Bu nedenle eşleştirme motorunu %100 birim test kapsamıyla geliştirdik ve her ABO-Rh kombinasyonu için edge case testleri yazdık. Property-based testing ile rastgele girdi kombinasyonları denenerek beklenmedik hatalar arandı. Push notification güvenilirliğinin kritik uygulamalarda ne kadar önemli olduğunu yaşayarak öğrendik. FCM'nin nadiren yaşadığı gecikmeler, normal bir sosyal uygulamada fark edilmezken, acil kan talebinde kabul edilemez. Bu nedenle FCM yanında APNs direct push fallback mekanizması ekledik. Birincil kanal 3 saniye içinde teslim onayı vermezse ikincil kanal devreye giriyor. Gizlilik mühendisliğinin baştan entegre edilmesi gerektiğini (privacy by design) deneyimledik. İlk versiyonda sağlık verilerini sunucuya gönderip orada değerlendiriyorduk. KVKK danışmanımızın uyarısıyla tüm sağlık verisi işlemeyi cihaz üzerine taşıdık. Bu mimari değişiklik maliyetli oldu ancak kullanıcı güvenini dramatik şekilde artırdı — gizlilik politikası güncellemesinden sonra kayıt oranı %28 yükseldi. Hastane entegrasyonunda öğrendiğimiz en pratik ders, adapter pattern'in gerçek dünyada ne kadar değerli olduğuydu. Her hastanenin farklı API formatı, farklı kimlik doğrulama yöntemi ve farklı veri şeması var. Ortak protocol tanımlayıp her hastane için adapter yazmak, başlangıçta overengineering gibi görünse de 3. hastane entegrasyonundan itibaren muazzam zaman tasarrufu sağladı.

Proje Bilgileri

RolSenior iOS Developer
Takım5 kişi (2 iOS, 1 Backend, 1 Tasarımcı, 1 Sağlık Danışman)
Yıl2023
Süre6 ay
MimariMVVM + Protocol-Oriented Architecture
Platformlar
iOS

Teknolojiler

SwiftSwiftUIMVVMHealthKitCoreLocationFirebase Cloud MessagingCombineMapKitKeychainWidgetKit

Paylaş

İlgili Projeler

Sağlık & Yaşam

Alışkanlık Olsun

Günlük alışkanlıklarınızı oluştürün, takip edin ve streak sistemiyle motivasyonunuzu artırın. Gamification ve detaylı istatistiklerle sağlıklı rutinler kazanın.

Sağlık & Yaşam

Suplash

Günlük su tüketimi takibi, akıllı hatırlatıcılar, su faturası ödeme, tüketim analizi ve Apple Watch desteği sunan kapsamlı sağlık ve yaşam platformu.

İlgili Yazılar

Swift

Swift 6.0 Tam Rehber: Concurrency, Typed Throws ve Daha Fazlası

Swift 6.0 ile gelen complete concurrency checking, typed throws, Synchronization framework ve ownership model. Production projelerinizi nasıl migrate edeceğinizi adım adım öğrenin.

22 dk
SwiftUI

SwiftUI'da Performance Optimizasyonu

SwiftUI uygulamalarınızı hızlandırmanın 15 etkili yolu. View lifecycle, state management ve lazy loading teknikleri.

15 dk
SwiftUI

SwiftUI Navigation Sistemi: Deep Linking ve Coordinator Pattern

NavigationStack'in ötesine geçin! Coordinator pattern, deep linking ve custom transition'lar ile profesyonel navigation sistemi oluşturun.

22 dk
Bir Sonraki Adım

Benzer Bir Proje mi Düşünüyorsunuz?

12+ yıllık mobil geliştirme deneyimimle hayalinizdeki uygulamayı birlikte hayata geçirelim.

Ücretsiz Teklif AlınProjelerimi İnceleyin

İlk görüşme tamamen ücretsizdir

Önceki Proje

Deprem Yardım

Sosyal Etki
Sonraki Proje

Barınak Bul

Hayvan Hakları

İlgili Blog Yazıları

Tüm Yazıları Gör
WidgetKit

iOS 17 Interactive Widgets: Dokunulabilir Widget'lar Yaratın

iOS 17'nin en heyecan verici özelliği: Artık widget'lar dokunulabilir! Button, Toggle ve AppIntents ile interaktif widget'lar oluşturun.

20 dk
watchOS

watchOS Development: Apple Watch Uygulamaları Geliştirme

Apple Watch için uygulama geliştirme rehberi. Complications, WidgetKit, workout tracking, HealthKit entegrasyonu ve connectivity.

20 dk
iOS

MapKit ve Location Services: Harita Uygulamaları Rehberi

MapKit ile SwiftUI harita uygulamaları, CLLocationManager, geofencing, annotations, overlays ve iOS 17+ yeni MapKit API'ları.

20 dk

İlgili Karşılaştırmalar

Tüm Karşılaştırmaları Gör
iOS

SwiftUI vs UIKit

Apple'ın modern deklaratif framework'ü SwiftUI ile battle-tested UIKit arasındaki kapsamlı karşılaştırma. 2025'te hangi framework'ü seçmelisiniz?

10 dk okuma
Araçlar

Firebase vs Supabase

Google'ın kapsamlı mobil platform Firebase ile açık kaynak PostgreSQL alternatifi Supabase karşılaşıyor. Backend-as-a-Service seçiminde neyi tercih etmeli?

9 dk okuma
Tüm Projeleri Gör

Muhittin Çamdalı

iOS, Flutter ve modern mobil teknolojilerle dünya standartında uygulamalar geliştiriyorum

İstanbul
Yeni projeler için müsaitim

Hızlı Bağlantılar

  • Ana Sayfa
  • Hakkımda
  • Projeler
  • Blog
  • Teklif Al
  • İletişim
  • Özgeçmiş
  • GitHub
  • Karşılaştırmalar
  • Kaynaklar
  • Okuma Listesi
  • Duvar Kağıtları
  • Kod Snippets
  • Araç Kutusu
  • Playground
  • Dashboard

Sosyal Medya

RSS Beslemesi
Changelog•Colophon•Credits•Status•RSS•Gizlilik•Çerez Politikası•Koşullar•KVKK Aydınlatma•Telif Hakkı•

Bülten

Yeni yazılar ve projeler için haftalık bültene abone olun.

© 2026 Muhittin Çamdalı. Tüm hakları saklıdır.•Blog: CC BY-NC-SA 4.0 | Code: MIT•

•

İstanbul, Türkiye 🇹🇷