Aufbau von TCMSOFT
TCMSOFT ist eine Webanwendung. Sie läuft auf einem Server in der Praxis, meist einer NAS, sonst einem Linux-Server, in einem Docker-Container. Gearbeitet wird im Browser an den Arbeitsplätzen. Diese Seite zeigt, aus welchen Bausteinen eine Installation besteht, wie die Bausteine zusammenspielen und welche Verbindungen sie brauchen. Was Server, Netz und Arbeitsplätze dafür mitbringen müssen, steht unter Voraussetzungen.
Auf einen Blick
- Von Hand eingerichtet wird nur der Update-Dienst (Container
tcmsoft-updater), und das genau einmal. Er legt den Containertcmsoftselbst an und hält ihn aktuell. - Der Container
tcmsoftenthält alles, was TCMSOFT auf dem Server braucht: die Anwendung, die Datenbank, das Drucksystem und den DICOM-Empfänger. - Alle Daten der Praxis liegen im Datenordner auf dem Server. Ein Update tauscht nur den Container aus.
- Neue Versionen kommen als vom Hersteller signierte Pakete von
downloads.tcmsoft.de. Eine Docker-Registry wird nicht benutzt. - An den Arbeitsplätzen laufen bei Bedarf zwei kleine Programme: der Print Agent zum Drucken und ab TCMSOFTpro der Prismamed Agent für Messgeräte, Labor und Scans. Beide aktualisieren sich selbst.
- DICOM-Geräte, Handys mit der Companion-App und das Portal für Online-Termine brauchen keinen Agenten.
Schaubild
Die Pfeile zwischen den Ebenen zeigen, wer eine Verbindung aufbaut. Im Kasten des Servers zeigen sie, wer wen anlegt und wer in den Datenordner schreibt.
+-----------------------------------------------------------------------------------------+
| INTERNET |
| downloads.tcmsoft.de · data.tcmsoft.cloud · verwaltung.tcmsoft.cloud |
| pharmindex.tcmsoft.cloud · <Domainname>.arzttermin-buchen.de · PAD-Stelle · E-Mail |
+-----------------------------------------------------------------------------------------+
^ Update-Dienst: Updates (HTTPS) ^ TCMSOFT: Bibliothek, Drucklayouts,
| | Arzneimittel, Online-Termine, PAD, E-Mail
+-----------------------------------------------------------------------------------------+
| NAS / SERVER (Docker) |
| |
| tcmsoft-updater ---- legt an, tauscht aus ----> tcmsoft (Host-Netz) |
| Update-Dienst über den Docker-Socket TCMSOFT-Anwendung Port 8085 |
| | MongoDB 8.3 nur intern |
| | CUPS, Print Agent nur intern |
| | DICOM-Empfänger Port 11112 |
| | | |
| +-------------------> Datenordner <-----------------+ |
| Datenbank, Schlüssel, tcmsoft.env, Drucker, updater/ |
+-----------------------------------------------------------------------------------------+
^ Browser, Agenten, Companion-App ^ DICOM-Geräte | Druck an
| (Web-Port bzw. HTTPS) | (Port 11112) v Netzwerkdrucker
+-----------------------------------------------------------------------------------------+
| PRAXISNETZ |
| Arbeitsplätze (Windows, Mac): Browser, Print Agent, Prismamed Agent |
| Handys mit der Companion-App · DICOM-Geräte · Netzwerkdrucker |
+-----------------------------------------------------------------------------------------+
Außerdem holen Print Agent und Prismamed Agent ihre Updates selbst von
downloads.tcmsoft.de, und der Browser lädt die Symbole der Arzneimittelliste
von pharmindex.tcmsoft.cloud (HTTPS, ausgehend vom Arbeitsplatz).
Die Bausteine
Der Container „tcmsoft“
Wozu: In ihm läuft TCMSOFT selbst. Er enthält:
- die TCMSOFT-Anwendung (Webanwendung auf .NET 10),
- die Datenbank MongoDB 8.3,
- das Drucksystem CUPS mit Druckertreibern und den Print Agent für Linux,
- die Druckersuche (Avahi), die nur nach Druckern sucht und selbst nichts im Netz ankündigt,
- den DICOM-Empfänger als Teil der Anwendung,
- knapp 500 freie Schriftfamilien für den Druck.
Host-Netz: Der Update-Dienst legt den Container immer mit --network host an. Nur so erreichen die
Bonjour-Meldungen der Drucker den Container. Im Bridge-Netz bliebe die Druckersuche leer. Der Container teilt sich
deshalb alle Ports mit dem Gerät. Darum lauschen MongoDB (Port 27017) und der Print Agent im Container (Port 9632) nur
auf 127.0.0.1. CUPS hat gar keinen Netzwerk-Port, nur einen Socket im Container. Ist ein Port auf dem Gerät schon
belegt, meldet TCMSOFT das beim Start im Klartext im Protokoll.
Wer ihn anlegt: der Update-Dienst, mit diesem Aufruf:
docker run -d --name tcmsoft --network host --restart unless-stopped --stop-timeout 120 --label de.tcmsoft.verwaltet=updater --env-file <Datenordner>/tcmsoft.env -v <Datenordner>:/data tcmsoft:<Version>
Sie führen diesen Befehl nicht selbst aus. Er hilft beim Lesen der Ausgabe von docker inspect tcmsoft. Läuft Docker
mit dem Protokolltreiber json-file oder local, kommt --log-opt max-size=20m --log-opt max-file=5 dazu.
Gesundheit: Docker prüft den Container alle 30 Sekunden. Die Adresse /health antwortet nur dann mit „ok“, wenn
auch die Datenbank antwortet. Nach dem Start lässt die Prüfung bis zu 600 Sekunden Zeit, zum Beispiel für das Laden
der TCM-Bibliothek beim ersten Start. Nach einem Update wertet der Update-Dienst genau diesen Zustand aus.
Der Update-Dienst „tcmsoft-updater“
Wozu: Er richtet TCMSOFT ein und hält es aktuell. Er ist der einzige Container, den der Installateur von Hand anlegt, siehe TCMSOFT einrichten.
Was er tut:
- Beim ersten Start legt er im Datenordner die
tcmsoft.envan, lädt TCMSOFT und startet den Containertcmsoft. - Jede Nacht ab 03:00 (einstellbar) prüft er die signierten Versionslisten auf
downloads.tcmsoft.de. Gibt es eine neue Version, lädt er sie und prüft Signatur und Prüfsumme. Dann beendet er TCMSOFT, sichert den Datenbankordner und startet die neue Version. - Ist die neue Version nach 30 Minuten nicht betriebsbereit, holt er die alte Version mit der alten Datenbank zurück.
- Er aktualisiert sich auch selbst.
- Ab Version 2026.10.7.1 legt er TCMSOFT nach
docker rm -f tcmsoftmit der zuletzt gelaufenen Version neu an. Fehlt deren Image, lädt er die aktuelle Version ohne vorherige Sicherung und warnt mit „TCMSOFT … neu geladen“.
Wie er arbeitet:
- Er bindet den Docker-Socket
/var/run/docker.sockein und steuert darüber Docker auf dem Gerät. - Er bindet den Datenordner unter demselben Pfad ein wie auf dem Gerät, damit er TCMSOFT mit dem richtigen Pfad anlegen kann.
- Er läuft im normalen Bridge-Netz und öffnet keinen Port.
- Er behält das Image der laufenden und der vorigen Version.
Wie TCMSOFT und Update-Dienst miteinander sprechen: nur über Dateien im Ordner updater/ des Datenordners.
Der Dienst schreibt dort seinen Stand in status.json. TCMSOFT zeigt ihn unter Stammdaten › Backup in der Karte
Programmversion und Updates und meldet Ergebnisse in der Glocke. Die Schaltflächen Jetzt prüfen und Jetzt
aktualisieren legen dort eine Anforderung ab. Während einer Datenübernahme hält TCMSOFT eine Sperrdatei frisch;
solange spielt der Dienst nichts ein. Einzelheiten stehen unter Updates von TCMSOFT.
Der Datenordner
Wozu: Hier liegen alle Daten der Installation. Auf dem Gerät ist das zum Beispiel /volume1/docker/tcmsoft, im
Container heißt der Ordner /data. Ein Update tauscht nur den Container aus, der Datenordner bleibt.
Die wichtigsten Inhalte:
mongodb/: die Datenbank mit Patienten, Akten, Bildern und Dokumentenkeys/: Schlüssel für Anmeldung und DICOM-Bildkürzel sowie das Datenbank-Passwort dieser Installationtcmsoft.env: Einstellungen des Containers, etwa Web-Port und HTTPS-Cookiescups/,treiber/,schriften/,printagent/: Drucker, eigene Treiber, eigene Schriften, Kopplung des Print Agent im Containerupdater/: Stand, Anforderungen und Protokolle des Update-Dienstesvor-update/: Sicherung der Datenbank während eines Updates, danach leer
Was in welchen Ordner gehört und was davon gesichert wird, steht unter Datenordner und tcmsoft.env.
downloads.tcmsoft.de
Wozu: Von hier kommen alle Programme und Updates.
| Ordner | Inhalt | Wer lädt |
|---|---|---|
docker/ |
TCMSOFT und Update-Dienst als Tar-Dateien, dazu signierte Versionslisten tcmsoft-<Arch>.json und tcmsoft-updater-<Arch>.json |
der Update-Dienst; bei der Einrichtung der Installateur |
agent/ |
Setup und DMG des Prismamed Agent, seine Update-Listen | die Agenten an den Arbeitsplätzen; TCMSOFT liest von dort die Dateinamen für Agent herunterladen… |
printagent/ |
Setup und DMG des Print Agent, seine Update-Listen | die Print Agents; TCMSOFT liest von dort die Dateinamen für Print Agent herunterladen… |
Alle Update-Listen und Versionslisten sind mit dem Schlüssel des Herstellers signiert. Der Update-Dienst und die Agenten spielen nur so signierte Pakete ein. Der Docker-Dienst auf dem Gerät braucht keinen Zugang zu Docker Hub.
Prismamed Agent
Wozu: Er verbindet TCMSOFT mit Geräten und Ordnern an einem Arbeitsplatz: GDT-Messgeräte, Labordateien (LDT), Bestätigungen von Order-Entry-Programmen der Labore und Scans. Es gibt ihn für Windows und macOS. Er gehört zu TCMSOFTpro.
Wie er arbeitet:
- Er baut die Verbindung immer selbst auf, per HTTP oder HTTPS zur Adresse, unter der TCMSOFT im Browser läuft. Er hat keinen eingehenden Port.
- Alle 30 Sekunden meldet er sich beim Server. Aufträge fragt er laufend ab; der Server hält jede Abfrage bis zu 25 Sekunden offen, bis ein Auftrag kommt. Nach 90 Sekunden ohne Kontakt zeigt TCMSOFT ihn als Offline.
- Gekoppelt wird er mit einem 6-stelligen Code aus Stammdaten › Agenten. Der Code gilt 15 Minuten und nur einmal.
- Welche Ordner er überwacht, legt TCMSOFT fest, nicht der Arbeitsplatz.
Mehr unter Prismamed Agent.
Print Agent
Wozu: Er gibt Druckaufträge aus TCMSOFT an Drucker weiter. Es gibt ihn an drei Stellen:
| Wo | Druckt auf | Kopplung | Lauscht auf |
|---|---|---|---|
im Container tcmsoft (Linux, ohne Oberfläche) |
Netzwerkdrucker, die unter Stammdaten › Drucker › Drucker hinzufügen eingerichtet sind; abschaltbar mit Drucker am Server | automatisch | 127.0.0.1:9632 |
| Windows-Arbeitsplatz (empfohlen) | die in Windows eingerichteten Drucker dieses Rechners | per Code (Koppeln … im Menü des Agenten) oder Agent suchen im Browser an diesem Rechner | Port 9632 auf allen Adressen |
| Mac (empfohlen) | die in den Systemeinstellungen eingerichteten Drucker dieses Macs | per Code oder Agent suchen im Browser an diesem Mac | nur localhost:9632 |
Wie er arbeitet:
- Bei der Kopplung per Code meldet sich der Agent mit dem Code aus Stammdaten › Drucker › Arbeitsplatz koppeln
unter
POST /prismamed-print-kopplungund bekommt das Kopplungsgeheimnis. Der Browser ist daran nicht beteiligt. - Bei Agent suchen fragt der Browser den Agenten am selben Rechner unter
http://127.0.0.1:9632ab. Chrome und Edge erlauben das nur, wenn TCMSOFT über HTTPS aufgerufen wird. Ausnahme: der Rechner, auf dem TCMSOFT selbst läuft; dort genügthttp://localhost. - Danach hält der Agent eine ausgehende Verbindung zur TCMSOFT-Adresse, Pfad
/prismamed-print-hub. Über sie kommen die Druckaufträge. - Der Print Agent im Container wird mit TCMSOFT aktualisiert. Die Print Agents an Windows-Arbeitsplätzen und Macs aktualisieren sich selbst.
Mehr unter Print Agent.
DICOM-Geräte
Wozu: Bildgebende Geräte wie Sonographie, Röntgen oder Endoskopie senden ihre Bilder direkt an den DICOM-Empfänger in TCMSOFT und fragen dort die Worklist ab. Ein Agent ist dafür nicht nötig. DICOM gehört zu TCMSOFTpro.
- Der Empfänger ist anfangs aus. Eingeschaltet wird er unter Stammdaten › DICOM mit dem Schalter Empfänger einschalten und Speichern.
- Standard sind Port 11112 und der AE-Title
TCMSOFT. Ports unter 1024 sind nicht erlaubt. - Am Gerät tragen Sie die Adresse der NAS bzw. des Servers ein. Im Container kann TCMSOFT diese Adresse nicht selbst ermitteln; die Seite zeigt dann einen entsprechenden Hinweis.
Mehr unter DICOM-Geräte und Mobilgeräte.
Companion-App
Wozu: Mit der App „TCMSOFT Companion“ fotografiert oder scannt das Praxisteam Dokumente mit dem Handy und überträgt sie in die Akte. Die App gehört ab TCMSOFTsingle Unlimited dazu.
- Das Handy spricht im Praxis-WLAN über den normalen Web-Port mit TCMSOFT, Pfad
/api/companion. - Jede Nachricht ist zusätzlich mit dem Schlüssel des Geräts verschlüsselt (AES-GCM), auch bei
http://. - Gekoppelt wird per QR-Code unter Stammdaten › Mobilgeräte › Handy koppeln. Im Feld Adresse für Handys steht
die Adresse, unter der das Handy TCMSOFT im WLAN erreicht. Am sichersten ist die IP-Adresse, weil Android-Handys Namen
mit
.localoft nicht auflösen.
Mehr unter DICOM-Geräte und Mobilgeräte.
Online-Termine
Wozu: Patienten buchen Termine selbst im Terminportal unter https://<Domainname>.arzttermin-buchen.de. Die
Buchungen erscheinen von selbst im Kalender.
- TCMSOFT fragt das Portal alle 2 Sekunden nach neuen Buchungen, Bestätigungen und Stornierungen. Termine überträgt es von sich aus, einmal je Stunde gleicht es alle Online-Termine ab.
- Die Verbindung geht nur von TCMSOFT nach außen (HTTPS). Das Portal ruft TCMSOFT nicht auf. Eine Portfreigabe von außen ist deshalb nicht nötig.
- Der Dienst arbeitet nur, wenn unter Stammdaten › Betriebsstätte in der Karte Terminportal der Schalter Aktiv eingeschaltet ist und die Felder Domainname und API Key ausgefüllt sind. Den API Key beim TCMSOFT-Support erfragen.
- Fehler meldet TCMSOFT in der Glocke. Die Bedienung steht im „Benutzerhandbuch › Termine und Wartezimmer › Online-Termine“.
So greifen die Teile ineinander
Einrichtung: Der Installateur startet den Update-Dienst. Der legt die tcmsoft.env an, lädt TCMSOFT von
downloads.tcmsoft.de und startet den Container. Beim ersten Start lädt TCMSOFT die TCM-Bibliothek, das dauert einige
Minuten. Beim ersten Aufruf im Browser fragt TCMSOFT nach dem ersten Konto.
Nachts: Um 03:00 prüft der Update-Dienst auf eine neue Version und spielt sie mit Sicherung ein. Das Ergebnis steht am Morgen in der Glocke und unter Stammdaten › Backup. Die Agenten an den Arbeitsplätzen spielen ihre Updates beim Programmstart ein oder abends und nachts zwischen 20 und 6 Uhr, sobald 15 Minuten lang nichts zu tun war, siehe Updates der Agenten.
Drucken: TCMSOFT schickt den Auftrag an den Print Agent, zu dem der gewählte Drucker gehört. Der Agent gibt ihn an den Drucker weiter.
Messgerät: In der Akte startet die Praxis eine Untersuchung. TCMSOFT stellt einen Auftrag ein. Der Prismamed Agent am Gerät holt ihn ab, schreibt die GDT-Datei und startet bei Bedarf das Geräteprogramm. Das Ergebnis legt das Gerät in einem Ordner ab. Der Agent lädt es hoch, und es erscheint in der Akte.
DICOM-Bild: Das Gerät sendet das Bild an Port 11112. TCMSOFT ordnet es dem Patienten zu oder legt es in den Posteingang, wenn der Patient nicht sicher erkannt wird.
Ports und Verbindungen
Die Tabellen nennen die Verbindungen, die TCMSOFT im Betrieb braucht, nach dem Stand des Programms vom 07.10.2026. Sie sind die Grundlage für Firewall-Freigaben. Ports sind TCP, wenn nichts anderes dabeisteht.
Im Praxisnetz
| Von | Nach | Port bzw. Adresse | Wofür |
|---|---|---|---|
| Browser am Arbeitsplatz | TCMSOFT | 8085 (HTTP) bzw. der HTTPS-Port des Reverse-Proxys |
Arbeiten mit TCMSOFT. Der Proxy muss WebSocket-Verbindungen durchlassen. |
| Prismamed Agent | TCMSOFT | Adresse wie im Browser, Pfad /api/agent/… |
Aufträge, Uploads, Lebenszeichen alle 30 s |
| Print Agent (Windows, Mac) | TCMSOFT | Adresse wie im Browser, Pfad /prismamed-print-hub |
Druckaufträge; die Verbindung bleibt stehen |
| Print Agent (Windows, Mac) | TCMSOFT | die beim Koppeln eingetragene Adresse, Pfad /prismamed-print-kopplung |
einmalig bei der Kopplung per Code |
| Browser am Arbeitsplatz | Print Agent am selben Rechner | http://127.0.0.1:9632 |
Agent suchen (Kopplung); die TCMSOFT-Seite muss über HTTPS geladen sein |
| Handy (Companion-App) | TCMSOFT | Web-Port bzw. HTTPS, Pfad /api/companion |
Fotos und Scans in die Akte |
| DICOM-Gerät | TCMSOFT | 11112 (einstellbar ab 1024) |
Bilder empfangen und Worklist; nur, wenn der Empfänger eingeschaltet ist |
| TCMSOFT (Container) | Netzwerkdrucker | meist IPP (631) oder der Druckport 9100 |
Drucken über CUPS |
| TCMSOFT (Container) | Drucker im selben Netz | mDNS (UDP 5353, Multicast) | Druckersuche per Bonjour bzw. AirPrint |
| Reverse-Proxy der NAS | TCMSOFT | http://localhost:8085 |
HTTPS für die Arbeitsplätze |
| Caddy auf dem Mikroserver | TCMSOFT | 127.0.0.1:5000 |
Webserver vor TCMSOFT |
Nach außen ins Internet
| Von | Nach | Wofür |
|---|---|---|
| Update-Dienst | https://downloads.tcmsoft.de/docker/ |
Updates von TCMSOFT und vom Update-Dienst selbst |
| Prismamed Agent, Print Agent | https://downloads.tcmsoft.de/agent/ bzw. /printagent/ |
Selbst-Update am Arbeitsplatz; unter Windows über den Proxy aus den Windows-Einstellungen |
| TCMSOFT | https://downloads.tcmsoft.de/agent/ und /printagent/ |
aktuelle Dateinamen für Agent herunterladen… und Print Agent herunterladen… |
| TCMSOFT | https://data.tcmsoft.cloud |
TCM-Bibliothek laden |
| TCMSOFT | https://verwaltung.tcmsoft.cloud |
Drucklayouts; Laborparameter-Katalog abrufen und unbekannte Laborkürzel melden (ohne Patientendaten) |
| TCMSOFT | https://pharmindex.tcmsoft.cloud |
Arzneimittel-Suchindex (alle 12 Stunden) und Angaben zu Arzneimitteln |
| Browser am Arbeitsplatz | https://pharmindex.tcmsoft.cloud |
Symbole in der Arzneimittelliste |
| TCMSOFT | https://<Domainname>.arzttermin-buchen.de |
Online-Termine, nur wenn eingerichtet |
| TCMSOFT | Adresse aus der Karte Billsphere | Patienten an Billsphere übertragen, nur wenn eingerichtet |
| TCMSOFT | https://webservice.padline.de |
Zertifikat der PAD-Abrechnungsstelle laden, mit dem TCMSOFT die PAD-Datei verschlüsselt |
| TCMSOFT | SMTP-Server des E-Mail-Kontos, Port laut Stammdaten › E-Mail-Konten | E-Mail-Versand |
Alle Verbindungen ins Internet gehen über HTTPS (Port 443), außer dem E-Mail-Versand.
Nur auf dem Gerät selbst (wegen des Host-Netzes müssen diese Ports auf der NAS bzw. dem Server frei sein)
| Port | Dienst | Hinweis |
|---|---|---|
127.0.0.1:27017 |
MongoDB | mit Anmeldung; bei Belegung Mongo__Port in tcmsoft.env ändern |
127.0.0.1:9632 |
Print Agent im Container | fest |
| kein Port | CUPS | nur Socket /run/cups/cups.sock im Container |
Ports ändern, Firewall und HTTPS: Netzwerk und HTTPS.
Weiter
- Voraussetzungen: was Server, Netz und Arbeitsplätze mitbringen müssen
- TCMSOFT einrichten: den Update-Dienst starten
- Die Agenten im Überblick: welcher Agent an welchen Arbeitsplatz gehört