- 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 basha 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 installK 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.