Triage - Simulace kategorizace obětí při hromadném neštěstí

Triage je odborný název pro kategorizace obětí hromadného neštěstí dle toho, jak naléhavě potřebují péči k tomu, aby přežili. Tento systém je celosvětově uplatňován při katastrofách k tomu aby se efektivně alokovala zdravotnická péče (omezený zdroj) a dosáhlo se maximálního počtu přeživších.

Tato simulace se zabývá primární triage při hromadné katastrofě a snaží se zodpovědět na otázky její efektivity.

=Definice problému=

Zadání
Simulace a její výsledky vznikly na základě následujícho zadání: Xkalv18. Zadání obsahuje základní informace o tom, co je to Triage a jaké problémy tato simulace řeší.

Cíl simulace
Cílem je vytvořit simulaci kategorizace obětí při hromadné katastrofě, která bude odpovídat na následující otázky:
 * Je triage lepší než žádná triage? (Přežije více lidí? A o kolik?)
 * Jaké jsou úmrtnosti při přeceňování neodkladnosti péče -> overtriage a jaké jsou úmrtnosti při podceňování péče -> undertriage?
 * Jsou současné tolerované limity pro overtriage - 50% a undertriage - 5% adekvátní?

Použitý systém triage klasifikace
Simulace využívá metodu triage S.T.A.R.T.

Zranění jsou zařazeni do těchto kategorií
 * Kriticky zranění - Pomoc je nutná okamžitě
 * Středně zranění - Pomoc je nutná prioritně
 * Lehké zranění     - Pomoc je poskytnuta až jsou ošetřeni všichni ostatní
 * Mrtev / Za hranicí pomoci - Nejnižší priorita

=Metoda= Pro simulaci byl zvolena metoda agentních systémů a nástroj NetLogo. Tento přístup byl použit zejména z toho důvodu, že o počtu zachráněných při hromadném neštěstí rozhodují takové faktory jako: rozmístění zraněných v prostoru, vzájemná interakce mezi jednotlivými skupinami agentů, odlišné role každé ze skupin agentů (PZS jsou zodpovědni za triage, medici za stabilizaci a eskortování oběti).

Klíčové aspekty hromadného neštěstí
Pro zhodnocení účinnosti triage (a její úspěšné simulace) byly po prostudování literatury zejména tyto aspekty reality hromadného neštěstí:


 * V místě katastrofy jsou různě závažně zraněné oběti. Neplatí, že nejbližší oběť potřebuje pomoc nejdříve.
 * Zdravotní stav oběti se postupně zhoršuje. (Rychlost zhoršování závisí na zdravotním stavu)
 * Provést triage trvá značně kratší dobu, než stabilizace a eskortování oběti
 * Medik má etickou povinnost poskytnout pomoc i člověku, který umírá.
 * Aby se co nejvíce snížilo etické a emoční břemeno, tak ti co provádějí triage (PZS) neposkytují pomoc zraněným a naopak ti co poksytují pomoc zraněným (medici) nerozhodují o kategorii oběti
 * Trage se provádí průběžně.

Jako každá simulace, i tato má některá zjednodušení:
 * Oběti jsou nepohyblivé
 * Simulace se nesnaží zavést konkrétní vztah mezi jednotkou času v simulaci (tick) a jednotkou času v realitě
 * Stabilizace každé oběti trvá stejně dlouho
 * Zdraví oběti je reprezentováno číselnou hodnotou 0-100

Ověření validnosti modelu
Pro ověření modelu se dá použít následující graf z práce Disaster Triage and Allocation of Scarce Resources:



Pokud model a zvolená metoda bude adekvátní, bude možno vypozorovat podobný vztah mezi úmrtností kriticky zraněných a OvertriageRate jako na obrázku.

=Model= Ná následujícím obrázku je vidět prostředí simulace Triage:



Inputs



 * DoTriage (Ano/Ne) - Zda mají PZS provádět triage
 * ticksToStabilizeVictim - Počet ticků k tomu, aby medik stabilizoval oběť
 * ticksToPerformTriage - Počet ticků na provedení triage
 * init-number-of-rescuers - Počet PZS agentů
 * init-number-of-medics - Počet medik agentů
 * ticks-before-first-medic - Počet ticků před příjezdem prvního medika
 * ticks-before-next-medic - Počet ticků mezi příjezdem každého dalšího medika
 * undertriageVSOvertriageRatio (-100 až +100) - O kolik nadhondocuje/podhodnocuje PZS stav oběti


 * randomSeedValue - Seed, kterým budou inicializován náhodný generátor čísel. Lze vepsat nebo přegenerovat pomocí tlačítka "GenerateRandomSeed". Hodnota seedu se používá při generování pozic obětí v oblasti, k simulaci variability jejich zdravotního stavu a k určení rychlosti jeho zhoršování.

Outputs



 * L (lightlyInjuredCount) - Počet lehce zraněných, kteří se právě nacházejí v postižené oblasi
 * M (moderatelyInjuredCount) - Počet středně zraněných, kteří se právě nacházejí v postižené oblasi
 * C (criticalyInjuredCount) - Počet kriticky zraněných, kteří se právě nacházejí v postižené oblasi
 * B (beyondRescueCount) - Počet skoro mrtvých (beyond rescue), kteří se právě nacházejí v postižené oblasi
 * D (deadCount) - Celkový počet mrtvých (mrtví v oblasti + mrtví při převozu do nemocnice)


 * Rescued out of rescuable % - Procento všech zachráněných ze všceh zachranitelných =(rescuedCount / (init-number-of-victims - init-number-of-dead - init-number-beyond-rescue )) * 100
 * count victim - Počet obětí v oblasti
 * rescuedCount - Počet zachráněných
 * Rescued% - Procento zachráněných


 * deadWhenArrivedToHospital - Počet mrtvých při převozu do nemocnice (oběti, co byli do extrakční zóny doručeny ve stavu BeyondRescue)


 * overtriageCount - Počet obětí, co byli klasifikování s vyšší prioritou, než by měli mít
 * overtriagePercentage - Procento obětí, co byli klasifikování s vyšší prioritou, než by měli mít
 * undertriageCount - Počet obětí, co byli klasifikování s nižší prioritou, než by měli mít
 * undertriagePercentage - Procento obětí, co byli klasifikování s nižší prioritou, než by měli mít


 * Critical state mortality - Počet obětí, co zemřeli poté, co si prošli kritickým stavem = (totalCriticalDead / totalCriticalCount) * 100


 * totalCriticalDead - Celkový počet obětí, co si prošli kritickým stavem a zemřeli (mrtví v oblasti + mrtví při převozu do nemocnice)
 * totalCriticalCount - Celkový počet obětí, co si prošli kritickým stavem

Agent - Victim
Oběť je pasivním agentem, který se nepohybuje a čeká na zárchanu. Zdravotní stav oběti je reprezentován proměnnou health. Ta nabývá hodnot <0;100>. Při inicializaci simulace jsou oběti náhodně umístěny do prostoru a je jim vygenerováno úvodní zdraví ("initial health") a rychlost zhoršování jejich zdravotního stavu "deterioration rate". Oběti zanikají při jejich eskortování do evakuační zóny. Jejich ikonka odpovídá zdravotnímu stavu (viz tabulka níže) a jejich barva odpovídá přiřazené kategorii v rámci TRIAGE. Pokud oběť není kategorizovaná, má bílou barvu.

Následující tabulka ukazuje zdravotní stavy a s němi související hodnoty, včetně ideální TRIAGE kategorizace pro daný zdravotní stav:

Agent - Rescuer (PZS - Pracovník záchranných složek)
Tyto agentni, kteří mají podobu modré šipky, jsou zodpovědní za provádění triage. Na místo katastrofy doráží jako první. Postupně kategorizují oběti. Vždy si jako svůj cíl k TRIAGE vyberou tu nejbližší oběť, co není kategorizovaná, a nemá jí jako svůj cíl vybraný jiný záchranář a nestará se o ně medik. Ve chvíli kdy jsou všechny oběti kategorizovány, začne kategorizace obětí znovu (tzv. ReTRIAGE).

Proměnné agenta Rescuer:
 * speed - rychlost jakou se agent pohybuje. Nastaveno na 0.2
 * ticksRemainingForAction - počet ticků pro dokončení triage daného cíle
 * target - vybraná oběť k triage

Agent - Medic
Tyto agentni, kteří mají podobu červené šipky, jsou zodpovědní za stabilizaci oběti a její eskortování do evakuační zóny. Medici si jako svůj cíl vybírají oběť, která má nejvyšší prioritu a je nejblíže. Pokud se neprovádí triage, tak si vybírají oběť, která je nejblíže. Validním cílem pro jejich péči je oběť o kterou se nestará žádný jiný medik. Medici se chovají eticky a pokud jim triage určí, že se mají postarat o oběť, jejíž zdravotní stav se mezitím zhoršil za hranici pomoci, tak přesto se jí pokusí zachránit. Taková oběť pak umře na cestě do nemocnice. Medik označí oběť jako zemřelou pokud se její zdravotní stav zhoršil během stabilizace nebo během eskortování.

Proměnné Medika:


 * speed - rychlost, jakou se medik pohybuje každý tick. Nastavena na 0.20
 * target - aktuální oběť, kterou medik stabilizuje/eskortuje
 * ticksRemainingForAction - čas, který zbývá k ošetření oběti.
 * state - Aktuální stav, ve které se nachází "state machine" medika. Medik se může nacházet v jednom z následujících stavů:
 * roaming - medik si hledá další oběť/ přibližuje se k vybrané oběti
 * stabilizing - medik stabilizuje oběť
 * escorting - medik eskortuje oběť do evakuační zóny

Architektura simulace
Simulace je rozdělena do 3. logických částí

1. Inicializace simulace (metoda ""setup"") - Tato metoda je zodpovědná za vygenerování obětí a evakuační zóny a vytvoření agentů PZS. 2. Simulace samotná (metoda GO) - Provede 1. krok simulace (případně opakovaně, pokud je spuštěna tlačítkem) 3. RunResearch - Tato čásť slouží k vygenerování podkladů k provedení výzkumu. Simulace se 10x opakuje se stejným nastavením, ale s jiným seedem a průměrné hodnoty důležitých ukazatelů se zapisují do CSV souboru.

Inicializace simulace (metoda setup)
Tato metoda je zodpovědná za vygenerování obětí a evakuační zóny a vytvoření agentů PZS. Má následující průběh:

resetuj simulaci nastav seed náhodného generátoru udělej zem zelenou vytvoř evakuační zónu (metoda setup-evac-zone) vygeneruj oběti (metoda setup-victims) vygeneruj PZS, pokud se má provádět triage (setup-rescuers) setup-evac-zone setup-victims aktulizuj hodnoty ukazatelů (hodnoty ukazatelů se z důvodu optimalizace cachují a přepočítávají se každý tick na konci)

vytvoř evakuační zónu (metoda setup-evac-zone)
Vytvoří evakuační zónu (znázorněná sanitkou a modrou barvou). Zóna je vždy umístěna uprostřed levé strany postižené oblasti.

vygeneruj PZS, pokud se má provádět triage (setup-rescuers)
V případě, že je zapnuta triage (proměnná DoTriage = true), jsou během inicializace vygenerování PZS a to v evakuační zóně. Jejich počet je dán vstupní proměnnou init-number-of-rescuers

vygeneruj oběti (metoda setup-victims)
Tato metoda je zodpovědná za vygenerování obětí. Oběti jsou náhodně rozmístěny po celé ploše postižené oblasti. Monžství obětí je dán vstupním parametrem init-number-of-victims. Rozložení jejich zravotního stavu se pak řídí váženým poměrem mezi vstupními proměnnými lightlyInjuredRatio, moderatelyInjuredRatio, CriticalyInjuredRatio, beyondRescueRatio, deadRatio

Průběh simulace (metoda GO)
Simulace probíhá v následujících krocích:

1. Aktualizuj zdravotní stav obětí (metoda update-victims) 2. Vytvoř mediky (metoda spawn-medics) 3. Odeber již kategorizované oběti ze seznamu obětí k Triage (kvůli optimalizaci) 4. Proveď logiku PZS Agentů (metoda drive-rescuers) 5. Aktualizuj seznam obětí k ošetření 6. Proveď logiku mediků (metoda drive-medics) 7. Naplň znovu seznam obětí k Triage, pokud byly všechny oběti kategorzovány (metoda issue-retriage) 8. Aktualizuj číselníky (metoda update-counters)

Aktualizuj zdravotní stav obětí (metoda update-victims)
Tato metoda každé oběti sníží zdraví o její deteriorationRate a aktualizuje její turt-shape dle aktuálního zdravotního stavu

Vytvoř mediky (metoda spawn-medics)
Medici doráží na místo katastofy postupně, s počáatečním spožděním (ticks-before-first-medic). Po příjezdu prvního medika je příjezd každého dalšího medika spožděn o ticks-before-next-medic ticků.

Logika PZS Agentů (metoda drive-rescuers)
Agenti PZS mají jednoduchou logiku, podle které vždy vyhledají nejbližší oběť určenou k triage, přiblíží se k ní a poté provedou kategorizaci oběti. PZS agenti si vybírají pouze oběti, o které se nestará medic a nemíří k nim, nebo je nekategorizuje jiný PZS agent. Délka kategorizace je vždy dána proměnnou (ticksToPerformTriage). Poté, co jsou všechny oběti kategorizovány, začíná tzv. retriage, kdy všechny oběti jsou znovu označeny ke kategoriazci. Tím se zajišťuje, že kategorie odpovídá co nejblíže reálnému stavu oběti

Mechanizmus provádění triage (metoda rescuer-assign-triage-value-to-target)
Po doražená PZS agenta k cílové oběti a uplynutí doby ticksToPerformTriage je oběti přiřazena kategorie. Při triage PZS agent porovná aktuální zdravotní stav oběti (proměnnou health) s hraničními hodnotami kategorizace. Pokud je proměnná undertriageVSOvertriageRation rovná 0, hraniční hodnoty kategorizace odpovídají hodnotám v tabulce stavů oběti a PZS přiřadí vždy správnou kategorii k aktuálnímu zdravotnímu stavu oběti. Proměnná undertriageVSOvertriageRation se přičítá nebo odčítá k hraničním hodnotám a tím zkresluje výslednou kategorizaci:

Je dobré si povšimnout, že jak undertriageVSOvertriageRation > 0, PZS jsou opatrnější v kategorizaci obětí a radši oběť označí jako kritickou, ať už je zraněna středně nebo naopak je již za hranicí pomoci. Naopak pokud je undertriageVSOvertriageRation < 0, jsou PZS bezohlednější a spíše obět označí jako nekritickou.

Aktualizuj seznam obětí k ošetření
Do seznamu obětí k ošetření se v případě provádění triage zařadí jakákoli oběť s již provedenou triage a je kategorizována jako živá, o kterou se již nestará žádný medik. Pokud se triage neprovádí, tak se do seznamu dostane jakákoli oběť, o kterou se nestará medik a není kategorizována jako mrtvá. (Medici kategorizují oběti jako mrtvé, pokud na takové oběti narazí, i když se triage neprovádí)

Logika Mediků (metoda drive-medics)
Chování mediků je řízeno jednoduchým stavovým automatem.

Stav roaming
V tomto stavu medik hledá další oběť k ošetření. Jako další oběť si medik vybírá tu, o kterou se nestará žádný jiný medik, má nejvyšší prioritu a je nejblíže. V tu chvíli, kdy si vybere cílovou oběť, příblíží se k ní. Poté přejde do stavu "stabilizing"

Stav stabilizing
Tento stav začíná tím, že se nastaví ošetřované oběti deteriorationRate na polovinu (simuluje první pomoc). Poté medik vyhodnotí, zda byla kategorie oběti nadhodnocena nebo podhodnocena dle následujících pravidel:


 * Pokud je zdravotní stav oběťi za hranici pomoci a byla kategorizována jako kriticky zraněná, je to považováno za overtriage.
 * Pokud je zdravotní stav oběťi za hranici pomoci a byla kategorizována jako středně nebo lehce zraněná, je to považováno za undertriage.
 * Pokud je zdravotní stav oběťi kritický a byla kategorizována jako lehce nebo středně zraněná, je to považováno za undertriage.
 * Pokud zdravotní stav oběťi odpovídá středním zraněním a byla kategorizována jako lehce zraněná, je to považováno za undertriage.
 * Pokud zdravotní stav oběťi odpovídá středním zraněním a byla kategorizována jako kriticky zraněná, je to považováno za overtriage.
 * Pokud zdravotní stav oběťi odpovídá lehkým zraněním a byla kategorizována jako středně nebo kriticky zraněná, je to považováno za overtriage.

Po upynutí doby dané proměnnou ticksToStabilizeVictim je deteriorationRate nastaveno na 0 a tím je oběť stabilizována, pokud se mezitím nedostala do zdravotního stavu beyondRescue; v takovém případě se deteriorationRate ponechává na původní poloviční hodnotě (simuluje "nezachranitelnost" obětí, které jsou za hranicí pomoci). Pokud oběť je na konci stabilizace živá, přepne se medik do stavu "escorting". Pokud mezitím obeť zemřela, je medikem kategorizována jako mrtvá a medik se přepne do stavu "roaming".

Stav escorting
Ve stavu escorting přepravuje medik oběť do evakuační zóny. Jeho rychlost pohybu je nastavena na 70% původní hodnot - tím je simulováno zhoršení pohyblivosti a zvýšená opatrnost při manipulaci se zraněným. Pokud je zraněný ve stavu "beyondRescue" může na ceste do evakuační zóny zemřít. V tom případě ho medik označí za mrtvého a přepne se do stavu "roaming". Ve chvíli, kdy medik se zraněním dorazí do evakuační zóny, je oběť započítána jako zachráněná, nebo mrtvá při převozu do nemocnice a to v případě zdravotního stavu oběti "beyondRescue". Medik se poté přepne do stavu "roaming"

=Výsledky=

Klíčové ukazatele úspěšnosti Tirage
Následující ukazatele se dle literatury považují za klíčové při vyhodnocování účinnosti Triage:
 * OvertriageRate - Kolik procent obětí dostalo v rámci triage vyšší prioritu, než měli ve skutečnosti mít
 * UndertriageRate - Kolik procent obětí dostalo v rámci triage nižší prioritu, než měli ve skutečnosti mít
 * CriticalMortalityRate - Kolik obětí v kritickém stavu zemřelo

Navíc pro srovnání celkové úspěšnosti zavádí simulace ukazatel, který by v reálném životě nebyl realizovatelný:
 * RescuedOutOfRescuable% - Kolik % ze "zachránitelných" obětí bylo zachráněno. "zachránitelná" oběť je definována jako oběť jejíž zdravotní stav byl na začátku lepší než "beyondRescue".

Nastavení simulace
Pro zodpovězení otázek tohoto výzkumu byla simulována katastrofa, ve které je zdravotní stav 500 obětí rozložen rovnoměrně a na místě operuje 30 PZS a se spožděním 100 ticků dorazí tým 10 mediků.

Pro samotný výzkum bylo použito následující nastavení simulace:



Metoda výzkumu
Takto nastavená simulace byla spuštěna 10x (se seedy 0-9) pro každou hodnotu vstupní proměnné undertriageVsOvertriageRatio v rozmezí <-50;50>. Navíc byla ještě simulace provedena 10x (se seedy 0-9) s vypnutou TRIAGE. Průměrné hodnoty klíčových ukazatelů byly po provedení 10 běhů s konkrétním nastavením zaznamenány do CSV souboru. Orchestraci výzkumu zajišťuje metoda "DoResearch".

Data z výzkumu jsou k dispozici zde: Excel -

Výsledky - Vliv Overtriage na úmrtnost kriticky raněných


Tento graf zachycuje procento mrtvých v závislosti na Overtriage/Undertiage a ukazuje, že jsou tyto dvě veličiny korelují. Tímto vzásadě potvrzuje validitu modelu. Rozdíl oproti referenčním datům je především v tom, že počet úmrtí kriticky zraněných neklesá pod 35%. To je způsobeno vlastnostmi modelu (rovnoměrné rozložení zdravotního stavu obětí) a také tím, jak se počítají úmrtí kriticky zraněných. Model počítá úmrtí kriticky zraněného i v případě, že se k němu nikdy žádný PSZ agent ani agent medika nedostal. V realitě je to ovšem tak, že spoustu obětí si projde kritickým stavem a poté zemřou bez toho, aniž by o tom kdokoli věděl. Tyto oběti v realitě nenavyšují počet kriticky zraněných, kteří umřeli.

Graf nadále ukazauje, že akt provádění triage (především té, která je přesná) dramaticky snižuje počet úmrtí obětí v kritickém stavu, a to až o 33%.

Výsledky - Vliv OverTriage/UnderTriage


Tento graf ukazuje výsledky v komplexních souvislostech. Je vidět, že provádění triage (především té přesné) oproti neprovádění triage zvyšuje počet zachráněných ze zachranitelných až o 14,5%. Dále je vidět, jak zvyšující procento overtriage postupně tento ukazatel přibližuje stavu, kdy žádná triage neprobíhá.

Zajímavá je abnormalita, která se ukazuje při undertriage. Při undertirage 62% je dosaženo podobných výsledků, jako když je prováděna přesná triage. Při dodatečném zkoumání bylo zjištěno, že jde o vlastnost modelu. Agenti PZS totiž poté přestanou uplně z F.A.S.T triage používat kategorii pro kriticky zraněné a všechny ještě zachranitelné oběti označuje buď jako lehce nebo středně zraněné. Díky tomu je vzásadě zachována myšlenka prioritzace zraněných a ti, co jsou v kritickém stavu jsou označeni jako středně zranění a ostatní jsou označeni jako lehce zranění:



Při ještě vyšším procentu undertriage pak stále více obětí začne být označováno jako lehce zranění, až model začně vykazovat stejné výsledky, jako kdyby se triage neprováděla.

=Závěr= Cílem tohoto výzkumu bylo vytvořit simulaci, která dokáže odpovědět na základní otázky efektivity triage. Vzniklá simulace reflektuje principy triage a fundamentální validita modelu byla ověřena vůči referenčním datům. Simulace a její výsledky dávají následující odpovědi.

'''Je triage lepší než žádná triage? (Přežije více lidí? A o kolik?)'''

Odpověď: Ano, triage je lepší, než žádná triage. Provádění kategorizace zraněných v rámci primární triage dramaticky snižuje počet úmrtí obětí v kritickém stavu, a to až o 33%. Dále zvyšuje počet zachráněných ze všech zachranitelných až o 14,5%.

Jaké jsou úmrtnosti při přeceňování neodkladnosti péče -> overtriage a jaké jsou úmrtnosti při podceňování péče -> undertriage?

Odpověď: Úmrtnost jednoznačně koreluje s overtriage. Čím vyšší overtriage, tím vyšší úmrtnost. U undertriage koreluje úmrtnost jenom do určité chvíle (do cca 33% undertriage), než se vyskytne anomálie, která je způsobena vlastnostmi modelu. Do 33% undertriage platí že čím vyšší je undertriage, tím je vyšší úmrtnost, nad 33% undertriage nelze spolehlivě dle simulace vyvodit vztah mezi undertriage a úmrtností.

Jsou současné tolerované limity pro overtriage - 50% a undertriage - 5% adekvátní?

Odpověď: Z výsledků simulace vyplývá, že undertriage má zhruba stejný vliv na úmrtnost obětí jako overtriage. To, že je limit pro undertriage 10x menší než pro overtriage tak má co dočinění spíše s eticko/morálním aspektem triage, kdy je pro společnost přijatelnější spíše přecenit neodkladnost péče (úmrtí obětí z důvodu vyčerpání kapacity mediků je pak kolektivní vinou všech PZS), než-li podhodnottit její neodkladnost (úmrtí oběti u které neodkladnost péče byla podhondocena je vinou konkrétního PZS, který provedl triage).

=Reference=

Wikipedia:Triage

Wikipedia:Triage metoda S.T.A.R.T

Disaster Triage and Allocation of Scarce Resources

=Kód=