Klinik randevu platformu
Hastanın telefondan randevu alıp ertelediği, kliniğin takvimini ve doktor programlarını yönettiği, iptal edilen saatleri bekleme listesiyle dakikalar içinde dolduran iki taraflı bir randevu platformu.
Kimin ihtiyacı
Bir klinikte en pahalı şey boş kalan saattir. Hasta son anda iptal eder ya da hiç gelmez; resepsiyon listeyi telefonla tek tek arar, saat çoğu zaman boş geçer. Aynı gün, erken bir saat bekleyen başka hastalar vardır ama o saatin açıldığından haberleri olmaz. Hasta tarafında da randevu almak, hatırlamak ve ertelemek hâlâ telefon ve bekleme demektir.
Ne kurdum
Gapless'i iki taraflı tasarladım. Hasta mobil uygulamada üç dokunuşla randevu alıyor, hatırlatmayı tek dokunuşla onaylıyor ya da randevusunu başka bir saate taşıyor. Klinik tarafında masaüstü panel var: doktorlar sütun, randevular blok ve iptal edilen her saat takvimde açık bir boşluk olarak görünüyor. Saat açıldığı anda Gapless bekleme listesinden uyan hastaları sıralıyor, onlara teklif gönderiyor, ilk kabul eden saati alıyor ve boşluk takvimde kapanıyor. Otomatik doldurma açıkken bunu bütün gün için kendisi yapıyor. Doktor programları, izinler ve gelmeme riski yüksek randevular için ek hatırlatmalar da aynı panelde.
Akış
- Hasta uygulamadan muayene türünü ve ilk uygun saati seçer, randevusunu üç dokunuşta alır.
- Randevudan 48 ve 2 saat önce hatırlatma gelir; hasta tek dokunuşla onaylar ya da başka bir saate taşır.
- İptal edilen ya da bırakılan saat takvimde açık bir boşluk olarak görünür ve bekleme listesine açılır.
- Gapless uyan hastalara teklif gönderir; ilk "Take it" diyen saati alır, boşluk panelde anında kapanır.
- Klinik doktor programlarını ve izinleri yönetir, riskli randevulara ek hatırlatma gönderir, günün sonunda doluluğu tek ekranda görür.
Önemli kararlar
Bir saat asla iki kişiye verilmez
Çakışma kontrolü uygulama kodunda değil, veritabanında: randevular Postgres'te zaman aralığı olarak tutuluyor ve bir exclusion constraint üst üste binmeyi imkânsız kılıyor. Aynı saniyede iki hasta "Take it"e bassa da biri kazanıyor, diğeri sıradaki saati görüyor.
İptal bir olay, arkasında bir akış var
Saat açıldığı anda Temporal üzerinde bir teklif akışı başlıyor: uyan hastalara dalga dalga teklif gidiyor, her teklif 10 dakika tutuluyor, süre dolunca sıradakine geçiyor. Hatırlatmalar da aynı dayanıklı zamanlayıcılarla çalışıyor; sunucu yeniden başlasa da hiçbiri kaybolmuyor.
Hasta ve klinik aynı takvime bakıyor
Expo ile yazılan mobil uygulama ve Next.js paneli aynı şemaları paylaşıyor; her değişiklik WebSocket ile bütün ekranlara aynı saniyede düşüyor. Klinik sistemleriyle eşitleme FHIR R4'ün Schedule, Slot ve Appointment kaynaklarıyla yapılıyor.
Bildirim ne gerekiyorsa o kadar söylüyor
Push ve SMS yalnızca saat ve klinik adını taşıyor, sağlık bilgisi içermiyor; ayrıntı uygulamanın içinde, giriş yapmış hastaya görünüyor. Arayüzde renk yalnızca iki şey demek: aqua "bu saat açık", kırmızı "bu saat yeniden doldu".
Teknolojiler
- Expo
- React Native
- Next.js 16
- TypeScript
- Postgres
- Temporal
- WebSockets
- Twilio
- FHIR R4
Ekranlar
İlgili hizmetFullstack uygulamalar ve otomasyon
Benzer bir şeye mi ihtiyacın var?
Ne yapmak istediğini birkaç cümleyle anlat.
Proje başlat