Klinik Arşiv Platformu — Mobil
Ceviz Flow
Hekimlerin ve araştırmacıların hasta, vaka ve takip kayıtlarını cihazda şifreli tek bir kronolojik dosyada tuttuğu mobil klinik arşiv; fotoğraf, DICOM, 3B model, belge ve klinik not aynı vaka dosyasında bir arada durur.
- Rol
- Backend ve veri katmanı geliştiricisi
- Dönem
- Ağustos 2026 — Devam ediyor
- Odak
- Klinik veriyi cihazda uçtan uca şifreli tutarken arama, karşılaştırma ve çok formatlı medyayı aynı vaka dosyasında çalışır durumda tutmak.
01 / Problem
Çözülmesi gereken neydi?
Klinik kayıt bugün dağınık yürüyor: fotoğraf hekimin kamera rulosunda ve oradan bulut yedeğinde, radyoloji görüntüsü hastane sisteminde, 3B model bilgisayarda bir klasörde, not kâğıtta. Bir vakanın tamamını görmek için üç ayrı yere bakmak, önce–sonra karşılaştırması için galeriden iki fotoğraf bulup ekran görüntüsü almak gerekiyor — ve ameliyat tarihi değiştiğinde eski tarih kayboluyor, neyin ne zaman değiştiği sonradan görülemiyor.
02 / Yaklaşım
Ürünü bir bütün olarak kurmak.
Arşivi sunucuya değil cihaza koyduk: klinik veri özel nitelikli kişisel veri, üstelik hekim kapsama alanı olmayan bir muayenehanede de kendi kayıtlarına ulaşabilmeli — bu yüzden kayıt numaralarını sunucu değil uygulama üretiyor. Şifreleme alan bazlı değil dosya bazlı, çünkü tam metin arama indeksi de aynı veritabanı dosyasının içinde ve alan bazlı şifrelemede klinik notlar o indeksten düz metin okunabilirdi. Kimlik doğrulama kendi servisimizde kalıyor, Firestore yalnızca depo olarak kullanılıyor.
03 / Teknik mimari
Sistemin katmanları
- 01
Flutter client
Özellik öncelikli Clean Architecture: her alan kendi data, domain ve presentation katmanını taşıyor. Ekranlar repository arayüzlerini görüyor; hangi implementasyonun bağlanacağına tek bir yer karar veriyor.
- 02
Encrypted local store
Drift üzerinden SQLite; veritabanı dosyasının tamamı SQLCipher ile şifreli, medya dosyaları ayrıca AES-GCM ile. Anahtar Keychain/Keystore'da duruyor, cihazdan çıkmıyor; arşiv varken anahtar bulunamazsa uygulama yeni anahtar üretmek yerine hata veriyor.
- 03
Account service
Dart ve Shelf ile yazılmış, Cloud Run üzerinde çalışan hesap servisi; Firestore yalnızca depo. Parola özeti Argon2id ile burada üretiliyor, saklanan şey oturum belirtecinin kendisi değil SHA-256 özeti, istemcinin Firestore erişimi tamamen kapalı.
- 04
Capture contract
Yönlendirmeli klinik çekim ekranı, görüntü işleme motoruyla arasındaki JSON sözleşmesine karşı geliştirildi: tespit güveni, açısal sapma, merkez hatası, hizalama skoru ve yönlendirme komutu. Motor henüz yazılmadı; ekran bugün mock bir kaynakla çalışıyor, motor bağlandığında yalnızca kaynak değişecek.
04 / Ürün kapsamı
Öne çıkan özellikler
- 01
Hasta → vaka → takip hiyerarşisiyle kronolojik vaka dosyası
- 02
Fotoğraf, DICOM, 3B model, belge ve klinik notu aynı takip noktasında toplama
- 03
Branşa göre hazır takip şablonları
- 04
Aynı hastanın farklı dönem fotoğraflarını önce–sonra karşılaştırma
- 05
3B modeli uygulamanın kendi görüntüleyicisinde açma
- 06
Klinik notlarda ve tanılarda Türkçe tam metin arama
05 / Stack
Bu iş için kullanılan araçlar.
- Flutter
- Dart
- GetX
- Drift
- SQLite
- SQLCipher
- AES-GCM
- Argon2id
- Shelf
- Cloud Run
- Firestore
- three.js
- WebView
- Keychain / Keystore
Arayüz
Ürün ekranları




Sonuç
Ne değişti?
MVP geliştirme sürüyor. Kayıt, giriş ve oturum yönetimi canlı servise karşı çalışıyor; cihaz içi şifreli arşiv, fotoğraf çekimi ve saklama, karşılaştırma, tam metin arama, değişiklik geçmişi, 3B görüntüleyici ve takip hatırlatmaları uçtan uca çalışır durumda. DICOM dosyası arşive giriyor ancak görüntüleyicisi henüz yok; kullanıcı kendi şablonunu oluşturamıyor; anatomik yakalama motoru, bulut senkronizasyonu ve web arayüzü henüz yazılmadı.
