メインコンテンツまでスキップ
バージョン: 最新 (develop)

BlackSwan 概略仕様

概要

この資料の目的

BlackSwanの仕様を俯瞰で把握することを目的としたもの。DBで314テーブル、GraphQLスキーマは 1019 type、総クエリ数833個 というように、かなり規模が大きいため、抽象的な枠組みがないと、全体像の把握が難しい。そのため、アプリケーションの概略を体系化してまとめ、全体像が俯瞰で把握しやすくなるよう、この資料を作成している。

BlackSwanの全体像

BlackSwanは、高齢介護施設向けのアプリケーションで、日々の介護記録を記録できる。規模が大きいため、全体像の見通しが立てづらいが、次のように分類して理解できる。まず、大きく利用者・契約管理、介護記録の2分野に大別され、それぞれの拡張として、帳票作成や利用者状態分析(未実装)が付随している。この資料では、アプリケーションのコアとなる、利用者・契約管理と介護記録の部分を中心にまとめている。他の部分については、拡張的な機能であり、シンプルな構造となっているため、この資料では詳細の説明は行わない。

(※ こちらはあくまで概念的な区分であり、WEB版、タブレット版といった実際のアプリケーションでの分離に従っているわけではない。例えば、WEB版はこれらの分類全般にまたがっているし、タブレット版やモバイル版は介護記録の部分にほとんど特化している。)

利用者・契約アプリ

利用者(被介護者)の基本情報といったマスタデータや介護施設との契約を管理する。

(図)利用者・契約管理部分のデータ関連図 (理解のため、ある程度抽象化しているため、実際のテーブル構成とは異なる)

登場するデータ

利用者

施設利用者。被介護者。 User という名前だが、単なるデータであり、ログインユーザーでも、アプリケーションを利用するアクターでもない。

ケア情報

利用者に対する設定値のこと。予定や、1日に必要な水分量などケアに必要な情報が設定される。

事業所

入所と通所で分かれる。 入所は、通常の入所とショートステイに分かれる。 入所にはベッドが必要(利用者が宿泊するため)

契約

利用者、事業所と紐づく。同じ利用者に対して複数OKだが、契約期間が重複する契約は作れない。 入所の事業所と契約するには、ベッドを紐づける必要がある。 ベッドにも利用期間があり、ベッドの利用期間を過ぎた場合、他に割り当てられているベッドがなければ、契約期間内でも契約が失効する。

介護記録アプリ

日々の介護記録を入力、管理するもの。データのフローは、基本的に、介護記録の入力や予定の入力を受けて、まとめボードに反映する、という形になっている。

(図)介護記録アプリケーションのデータフロー

登場するデータ

ここで登場するデータは、主に以下の4分類で理解できる。

  • 記録・申し送り
  • 予定
  • 利用者の状態
  • まとめ

記録・申し送り

記録

定期的に利用者の状態や、利用者に対して実施したケアを記録したもの。 体温や血圧などの状態系は一日に何度も記録される。入浴やリハビリなど、予定のあるものは予定日に記録される。食事など、タイミング決まっているものはそのタイミングで記録される。20種類ある。

ID識別子日本語名備考
1MEAL_MEDICATION_WATER食事・服薬・水分テーブルとしては時間帯ごとに分かれている
2EXCRETION排泄
3ORAL_CARE口腔
4BATHING入浴
5CARE_FUNCTIONAL_TRAINING機能訓練(生活)
6INDIVIDUAL_CARE個別ケア
7ROUND見守り・巡回
8RECREATION_LEISUREレク・余暇時間
9ENVIRONMENTAL_MAINTENANCE環境設備
10WAKE_UP起床
11BED_TIME就寝
12TUBE_FEEDING経管栄養
13TEMPERATURE体温
14BLOOD_PRESSURE血圧・脈拍
15TREATMENT処置
16BEDSORE褥瘡
17VISIT回診・往診
18REHABILITATIONリハビリ
19MEDICAL_FUNCTIONAL_TRAINING機能訓練(医療)
20MEAL_ROUNDミールラウンド

申し送り

発生ベースで利用者の状態を記録するもの。他の従業員への連絡的な機能で、連絡ツールのような機能があるが、基本的には記録と同じようなデータと理解してよい。副作用として、利用者のステータス変更する、予定を作成することもある。43種類ある。

ケア記録系

ID識別子日本語名
1MEAL食事
2WATER水分
3MEDICATION服薬
4EXCRETION排泄
5ORAL_CARE口腔ケア
6BATHING入浴
7CARE_FUNCTIONAL_TRAINING介護機能訓練
8INDIVIDUAL_CARE個別ケア
9ROUND巡回
10ENVIRONMENTAL_MAINTENANCE環境整備
11WAKEUP_TIME起床時間
12BED_TIME就寝時間
13RECREATIONレクリエーション
14TEMPERATURE体温
15BLOOD_PRESSURE血圧
16TREATMENT処置
17BEDSORE褥瘡
18VISIT回診・往診
19REHABILITATIONリハビリ
20MEDICAL_FUNCTIONAL_TRAINING医療機能訓練

生活イベント・状態系

ID識別子日本語名
21GROOMING整容
22RESTRAINT身体拘束
23SUCTION吸引
24ADMISSION入所
25ACCIDENT事故
26MEETING面会
27HOSPITALIZATION入院
28OUTING外出
29NEAR_MISS_INCIDENTヒヤリ・ハット
30HEALTH_CONDITION健康状態
31NUTRITION_INTAKE_CONDITION摂食栄養状態
32SLEEP_CONDITION睡眠状態
33MENTAL_CONDITION精神状態
34PHYSICAL_CONDITION身体状態
35USER_INTENT本人意向

連携・管理系

ID識別子日本語名
36MEDICAL_COLLABORATION医療機関連携(受診含)
37FAMILY_FRIEND_COLLABORATION家族・知人
38EXTERNAL_COLLABORATION他事業所・行政機関
39CONFERENCEカンファレンス/会議
40NOTICE業務連絡
41DISCHARGE退所
42DISCHARGE_FROM_HOSPITAL退院
43OUTING_RETURN外出(戻り)

予定

利用者に対するケアの実施予定。

以下の2系統に分類できる。(packages/backend/src/modules/summary-board/types/summary.tsScheduleType より)

周期スケジュール

入浴、リハビリ、機能訓練、リネン交換は、特定の予定に対する機能(予定変更や未実施予定のスライド)があるため、各予定をデータとして持つ必要があるため、月初に1ヶ月分の予定データが自動生成される。

日本語名バッチサービス備考
入浴BathingRollingScheduleBatchService特定の予定を変更できる機能がある。
リハビリRehabilitationScheduleBatchService特定の予定を変更できる機能がある。
機能訓練FunctionalTrainingScheduleBatchService実施有無に応じてスライド(日数繰り越し)する仕組みがある。
特定の予定を変更できる機能がある。
リネン交換CareLinenReplacementScheduleBatchService実施有無に応じてスライド(日数繰り越し)する仕組みがある。
食事-特定の予定に対する機能がないため、設定値のみを保持
服薬-特定の予定に対する機能がないため、設定値のみを保持
下剤-特定の予定に対する機能がないため、設定値のみを保持
見守り・巡回-特定の予定に対する機能がないため、設定値のみを保持
個別ケア-特定の予定に対する機能がないため、設定値のみを保持
処置-特定の予定に対する機能がないため、設定値のみを保持
経管栄養-特定の予定に対する機能がないため、設定値のみを保持

申し送り起点スケジュール

申し送り登録時に予定が作成される。

識別子日本語名
VISIT回診・往診
GROOMING整容
MEETING面会
HOSPITALIZATION入院
DISCHARGE_FROM_HOSPITAL退院
OUTING外出
OUTING_RETURN外出(戻り)
MEDICAL_COLLABORATION医療機関連携
FAMILY_FRIEND_COLLABORATION家族・知人
EXTERNAL_COLLABORATION他事業所・行政機関

その他のスケジュール

識別子日本語名説明
ExcretionKotSchedule排泄KOT最終排便からの日数追跡(日次バッチ)
※最終排便日は、テーブルで直接管理する仕組みに移行中のため、廃止予定

まとめボード

記録や予定をまとめたもの。画面名は、まとめボード、時系列ボードなど。

情報のながれ

データが入力されて、まとめボードに反映される、というのが基本的なフロー。 イベントベースで、どうデータが連動するか把握する。

記録が作られたとき

記録が保存されると、同期的に SummaryBoardService.update() が呼ばれ、まとめボードが即時更新される。

※ すべての記録サービス(体温、血圧、食事、排泄など)が同じパターンで SummaryBoardService を呼び出す。

予定が作成・変更されたとき

ケア情報の変更と申し送りの2経路がある。いずれも最終的に SummaryBoardService.update() を呼ぶ。

例:

  • 食事時間を8時→9時に変更した場合、当日以降のまとめボードで、食事予定が9時で表示される。
  • 申し送りで往診の予定を登録した場合、予定日のまとめボードで、往診予定が表示される。

利用者のステータスが更新されたとき

ケア情報・異常値設定・申し送りの3経路がある。

例:

  • ケア情報で、経管栄養ありと登録すると、当日以降のまとめボードに反映される。
  • 異常値設定で、必要な水分量を登録すると、当日以降のまとめボードで水分量が足りない場合に警告が表示される。
  • 申し送りで、入院を登録すると、まとめボードでその利用者が入院中と表示される。

月初になったとき

※ これだけテクニカルな背景のイベント

バッチ処理で1ヶ月分の予定を一括生成する。個別で変更する機能に対応するためのテクニカルなもの。

対象の予定:

バッチサービス対象生成タイミング備考
BathingRollingScheduleBatchService入浴月次実施有無でスライドあり
RehabilitationScheduleBatchServiceリハビリ月次
FunctionalTrainingScheduleBatchService機能訓練月次
CareLinenReplacementScheduleBatchServiceリネン交換月次実施有無でスライドあり(2週間窓)
ExcretionKotScheduleBatchService排泄KOT日次最終排便からの日数を計算
※最終排便日は、テーブルで直接管理する仕組みに移行中のため、廃止予定

帳票作成

役所提出用の書類作成。基本的に、フォームに入れてexcelやPDFなどに出力するもので、構造的な複雑さはなく、シンプルな構成になっている。

(※ ExcelファイルやPDFファイルを作成する上での、技術的な複雑さは存在する。)

利用者状態分析

利用者についた記録や申し送りから、利用者のスコア(健康状態のようなもの)を算出する。 算出ロジック自体は複雑なものもあるが、データや処理のフローとしては、定期的に記録や申し送り取って来てスコアにしてスコア用テーブルに書き込む、といったシンプルな構成になっている。