UnderTheWater’s diary

日々の生活の中のメモを残していきます。

血圧測定のスマホ入力とパソコン接続

以前、「血圧グラフをgnuplotで描画する」を書いたのですが、血圧測定以降からグラフ描画以前までを割愛していました。
自分で環境を作ってグラフ化しています。

血圧測定

手くび 血圧計 EW-BW10 (この製品である必要はありません)
手くび 血圧計 EW-BW10 取扱説明書 | 血圧計 | Panasonic
を使って血圧(上)、血圧(下)、心拍数を測っています。
購入した当時、他に測定後クラウドに結果をアップロードしてクラウド上でグラフ描画などできる製品があったのですが、その製品が高価だったのでその製品ではなく、安い上記の製品を買う事にしました。

血圧入力

測定した値はAndroidスマホのアプリ 「Track & Graph」 を使って入力しています。
https://play.google.com/store/apps/details?id=com.samco.trackandgraph このアプリにはグラフ機能があり、gnuplotを使う必要はないのですが、病院で医師に提示するときに印刷して渡す為、印刷する事にしました。
また、最初からこれを使っていたのではなかったのですが、測定項目が体重や体温と増やそうとすると当初のアプリでは対応できず、項目を増す事のできるこのアプリを今は使っています。
グラフ機能は自分が短期間の変化を管理する為に使っています。
測定したデータはPCに送信する為、まずExport機能を使って掃き出します。
ここで最初にExportした時点で気づいたのですが、データ形式が独特で、1レコード1項目形式で、血圧(上)、血圧(下)、心拍数が別々でした。

FeatureName,Timestamp,Value,Note
Systolic,2022-11-05T07:56:32.895+09:00,125.0,
     :
     :
Diastolic,2022-11-05T07:56:32.895+09:00,81.0,
     :
     :
Pulse,2022-11-05T07:56:32.895+09:00,67.0,
      :

とりあえずPCに送信(FTP)

PCでデータ変換(1行1項目を1行4項目に変換)

これにはまずAWKスクリプトを作成しました。

BEGIN{
    FS=","
    OFS=","
    timestamp=""
    sw=0
}
$2 != timestamp {timestamp=$2; sw=0; yyyy=substr($2,1,4); mm=substr($2,6,2); dd=substr($2,9,2); time=substr($2,12,5)}
/^Systolic/ {systolic=$3; sw++}
/^Diastolic/ {diastolic=$3; sw++}
/^Pulse/ {pulse=$3; sw++}
sw > 2 {printf "%s/%s/%s %s %s %s %s\n",yyyy,mm,dd,time,systolic,diastolic,pulse}

更にこれをワンライナーで実行しました。

$ sort -t, -k2 'TrackAndGraph-My first track group-20221106-110110.csv' > 11s.txt && awk -f edit2m.awk 11s.txt > 11m.txt

ここで edit2m.awk が上のスクリプトです。

これで測定日付、時刻、血圧(上)、血圧(下)、脈拍が1行になっています。(脈拍は使っていません)

     :
     :
2022/11/06 06:34 126.0 84.0 65.0
2022/11/06 20:21 140.0 83.0 89.0
2022/11/07 05:11 120.0 86.0 67.0
     :

このできあがったファイルを先日ブログにしたgnuplotでグラフ描画をしています。