

ClinicPulse
SaaS · PWAÇok kiracılı klinik yönetim sistemi.
SEKTÖR
Klinik yönetim sistemi, psikolog paneli, ameliyathane uygulaması ve beslenme takibi: sağlık verisini nasıl ayırdığımızı ve neyi iddia etmediğimizi anlatıyoruz.
KISA CEVAP
Sağlık alanında çok kiracılı klinik yönetim sistemi ClinicPulse’ı, psikologlar için PsiLog’u, omurga cerrahisi ekipleri için ProcedureLogic’i ve beslenme uygulaması FitZen’i geliştirdik. ClinicPulse’ta kiracı ayrımı on tabloda 34 satır güvenliği politikasıyla veritabanında, hassas alanlar AES-256-GCM ile şifreli. HIPAA uyumu ya da tıbbi cihaz sertifikası iddiamız yok; hangi korumayı nasıl kurduğumuzu kodla anlatıyoruz.
Çok kiracılı bir klinik yazılımında ayrımı uygulama katmanına bırakmak riskli: tek bir eksik where clinic_id = … filtresi başka bir kliniğin hasta kaydını açar. ClinicPulse’ta bu yüzden uygulama kodunun doğru davranmasına güvenilmiyor. İlk migration on tabloyu ve satır güvenliğini birlikte kuruyor, admin politikaları ayrı bir migration’da; toplam 34 politika var.
Profiller, klinikler, personel, abonelikler, hastalar, randevular, tedaviler, belgeler ve WhatsApp kayıtları tek şemada. Yeni bir klinik eklemek bir kayıt satırı; her klinik için ayrı kurulum ya da ayrı veritabanı gerekmiyor.
Satır güvenliği satırı korur, alanın içeriğini korumaz. Bu yüzden hassas alanlar ayrıca şifreleniyor: lib/encryption.ts AES-256-GCM, 12 baytlık IV ve enc: önekiyle çalışıyor. Anahtar 64 karakterlik bir hex değeri ve tanımlı değilse uygulama hiç başlamıyor; anahtarı unutan bir ortam sessizce düz metin yazamıyor.
Personel davet bağlantısıyla katılıyor, platform admini klinikleri ve abonelikleri ayrı bir panelden yönetiyor. Hangi alanların şifreleneceğini sizin veri modelinize göre keşifte birlikte belirliyoruz.
ClinicPulse’ta hatırlatmaların WhatsApp üzerinden gitmesi isteniyordu. Bunun teknik bir kısıtı var: Meta’nın mesaj şablonları dil bazlı ve onaylı olmak zorunda. lib/whatsapp.ts Meta Graph API’ye gidiyor ve şablonu kliniğin diline göre seçiyor; klinik kendi diline ait onaylı şablonu taşımadan gönderim yapılmıyor.
Randevudan 24 saat önceki hatırlatmalar api/cron/reminders rotasıyla tetikleniyor. Gönderim ucu dakikada on istekle sınırlı, yani kontrolsüz bir gönderim bu sınırın üstüne çıkamıyor. WhatsApp kayıtları hastalar ve randevularla aynı şemada tutuluyor. Hatırlatmanın hangi kanaldan, kaç saat önce ve hangi dilde gideceği ürünün kuralı; bu kuralları kliniğinizin işleyişine göre keşifte birlikte yazıyoruz.
Arayüz Türkçe ve İngilizce, PDF şablonları uygulamanın içinde. Vitest paketi admin, API, sabitler, ortam değişkenleri, dil dosyaları, abonelik, yardımcılar ve doğrulamaları kapsayan sekiz dosyadan oluşuyor. ClinicPulse kurulabilir bir PWA olarak yayında; kendi ürünümüz olduğu için kararları ve kodu ayrıntısıyla anlatabiliyoruz.
PsiLog psikologlar için danışan, seans ve terapi planı yönetimi. Burada iki taraf aynı kayda bakıyor ama aynı şeyi görmemeli: psikolog seans notunu ve risk değerlendirmesini görür, danışan kendi planını, ödevlerini ve ruh hali kaydını.
İki yüzey tek Next.js uygulamasında, ayrı rota gruplarında duruyor. (dashboard) altında psikologun danışanları, takvimi, seans notları, faturalandırması ve ayarları; (portal)/portal altında danışanın değerlendirmeleri, planı, seansları, ödevleri, belgeleri ve ruh hali kaydı. Kimin neyi göreceği arayüzde değil, satır güvenliği politikalarında tanımlı.
Alan on bir migration’la adım adım kuruldu: başlangıç şeması, terapi planları, seans notları, değerlendirmeler, ruh hali kayıtları, ödevler, risk değerlendirmeleri, onam formları, admin, abonelik süresi dolumu ve depolama. Her adım kendi RLS politikalarıyla geliyor; yeni bir tablo politikasız eklenmiyor.
Danışan davetle katılıyor, onam formu süreç içinde. Hatırlatma ve davet e-postaları API rotalarından, süresi dolan abonelikler veritabanı tarafında cron ile kapatılıyor. PsiLog geliştirme aşamasında, Türkçe ve İngilizce, birim testleri Vitest ile.
ProcedureLogic, ortopedik prosedürleri, takvimi ve ekip koordinasyonunu birleştiren bir mobil çalışma alanı. Bir omurga prosedürü onlarca adım, kontrol listesi ve onaydan oluşuyor; her cerrahın tercihi de standart akıştan biraz sapıyor. Ekip ameliyathanede doğru adımı ve doğru cerrah tercihini hemen görmeli.
ACDF, PCF, TLIF gibi prosedürler sıralı kartlar olarak modellendi. Her kartın kontrol listesi ve onay maddeleri var; ilerleme kart indeksiyle ve tamamlanma istatistikleriyle izleniyor. Cerrah tercihleri bir delta sistemiyle tutuluyor: standart kart sabit kalıyor, cerraha özgü fark onun üstüne biniyor. Böylece standart prosedür güncellendiğinde her cerrah için ayrı kopya düzeltmek gerekmiyor.
Planlanan vakalar tarih, saat, hastane ve ameliyathane bilgisiyle listeleniyor. Uygulama veriyi Firebase’den okuyor; içerik yalnız Next.js yönetim panelinden giriliyor ve mobil pakette gömülü prosedür yok. Bir adımı değiştirmek mağaza güncellemesi beklemiyor.
Mobil uygulama ve panel müşteriye teslim edildi; kullanıcı yönetimi, analitik panosu ve EAS / Vercel dağıtım rehberi teslimin parçasıydı. Proje arşivde.
FitZen fotoğraftan öğün analizi yapan bir beslenme takibi uygulaması. Burada iki tuzak var: model yanıtını kesin bir sağlık bilgisi gibi sunmak ve modelin kendisine bağımlı kalmak.
Birincisi için yiyecek, porsiyon ve besin değerleri tahmin olarak gösteriliyor ve kullanıcı sonucu inceledikten sonra günlüğe kaydediyor. Analiz denemesi ile kaydedilmiş veri aynı şey değil. Görselde yiyecek bulunmaması ile servisin yanıt verememesi ayrı durumlar; izin reddi ve seçimin iptali de analiz hatasıyla karışmıyor.
İkincisi için model çağrıları bir Cloudflare Worker proxy’sinden geçiyor. Model adı mobil pakette gömülü olduğu için sağlayıcı bir sürümü emekliye ayırdığında yayındaki bütün sürümler hata alırdı. Proxy’deki alias tablosu emekli adları yaşayan bir modele yönlendiriyor; 3 Eylül 2026’da gpt-5.2-chat-latest için tam olarak bu yaşandı ve mağaza güncellemesi gerekmedi.
Diyetisyen portalı, oruç takibi ve topluluk aynı ürünün parçaları; diyetisyen seans kredileri sunucu fonksiyonlarıyla tüketiliyor. FitZen iOS ve Android’de 11 dilde yayında ve App Store’da 4,4 puanı var.
Sağlık verisi yalnız klinikte değil, egzersiz stüdyosu gibi işletmelerde de ortaya çıkıyor. PeakUp Training Studio için yeniden yazdığımız uygulamada üye, antrenör ve stüdyo sahibi tek Expo uygulamasında; sahip için ayrıca bir Next.js paneli var.
Burada kural kod incelemesine bırakılmadı. Tabletten imzalanan sözleşme ve PAR-Q (fiziksel aktiviteye hazırlık anketi) belgesi olmadan paket satın alınamıyor; bu bir belge kapısı. Altı aşamalı üye analizi esnek bir şablon, aşamalar ve alanlar panelden düzenleniyor ve kod değişikliği gerektirmiyor.
Ortak bir paket zod şemalarını ve iş kurallarını (KDV, devamsızlık, paket düşümü) taşıyor; aynı kural hem istemcide hem veritabanı CHECK kısıtlarında doğrulanıyor. 36 veritabanı ve RLS testi, sözleşme denetimi ve birim testleri tek bir komutta koşuyor ve yeşil olmadan dağıtım yapılmıyor. Kapanış denetiminde her bulgu, onu yakalayacak test yazılmadan kapanmış sayılmadı.
Uygulama mevcut mağaza kaydı üzerine 2.0.0 güncellemesi olarak iOS ve Android’de yayında. Müşterinin 19 maddelik talep listesi kabul kriteri olarak kullanıldı.
Açık olalım: sitemizdeki sağlık projelerinin hiçbiri için HIPAA uyumu, tıbbi cihaz sertifikası ya da bir denetim kuruluşunun onayı iddia etmiyoruz. Bunlar yazılımın tek başına kazanabileceği etiketler değil; işletmenin süreçleri, sözleşmeleri ve barındırma kararlarıyla birlikte değerlendirilir.
Anlatabildiğimiz şey kodda duran korumalar:
KVKK tarafında en ayrıntılı örneğimiz bir eğitim projesi: ozelokul.com’da onay kayıtları sürümlü ve değiştirilemez yasal metne bağlı, hesap silmede kişisel alanlar anonimleştiriliyor ve hangi tabloların temizlendiği kaydediliyor. Aynı yaklaşımı sağlık verisine uygulamak mümkün; hangi kayıtların tutulacağına ve saklama süresine sizin hukuk danışmanınızla birlikte karar vermenizi öneriyoruz. Bu bölüm hukuki görüş değil.
Sitemizdeki projeler için HIPAA uyumu ya da sertifika iddia etmiyoruz. Uyum, yazılımın yanında işletmenin süreçlerine, sözleşmelerine ve barındırma kararlarına bağlı. Bizim kurduğumuz kısım teknik korumalar: veritabanında kiracı ayrımı, hassas alan şifreleme, onam kayıtları ve hız sınırları. Hangi gereksinimin hedeflendiğini keşifte yazılı olarak netleştirir, kapsamı ve teklifi buna göre hazırlarız.
ClinicPulse’ta hassas alanlar lib/encryption.ts içinde AES-256-GCM ile, 12 baytlık IV ve enc: önekiyle şifreleniyor. Anahtar 64 karakterlik bir hex değeri; tanımlı değilse uygulama başlamıyor, böylece yanlış yapılandırılmış bir ortam düz metin yazamıyor. Satır güvenliği kimin hangi kaydı göreceğini, şifreleme ise veritabanı yedeğinde alanın okunabilir olup olmadığını belirliyor.
ClinicPulse’ta gerekmiyor. Yeni bir klinik eklemek bir kayıt satırı; ayrım, uygulama kodundaki filtrelerle değil on tablodaki 34 satır güvenliği politikasıyla sağlanıyor. Personel davet bağlantısıyla katılıyor, platform admini klinikleri ve abonelikleri ayrı bir panelden yönetiyor. Kurum ayrı veritabanı ya da kendi sunucusunu istiyorsa bu da keşifte konuşulan bir mimari seçenek.
Şart değil. PsiLog’da ikisi tek Next.js uygulamasında, ayrı rota gruplarında duruyor: psikolog paneli danışanları, takvimi ve seans notlarını, danışan portalı plan, ödev ve ruh hali kaydını taşıyor. Kimin neyi göreceği arayüzde değil satır güvenliği politikalarında tanımlı. Tek uygulama bakım yükünü azaltıyor; ayrı mağaza uygulaması gerekiyorsa mobil taraf ayrıca planlanır.
FitZen’de model çıktısı tahmin olarak sunuluyor ve kullanıcı inceleyip onaylamadan günlüğe kaydedilmiyor. Yiyecek bulunamaması ile servis hatası ayrı durumlar, böylece kullanıcı neyin olduğunu anlıyor. Model çağrıları bir Worker proxy’sinden geçtiği için sağlayıcı bir modeli emekliye ayırdığında uygulama bozulmuyor. Ekranlardaki ifadeler ve uyarı metinleri tasarım aşamasında sizinle birlikte yazılır.
Evet, ProcedureLogic bunun için kuruldu. İçerik yalnız Next.js yönetim panelinden giriliyor ve mobil uygulama Firebase’den okuyor; pakette gömülü prosedür olmadığı için bir adımı değiştirmek mağaza güncellemesi gerektirmiyor. Cerrah tercihleri standart kartın üstüne binen farklar olarak tutulduğu için standart prosedürü güncellemek her cerrahın kopyasını ayrıca düzeltmeyi gerektirmiyor.
Size. Alan adı, sunucu, veritabanı ve servis hesapları sizin adınıza açılır. Teslimde kaynak kodun tamamını, tasarım dosyalarını ve tüm erişimleri size devrederiz.
Hayır. Kullanıcı ekranlarını ve yönetim paneli ekranlarını projenize özel olarak tasarlayıp sıfırdan geliştiririz. Böylece panel, sizin iş akışınıza göre çalışır.
İLGİLİ STÜDYO NOTLARI


Çok kiracılı klinik yönetim sistemi.


Psikologlar için danışan, seans ve terapi planı yönetimi.


Ortopedik prosedürleri, takvimi ve ekip koordinasyonunu birleştiren mobil çalışma alanı.


Yapay zekâ destekli diyet ve beslenme takibi.


Spor stüdyosu yönetimi ve üye takibi, tek uygulamada.
Bir tanışma görüşmesiyle başlarız. Kapsamı ve takvimi birlikte netleştirir, size yazılı bir teklif göndeririz.
hello@amgsoftwarestudio.com