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: 306
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

überarbeitet 30.04.2019
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.3.0.74 (Stand Apr 2019) 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 Daten einer boso-XML-Datei ein neues spezielles XML-Filter in calc installieren und benötigt hierfür eine XSLT-Filter-Datei.

2. Beigefügt sind dieser Beschreibung drei alternative XSLT-Filter-Dateivarianten. Getestet wurden alle unter LO version 6.1.3.2 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 muß.

Die drei alternativen Filter-Varianten erzeugen unterschiedliche calc-Dateien mit folgenden Eigenschaften (die Spaltennamen sind deutsch):
A) Nur ein Tabellenblatt "Patient und Werte", welches Angaben zum Patienten und alle Werte (Blutdruck, Puls und weitere) über alle Zeiträume enthält, sortiert nach Datum und Zeit (enthalten in Spalte H).
XSLT Import Filter boso - A.zip
Nicht unzippen, sondern in
XSLT Import Filter boso - A.txt umbenennen
(6.6 KiB) 21-mal heruntergeladen
B) Liefert zwei Tabellenblätter, das erste enthält die Patientenangaben, das zweite alle Werte über alle Zeiträume hinweg, sortiert nach Datum und Zeit (enthalten in Spalte H).
XSLT Import Filter boso - B.zip
Nicht unzippen, sondern in
XSLT Import Filter boso - B.txt umbenennen
(6.68 KiB) 21-mal heruntergeladen
C) Diese Variante erzeugt mehrere Tabellenblätter, das erste namens "Patient" enthält dessen Beschreibung, jedes weitere eine "Periode" mit Blutdruck, Puls und anderen Werten, sortiert nach Datum und Zeit (enthalten in Spalte H).
XSLT Import Filter boso - C.zip
Nicht unzippen, sondern in
XSLT Import Filter boso - C.txt umbenennen
(7.34 KiB) 20-mal heruntergeladen
* 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.
Anonymus gekürzt medicus_001.xml.zip
Nicht unzippen, sondern in
Anonymus gekürzt medicus_001.xml rückbenennen.
Diese Testdatei hat eine Struktur wie eine Originalexport
(11.5 KiB) 184-mal heruntergeladen
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 werden der Pfad mit dem Namen 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 (mit dem Pfad) einzutragen braucht. Mehrere gleiche Filter gleichzeitig stören die automatische Erkennung.
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 (rechtes Mausmenü unter Win) calc oder Libre Office aktivieren. Bei richtiger Einstellung erfolgt die Auswahl des Filters und die Umwandlung automatisch.
b. Man kann auch aus LibreOffice oder calc heraus die XML-Datei (z.B. medicus_001.xml) direkt öffnen.
c. Gelingt die automatische Dateiassoziation nicht , dann stellt man beim Öffnen das Dateifilterauf boso RR-Daten (*.xml).
* Achtung: Das Resultat muß stets mit neuem Namen (.ods) gesichert werden um Überschreibung zu vermeiden.

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 Blutdruckdaten und in Variante C für jeden Zeitraum benötigt. Die select-Angabe 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".
win7prof - Avira - LO 6.1.3.2 (x64) - AOO 4.1.5

Antworten