Loading...
 
PDF Print

É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.

É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”, “+”, “-”,“E”, “e”, “." az alapbeállítási karakterkészletből maximum 16 bájt
DT Date Time az egybefüggő dátum-idő karaktersztring a következő formátumban: YYYYMMDDHHMMSS.FFFFFF&ZZXX Balról jobbra. YYYY: év, MM: hó, DD: nap, HH: óra (00-23), MM: perc (00-59), SS: másodperc (00-60), FFFFFF: másodperc törtrésze egy másodperc milliomod részéig (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 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 keleti-parti 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 2007-0500 legális érték“0”-”9”, “+”, “-”,“E”, “e”, “." az alapbeállítási karakterkészletből. 26 bájt maximum, egy Query kontextusában 54 bájt lehet maximum
FL Floating Point Single Szimplapontos bináris lebegőpontos szám a IEEE 754:1985 szerinti 32-bites lebegőpontos számformátum nem jön szóba fix 4 bájt
FD Floating Point Double Duplapontos bináris lebegőpontos szám a IEEE 754:1985 szerinti 64-bites lebegőpontos számformátum nem jön szóba fix 8 bájt
IS Integer String Karaktersztring, mely decimális egész 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ó 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). “0”-”9”, “+”, “-”,“E”, “e”, “." az alapbeállítási karakterkészletből. 12 bájt maximum
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 karakterkészlet és/vagy (0008,0005) szerinti definíció 64 karakter maximum
LT Long Text 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ó (0008,0005).
OB Other Byte String 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 definíció
OF Other Float String 32-bites IEEE 754:1985 lebegőpontos szó. Az OF olyan VR, ami bájtcserét igényel minden Little Endian és Big Endian váltásokor nem jön szóba 232-4
OW Other Word String 16-bites szó. Az OW olyan VR, ami 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, középső név, név előtag, név utótag. Fontos: a HL7 nem engedi meg a kezdőpozícióba helyezett szóközt, a DICOM megengedi kezdő- és 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 sorrendjében: egybájtos karakter reprezentáció, betű szerinti reprezentáció és a fonetikus reprezentáció. Bármely komponenscsoport hiányozhat, 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 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 családnevekként voltak kezelve. alap karakterkészlet és/vagy (0008,0005) kivéve a kontroll karakterek LF, FF, és CR, de megengedett az ESC kontroll karakter. 64 karakter maximum komponenscsoportonként
SH Short String Karaktersztring, mely kitölthető kezdő- vagy végpozícióban lévő szóközökkel. 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. Alap betűkészlet és/vagy (0008,0005) szerint. max 16 karakter
SL Signed Long előjeles bináris egész szám, 32 bit hosszú kettes komplemens formában. Egy n egész szám a következő tartományban: - 231 <= n <= (231 - 1). nem jön szóba 4 bájt, fix
SQ Sequence of Items nulla vagy több elem sorozata nem jön szóba nem jön szóba
SS Signed Short 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 Text Karaktersztring, mely egy vagy több 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ó. Alap betűkészlet és/vagy (0008,0005) szerint. 1024 karakter maximum
TM Time Karaktersztring a következő formátumban: HHMMSS.FFFFFF, itt HH: óra (00-23), MM: perc (00-59), SS: másodperc (00-60), FFFFFF: másodperc törtrésze egy másodperc milliomod részéig (000000-999999). 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 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 meghatározatlan komponenstől jobbra álló komponens szintén nem meghatározott. A másodperc törtrésze, ha jelen van csak 1 és 6 közötti számokból állhat. Példák: 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. “0”-”9”, “+”, “-”,“E”, “e”, “." az alapbeállítási karakterkészletből vagy a query kontextusának megfelelően 26 bájt maximum, egy query kontextusában 54 bájt lehet maximum
UI Unique Identifier (UID) Karaktersztring, mely egy UID-t tartalmaz, mely bizonyos elemek egyértelmű azonosítására szolgál. Az 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
UL Unsigned 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 Unsigned 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 Unlimited 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 karakterkészlet és/vagy (0008,0005) szerint 232-2. Megjegyzés: az érték határát csak a maximum előjel nélküli egész szám szabja meg, amit a 32 bites VL értékben megadhatunk-1, hiszen az FFFFFFFFH fenntartva

 






Site Language: English

Log in as…