Skip to content

Projekt aplikacji EMS (Emergency Medical Service)

Wymagania funkcjonalne

  1. System logowania i autoryzacji:

    • Dostęp tylko dla członków EMS.
    • Logowanie na podstawie konta tabletu.
    • Przydzielanie uprawnień na podstawie rangi (np. Stażysta, Ratownik, Lekarz, Dyrektor).
  2. Panel główny:

    • Podsumowanie kluczowych informacji:
      • Aktualne wezwania.
      • Status pacjentów (np. przyjęci, w drodze).
      • Ważne ogłoszenia (np. braki sprzętu).
  3. Rejestr pacjentów:

    • Dodawanie i aktualizacja danych pacjentów:
      • Dane personalne (np. imię, nazwisko, PESEL/ID).
      • Historia medyczna (odseparowana jako osobna tabela).
      • Aktualny status (np. w leczeniu, wypisany).
  4. System zgłoszeń:

    • Przyjmowanie zgłoszeń o wypadkach:
      • Lokalizacja zdarzenia.
      • Szczegóły zgłoszenia (np. liczba poszkodowanych).
    • Przypisywanie zgłoszeń do jednostek.
  5. Zarządzanie wyposażeniem:

    • Ewidencja sprzętu medycznego (np. bandaże, leki, defibrylatory).
    • Rejestrowanie użycia materiałów podczas akcji.
  6. Raporty medyczne:

    • Tworzenie raportów z interwencji:
      • Miejsce zdarzenia.
      • Opis sytuacji i podjęte działania.
      • Lista użytych materiałów.
  7. Powiadomienia:

    • Automatyczne powiadomienia o nowych zgłoszeniach lub zmianach w statusach pacjentów.
    • Możliwość ręcznego wysyłania powiadomień przez dowódców EMS.

Architektura aplikacji

Struktura bazy danych

Tabela: tablet_EMSPatients

PoleTypOpis
idINTKlucz główny
nameVARCHAR(100)Imię i nazwisko
dobDATEData urodzenia
statusVARCHAR(50)Status (np. W leczeniu)
last_updateDATETIMEOstatnia aktualizacja

Tabela: tablet_EMSMedicalHistory

PoleTypOpis
idINTKlucz główny
patient_idINTID pacjenta
descriptionTEXTOpis medyczny
created_atDATETIMEData dodania wpisu

Tabela: tablet_EMSCalls

PoleTypOpis
idINTKlucz główny
locationVARCHAR(100)Lokalizacja zgłoszenia
descriptionTEXTSzczegóły zdarzenia
statusVARCHAR(50)Status (np. Przyjęte, W drodze)
assigned_toINTID jednostki przypisanej
reported_atDATETIMEData zgłoszenia

Tabela: tablet_EMSInventory

PoleTypOpis
idINTKlucz główny
item_nameVARCHAR(100)Nazwa sprzętu
quantityINTIlość
last_usedDATETIMEData ostatniego użycia

Tabela: tablet_EMSReports

PoleTypOpis
idINTKlucz główny
call_idINTID zgłoszenia
report_textTEXTTreść raportu
used_itemsTEXTLista użytych materiałów
created_atDATETIMEData utworzenia

Backend w Lua

Przykładowe funkcje serwera:

  1. Dodawanie pacjenta do rejestru:
lua
RegisterServerEvent('ems:addPatient')
AddEventHandler('ems:addPatient', function(name, dob, status)
    local query = [[INSERT INTO tablet_EMSPatients (name, dob, status, last_update) VALUES (?, ?, ?, NOW())]]
    MySQL.insert.await(query, {name, dob, status})
end)
  1. Dodawanie wpisu do historii medycznej:
lua
RegisterServerEvent('ems:addMedicalHistory')
AddEventHandler('ems:addMedicalHistory', function(patient_id, description)
    local query = [[INSERT INTO tablet_EMSMedicalHistory (patient_id, description, created_at) VALUES (?, ?, NOW())]]
    MySQL.insert.await(query, {patient_id, description})
end)
  1. Przyjmowanie zgłoszenia:
lua
RegisterServerEvent('ems:acceptCall')
AddEventHandler('ems:acceptCall', function(call_id, unit_id)
    local query = [[UPDATE tablet_EMSCalls SET status = 'W drodze', assigned_to = ? WHERE id = ?]]
    MySQL.update.await(query, {unit_id, call_id})
end)
  1. Zarządzanie wyposażeniem:
lua
RegisterServerEvent('ems:updateInventory')
AddEventHandler('ems:updateInventory', function(item_name, quantity_used)
    local query = [[UPDATE tablet_EMSInventory SET quantity = quantity - ?, last_used = NOW() WHERE item_name = ?]]
    MySQL.update.await(query, {quantity_used, item_name})
end)
  1. Tworzenie raportu medycznego:
lua
RegisterServerEvent('ems:createReport')
AddEventHandler('ems:createReport', function(call_id, report_text, used_items)
    local query = [[INSERT INTO tablet_EMSReports (call_id, report_text, used_items, created_at) VALUES (?, ?, ?, NOW())]]
    MySQL.insert.await(query, {call_id, report_text, used_items})
end)

Frontend (Vue.js)

Widoki:

  1. Panel główny:
    • Lista aktywnych zgłoszeń i pacjentów.
    • Podsumowanie dostępnego wyposażenia.
  2. Rejestr pacjentów:
    • Wyszukiwanie i edycja danych pacjentów.
    • Przegląd historii medycznej.
  3. Zgłoszenia:
    • Podgląd zgłoszeń z opcją przypisania do jednostek.
  4. Zarządzanie wyposażeniem:
    • Lista dostępnych materiałów z opcją aktualizacji.
  5. Raporty medyczne:
    • Przegląd raportów z interwencji.

Mechanizmy wymiany danych

  1. Autoryzacja użytkowników:

    • Token JWT przesyłany z każdym zapytaniem do API.
  2. Synchronizacja danych:

    • Dane pacjentów, zgłoszeń i wyposażenia są synchronizowane na bieżąco w czasie rzeczywistym.
  3. Powiadomienia:

    • Automatyczne powiadomienia o nowych zgłoszeniach lub zmianach statusów pacjentów.