DICOM Gateway 1. Einführung Das DICOM Gateway empfängt DICOM Bilder und verteilt sie an die angeschlossenen DICOM Workstations in Abhängigkeit von DICOM Attributen wie z.B. den Referring Physician (0008,0090). Das DICOM Gateway hat auch PACS Funktionalität und speichert die Bilder lokal. Über DICOM Query/Retrieve werden die Bilder an anfordernde Stellen gesendet. 2. Historie des Dokumentes 22.11.2013 hw V0.1 Erstellung 26.11.2013 hw V0.2 Einarbeitung Diskussion mit A.Vogel 27.11.2013 hw V0.3 Definition Struktur DICOM Gateway, Prototype Intermediate 06.12.2013 hw V0.4 Query/Retrieve, Prototype Q/R, Logging 09.12.2013 hw V0.5 UI Prototyping 15.12.2013 hw V0.6 Dicom Gateway Web, Active, Testcenter, Q/R 17.12.2013 hw V0.7 Datenbank Query 10.01.2014 hw V0.8 Query, Queue Manager/Watchdog 3. Architektur Das DICOM Gateway ist ein Rechnersystem mit konfigurierbaren Services (DICOM Empfänger, Sender, Query/Retrieve). Die empfangenen Bilder können optional lokal gespeichert werden. Die Speicher-Struktur könnte folgendermaßen aussehen. In einem weiteren Schritt können Query Services implementiert werden, die Domain spezifisch Bilder an anfordernde Services ausliefern. 4. Workflow 5. Tools Für den DICOM Empfänger wird storescp aus dem DICOM Toolkit dcmtk von OFFIS verwendet (http://dicom.offis.de/dcmtk.php.de). Storescp ist geeignet, weit verbreitet, kostenfrei und flexibel, daher für den Einsatz in einem DICOM Gateway erste Wahl (http://support.dcmtk.org/docs/storescp.html) Storescu ist ein DICOM Sender mit dem die empfangenen DICOM Bilder beliebig weitergeschickt werden können (http://support.dcmtk.org/docs/storescu.html) Für DICOM Query/Retrieve kann dcmqrscp von OFFIS eingesetzt werden (http://support.dcmtk.org/docs/dcmqrscp.html). Zum Indexieren der Bilddateien wird Tool dcmqridx verwendet (http://support.dcmtk.org/docs/dcmqridx.html). Die Index Datenbanken können mit Tool dcmqrti getestet werden (http://support.dcmtk.org/docs/dcmqrti.html). Als Testtools für die Q/R SCU stehen findscu und movescu z.V (http://support.dcmtk.org/docs/findscu.html, http://support.dcmtk.org/docs/movescu.html). Eine Anleitung für dcmqrscp und dcmqrti steht in http://support.dcmtk.org/docs/file_dcmqrset.html sowie http://support.dcmtk.org/docs/file_dcmqrcnf.html 6. Prototype Basic Die prinzipielle Funktionsweise kann mit einfachen Mitteln demonstriert werden. Hierfür werden DICOM Bilder mit storescu and den storescp geschickt. Innerhalb storescp wird das Batch File ShowDicom.bat aufgerufen das mit dem Programm dcmdump den Referring Physician ausgibt. Die Programme des dcmtk werden auf ein Verzeichnis extrahiert, die Path Variable ensprechend erweitert. Fenster 1 (Sender): sendet 4 Testbilder (Enhanced MR Image) an localhost auf Port 105 Fenster 2 (Empfänger): empfängt auf Port 105 die Bilder und ruft für jedes Bild das Script ShowDicom.bat auf. ShowDicom.bat: Ausgabe des Attributes Referring Physician (0008,0090) ShowDicom.bat läßt sich um regelbasierte Entscheidungen erweitern aufgrund derer die Bilder an die Zielsysteme weitergeroutet werden können. 7. Prototype Intermediate In einem weiteren Prototypen sind Rules, Actions und Receiver definiert. Anbei Beispiele, die als Windows Ini File Format implementiert sind. Rules: 3 verschiedene Rules + NO_ACTION, config-Datei AET1_Rules.conf Section Rule1 Rule2 Rule3 NO_ACTION Key Matching_00080090 Action Matching_00080090 Action Matching_00080090 Action Action Value Physician_1 Action1 Physician_2 Action2 Physician_3 Action3 NoAction Actions: 4 verschiedene Actions mit SCU Aktion und/oder lokaler Speicherung auf dem Gateway Rechner, config-Datei AET1_Actions.conf Section Action1 Action2 Action3 NoAction Key ScuCommand StoreRoot ScuCommand ScuCommand ScuCommand StoreRoot Value storescu localhost 106 d:\DICOM_GatewayRoot\Domain1 storescu localhost 106 storescu localhost 106 storescu –aet GARBAGE localhost 107 d:\DICOM_GatewayRoot\UndefinedRule Die 80 Beispielsbilder wurden gepatched (10 – Physician_1, 10 – Physician_2, 10 – Physician_3, 10 – Physician_4, 40 Bilder ohne Referring Physician) Bilder mit Physician_1 werden an Port 106 weitergeleitet und auf dem Gateway in Domain1 gespeichert. Bilder mit Physician_2 werden an Port 106 weitergeleitet. Bilder mit Physician_3 werden an Port 106 weitergeleitet. Alle anderen Bilder werden an Port 107 und AET GARBAGE weitergeleitet und auf dem Gateway in UndefinedRule gespeichert Receivers: 3 verschiedene DICOM Empfänger. config-Datei Receivers.conf Section Port106 Port107 Port105 Key WorkingDirectory Port WorkingDirectory Port WorkingDirectory Port GatewayOption Value d:\DICOM_GatewayRoot\incoming\Port106 106 d:\DICOM_GatewayRoot\incoming\Garbage 107 d:\DICOM_GatewayRoot\incoming\Port105 105 -xcr "DGHandleInstance #f #a" Auf Basis dieser Attribute kann ein Job Controller die verschiedenen DICOM Receiver starten. Im einfachsten Fall ist dies ein Batch File wie z.B. In einem weiteren Schritt übernimmt ein Job Controller den Start der verschiedenen Services Der Test-Sender verschickt die 80 Bilder an Port 105 und mißt die Zeit. 8. Prototype Q/R Fallbeispiel: Erzeugen von 10 Bildern mit 2 Patienten (Pat1, Pat2) 4 Studien 5 Serien Pat1 soll in DB Index AET1, Pat2 in AET2 indexiert werden. Dies kann auf 3 verschiedene Arten implementiert werden: Index image files (e.g. dcmqridx –v d:\ DICOM_GatewayRoot\DB\AET1 Pat1*.dcm) Send images to storescp mit DGHandleInstance und integriertem dcmqridx Send images directly to dcmqrscp Nachfolgend Snapshots mit dcmqrscp als DICOM Empfänger und Q/R Service. Dcmqrscp ConfigDatei und Start von dcmqrscp Senden der AET spezifischen Bilder Test der Q/R Datenbank Move der AET spezifischen Daten, AET1 -> AET1SEND auf Port 107, AET2 -> AET2SEND auf Port 108 AET1SEND, AET2SEND Storage SCP’s mit Test der empfangenen Bilder 9. UI Prototyping Im Wesentlichen soll aufgezeigt werden, wie das DICOM Gateway einfach visualisiert werden kann. Hierbei geht es um die Darstellung der Server sowie der AET spezifischen Eigenschaften (was geschieht mit den Bildern?). Darüberhinaus kann Dokumentation jeglicher Art hinterlegt werden. In einem weiteren Schritt können Editier-Funktionen sowie Restart-Operationen integriert werden (TBD). Homepage Receiver AET Rules 10. Dicom Gateway Web Änderungen zum UI Prototype: Q/R RestartAll/StopAll Testcenter Logging Homepage Erweiterung RestartAll Testcenter Testcenter Submit Q/R Logging 11. Datenbank Query Die verschiedenen Datenbank Speicherbereiche (Root Directories) können selektiert werden. Daraufhin werden alle Bilder gelesen und in einem Tree Control gemäß der DICOM Hierarchie Patient/Study/Series dargestellt. Die Serien-Ebene ist als Hypertext Link dargestellt. Die DICOM Bilder der ausgewählten Serie werden im WebBrowser dargestellt (PNG Format). Homepage Database locations TreeControl Image Viewer Query Neben der Darstellung einer DB Location in einem Treeview wird eine Query über alle angeschlossenen Datenbanken angeboten. Query form Query results Queue Manager/Watchdog Fehlerhafte Kopieraufträge aus dem Testcenter werden gequeued. Testcenter Sendelog Der Watchdog versucht zyklisch, die aufgelaufenen Aufträge abzuarbeiten und verschiebt sie bei Erfolg in den Done Ordner. D:\DICOM_GatewayRoot\Queue>dg_wd handleJob>>root_dir=D:\DICOM_GatewayRoot\Queue, file=D:\DICOM_GatewayRoot\Queue\02_CJ_20140110100727.539. system_command storescu localhost 106 D:\UserLib\DICOM_Gateway\test\images_qr\*<br> handleJob>>root_dir=D:\DICOM_GatewayRoot\Queue, file=D:\DICOM_GatewayRoot\Queue\02_CJ_20140110100728.743. system_command storescu localhost 107 D:\UserLib\DICOM_Gateway\test\images_qr\*<br> handleJob>>root_dir=D:\DICOM_GatewayRoot\Queue, file=D:\DICOM_GatewayRoot\Queue\02_CJ_20140110100729.966. system_command storescu localhost 106 D:\UserLib\DICOM_Gateway\test\images_anon\*<br> D:\DICOM_GatewayRoot\Queue>dir done Datenträger in Laufwerk D: ist DATA Volumeseriennummer: E90D-F090 Verzeichnis von D:\DICOM_GatewayRoot\Queue\done 10.01.2014 10:14 <DIR> . 10.01.2014 10:14 <DIR> .. 10.01.2014 10:07 64 02_CJ_20140110100727.539 10.01.2014 10:07 64 02_CJ_20140110100728.743 10.01.2014 10:07 66 02_CJ_20140110100729.966 10.01.2014 10:07 66 02_CJ_20140110100731.176 4 Datei(en), 260 Bytes 2 Verzeichnis(se), 183.143.002.112 Bytes frei D:\DICOM_GatewayRoot\Queue> 12. Performance Die Integration eines DICOM Gateways hat Auswirkungen auf die Performance. Bilder müssen auf dem Gateway Rechner zwischengespeichert, ausgewertet und weitergeleitet werden. Nachfolgend eine Performance Untersuchung mit 80 Bildern a 340 kB und den Testfällen: Fall 1: Kein Routing, Bildern werden empfangen und gespeichert Fall 2: Nach jedem empfangenen Bild wird es auf einem anderen Port weitergeschickt Fall 3: Am Ende der Association bzw. bei Änderung der Study werden die Bilder auf einmal weitergeschickt Fall 4: Parsen aller Bilder und Weiterschicken an AET Garbage (kein Matching) Fall Beschreibung Fall 1 Fall 2 storescp 105 storescp -xcr " RouteDicom.bat #f" 105 Elapsed Zeit im Sender 1.4 sec 4.5 sec RouteDicom.bat: storescu localhost 106 %1 Fall 3 Weiterer Dicom Empfänger mit storescp 106 storescp -sp -tos 1 -xcs " RouteDicomAll.bat #p" 105 1.6 sec RouteDicomAll.bat: storescu +sd localhost 106 %1 Weiterer Dicom Empfänger mit storescp 106 Fall 4 Das Weiterschicken Bilder wird mit einen Delay von 1 Sekunde (-tos 1) asynchron gestartet, nachdem alle Bilder empfangen wurden. storescp -xcr "DGHandleInstance #f #a" 105 5.8 sec DGHandleInstance.exe: lädt Bild, prüft Regeln und appliziert Actions. Dicom Empfänger mit storescp –aet GARBAGE 107 Da Referring Physician’s Name (0008,0090) ein Attribute des General Study Module ist, ist es möglich, Fall 3 ohne nennenswerten Performance-Verlust zu implementieren. Es ist ausreichend lediglich ein Bild zu untersuchen zu untersuchen, um die Routing Regel zu bestimmen. 16. Logging Jeder Server aus dem OFFIS dcmtk protokolliert seine Aktionen in separaten Logfiles. Gesteuert wird dies über die Direktive –lc (z.B. -lc d:\DICOM_GatewayRoot\conf\log2file.cfg) Die LogFile Config ist z.B. Der Inhalt solch eines LogFiles ist z.B. 13. Offene Punkte o o o o o Art der Konfiguration (Editor, Win32, Web basiertes UI)? Format? Antwort: Editor Lösung reicht für den Anfang. Welche DICOM Attribute sollen für die Entscheidungen im Gateway berücksichtigt werden? Antwort: Study und Series Attribute konfigrierbar Art des JobControllers (Batch File, Windows Prozeß)? Parallele Receiver? Antwort: DICOM Gatweway kann einfach gestaltet sein, mehrere Empfänger Weiterverteilung der Bilder mit storescu oder mit anderen Programmen? Antwort: storescu und lokale Speicherung im Gateway Error Logging? Was ist, wenn keine Regel zutrifft? Antwort: Logging Konzepte sehr wichtig, konfigrierbare NO_ACTION Aktionen. o o o o Fremdsoftware Betrachtungen? Produkte wie z.B. Compass (http://www.laurelbridge.com/compass.html) Antwort: irrelevant Performance Einbußen? Antwort: vorerst nicht so wichtig Integrationsstrategie? Antwort: extra System, erster Prototyp sollte ASAP geliefert werden Hardware? Antwort: wird von Alex Vogel gestellt