おはようヒヤリのゆうれい
ふくいDX加速化補助金!kintoneで社内システム再構築、その21kintoneで日付を指定した関連レコードは弱すぎ、その上で指定日から1~5日前のレコードを取得し、見やすくするためには。No5543
kintoneはデータベースなのか?
と聞かれると、、、
否、ちがう。と全力で否定します。
ルックアップの機能があるため、
データ同士の連携は出来ますが、、、、
関連が弱いので。
ただし、その中でも使えるテクニックをご紹介します。
通常のルックアップ
通常のルックアップは、
マスタなどの台帳レコードと、
他レコードを連結させるテクニックです。
商品管理アプリから、
商品コードをルックアップして、商品情報(単価・商品名など)を取得しています。
そのあたりは、
この記事が詳しく書いています。
これを介護やケアマネの現場で実装すると、
- 利用者台帳から、各アプリに連携。
- 介護保険台帳から、ケアプランや利用者台帳に連携。
- ケアプラン台帳から、訪問介護計画書アプリに連携
といった使い方になり、
あんしん村の場合、名前をキーにした。
というわけです。
※名前でルックアップする場合、同一名称での登録は不可にする必要あり。
関連レコードという連携もある
またkintoneには、
関連レコード一覧といって、
紐づけたいフィールドを指定することで、
関連するレコードを取得する方法があります。
(画像にリンク貼ってあります)
関連レコードの数値を集計する、
ということが出来ないので、、、
そこはプラグインを使うしかありません。
ヘルプにも明記されています。
-
-
- 数値の桁区切りや丸めなどは、参照先のアプリの設定が反映されます。
- 関連レコード一覧フィールドは、レコードの一覧画面には表示できません。
- 関連レコード一覧フィールドの値は、次の操作の対象になりません。
- 集計
- 自動計算
- アプリ内検索
-
月単位のレコードを関連レコードに
この関連レコードを介護の現場で活かすと、、、
訪問介護計画書とセットになる、
モニタリング報告書に、、、、
指定した年月の実績を取得する、
というもので、こちらの記事に詳しく書きました。
Livedoorニュースのようにざっくり言うと(笑)、
訪問介護計画書 訪問介護実績
山田太郎2024-08 = 山田太郎2024-08
と関連させることで、
実績一覧を取得し、モニタリング報告書にする、
というわけです。
月単位が出来れば、、、、
この月単位の関連が出来れば、
年単位、
四半期単位、
上期下期単位、
といった関連も持たせることが出来、
IF文を使えば、
年度単位だって出来る。というわけ。
例えば、
2025/3のレコードは2024年度として扱う
IF( OR(DATE_FORMAT(日付,”MM”,..)=”01″,DATE_FORMAT(日付,”MM”,..)=”02″,DATE_FORMAT(日付,”MM”,..)=”03″), DATE_FORMAT(日付+(60*60*24*366),”YYYY”,…), DATE_FORMAT(日付,”YYYY”,…) )
とすることで、
1~3月の年を強制的に年に+1する(60*60*24*366)ことで、年度扱いにする、
が出来るようになります。
※365にすると、うるう日だった場合、年が変わらないため
これを関連フィールドを作り、
無理やり関連させられる、というわけです。
日付の関連が弱い
ここでのポイントは、
関連レコードを設定するときの、
日付を関連させる方法が弱すぎる、ということです。
データベース担当であれば、
日付フィールド同士を連携させる、、、、というのが常識的です。
例:訪問介護計画.年月 = 訪問介護実績.年月
しかしながら、関連レコードを設定する場合、
日付同士の連携が出来ず、
kintoneでは、
例:訪問介護計画.日付 = 今日、または指定日、今年・今月・・・・
といったハードコード的な日付の指定しか出来ないためです。
これが出来ないためにとった苦肉の策が、、、
月単位のレコードを関連させる、という技なんですね。
電子カルテで指定日から3日前を取得する
ここまでは、月単位、年単位、
といったゆるい連携だったのですが、、、、
現在総仕上げの電子カルテに移行しています。
ここで過去履歴を閲覧しようとすると、、、、
本日から、
過去5日間の関連レコードを取得する・・○
過去日付から、
過去5日間の関連レコードを取得する・・×
という弊害が起きてきます。
日付を指定した関連レコードの作り方が、、
(再掲)今日、または指定日、今年・今月・・・・ ※前月・翌月、前年・翌年もできる
となるため、
フィールドの参照や、
日付の加工や、
ましてや引数を渡して
ケア記録.日付 = ケア記録.日付-1
なんて参照すら出来ないのです。
※自分のアプリは参照できる。
無理やり参照してみた
じゃあ出来ないのかよ、
というと出来ます。
それくらい前提や前置きが必要だからなのです。
自分のアプリを関連レコードで参照できる
というのがkintoneの強みでもあります。
これは一つの強みであり、
データベース上でこれをやると無限ループに入ったり、デッドロックが起きやすいため、
普通は出来ないのが当たり前です。
しかしこの仕組みを利用して、、、、
ケア記録アプリ
日付(日付フィールド)
に加えて、
利用者日付(文字列1行)、利用者 & DATE_FORMAT(日付,”YYYY-MM-dd”,…)
利用者日付・1日前(同)、利用者 & DATE_FORMAT(日付+(60*60*24)*1,”YYYY-MM-dd”,…)
利用者日付・2日前(同)、利用者 & DATE_FORMAT(日付+(60*60*24)*2,”YYYY-MM-dd”,…)
利用者日付・3日前(同)、利用者 & DATE_FORMAT(日付+(60*60*24)*3,”YYYY-MM-dd”,…)
とフィールドを用意しておき、
関連レコード作成時、
1日前レコードを1レコード取得。
2日前レコードを1レコード取得
3日前レコードを1レコード取得
とむりやり、1レコードずつ、取得することで、
取得することが出来ました。
RepotonUで実装
5日分を取得する、
と、これを画面で見ると、、、、
関連レコードが5つもあり(5日分)、
煩雑に見えてしまいます。
だけどこれを、
RepotonUプラグインでExcel型式にしてしまえば、、、、
普通に行のレコードとして表示される!
ように見やすくすることが出来ます♪
というわけです。
こういった裏方の見えない努力、
相当な努力、というのは、、、、
なかなかなものですし、
5日分を取得することで、がんばった!
のに、
7日分欲しい!
とか簡単に言われると、、、
いやいや大変やねんて。
とブチ切れたくなる(笑)
というわけです。
もともとは3日分しか現時点で出力できていないところを、
記録が長い時に切れてしまう問題を、
5日分にし、長く表示できるようにしたのに・・・
と思ってしまう、
というわけです。
しかし今回初めて、
こんなトリッキーなことをしました。
これが出来ると、
他の場所にも活用できそうです。
しかしながらこの5日分の記録の上に、、、
5日分のバイタル、SPO2、食事量(朝昼夕の主食・副食)
の表を作っています。
これもやろうとすると、
フィールド数が多すぎてもっと大変、、、なことになりますが、
情報提供を行う上では、
全部自動化されるわけですから、実装してしまえば、めんどくさいことは一切ありません。
だったらめんどくさいですが、、、
やります(笑)
コメントを残す