Osobní evidence zdravotní péče

androidkotlinPHPSymfonyClean Architecture

Bakalářská práce na téma aplikace pro osobní evidenci zdravotní péče. Obsahuje mobilní aplikaci a API server. Vypracováno na TUL.

O mobilní aplikaci

Tato mobilní aplikace byla vypracována jako součást bakalářské práce na FM TUL. Aplikace má za cíl ulehčit uživateli evidenci svého zdravotní stavu a své zdravotní péče. Data o léčivých přípravcích, diagnózách a lékařských zařízeních aplikace čerpá z API serveru, který byl v rámci této práce také vypracován. Uživatelské rozhraní bylo navrženo v nástroji Figma, odkaz na prototyp je k dispozici zde. Mobilní aplikace byla vyvíjena podle systémové architektury Clean Architecture. Finální verze bakalářské práce je k dispozici v souboru bp_vvoleman_final.pdf.

Cílové skupiny

Běžný uživatel

  • je systematický, chodí spíše jen na preventivní prohlídky
  • chce mít pořádek v lékařských zprávách
  • chce všechny kontakty na využívané lékaře na jednom místě
  • chce přehled o termínech, "kalendář"

Uživatel se zdravotní indispozicí

  • běžné funkce
  • potřebuje si udržovat, kdy má brát jaké léky
  • rád by měl po ruce příbalové letáky
  • musí si zaznamenávat některé zdravotní hodnoty (tlak, tep...)

Rodinný příslušník/opatrovník

  • potřebuje si udržovat pořádek v lék. zprávách svého "pacienta"
  • chce znát termíny návstěv
  • musí pravidelně více pacientům podávat rozdílné léky

Funkce

Aplikace rozděluje své funkce do několika modulů, které se týkají různých aspektů zdravotní péče.

Lékařské zprávy

V tomto modulu si uživatel zaznamenává lékařské zprávy obdržené při návštěvě lékařského zařízení. Při přidání uživatel vyfotí zprávu a aplikace se pokusí z fotky extrahovat některá data (datum návštěvy, diagnóza). Uživatel může následně doplnit chybějící informace a zprávu uložit. Uživatel si může zprávy prohlížet, upravovat, exportovat do PDF a mazat.

Léky

V tomto modulu si uživatel eviduje léky, které užívá a aplikace mu připomíná jejich užití. Při přidání léku nejprve vyhledá lék v databázi léků a následně si vybere jeho dávkování. V přehledu uživatel vidí, které léky má dnes ještě užít. Po kliknutí na lék si může zobrazit jeho detaily či otevřít příbalový leták.

Měření

V tomto modulu si uživatel eviduje svá měření (např. krevní tlak, hmotnost, teplota). Uživatel si nejprve definuje jaké položky mají v rámci jednoho měření a posléže si nastaví upozornění na měření.

Plány návštěv

V tomto modulu si uživatel eviduje své budoucí návštěvy lékařských zařízení. Při vytváření může určit, kterého problémy či lékaře se návštěva týká. Aplikace uživatele upozorní na blížící se návštěvu.

Ostatní

Mimo tyto hlavní moduly aplikace obsahuje i funkce, které jsou součástí modulu Obecné. Patří sem

  1. správa pacientů - pacienti v aplikaci fungují jako profily, všechny záznamy se vážou k nějakému pacientovi,
  2. správa kategorií problémů - de facto obálku, do které si uživatel může seskupit svá data a ve které vidí detail nějakého problému (zlomenná noha atd.) a
  3. správa lékařských pracovníků - uživatel si může přidat kontakt na pracovníky, kteří se o něj starají. U pracovníka vybírá zařízení z Národního registru poskytovatelů zdravotních služeb.

Technologie

Aplikace je vyvíjena v jazyce Kotlin a je stavěna dle systémové architektury Clean Architecture. Pro konkrétní implementaci bylo čerpáno z knihy Clean Architecture for Android: Implement Expert-led Design Patterns to Build Scalable, Maintainable, and Testable Android Apps (English Edition) (Eran Boundjnah, 2022, ISBN 9355510497). Požadovaná verze Androidu je 8.0 (API 26), verze Gradle je 8.0 a AGP 8.1.1. Verze Kotlinu je 1.8.0

Pro ukládání dat v aplikaci je využita knihovna Room, pro komunikaci s API serverem je využita knihovna Retrofit. Pro převod fotografie na text (OCR) je využit nástroj Google ML Kit.

O API serveru

API server slouží pro periodické synchronizování datových zdrojů a poskytnutí dat mobilní aplikaci. Jako datové zdroje se využívají

  1. Mezinárodní klasifikace nemocí (MKN-10) od SÚKL
  2. Databáze léčivých přípravků od ÚZIS
  3. Národní registr poskytovatelů zdravotních služeb od SÚKL

Technologie

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

Ukázky z aplikace

Modul "Lékařské zprávy"

Modul "Léky"

Modul "Měření hodnot"

Modul "Plány návštěv"

Demo

Aplikace je distribuovaná prostřednictvím GitHubu (releases). Pro API existuje interaktivní dokumentace. V té je nutné se ujistit, že je nastavený produkční server.