Číslo projektu - mzcr.cz file3.3.4.pořízení překladu zvoleného ksp z amerického originálu...

16
Číslo projektu Evidenční číslo CZ2005/017/518.05.03.02 VZ60008837 Název zakázky Vypracování národních norem kódování pro český systém DRG, Technická asistence Subdodavatel Univerzita Karlova v Praze, součást 1.lékařská fakulta MDC – Medicínské datové centrum Zadavatel Česká republika, Ministerstvo financí – Centrální finanční a kontraktační jednotka Letenská 15, 118 10 Praha 1, Česká republika Konečný příjemce Česká republika - Ministerstvo zdravotnictví, Odbor zdravotní péče Adresa: Palackého nám. 4, 128 01, Praha 2 Vedoucí zakázky na straně subdodavatele MUDr. Milan Prášil, MBA Vedoucí zakázky na straně konečného příjemce MUDr. Pavel Frňka Zástupce zadavatele Mgr. Klára Mendová Věcné plnění bodů: 3.3.4 Pořízení překladu zvoleného KSP 3.3.2008 31.3.2008 3.3.5 Lokalizace KSP 14.3.2008 14.4.2008 3.3.6 Vypracování číselníku KSP 6.4.2008 30.4.2008 3.3.7 Převodní tabulka mezi zvoleným KSP a Seznamem výkonů 15.3.2008 31.3.2008

Upload: phamduong

Post on 08-Aug-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Číslo projektu - mzcr.cz file3.3.4.Pořízení překladu zvoleného KSP Z amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali

Číslo projektu Evidenční číslo

CZ2005/017/518.05.03.02VZ60008837

Název zakázky Vypracování národních norem kódování pro český systém DRG, Technická asistence

Subdodavatel Univerzita Karlova v Praze, součást 1.lékařská fakultaMDC – Medicínské datové centrum

Zadavatel Česká republika, Ministerstvo financí – Centrální finanční a kontraktační jednotka

Letenská 15, 118 10 Praha 1, Česká republika

Konečný příjemce Česká republika - Ministerstvo zdravotnictví, Odbor zdravotní péčeAdresa: Palackého nám. 4, 128 01, Praha 2

Vedoucí zakázkyna straně subdodavatele

MUDr. Milan Prášil, MBA

Vedoucí zakázkyna straně konečného příjemce

MUDr. Pavel Frňka

Zástupce zadavatele Mgr. Klára Mendová

Věcné plnění bodů:

3.3.4 Pořízení překladu zvoleného KSP 3.3.2008 31.3.20083.3.5 Lokalizace KSP 14.3.2008 14.4.20083.3.6 Vypracování číselníku KSP 6.4.2008 30.4.20083.3.7 Převodní tabulka mezi zvoleným KSP a Seznamem výkonů 15.3.2008 31.3.2008

Page 2: Číslo projektu - mzcr.cz file3.3.4.Pořízení překladu zvoleného KSP Z amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali

3.3.4.Pořízení překladu zvoleného KSPZ amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali 2 010 elementárních pojmů, které jsou jednoznačné v rámci dimenze. Vytvořili jsme překlad tohoto souboru elementárních pojmů. Překlad je předáván ve textovém souboru SLOVNIK_ELEM_SLOV.CSV uloženém v adresáři SLOVNIK. Jako oddělovač byl použit středník. Fetal Abdomen;břišní dutina ploduIodine 123 (I-123);jód 123 (I-123)Adenoids;nosní mandle1st Toe, Left;1.prst, levý1st Toe, Right;1.prst, pravý12-Step;12-ti krokový2nd Toe, Left;2.prst na DK, levé2nd Toe, Right;2.prst, pravý24-96 Hours;24-96 hodin3rd Toe, Left;3.prst na DK, levý3rd Toe, Right;3.prst na DK, pravý4th Toe, Left;4.prst na DK, levý4th Toe, Right;4.prst na DK, pravý5th Toe, Left;5.prst na DK, levý5th Toe, Right;5.prst na DK, pravý

Poznámky k překladuPůvodně jsme uvažovali o vytvoření latinské referenční verze, která by sloužila k vyjasnění překladu z angličtiny do češtiny. Dále jsme uvažovali o vytvoření čistě české verze, která by nekombinovala českou terminologii s latinskou. Obojí se ukázalo jako prakticky špatně proveditelné i použitelné a tak jsme se nakonec přiklonili k ponechání původní anglické verze jako referenční.

Lokální česká verze preferuje češtinu za těchto podmínek:•jedná se o výraz známý a stále živý•výraz má jednoznačný význam

Čeština převládá u názvů:•tělních částí a orgánů (výjimka: některé části mozku)•kostí a kloubů•tělních soustav (výjimka: hepatobiliární sytém)•žláz (výjimka: maxillární žláza)•nervy, tepny a žíly pokud je o nich referováno v obecném smyslu (tepny ruky, nervy trupu atd...)

Latina byla ponechána tam, kde se zdá výstižnější (orofarynx), nebo zvykově ukotvenější (omentum, fascie), případně tam, kde bylo potřeba velmi přesného anatomického vyjádření:•konkrétní aa, vv, nn •sinusy (ethmoidální, sfenoidální, atd..)•části mozku (talamus, hypotalamus, pons)•skloubení, která nemají jasný český ekvivalent, nebo je krkolomný: akromioklavikulární, sternoklavikulární, sakroiliakální atd.•dutiny s výjimkou lebeční a pánevní•zákroky: excize, dilatace, irigace,….

Angličtina byla ponechána, případně pouze přechýlena, zejména u diagnostických metod.

Page 3: Číslo projektu - mzcr.cz file3.3.4.Pořízení překladu zvoleného KSP Z amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali

Pro ověření polohy jsme používali většinou češtinu:•pravý, levý, horní, dolní

Pravý versus vpravo Adjektivum jsme použili tam, kde se dalo vztáhnout ke konkrétnímu párovému orgánu, nebo části těla: ruka, noha, ledvina, plíce.Adverbium jsme použili tehdy, jednalo-li se o určení polohy v rámci nepárového orgánu: trup, srdce, břicho

Ostatní:hlavové nervy - česky, jako obecný název skupinytranskraniální tepny - obecný název skupinytoe - v české verzi je dodáno DK

3.3.5.Lokalizace KSPVytvořili jsme Úvodní příručku k ICD-10-PCS, která má následující obsah:

Struktura kóduOrganizace systémuVýkony v sekci Lékařský a chirurgický Definice klíčových zákroků Definice přístupů Výkony v sekcích vztažených k sekci Lékařský a chirurgický

PorodnictvíPoužití krycích a fixačních materiálůAplikace preparátůMěření a monitorováníMimotělní podpora a zákrokMimotělní terapieMasážní výkonyJiné výkonyChiropraktické výkony

Výkony v pomocných sekcíchZobrazováníNukleární medicínaRadiační onkologieFyzická rehabilitace a diagnostická audiologieDuševní zdravíLéčba zneužívání látek

Příručka je doplněna návodnými příklady z tabelárního seznamu.

3.3.6.Vypracování číselníku KSPOriginální číselník ICD-10-PCS obsahuje:

Tabelární seznam – kde každý kódu je specifikován po jednotlivých dimenzích, tzv. table code description

Tabulkový seznam – kde pro každou počáteční trojici sedmimístného kódu ICD-10-PCS jsou vygenerovány přípustná pokračování kódu v podobě rekombinačních tabulek.

Jmenný seznam – kde název každého kódu je specifikován složeným názvem, tzv. longterm code description

Abecední seznam – neboli rejstřík (index), kde k běžně používaným medicínským pojmům

Page 4: Číslo projektu - mzcr.cz file3.3.4.Pořízení překladu zvoleného KSP Z amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali

je reference na začátek kódu v ICD-10-PCS (první tři znaky)

V rámci plnění jsme vypracovali českou variantu Tabelárního seznamu, Tabulkového seznamu, pro Položkový seznam jsme vytvořili program k jeho vytváření. Důvodem je snaha poskytnout čas k ustálení terminologie českých elementárních pojmů.

Tabelární seznamTabelární seznam je textový soubor, každá řádka representuje jednu položku seznamu a obsauje 9 údajů. Pro lepší hledání v tabelárním seznamu jsme doplnili (oproti původní americké verzi) každou položku na začátku a na konci kódem daného termínu. Údaj v každé dimenzi se skládá ze znaku a názvu, dimenze jdou za sebou a jsou odděleny svislítkem (pipe). Položek ke 86 617. Tabelární seznam je uložen v adresáři DIMENZE.

03BY0ZX|0 lékařský a chirurgický|3 horní tepny|B excize|Y horní tepna|0 otevřený|Z žádné zařízení|X diagnostický|03BY0ZX03BY0ZZ|0 lékařský a chirurgický|3 horní tepny|B excize|Y horní tepna|0 otevřený|Z žádné zařízení|Z žádný kvalifikátor|03BY0ZZ03BY2ZX|0 lékařský a chirurgický|3 horní tepny|B excize|Y horní tepna|2 otevřený endoskopický|Z žádné zařízení|X diagnostický|03BY2ZX03BY2ZZ|0 lékařský a chirurgický|3 horní tepny|B excize|Y horní tepna|2 otevřený endoskopický|Z žádné zařízení|Z žádný kvalifikátor|03BY2ZZ03BY3ZX|0 lékařský a chirurgický|3 horní tepny|B excize|Y horní tepna|3 perkutánní|Z žádné zařízení|X diagnostický|03BY3ZX

Tabulkový seznamTabulkové seznamy nám umožňují přehlednou a stručnou formou předvést pro danou oblast platné obsazení ICD-10-PCS klasifikace. První tři dimenze kódu (SECTION, BODY SYSTEM, ROOT OPERATION) jsou specifikovány v záhlaví tabulky. Ostatní čtyři dimenze jsou rozděleny do jednotlivých sloupců. V každém sloupci jsou po jednotlivých řádcích uvedeny platné znaky. Rekombinační tabulky jsou vytvořeny tak, že jakákoliv kombinace z těchto čtyř sloupců spolu s úvodní trojicí v záhlaví tabulky dává platný kód ICD-10-PCS.

Nejdříve jsme ze souboru všech platných kódů ICD-10-PCS vygenerovali rekombinační seznamy, a to pro každou platnou úvodní trojici znaků kódů z ICD-10-PCS.

Např. pro první tři znaky kódu 041 jsme získali rekombinační seznamy["0CD","04","9AJKZ","0123456789BCDFGHJKQR"]["4","04","9AJKZ","345"]["EFHJ","04","9AJKZ","9BCDFGHJKPQ"]["KL","04","9AJKZ","HJKLMNPQS"]["MN","04","9AJKZ","LMPQS"]

Page 5: Číslo projektu - mzcr.cz file3.3.4.Pořízení překladu zvoleného KSP Z amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali

Poté jsme z těchto jednotlivých seznamů vytvořili textové soubory, které již obsahují názvy jednotlivých pozic daného kódu.Např. z rekombinačního seznamu ["0CD","04","9AJKZ","0123456789BCDFGHJKQR"]jsme vytvořili rekombinační tabulku v textovém formátu s oddělovačem sloupců (;)

0: lékařský a chirurgický;Section4: dolní tepny;Body System1: bypass;Root OperationBody Part;Approach;Device;Qualifier0 břišní aorta;0 otevřený;9 autologní žilní tkáň;0 břišní aortaC a. iliaca com, dx.;4 endoskopický perkutánní;A autologní arteriální tkáň;1 a. celiacaD a. iliaca com, sin.;;J syntetická náhrada;2 mesenterická tepna;;K neautologní tkáňová náhrada;3 a. renalis, dx.;;Z žádné zařízení;4 a. renalis, sin.;;;5 a. renalis, sin.;;;6 a. iliaca com, dx.;;;7 a. iliaca com, sin.;;;8 aa iliacae com, bilat.;;;9 a.iliaca int, dx.;;;B a.iliaca int, sin.;;;C aa iliacae int., bilat.;;;D a. iliaca ext, dx.;;;F a. iliaca ext, sin.;;;G aa iliacae ext., bilat.;;;H a. femoralis, dx.;;;J a. femoralis, sin.;;;K aa femorales, bilat;;;Q tepna dolní končetiny;;;R dolní tepna

Z rekombinačních tabulek v textovém formátu jsme vytvořili 220 tabulek v HTML formátu, které jsou uloženy v 97 souborech v adresáři TABULKY. Soubory jsou pojmenovány podle prvních dvou pozic kódu (např. 0C.HTML).

0 lékařský a chirurgický SectionC ústa a krk Body System0 změna, poškození

Root Operation 0C0Body Part Approach Device Qualifier0 horní ret X externí 7 autologní tkáňová náhrada Z žádný kvalifikátor1 dolní ret J syntetická náhrada

K neautologní tkáňová náhradaZ žádné zařízení

Jmenný seznamPůvodní soubor se jmenuje LONG.CODEDESC.TXT, jde o soubor jmenných popisů kódu v textové podobě (viz příklad)

0016070 Bypass Cerebral Ventricle to Nasopharynx with Autologous Tissue Substitute, Open Approach0016071 Bypass Cerebral Ventricle to Mastoid Sinus with Autologous Tissue Substitute, Open Approach0016072 Bypass Cerebral Ventricle to Atrium with Autologous Tissue Substitute, Open Approach0016073 Bypass Cerebral Ventricle to Blood Vessel with Autologous Tissue Substitute, Open Approach0016074 Bypass Cerebral Ventricle to Pleural Cavity with Autologous Tissue Substitute, Open Approach0016075 Bypass Cerebral Ventricle to Intestine with Autologous Tissue Substitute, Open Approach0016076 Bypass Cerebral Ventricle to Peritoneal Cavity with Autologous Tissue Substitute, Open Approach0016077 Bypass Cerebral Ventricle to Urinary Tract with Autologous Tissue Substitute, Open Approach0016078 Bypass Cerebral Ventricle to Bone Marrow with Autologous Tissue Substitute, Open Approach001607B Bypass Cerebral Ventricle to Cerebral Cisterns with Autologous Tissue Substitute, Open Approach

Page 6: Číslo projektu - mzcr.cz file3.3.4.Pořízení překladu zvoleného KSP Z amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali

Z originálního anglického jmenného seznamu jsme vytvořili soubory českých produkčních pravidel **MSBCZ_.TXT, kde první dva znaky v názvu označují první dva znaky kódu, tj. soubor obsahuje všechny produkční pravidla kódů začínajících na dané první dva znaky. Soubory jsou uloženy v adresáři PROD_PRAVIDLA.

Syntaxe produkčního pravidla:element=e(integer,char,string);p(string)elementlist=element*item=it(string,elementlist)

Sémantika produkčního pravidla:it(A,List)it( ) funktorA kód ICD-10-PCSList seznam termů [T1,T2,…,Tn]term e(dimenze,znak,název)

; (nebo)p(pomocný text)

it("012YX0Z",[e(3,'2',"změna"),e(6,'0',"drenážní zařízení"),p("in"),e(4,'Y',"periferní nerv"),p(","),e(5,'X',"externí"),p("Approach")])it("012YXYZ",[e(3,'2',"změna"),e(6,'Y',"jiné zařízení"),p("in"),e(4,'Y',"periferní nerv"),p(","),e(5,'X',"externí"),p("Approach")])it("01500ZZ",[e(3,'5',"destrukce"),p("of"),e(4,'0',"cervikální plexus"),p(","),e(5,'0',"otevřený"),p("Approach")])it("01503ZZ",[e(3,'5',"destrukce"),p("of"),e(4,'0',"cervikální plexus"),p(","),e(5,'3',"perkutánní"),p("Approach")])it("01504ZZ",[e(3,'5',"destrukce"),p("of"),e(4,'0',"cervikální plexus"),p(","),e(5,'4',"endoskopický perkutánní"),p("Approach")])it("01510ZZ",[e(3,'5',"destrukce"),p("of"),e(4,'1',"krční nerv"),p(","),e(5,'0',"otevřený"),p("Approach")])it("01513ZZ",[e(3,'5',"destrukce"),p("of"),e(4,'1',"krční nerv"),p(","),e(5,'3',"perkutánní"),p("Approach")])it("01514ZZ",[e(3,'5',"destrukce"),p("of"),e(4,'1',"krční nerv"),p(","),e(5,'4',"endoskopický perkutánní"),p("Approach")])it("01520ZZ",[e(3,'5',"destrukce"),p("of"),e(4,'2',"n. frenicus"),p(","),e(5,'0',"otevřený"),p("Approach")])

Vytvořili jsme program CZLNGPCS.EXE, který umožňuje vytvářet z produkčních pravidel české jmenné seznamy ICD-10-PCS. Program má zabudovaný učící mechanismus, který po několika cyklech je schopen nabízet gramaticky vhodné české termíny. Jde zejména o skloňování podstatných a přídavných jmen, předložky a interpunkci.

012YX0Z změna drenážního zařízení v periferním nervu externím přístupem012YXYZ změna jiného zařízení v periferním nervu externím přístupem01500ZZ destrukce cervikálního plexu otevřeným přístupem01503ZZ destrukce cervikálního plexu perkutánním přístupem01504ZZ destrukce cervikálního plexu endoskopickým perkutánním přístupem01510ZZ destrukce krčního nervu otevřeným přístupem01513ZZ destrukce krčního nervu perkutánním přístupem01514ZZ destrukce krčního nervu endoskopickým perkutánním přístupem01520ZZ destrukce n. frenicus otevřeným přístupem01523ZZ destrukce n. frenicus perkutánním přístupem01524ZZ destrukce n. frenicus endoskopickým perkutánním přístupem

Program si po ukončení pamatuje poslední pozici zpracovávaného souboru, umožňuje návrat o záznam zpět, opravu aktuálního záznamu a vytváří slovník použitých termínů (v závislosti na dimenzi a daném znaku). Aplikace průběžně vytvářeného a korigovaného slovníku použitých termínů na produkční pravidla umožňuje vytvářet jmenný seznam s potřebnou kvalitou a rychlostí.e(6,'0',"drenážním zařízením")e(7,'X',"diagnostická")e(3,'9',"drenáž")e(3,'8',"rozdělení")e(4,'R',"n. sacralis")

Page 7: Číslo projektu - mzcr.cz file3.3.4.Pořízení překladu zvoleného KSP Z amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali

e(4,'Q',"sakrálního plexu")e(4,'P',"sakrálního sympatického nervu")e(4,'N',"bederního sympatického nervu")e(4,'M',"břišního sympatického nervu")e(4,'L',"hrudního sympatického nervu")e(4,'K',"sympatického nervu hlavy a krku")e(4,'H',"n. peroneus")e(4,'G',"tibiálního nervu")e(4,'F',"n. ischiadicus")e(4,'D',"n. femoralis")e(4,'C',"n. perineus")e(4,'B',"n. lumbalis")e(4,'A',"lumbosakrálního plexu")e(4,'9',"lumbálního plexu")e(4,'8',"n. thoracicus")

Zdrojový kód programu je v příloze tohoto dokumentu. Jde o zdrojový kód v jazyce PDC PROLOG verze 3.3. Program CZLNGPCS.EXE je uložen v adresáři LONGTERM. Návod k ovládání programu je v příloze tohoto dokumentu.Jde o logické programování v Hornových klausulích (speciální případ predikátové logiky prvního řádu).

Abecední seznam (rejstřík, index)Není součástí plnění tohoto projektu. Nicméně v projektu č. 5 věnovanému zdravotním službám, máme za úkol definovat zdravotní služby pomocí vybraného KPS, tedy ICD-10-PCS. Zde k definici použijeme jmenný seznam ICD-10-PCS. Důvodem tohoto postupu je získat více času k ustálení české terminologie elementárních pojmů ICD-10-PCS. Teprve poté je vhodné vytvořit jmenný seznam ICD-10-PCS.

Převodní tabulka mezi zvoleným KSP a Seznamem výkonůCMS (Centers for Medicare and Medicaid Services), americká federální agentura („bývalá HCFA“), spravuje General Equivalence Mapping (GEM). GEM je referenční zobrazení mezi ICD-10-PCS a ICD-9-CM Volume 3 navzájem, které je „public domain“ (www.cms.hhs.gov). Popis GEM verze 2007 je souboru GEMguide.pdf uloženém v adresáři MAPOVANI.

Page 8: Číslo projektu - mzcr.cz file3.3.4.Pořízení překladu zvoleného KSP Z amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali

ICD-9-CM Volume 3 je klasifikační systém procedur, který se používá (mimo jiné) i v originálních Definičních manuálech AP DRG, APR DRG, CRG, APG, APC, IR DRG, tedy i u nás používaného IR DRG 1.2.V rámci lokalizace AP DRG a IR DRG v ČR, bylo provedeno částečné mapování mezi Seznamem výkonů a ICD-9-CM Volume 3.

Naším úkolem je vytvořit převodní tabulku mezi ICD-10-PCS a Seznamem výkonů. Každá převodní tabulka znamená překlad z jednoho pojmosloví (klasifikačního systému) do druhého pojmosloví (klasifikačního systému). Každý překlad, pokud chce být věrný originálnímu významu, nemůže být proveden mechanicky, ale vyžaduje „práci“ překladatele. Tak tomu je i v našem případě. Proto i GEM nabízí ekvivalence, nikoli přiřazení.

S ohledem na mohutnosti jednotlivých klasifikací, je cesta od ICD-10-PCS k Seznamu výkonů redukcí o více jak jeden řád. S ohledem na strukturu ICD-10-PCS se dá říci, že tímto přiřazením vytváříme definiční rozsah jednotlivých procedur Seznamu výkonů.

Přístup a postup mapováníPokud vytvoříme „dobrou“ ekvivalenci mezi ICD9CM a Seznamem výkonů, tak za pomoci GEM dostáváme transitivně ekvivalenci mezi ICD-10-PCS a Seznamem výkonů .Proto jsme zvolili postup, který se v prvém kroku snažil pro „významé kódy ICD9CM“ „dobře“ přiřadit české kódy. Nejdříve jsme provedli korekci mapování Seznamu výkonů a ICD9CM z projektů DRG (AP DRG a IR DRG 1.2). Za „významné kódy ICD9CM“ jsme zvolili kódy, které jsou použity v Definičím manuálu IR DRG 2.1, které pokrývá celý rozsah zdravotní péče, kromě péče o dlouhodobě nemocné pacienty. Těchto kódů je 3 442. Výstupem tohoto prvého kroku jsou soubory CZI9.CSV (resp. CZI911.CSV v uspořádní 1:1) a I9CZ.CSV v adresáři MAPOVANI.

V druhém kroku jsme zkontrolovali obrácený pohled, tj. zda českému kódu není přiřazena „nepovolená“ kombinace amerických kódů. První „nepovolená“ kombinace je definována disjunktností tříd ICD9CM výkonů, které jsou definovány v rámci IR DRG 2.1. Pokud český kód ukazuje do dvou různých tříd výkonů je třeba rozhodnout, které přiřazení vybrat a ostatní přiřazení zrušit.Druhá „nepovolená“ kombinace je dána definičním rozsahem výkonů pro různá IR DRG 2.1. Pokud český kód ukazuje do dvou různých DRG je třeba rozhodnout, které přiřazení vybrat a ostatní přiřazení zrušit. Výstupem tohoto druhé kroku jsou soubory MAP_CZI9.CSV a MAP_I9CZ.CSV v adresáři MAPOVANI.

Třetí krok, který doporučujeme provést veřejnou oponenturou, je kontrola (a případná redukce) ICD-10-PCS definic výkonů ze Seznamu výkonů, které vyplývají z navržených ekvivalencí.

ICD-10-PCS SEZNAM CZ

ICD-9-CM v3

IR DRG

Page 9: Číslo projektu - mzcr.cz file3.3.4.Pořízení překladu zvoleného KSP Z amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali

Navržený postup se snaží maximálně postihnout význam původního ICD9CM kódu pomocí českých kódů a přitom v druhém kroku zachovat jeho jednoznačnost v rámci klasifikace IR DRG 2.1 (zde platí, že pokud český kód ukazuje na více kódů ID9CM, musí být tyto z hlediska klasifikace IR DRG 2.1 nerozlišitelné).

Navržený postup tak dává víc než bylo požadováno. Nedává totiž jen požadovanou převodní tabulku z ICD-10-PCS do Seznamu výkonů (translačně přes GEM), ale dává i mapování ICD-9-CM a Seznamu výkonů, které je zásadní pro správnou lokalizaci produktů DRG amerického původu (např. AP DRG, IR DRG, CRG, APR DRG, APG, APC, ...) v ČR.

Page 10: Číslo projektu - mzcr.cz file3.3.4.Pořízení překladu zvoleného KSP Z amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali

Příloha: Zdrojový kód programu CZLNGPCS.EXEdomains file=input;input1;output stringlist=string* dimenze=d(string,string) dimenzelist=dimenze* element=e(integer,char,string);p(string) elementlist=element* item=it(string,elementlist) INTEGERLIST = INTEGER* STRINGPAGE=STRINGLIST* ROW, COL, LEN, ATTR = INTEGER KEY = cr; esc(); break; tab; btab; del; bdel; ctrlbdel; ins; end ; home ; fkey(INTEGER) ; up ; down ; left ; right ; ctrlleft; ctrlright; ctrlend; ctrlhome; pgup; pgdn; ctrlpgup; ctrlpgdn; scroll;load;numlock;capslock;char(CHAR); alt(integer);alt_(CHAR);

int(INTEGER);ctrl_left;ctrl_right; % DENTAL alt_fkey(INTEGER);shift_fkey(INTEGER);ctrl_fkey(INTEGER);otherspec

database e(integer,char,string) position_in(long) previous_in(long) position_out(long) previous_out(long) second(string) first(string) name(string) predicates nondeterm repeat_ part(string,stringlist,elementlist) resolve_(string,stringlist) resolve(string,string,string) blank(string,string) member_n(integer,stringlist,string) skl(elementlist,elementlist) write_lng(integer,integer,elementlist) limit(integer,integer,integer) exist(element) nondeterm cyklus ukonci(integer) finish akce(integer) start_input start_output start(string) ctiMS zapis(item,string) ctiMS1 zapis1(item,string)

include "tpreds.pro"predicates longmenu(ROW,COL,ROW,ATTR,ATTR,STRINGLIST,STRING,INTEGER,INTEGER) longmenuinit(ROW,COL,ROW,ATTR,ATTR,STRINGLIST,STRING,ROW,COL,ROW,COL,ROW) longmenu1(SYMBOL,ROW,COL,ROW,COL,ATTR,STRINGLIST,ROW,ROW,ROW,ROW,ROW,ROW) longmenu2(SYMBOL,ROW,ROW,STRINGLIST,ROW,ROW,ROW,ROW,KEY) longmenu3(ROW,ROW,ROW,ROW,ROW,ROW) longmenu4(INTEGER,ROW,ROW,ROW,ROW) longmenu_wr_if_chng(ROW,ROW,ROW,COL,STRINGLIST) longmenu_wrlist(ROW,ROW,ROW,ROW,COL,STRINGLIST)

Page 11: Číslo projektu - mzcr.cz file3.3.4.Pořízení překladu zvoleného KSP Z amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali

clauses longmenu(ROW,COL,MAXH,WATTR,FATTR,STRINGLIST,HEADER,STCHOICE,CHOICE) :-

longmenuinit(ROW,COL,MAXH,WATTR,FATTR,STRINGLIST,HEADER,AROW,ACOL,HEIGHT,LEN,NOOFROW),

STOFFSET=STCHOICE-1,longmenu3(NOOFROW,HEIGHT,0,STOFFSET,BASE,OFFSET),

longmenu1(cont,AROW,ACOL,HEIGHT,LEN,WATTR,STRINGLIST,NOOFROW,-1,BASE,OFFSET,BASE1,OFFS1),

CHOICE = BASE1 + OFFS1+1,removewindow.

longmenuinit(ROW,COL,MAXH,WATTR,FATTR,STRINGLIST,HEADER,AROW,ACOL,HEIGHT,NOOFCOL,NOOFROW):-

maxlen(STRINGLIST,0,MAXNOOFCOL),str_len(HEADER,HEADLEN),HEADL1=HEADLEN+4,max(HEADL1,MAXNOOFCOL,NOOFCOL),listlen(STRINGLIST,N), N > 0 , NOOFROW=N,min(NOOFROW,MAXH,HEIGHT),adjframe(FATTR,HEIGHT,NOOFCOL,HH1,HH2),adjustwindow(ROW,COL,HH1,HH2,AROW,ACOL),makewindow(81,WATTR,FATTR,HEADER,AROW,ACOL,HH1,HH2).

longmenu1(cont,ROW,COL,H,W,ATTR,STRINGLIST,NOOFROW,OLDBASE,BASE,OFFS,BASE2,OFFS2) :-!,longmenu_wr_if_chng(OLDBASE,BASE,H,W,STRINGLIST),reverseattr(ATTR,REV),field_attr(OFFS,0,W,REV),cursor(OFFS,0),readkey(KEY),longmenu2(STOP,H,NOOFROW,STRINGLIST,BASE,OFFS,BASE1,OFFS1,KEY),field_attr(OFFS,0,W,ATTR),longmenu1(STOP,ROW,COL,H,W,ATTR,STRINGLIST,NOOFROW,BASE,BASE1,OFFS1,BASE2,OFFS2).

longmenu1(esc,_,_,_,_,_,_,_,_,OB,OF,OB,OF):-!. longmenu1(_,_,_,H,W,ATTR,STRINGLIST,_,OLDBASE,OB,OF,OB,OF):-

longmenu_wr_if_chng(OLDBASE,OB,H,W,STRINGLIST),reverseattr(ATTR,REV),field_attr(OF,0,W,REV).

longmenu2(esc,_,_,_,_,_,0,-1,esc) :-!. longmenu2(stop,_,_,_,B,O,B,O,fkey(10)):-!. longmenu2(cont,_,_,_,B,O,B,O,fkey(1)) :-!.%,help. longmenu2(selection,_,_,_,B,O,B,O,cr) :-!. longmenu2(selection,H,_,LIST,B,_,B1,O1,char(C)):-

tryletter(C,LIST,CH),!,longmenu4(CH,H,B,B1,O1). longmenu2(cont,_,_,_,_,_,0,0,home) :-!. longmenu2(cont,H,LEN,_,_,_,B1,O1,end) :-!, O1=H-1, B1 = LEN-H. longmenu2(cont,H,LEN,_,B,O,B1,O1,up) :-!, OO=O-1,longmenu3(LEN,H,B,OO,B1,O1). longmenu2(cont,H,LEN,_,B,O,B1,O1,down):-!, OO=O+1,longmenu3(LEN,H,B,OO,B1,O1). longmenu2(cont,H,LEN,_,B,O,B1,O1,pgup):-!, OO=O-H+1,longmenu3(LEN,H,B,OO,B1,O1). longmenu2(cont,H,LEN,_,B,O,B1,O1,pgdn):-!, OO=O+H-1,longmenu3(LEN,H,B,OO,B1,O1). longmenu2(cont,_,_,_,B,O,B,O,_).

longmenu3(_,H,B,O,B,O) :-O>=0, O<H, !. longmenu3(LEN,H,B1,O1,B2,O2) :-O1+B1>=LEN,!, O2=H-1, B2=LEN-H. longmenu3(_,_,B1,O1,0,0) :-O1+B1<0,!. longmenu3(_,_,B1,O1,B2,0) :-O1<0, !, B2=B1+O1. longmenu3(_,H,B1,O1,B2,O2) :-O1>=H, O2=H-1, B2=B1+O1-O2.

longmenu4(CH,_,B,CH,0) :-CH<B,!. longmenu4(CH,H,B,B1,O1) :-CH>=B+H,!,O1=H-1,B1=CH-O1.

Page 12: Číslo projektu - mzcr.cz file3.3.4.Pořízení překladu zvoleného KSP Z amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali

longmenu4(CH,_,B,B,O) :-O=CH-B.

longmenu_wr_if_chng(B,B,_,_,_) :- !. longmenu_wr_if_chng(OLDB,B,H,W,CL) :-

SCROLL=B-OLDB, scroll(SCROLL,0),longmenu_wrlist(0,B,0,H,W,CL).

longmenu_wrlist(_,_,H,H,_,_) :- !. longmenu_wrlist(I,B,R,H,W,[_|T]) :- I<B,!, I1=I+1,

longmenu_wrlist(I1,B,R,H,W,T). longmenu_wrlist(I,B,R,H,W,[STR|T]) :-

field_str(R,0,W,STR),R1=R+1,longmenu_wrlist(I,B,R1,H,W,T).

blank(X,Z):-concat(" ",X1,X),!,blank(X1,Z). blank(X,X):-!.

member_n(1,[X|_],X):-!. member_n(N,[_|X],Z):-N1=N-1,!,member_n(N1,X,Z).

repeat_. repeat_:-not(eof(input)),repeat_.

resolve(S,M,Tail):-searchstring(S,"|",P),frontstr(P,S,_,T), searchstring(T,"|",P1),P2=P1-1, frontstr(P2,T,Prvni,Tail),

frontstr(2,Prvni,_,M),!. resolve_(String,[F|List]):-resolve(String,F,Zbytek),!, resolve_(Zbytek,List). resolve_(String,[String1]):-concat("|",String1,String),!.

part(X,List,[E|F]):- concat("(",D,X),frontstr(1,D,Dim,X1),str_int(Dim,Dim_), concat(",",L,X1),frontchar(L,Lab,L1),

concat(")",T,L1), blank(T,T2), member_n(Dim_,List,Text), E=e(Dim_,Lab,Text),!, part(T2,List,F).

part(X,List,[E|F]):- fronttoken(X,P,X1),E=p(P), blank(X1,X2),!, part(X2,List,F). part(_,_,[]):-!.

limit(Row,Col,Len):-Col+Len<79,field_attr(Row,Col,Len,95),!. limit(Row,78,Len):-Row1=Row+1,field_attr(Row1,0,Len,95),!. limit(Row,79,Len):-Row1=Row+1,field_attr(Row1,1,Len,95),!. limit(Row,Col,Len):-C1=78-Col,field_attr(Row,Col,C1,95), Len2=Col+Len-78,Row1=Row+1,field_attr(Row1,0,Len2,95),!.

exist(e(D,L,T)):-e(D,L,T),!. exist(e(D,L,T)):-!,retractall(e(D,L,_)),asserta(e(D,L,T)),!.

write_lng(0,0,[e(D,L,T)|Tail]):-write(T),exist(e(D,L,T)), !,write_lng(1,0,Tail). write_lng(0,0,[e(D,L,T)|Tail]):-write(T),!,write_lng(1,0,Tail). write_lng(1,0,[e(D,L,T)|Tail]):-write(" ",T),exist(e(D,L,T)), !,write_lng(1,0,Tail). write_lng(1,0,[e(D,L,T)|Tail]):-write(" ",T),!,write_lng(1,0,Tail).

Page 13: Číslo projektu - mzcr.cz file3.3.4.Pořízení překladu zvoleného KSP Z amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali

write_lng(0,1,[e(D,L,T)|Tail]):-e(D,L,T_),write(T_),!,write_lng(1,1,Tail). write_lng(1,1,[e(D,L,T)|Tail]):-e(D,L,T_),write(" ",T_),!,write_lng(1,1,Tail). write_lng(0,1,[e(D,L,T)|Tail]):-write(T),!,write_lng(1,1,Tail). write_lng(1,1,[e(D,L,T)|Tail]):-write(" ",T),!,write_lng(1,1,Tail).

write_lng(B,1,[p(",")|Tail]):-cursor(Row,Col),write(","), limit(Row,Col,1),!,write_lng(1,1,Tail). write_lng(B,0,[p(",")|Tail]):-!,write_lng(B,0,Tail).

write_lng(0,1,[p(X)|Tail]):-cursor(Row,Col),str_len(X,Len), upper_lower(UX,X),write(UX),limit(Row,Col,Len),!, write_lng(1,1,Tail). write_lng(1,1,[p(X)|Tail]):-cursor(Row,Col),str_len(X,Len),Col1=Col+1, upper_lower(UX,X),write(" ",UX),limit(Row,Col1,Len),!, write_lng(1,1,Tail). write_lng(_,0,[p(X)|Tail]):-!,write_lng(1,0,Tail). write_lng(_,_,[]):-!. cyklus:-repeat, filepos(input,Pos,0), retractall(position_in(_)),asserta(position_in(Pos)),

readterm(item,it(Code,List)),gotowindow(1),clearwindow,write_lng(0,1,List),gotowindow(3),clearwindow,gotowindow(2),clearwindow,skl(List,List1),gotowindow(4),clearwindow,write_lng(0,0,List1),writedevice(output),position_out(Prev),write(Code," "),write_lng(0,0,List1),nl,filepos(output,P,0),writedevice(screen),gotowindow(5),write(Code,"\179"),write_lng(0,0,List1),nl,

retractall(previous_out(_)),asserta(previous_out(Prev)),retractall(position_out(_)),asserta(position_out(P)),

name(Name),save(Name), finish.

cyklus:-!. ukonci(1):-readdevice(A),readdevice(keyboard),cursorstate(off), sound(30,165), longmenu(2,73,4,15,0,[" d le "," znovu ", " - 1 "," konec "],"",2,Choice), cursorstate(on),readdevice(A),

!,akce(Choice),!. ukonci(_):-!. finish:-position_in(Pos),filepos(input,P,0), retractall(previous_in(_)),asserta(previous_in(Pos)), retractall(position_in(_)),asserta(position_in(P)),

fail.

akce(0):-!. akce(1):-!. akce(4):-name(Name),save(Name), closefile(input),closefile(output),!,exit. akce(2):-position_in(Pos),filepos(input,Pos,0), gotowindow(3),clearwindow,gotowindow(2),fail. akce(3):-previous_in(Pos),filepos(input,Pos,0),

retractall(position_in(_)),asserta(position_in(Pos)), previous_out(Prev), writedevice(output),filepos(output,Prev,0),writedevice(screen), retractall(position_out(_)),asserta(position_out(Prev)), gotowindow(4),clearwindow, gotowindow(3),clearwindow,gotowindow(2), fail.

Page 14: Číslo projektu - mzcr.cz file3.3.4.Pořízení překladu zvoleného KSP Z amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali

skl([e(Dim,Lab,A)|T],[e(Dim,Lab,B)|U]):-e(Dim,Lab,A_),str_len(A_,Pos),gotowindow(2),edit(A_,B,"","","",Pos,"",1,0,1,0,_,Ret,0,0,0,1,0,"",""),!,gotowindow(3),write(B," "),gotowindow(2),ukonci(Ret),!,skl(T,U).

skl([e(Dim,Lab,A)|T],[e(Dim,Lab,B)|U]):-str_len(A,Pos),gotowindow(2),edit(A,B,"","","",Pos,"",1,0,1,0,_,Ret,0,0,0,1,0,"",""),!,gotowindow(3),write(B," "),gotowindow(2),ukonci(Ret),!,skl(T,U).

skl([A|T],[A|U]):-!,skl(T,U). skl([],[]):-!.

start_input:-position_in(Pos),filepos(input,Pos,0),!. start_input:-asserta(position_in(0)),!. start_output:-position_out(Pos),filepos(output,Pos,0),!. start_output:-asserta(position_out(0)),!.

start(Name):-existfile(Name),consult(Name),!. start(Name):-asserta(name(Name)),!. ctiMS:-repeat, readterm(item,it(Code,List)),

second(F), zapis(it(Code,List),F), fail. ctiMS:-!.

zapis(it(Code,List),_):-frontstr(1,Code,A,_), not(A="0"),closefile(output),writedevice(screen),!,exit. zapis(Item,Sec):-Item=it(Code,List),frontstr(2,Code,A,_),

not(concat(_,Sec,A)),frontstr(1,A,_,Sec1), upper_lower(A1,A), retractall(second(_)),asserta(second(Sec1)), closefile(output),concat(A1,"masbob.txt",Name), openwrite(output,Name),writedevice(output),write(Item),nl,!.

zapis(Item,_):-write(Item),nl,!.

ctiMS1:-repeat, readterm(item,it(Code,List)),

first(F), zapis1(it(Code,List),F), fail. ctiMS1:-closefile(output),writedevice(screen),!.

zapis1(Item,First):-Item=it(Code,List),frontstr(1,Code,A,_), not(First=A),upper_lower(A1,A), retractall(first(_)),asserta(first(A1)), closefile(output),concat(A1,"_masbob.txt",Name), openwrite(output,Name),writedevice(output),write(Item),nl,!.

zapis1(Item,_):-write(Item),nl,!.

goal makewindow(80,112,0,"",0,0,25,80), dirfiles("??msbcz_.txt",0x40,Fname,_,_,_,_,_,_,_,_),!, filenameext(Fname,Name,Ext),frontstr(6,Name,Zac,_), concat(Zac,"cz.txt",Fname1), openmodify(output,Fname1), concat(Name,".st",VOC), openread(input,Fname),readdevice(input), retractall(_),start(VOC), start_input,start_output, makewindow(1,112,119,"",0,0,4,80),

Page 15: Číslo projektu - mzcr.cz file3.3.4.Pořízení překladu zvoleného KSP Z amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali

makewindow(2,47,0,"",3,1,1,78), makewindow(3,113,0,"",4,1,2,78), makewindow(4,112,0,"",6,1,2,78), makewindow(5,7,0,"",8,0,17,80), cyklus, removeallwd, closefile(input),readdevice(keyboard), closefile(output),writedevice(screen).

Page 16: Číslo projektu - mzcr.cz file3.3.4.Pořízení překladu zvoleného KSP Z amerického originálu tabelárního seznamu ICD-10-PCS obsahujícího 86 617 názvů procedur jsme vygenerovali

Příloha: Návod k obsluze programu CZLNGPCS.EXEProgram se spouští ze zdrojového adresáře. Do zdrojového adresáře překopírujeme z adresáře PROD_PRAVIDLA jeden soubor (??MSBCZ_.TXT). V zdrojovém adresáři musí být vždy jen jeden soubor produkčních pravidel, který budeme převádět do jmenné formy (např. 00MSBCZ_.TXT budeme převádět do O00MSBCCZ.TXT).

Jde o DOSovou aplikaci, kde v horním řádku jsou postupně zobrazována produkční pravidla z vybraného souboru, kde fialová pole označují gramatické neelementární pojmy z originálních amerických názvů. Všechny přeložené elementární pojmy jsou uvedeny v prvním pádu. V dalším řádku (zeleném) je postupně nabízeno jedno elementární slovo po druhém a obsluha programu má možnost jeho tvar gramaticky správně opravit a potvrdit klávesou ENTER. Provedené změny se zobrazují v modrém provedení o řádek níže. Pokud potřebujeme již pořízené opravit (buď aktuálně otevřený záznam nebo předchozí záznam), stiskneme klávesu ESC. Máme možnost ukončit práci s programem volba KONEC, pokračovat volba DÁLE, vrátit se na počátek aktuálního záznamu volba ZNOVU, nebo se vrátit o jeden záznam zpět -1.V dolním černém okně se nám postupně připisují pořízené záznamy ve tvaru, jak jsme je upravili.Program si pamatuje místo v aktuálně upravovaném souboru produkčních pravidel, a po dalším spuštění pokračuje tam kde naposled skončil.

Program si vytváří statusový soubor s extenzí .ST (např. 00MBSCZ_.ST), který obsahuje jednak informace o pozici v souboru, název souboru, a termy, obsahující poslední provedené úpravy elementárních pojmů (v kontextu k znaku dané dimenze). Tento soubor slouží jako trvalá, přepisovatelná paměť použitých termů, které jsou pak v kontextu nabízeny při běhu programu.Výstupní soubor (??MSBCCZ.TXT) obsahuje jmenné názvy ICD-10-PCS kódů pro zvolenou úvodní dvojici hodnot kódu ICD-10-PCS. Jde o textový soubor, který je možné v případě nutnosti dodatečně editovat.

Po skončení práce na vybraném souboru produkčních pravidel, je nutné tento vstupní soubor (nikoliv výstupní) ze zdrojového adresáře vymazat a nahrát další soubor produkčních pravidel (nejlépe jiný), který bude stejným způsobem upravován.