Dienstag, März 13, 2012

Der wissenschaftliche Prozess

scientific-process.jpg

Montag, März 12, 2012

Cross-Enterprise Model Sharing (XMS)

Die Arbeit des Arztes hat sich in den vergangenen Jahrzehnten durch die Entwicklung von leistungsfähigen medizinischen Bildgebungsverfahren wie z.B. CT, MRT oder PET und dem Einsatz leistungsfähiger Hard- und Software im gesamten Therapieprozess des Patienten stark gewandelt. Die Aufgabe, existierende Daten eines Patienten miteinander in Verbindung zu setzen und eine Therapie zu planen und durchzuführen bleibt trotz einer immens steigenden Anzahl von Informationen dem behandelnden Arzt vorbehalten.

Die bisher genutzte bildgeführte Therapie (Image Guided Therapy, IGT) soll in Zukunft durch eine modellgestützte Therapie (Model Guided Therapy, MGT) erweitert und für den Arzt vereinfacht werden. Alle Informationen bezüglich eines Patienten wie z.B. Laborwerte, medizinische Bilddaten, genetische Informationen bis hin zum Lebenswandel werden in einem patientenspezifischen Modell gespeichert. Mathematische Algorithmen werden dem Arzt einen Teil der Arbeit erleichtern und die bestehenden Informationen automatisiert verarbeiten und bei der Generierung einer speziell auf die Bedürfnisse des Patienten angepassten Therapie unterstützen. Die Therapie selbst wird mit Hilfe von Modellen der Arbeitsabläufe durchgeführt. Diese Workflow-Modelle können zum Beispiel die genauen Informationen über den Ablauf einer OP enthalten und dem Chirurgen während der Operation zum richtigen Zeitpunkt die benötigten Informationen anzeigen oder bei der Erkennung und dem Schutz von Risikostrukturen während des Eingriffs helfen. [1]

Die modellgestützte Therapie erfordert speziell angepasste IT-Systeme welche in der Lage sind die Patienten- und Workflow-Modelle zu verarbeiten, zu speichern und im klinischen Computernetzwerk zu übertragen. Die derzeit etablierten Standards wie DICOM oder HL7 sind für diese Aufgabe nur bedingt geeignet. Die IHE bietet einen sehr interessanten Ansatz, das Cross-Enterprise Document Sharing (XDS). Leider sind in diesem Standard alle Informationseinheiten fest an einen Patienten gekoppelt. Workflow-Modelle sind jedoch patientenunabhängig, so dass XDS nicht Out-of-the-Box genutzt werden kann. Deshalb werden wir XDS in einem neuen Projekt auf die neuen Anforderungen der modellgeführten Therapie, dem Cross-Enterprise Model Sharing (XMS), erweitern.

Mittwoch, Januar 25, 2012

Invient-Charts für Vaadin HowTo

Invient-Charts ist ein Wrapper für die Highcharts Java Script Bibliothek. Mit Highcharts lassen sich phänomenale Diagramme im Browser anzeigen. Leider gibt es beim Zusammenspiel von Highcharts und VAADIN einige Probleme, wie man aus den verschiedenen Forenbeiträgen ersehen kann. Ich habe auch 2 Tage gebraucht um herauszufinden wie man das Gespann zum Laufen bekommt und möchte hier gern meine Erfahrungen zur Verfügung stellen.

Das folgende Vorgehen hat bei mir funktioniert:

  • Die benötigten Pakete herunterladen Invient-Charts, Highcharts und jQuery
  • Ein neues VAADIN-Projekt in Eclipse anlegen
  • Einen Ordner VAADIN/scripts im Ordner WebContent erstellen
  • jquery-1.7.1.min.js, highcharts.js und die Verzeichnisse adapters, modules und themes aus dem Highcharts-Paket in den scripts-Ordner importieren
  • Eine neue ApplicationServlet Klasse erstellen und die Inhalte aus der Klasse InvientChartsDemoAppServlet.java aus der Invient-Charts Demo kopieren
  • Die Pfadangaben habe ich noch dynamisch erweitert mit … src=’” + request.getContextPath() + “/VAADIN/scripts … und den Eintrag mit exporting.js weggelassen, braucht man erstmal nicht
  • In der web.xml unter servlet->servlet-class den Namen der neuen ApplicationServlet Klasse eintragen
  • Die Datei invientcharts-0.8.6.jar in WEB-INF/lib importieren und das Widgetset neu kompilieren lassen
  • Jetzt ein Demochart aus InvientChartsDemoWin.java heraussuchen und kopieren
  • Noch die Methode getPoints() kopieren und am Ende mainWindow.addComponent(chart) nicht vergessen

Nach dem Deploy auf dem Application Server sollte nun im Browser ein schönes Diagramm auftauchen.

Hier (.zip, 7,2MB) könnt ihr euch auch noch das Projekt herunterladen, was bei mir funktioniert hat.

Donnerstag, Dezember 15, 2011

i18n für Vaadin

Das Web Application Framework Vaadin bietet leider keine integrierte Möglichkeit der Internationalisierung. Das Plugin I18N4Vaadin springt in diese Lücke und bietet eine sehr komfortable Möglichkeit Mehrsprachigkeit in die eigene Webanwendung zu integrieren. Ich möchte hier kurz die Funktionsweise der Erweiterung vorstellen. Als Basis diente das offizielle Tutorial.

Als erstes lädt man sich I18N4Vaadin aus dem Add-On Verzeichnis herunter und kopiert die Datei I18N4Vaadin-x.x.x.jar in das Verzeichnis WEB-INF/lib.

Jetzt erstellt man sich eine neue Instanz des Add-Ons in seiner Basisapplikation. Die Sprachdateien in diesem Beispiel tragen den Namen translations als Basis und werden je nach Sprache ergänzt, z.B. translations_de.properties für Deutsch. Die Properties-Dateien müssen in einem Source-Verzeichnis liegen, sonst werden sie nicht gefunden!

public class I18n4vaadinApplication extends Application {

        @Override
	public void init() {

		I18N i18n = new ResourceBundleI18N("translations",
				Locale.US, Locale.GERMANY);
		i18n.setCurrentLocale(Locale.US);
		I18NWindow mainWindow = new I18NWindow
				("I18n4vaadin Application", i18n);
                setMainWindow(mainWindow);
	}
}

Der nächste Schritt ist die Erstellung eines Layouts, welches i18n unterstützt. Weiterhin bietet das Layout einen Listener, welcher bei einer Sprachänderung sofort alle Texte ändert. Das folgende Beispiel nutzt ein VerticalLayout. Es ist wichtig, bei der Instanziierung der Objekte keine i18n-Captions zu vergeben, da zum Zeitpunkt der Instanziierung des Objektes i18n noch nicht zur Verfügung steht, sondern erst wenn das Objekt mit addComponent() an ein Layout angebunden wird. Die Captions werden in der Methode updateLabels() in der jeweiligen Sprache gesetzt, sobald das Objekt attached wird oder sich die Sprache ändert.

public class I18NVerticalLayout extends VerticalLayout implements
		I18NComponent, I18NListener {

	private final I18NComponentSupport support = new
				I18NComponentSupport(this);
	private Label greeting = new Label();

	public I18NVerticalLayout() {
		addComponent(greeting);
	}

	public void updateLabels() {
		greeting.setCaption(getI18N().getMessage
				("greetingMessage"));
	}

	@Override
	public void localeChanged(I18N sender, Locale oldLocale,
				Locale newLocale) {
		updateLabels();
	}

	@Override
	public void setI18N(I18N i18n) {
		support.setI18N(i18n);
	}

	@Override
	public I18N getI18N() {
		return support.getI18N();
	}

    @Override
    public void attach() {
        super.attach();
        getI18N().addListener(this);
        updateLabels();
    }
	@Override
	public void detach() {
		getI18N().removeListener(this);
		super.detach();
	}
}

Das war’s auch schon! Die Beschriftung des Labels greeting wird nun an die aktuelle Sprache angepasst sobald eine Instanz des I18NVerticalLayout mittels addComponent() oder setContent() der Applikation hinzugefügt wird oder sich die Sprache durch den I18NListener ändert.

Das zugehörige lauffähige Beispielprojekt könnt ihr euch hier (.zip 4,5MB) herunterladen.

Freitag, Dezember 9, 2011

Die Publikationsplanung

Die Planung und Strukturierung der ersten Publikation stellt den Nachwuchswissenschaftler vor einige Hürden. Im Folgenden sollen kurz Kernpunkte für die Publikation im Bereich der Medizintechnik erläutert werden.

Im ersten Schritt muss genau abgegrenzt werden, was man anderen Wissenschaftlern mit der Veröffentlichung mitteilen möchte. Es muss das Problem skizziert werden was gelöst werden soll. Anschließend wird die Lösung des Problems detailliert beschrieben, so dass das Vorgehen nachvollziehbar ist und das System anhand der Beschreibung nachgebaut werden kann und die Ergebnisse überprüfbar sind. Es muss auch dargestellt werden, wie die Korrektheit der Lösung nachgewiesen wurde. Die Gliederung des Paper kann folgendermaßen vorgenommen werden:

Intro

  • Was ist das Problem?
  • Wie soll das Problem gelöst werden?
  • Welche Relevanz hat das Problem in der Wissenschaft?
  • Darstellung des aktuellen Standes der Technik.
  • Abgrenzung zu anderen Forschungsarbeiten. Dazu eine kurze Zusammenfassung der Personen die bereits an dem Problem gearbeitet haben und welche Ergebnisse erzielt wurden.
  • Darstellung des wissenschaftlichen Mehrwertes der eigenen Forschungsarbeiten.

Material und Methoden

  • Benennung verwendeter Materialen, statistischer Methoden oder Algorithmen.
  • Beschreibung von eingesetzter Software und Versuchsaufbauten.
  • Hier ist die Nutzung von Klassendiagrammen möglich.
  • Beschreibung der Durchführung bzw. Schrittfolge (z.B. mit Sequenzdiagrammen).
  • Beschreibung einer sinnvollen Anwendung (z.B. Studie) und erwarteter Ergebnisse.

Resultate

  • Objektive Darstellung der Ergebnisse.
  • Nutzung von Tabellen zur Darstellung der Auswertung von Fragebögen oder Messergebnissen.
  • Sicherstellung einer Nachvollziehbarkeit der Ergebnisse (Originaldokumente!) für mehr als 10 Jahre.

Diskussion

  • Subjektive Interpretation der Ergebnisse.
  • Beschreibung, warum diese Arbeit die Lösung für das Problem ist.
  • Beschreibung von Verbesserungsvorschlägen.
  • Darstellung von Ideen für zukünftige oder weiterführende Forschungsarbeiten.