You are here: Home Aktuelle Projekte Supported Projects openDICOM.NET Neue Runde: OpenDICOM.NET
Document Actions

Neue Runde: OpenDICOM.NET

Die Mono DICOM Bibliothek openDICOM.NET geht in die nächste Runde.

DICOM (Digital Imaging and Communications in Medicine) ist heutzutage der binäre Standard im Alltag der medizinischen Bilddatenhaltung und -kommunikation. Alle bekannten Hersteller medizintechnischer Geräte zur Bildgebung, wie beispielsweise Computertomographen (CT), sprechen im Frontend-Bereich DICOM. Der seit über zwei Dekaden gewachsene Standard macht auch vor Druckern nicht halt. Analog zu Postscript fähigen Geräten werden DICOM-Drucker zum Beispiel für Foliendrucke von Röntgenaufnahmen verwendet. Über Befundungsstationen hinaus hat sich DICOM auch im Bereich der Archivsysteme auf Grundlage von PACS (Picture Archiving and Communication System) seit Langem etabliert und ist als Teil eines KIS (Krankenhausinformationssystem) weltweit nicht mehr wegzudenken. Zuständig für die Zusammenführung der verschiedenen Ausprägungen durch die Industrie und die Pflege des Standards ist die NEMA (National Electrical Manufacturers Association) mit Sitz in den USA. DICOM bietet die Möglichkeit Bilder, Einzelbildsequenzen und Filme mit administrativen, medizinischen und technischem Kontext anzureichern und integriert diagnostisch zulässige Kompressionsstandards, wie JPEG. Wahlweise kann mit benutzerspezifischen, nicht-standardisierten Einträgen gearbeitet werden, was DICOM auch über die Grenzen des Gesundheitswesens hinaus eine gewisse Attraktivität verleiht.

Im Open Source Bereich und im Bereich frei erhältlicher Software ist das Angebot an DICOM Bibliotheken und Werkzeugen recht ausgeprägt. Viele Lösungen konzentrieren sich auf die verbreiteten Hochsprachen C++ oder Java. Dabei erfreuen sich Lösungen, wie die Central Test Node (CTN) der Washington University in St. Louis oder das DCMTK, DICOM-Toolkit, des Oldenburger Forschungs- und Entwicklungsinstituts für Informatik-Werkzeuge und -Systeme (OFFIS), großer Beliebtheit. Den meisten Bibliotheken und Toolkits sind jedoch plattformabhängig angelegt und konzentrieren sich im Bereich der GUIs (Graphical User Interfaces) auf ein vorher vereinbartes Betriebssystem. Als Beispiel sei hier der freie DICOM Viewer OsiriX für Mac OS X erwähnt. Gerade die beiden Freiheitsgrade des zu wählenden Betriebssystems und der Programmiersprache können jedoch die Entwicklung erheblich einengen. Java versucht hier einen plattformunabhängigen Ansatz durch Einführung einer Sprachenmonokultur, eine Sprache für alle Probleme. Mono geht einen Schritt weiter. Als Novells Reimplementierung des .NET Frameworks wird eine neue Open Source Landschaft geschaffen. Portiere keine Lösungen, sondern integriere die Unterschiede ist die Devise. Sprachen- und plattformübergreifend bietet Mono eine hochperformante VM (Virtual Machine) für Bibliotheken und Anwendungen aller Art und eröffnet neue performante Möglichkeiten im Desktop-Bereich als Ablösung der in der Kritik stehenden Java GUIs.

Eine Bibliothek zum Umgang mit DICOM muß heutzutage viele Kriterien genügen. Die Ansprüche an die Performance und leichte Integrierbarkeit in bereits existierende Lösungen sind Grundlage jeder erfolgversprechenden Entwicklung. Dabei richten sich die Ansprüche nicht nur an die API (Application Programming Interface), sondern auch an die Wahl der Rechnerarchitektur, des Betriebssystems, der Laufzeitumgebung und Programmiersprache. Die Sprache sollte dem zu lösenden Problem entgegen kommen, die Plattform keine Rolle spielen und die API intuitiv zu bedienen sein und größtmögliche Flexibilität im Umgang bieten, die Kenntnis des DICOM-Standards natürlich vorausgesetzt. Ist dies bei den gängigen Angeboten auf dem Open Source Markt der Fall? Ohne auf einzelne Produkte konkret eingehen zu wollen, ist die Abbildung des DICOM-Standards als API in vielen Bibliotheken unbefriedigend gelöst. Die Beseitigung diesen Mangels ist der Grundgedanke zum Anstoß des openDICOM.NET Projekts.

openDICOM.NET setzt auf Mono auf und ist in C# implementiert. Es ist derzeit in vier Subprojekte unterteilt, der opendicom-sharp API, einer Sammlung von Konsolenwerkzeugen (opendicom-utils), dem opendicom-navigator, einem einfachen DICOM Browser auf Basis von GTK# (plattformunabhängige Open Source Desktop Bibliothek) und einem Filter Plugin für Beagle (opendicom-beagle), der freien Desktop Suchmaschine. Alle Anwendungen sind unter der GNU General Public License (GPL) lizensiert. Die Bibliothek wurde unter der Lesser GNU General Public License (LGPL) veröffentlicht. Das Projekt unterstützt ACR-NEMA 1.0 und 2.0 (Vorläuferstandards von DICOM), DICOM 3.0 und, in nicht-standardisierter Form, XML. Der Name openDICOM.NET ist bewußt gewählt. Obwohl das Projekt sich auf Mono stützt, darf der Kreis der Windows-Anwender (.NET Framework) nicht außer Acht gelassen werden, die im Gesundheitswesen im Workstationbereich leider immer noch den Ton angeben. Ziel des Projekts ist es, plattformunabhängige, kostenlose und erweiterbare Breitbandanwendungen für Bilddaten des Gesundheitswesens zur Verfügung zu stellen und auch die Grundlage für Spezialanwendungen zu liefern. Zielgruppe sind dabei in erster Linie Anwender und Entwickler auf Grundlage des populären GNOME Desktops (z.B. Ubuntu).

Das Projekt ist vor kurzem angelaufen und wird durch die Linux Solutions Group e.V. (Thomas Uhl und Nico Gulden) offiziell unterstützt. Der Medizininformatiker Albert Gnandt rief openDICOM.NET ins Leben und implementierte den derzeitigen Stand eigenständig neben seiner Tätigkeit als Wissenschaftlicher Mitarbeiter an der Hochschule Heilbronn (Prof. Dr. Oliver Kalthoff) in Kooperation mit der Technischen Universität München (Prof. Dr. Nassir Navab). Aktuell sind alle Projekte in der Version 0.1.1 bzw. 0.1.5 (DICOM Datei Navigator) erhältlich und unterstützten das Lesen und Verarbeiten von ACR-NEMA- und DICOM-Dateien als auch das Schreiben nach XML. Die nächste Runde der Weiterentwicklung wird auch das wahlfreie Schreiben nach DICOM unterstützen. Geplant sind weiterhin der Aufbau einer zusätzlichen Abstraktionsebene in Form von DICOM-Modulen, Hilfsklassen zum vereinfachten Umgang mit dem Standard und Kommunikationsschnittstellen zu PACS. Auch der DICOM Datei Navigator wird zu einem Editor ausgebaut und zukünftig um Zugriffsmöglichkeiten auf PACS erweitert.

Das durch die LiSoG e.V. (Linux Solutions Group) gehostete Projekt ist über http://www.opendicom.net/ und http://www.opendicom.org/ erreichbar. Neben Quellcode-Paketen für GNU/Linux (Mono) und Windows (Mono/.NET), die zusätzlich zu Makefiles auch die jeweiligen Kompilate enthalten, sind auch reine Binaries in Form von Debian-Paketen (getestet mit Ubuntu 6.10) verfügbar. Ein APT Repository wurde freundlicher von dem Studiengang Medizinische Informatik der Hochschule Heilbronn zur Verfügung gestellt und ist über http://ubuntu.mi.hs-heilbronn.de/other/opendicom/ in gewohnter Art und Weise zugreifbar. Näheres findet sich im Kapitel "Installation" auf der Projekt-Homepage.

Die Klassenbibliothek, das Kernstück des gesamten Projekts, ist sehr gut dokumentiert. Unter dem Abschnitt "Usage / opendicom-sharp.dll" wird ein erster Eindruck anhand von Quellcodebeispielen vermittelt. Des weiteren steht die gesamte API-Referenz für den einfachen Einsatz als auch die Erweiterung von Bibliotheksklassen online zur Verfügung. Besonderheiten der Bibliothek sind die klare Klassifikation, die sich in der sauberen Auftrennung des Namensraums in Datenstruktur (Tag, Value, Sequenz etc.), Encoding (Transfer Syntax, Character Repertoire, Value Representations etc.), Registry (Data Dictionaries) und Abstraktionsebenen wie openDICOM.File (Dateiverarbeitung) und openDICOM.Image (Bildverarbeitung) manifestiert. Das Gesamtkonzept setzt auf einen unidirektionalen, sprich gerichteten Datenstrom (System.Stream) ohne Rücksprung auf, dem das Dateisystem, Netzwerk oder einfach nur der Speicher unterliegen kann. Dies ist die Grundvoraussetzung für streamfähige Anwendungen. Alle Klasseninstanzen verwalten sich dabei selbstständig, indem sie sich über den Stream laden. Dabei merkt sich jedes IDicomStreamMember-Objekt seine Position im Binärstrom, so daß auch die Möglichkeit zur nativen Manipulation des Datenstroms gegeben ist.

Die API ermöglicht die Verarbeitung von ACR-NEMA- und DICOM-Datenströmen als Baum oder Sequenz. Der Inhalt wird dabei in einem Klasseninstanzbaum gehalten, der über die Schlüsselmethode Sequence.GetJointSubsequences() als einzelne Sequenz aller Inhalte zurück gegeben werden kann. Die Datenrepräsentation als Sequenz ist allerdings Mehrdeutigkeit. Innerhalb eines DICOM Data Sets wird die Eindeutigkeit der Tags gewährleistet, während bei einer DICOM Sequence nur die Abfolge der Einträge, sprich DICOM Items, eine Rolle spielt. Der Klasseninstanzbaum erlaubt somit den direkten Zugriff auf Einträge, was auch der Entscheidung für eine baumbezogene Abbildung als XML den Ausschlag gab.

Die Abbildung der ACR-NEMA- oder DICOM-Dateien als XML weist einige Merkmale auf, die gewöhnlichen Repräsentation nicht gegeben sind. Differenziert werden die Formate dabei durch den Namen des Root-Elements (<AcrNemaFile> und <DicomFile>). XML-Attribute werden nur als Hilfestellung zur weiteren Verarbeitung verstanden und geben z.B. die Abfolge der Einträge im ursprünglichen Binärstrom wieder. DICOM Values werden derzeit wie folgt gekapselt. <Value> stellt einen einfachen Wert dar, <MultiValue> ist ein Wert bestehend aus einer Anzahl Einzelwerte, <Uid> enthält, neben dem DICOM Unique Identifier, Beschreibung und Typinformation und natürlich die DICOM-Elemente, die ihrerseits wiederum aus Elementen aufgebaut sind, <Sequence> und <NestedDataSet> . Binärdaten, wie Bilder, werden dabei Base64 kodiert abgelegt. Neben der einfacheren Lesbarkeit für Mensch und Entwickler und der Reduktion der 27 DICOM-Datentypen auf Text und Strukturdefinitionen besitzt die Abbildung vonnDICOM als XML einen weiteren Vorteil. Es werden auch alle Informationen aus den Data Dictionaries, wie Tag-Beschreibung oder Value Multiplicity, integriert. Somit kann jede XML-Datei ohne die DICOM Data Dictionaries verarbeitet werden. Auch ist der Zugriff auf DICOM-XML stets eindeutig, da keine impliziten Datentypen, wie durch einige DICOM Transfer Syntax vorgegeben, Verwendung finden.

Alle auf die openDICOM.NET Klassenbibliothek aufbauenden openDICOM.NET Applikation sind anwender- als auch entwicklerorientiert angelegt und eignen sich auch sehr gut zur Ausbildung im Rahmen eines Studiums. Die Konsolenwerkzeuge (opendicom-utils) dienen der Überführung der DICOM Data Dictionaries in unterschiedliche Formate (binär, XML, Property und CSV) und zur einfachen Recherche von Einträgen. Die Suche nach DICOM-Einträgen und das Transcoding von DICOM nach XML wird sowohl durch die Konsolenwerkzeuge ermöglicht als auch durch den DICOM Datei Navigator. Der DICOM Datei Navigator ist eine GUI (Graphical User Interface) auf Grundlage von GTK# und wurde mit Hilfe des Glade Interface Designers erstellt. Das Executable, die .EXE-Datei, wird mit Embedded Resources ausgeliefert, womit unnötige Abhängigkeiten zu externen Dateien, wie der Glade-XML-Datei, vermieden werden. Mit der GUI ist es möglich ACR-NEMA- und DICOM-Dateien in einer Baum-Ansicht zu browsen und über eine weitere Ansicht Bilder zu betrachten bzw. Bildsequenzen als Film abzuspielen. Einzelbilder können jederzeit mit dem GIMP-Button professionell nachbearbeitet oder als gängiges Bildformat (PNG, JPEG etc.) abgelegt werden. Das Filter Plugin für Beagle, der Desktop Suchmaschine, rundet das Bild der openDICOM.NET Anwendungen ab. Das Plugin ist eine DLL (Dynamic Link Library), die von der Beagle-Engine geladen wird und ACR-NEMA- und DICOM-Dateien indexiert.

Albert Gnandt
Senior Software Engineer
Medsphere Systems Corporation

Links


This site conforms to the following standards: