はじめに
前回、残薬管理ページの作成: Notion 解説 (10) - hkob’s blogにて、毎日利用する薬の残薬管理ページの作成方法を紹介しました。持病があって毎日薬を飲まれる方には有効かと思います。その後、一時的に利用する薬についても、投薬管理がしたいという相談がありました。うちでもそういう需要があるので、作ってみました。テンプレートは前回の記事と同じ Notion ページに置いてありますので、参照してみてください。
設計したページの外観
まずは、一覧確認およびデータ入力用のカレンダービューです。薬を飲んだタイミングがセレクタで選択できるようになっています。薬ごとにテンプレートを用意していて、最初に飲んだ時だけ「+」でテンプレートを選べばよいようになっています。薬名は手入力をしなくていいように工夫しています。昼などに薬を追加で飲んだ時には、セレクタを修正すればいいようにしています。
薬が少なくなって購入した時には、追加した個数を同様に入力できるようになっています。
先ほどカレンダーで入力したものが、こちらで集計されます。入力を続けると購入数総数と服薬数総数はすごい数値になるので、隠していいような気がします。
テーブルの設計
これを実現するためのテーブルはこんな感じで設計しています。テーブル自体は、データ本体という Toggle list に隠してあります。説明を簡単にするために、先に一時利用残薬管理データの方を説明します。
一時利用残薬管理データテーブルの属性
先ほどのカレンダービューのデータはこんな感じで 5 つのプロパティを用意しています。それぞれの属性については、この後で説明します。
- 日付: カレンダービューに表示するため日付です。カレンダーの日付で「+」をクリックするので自動的に設定されます。
- 服薬: どのタイミングで薬を飲んだかを設定します。連続して薬を飲んだ時に設定しやすいように並び順を工夫しています。()内に服薬数が書かれています。ここの数値を後で取り出しています。
- 追加: 薬を追加購入した時に追加分を数値で入力します。
- 薬: 後で集計できるように薬への Relation を設定しています。これは後で示すテンプレートに組み込まれているので、手で入力することはありません。
- 服薬数: 上の服薬に書かれた数値を Formula で取り出しています。 文字列から数値を取り出すには?で紹介したテクニックです(ネタもとは Yuka さんのまいにち Notion のNotionで「繰り返しタスク」どうする?! #まいにちNotion Ep.7 - YouTube です)。
toNumber(replaceAll(prop("服薬"), "[^0-9]", ""))
一時利用残薬管理データテーブルのテンプレート
このテーブルには薬ごとにテンプレートを作ります。以下を設定しています。
- アイコン: 薬が区別つくようなアイコンをつけています。
- タイトル: 薬名を書いておきます。これは区別をくるためだけのものです。
- 薬: 接続する薬のリレーションを設定しておきます。テンプレートを選ぶだけで、薬が設定されるようになります。
- 本文: 薬名を書いておきます。テンプレートを選ぶと本文に薬名が書かれます。薬名の前で「delete」を押すと、この薬名がタイトルに移動します。これによって薬名を手作業で書く必要がなくなります。
薬テーブルの属性
薬テーブルは集計処理だけをやっています。それぞれの薬ごとに一時利用残薬管理テーブルに向けて Relation が作られています。この Relation から Rollup で集計処理を実施しています。ここでは、以下の3つの属性を計算しています。
- 購入数総数: 管理テーブルの「追加」属性を Rollup で総和しているだけです。
- 服薬数総数: 同じく管理テーブルの「服薬数」属性を Rollup で総和しているだけです。
- 薬残数: 上で集計した購入数総数から服薬数残数を単に引いたものです。
prop("購入数総数") - prop("服薬数総数")
おわりに
Yuka's Studio で相談を受けた時に、こんな感じのカレンダー管理がしたいというインターフェースのイメージ画面をいただけたので、思ったより簡単に設計することができました。私も作りたいと思っていたので、ちょうどよかったです。私の Launchpad にも早速取り入れたいと思います。