IVEU Advanced DICOM Header Mapping



Ähnliche Dokumente
(Un)eindeutigkeiten in DICOM - Welche Tags braucht der MPE? Jörg Czwoydzinski, M.Sc

Arbeiten mit UMLed und Delphi

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

1 BEDIENUNGSANLEITUNG

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Import Zertifikate ELM

Word 2010 Schnellbausteine

Einführung in TexMaker

ZAHLUNGSAVIS. Im Zahlungsprogrammteil automatisch erstellen

Es gibt zahlreiche Web-Programmiersprachen: HTML, CSS, JavaScript, PHP, Perl, Python, HTTP, XML und viele weitere.

Anleitung über den Umgang mit Schildern

GSD-Radionik iradionics Android-App

Im Folgenden werden die jeweiligen Elemente erklärt. Im Anschluss folgt ein Beispieldatensatz in xml.

Toleranzschema. ArtemiS SUITE

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Einführung in QtiPlot

32.4 Anpassen von Menüs und Symbolleisten 795i

Einrichten einer ADSL Verbindung in Windows Vista

Installation Terminkarten- und Etikettendrucker

User Manual Data 24. Login und Layout

Stand: Adressnummern ändern Modulbeschreibung

HTML5 HOCKEYSTICK EXPANDABLE BANNER v1.0

Aussage: Das Seminar ist hilfreich für meine berufliche Entwicklung

Anleitung, WebRecherche

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Installation OMNIKEY 3121 USB

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Internet online Update (Mozilla Firefox)

1. Einführung Erstellung einer Teillieferung Erstellung einer Teilrechnung 6

meinpflegedienst.com Release Notes 3.4

Dokumentenverwaltung im Internet

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

State Machine Workflow mit InfoPath Formularen für SharePoint 2010 Teil 6

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Bedienungsanleitung zum Anlageinventar in der Buchhaltung Gültig ab Version 3.9, November 2009

Alle Felder, die nicht "aufgeklappt" sind, können allenfalls, müssen aber nicht erfasst werden. Bei Fragen:

Anwendungsbeispiele Buchhaltung

Jede Zahl muss dabei einzeln umgerechnet werden. Beginnen wir also ganz am Anfang mit der Zahl,192.

WinWerk. Prozess 6a Rabatt gemäss Vorjahresverbrauch. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

Software- Handbuch

4. BEZIEHUNGEN ZWISCHEN TABELLEN

So gehts Schritt-für-Schritt-Anleitung

7.3 Einrichtung 13. Monatslohn. Auszahlung Ende Jahr / Ende der Beschäftigung

PDF-Dateien erstellen mit edocprinter PDF Pro

Inhaltverzeichnis 1 Einführung Zugang zu den Unifr Servern Zugang zu den Druckern Nützliche Links... 6

Mit dem Podcasten starten: So konfigurierst Du das Wordpress-Plugin Podlove Publisher

Eingangsseite Umwelt-online

C A L D E R A G R A P H I C S. Wie geht das? Einrichten automatischer Druckprozesse

1. Zusammenfassung der letzten Vorlesung

Computer Schulung, Shop, Support, Service und Büro Center

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Step by Step Benutzerverwaltung unter Novell. von Christian Bartl

1. Einführung. 2. Die Abschlagsdefinition

Handbuch zum Statistiktool Pentaho Stand: Dezember 2013

Dokumentation zur Versendung der Statistik Daten

Auktionen erstellen und verwalten mit dem GV Büro System und der Justiz Auktion

Erstellen der Barcode-Etiketten:

Benutzung der LS-Miniscanner

Um die Rücklagen ordnungsgemäß zu verbuchen, ist es wichtig, Schritt-für-Schritt vorzugehen:

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

2.1 Grundlagen: Anmelden am TYPO3-Backend

Anzeige von eingescannten Rechnungen

Erstellen und Bearbeiten von Inhalten (Assets)

CAQ Software für Ihr Qualitätsmanagement. Ablauf für die Erfassung der Fehler in der Fertigung

Educase. Release Notes 1.7: Neue Funktionen und Verbesserungen. Base-Net Informatik AG Wassergrabe 14 CH-6210 Sursee

ecall sms & fax-portal

Qt-Projekte mit Visual Studio 2005

Hilfe zur Buchung Altacher Sommer

ClubWebMan Veranstaltungskalender

Word. Serienbrief erstellen

Hilfestellung: P.A.P.A. die kaufmännische Softwarelösung. Teilrechnung mit einzelnen Rechnungen. Inhalt

AutoCAD Dienstprogramm zur Lizenzübertragung

Erwin Grüner

Dreamweaver 8 Einführung

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

WinWerk. Prozess 4 Akonto. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

Access [basics] Rechnen in Berichten. Beispieldatenbank. Datensatzweise berechnen. Berechnung im Textfeld. Reporting in Berichten Rechnen in Berichten

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Stammdatenanlage über den Einrichtungsassistenten

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

White Paper - Umsatzsteuervoranmeldung Österreich ab 01/2012

Tipps & Tricks für ConAktiv-User

Einrichtung eines -konto mit Thunderbird

Unsere Webapplikation erweitern

Zählen von Objekten einer bestimmten Klasse

Fotogalerie mit PWGallery in Joomla (3.4.0) erstellen

NODELOCKED LIZENZ generieren (ab ST4)

1. Schritt: Export Datei im Fidelio erstellen

Kurzdokumentation Barrierefreiheit, Downloads, Glossar, FAQ, Aktuelles AHG-Internet

Einführungskurs MOODLE Themen:

zur Sage New Classic 2015


MAILEN FÜR DAS LEBEN 1000plus Signaturen einbinden

Transkript:

IVEU Advanced DICOM Header Mapping Die IVEU Templates bieten außer der einfacher Erfassung von DICOM Header Werten mittels deren DICOM Data Tag z.b. 0010,0010 auch die Möglichkeit komplexere Werte zu erfassen. Geschachtelte Tags Es können mittels sehr einfach auch geschachtelte Tags erfasst werden. Die Angabe im Format 0018,0026#0018,0028 im Header Mapping liefert so den Wert des Feldes Intervention Drug Dose das unter dem Feld Intervention Drug Information Sequence geschachtelt ist. ################ DICOM HEADER AUSZUG ################.. 0010,1010 [AS] Patient s Age: 001D 0018,0026 [SQ] Intervention Drug Information Sequence: 0018,0028 [DS] Intervention Drug Dose: 0 0018,0035 [TM] Intervention Drug Start Time: 000000.000000 0018,0070 [IS] Counts Accumulated: null... ################ DICOM HEADER AUSZUG ################ Javascript Mapping Für Komplexere Mappings oder kleine Berechnungen besteht weiterhin die Möglichkeit der Erfassung von Header Werten mittels kleiner JavaScript Schnipsel. Hier zu muss als Erfassungstyp Script ausgewählt werden.

Der untere Bereich des Fensters zeigt nun einen kleinen Javascript Editor mit einer vordefinierten Funktion. Diese Funktion bekommt das DicomDataset (dataset) mit allen DicomHeadern der Serie übergeben. Auf diesem dataset Object können nun verschiedene Methoden aufgerufen und somit Werte abgefragt werden. Mittel Rechksklick im Editor Fenster kann eine Liste der verfügbaren Funktionen aufgerufen und diese ins Fenster eingefügt werden. Anbei ein einfaches Beispiel zur Berechnung der Scanlänge einer Serie. dataset.getfirsttag(); liefert den Wert des ersten Vorkommens des Tags in der Serie dataset.getmintag(); liefert den kleinsten Wert des Tags in der Serie dataset.getmaxtag(); liefert den größten Wert des Tags in der Serie dataset.gettagvalues(); liefert eine mit # getrennte Liste aller Werte des Tags in der Serie dataset.containstagvalue(tag, value); prüft ob der angegebene Tag mit dem gewünschten Wert in der Serie vorkommt. dataset.containstagexpression(tag, expression); prüft ob der angegebene Tag mit dem angegebenen Regulären Ausdruck in der Serie vorkommt. dataset.getfolder(); liefert den Pfad zum Ordner aus dem die zu importierenden Bilder stammen lu.tudor.santec.dicom.gui.header.dicomheader header = dataset.getfirstheader();

liefert den DICOM Header des ersten Bildes der Serie als DicomHeader Objekt. org.dcm4che2.data.dicomobject dobj = dataset.getfirstdicomobject(); liefert den DICOM Header des ersten Bildes der Serie als DicomObject Objekt. Collection<org.dcm4che2.data.DicomObject> dobjects = dataset.getdicomobjects(); liefert eine Liste aller Dicom Header der Serie als DicomObject Objekte numberofimages = dataset.size(); liefert die Anzahl der Bilder in der Serie. choose Tag öffnet eine Auswahl zur Suche nach einen DICOM Tag. Math.abs(); Standard JavaScript Funktion: Liefert den Absolutwert des übergebenen Wertes Math.min(); Standard JavaScript Funktion: Liefert den kleinsten der übergebenen Werte Math.max(); Standard JavaScript Funktion: Liefert den größten der übergebenen Werte Math.round(); Standard JavaScript Funktion: rundet den Übergebenen Wert Zusätzlich zu den Funktionen im Menü können alle Funktionen aus dem Standard JavaScript Sprachumfang sowie alle Funktionen der vorhandenen Java Objekte aufgerufen werden. Erweitertes Javascript Mapping Beispiel Fluoro SR Zur Nutzung dieser Funktionen ist ein genauer Aufbau des SR Headers und die Kentnis der verwendeten Code Values von Nöten. Diese finden sich entweder in einem Beispiel Header des entsprechenden Typs oder in der Beschreibung des SR Formates im DICOM Standard. Anbei ein Beispiel zur Erfassung von Werten aus einem DICOM Structured Report am Beispiel eines Fluoro Dose SR Headers. Erfasst werden soll der Wert des Fluoro Dose Area Product Total. Dieser Befindet sich als Unterelement im Element mit Code Value: 113702 (Accumulated X-Ray Dose Data) der Content Sequence 0040,A730. Dort ist dieser im Element mit Code Value: 113726 (Fluoro Dose Area Product Total) kodiert. Von diesem Unterelemt brauchen wir nun den Bereich mit dem eigentlichen numerischen Wert Numeric Value: 0.0000025800. ################ DICOM HEADER AUSZUG ################ 0002,0001 [OB] File Meta Information Version: 00\01 0002,0002 [UI] Media Storage SOP Class UID: 0002,0003 [UI] Media Storage SOP Instance UID: 0002,0010 [UI] Transfer Syntax UID: 1.2.840.10008.1.2.1 0002,0012 [UI] Implementation Class UID: 1.2.40.0.13.1.1... 0040,A730 [SQ] Content Sequence: 0040,A010 [CS] Relationship Type: HAS CONCEPT MOD 0040,A040 [CS] Value Type: CODE

... ITEM #9: 0040,A040 [CS] Value Type: CONTAINER 0008,0100 [SH] Code Value: 113702 0008,0104 [LO] Code Meaning: Accumulated X-Ray Dose Data... ITEM #4: 0040,A040 [CS] Value Type: NUM 0008,0100 [SH] Code Value: 113726 0008,0104 [LO] Code Meaning: Fluoro Dose Area Product Total 0040,A300 [SQ] Measured Value Sequence: 0040,08EA [SQ] Measurement Units Code Sequence: 0008,0100 [SH] Code Value: Gym2 0008,0102 [SH] Coding Scheme Designator: UCUM 0008,0104 [LO] Code Meaning: Gym2 0040,A30A [DS] Numeric Value: 0.0000025800 ITEM #5: 0040,A040 [CS] Value Type: NUM... ################ DICOM HEADER AUSZUG ################ # Anbei der entsprechende JavaScript Teil des Erfassungsfeldes zum erfassen des FluoroDoseAreaProductTotal aus einem Fluoro SR. Das Script liefert den Numerischen Wert und setzt diesen in der IVEU Tabelle. Zusätzlich werden als Debugging weitere Informationen wie Name und Einheit des Messwertes ins IVEU Log ausgegeben. Dies kann beim erstellen des Javascript hilfreich sein um hier Fehler zu finden.

var value; var header = dataset.getfirstheader(); var dobj = dataset.getfirstdicomobject(); var xraydose = header.getnamedchild(dobj, header.totagint("0040,a730"), "113702"); var fluorodoseareaproduct = header.getnamedchild(xraydose, header.totagint("0040,a730"), "113726"); print("fluorodoseareaproducttotal: " + header.getmeasurement(fluorodoseareaproduct) + "\n"); print("\tgetmeasurementname: " + header.getmeasurementname(fluorodoseareaproduct) + "\n"); print("\tgetmeasurementvalue: " + header.getmeasurementvalue(fluorodoseareaproduct) + "\n"); print("\tgetmeasurementunit: " + header.getmeasurementunit(fluorodoseareaproduct) + "\n"); return header.getmeasurementvalue(fluorodoseareaproduct); Anbei noch ein weiteres Beispiel zum erfassen der einzelnen mas Werte die weiter unten im Dose SR pro Serie gelistet werden. Im Beispiel werden die Werte wie sonst auch in IVEU üblich als Liste von Werten mit # als Trennzeichen zurück geliefert. ############### DICOM HEADER AUSZUG ################ 0040,A730 [SQ] Content Sequence: 0040,A010 [CS] Relationship Type: HAS CONCEPT MOD 0040,A040 [CS] Value Type: CODE... ITEM #10: 0040,A040 [CS] Value Type: CONTAINER 0008,0100 [SH] Code Value: 113706 0008,0104 [LO] Code Meaning: Irradiation Event X-Ray Data 0040,A050 [CS] Continuity Of Content: SEPARATE 0040,A730 [SQ] Content Sequence: 0040,A010 [CS] Relationship Type: HAS CONCEPT MOD 0040,A040 [CS] Value Type: CODE... ITEM #12: 0040,A040 [CS] Value Type: NUM 0008,0100 [SH] Code Value: 113734 0008,0104 [LO] Code Meaning: X-Ray Tube Current 0040,A300 [SQ] Measured Value Sequence: 0040,08EA [SQ] Measurement Units Code Sequence:

0008,0100 [SH] Code Value: ma 0008,0102 [SH] Coding Scheme Designator: UCUM 0008,0104 [LO] Code Meaning: ma 0040,A30A [DS] Numeric Value: 48... ################ DICOM HEADER AUSZUG ################# var value = ""; var header = dataset.getfirstheader(); var dobj = dataset.getfirstdicomobject(); var irradiationeventxraydatas = header.getnamedchilds(dobj, header.totagint("0040,a730"), "113706"); print("xraydosemas Einzelwerte:" + "\n"); for (var i=0; i<irradiationeventxraydatas.size(); i++) { var dicomobject = irradiationeventxraydatas.get(i); var xraydosemas = header.getnamedchild(dicomobject, header.totagint("0040,a730"), "113734"); print("\t" + header.getmeasurement(xraydosemas) + "\n"); value = value + header.getmeasurementvalue(xraydosemas) + "#"; } return value; Zur Nutzung dieser Funktionen ist ein genauer Aufbau des SR Headers und die Kentnis der verwendeten Code Values von Nöten. Diese finden sich entweder in einem Beispiel Header des entsprechenden Typs oder in der Beschreibung des SR Formates im DICOM Standard.