Fogászati praxismenedzsment rendszer
Fogászati rendelők teljes napi működését kezelő rendszer: időpontok, kezelési karton, betegek, pénztár, számlázás és hatósági jelentések. A régi rendszert fokozatosan írom újra Laravelre, működés közben.
Fejlesztem a rendszert, és részt veszek a régi változat funkciónkénti újraírásában.
Egy fogászati rendelő működése sok, egymástól függő dologból áll: időpont, a kezelés dokumentálása, számla, pénztár, hatósági jelentés, betegkommunikáció. Ha ezek külön eszközökben vannak, az idő az adminisztrációra megy el.
A feladat az, hogy a sok éven át épült rendszert modernre cseréljem úgy, hogy közben a rendelők dolgozhassanak. Egészségügyi adatról van szó, ezért az adatok szétválasztása és a naplózás nem lehet utólagos ötlet.
Időpontnaptár és online foglalás
Berendelési napló rendelőkkel és erőforrásokkal, online időpontfoglalás, külső naptár szinkron és automatikus emlékeztetők.
Kezelési karton
Kezelések dokumentálása, parodontális státusz, laborlapok, sablonok, képek és dokumentumok a páciens kartonjában.
Betegnyilvántartás és betegportál
Törzsadatok, duplikált betegek összevonása, import és export, valamint betegportál, ahol a páciens a saját adataival és feladataival dolgozhat.
Pénztár és számlázás
Pénztár napi zárással és több pénznemmel, páciens egyenleg, valamint összekötés a számlázó szolgáltatással.
Hatósági integrációk
Kapcsolat az országos egészségügyi adatrendszerrel (e-recept) és a finanszírozói jelentések automatizált elkészítése.
Kommunikáció és belső munka
Hírlevél, kérdőívek, értesítések, belső chat és feladatkezelő, riportokkal Excel és PDF formátumban.
A rendelő rendszerbeállításai: naplószínek, figyelmeztetések, számlázás, felhasználók és munkarend.
Rendelőszékenkénti napi nézet, színkódolt kezelések. A betegek nevei a képen elmosva.
Márka- és ügyfélnevek, valamint személyes adatok nélkül (kivéve az alkalmazás áruházi képeit).
Több rendelő, egy adatbázis
Sok rendelő használja ugyanazt az adatbázist, és minden lekérdezés a saját rendelőjére szűr.
Mezőszintű változásnapló
Minden módosítás naplózódik, hogy az érzékeny adatok kezelése bármikor ellenőrizhető legyen.
Betegportál és online időpont
A páciens a saját adataival és feladataival dolgozhat, az időpontot pedig online is le lehet foglalni.
A régi viselkedést pontosan át kell venni
Az újraírásnál nem az a cél, hogy jobb legyen, hanem hogy ugyanúgy működjön, mert a rendelők megszokták. Ezért funkciónként viszem át a régi kódot, és listát vezetek arról, hol tér el az új a régitől.
Napló, ami nem lassít
A naplózás az eredeti sort a memóriából veszi, így nem kell hozzá plusz lekérdezés, havi bontású táblába ír, és sorban fut, hogy ne lassítsa a rendszert.
Az adatok nem keveredhetnek
Mivel minden rendelő ugyanabban az adatbázisban van, szinte minden lekérdezés a rendelő azonosítójára szűr. A rendszergazda válthat rendelők között, de ezt külön kérnie kell.
Több rendelő, egy rendszer
Többbérlős felépítés: sok rendelő használja ugyanazt az adatbázist, minden lekérdezés szigorúan a saját rendelőjére szűr, az adatok nem keveredhetnek.
Fokozatos újraírás
A meglévő rendszert funkciónként váltja ki az új, az viselkedést egy az egyben átvéve, így a rendelők a váltás közben is dolgozhatnak, és nincs egyszeri kockázatos átállás.
Teljes visszakövethetőség
Mezőszintű változásnapló minden módosításról, havi bontású tárolással és sorban futó írással, hogy az érzékeny adatok kezelése bármikor ellenőrizhető legyen.
Valós idejű és megbízható
WebSocket alapú frissítés, háttérfeldolgozás Redis sorokkal, PostgreSQL adatbázis, és ütemezett szinkronok a külső rendszerekkel.
Változásnapló extra lekérdezés nélkül
Az érzékeny adatokon minden módosítás mezőszinten naplózódik. Az eredeti sort a memóriából veszi, így a naplózás nem terheli az adatbázist, és tömeges műveletnél biztonságosan szüneteltethető.
/** Temporarily disable logging, e.g. during a bulk import or seeding. */
public static function withoutLogging(callable $callback): mixed
{
$previous = self::$paused;
self::$paused = true;
try {
return $callback();
} finally {
self::$paused = $previous;
}
}
/** On `updating`, keep the original row in memory, so no extra SELECT is needed. */
public function captureOriginal(Model $model): void
{
if (! $this->enabled($model)) {
return;
}
$this->originals[spl_object_id($model)] = $model->getOriginal();
}
Egy rendszer, ami a rendelő teljes működését lefedi, a naptártól a pénztárig és a hatósági jelentésekig. A bevezetés egynapos oktatás és a meglévő adatok átvétele, a rendszer pedig a rendelők megszakítása nélkül újul meg.
Időszerű lenne a régi rendszered újraírása vagy átvilágítása?
Működés közben, fokozatosan, a viselkedés megtartásával is megoldható.
További projektek
Autós és outdoor webáruház
Méretpontos termékkereső, akciók és kedvezménykódok, több mint 15 000 kiszolgált rendeléssel.
Esettanulmány → Webalkalmazás és APIJegyértékesítő platform
Jegyvásárlástól a beléptetésig és az utókommunikációig: webes rendszer fizetéssel, számlázással, mobil API-val és közösségi réteggel.
Esettanulmány → iOS és AndroidRendezvény-beléptető app
Mobilalkalmazás, amellyel a rendezvényeken gyorsan és ellenőrzötten léptethető be a közönség.
Esettanulmány →