Ugrás a tartalomra
Rapcsány Krisztián Rapcsány Krisztián
← Összes projekt Webes üzleti rendszer

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.

PHP Laravel 12 PostgreSQL Redis WebSocket SOAP integrációk PDF és Excel
A feladat
Szerepem

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.

A megoldás
01

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.

02

Kezelési karton

Kezelések dokumentálása, parodontális státusz, laborlapok, sablonok, képek és dokumentumok a páciens kartonjában.

03

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.

04

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.

05

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.

06

Kommunikáció és belső munka

Hírlevél, kérdőívek, értesítések, belső chat és feladatkezelő, riportokkal Excel és PDF formátumban.

Képernyőképek
Beállítások

A rendelő rendszerbeállításai: naplószínek, figyelmeztetések, számlázás, felhasználók és munkarend.

Időpontnaptár

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).

Ami különleges benne

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.

Kihívások, amikbe belefutottam
01

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.

02

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.

03

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.

A motorháztető alatt

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.

Valódi kód

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ő.

ChangeAuditor.php
/** 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();
}
Eredmény

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

Ajánlatot kérek →