XML-Filter (XSLT-Datei) für XML-boso-Blutdruck-Export-Dateien

HowTos, komplexe Anleitungen und nützliche Dokumente

Moderator: Moderatoren

Forumsregeln
Hier bitte komplexere Anleitungen allgemeinem Interesses posten, sowie wichtige Dokumente zum Download.
Bitte hier (möglichst) keine Diskussionen führen. Für Fragen und Hinweise ein neues Thema im entsprechenden Unterforum eröffnen.
Antworten
quotsi
*****
Beiträge: 252
Registriert: Do, 14.11.2013 10:04

XML-Filter (XSLT-Datei) für XML-boso-Blutdruck-Export-Dateien

Beitrag von quotsi » So, 26.11.2017 12:06

1. Aufgabenstellung:
Die Firma boso (Bosch & Sohn) fügt einigen ihrer Blutdruckmeßgeräte für den Heimgebrauch eine Auswertungssoftware namens ProfilManager XD (home) version 5.1.0.31 (Stand Nov. 2017) bei. Will man die erfaßten Blutdruck- und Pulswerte auch außerhalb dieser Software auswerten und hat kein MS-Office installiert, exportiert Profilmanager XD für jeden Patienten nur eine spezielle XML-Datei. Diese enthält neben den Angaben zum Patienten, alle definierten Zeiträume und in jedem dieser die entsprechenden Blutdruck-(RR)-Werte, den Puls/min und weitere Werte.
Ohne Vorbereitung ist diese XML-Datei in OpenOffice|LibreOffice zwar lesbar, aber man kann keine Werte auswerten. Eine Verwertung in LibreOffice-calc über Daten->XML-Quelle ist aus zwei Gründen auch nicht praktikabel: Hierbei kann die ermittelte Einstellung nicht gesichert werden und die zu importierende boso-XML-Datei hat eine Struktur, die mehr Ebenen umfaßt, als auf diesem Weg analysiert werden können.

Deshalb muß man für den sinnvollen Import der boso-XML-Datei ein neues spezielles XML-Filter in calc installieren und benötigt hierfür eine XSLT-Datei.

2. Beigefügt sind dieser Beschreibung drei XSLT-Filter-Dateivarianten. Getestet wurden alle unter LO version 5.3.7.1 und AOO version 4.1.5. Sie funktionieren stabil.

Nach der im Folgenden beschriebenen Filtereinstellung kann man jede boso-XML-Datei in calc importieren und erhält jeweils eine auswertbare calc-Datei, die man unbedingt unter einem neuen (.ods) Namen sichern sollte.

Die drei Filter-Varianten erzeugen unterschiedliche calc-Dateien mit folgenden Eigenschaften (die Spaltennamen sind deutsch):
A) Nur ein Tabellenblatt, welches in Zeile 2 die Patientenangaben und ab Zeile 5 alle Blutdruck-, Puls und sonstigen Werte über alle Zeiträume hinweg enthält, sortiert nach Datum und Zeit (Spalte H).
B) Liefert zwei Tabellenblätter. Das erste enthält die Patientenangaben, das zweite alle Blutdruck-, Puls und anderen Werte über alle Zeiträume hinweg, sortiert nach Datum und Zeit (Spalte H).
C) Diese Variante erzeugt mehrere Tabellenblätter. Das erste enthält die Patientenangaben, jedes weitere einen Zeitraum mit einer Tabelle der zugehörigen Blutdruck-, Puls und anderen Werte, sortiert nach Datum und Zeit.

Anmerkung: Werte, die vom Profilmanager XD nicht in die XML exportiert wurden (z.Zt. beispielsweise PP und Gewicht) können naturgemäß nicht in der erzeugten calc-Datei gefunden werden.

Zum Testen der Importfilter füge ich eine anonymisierte gekürzte XML-Datei bei, aus der man die Struktur einer boso-XML-Exportdatei gut entnehmen kann.
Man legt sich zweckmäßigerweise ein neues Verzeichnis an, kopiert in dieses alle XMLST-Filterdateien und die anonymisierte gekürzte Testdatei.

3. Einstellen des Filters in calc
In calc öffnet man unter Extras->XML-Filtereinstellungen->neu ein neues Filter:
Karteikarte Allgemein
- Filtername: boso Import Filter
- Anwendung: LibreOffice Calc (.ods) bzw. OpenOffice Calc (.ods)
- Name des Dateityps: boso RR-Daten
- Dateiendung: xml
* Anmerkung: Diese zwei vorstehenden Einträge bewirken den Namen des Filters beim Öffnen einer Datei, nämlich boso RR-Daten (*.xml)
- Kommentar: (leer)
Karteikarte Umwandlung
- Dokumentyp: boso-medicus
* Anmerkung: Dieser Eintrag ist identisch mit der zweiten Zeile in der XML-Datei, nach dem Code in der ersten und sorgt für die automatische Zuordnung zum Filter, wenn man die XML-boso-RR-Export-Datei aus calc heraus direkt aufruft.
- XSLT zum Exportieren: (leer, weil bisher kein Filter existiert)
- XSLT zum Importieren: Hier wird der Name der bevorzugten FILTERDATEI (vom Typ A, B oder C) eingetragen. Der Dateiname kann als .txt belassen werden.
- Dokumentvorlage für Import: (leer)
Nun bestätigt man mit OK.

Jetzt testet man mit XSLTs testen. Ein Wechsel zu einem anderen Typ XSLT-Datei geht über Bearbeiten, wobei man nur auf der Karteikarte Umwandlung unter XSLT zum Importieren die andere Filterdatei einzutragen braucht. Aber man man kann auch zusätzliche Filter erzeugen. Ob dann die automatische Erkennung konfliktfrei funktioniert, habe ich nicht getestet.
Hat das Filter die gewünschten Eigenschaften, kann man calc schließen.
Anmerkung: Wird aus irgendeinem Grund das Benutzerverzeichnis umbenannt, gehen diese Einstellungen verloren und müssen erneuert werden.

4. Nutzung
a. Unter Windows kann man im Explorer die XML-Datei (z.B. medicus_001.xml) direkt anwählen und über Öffnen mit calc aktivieren. Bei richtiger Einstellung erfolgt die Auswahl des Filters und die Umwandlung automatisch.
Achtung: Das Resultat muß stets mit neuem Namen (.ods) gesichert werden.
b. Man kann auch aus LibreOffice oder calc heraus die XML-Datei (z.B. medicus_001.xml) direkt öffnen. Alles weitere wie unter 1.
c. Gelingt die automatische Dateiassoziation nicht , dann stellt man das Dateifilter beim Öffnen auf boso RR-Daten (*.xml). Alles weitere wie unter 1.

5. Anmerkungen zur Struktur der Filterdatei für Entwickler
Im Vorspann sind die Strukturregeln und -bezüge gelistet. Konkrete Gestaltung wird mit styles bewirkt.
Da die Patientendaten in jeder XML-Datei nur einmalig sind, benötigt man für diese keine Schleife mit for-each. For-each- Schleifen werden für die Zeiträume und die Blutdruckdaten (in Variante C für jeden Zeitraum) benötigt. Die select-Angabe in einer for-each-Schleife legt den gegenwärtigen Knoten dominant fest. Deshalb benötigt man in der Filtervariante C mit zwei ineinandergeschachtelten Schleifen nach der Festlegung mit select "boso-medicus/patient/period" in der äußeren Schleife für die innere Schleife (RR-Werte) nur die select-Adressierung "si-measure".
Dateianhänge
XSLT Import Filter boso - C.txt.zip
.txt umbenennen - XSLT boso Import Filter C
(7.3 KiB) 106-mal heruntergeladen
XSLT Import Filter boso - B.txt.zip
.txt umbenennen - XSLT boso Import Filter B
(6.64 KiB) 104-mal heruntergeladen
XSLT Import Filter boso - A.txt.zip
.txt umbenennen - XSLT boso Import Filter A
(6.57 KiB) 104-mal heruntergeladen
Anonymus gekürzt medicus_001.xml.zip
.xml rückbenennen - Testdatei, Struktur wie Originalexport
(11.5 KiB) 103-mal heruntergeladen
win7prof - Avira - LO 5.4.7.2 (x64) - AOO 4.1.5

Antworten