2.5 A DICOM-szabvány .1 Összefoglalás (DICOM) .1 Összefoglalás (DICOM)
2.5.4 A DICOM-fájlformátum elemei
2.5.4.1 Érték-reprezentáció
2.5.4 A DICOM-fájlformátum elemei
2.5.4.1 Érték-reprezentáció
Néhány szó a valódi DICOM formátumról
Adattípusok
Amikor játék-DICOM formátumunkat definiáltuk, bájtokat használtunk, hogy az adattípusok között különbséget tegyünk, majd szimbolikus formát vezettünk be a típus meghatározására.
Emellett voltak "hivatalos" adattípus-neveink is. A valódi DICOM esetén a fő különbség a
"hivatalos" formátumoknál az, hogy itt az adatfolyamban dupla bájttal jelezzük.
LittleEndians és BigEndians
Ahogy már elmagyaráztuk, még akkor is, ha tudjuk, hogy egy szó, vagy egy még hosszabb bájtszakasz egy számot ír le, tudnunk kell, hogy melyik irányban növekednek a helyiértékek.
Két lehetőség van:
1. A helyiértékek jobbról balra növekszenek. A DICOM szabvány ezt LittleEndian
-nak hívja, utalva arra, hogy a bájtsor végén találhatóak a kisebb értékek 2. A helyiértékek balról jobbra növekszenek. A DICOM szabvány ezt
BigEndian
-nak hívja, utalva arra, hogy a bájtsor végén találhatóak a nagyobb értékek.
A DICOM fájl az "Endian"-ra vonatkozó információt a headerben tárolja. A Header információiról még később részletesen szó lesz.
70
Érték-reprezentáció (VR) a DICOM-ban
Amikor a játék-DICOM formátumunkat ismertettük, világossá vált, hogy akár a számítógép, akár a humán befogadó próbálja értelmezni az adathalmazokat, a különböző adattípusokat precízen definiálni kell. Két fontos elemét emeltük ki: a bevezető jel, ami megmondja, hogy pontosan milyen fajta adat van kódolva a következő bájtokon, és annak a leírása, ahogyan ez az adat kódolva van. A bevezető jelek, az ún. Dicom tagek a témája a következő szakasznak.
Ezzel szemben a jelen fejezet a DICOM érték-reprezentációval foglalkozik. A következő táblázat az összes lehetséges 27 adatformátumot felsorolja.
VR név definíció Karakterkészlet érték hossza
DS Decimal String
Egy karaktersztring, mely egy fixpontos vagy lebegőpontos számot tartalmaz. A fixpontos szám csa a 0-9 karaktereket és egy opcionális nyitó + vagy - jelből illetve egy opcionális decimális törtrészt jelző "."-ból állhat. A lebegőpontos szám az ANSI 3.9 szerinti definíció szerint áll, "E" vagy "e" jelüli az exponens kezdetét. A Decimal String kiegészíthető nyitó vagy záró
szóközökkel, karakterek közötti szóközök nem megengedettek. Fontos:
az adatelemek melyek ezt a VR-t használják, nem megfelelően kódoltak, ha az explicit VR transzfer szintaxist használjuk, és ennek az attribútumnak az értéke meghaladja a 65534 bájtot.
“0”-”9”, “+”, (000000-999999). A &ZZXX utótag opcionális, az Egyezményes Koordinált Világidő (Coordinated Universal Time, UTC), ahol a & értéke + vagy -, ZZ óra, XX percben mért offszet. Az év, hónap, nap a Gergely-naptár szerint értendő. 24 órás jelölés használatos. Az éjfél
reprezentációja "0000" hiszen a "2400"
kilógna az értékkészletből. A másodperc törtrésze, ha jelen van csak 1 és 6
közötti számokból állhat. Ha a másodperc törtrésze nincs jelezve, a megelőző "."-ot nem kell kiírni. Az
“0”-”9”, “+”,
71 offszet előtag, ha van, csak 4
számjegyből állhat. A sztring kiegészíthető szóközökkel de csak végpozícióban, előtte és szó közben nem megengedett. Azt a komponenst, melyet kihagyunk, nullkomponensnek
nevezzük. A végpozícióban lévő nullkomponensek azt jelzik, hogy az érték nem pontos az adott komponensek pontossági szintjéig. A YYYY
komponens sohasem lehet nulla.
Nullkomponens középső pozícióban nem állhat. Az opcionális előtag nem számít komponensnek. Az opcionális előtag nélkül a DT az adatelemet létrehozó alkalmazás helyi időzónáját jelenti, hacsak az időzóna-offszettel explicit nincsen megadva. Az UTC (0008, 0201) offszet a helyi idő mínusz az UTC. Az offszet érték a DT UTC-ben +0000. Megjegyzések: 1) az offszet tartománya -1200-től +1400. Az USA keletiparti idejére (EST) az offszet -0500. A japán középidőre +0900. 2) az RFC 2822 által használt -0000 az offszetre helyi idő használatának tiltását jelenti 3) a DT 195308 jelentése 1953 augusztus, a napot nem jelzi. A 19530827111300.0 DT érték 1956 augusztus 27 d.e. 11:13 -at jelöl, tizedmásodperc pontosságig. 4) a másodperc komponens csak
szökőmásodperc esetén veheti fel a 60-as értéket 5) az offszet beírható
nullkomponensként is, azaz a szám a IEEE 754:1985 szerinti 32-bites lebegőpontos számformátum a IEEE 754:1985 szerinti 64-bites lebegőpontos számformátum számot tartalmaz, csak a 0-9 számokat tartalmazhat és egy opcionális nyitó + vagy - jelből állhat. Kiegészíthető kezdő- vagy végpozícióban álló
72
szóközökkel. Karakterek között a szóköz nem megengedett. Az n, egész szám a következő tartományba eshet: -231 <= n <= (-231 - 1).
LO Long String
karaktersztring, mely kiegészíthető kezdő- vagy végpozícióban álló
szóközökkel. Az 5CH karakterkód (a "\"
per-jel az ISO-IR 6 szerint) nem
használható, mert elválasztókarakterként használjuk többértékű adatelemeknél. A sztring nem tartalmazhat kontroll-karaktert kivéve az ESC-t
alap
Karaktersztring, mely egy vagy több bekezdést tartalmazhat. Alkalmazható a grafikus karakterkészlet, és a következő kontroll-karakterek: LF, FF és ESC.
Kiegészíthető végpozícióban lévő szóközökkel, kezdőpozícióban lévő szóközök viszont jelentéssel bírnak.
Adatelemek ebben a VR-ben nem lehetnek többértékűek, így a 5CH karakterkód (a "\" per-jel az ISO-IR 6 szerint) használható
Bájtsztring, melynek tartalma a Transfer Syntax. OB olyan VR, ami nem
érzékeny a Little/Big Endian bájt sorrendre. A bájtsztring egyetlen végpozícióban lévő null bájtot (00H) tartalmazhat, hogy azonos hosszt adjon
nem jön szóba lásd Transfer Syntax szó. Az OF olyan VR, ami bájtcserét igényel minden Little Endian és Big Endian váltásokor bájtcserét igényel minden Little Endian és Big Endian váltásokor
nem jön szóba lásd Transfer Syntax definíció
PN Person Name
A karaktersztring az 5 komponens konvenció szerint van kódolva. A 5CH karakterkód (a "\" per-jel az ISO-IR 6 szerint) nem használható, mert
elválasztó-karakterként használjuk többértékű adatelemeknél. Emberi használatra az öt komponens a következő: családnév, keresztnév,
73 végpozícióban is, és figyelmen kívül
hagyja. Az 5 komponens bármelyike lehet üres, a komponenseket elválasztó karakter a "^" (5EH). Elválasztó karakterek szükségesek a belső null-komponensek esetén. Több bejegyzés minden komponensben megengedett, és mint szöveges sztringek jelennek meg az adott személy által kívánt formában.
Állatorvosi használatban az első két komponens sorrendben: felelős személy családi név vagy felelős szervezet neve, páciens neve, például "Léda". A többi komponenst nem használjuk, és nem is jelenhetnek meg. Ez az öt elemes csoportra, mint Person Name (PN) komponenscsoportra hivatkozhatunk.
Hogy a neveket fonetikus vagy betű szerinti formában lehessen írni, 3 komponenscsoport használható (lásd H melléklet, 1 és 2). A komponenscsoport elválasztó karaktere a "=" (3DH). A három komponenscsoport előfordulásuk
beleértve az első komponenscsoportot, a személy neve kezdődhet egy vagy több elválasztó "=" -vel. Végpozícióban lévő nullkomponensek és elválasztók nem kötelezőek. Pontos szemantika határoz meg minden komponenscsoportot.
Példák: Rev. John Robert Quincy Adams, B.A. M.Div.“Adams^John RobertQuincy^^Rev.^B.A. M.Div.”
[egy családnév; három keresztnév;nincs középső név; egy előtag; két utótag];
Susan Morrison-Jones, Ph.D., Chief Executive Officer
“Morrison-Jones^Susan^^^Ph.D., Chief Executive Officer” [két családnév; egy keresztnév;
nincs középső név; nincs előtag; egy utótag]; John Doe “Doe^John” [egy családi név; egy keresztnév; nincs középső név, nincs előtag,nincs utótag.
az utolsó három komponens elválasztóit lehagytuk]; Smith^Cirmos [macska, nem ember, ahol a felelős személy
74
családneve Smith, és saját neve
Cirmos]; ABC Farm^Kesely Üstök [Ló, ahol a felelős intézmény neve ABC Farm, saját neve pedig “Kesely Üstök”];
Megjegyzés 1. A hasonló
többkomponensű konvenciója szintén használatban van a HL7 v2 XPN adattípusban. Az XPN viszont az utótagot teszi az előtag elé, és van egy hatodik komponensi "fok", amint a DICOM a név utótagba olvaszt. Szintén vannak különbségek abban, hogy hogyan azonosítjuk a név elemeit. 2) A tipikus amerikai és európai használati mód az, hogy az első "utónév" jelenti a keresztnevet, a keresztnév második és a többi megjelenése a középső névbe kerül át. A középső név a visszafelé való kompatibilitás illetve más
szabványokkal való összhang érdekében maradt meg. 3) az implementáció készítőjének tudatában kell lennie, hogy a korábban "utónevek" a keresztnevek és a középeső nevek helyére kerültek be.
4) a visszafelé kompatibilitás miatt a szabvány a V3.0 előtti állapotában a személynevek egészében
A 05HC karakterkód (the per-jel “\” az ISO-IR 6 szerint) nem használható, mert elválasztó-karakter különböző
adatelemek között. Kontrolkarakterek szintén nem használhatóak az ESC kivételével.
előjeles bináris egész szám, 32 bit hosszú kettes komplemens formában.
előjeles bináris egész szám, 16 bit hosszú kettes komplemens formában.
Egy n egész szám a következő
tartományban: - 215 <= n <= (215 - 1).
nem jön szóba 2 bájt, fix ST Short Karaktersztring, mely egy vagy több Alap betűkészlet 1024 karakter
75 Text bekezdést tartalmazhat. Lehet része
grafikus karakter és kontroll karakter CR, LF, FF és ESC. Kitölthető
végpozícióban lévő szóközökkel, melyet nem vesznek figyelembe,
kezdőpozícióban álló szóközöket viszont igen. Adatelemek ebben a VR-ben nem lehetnek többértékűek ezért a 05HC karakterkód (the per-jel “\” az ISO-IR 6 szerint) használható.
és/vagy
reprezentációja "0000" hiszen a "2400"
kilógna az értékkészletből. A sztring kiegészíthető szóközökkel de csak végpozícióban, előtte és szó közben nem megengedett. Kevesebb, vagy több komponens a MM, SS, FFFFFF közül maradhat üresen, amíg egy
1."070907.070" jelentése 7 óra 9 perc 7.0705 másodperc. 2. “1010” jelentése 10 óra 10 perc 3. “021 ” érvénytelen érték. Megjegyzések: az ACR-NEMA szabvány 300 (a DICOM elődje)
támogatta a HH:MM:SS.tört értéket erre a VR-re. Ez a formátum nem
kompatibilis. 2. Lásd még a DT VR-t. 3.
Az SS komponens csak szökőmásodperc esetén lehet 60. UID olyan numerikus elemek sorozata, melyeket a ""."" karakter választ el. Ha az értékmező, mely az UID.eket
tartalmazza páratlan számú bájt hosszú, egy végpozícióban álló NULL (00H) karakterrel kell lezárni, hogy páros szám legyen a bájtban mért hossz.
0-9 és . az alap karakterkészletbő l
64 bájt max
76 UL Unsigne d Long
előjel nélküli bináris 32 bit hosszú egész szám. Olyan n egész, mely értékkészlete 0 <= n < 232
nem jön szóba 4 bájt fix UN
unknown
olyan bájtsztring, melynél a tartalom
kódolása ismeretlen nem jön szóba bármely más VR hosszával megegyező US
Unsigne d Short
előjel nélküli bináris egész szám, 16 bit hosszú. Egy n egész szám a következő tartományban: 0<= n <= 216
nem jön szóba 2 bájt fix
UT Unlimite d Text
karaktersztring, mely egy vagy több bekezdést tartalmaz. Tartalmazhat grafikus karaktert és kontroll karaktert CR, LF, FF és ESC. Végpozícióban állhatnak szóközök, melyeket figyelmen kívül hagyunk, kezdőpozícióban viszont jelentőséggel bír. Az adatelemek ebben a VR-ben nem lehetnek többértékűek, ezért a 05HC karakterkód (the per-jel
“\” az ISO-IR 6 szerint) használható.
alap
DiCOM azonosítók és a DICOM vizsgálat fogalma
A DICOM szabvány lefontosabb fogalamai a következők:
a vizsgálat azonosító
és más, a sorozathoz tartozó azonosítók
képek
azonosítók, melyek más, eddig fel nem sorolt DICOM objektumokhoz tartoznak
Gondoljunk egy régimódi röntgen-osztályra. A filmalapú felvételek egy bizonyos páciens vizsgálatához tartoznak, ezeket egy borítékba raknánk, illetve minden felvételen lenne valamilyen betegadat, vagy más információ, mint például a felvétel orientációja. A vizsgálatot az teszi vizsgálattá, hogy az összetartozó felvételek ugyanabban a borítékban vannak, és a borítékon elég információ van ahhoz, hogy azonosítsuk a felvételeket és a pácienst. Ha véletlenül néhány felvétel kiesik a borítéból, a felvételeken található páciensadatok alapján újra összerendezhetjük őket.
Tehát egy vizsgálat jól azonosítható felvételekből áll, melyek egy jól definiálható borítékba tartoznak: minden felvétel információt tartalmaz a borítékra nézve és a boríték a felvételekre nézve. A diagnosztikai osztály szemszögéből az az egyszerű tény, hogy szegény beteg szintén