Temat Szpitalnych Oddziałów Ratunkowych nie schodzi ostatnio z nagłówków — afera w warszawskim Szpitalu Południowym wywołała ogólnopolską dyskusję o tym, jak naprawdę funkcjonują SOR-y w Polsce. Również w moim rodzinnym Olkuszu wielu mieszkańców od lat skarży się na długie oczekiwanie na pomoc w lokalnym SOR-ze. Co prawda Ministerstwo Zdrowia udostępnia dane o kolejkach na portalu pacjent.gov.pl, ale robi to w formie utrudniającej porównania i analizę trendów. Postanowiłem to wykorzystać i zbudować system monitorujący sytuację na SOR-ach na styku województw śląskiego i małopolskiego.
Inspiracją była m.in. wymiana zdań z sesji Rady Warszawy, podczas której prezydent Trzaskowski powołał się na czas oczekiwania wynoszący dwadzieścia jeden minut. Dziennikarz Patryk Słowik publicznie go poprawił — dwadzieścia jeden minut to czas oczekiwania na sam triaż, a na pierwszy kontakt z lekarzem pacjenci czekali średnio sto dziewiętnaście minut. Dane są publicznie dostępne, ale łatwo je źle zinterpretować. Tym bardziej warto je zbierać, archiwizować i prezentować w sposób czytelny.
Jak działa SOR — co mówi Ministerstwo Zdrowia
Szpitalny Oddział Ratunkowy to miejsce, w którym ratuje się życie i nagle zagrożone zdrowie człowieka. Pomoc na SOR-ze obejmuje badania i konsultacje niezbędne ze względu na stan nagłego zagrożenia — nie zastępuje lekarza podstawowej opieki zdrowotnej ani specjalisty. Na SOR nie idzie się po receptę, z przeziębieniem czy niestrawności. Na SOR-ze nie obowiązuje kolejność zgłoszeń według czasu przybycia. O kolejności przyjęcia decyduje pracownik medyczny na podstawie stanu zdrowia pacjenta — w procesie zwanym triażem. Każdy pacjent otrzymuje jeden z pięciu priorytetów:
| Kolor | Priorytet | Docelowy czas oczekiwania na lekarza |
|---|---|---|
| 🔴 Czerwony | Najwyższy | Natychmiast |
| 🟠 Pomarańczowy | Wysoki | Do 10 minut |
| 🟡 Żółty | Średni | Do 60 minut |
| 🟢 Zielony | Niski | Do 120 minut |
| 🔵 Niebieski | Najniższy | Do 240 minut |
Czasy podane w tabeli to wartości deklarowane przez Ministerstwo Zdrowia — docelowe, nie gwarantowane. Rzeczywistość bywa od nich daleka, co potwierdzają zarówno relacje pacjentów, jak i dane zbierane przez mój system. Co istotne, łączny czas oczekiwania na pomoc to nie tylko kolejka w ramach priorytetu. Zgodnie z informacją na portalu pacjent.gov.pl, aby oszacować średni czas oczekiwania na pierwszy kontakt z lekarzem, należy zsumować: czas oczekiwania na rejestrację, czas oczekiwania na triaż oraz czas oczekiwania w kolejce przypisanego priorytetu. To właśnie tego rozróżnienia nie dostrzegł prezydent Trzaskowski, podając czas triażu jako czas całej obsługi.
Źródło danych
Dane pochodzą z systemu TOPSOR, udostępnianego przez Centrum e-Zdrowia na portalu pacjent.gov.pl. Strona ładuje dane dynamicznie przez JavaScript, jednak analiza ruchu sieciowego ujawniła, że pod spodem działa proste REST API zwracające czyste dane w formacie JSON — bez autentykacji, gotowe do maszynowego odczytu. Dzięki temu nie ma potrzeby renderowania strony w przeglądarce — wystarczy zwykłe zapytanie HTTP.
Każde zapytanie do API zwraca aktualny stan kolejki konkretnego SOR-u: dla każdego z siedmiu etapów obsługi podaje liczbę oczekujących osób oraz średni czas oczekiwania w minutach. Dane aktualizowane są przez szpitale co kilkanaście minut.
Treści portalu pacjent.gov.pl udostępniane są na licencji Creative Commons Uznanie Autorstwa 3.0 Polska — ich wykorzystanie nie wymaga zgody właściciela serwisu, niezależnie od celu i sposobu korzystania.
Monitorowane placówki
Mój system monitoruje 16 Szpitalnych Oddziałów Ratunkowych w województwach małopolskim i śląskim. Dobór placówek wynika z dwóch celów: śledzenia sytuacji w najbliższym SOR-ze (Olkusz) oraz porównania go z otoczeniem — sąsiednimi powiatami i dużymi ośrodkami miejskimi, do których olkuszanie mogą trafić w razie potrzeby.
| Miasto | Szpital | Województwo |
|---|---|---|
| Olkusz | Nowy Szpital w Olkuszu | małopolskie |
| Zawiercie | Szpital Powiatowy w Zawierciu | śląskie |
| Miechów | Szpital św. Anny w Miechowie | małopolskie |
| Chrzanów | Szpital Powiatowy w Chrzanowie | małopolskie |
| Kraków | Szpital Uniwersytecki | małopolskie |
| Kraków | Szpital im. Narutowicza | małopolskie |
| Kraków | Szpital im. Żeromskiego | małopolskie |
| Kraków | Szpital im. Rydygiera | małopolskie |
| Kraków | 5 Wojskowy Szpital Kliniczny | małopolskie |
| Kraków | Szpital Dziecięcy | małopolskie |
| Katowice | Górnośląskie Centrum Medyczne | śląskie |
| Katowice | Centrum Zdrowia Dziecka | śląskie |
| Sosnowiec | WSS nr 5 im. Św. Barbary | śląskie |
| Sosnowiec | Centrum Zdrowia Dziecka | śląskie |
| Dąbrowa Górnicza | ZCO im. Starkiewicza | śląskie |
| Jaworzno | Szpital Wielospecjalistyczny | śląskie |
Architektura systemu
System zbudowany jest z kilku warstw, które razem tworzą zamkniętą pętlę: od pobrania danych, przez ich zapisanie, aż po prezentację.
| Warstwa | Technologia | Rola |
|---|---|---|
| Źródło danych | pacjent.gov.pl (TOPSOR API) | Publiczne REST API z danymi kolejek SOR |
| Orchestracja | n8n | Flow odpytujący 16 SOR-ów co 5 minut |
| Baza danych | InfluxDB 2.7 | Przechowywanie danych w modelu time-series |
| Wizualizacja | Grafana | Interaktywne dashboardy z mapą i wykresami |
Centralnym elementem jest flow w n8n, który co 5 minut wykonuje następujące kroki: iteruje po liście 16 SOR-ów, dla każdego wysyła zapytanie HTTP GET do API, parsuje odpowiedź JSON i zapisuje dane do InfluxDB w formacie line protocol. Dane w InfluxDB przechowywane są w jednym measurement (sor_queue) z tagami identyfikującymi placówkę (sor_name, sor_city, sor_region) oraz fieldami z wartościami liczbowymi — osobno liczba osób i czas oczekiwania dla każdego priorytetu.
Co pokazuje dashboard
Dashboard w Grafanie składa się z trzech sekcji. Pierwsza to mapa wszystkich monitorowanych SOR-ów, na której rozmiar i kolor markera odzwierciedla aktualne obłożenie — zielony dla krótkich kolejek, czerwony dla długich. Jeden rzut oka wystarczy, żeby zobaczyć, gdzie w regionie jest najgorsza sytuacja. Druga sekcja to dwie tabele: jedna z liczbą oczekujących w każdym priorytecie, druga z czasami oczekiwania w minutach. Tabele posortowane są od najdłuższych kolejek, co pozwala natychmiast zidentyfikować najbardziej obciążone placówki.
Trzecia sekcja to wykresy trendów sterowane rozwijaną listą z nazwami szpitali. Po wybraniu placówki wyświetlają się dwa wykresy: warstwowy z liczbą oczekujących w podziale na priorytety (z kolorami odpowiadającymi systemowi triażu) oraz liniowy z czasami oczekiwania w minutach. Domyślny zakres to ostatnie 24 godziny, ale można go dowolnie rozszerzyć.
Dane i ich ograniczenia
Warto mieć świadomość, że dane z systemu TOPSOR nie są idealnie dokładne. Czasy oczekiwania i liczby pacjentów zależą od tego, czy personel medyczny na bieżąco aktualizuje statusy w systemie informatycznym. W praktyce bywa z tym różnie — szczególnie w momentach dużego obciążenia oddziału, kiedy priorytetem jest leczenie, nie obsługa systemu. Zdarzają się sytuacje, w których SOR raportuje zerową liczbę oczekujących przy jednoczesnym czasie oczekiwania wynoszącym kilkadziesiąt minut, co sugeruje opóźnienie w aktualizacji danych.
Mimo tych ograniczeń, dane pozwalają wychwycić wyraźne wzorce: godziny szczytu, różnice między dniami roboczymi a weekendami oraz relatywne obłożenie poszczególnych placówek. Nie są to dane idealne — ale są to jedyne dane, jakie mamy. I z pewnością lepsze niż intuicja polityków cytujących je na sesjach rad miast.