- Autor: Vojtěch Voleman
- Vedoucí práce: Ing. Jana Vitvarová, Ph.D.
Název tématu | Aplikace pro osobní evidenci zdravotní péče |
---|---|
Název tématu anglicky | Personal healthcare app |
- Proveďte rešerši existujících aplikací pro evidenci osobní zdravotní péče.
- Analyzujte potřeby pacientů při vybraných akutních i chronických zdravotních problémech.
- Analyzujte využitelná veřejně dostupná zdravotnická data, jako například informace o lécích, či kódové označení nemocí. Dále zdroje dat, které má pacient k dispozici, jako například přehledy zdravotní péče od zdravotní pojišťovny nebo papírové lékařské zprávy.
- Vytvořte funkční specifikaci aplikace dle zjištěných potřeb.
- Navrhněte technické řešení a vyberte platformu s důrazem na bezpečné nakládání s citlivými daty.
- Vytvořte interaktivní prototyp uživatelského rozhraní.
- Implementujte a testujte prototyp aplikace procesem CI/CD.
- Proveďte uživatelské testování a výsledky vyhodnoťte.
- ECKEL, Bruce a Svetlana ISAKOVA. Atomic Kotlin. Mindview, 2021. ISBN 978-0-9818725-5-1.
- MARTIN, Robert C. Clean Code: A Handbook of Agile Software Craftsmanship. Pearson, 2008. ISBN 0132350882.
- MKN-10 klasifikace [online]. [cit. 2022-10-12]. Dostupné z: https://mkn10.uzis.cz
Tento projekt slouží jako API server pro mobilní aplikaci vyvíjenou v rámci bakalářské práce na FM TUL, které nabízí zpracovaná data z veřejně dostupných zdrojů.
Jelikož se tyto data periodicky aktualizují, musí server umožňovat jejich synchronizaci. Pro tento účel byly vytvořeny příkazy:
# Runs all syncers
php bin/console syncer:all:run
# Runs individual syncers
php bin/console syncer:mkn:run
php bin/console syncer:nrpzs:run
php bin/console syncer:sukl:run
Tyto příkazy je možné spouštět ručně, jsou ale také naplánovány v cronu, aby se vykonávaly pravidelně pátý den v měsíci ve 3:00. Doba trvání synchronizace se při měření pohybovala kolem minuty na lokálním zařízení a kolem 90 sekund na vzdáleném stroji.
Pro poskytování dat se využívají controllery v Symfony, které zajišťují zpracování požadavků a odpovědí. Dokumentaci pro API lze najít v souboru schema.json, v interaktivní podobě pak na adrese phr.vvoleman.eu/api/doc.
API server byl napsal v jazyce PHP 8.1.1 s využitím frameworku Symfony 6.2.14. Pro ukládání dat byla použita databáze
MySQL. Pro příkazy je využita knihovna symfony/console
, pro získání odkazů na soubory dat symfony/dom-crawler
.
Celé prostředí je nasazeno v Dockeru (viz docker-compose.yml).
API server je dostupný na adrese phr.vvoleman.eu/api. Pro lokální spuštění je třeba mít
nainstalovaný Docker a Docker Compose. Před spuštěním je potřeba vytvořit soubor .env
podle vzoru .env.example
. Poté
je
možné spustit server příkazem:
docker-compose up
Pokud je potřeba provádět příkazy nad serverem, stačí se připojit do kontejneru:
docker exec -it phr_backend bash
a poté spouštět příkazy (např. synchronizovat data).
Pokud se při spuštění objeví chyba, že některé složky neexistují (např. var/data/uzis, /var/data/sukl, /var/data/nrpzs), je třeba je vytvořit. Za normálních okolností se složky vytvářejí samy, při nedostatečném oprávnění však může nastat problém. Tyto složky je tedy potřeba vytvořit ručně a nastavit jim správná oprávnění (775, při nejhorším 777)
Při prvotním spuštění se provádí příkaz composer install
, který stáhne všechny závislosti. Pokud se však objeví chyba
týkající se chybějících závislostí, je třeba spustit tento příkaz ručně:
docker exec -it phr_backend composer install
K chybové hlášce
Error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 23371010 bytes)
dochází ve vývojářském prostředí, jelikož se Doctrine snaží loggovat všechny dotazy. Řešením je buď přepnout prostředí
do produkčního v .env
# APP_ENV=dev
APP_ENV=prod
nebo spouštět příkazy s parametrem --no-debug
:
php bin/console syncer:all:run --no-debug
Pokud se při spuštění dotazů v dokumentaci API objeví chyba Failed to fetch
, zkontrolujte na jaký server je dotaz
odesílán. Dokumentace obsahuje dva servery, jeden pro lokální spuštění a druhý pro produkční. Toto nastavení lze nalést
na začátku stránky s popiskem "Servers".
V případě, že by nedošlo k vyřešení problému, kontaktujte prosím autora. Je možné, že došlo k výpadku serveru.
Poznámka: Endpoint /api/medical-product/document
přesměrovává na stránku s příbalovým letákem léku. Dokumentace ale
zobrazí jen chybovou hlášku. Jedná se o očekávané chování. Pro testování funkčnosti je možné přistoupit na vygenerovaný
Request URL manuálně z prohlížeče.