Withings Blutdruckdaten, oder: Darf eine CSV aussehen, wie sie will?

Interessantes ohne bestimmtes Thema!

Moderator: student

Antworten
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Withings Blutdruckdaten, oder: Darf eine CSV aussehen, wie sie will?

Beitrag von bigben »

Hallo Leute,

ich muss da mal mit jemandem drüber reden. Eine konkrete Datenverarbeitungsfrage folgt da jetzt nicht.

Die Firma Withings gilt als einer der Qualitätsanbieter für kleine Messgeräte, die im Alltag Gesundheitsdaten erfassen. Also Uhren die den Puls oxymetrieren und Puls und GPS zusammenbringen, damit man sieht, wo man beim Joggen war und Körperwaagen, bei denen man das Gewicht dann auf dem Handy statt auf dem Gerät ablesen kann und von denen ist mir jetzt ein Blutdruckmessgerät in die Hände gekommen. Eine schöne breite Manschette für den Oberarm, eine Akku-getriebene Luftpumpe, über USB aufladbar und natürlich werden die Daten in einer App im Handy gespeichert.

Die Grafiken in der App sind himmelschreiend (muss man jetzt nicht erläutern, als Beispiel: Achsen darf man auch in Apps beschriften), aber dafür kann man unter dem Menüpunkt "Daten mit dem Arzt teilen" ein CSV verschicken. Ich weiß nicht, wieviele Hausärzte Lust und Zeit haben, sich CSV-Dateien anzuschauen, aber eine CSV-Exportfunktion ist ja erstmal immer richtig. Gesagt, getan, jetzt beginnt das CSV so:

Code: Alles auswählen

Date;SYS;DIA;BPM
2023-04-19T17:38:27.000+02:00,158,106,62
2023-04-19T17:38:27.000+02:00,158,106,62
2023-04-19T17:46:34.000+02:00,149,98,64
2023-04-19T17:46:34.000+02:00,149,98,64
2023-04-19T18:05:48.000+02:00,150,95,67
2023-04-19T18:05:48.000+02:00,150,95,67
2023-04-19T18:10:07.000+02:00,158,95,67
2023-04-19T18:10:07.000+02:00,158,95,67
2023-04-19T18:15:43.000+02:00,155,95,69
2023-04-19T18:15:43.000+02:00,155,95,69
2023-04-19T18:31:43.000+02:00,146,88,71
2023-04-19T18:31:43.000+02:00,146,88,71
2023-04-19T18:43:43.000+02:00,149,94,69
2023-04-19T18:43:43.000+02:00,149,94,69
2023-04-19T19:34:44.000+02:00,143,90,62
2023-04-19T19:34:44.000+02:00,143,90,62
2023-04-19T21:47:37.000+02:00,161,86,72
2023-04-19T21:47:37.000+02:00,161,86,72
2023-04-20T14:07:53.000+02:00,140,91,77
2023-04-20T14:07:53.000+02:00,140,91,77
2023-04-20T14:17:26.000+02:00,148,92,68
2023-04-20T14:17:26.000+02:00,148,92,68
2023-04-20T14:19:00.000+02:00,147,92,72
2023-04-20T14:19:00.000+02:00,147,92,72
2023-04-25T12:46:24.000+02:00,147,96,80
2023-04-25T12:46:24.000+02:00,147,96,80
2023-04-25T14:54:06.000+02:00,140,99,88
2023-04-25T14:54:06.000+02:00,140,99,88
2023-04-26T07:24:36.000+02:00,180,95,84
2023-04-26T07:24:36.000+02:00,180,95,84
Ein Blick auf die erste Zeile verrät: Das ist ein csv mit Semikolon als Trennzeichen. Stimmt halt nicht, denn außer in der header-Zeile kommt kein Semikolon mehr vor! Stattdessen verwenden wir ein "T" als Trennzeichen zwischen Datum und Uhrzeit und ein Komma zwischen den Messwerten als Trennzeichen und dann für eine Blutdruckmessung mit Luftmanschette den Zeitpunkt mit drei Nachkommastellen für die Sekunde. :twisted:
Nicht, dass diese drei Nachkommastellen für die Sekunden jemals mit was anderem als 000 gefüllt wären, aber als nächstes fällt einem dann auf, dass mehrere Messungen auf die Tausendstel Sekunde genau gleichzeitig erfolgt sind. Hä? :oops: Ach so, jede Zeile ist doppelt vorhanden :!: :roll: :lol: :?:

Ich weiß, dass CSV kein wirklich standardisiertes Format ist. Jeder ist frei, damit zu machen, was er will. Aber warum wollen Menschen so einen Quatsch? Was hat ein Programmierer geraucht, der zwischen erster und folgenden Zeilen das Trennzeichen wechselt? Wieso soll ich glauben, dass diese Software gründlich genug für meine Gesundheitsvorsorge geschrieben wurde, wenn die Gründlichkeit nicht mal gereicht hat, die Zahl der Messungen mit der Zahl der Einträge abzugleichen? Und welcher Hausarzt soll solche Daten lesen?

Ich kann da nur Kopfschütteln. Und falls jemand über Withings und CSV diesen Post gefunden haben sollte: Vorläufig visualisiere ich die Daten wie folgt (falls jemand anderes solche Daten verarbeite muss):

Code: Alles auswählen

pfad <- "C:\\Users\\bigben\\Downloads\\bloodPressure.csv"

bp <- read.csv(pfad, sep = ",", skip = 1, header = FALSE)
names(bp) <- c("Zeit_char", "Sys", "Dia", "Puls")
str(bp)
bp$Zeit <- as.POSIXct(bp$Zeit, format = "%Y-%m-%dT%H:%M:%OS")

library(ggplot2)
library(ggpubr)
ggarrange(
  ggplot(bp) +
    scale_y_continuous(name = "Blutdruck [mmHg]", breaks = seq(0,300, 20),
                       limits = c(min(c(bp$Dia), 60), max(c(220, bp$Sys))),
                       position = "right") +
    xlab("") +
    geom_hline(yintercept = c(85, 90, 160, 180)) +
    geom_point(aes(x = Zeit, y = Sys)) +
    geom_point(aes(x = Zeit, y = Dia)) +
    geom_errorbar(aes(x = Zeit, ymin = Dia, ymax = Sys)) +
    theme_bw()
  ,
  ggplot(bp, aes(x = Zeit, y = Puls)) +
    #geom_line(alpha = .5) +
    geom_point() +
    scale_y_continuous(name = "Puls [1/min]", position = "right") + 
    theme_bw()
  ,nrow = 2, align = "v", heights = c(2, 1)
)
Ganz ehrlich, werde ich das noch erleben, dass wir uns auf ein brauchbares Datenformat für so einfache Tabellen einigen?

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: Withings Blutdruckdaten, oder: Darf eine CSV aussehen, wie sie will?

Beitrag von student »

Hallo Bernhard,

danke für das Teilen! Aus meiner Vergangenheit (ich arbeite jetzt nur noch zum Vergnügen :lol: ) kann ich ähnliches berichten. Ich will nicht über die Entwickler schimpfen, denn diese werden oft als Junior-Entwickler von der Uni geholt und sollen einfach mal machen. Es gibt (so hoffe ich) immer einen Auftraggeber (Projektmanager, ...) und er/sie/es ist verantwortlich für
  • ausreichende Beschreibung der Aufgabe
  • Betreuung in der Umsetzung und der
  • Abnahme.
Wenn es daran hapert, kommt so etwas raus. Zu keinem Zeitpunkt darf nicht davon ausgegangen werden, jeder z. B. unter csv das Gleiche versteht.

Hast Du das Problem Withings berichtet? Möglicherweise freuen sie sich über das Feedback...
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Withings Blutdruckdaten, oder: Darf eine CSV aussehen, wie sie will?

Beitrag von bigben »

Hallo Günter,

auf die Idee, mich bei Withings zu melden, bin ich eigentlich nicht gekommen. Irgendwie hatte ich angenommen, dass diese Kundenservice-Hotlines vor allem den Auftrag haben, viele Kunden in möglichst kurzer Zeit abzuarbeiten und nicht unbedingt einen Draht nach oben haben. Vielleicht zu viele Vorurteile bei mir. Ich habe es da mal hin gemailt.

Viele Grüße,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Withings Blutdruckdaten, oder: Darf eine CSV aussehen, wie sie will?

Beitrag von jogo »

Hallo Bernhard,

ich sehe eher das Komma als Trennzeichen bei den Daten (siehe letzte drei Spalten). Das "T" scheint für "Time" zu stehen, da bei dem Datum auch noch die Uhrzeit steht.

Gruß, Jörg
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Withings Blutdruckdaten, oder: Darf eine CSV aussehen, wie sie will?

Beitrag von bigben »

Hallo Jörg,

ja klar, das Komma ist das Trennzeichen zwischen den Messwerten und die erste Zeile soll nur verhindern, dass man das normal als CSV einlesen kann. Mit "skip = 1, header = FALSE" lassen sich die Daten gut einlesen. Ob man sich danach trauen darf, jede zweite Zeile einfach zu löschen oder ob eine Bedienung des Gerätes denkbar ist, bei der eine Messung nur eine Zeile in Anspruch nimmt, bleibt erstmal offen.

Der Werbespruch auf Amazon dazu lautet "Bpm Connect leitet alle Daten automatisch per WLAN oder Bluetooth an die kostenfreie Health Mate App weiter, wo Sie den Verlauf aller Messungen einsehen und mit ihrem Arzt teilen können." Na, der wird sich freuen. Wir reden hier nicht von 20-EUR-China-Müll (natürlich trotzdem Made in China).

Ich habe hier ein Blutzuckermessgerät, das steckt man an den USB-Port und findet die Daten in einem HTML-File mit eingebettetem JavaScript, sodass man sich über ein Menü einen Zeitraum auswählen kann und wirklich brauchbare Plots gezeichnet bekommt. Ein weiterer Button und man hat eine druckfertige Darstellung. Alles im Browser. Ich will damit nicht sagen, dass HTML mit eingebettetem JS ein erstrebenswertes Format für den Austausch von Daten ist, aber das hat mich beeindruckt.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten