Wie man ein PACS betreibt
Die kurze Story:
sudo docker run -d -v /mnt/usb4t/pacs:/config -p 8100:8080 -p 11112:11112 --name pacs sparklyballs/pacs
-
Danach den Browser auf
http://<docker addresse>:8100/dcm4chee-web3
richten, -
sich mit admin/admin einloggen
-
unter ‘Benutzer’ einstellen, wer das Web-Interface benutzen darf
-
unter ‘AE-Verwaltung’ einstellen, welche DICOM-Nodes zugreifen dürfen
-
unter ‘Passwort’ dem Admin ein anderes Passwort geben.
Und schon ist man stolzer Besitzer und Admin eines medizinischen Bilddatenbank-Systems.
Die lange Story:
Präludium
Seit einiger Zeit benutze ich auf dem Mac OsiriX als Dicom-Viewer und auf den Windows-PC’s irgendwelche Gratisprogramme von den DVDs der Röntgeninstitute. Osirix nervt ein wenig mit den aufpoppenden Warnmeldungen, dass es nicht für medizinische Befundung zertifiziert sei (Die funktionell identische Kaufversion aber schon), und dass man deswegen auf ebendiese Kaufversion upgraden soll.
Aber das ist ok. Es ist ein Gratisprogramm, da darf der Hersteller ruhig ein wenig nerven, um einen Kaufanreiz zu setzen. Mit zunehmender Nutzung fing ich auch an, die Bilder gleich in OsiriX zu speichern, OsiriX also als internes PACS zu benutzen. Das funktionierte, und ich fand es nun an der Zeit, den Hersteller zu bezahlen.
Der Preis ist mit $699 für nur zwei erlaubte Arbeitsstationen ein wenig happig (verglichen mit entsprechenden Windows-Programmen), aber noch akzeptabel. Aber auf der Website dann die böse Überraschung: aus den US$ 699 (== CHF 685) werden flugs, sobald man sich als in der Schweiz lebender Mensch outet, CHF 800.-. Also mehr als hundert Franken Aufschlag bloss wegen der Tatsache, dass man sich im selben Land befindet, wie der Programmhersteller (Pixmeo ist eine Genfer Firma). Und damit nicht genug: Nachdem ich mich mit dem (irgendwie ja auch gewohnten) Schweiz-Aufschlag abgefunden hatte, und zur Kasse ging, schlugen die Brüder noch einmal 20% “VAT” drauf, womit der Gesamtpreis auf CHF 960.- stieg. Vermutlich hätten sie für den Download noch Porto und Verpackung verrechnet, wenn mir an der Stelle nicht der Hut hochgegangen wäre.
Jedenfalls habe ich die Site dann verlassen und holte mir erst mal den Quellcode. (Hey, OsiriX ist ja immerhin OpenSource!) Da ich ja stolzer Besitzer einer aktuellen Version von Xcode bin, sollte das dann kein Problem sein. Denkste. Das Kompilieren klappt erst mal gar nicht. Und selbst wenn man es zum klappen bringt, kann man noch lange nicht für den aktuellen Mac mit 64 Bit compilieren. Man braucht eine alte Version mit 32 Bit. Die bietet Apple aber nicht mehr an. Und warum? Weil Pixmeo einige Komponenten nur als 32-Bit-Kompilat beilegt - in Verletzung der LGPL, unter der OsiriX publiziert ist.
Intermezzo
Heutzutage gibts ja Google. Und der spuckt bei der Suche nach freien OsiriX-Varianten zum Beispiel Osiri-LXIV und Horos aus. Beides sind 64-Bit Varianten von OsiriX, und beide funktionieren einwandfrei, wobei der von “64 Bit” erwartete Geschwindigeitsvorteil für mich zumindest nicht erkennbar ist. Aber Achtung:
-
Osiri-LXIV konvertiert beim ersten Start klammheimlich die OsiriX-Datenbank, so dass sie anschliessend von OsiriX nicht mehr lesbar ist
-
Horos legt eine eigene Datenbank an und berührt die von OsiriX nicht. Man kann aber einfach per copy&paste alles aus der OsiriX Datenbank in die Horos Datenbank kopieren, und dann macht Horos beim ersten Start ebenfalls die Konvertierung, lässt aber OsiriX lauffähig (wenn auch ein wenig redundant)
Crescendo
Je mehr Bilder man ansammelt, desto träger und wackliger wird OsiriX. Ein Versprechen der 64-Bit Version ist ja, dass sie besser mit grossen Fallzahlen zurechtkommt. Das bewahrheitet sich zumindest für Horos und Osiri-LXIV nicht. Während sie als Viewer durchaus brauchbar sind, sind sie doch immer noch kein “erwachsenes” PACS. Kein Wunder, bei der darunterliegenden SQLite-Datenbank, die nicht wirklich für viele grosse Dateien geeignet ist.
Glissando
Es gibt ein durchaus für fast beliebig grosse Datenbanken geeignetes PACS, das erst noch gratis ist. Es hat nur zwei Nachteile: Einen etwas sperrigen Namen (dcm4chee) und eine für unsereinen kaum verständliche Dokumentation. Dcm4chee ist noch viel mehr, als nur ein Dicom-Server, aber eben, es ist auch ein brauchbarer Dicom-Server.
Wenn man heutzutage eine Serveranwendung ohne allzuviel Stress installieren will, dann lohnt es sich, erstmal auf Dockerhub nachzusehen. Über Docker habe ich an anderer Stelle schon berichtet. Und wie so oft wird man recht schnell fündig: Es gibt einen fixfertig konfigurierten Dcm4chee-Server, den der freundliche User mit dem schönen Namen ‘sparklyballs’ gratis bereitstellt.
Finale
Damit ergänzt sich also nun meine docker-compose.yml um folgenden Eintrag:
pacs:
image: sparklyballs/pacs
ports:
- 8100:8080
- 11112:11112
volumes:
- /mnt/usb4t/pacs:/config
So kommt die PACS-Datenbank auf meinem gespiegelten ZFS-Laufwerk zu liegen und wird so hoffentlich nicht gleich beim ersten Lesekopfschnupfen in die ewigen Jagdgründe geschickt. (Und wenn doch, habe ich selbstverständlich immer noch ein Backup)
Um nun mit meiner Arbeitsstation darauf zuzugreifen, muss man immer beiden Seiten des Dicom-Transfers die jeweils andere Seite bekannt machen. Also in OsiriX/Osiri-LXIV/Horos muss man in Preferences-Locations den Node “DCM4CHEE” auf 192.168.0.1 (oder wo auch immer) eintippen und die Modalitäten ‘Q&R’ und ‘Send’ aktivieren. Und man muss in http://192.168.0.1:8100/dcm4chee-web3 unter “AE-Verwaltung” den ‘AET’ ‘Horos’ oder was immer an der Adresse 192.168.0.12 (oder was immer) angeben. Erst dann klappt die Kommunikation (Es müssen Name, Adresse un Port des jeweiligen Nodes übereinstimmen).
Wenn man das gemacht hat, kann man die Serien aus der OsiriX Datenbank ganz einfach mit Drag&Drop auf den neuen PACS schieben und fortan von dort aus auch wieder holen.