Hallo, ich stehe vor folgendem Problem:
eine medizinische Client-Server-Anwendung soll erstellt werden. Die Patienten/Befund-Daten dürfen den Anwender-PC nur verschlüsselt verlassen, d.h. sie müssen clientseitig verschlüsselt werden, dann via Transportlayerverschlüsselung auf einen Server geladen werden und in der dortige DB gespeichert werden. Die Daten dürfen ausserhalb des Client-Rechners auf keinen Fall irgendwo unverschlüsselt vorliegen. (Gescannte Dokumente oder andere personalisierte Dokumente werden zu einem Cloud-Anbieter hochgeladen, der sich auf medizinische Daten spezialisiert hat).
Das wirft für mich natürlich eine Menge Fragen auf:
-
ist das mit Webtechnologie so überhaupt machbar? Wie funktioniert zum Beispiel eine Patientensuche nach Namen? Meine serverseitige Anwendung kennt ja nur die verschlüsselten Daten. Große Teile der Logik müssen wohl daher lokal implementiert werden (Alle Patienten initial runterladen, entschlüsseln, dann lokale Suche und so weiter).
-
die Datenbankstruktur muss völlig anders aussehen, als in gewöhnlichen Fällen. Zum Beispiel ist der Patienten-Name üblicherweise ein VARCHAR 40, muss aber in der DB ein BLOB sein. Ist das bei medizinischen Daten tatsächlich so üblich?
-
wie würde der Prozess aussehen? Alle get- bzw. post-Daten müssen vor dem Absenden verschlüsselt werden. Das Password darf sich folglich nur auf dem Client-Rechner befinden. Local Storage? Oder eine selbstgestrickte Java/C#/C++-Anwendung, über der der ganze Transport läuft und dort ver- und entschlüsselt wird?
-
der Transport der Daten soll überdies über einen vpn-tunnel laufen. Ok, das ist jetzt nicht so das große Problem, denke ich.
Ich bin Student und das Projekt wäre eine große Chance für mich. Allerdings sehe ich eine Menge Fragezeichen. Ich bin jetzt an dem Punkt, wo ich sage, ich programmiere das als lokale Anwendung klassisch in C++ oder Java, allerdings ist das nicht gewünscht.
Vielleicht kennt sich jemand auf dem Gebiet medizinische Daten aus, kann mir einen Hinweis geben, wie man das vielleicht umsetzen könnte. Ich habe schon ziemlich viel recherchiert, aber auf eine mögliche Implementierung bin ich bisher noch nicht gestoßen.
Danke schonmal und beste Grüße Wolfgang