Skip to content

Instantly share code, notes, and snippets.

@kawasima
Last active August 23, 2026 14:32
Show Gist options
  • Select an option

  • Save kawasima/c22e13f910f986c0dafce47b9d804fad to your computer and use it in GitHub Desktop.

Select an option

Save kawasima/c22e13f910f986c0dafce47b9d804fad to your computer and use it in GitHub Desktop.
介護報酬の算定構造(指定居宅サービス)を Souther で写したもの — 元資料: 厚生労働省「介護報酬の算定構造」令和3年4月施行 Ⅰ章 https://www.wam.go.jp/gyoseiShiryou-files/documents/2022/0322211552821/202203a.pdf
examples for kaigo.共通
// 表の各セルと、行だけが名指す値。モデル本体と分けてある。
example 記号を適用する
| "+○○単位は所定単位数に足す" : (単位数(250), 単位加算 { 単位 = 単位数(100) }) -> 単位数(350)
| "-○○単位は所定単位数から引く" : (単位数(766), 単位減算 { 単位 = 単位数(94) }) -> 単位数(672)
| "×○○/100は所定単位数に率を掛ける" : (単位数(250), 割合乗算 { 分子 = 90, 分母 = 100 }) -> 単位数(225)
| "+○○/100は所定単位数に率の分を足す" : (単位数(250), 割合加算 { 分子 = 25, 分母 = 100 }) -> 単位数(313)
| "×200/100は倍にする" : (単位数(396), 割合乗算 { 分子 = 200, 分母 = 100 }) -> 単位数(792)
| "端数は四捨五入する(0.5は上へ)" : (単位数(167), 割合乗算 { 分子 = 70, 分母 = 100 }) -> 単位数(117)
| "端数は四捨五入する(0.5未満は下へ)" : (単位数(313), 割合加算 { 分子 = 25, 分母 = 100 }) -> 単位数(391)
| "処遇改善加算の分母は1000" : (単位数(10000), 割合加算 { 分子 = 137, 分母 = 1000 }) -> 単位数(11370)
| "所定単位数が0なら率を掛けても0" : (単位数(0), 割合乗算 { 分子 = 90, 分母 = 100 }) -> 単位数(0)
example 記号を順に適用する
| "注が1つもなければ基本部分のまま" : (単位数(396), []) -> 単位数(396)
| "基本部分が0なら注を重ねても0"
: (単位数(0), [ 割合乗算 { 分子 = 90, 分母 = 100 } ]) -> 単位数(0)
| "2人の訪問介護員等による場合のあと夜間"
: (単位数(396), [ 割合乗算 { 分子 = 200, 分母 = 100 }
, 割合加算 { 分子 = 25, 分母 = 100 } ]) -> 単位数(990)
| "順序が変わると答えも変わる"
: (単位数(396), [ 割合加算 { 分子 = 25, 分母 = 100 }
, 割合乗算 { 分子 = 200, 分母 = 100 } ]) -> 単位数(990)
| "+○○単位の記号を並びに入れる"
: (単位数(396), [ 単位加算 { 単位 = 単位数(100) } ]) -> 単位数(496)
| "-○○単位の記号を並びに入れる"
: (単位数(396), [ 単位減算 { 単位 = 単位数(94) } ]) -> 単位数(302)
| "加算と減算と率を左から順に重ねる"
: (単位数(396), [ 単位加算 { 単位 = 単位数(100) }
, 割合乗算 { 分子 = 90, 分母 = 100 }
, 単位減算 { 単位 = 単位数(46) } ]) -> 単位数(400)
| "特別地域と中山間地域を重ねる"
: (単位数(1260), [ 割合加算 { 分子 = 15, 分母 = 100 }
, 割合加算 { 分子 = 5, 分母 = 100 } ]) -> 単位数(1521)
module kaigo.共通 exposing
( 単位数, 算定記号, 単位加算, 単位減算, 割合乗算, 割合加算
, 記号を適用する, 記号を順に適用する
, 要介護度, 要介護1, 要介護2, 要介護3, 要介護4, 要介護5
)
// 厚生労働省「介護報酬の算定構造」(令和3年4月施行)
// https://www.wam.go.jp/gyoseiShiryou-files/documents/2022/0322211552821/202203a.pdf
// の Ⅰ 指定居宅サービス介護給付費単位数の算定構造(介護1〜介護15ページ)を写したもの。
//
// このモジュールには、どのサービスにも共通する算定の仕組みだけを置く。
// サービスごとの単位数は kaigo.訪問介護 以下の各モジュールにある。
data 単位数 = Int
invariant value >= 0
// 基本部分が要介護度ごとに分かれる表(通所介護費、短期入所生活介護費など)で使う。
data 要介護度 = 要介護1 | 要介護2 | 要介護3 | 要介護4 | 要介護5
// 資料の脚注1「単位数算定記号の説明」。表に出てくる記号はこの4つだけで、
// それぞれ所定単位数に対する計算が決まっている。
//
// +○○単位 ⇒ 所定単位数 + ○○単位
// -○○単位 ⇒ 所定単位数 - ○○単位
// ×○○/100 ⇒ 所定単位数 × ○○/100
// +○○/100 ⇒ 所定単位数 + 所定単位数×○○/100
//
// 分母は表では 100 だが、介護職員処遇改善加算だけ 1000 なので、分母も持つ。
data 単位加算 = { 単位: 単位数 }
data 単位減算 = { 単位: 単位数 }
data 割合乗算 = { 分子: Int, 分母: Int }
invariant 分子は0以上 = 分子 >= 0
invariant 分母は正 = 分母 > 0
data 割合加算 = { 分子: Int, 分母: Int }
invariant 分子は0以上 = 分子 >= 0
invariant 分母は正 = 分母 > 0
data 算定記号 = 単位加算 | 単位減算 | 割合乗算 | 割合加算
// 単位数に端数が出たときの扱いは算定構造表には書かれていない。
// 出典は「指定居宅サービスに要する費用の額の算定に関する基準(訪問通所サービス、
// 居宅療養管理指導及び福祉用具貸与に係る部分)及び指定居宅介護支援に要する費用の額の
// 算定に関する基準の制定に伴う実施上の留意事項について」(平成12年3月1日老企第36号)
// 第一の2で、1単位未満の端数は四捨五入する。
let 四捨五入 (被除数: Int, 除数: Int): Int = {
let 商 = Decimal.divide(Decimal.fromInt(被除数), Decimal.fromInt(除数), 0, HALF_UP)
match 商 with
| Decimal as d -> Decimal.toInt(HALF_UP, d)
| DivisionByZero ->
unreachable "除数は割合乗算・割合加算の分母で、正であることが型に書いてある"
}
behavior 記号を適用する : (所定単位数: 単位数, 記号: 算定記号) -> 単位数
constructs 単位数
let 記号を適用する (所定単位数, 記号) =
match 記号 with
| 単位加算 as k -> 所定単位数 + k.単位
| 単位減算 as k -> 所定単位数 - k.単位
| 割合乗算 as k -> 単位数(四捨五入(所定単位数.value * k.分子, k.分母))
| 割合加算 as k -> 所定単位数 + 単位数(四捨五入(所定単位数.value * k.分子, k.分母))
// 表の注の列は左から右へ並んでいる。適用もその順で行う。
behavior 記号を順に適用する : (基本部分: 単位数, 記号の並び: List<算定記号>) -> 単位数
let 記号を順に適用する (基本部分, 記号の並び) =
List.fold((積み上げ, 記号) -> 記号を適用する(積み上げ, 記号), 基本部分, 記号の並び)
examples for kaigo.居宅療養管理指導
// 表の各セルと、行だけが名指す値。モデル本体と分けてある。
example 基本部分の単位数を求める
| "医師(Ⅰ)単一建物居住者1人"
: (医師が行う場合 { 指導費区分 = 居宅療養管理指導費Ⅰ, 単一建物居住者 = 一人 }) -> 単位数(514)
| "医師(Ⅰ)2人以上9人以下"
: (医師が行う場合 { 指導費区分 = 居宅療養管理指導費Ⅰ, 単一建物居住者 = 二人以上九人以下 }) -> 単位数(486)
| "医師(Ⅰ)それ以外"
: (医師が行う場合 { 指導費区分 = 居宅療養管理指導費Ⅰ, 単一建物居住者 = それ以外 }) -> 単位数(445)
| "医師(Ⅱ)単一建物居住者1人"
: (医師が行う場合 { 指導費区分 = 居宅療養管理指導費Ⅱ, 単一建物居住者 = 一人 }) -> 単位数(298)
| "医師(Ⅱ)2人以上9人以下"
: (医師が行う場合 { 指導費区分 = 居宅療養管理指導費Ⅱ, 単一建物居住者 = 二人以上九人以下 }) -> 単位数(286)
| "医師(Ⅱ)それ以外"
: (医師が行う場合 { 指導費区分 = 居宅療養管理指導費Ⅱ, 単一建物居住者 = それ以外 }) -> 単位数(259)
| "歯科医師 1人" : (歯科医師が行う場合 { 単一建物居住者 = 一人 }) -> 単位数(516)
| "歯科医師 2人以上9人以下" : (歯科医師が行う場合 { 単一建物居住者 = 二人以上九人以下 }) -> 単位数(486)
| "歯科医師 それ以外" : (歯科医師が行う場合 { 単一建物居住者 = それ以外 }) -> 単位数(440)
| "薬剤師(病院又は診療所)1人"
: (薬剤師が行う場合 { 区分 = 病院又は診療所の薬剤師 { 単一建物居住者 = 一人 } }) -> 単位数(565)
| "薬剤師(病院又は診療所)2人以上9人以下"
: (薬剤師が行う場合 { 区分 = 病院又は診療所の薬剤師 { 単一建物居住者 = 二人以上九人以下 } }) -> 単位数(416)
| "薬剤師(病院又は診療所)それ以外"
: (薬剤師が行う場合 { 区分 = 病院又は診療所の薬剤師 { 単一建物居住者 = それ以外 } }) -> 単位数(379)
| "薬剤師(薬局)1人"
: (薬剤師が行う場合 { 区分 = 薬局の薬剤師 { 単一建物居住者 = 一人 } }) -> 単位数(517)
| "薬剤師(薬局)2人以上9人以下"
: (薬剤師が行う場合 { 区分 = 薬局の薬剤師 { 単一建物居住者 = 二人以上九人以下 } }) -> 単位数(378)
| "薬剤師(薬局)それ以外"
: (薬剤師が行う場合 { 区分 = 薬局の薬剤師 { 単一建物居住者 = それ以外 } }) -> 単位数(341)
| "薬剤師(情報通信機器)は45単位"
: (薬剤師が行う場合 { 区分 = 情報通信機器を用いて行う場合 }) -> 単位数(45)
| "管理栄養士(当該事業所)1人"
: (管理栄養士が行う場合 { 区分 = 当該事業所の管理栄養士, 単一建物居住者 = 一人 }) -> 単位数(544)
| "管理栄養士(当該事業所)2人以上9人以下"
: (管理栄養士が行う場合 { 区分 = 当該事業所の管理栄養士, 単一建物居住者 = 二人以上九人以下 }) -> 単位数(486)
| "管理栄養士(当該事業所)それ以外"
: (管理栄養士が行う場合 { 区分 = 当該事業所の管理栄養士, 単一建物居住者 = それ以外 }) -> 単位数(443)
| "管理栄養士(当該事業所以外)1人"
: (管理栄養士が行う場合 { 区分 = 当該事業所以外の管理栄養士, 単一建物居住者 = 一人 }) -> 単位数(524)
| "管理栄養士(当該事業所以外)2人以上9人以下"
: (管理栄養士が行う場合 { 区分 = 当該事業所以外の管理栄養士, 単一建物居住者 = 二人以上九人以下 }) -> 単位数(466)
| "管理栄養士(当該事業所以外)それ以外"
: (管理栄養士が行う場合 { 区分 = 当該事業所以外の管理栄養士, 単一建物居住者 = それ以外 }) -> 単位数(423)
| "歯科衛生士等 1人" : (歯科衛生士等が行う場合 { 単一建物居住者 = 一人 }) -> 単位数(361)
| "歯科衛生士等 2人以上9人以下" : (歯科衛生士等が行う場合 { 単一建物居住者 = 二人以上九人以下 }) -> 単位数(325)
| "歯科衛生士等 それ以外" : (歯科衛生士等が行う場合 { 単一建物居住者 = それ以外 }) -> 単位数(294)
// ---------------------------------------------------------------- 注の各列
let 注なし =
算定条件
{ 特別な薬剤の薬学的管理指導 = 薬学的管理指導を行わない
, 特別地域居宅療養管理指導加算 = 特別地域なし
, 中山間地域等における小規模事業所加算 = 小規模事業所なし
, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住なし
}
let 医師Ⅰの一人 = 医師が行う場合 { 指導費区分 = 居宅療養管理指導費Ⅰ, 単一建物居住者 = 一人 }
example 注の記号を並べる
| "注が一つもなければ何も並ばない" : (注なし) -> []
| "並ぶ順は表の列の順"
: (算定条件
{ ...注なし
, 特別な薬剤の薬学的管理指導 = 薬学的管理指導を行った
, 特別地域居宅療養管理指導加算 = 特別地域あり
})
-> [ 単位加算 { 単位 = 単位数(100) }
, 割合加算 { 分子 = 15, 分母 = 100 }
]
example 単位数を求める
| "注が付かなければ基本部分のまま" : (医師Ⅰの一人, 注なし) -> 単位数(514)
| "特別地域居宅療養管理指導加算は+15/100"
: (医師Ⅰの一人, 算定条件 { ...注なし, 特別地域居宅療養管理指導加算 = 特別地域あり }) -> 単位数(591)
| "中山間地域等における小規模事業所加算は+10/100"
: (医師Ⅰの一人, 算定条件 { ...注なし, 中山間地域等における小規模事業所加算 = 小規模事業所あり })
-> 単位数(565)
| "中山間地域等に居住する者へのサービス提供加算は+5/100"
: (医師Ⅰの一人, 算定条件 { ...注なし, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり })
-> 単位数(540)
| "薬剤師に特別な薬剤の薬学的管理指導を行うと+100単位"
: ( 薬剤師が行う場合 { 区分 = 薬局の薬剤師 { 単一建物居住者 = 一人 } }
, 算定条件 { ...注なし, 特別な薬剤の薬学的管理指導 = 薬学的管理指導を行った } )
-> 単位数(617)
| "+100単位のあとに率が掛かる"
: ( 薬剤師が行う場合 { 区分 = 薬局の薬剤師 { 単一建物居住者 = 一人 } }
, 算定条件
{ ...注なし
, 特別な薬剤の薬学的管理指導 = 薬学的管理指導を行った
, 特別地域居宅療養管理指導加算 = 特別地域あり
} )
-> 単位数(710)
| "歯科医師も同じ列を通る"
: ( 歯科医師が行う場合 { 単一建物居住者 = 一人 }
, 算定条件 { ...注なし, 特別地域居宅療養管理指導加算 = 特別地域あり } )
-> 単位数(593)
| "管理栄養士も同じ列を通る"
: ( 管理栄養士が行う場合 { 区分 = 当該事業所の管理栄養士, 単一建物居住者 = 一人 }
, 算定条件 { ...注なし, 中山間地域等における小規模事業所加算 = 小規模事業所あり } )
-> 単位数(598)
| "歯科衛生士等も同じ列を通る"
: ( 歯科衛生士等が行う場合 { 単一建物居住者 = それ以外 }
, 算定条件 { ...注なし, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり } )
-> 単位数(309)
// 表の列を1つずつ立てて、その列がどの記号になるかを見る。
// `souther examples` が「no row is in ...」で名指ししてきたぶん。
example 注の記号を並べる
| "中山間地域等における小規模事業所加算 = 小規模事業所あり"
: (算定条件 { ...注なし, 中山間地域等における小規模事業所加算 = 小規模事業所あり })
-> [割合加算 { 分子 = 10, 分母 = 100 }]
| "中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり"
: (算定条件 { ...注なし, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり })
-> [割合加算 { 分子 = 5, 分母 = 100 }]
module kaigo.居宅療養管理指導 exposing
( 単一建物居住者, 一人, 二人以上九人以下, それ以外
, 医師が行う場合, 医師の指導費区分, 居宅療養管理指導費Ⅰ, 居宅療養管理指導費Ⅱ
, 歯科医師が行う場合
, 薬剤師が行う場合, 薬剤師の区分, 病院又は診療所の薬剤師, 薬局の薬剤師, 情報通信機器を用いて行う場合
, 管理栄養士が行う場合, 管理栄養士の区分, 当該事業所の管理栄養士, 当該事業所以外の管理栄養士
, 歯科衛生士等が行う場合
, 居宅療養管理指導の区分, 基本部分の単位数を求める
, 特別な薬剤の薬学的管理指導, 薬学的管理指導を行った, 薬学的管理指導を行わない
, 特別地域居宅療養管理指導加算, 特別地域あり, 特別地域なし
, 中山間地域等における小規模事業所加算, 小規模事業所あり, 小規模事業所なし
, 中山間地域等に居住する者へのサービス提供加算, 中山間地域居住あり, 中山間地域居住なし
, 算定条件, 注の記号を並べる, 単位数を求める
)
// 「介護報酬の算定構造」Ⅰ-5 居宅療養管理指導費(介護4ページ)。
// https://www.wam.go.jp/gyoseiShiryou-files/documents/2022/0322211552821/202203a.pdf
//
// 基本部分は「誰が行うか」と「単一建物居住者が何人か」の2軸で単位数が決まる。
// 表の(一)(二)(三)はどの行でも同じ意味なので、その3つを1つの型にしてある。
import kaigo.共通
( 単位数, 算定記号, 単位加算, 割合加算
, 記号を順に適用する
)
// ---------------------------------------------------------------- 基本部分
// (一)単一建物居住者1人に対して行う場合
// (二)単一建物居住者2人以上9人以下に対して行う場合
// (三)(一)及び(二)以外の場合
data 単一建物居住者 = 一人 | 二人以上九人以下 | それ以外
// イ 医師が行う場合(月2回を限度)
// (1) 居宅療養管理指導費(Ⅰ)((2)以外)
// (2) 居宅療養管理指導費(Ⅱ)(在宅時医学総合管理料又は特定施設入居時等医学総合管理料を算定する場合)
data 医師の指導費区分 = 居宅療養管理指導費Ⅰ | 居宅療養管理指導費Ⅱ
data 医師が行う場合 = { 指導費区分: 医師の指導費区分, 単一建物居住者: 単一建物居住者 }
// ロ 歯科医師が行う場合(月2回を限度)
data 歯科医師が行う場合 = { 単一建物居住者: 単一建物居住者 }
// ハ 薬剤師が行う場合
// (1) 病院又は診療所の薬剤師が行う場合(月2回を限度)
// (2) 薬局の薬剤師の場合(月4回を限度)
// (四) 情報通信機器を用いて行う場合(月1回を限度)
data 病院又は診療所の薬剤師 = { 単一建物居住者: 単一建物居住者 }
data 薬局の薬剤師 = { 単一建物居住者: 単一建物居住者 }
data 薬剤師の区分 = 病院又は診療所の薬剤師 | 薬局の薬剤師 | 情報通信機器を用いて行う場合
data 薬剤師が行う場合 = { 区分: 薬剤師の区分 }
// ニ 管理栄養士が行う場合(月2回を限度)
// (1) 当該指定居宅療養管理指導事業所の管理栄養士が行った場合
// (2) 当該指定居宅療養管理指導事業所以外の管理栄養士が行った場合
data 管理栄養士の区分 = 当該事業所の管理栄養士 | 当該事業所以外の管理栄養士
data 管理栄養士が行う場合 = { 区分: 管理栄養士の区分, 単一建物居住者: 単一建物居住者 }
// ホ 歯科衛生士等が行う場合(月4回を限度)
data 歯科衛生士等が行う場合 = { 単一建物居住者: 単一建物居住者 }
data 居宅療養管理指導の区分 =
医師が行う場合
| 歯科医師が行う場合
| 薬剤師が行う場合
| 管理栄養士が行う場合
| 歯科衛生士等が行う場合
behavior 基本部分の単位数を求める : (区分: 居宅療養管理指導の区分) -> 単位数
constructs 単位数
// イ 医師 (Ⅰ)(一)514 (二)486 (三)445 / (Ⅱ)(一)298 (二)286 (三)259
// ロ 歯科医師 (1)516 (2)486 (3)440
// ハ 薬剤師 (1)病院又は診療所 (一)565 (二)416 (三)379
// (2)薬局 (一)517 (二)378 (三)341 (四)情報通信機器 45
// ニ 管理栄養士 (1)当該事業所 (一)544 (二)486 (三)443
// (2)それ以外 (一)524 (二)466 (三)423
// ホ 歯科衛生士等 (1)361 (2)325 (3)294
let 基本部分の単位数を求める (区分) =
match 区分 with
| 医師が行う場合 as 医師 ->
match 医師.指導費区分 with
| 居宅療養管理指導費Ⅰ ->
match 医師.単一建物居住者 with
| 一人 -> 単位数(514)
| 二人以上九人以下 -> 単位数(486)
| それ以外 -> 単位数(445)
| 居宅療養管理指導費Ⅱ ->
match 医師.単一建物居住者 with
| 一人 -> 単位数(298)
| 二人以上九人以下 -> 単位数(286)
| それ以外 -> 単位数(259)
| 歯科医師が行う場合 as 歯科医師 ->
match 歯科医師.単一建物居住者 with
| 一人 -> 単位数(516)
| 二人以上九人以下 -> 単位数(486)
| それ以外 -> 単位数(440)
| 薬剤師が行う場合 as 薬剤師 ->
match 薬剤師.区分 with
| 病院又は診療所の薬剤師 as 病院 ->
match 病院.単一建物居住者 with
| 一人 -> 単位数(565)
| 二人以上九人以下 -> 単位数(416)
| それ以外 -> 単位数(379)
| 薬局の薬剤師 as 薬局 ->
match 薬局.単一建物居住者 with
| 一人 -> 単位数(517)
| 二人以上九人以下 -> 単位数(378)
| それ以外 -> 単位数(341)
| 情報通信機器を用いて行う場合 -> 単位数(45)
| 管理栄養士が行う場合 as 栄養士 ->
match 栄養士.区分 with
| 当該事業所の管理栄養士 ->
match 栄養士.単一建物居住者 with
| 一人 -> 単位数(544)
| 二人以上九人以下 -> 単位数(486)
| それ以外 -> 単位数(443)
| 当該事業所以外の管理栄養士 ->
match 栄養士.単一建物居住者 with
| 一人 -> 単位数(524)
| 二人以上九人以下 -> 単位数(466)
| それ以外 -> 単位数(423)
| 歯科衛生士等が行う場合 as 衛生士 ->
match 衛生士.単一建物居住者 with
| 一人 -> 単位数(361)
| 二人以上九人以下 -> 単位数(325)
| それ以外 -> 単位数(294)
// 注 特別な薬剤の投薬が行われている在宅の利用者又は居住系施設入居者等に対して、
// 当該薬剤の使用に関する必要な薬学的管理指導を行った場合 +100単位
// (表ではハ 薬剤師が行う場合の行にだけ置かれている)
data 特別な薬剤の薬学的管理指導 = 薬学的管理指導を行った | 薬学的管理指導を行わない
// 注 特別地域居宅療養管理指導加算 +15/100
data 特別地域居宅療養管理指導加算 = 特別地域あり | 特別地域なし
// 注 中山間地域等における小規模事業所加算 +10/100
data 中山間地域等における小規模事業所加算 = 小規模事業所あり | 小規模事業所なし
// 注 中山間地域等に居住する者へのサービス提供加算 +5/100
data 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり | 中山間地域居住なし
data 算定条件 =
{ 特別な薬剤の薬学的管理指導: 特別な薬剤の薬学的管理指導
, 特別地域居宅療養管理指導加算: 特別地域居宅療養管理指導加算
, 中山間地域等における小規模事業所加算: 中山間地域等における小規模事業所加算
, 中山間地域等に居住する者へのサービス提供加算: 中山間地域等に居住する者へのサービス提供加算
}
behavior 注の記号を並べる : (条件: 算定条件) -> List<算定記号>
constructs 単位数, 単位加算, 割合加算
let 注の記号を並べる (条件) =
(match 条件.特別な薬剤の薬学的管理指導 with
| 薬学的管理指導を行った -> [単位加算 { 単位 = 単位数(100) }]
| 薬学的管理指導を行わない -> [])
++ (match 条件.特別地域居宅療養管理指導加算 with
| 特別地域あり -> [割合加算 { 分子 = 15, 分母 = 100 }]
| 特別地域なし -> [])
++ (match 条件.中山間地域等における小規模事業所加算 with
| 小規模事業所あり -> [割合加算 { 分子 = 10, 分母 = 100 }]
| 小規模事業所なし -> [])
++ (match 条件.中山間地域等に居住する者へのサービス提供加算 with
| 中山間地域居住あり -> [割合加算 { 分子 = 5, 分母 = 100 }]
| 中山間地域居住なし -> [])
behavior 単位数を求める : (区分: 居宅療養管理指導の区分, 条件: 算定条件) -> 単位数
let 単位数を求める (区分, 条件) =
記号を順に適用する(基本部分の単位数を求める(区分), 注の記号を並べる(条件))
examples for kaigo.支給限度
// 表の各セルと、行だけが名指す値。モデル本体と分けてある。
example 区分支給限度基準額を求める
| "要介護1は16,765単位" : (要介護1) -> 単位数(16765)
| "要介護2は19,705単位" : (要介護2) -> 単位数(19705)
| "要介護3は27,048単位" : (要介護3) -> 単位数(27048)
| "要介護4は30,938単位" : (要介護4) -> 単位数(30938)
| "要介護5は36,217単位" : (要介護5) -> 単位数(36217)
let 訪問介護三十分以上一時間未満 =
算定項目
{ 名称 = "訪問介護費 イ 身体介護(3)"
, 算定した単位数 = 単位数(396)
, 限度額管理に算入する単位数 = 単位数(396)
, 限度額管理 = 管理の対象
}
let 特別地域訪問介護加算 =
算定項目
{ 名称 = "特別地域訪問介護加算"
, 算定した単位数 = 単位数(59)
, 限度額管理に算入する単位数 = 単位数(59)
, 限度額管理 = 管理の対象外
}
// 同一建物減算を適用したときは、減算前の単位数を算入する。
let 同一建物減算を適用した訪問介護 =
算定項目
{ 名称 = "訪問介護費 イ 身体介護(3)(同一建物20人以上)"
, 算定した単位数 = 単位数(356)
, 限度額管理に算入する単位数 = 単位数(396)
, 限度額管理 = 管理の対象
}
// 単位数が0の項目。境界(0単位)を並びの要素として通す。
let 単位数が0の算定項目 =
算定項目
{ 名称 = "算定したが0単位になった項目"
, 算定した単位数 = 単位数(0)
, 限度額管理に算入する単位数 = 単位数(0)
, 限度額管理 = 管理の対象
}
example 限度額管理対象単位数を求める
| "0単位の項目が混ざっても合計は変わらない"
: ([単位数が0の算定項目, 訪問介護三十分以上一時間未満]) -> 単位数(396)
| "1件もなければ0" : ([]) -> 単位数(0)
| "対象の項目だけを足す"
: ([訪問介護三十分以上一時間未満, 特別地域訪問介護加算]) -> 単位数(396)
| "対象外だけなら0"
: ([特別地域訪問介護加算]) -> 単位数(0)
| "同一建物減算を適用した場合は減算前の単位数を算入する"
: ([同一建物減算を適用した訪問介護]) -> 単位数(396)
| "対象の項目を重ねる"
: ([訪問介護三十分以上一時間未満, 訪問介護三十分以上一時間未満, 特別地域訪問介護加算])
-> 単位数(792)
example 限度を判定する
| "0単位は限度内" : (単位数(0), 要介護1) -> 限度内
| "限度額ちょうどは限度内" : (単位数(16765), 要介護1) -> 限度内
| "限度額を1単位超えると限度超過" : (単位数(16766), 要介護1)
-> 限度超過 { 超過単位数 = 単位数(1) }
| "限度額の1単位手前は限度内" : (単位数(16764), 要介護1) -> 限度内
| "要介護5の限度額ちょうど" : (単位数(36217), 要介護5) -> 限度内
| "要介護5で1,000単位超過" : (単位数(37217), 要介護5)
-> 限度超過 { 超過単位数 = 単位数(1000) }
| "要介護2の限度額を超える" : (単位数(20000), 要介護2)
-> 限度超過 { 超過単位数 = 単位数(295) }
| "要介護3は27,048単位まで限度内" : (単位数(27048), 要介護3) -> 限度内
| "要介護4は30,938単位まで限度内" : (単位数(30938), 要介護4) -> 限度内
module kaigo.支給限度 exposing
( 区分支給限度基準額を求める
, 限度額管理, 管理の対象, 管理の対象外
, 算定項目, 限度額管理対象単位数を求める
, 限度の判定, 限度内, 限度超過, 限度を判定する
)
// 元資料: 厚生労働省「介護報酬の算定構造」(令和3年4月施行)
// https://www.wam.go.jp/gyoseiShiryou-files/documents/2022/0322211552821/202203a.pdf
//
// 区分支給限度基準額は算定構造表には書かれていない。表が言っているのは
// 「どの算定項目が支給限度額管理の対象外か」(点線の枠)と、算入のしかたの但し書きだけで、
// 額そのものは別の告示にある。
//
// 額の出典は「厚生労働大臣が定める一月当たりの訪問通所サービス及び短期入所サービスの
// 区分支給限度基準額」(平成12年2月10日厚生省告示第33号)。ここに写したのは
// 令和元年10月1日から適用されている単位数。
//
// 算定構造表のⅠ章に出てくるサービスのうち、居宅療養管理指導費と特定施設入居者生活介護費は
// 区分支給限度基準額の対象外のサービスで、この計算には入らない。ただし特定施設入居者生活
// 介護費の表には「※ 短期利用特定施設入居者生活介護は、区分支給限度基準額に含まれる。」と
// 書かれている。
import kaigo.共通 ( 単位数, 要介護度, 要介護1, 要介護2, 要介護3, 要介護4, 要介護5 )
behavior 区分支給限度基準額を求める : (要介護度: 要介護度) -> 単位数
constructs 単位数
let 区分支給限度基準額を求める (要介護度) =
match 要介護度 with
| 要介護1 -> 単位数(16765)
| 要介護2 -> 単位数(19705)
| 要介護3 -> 単位数(27048)
| 要介護4 -> 単位数(30938)
| 要介護5 -> 単位数(36217)
// 表の点線の枠。どのサービスの表にも同じ凡例が付いている。
// 「…は、支給限度額管理の対象外の算定項目」
// 対象外になるのは、どの表でもだいたい次の顔ぶれ。
// 特別地域○○加算/中山間地域等における小規模事業所加算/
// 中山間地域等に居住する者へのサービス提供加算/サービス提供体制強化加算/
// 介護職員処遇改善加算/介護職員等特定処遇改善加算/特定診療費・特別療養費・緊急時施設療養費
data 限度額管理 = 管理の対象 | 管理の対象外
// 1つの算定項目は、算定した単位数と、それが限度額管理の対象かどうかを持つ。
//
// 限度額管理に算入する単位数は、算定した単位数と一致するとは限らない。表の但し書きが
// 2つの例外を書いている。
// ・「事業所と同一建物の利用者又はこれ以外の同一建物の利用者20人以上にサービスを行う場合」を
// 適用する場合は、支給限度基準額の算定の際、当該減算前の単位数を算入
// ・通所介護費で「ロ又はハを算定する場合は、支給限度基準額の算定の際、イの単位数を算入」
// どちらも「算定した単位数」と「算入する単位数」が別だと言っている。だから算入する単位数を
// 項目の側に持たせる。
data 算定項目 =
{ 名称: String
, 算定した単位数: 単位数
, 限度額管理に算入する単位数: 単位数
, 限度額管理: 限度額管理
}
behavior 限度額管理対象単位数を求める : (算定項目の並び: List<算定項目>) -> 単位数
constructs 単位数
let 限度額管理対象単位数を求める (算定項目の並び) =
単位数(List.sum(List.map(
項目 ->
match 項目.限度額管理 with
| 管理の対象 -> 項目.限度額管理に算入する単位数.value
| 管理の対象外 -> 0,
算定項目の並び)))
data 限度超過 = { 超過単位数: 単位数 }
data 限度の判定 = 限度内 | 限度超過
behavior 限度を判定する : (限度額管理対象単位数: 単位数, 要介護度: 要介護度) -> 限度の判定
constructs 限度超過, 単位数
let 限度を判定する (限度額管理対象単位数, 要介護度) = {
let 限度額 = 区分支給限度基準額を求める(要介護度)
if 限度額管理対象単位数.value <= 限度額.value
then 限度内
else 限度超過 { 超過単位数 = 単位数(限度額管理対象単位数.value - 限度額.value) }
}
examples for kaigo.特定施設入居者生活介護
// 表の各セルと、行だけが名指す値。モデル本体と分けてある。
example 特定施設入居者生活介護費
| "要介護1は538単位" : (要介護1) -> 単位数(538)
| "要介護2は604単位" : (要介護2) -> 単位数(604)
| "要介護3は674単位" : (要介護3) -> 単位数(674)
| "要介護4は738単位" : (要介護4) -> 単位数(738)
| "要介護5は807単位" : (要介護5) -> 単位数(807)
example 短期利用特定施設入居者生活介護費
| "要介護1は538単位" : (要介護1) -> 単位数(538)
| "要介護2は604単位" : (要介護2) -> 単位数(604)
| "要介護3は674単位" : (要介護3) -> 単位数(674)
| "要介護4は738単位" : (要介護4) -> 単位数(738)
| "要介護5は807単位" : (要介護5) -> 単位数(807)
// ---------------------------------------------------------------- 注の各列
let 注なし =
算定条件
{ 看護介護職員の員数 = 基準を満たす
, 身体拘束廃止 = 実施している
, 入居継続支援加算 = 入居継続支援なし
, 生活機能向上連携加算 = 生活機能向上連携加算なし
, 個別機能訓練加算 = 個別機能訓練加算なし
, ADL維持等加算 = ADL維持等加算なし
, 夜間看護体制加算 = 夜間看護体制なし
, 若年性認知症入居者受入加算 = 若年性認知症受入なし
, 医療機関連携加算 = 医療機関連携なし
, 口腔衛生管理体制加算 = 口腔衛生管理体制なし
, 口腔栄養スクリーニング加算 = 口腔栄養スクリーニングなし
, 科学的介護推進体制加算 = 科学的介護推進体制なし
}
example 注の記号を並べる
| "注が一つもなければ何も並ばない" : (要介護3, 注なし) -> []
| "身体拘束廃止未実施減算は要介護度で単位数が変わる(要介護1)"
: (要介護1, 算定条件 { ...注なし, 身体拘束廃止 = 未実施である }) -> [単位減算 { 単位 = 単位数(54) }]
| "要介護2は-60単位"
: (要介護2, 算定条件 { ...注なし, 身体拘束廃止 = 未実施である }) -> [単位減算 { 単位 = 単位数(60) }]
| "要介護3は-67単位"
: (要介護3, 算定条件 { ...注なし, 身体拘束廃止 = 未実施である }) -> [単位減算 { 単位 = 単位数(67) }]
| "要介護4は-74単位"
: (要介護4, 算定条件 { ...注なし, 身体拘束廃止 = 未実施である }) -> [単位減算 { 単位 = 単位数(74) }]
| "要介護5は-81単位"
: (要介護5, 算定条件 { ...注なし, 身体拘束廃止 = 未実施である }) -> [単位減算 { 単位 = 単位数(81) }]
| "並ぶ順は表の列の順"
: ( 要介護3
, 算定条件
{ ...注なし
, 看護介護職員の員数 = 基準に満たない
, 身体拘束廃止 = 未実施である
, 入居継続支援加算 = 入居継続支援加算Ⅰ
, 科学的介護推進体制加算 = 科学的介護推進体制あり
} )
-> [ 割合乗算 { 分子 = 70, 分母 = 100 }
, 単位減算 { 単位 = 単位数(67) }
, 単位加算 { 単位 = 単位数(36) }
, 単位加算 { 単位 = 単位数(40) }
]
example 単位数を求める
| "注が付かなければ基本部分のまま" : (要介護3, 注なし) -> 単位数(674)
| "看護・介護職員の員数が基準に満たない場合は×70/100"
: (要介護3, 算定条件 { ...注なし, 看護介護職員の員数 = 基準に満たない }) -> 単位数(472)
| "身体拘束廃止未実施減算は要介護3で-67単位"
: (要介護3, 算定条件 { ...注なし, 身体拘束廃止 = 未実施である }) -> 単位数(607)
| "入居継続支援加算(Ⅰ)は+36単位"
: (要介護3, 算定条件 { ...注なし, 入居継続支援加算 = 入居継続支援加算Ⅰ }) -> 単位数(710)
| "入居継続支援加算(Ⅱ)は+22単位"
: (要介護3, 算定条件 { ...注なし, 入居継続支援加算 = 入居継続支援加算Ⅱ }) -> 単位数(696)
| "生活機能向上連携加算(Ⅰ)は+100単位"
: (要介護3, 算定条件 { ...注なし, 生活機能向上連携加算 = 生活機能向上連携加算Ⅰ }) -> 単位数(774)
| "生活機能向上連携加算(Ⅱ)は+200単位"
: (要介護3, 算定条件 { ...注なし, 生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算なし })
-> 単位数(874)
| "個別機能訓練加算を算定していれば(Ⅱ)は+100単位"
: ( 要介護3
, 算定条件
{ ...注なし
, 生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算あり
, 個別機能訓練加算 = 個別機能訓練加算Ⅰ
} )
-> 単位数(786)
| "個別機能訓練加算(Ⅰ)は+12単位"
: (要介護3, 算定条件 { ...注なし, 個別機能訓練加算 = 個別機能訓練加算Ⅰ }) -> 単位数(686)
| "個別機能訓練加算(Ⅱ)は+20単位"
: (要介護3, 算定条件 { ...注なし, 個別機能訓練加算 = 個別機能訓練加算Ⅱ }) -> 単位数(694)
| "ADL維持等加算(Ⅰ)は+30単位"
: (要介護3, 算定条件 { ...注なし, ADL維持等加算 = ADL維持等加算Ⅰ }) -> 単位数(704)
| "ADL維持等加算(Ⅱ)は+60単位"
: (要介護3, 算定条件 { ...注なし, ADL維持等加算 = ADL維持等加算Ⅱ }) -> 単位数(734)
| "夜間看護体制加算は+10単位"
: (要介護3, 算定条件 { ...注なし, 夜間看護体制加算 = 夜間看護体制あり }) -> 単位数(684)
| "若年性認知症入居者受入加算は+120単位"
: (要介護3, 算定条件 { ...注なし, 若年性認知症入居者受入加算 = 若年性認知症受入あり }) -> 単位数(794)
| "医療機関連携加算は+80単位"
: (要介護3, 算定条件 { ...注なし, 医療機関連携加算 = 医療機関連携あり }) -> 単位数(754)
| "口腔衛生管理体制加算は+30単位"
: (要介護3, 算定条件 { ...注なし, 口腔衛生管理体制加算 = 口腔衛生管理体制あり }) -> 単位数(704)
| "口腔・栄養スクリーニング加算は+20単位"
: (要介護3, 算定条件 { ...注なし, 口腔栄養スクリーニング加算 = 口腔栄養スクリーニングあり }) -> 単位数(694)
| "科学的介護推進体制加算は+40単位"
: (要介護3, 算定条件 { ...注なし, 科学的介護推進体制加算 = 科学的介護推進体制あり }) -> 単位数(714)
| "要介護1でも同じ列を通る"
: (要介護1, 算定条件 { ...注なし, 身体拘束廃止 = 未実施である }) -> 単位数(484)
| "要介護2でも同じ列を通る"
: (要介護2, 算定条件 { ...注なし, 身体拘束廃止 = 未実施である }) -> 単位数(544)
| "要介護4でも同じ列を通る"
: (要介護4, 算定条件 { ...注なし, 身体拘束廃止 = 未実施である }) -> 単位数(664)
| "要介護5でも同じ列を通る"
: (要介護5, 算定条件 { ...注なし, 身体拘束廃止 = 未実施である }) -> 単位数(726)
// ------------------------------------------ ハ 短期利用に効く注
let 短期利用の注なし =
短期利用の算定条件
{ 看護介護職員の員数 = 基準を満たす
, 夜間看護体制加算 = 夜間看護体制なし
, 若年性認知症入居者受入加算 = 若年性認知症受入なし
}
example 短期利用の単位数を求める
| "注が付かなければ基本部分のまま" : (要介護3, 短期利用の注なし) -> 単位数(674)
| "看護・介護職員の員数が基準に満たない場合は×70/100"
: (要介護3, 短期利用の算定条件 { ...短期利用の注なし, 看護介護職員の員数 = 基準に満たない })
-> 単位数(472)
| "夜間看護体制加算は+10単位"
: (要介護3, 短期利用の算定条件 { ...短期利用の注なし, 夜間看護体制加算 = 夜間看護体制あり })
-> 単位数(684)
| "若年性認知症入居者受入加算は+120単位"
: (要介護3, 短期利用の算定条件 { ...短期利用の注なし, 若年性認知症入居者受入加算 = 若年性認知症受入あり })
-> 単位数(794)
| "要介護1でも同じ列を通る" : (要介護1, 短期利用の注なし) -> 単位数(538)
| "要介護2でも同じ列を通る" : (要介護2, 短期利用の注なし) -> 単位数(604)
| "要介護4でも同じ列を通る" : (要介護4, 短期利用の注なし) -> 単位数(738)
| "要介護5でも同じ列を通る" : (要介護5, 短期利用の注なし) -> 単位数(807)
// ------------------------------------------ ロ 外部サービス利用型に効く注
example 外部サービス利用型の単位数を求める
| "注が付かなければ83単位"
: (外部サービス利用型の算定条件 { 介護職員の員数 = 介護職員が基準を満たす, 障害者等支援加算 = 障害者等支援なし })
-> 単位数(83)
| "介護職員の員数が基準に満たない場合は×70/100"
: (外部サービス利用型の算定条件 { 介護職員の員数 = 介護職員が基準に満たない, 障害者等支援加算 = 障害者等支援なし })
-> 単位数(58)
| "障害者等支援加算は+20単位"
: (外部サービス利用型の算定条件 { 介護職員の員数 = 介護職員が基準を満たす, 障害者等支援加算 = 障害者等支援あり })
-> 単位数(103)
| "減算のあとに加算が並ぶ"
: (外部サービス利用型の算定条件 { 介護職員の員数 = 介護職員が基準に満たない, 障害者等支援加算 = 障害者等支援あり })
-> 単位数(78)
example 委託先の身体介護の単位数を求める
| "15分未満は96単位" : (所要時間(14)) -> 単位数(96)
| "1分でも15分未満" : (所要時間(1)) -> 単位数(96)
| "ちょうど15分は193単位" : (所要時間(15)) -> 単位数(193)
| "29分はまだ193単位" : (所要時間(29)) -> 単位数(193)
| "ちょうど30分は262単位" : (所要時間(30)) -> 単位数(262)
| "45分で+87単位" : (所要時間(45)) -> 単位数(349)
| "60分でさらに+87単位" : (所要時間(60)) -> 単位数(436)
| "75分でさらに+87単位" : (所要時間(75)) -> 単位数(523)
| "89分はまだ523単位" : (所要時間(89)) -> 単位数(523)
| "ちょうど1時間30分は561単位" : (所要時間(90)) -> 単位数(561)
| "1時間45分で+37単位" : (所要時間(105)) -> 単位数(598)
| "2時間でさらに+37単位" : (所要時間(120)) -> 単位数(635)
example 委託先の生活援助の単位数を求める
| "15分未満は49単位" : (所要時間(14)) -> 単位数(49)
| "1分でも15分未満" : (所要時間(1)) -> 単位数(49)
| "ちょうど15分は96単位" : (所要時間(15)) -> 単位数(96)
| "30分で+49単位" : (所要時間(30)) -> 単位数(145)
| "45分でさらに+49単位" : (所要時間(45)) -> 単位数(194)
| "59分はまだ194単位" : (所要時間(59)) -> 単位数(194)
| "ちょうど1時間は219単位" : (所要時間(60)) -> 単位数(219)
| "1時間14分はまだ219単位" : (所要時間(74)) -> 単位数(219)
| "1時間15分以上は262単位" : (所要時間(75)) -> 単位数(262)
| "2時間も262単位" : (所要時間(120)) -> 単位数(262)
example 看取り介護加算の単位数を求める
| "(Ⅰ)31日以上45日以下は72単位" : (看取り介護加算Ⅰ, 死亡日以前三十一日以上四十五日以下) -> 単位数(72)
| "(Ⅰ)4日以上30日以下は144単位" : (看取り介護加算Ⅰ, 死亡日以前四日以上三十日以下) -> 単位数(144)
| "(Ⅰ)2日又は3日は680単位" : (看取り介護加算Ⅰ, 死亡日以前二日又は三日) -> 単位数(680)
| "(Ⅰ)死亡日は1,280単位" : (看取り介護加算Ⅰ, 死亡日) -> 単位数(1280)
| "(Ⅱ)31日以上45日以下は572単位" : (看取り介護加算Ⅱ, 死亡日以前三十一日以上四十五日以下) -> 単位数(572)
| "(Ⅱ)4日以上30日以下は644単位" : (看取り介護加算Ⅱ, 死亡日以前四日以上三十日以下) -> 単位数(644)
| "(Ⅱ)2日又は3日は1,180単位" : (看取り介護加算Ⅱ, 死亡日以前二日又は三日) -> 単位数(1180)
| "(Ⅱ)死亡日は1,780単位" : (看取り介護加算Ⅱ, 死亡日) -> 単位数(1780)
example 月の所定単位数を求める
| "1件もなければ0" : ([]) -> 単位数(0)
| "1日だけならその単位数" : ([単位数(674)]) -> 単位数(674)
| "3日分とサービス提供体制強化加算"
: ([単位数(674), 単位数(674), 単位数(674), 単位数(66)]) -> 単位数(2088)
| "0単位の項目が混ざっても合計は変わらない" : ([単位数(0), 単位数(100)]) -> 単位数(100)
example 処遇改善加算の単位数を求める
| "算定しない" : (単位数(10000), 処遇改善加算なし) -> 単位数(0)
| "(Ⅰ)は82/1000" : (単位数(10000), 処遇改善加算Ⅰ) -> 単位数(820)
| "(Ⅱ)は60/1000" : (単位数(10000), 処遇改善加算Ⅱ) -> 単位数(600)
| "(Ⅲ)は33/1000" : (単位数(10000), 処遇改善加算Ⅲ) -> 単位数(330)
| "所定単位数が0なら0" : (単位数(0), 処遇改善加算Ⅰ) -> 単位数(0)
example 特定処遇改善加算の単位数を求める
| "算定しない" : (単位数(10000), 特定処遇改善加算なし) -> 単位数(0)
| "(Ⅰ)は18/1000" : (単位数(10000), 特定処遇改善加算Ⅰ) -> 単位数(180)
| "(Ⅱ)は12/1000" : (単位数(10000), 特定処遇改善加算Ⅱ) -> 単位数(120)
| "所定単位数が0なら0" : (単位数(0), 特定処遇改善加算Ⅰ) -> 単位数(0)
example 限度額を求める
| "要介護1は16,355単位" : (要介護1) -> 単位数(16355)
| "要介護2は18,362単位" : (要介護2) -> 単位数(18362)
| "要介護3は20,490単位" : (要介護3) -> 単位数(20490)
| "要介護4は22,435単位" : (要介護4) -> 単位数(22435)
| "要介護5は24,533単位" : (要介護5) -> 単位数(24533)
// 表の列を1つずつ立てて、その列がどの記号になるかを見る。
// `souther examples` が「no row is in ...」で名指ししてきたぶん。
example 注の記号を並べる
| "入居継続支援加算 = 入居継続支援加算Ⅱ"
: (要介護3, 算定条件 { ...注なし, 入居継続支援加算 = 入居継続支援加算Ⅱ })
-> [単位加算 { 単位 = 単位数(22) }]
| "生活機能向上連携加算 = 生活機能向上連携加算Ⅰ"
: (要介護3, 算定条件 { ...注なし, 生活機能向上連携加算 = 生活機能向上連携加算Ⅰ })
-> [単位加算 { 単位 = 単位数(100) }]
| "生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算あり"
: (要介護3, 算定条件 { ...注なし, 生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算あり })
-> [単位加算 { 単位 = 単位数(100) }]
| "生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算なし"
: (要介護3, 算定条件 { ...注なし, 生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算なし })
-> [単位加算 { 単位 = 単位数(200) }]
| "個別機能訓練加算 = 個別機能訓練加算Ⅰ"
: (要介護3, 算定条件 { ...注なし, 個別機能訓練加算 = 個別機能訓練加算Ⅰ })
-> [単位加算 { 単位 = 単位数(12) }]
| "個別機能訓練加算 = 個別機能訓練加算Ⅱ"
: (要介護3, 算定条件 { ...注なし, 個別機能訓練加算 = 個別機能訓練加算Ⅱ })
-> [単位加算 { 単位 = 単位数(20) }]
| "ADL維持等加算 = ADL維持等加算Ⅰ"
: (要介護3, 算定条件 { ...注なし, ADL維持等加算 = ADL維持等加算Ⅰ })
-> [単位加算 { 単位 = 単位数(30) }]
| "ADL維持等加算 = ADL維持等加算Ⅱ"
: (要介護3, 算定条件 { ...注なし, ADL維持等加算 = ADL維持等加算Ⅱ })
-> [単位加算 { 単位 = 単位数(60) }]
| "夜間看護体制加算 = 夜間看護体制あり"
: (要介護3, 算定条件 { ...注なし, 夜間看護体制加算 = 夜間看護体制あり })
-> [単位加算 { 単位 = 単位数(10) }]
| "若年性認知症入居者受入加算 = 若年性認知症受入あり"
: (要介護3, 算定条件 { ...注なし, 若年性認知症入居者受入加算 = 若年性認知症受入あり })
-> [単位加算 { 単位 = 単位数(120) }]
| "医療機関連携加算 = 医療機関連携あり"
: (要介護3, 算定条件 { ...注なし, 医療機関連携加算 = 医療機関連携あり })
-> [単位加算 { 単位 = 単位数(80) }]
| "口腔衛生管理体制加算 = 口腔衛生管理体制あり"
: (要介護3, 算定条件 { ...注なし, 口腔衛生管理体制加算 = 口腔衛生管理体制あり })
-> [単位加算 { 単位 = 単位数(30) }]
| "口腔栄養スクリーニング加算 = 口腔栄養スクリーニングあり"
: (要介護3, 算定条件 { ...注なし, 口腔栄養スクリーニング加算 = 口腔栄養スクリーニングあり })
-> [単位加算 { 単位 = 単位数(20) }]
module kaigo.特定施設入居者生活介護 exposing
( 特定施設入居者生活介護費, 外部サービス利用型特定施設入居者生活介護費
, 短期利用特定施設入居者生活介護費
, 看護介護職員の員数, 基準に満たない, 基準を満たす
, 介護職員の員数, 介護職員が基準に満たない, 介護職員が基準を満たす
, 身体拘束廃止, 未実施である, 実施している
, 入居継続支援加算, 入居継続支援なし, 入居継続支援加算Ⅰ, 入居継続支援加算Ⅱ
, 生活機能向上連携加算, 生活機能向上連携加算なし, 生活機能向上連携加算Ⅰ
, 生活機能向上連携加算Ⅱ個別機能訓練加算あり, 生活機能向上連携加算Ⅱ個別機能訓練加算なし
, 個別機能訓練加算, 個別機能訓練加算なし, 個別機能訓練加算Ⅰ, 個別機能訓練加算Ⅱ
, ADL維持等加算, ADL維持等加算なし, ADL維持等加算Ⅰ, ADL維持等加算Ⅱ
, 夜間看護体制加算, 夜間看護体制あり, 夜間看護体制なし
, 若年性認知症入居者受入加算, 若年性認知症受入あり, 若年性認知症受入なし
, 医療機関連携加算, 医療機関連携あり, 医療機関連携なし
, 口腔衛生管理体制加算, 口腔衛生管理体制あり, 口腔衛生管理体制なし
, 口腔栄養スクリーニング加算, 口腔栄養スクリーニングあり, 口腔栄養スクリーニングなし
, 科学的介護推進体制加算, 科学的介護推進体制あり, 科学的介護推進体制なし
, 障害者等支援加算, 障害者等支援あり, 障害者等支援なし
, 算定条件, 注の記号を並べる, 単位数を求める
, 短期利用の算定条件, 短期利用の単位数を求める
, 外部サービス利用型の算定条件, 外部サービス利用型の単位数を求める
, 所要時間, 委託先の身体介護の単位数を求める, 委託先の生活援助の単位数を求める
, 委託先の通院等乗降介助, 委託先のその他のサービスの割合乗算
, 退院退所時連携加算
, 看取り介護加算, 看取り介護加算Ⅰ, 看取り介護加算Ⅱ
, 死亡日からの期間, 死亡日以前三十一日以上四十五日以下, 死亡日以前四日以上三十日以下
, 死亡日以前二日又は三日, 死亡日
, 看取り介護加算の単位数を求める
, 認知症専門ケア加算Ⅰ, 認知症専門ケア加算Ⅱ
, サービス提供体制強化加算Ⅰ, サービス提供体制強化加算Ⅱ, サービス提供体制強化加算Ⅲ
, 介護職員処遇改善加算, 処遇改善加算Ⅰ, 処遇改善加算Ⅱ, 処遇改善加算Ⅲ, 処遇改善加算なし
, 介護職員等特定処遇改善加算, 特定処遇改善加算Ⅰ, 特定処遇改善加算Ⅱ, 特定処遇改善加算なし
, 月の所定単位数を求める, 処遇改善加算の単位数を求める, 特定処遇改善加算の単位数を求める
, 限度額を求める
)
// 「介護報酬の算定構造」Ⅰ-10 特定施設入居者生活介護費(介護15ページ)。
// https://www.wam.go.jp/gyoseiShiryou-files/documents/2022/0322211552821/202203a.pdf
//
// 表の下に2つの※がある。
// ※ 限度額 要介護1 16,355単位/要介護2 18,362単位/要介護3 20,490単位
// 要介護4 22,435単位/要介護5 24,533単位
// ※ 短期利用特定施設入居者生活介護は、区分支給限度基準額に含まれる。
import kaigo.共通
( 単位数, 算定記号, 単位加算, 単位減算, 割合乗算
, 要介護度, 要介護1, 要介護2, 要介護3, 要介護4, 要介護5
, 記号を適用する, 記号を順に適用する
)
// ---------------------------------------------------------------- 基本部分
// イ 特定施設入居者生活介護費(1日につき)
// 要介護1 538/要介護2 604/要介護3 674/要介護4 738/要介護5 807
behavior 特定施設入居者生活介護費 : (要介護度: 要介護度) -> 単位数
constructs 単位数
let 特定施設入居者生活介護費 (要介護度) =
match 要介護度 with
| 要介護1 -> 単位数(538)
| 要介護2 -> 単位数(604)
| 要介護3 -> 単位数(674)
| 要介護4 -> 単位数(738)
| 要介護5 -> 単位数(807)
// ロ 外部サービス利用型特定施設入居者生活介護費(1日につき 83単位)
let 外部サービス利用型特定施設入居者生活介護費 = 単位数(83)
// ハ 短期利用特定施設入居者生活介護費(1日につき)— イと同じ単位数
behavior 短期利用特定施設入居者生活介護費 : (要介護度: 要介護度) -> 単位数
constructs 単位数
let 短期利用特定施設入居者生活介護費 (要介護度) =
match 要介護度 with
| 要介護1 -> 単位数(538)
| 要介護2 -> 単位数(604)
| 要介護3 -> 単位数(674)
| 要介護4 -> 単位数(738)
| 要介護5 -> 単位数(807)
// 注 看護・介護職員の員数が基準に満たない場合 ×70/100
data 看護介護職員の員数 = 基準に満たない | 基準を満たす
// 注 介護職員の員数が基準に満たない場合 ×70/100(ロ 外部サービス利用型の列)
data 介護職員の員数 = 介護職員が基準に満たない | 介護職員が基準を満たす
// 注 身体拘束廃止未実施減算
// 要介護1 -54単位/要介護2 -60単位/要介護3 -67単位/要介護4 -74単位/要介護5 -81単位
data 身体拘束廃止 = 未実施である | 実施している
// 注 入居継続支援加算(Ⅰ)1日につき +36単位/(Ⅱ)1日につき +22単位
data 入居継続支援加算 = 入居継続支援なし | 入居継続支援加算Ⅰ | 入居継続支援加算Ⅱ
// 注 生活機能向上連携加算(Ⅰ)1月につき +100単位(3月に1回を限度)
// (Ⅱ)1月につき +200単位
// ※ただし、個別機能訓練加算を算定している場合は、1月につき +100単位
data 生活機能向上連携加算 =
生活機能向上連携加算なし
| 生活機能向上連携加算Ⅰ
| 生活機能向上連携加算Ⅱ個別機能訓練加算あり
| 生活機能向上連携加算Ⅱ個別機能訓練加算なし
// 注 個別機能訓練加算(Ⅰ)1日につき +12単位/(Ⅱ)1月につき +20単位
data 個別機能訓練加算 = 個別機能訓練加算なし | 個別機能訓練加算Ⅰ | 個別機能訓練加算Ⅱ
// 注 ADL維持等加算(Ⅰ)1月につき +30単位/(Ⅱ)1月につき +60単位
data ADL維持等加算 = ADL維持等加算なし | ADL維持等加算Ⅰ | ADL維持等加算Ⅱ
// 注 夜間看護体制加算 1日につき +10単位
data 夜間看護体制加算 = 夜間看護体制あり | 夜間看護体制なし
// 注 若年性認知症入居者受入加算 1日につき +120単位
data 若年性認知症入居者受入加算 = 若年性認知症受入あり | 若年性認知症受入なし
// 注 医療機関連携加算 1月につき +80単位
data 医療機関連携加算 = 医療機関連携あり | 医療機関連携なし
// 注 口腔衛生管理体制加算 1月につき +30単位
data 口腔衛生管理体制加算 = 口腔衛生管理体制あり | 口腔衛生管理体制なし
// 注 口腔・栄養スクリーニング加算 1回につき +20単位(6月に1回を限度)
data 口腔栄養スクリーニング加算 = 口腔栄養スクリーニングあり | 口腔栄養スクリーニングなし
// 注 科学的介護推進体制加算 1月につき +40単位
data 科学的介護推進体制加算 = 科学的介護推進体制あり | 科学的介護推進体制なし
// 注 障害者等支援加算 1日につき +20単位(ロ 外部サービス利用型の行に枠が置かれている)
data 障害者等支援加算 = 障害者等支援あり | 障害者等支援なし
data 算定条件 =
{ 看護介護職員の員数: 看護介護職員の員数
, 身体拘束廃止: 身体拘束廃止
, 入居継続支援加算: 入居継続支援加算
, 生活機能向上連携加算: 生活機能向上連携加算
, 個別機能訓練加算: 個別機能訓練加算
, ADL維持等加算: ADL維持等加算
, 夜間看護体制加算: 夜間看護体制加算
, 若年性認知症入居者受入加算: 若年性認知症入居者受入加算
, 医療機関連携加算: 医療機関連携加算
, 口腔衛生管理体制加算: 口腔衛生管理体制加算
, 口腔栄養スクリーニング加算: 口腔栄養スクリーニング加算
, 科学的介護推進体制加算: 科学的介護推進体制加算
}
let 身体拘束廃止未実施減算の単位 (要介護度: 要介護度): 単位数 =
match 要介護度 with
| 要介護1 -> 単位数(54)
| 要介護2 -> 単位数(60)
| 要介護3 -> 単位数(67)
| 要介護4 -> 単位数(74)
| 要介護5 -> 単位数(81)
behavior 注の記号を並べる : (要介護度: 要介護度, 条件: 算定条件) -> List<算定記号>
constructs 単位数, 単位加算, 単位減算, 割合乗算
let 注の記号を並べる (要介護度, 条件) =
(match 条件.看護介護職員の員数 with
| 基準に満たない -> [割合乗算 { 分子 = 70, 分母 = 100 }]
| 基準を満たす -> [])
++ (match 条件.身体拘束廃止 with
| 未実施である -> [単位減算 { 単位 = 身体拘束廃止未実施減算の単位(要介護度) }]
| 実施している -> [])
++ (match 条件.入居継続支援加算 with
| 入居継続支援加算Ⅰ -> [単位加算 { 単位 = 単位数(36) }]
| 入居継続支援加算Ⅱ -> [単位加算 { 単位 = 単位数(22) }]
| 入居継続支援なし -> [])
++ (match 条件.生活機能向上連携加算 with
| 生活機能向上連携加算Ⅰ -> [単位加算 { 単位 = 単位数(100) }]
| 生活機能向上連携加算Ⅱ個別機能訓練加算なし -> [単位加算 { 単位 = 単位数(200) }]
| 生活機能向上連携加算Ⅱ個別機能訓練加算あり -> [単位加算 { 単位 = 単位数(100) }]
| 生活機能向上連携加算なし -> [])
++ (match 条件.個別機能訓練加算 with
| 個別機能訓練加算Ⅰ -> [単位加算 { 単位 = 単位数(12) }]
| 個別機能訓練加算Ⅱ -> [単位加算 { 単位 = 単位数(20) }]
| 個別機能訓練加算なし -> [])
++ (match 条件.ADL維持等加算 with
| ADL維持等加算Ⅰ -> [単位加算 { 単位 = 単位数(30) }]
| ADL維持等加算Ⅱ -> [単位加算 { 単位 = 単位数(60) }]
| ADL維持等加算なし -> [])
++ (match 条件.夜間看護体制加算 with
| 夜間看護体制あり -> [単位加算 { 単位 = 単位数(10) }]
| 夜間看護体制なし -> [])
++ (match 条件.若年性認知症入居者受入加算 with
| 若年性認知症受入あり -> [単位加算 { 単位 = 単位数(120) }]
| 若年性認知症受入なし -> [])
++ (match 条件.医療機関連携加算 with
| 医療機関連携あり -> [単位加算 { 単位 = 単位数(80) }]
| 医療機関連携なし -> [])
++ (match 条件.口腔衛生管理体制加算 with
| 口腔衛生管理体制あり -> [単位加算 { 単位 = 単位数(30) }]
| 口腔衛生管理体制なし -> [])
++ (match 条件.口腔栄養スクリーニング加算 with
| 口腔栄養スクリーニングあり -> [単位加算 { 単位 = 単位数(20) }]
| 口腔栄養スクリーニングなし -> [])
++ (match 条件.科学的介護推進体制加算 with
| 科学的介護推進体制あり -> [単位加算 { 単位 = 単位数(40) }]
| 科学的介護推進体制なし -> [])
behavior 単位数を求める : (要介護度: 要介護度, 条件: 算定条件) -> 単位数
let 単位数を求める (要介護度, 条件) =
記号を順に適用する(特定施設入居者生活介護費(要介護度), 注の記号を並べる(要介護度, 条件))
// ハ の行には、看護・介護職員の員数の減算と、夜間看護体制加算・若年性認知症入居者受入加算の
// 枠だけが置かれている。
data 短期利用の算定条件 =
{ 看護介護職員の員数: 看護介護職員の員数
, 夜間看護体制加算: 夜間看護体制加算
, 若年性認知症入居者受入加算: 若年性認知症入居者受入加算
}
behavior 短期利用の単位数を求める : (要介護度: 要介護度, 条件: 短期利用の算定条件) -> 単位数
constructs 単位数, 単位加算, 割合乗算
let 短期利用の単位数を求める (要介護度, 条件) = {
let 記号の並び =
(match 条件.看護介護職員の員数 with
| 基準に満たない -> [割合乗算 { 分子 = 70, 分母 = 100 }]
| 基準を満たす -> [])
++ (match 条件.夜間看護体制加算 with
| 夜間看護体制あり -> [単位加算 { 単位 = 単位数(10) }]
| 夜間看護体制なし -> [])
++ (match 条件.若年性認知症入居者受入加算 with
| 若年性認知症受入あり -> [単位加算 { 単位 = 単位数(120) }]
| 若年性認知症受入なし -> [])
記号を順に適用する(短期利用特定施設入居者生活介護費(要介護度), 記号の並び)
}
data 外部サービス利用型の算定条件 =
{ 介護職員の員数: 介護職員の員数
, 障害者等支援加算: 障害者等支援加算
}
behavior 外部サービス利用型の単位数を求める : (条件: 外部サービス利用型の算定条件) -> 単位数
constructs 単位数, 単位加算, 割合乗算
let 外部サービス利用型の単位数を求める (条件) = {
let 記号の並び =
(match 条件.介護職員の員数 with
| 介護職員が基準に満たない -> [割合乗算 { 分子 = 70, 分母 = 100 }]
| 介護職員が基準を満たす -> [])
++ (match 条件.障害者等支援加算 with
| 障害者等支援あり -> [単位加算 { 単位 = 単位数(20) }]
| 障害者等支援なし -> [])
記号を順に適用する(外部サービス利用型特定施設入居者生活介護費, 記号の並び)
}
// 注 委託先である指定居宅サービス事業者により居宅サービスが行われる場合
// ・訪問介護
// ・身体介護
// 所要時間15分未満の場合 96単位
// 所要時間15分以上30分未満の場合 193単位
// 所要時間30分以上1時間30分未満の場合 262単位に、所要時間30分から計算して
// 所要時間が15分増すごとに87単位を加算した単位数
// 所要時間1時間30分以上の場合 561単位に、所要時間1時間30分から計算して
// 所要時間が15分増すごとに37単位を加算した単位数
// ・生活援助
// 所要時間15分未満の場合 49単位
// 所要時間15分以上1時間未満の場合 96単位に、所要時間15分から計算して
// 所要時間が15分増すごとに49単位を加算した単位数
// 所要時間1時間以上1時間15分未満の場合 219単位
// 所要時間1時間15分以上の場合 262単位
// ・通院等乗降介助 1回につき 87単位
// ・他の訪問系サービス及び通所系サービス
// 通常の各サービスの基本部分の報酬単位の 90/100
// ・福祉用具貸与 通常の福祉用具貸与と同様
// ※ ただし、基本部分も含めて要介護度別に定める限度を上限とする。
data 所要時間 = Int
invariant 分で数える = value > 0
behavior 委託先の身体介護の単位数を求める : (所要時間: 所要時間) -> 単位数
constructs 単位数
let 委託先の身体介護の単位数を求める (所要時間) =
if 所要時間.value < 15 then 単位数(96)
else if 所要時間.value < 30 then 単位数(193)
else if 所要時間.value < 90 then 単位数(262 + 87 * ((所要時間.value - 30) / 15))
else 単位数(561 + 37 * ((所要時間.value - 90) / 15))
behavior 委託先の生活援助の単位数を求める : (所要時間: 所要時間) -> 単位数
constructs 単位数
let 委託先の生活援助の単位数を求める (所要時間) =
if 所要時間.value < 15 then 単位数(49)
else if 所要時間.value < 60 then 単位数(96 + 49 * ((所要時間.value - 15) / 15))
else if 所要時間.value < 75 then 単位数(219)
else 単位数(262)
// ・通院等乗降介助 1回につき 87単位
let 委託先の通院等乗降介助 = 単位数(87)
// ・他の訪問系サービス及び通所系サービス 通常の各サービスの基本部分の報酬単位の 90/100
let 委託先のその他のサービスの割合乗算 = 割合乗算 { 分子 = 90, 分母 = 100 }
// ------------------------------------------ ニからリまでの加算
// ニ 退院・退所時連携加算(イを算定する場合のみ算定)1日につき 30単位を加算
let 退院退所時連携加算 = 単位数(30)
// ホ 看取り介護加算(イを算定する場合のみ算定)
// (1)(Ⅰ)死亡日以前31日以上45日以下 72単位/4日以上30日以下 144単位
// 死亡日以前2日又は3日 680単位/死亡日 1,280単位
// (2)(Ⅱ)死亡日以前31日以上45日以下 572単位/4日以上30日以下 644単位
// 死亡日以前2日又は3日 1,180単位/死亡日 1,780単位
data 看取り介護加算 = 看取り介護加算Ⅰ | 看取り介護加算Ⅱ
data 死亡日からの期間 =
死亡日以前三十一日以上四十五日以下
| 死亡日以前四日以上三十日以下
| 死亡日以前二日又は三日
| 死亡日
behavior 看取り介護加算の単位数を求める :
(区分: 看取り介護加算, 期間: 死亡日からの期間) -> 単位数
constructs 単位数
let 看取り介護加算の単位数を求める (区分, 期間) =
match 区分 with
| 看取り介護加算Ⅰ ->
match 期間 with
| 死亡日以前三十一日以上四十五日以下 -> 単位数(72)
| 死亡日以前四日以上三十日以下 -> 単位数(144)
| 死亡日以前二日又は三日 -> 単位数(680)
| 死亡日 -> 単位数(1280)
| 看取り介護加算Ⅱ ->
match 期間 with
| 死亡日以前三十一日以上四十五日以下 -> 単位数(572)
| 死亡日以前四日以上三十日以下 -> 単位数(644)
| 死亡日以前二日又は三日 -> 単位数(1180)
| 死亡日 -> 単位数(1780)
// ヘ 認知症専門ケア加算(イを算定する場合のみ算定)
// (Ⅰ)1日につき 3単位/(Ⅱ)1日につき 4単位
let 認知症専門ケア加算Ⅰ = 単位数(3)
let 認知症専門ケア加算Ⅱ = 単位数(4)
// ト サービス提供体制強化加算(Ⅰ)1日につき 22単位/(Ⅱ)18単位/(Ⅲ)6単位
let サービス提供体制強化加算Ⅰ = 単位数(22)
let サービス提供体制強化加算Ⅱ = 単位数(18)
let サービス提供体制強化加算Ⅲ = 単位数(6)
// チ 介護職員処遇改善加算(Ⅰ)+所定単位×82/1000(Ⅱ)×60/1000(Ⅲ)×33/1000
// 注 所定単位は、イからトまでにより算定した単位数の合計
data 介護職員処遇改善加算 = 処遇改善加算Ⅰ | 処遇改善加算Ⅱ | 処遇改善加算Ⅲ | 処遇改善加算なし
// リ 介護職員等特定処遇改善加算(Ⅰ)+所定単位×18/1000(Ⅱ)×12/1000
// 注 所定単位は、イからトまでにより算定した単位数の合計
data 介護職員等特定処遇改善加算 = 特定処遇改善加算Ⅰ | 特定処遇改善加算Ⅱ | 特定処遇改善加算なし
behavior 月の所定単位数を求める : (イからトまでの単位数: List<単位数>) -> 単位数
constructs 単位数
let 月の所定単位数を求める (イからトまでの単位数) =
単位数(List.sum(List.map(u -> u.value, イからトまでの単位数)))
behavior 処遇改善加算の単位数を求める : (所定単位数: 単位数, 区分: 介護職員処遇改善加算) -> 単位数
constructs 単位数, 割合乗算
let 処遇改善加算の単位数を求める (所定単位数, 区分) =
match 区分 with
| 処遇改善加算Ⅰ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 82, 分母 = 1000 })
| 処遇改善加算Ⅱ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 60, 分母 = 1000 })
| 処遇改善加算Ⅲ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 33, 分母 = 1000 })
| 処遇改善加算なし -> 単位数(0)
behavior 特定処遇改善加算の単位数を求める : (所定単位数: 単位数, 区分: 介護職員等特定処遇改善加算) -> 単位数
constructs 単位数, 割合乗算
let 特定処遇改善加算の単位数を求める (所定単位数, 区分) =
match 区分 with
| 特定処遇改善加算Ⅰ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 18, 分母 = 1000 })
| 特定処遇改善加算Ⅱ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 12, 分母 = 1000 })
| 特定処遇改善加算なし -> 単位数(0)
// ※ 限度額(表の下に置かれている。区分支給限度基準額とは別のもの)
behavior 限度額を求める : (要介護度: 要介護度) -> 単位数
constructs 単位数
let 限度額を求める (要介護度) =
match 要介護度 with
| 要介護1 -> 単位数(16355)
| 要介護2 -> 単位数(18362)
| 要介護3 -> 単位数(20490)
| 要介護4 -> 単位数(22435)
| 要介護5 -> 単位数(24533)
examples for kaigo.短期入所生活介護
// 表の各セルと、行だけが名指す値。モデル本体と分けてある。
example 基本部分の単位数を求める
| "単独型短期入所生活介護費Ⅰ 要介護1" : (単独型短期入所生活介護費Ⅰ, 要介護1) -> 単位数(638)
| "単独型短期入所生活介護費Ⅰ 要介護2" : (単独型短期入所生活介護費Ⅰ, 要介護2) -> 単位数(707)
| "単独型短期入所生活介護費Ⅰ 要介護3" : (単独型短期入所生活介護費Ⅰ, 要介護3) -> 単位数(778)
| "単独型短期入所生活介護費Ⅰ 要介護4" : (単独型短期入所生活介護費Ⅰ, 要介護4) -> 単位数(847)
| "単独型短期入所生活介護費Ⅰ 要介護5" : (単独型短期入所生活介護費Ⅰ, 要介護5) -> 単位数(916)
| "単独型短期入所生活介護費Ⅱ 要介護1" : (単独型短期入所生活介護費Ⅱ, 要介護1) -> 単位数(638)
| "単独型短期入所生活介護費Ⅱ 要介護2" : (単独型短期入所生活介護費Ⅱ, 要介護2) -> 単位数(707)
| "単独型短期入所生活介護費Ⅱ 要介護3" : (単独型短期入所生活介護費Ⅱ, 要介護3) -> 単位数(778)
| "単独型短期入所生活介護費Ⅱ 要介護4" : (単独型短期入所生活介護費Ⅱ, 要介護4) -> 単位数(847)
| "単独型短期入所生活介護費Ⅱ 要介護5" : (単独型短期入所生活介護費Ⅱ, 要介護5) -> 単位数(916)
| "併設型短期入所生活介護費Ⅰ 要介護1" : (併設型短期入所生活介護費Ⅰ, 要介護1) -> 単位数(596)
| "併設型短期入所生活介護費Ⅰ 要介護2" : (併設型短期入所生活介護費Ⅰ, 要介護2) -> 単位数(665)
| "併設型短期入所生活介護費Ⅰ 要介護3" : (併設型短期入所生活介護費Ⅰ, 要介護3) -> 単位数(737)
| "併設型短期入所生活介護費Ⅰ 要介護4" : (併設型短期入所生活介護費Ⅰ, 要介護4) -> 単位数(806)
| "併設型短期入所生活介護費Ⅰ 要介護5" : (併設型短期入所生活介護費Ⅰ, 要介護5) -> 単位数(874)
| "併設型短期入所生活介護費Ⅱ 要介護1" : (併設型短期入所生活介護費Ⅱ, 要介護1) -> 単位数(596)
| "併設型短期入所生活介護費Ⅱ 要介護2" : (併設型短期入所生活介護費Ⅱ, 要介護2) -> 単位数(665)
| "併設型短期入所生活介護費Ⅱ 要介護3" : (併設型短期入所生活介護費Ⅱ, 要介護3) -> 単位数(737)
| "併設型短期入所生活介護費Ⅱ 要介護4" : (併設型短期入所生活介護費Ⅱ, 要介護4) -> 単位数(806)
| "併設型短期入所生活介護費Ⅱ 要介護5" : (併設型短期入所生活介護費Ⅱ, 要介護5) -> 単位数(874)
| "単独型ユニット型短期入所生活介護費 要介護1" : (単独型ユニット型短期入所生活介護費, 要介護1) -> 単位数(738)
| "単独型ユニット型短期入所生活介護費 要介護2" : (単独型ユニット型短期入所生活介護費, 要介護2) -> 単位数(806)
| "単独型ユニット型短期入所生活介護費 要介護3" : (単独型ユニット型短期入所生活介護費, 要介護3) -> 単位数(881)
| "単独型ユニット型短期入所生活介護費 要介護4" : (単独型ユニット型短期入所生活介護費, 要介護4) -> 単位数(949)
| "単独型ユニット型短期入所生活介護費 要介護5" : (単独型ユニット型短期入所生活介護費, 要介護5) -> 単位数(1017)
| "経過的単独型ユニット型短期入所生活介護費 要介護1" : (経過的単独型ユニット型短期入所生活介護費, 要介護1) -> 単位数(738)
| "経過的単独型ユニット型短期入所生活介護費 要介護2" : (経過的単独型ユニット型短期入所生活介護費, 要介護2) -> 単位数(806)
| "経過的単独型ユニット型短期入所生活介護費 要介護3" : (経過的単独型ユニット型短期入所生活介護費, 要介護3) -> 単位数(881)
| "経過的単独型ユニット型短期入所生活介護費 要介護4" : (経過的単独型ユニット型短期入所生活介護費, 要介護4) -> 単位数(949)
| "経過的単独型ユニット型短期入所生活介護費 要介護5" : (経過的単独型ユニット型短期入所生活介護費, 要介護5) -> 単位数(1017)
| "併設型ユニット型短期入所生活介護費 要介護1" : (併設型ユニット型短期入所生活介護費, 要介護1) -> 単位数(696)
| "併設型ユニット型短期入所生活介護費 要介護2" : (併設型ユニット型短期入所生活介護費, 要介護2) -> 単位数(764)
| "併設型ユニット型短期入所生活介護費 要介護3" : (併設型ユニット型短期入所生活介護費, 要介護3) -> 単位数(838)
| "併設型ユニット型短期入所生活介護費 要介護4" : (併設型ユニット型短期入所生活介護費, 要介護4) -> 単位数(908)
| "併設型ユニット型短期入所生活介護費 要介護5" : (併設型ユニット型短期入所生活介護費, 要介護5) -> 単位数(976)
| "経過的併設型ユニット型短期入所生活介護費 要介護1" : (経過的併設型ユニット型短期入所生活介護費, 要介護1) -> 単位数(696)
| "経過的併設型ユニット型短期入所生活介護費 要介護2" : (経過的併設型ユニット型短期入所生活介護費, 要介護2) -> 単位数(764)
| "経過的併設型ユニット型短期入所生活介護費 要介護3" : (経過的併設型ユニット型短期入所生活介護費, 要介護3) -> 単位数(838)
| "経過的併設型ユニット型短期入所生活介護費 要介護4" : (経過的併設型ユニット型短期入所生活介護費, 要介護4) -> 単位数(908)
| "経過的併設型ユニット型短期入所生活介護費 要介護5" : (経過的併設型ユニット型短期入所生活介護費, 要介護5) -> 単位数(976)
// ---------------------------------------------------------------- 注の各列
let 注なし =
算定条件
{ 夜勤を行う職員の勤務条件基準 = 満たす
, 定員超過又は員数不足 = 該当しない
, ユニットケアにおける体制 = 整備されている
, 共生型短期入所生活介護 = 共生型でない
, 生活相談員配置等加算 = 生活相談員配置等なし
, 生活機能向上連携加算 = 生活機能向上連携加算なし
, 専従の機能訓練指導員 = 配置していない
, 個別機能訓練加算 = 個別機能訓練加算なし
, 利用定員 = 二十九人以下
, 看護体制加算 = 看護体制加算なし
, 医療連携強化加算 = 医療連携強化なし
, 夜勤職員配置加算 = 夜勤職員配置加算なし
, 認知症行動心理症状緊急対応加算 = 緊急対応なし
, 若年性認知症利用者受入加算 = 若年性認知症受入なし
, 送迎 = 送迎を行わない
, 緊急短期入所受入加算 = 緊急短期入所受入なし
, 長期利用 = 長期利用者ではない
}
example 注の記号を並べる
| "注が一つもなければ何も並ばない" : (併設型短期入所生活介護費Ⅰ, 注なし) -> []
| "並ぶ順は表の列の順"
: ( 併設型短期入所生活介護費Ⅰ
, 算定条件
{ ...注なし
, 夜勤を行う職員の勤務条件基準 = 満たさない
, 看護体制加算 = 看護体制加算Ⅲ
, 送迎 = 送迎を行う
, 長期利用 = 長期利用者である
} )
-> [ 割合乗算 { 分子 = 97, 分母 = 100 }
, 単位加算 { 単位 = 単位数(12) }
, 単位加算 { 単位 = 単位数(184) }
, 単位減算 { 単位 = 単位数(30) }
]
| "ユニットケア体制の減算はイには置かれていない"
: ( 併設型短期入所生活介護費Ⅰ
, 算定条件 { ...注なし, ユニットケアにおける体制 = 未整備である } )
-> []
| "ロには置かれている"
: ( 併設型ユニット型短期入所生活介護費
, 算定条件 { ...注なし, ユニットケアにおける体制 = 未整備である } )
-> [割合乗算 { 分子 = 97, 分母 = 100 }]
| "夜勤職員配置加算はイで+13単位"
: ( 併設型短期入所生活介護費Ⅰ
, 算定条件 { ...注なし, 夜勤職員配置加算 = 夜勤職員配置加算ⅠⅡ } )
-> [単位加算 { 単位 = 単位数(13) }]
| "夜勤職員配置加算はロで+18単位"
: ( 併設型ユニット型短期入所生活介護費
, 算定条件 { ...注なし, 夜勤職員配置加算 = 夜勤職員配置加算ⅠⅡ } )
-> [単位加算 { 単位 = 単位数(18) }]
| "夜勤職員配置加算(Ⅲ)(Ⅳ)はイで+15単位"
: ( 併設型短期入所生活介護費Ⅰ
, 算定条件 { ...注なし, 夜勤職員配置加算 = 夜勤職員配置加算ⅢⅣ } )
-> [単位加算 { 単位 = 単位数(15) }]
| "夜勤職員配置加算(Ⅲ)(Ⅳ)はロで+20単位"
: ( 併設型ユニット型短期入所生活介護費
, 算定条件 { ...注なし, 夜勤職員配置加算 = 夜勤職員配置加算ⅢⅣ } )
-> [単位加算 { 単位 = 単位数(20) }]
| "看護体制加算(Ⅲ)は利用定員30人以上50人以下で+6単位"
: ( 併設型短期入所生活介護費Ⅰ
, 算定条件 { ...注なし, 看護体制加算 = 看護体制加算Ⅲ, 利用定員 = 三十人以上五十人以下 } )
-> [単位加算 { 単位 = 単位数(6) }]
| "看護体制加算(Ⅳ)は利用定員29人以下で+23単位"
: ( 併設型短期入所生活介護費Ⅰ
, 算定条件 { ...注なし, 看護体制加算 = 看護体制加算Ⅳ, 利用定員 = 二十九人以下 } )
-> [単位加算 { 単位 = 単位数(23) }]
| "単独型(Ⅰ)も同じ列を通る"
: (単独型短期入所生活介護費Ⅰ, 算定条件 { ...注なし, 送迎 = 送迎を行う })
-> [単位加算 { 単位 = 単位数(184) }]
| "単独型(Ⅱ)も同じ列を通る"
: (単独型短期入所生活介護費Ⅱ, 算定条件 { ...注なし, 送迎 = 送迎を行う })
-> [単位加算 { 単位 = 単位数(184) }]
| "併設型(Ⅱ)も同じ列を通る"
: (併設型短期入所生活介護費Ⅱ, 算定条件 { ...注なし, 送迎 = 送迎を行う })
-> [単位加算 { 単位 = 単位数(184) }]
| "単独型ユニット型も同じ列を通る"
: (単独型ユニット型短期入所生活介護費, 算定条件 { ...注なし, 送迎 = 送迎を行う })
-> [単位加算 { 単位 = 単位数(184) }]
| "経過的単独型ユニット型も同じ列を通る"
: (経過的単独型ユニット型短期入所生活介護費, 算定条件 { ...注なし, 送迎 = 送迎を行う })
-> [単位加算 { 単位 = 単位数(184) }]
| "経過的併設型ユニット型も同じ列を通る"
: (経過的併設型ユニット型短期入所生活介護費, 算定条件 { ...注なし, 送迎 = 送迎を行う })
-> [単位加算 { 単位 = 単位数(184) }]
| "看護体制加算(Ⅳ)は利用定員30人以上50人以下で+13単位"
: ( 併設型短期入所生活介護費Ⅰ
, 算定条件 { ...注なし, 看護体制加算 = 看護体制加算Ⅳ, 利用定員 = 三十人以上五十人以下 } )
-> [単位加算 { 単位 = 単位数(13) }]
example 単位数を求める
| "注が付かなければ基本部分のまま"
: (併設型短期入所生活介護費Ⅰ, 要介護3, 注なし) -> 単位数(737)
| "夜勤の勤務条件基準を満たさない場合は×97/100"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 夜勤を行う職員の勤務条件基準 = 満たさない } )
-> 単位数(715)
| "入所定員を超える場合は×70/100"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 定員超過又は員数不足 = 入所定員を超える } )
-> 単位数(516)
| "介護・看護職員の員数が基準に満たない場合も×70/100"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 定員超過又は員数不足 = 介護看護職員の員数が基準に満たない } )
-> 単位数(516)
| "ユニットケアにおける体制が未整備である場合は×97/100"
: ( 併設型ユニット型短期入所生活介護費, 要介護3
, 算定条件 { ...注なし, ユニットケアにおける体制 = 未整備である } )
-> 単位数(813)
| "共生型(指定短期入所事業所)は×92/100"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 共生型短期入所生活介護 = 指定短期入所事業所が行う } )
-> 単位数(678)
| "生活相談員配置等加算は+13単位"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 生活相談員配置等加算 = 生活相談員配置等あり } )
-> 単位数(750)
| "生活機能向上連携加算(Ⅰ)は+100単位"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 生活機能向上連携加算 = 生活機能向上連携加算Ⅰ } )
-> 単位数(837)
| "生活機能向上連携加算(Ⅱ)は+200単位"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算なし } )
-> 単位数(937)
| "個別機能訓練加算を算定していれば(Ⅱ)は+100単位"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件
{ ...注なし
, 生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算あり
, 個別機能訓練加算 = 個別機能訓練加算あり
} )
-> 単位数(893)
| "専従の機能訓練指導員を配置している場合は+12単位"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 専従の機能訓練指導員 = 配置している } )
-> 単位数(749)
| "個別機能訓練加算は+56単位"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 個別機能訓練加算 = 個別機能訓練加算あり } )
-> 単位数(793)
| "看護体制加算(Ⅰ)は+4単位"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 看護体制加算 = 看護体制加算Ⅰ } )
-> 単位数(741)
| "看護体制加算(Ⅱ)は+8単位"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 看護体制加算 = 看護体制加算Ⅱ } )
-> 単位数(745)
| "看護体制加算(Ⅲ)利用定員29人以下は+12単位"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 看護体制加算 = 看護体制加算Ⅲ } )
-> 単位数(749)
| "医療連携強化加算は+58単位"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 医療連携強化加算 = 医療連携強化あり } )
-> 単位数(795)
| "認知症行動・心理症状緊急対応加算は+200単位"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 認知症行動心理症状緊急対応加算 = 緊急対応あり } )
-> 単位数(937)
| "若年性認知症利用者受入加算は+120単位"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 若年性認知症利用者受入加算 = 若年性認知症受入あり } )
-> 単位数(857)
| "送迎を行う場合は片道につき+184単位"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 送迎 = 送迎を行う } )
-> 単位数(921)
| "緊急短期入所受入加算は+90単位"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 緊急短期入所受入加算 = 緊急短期入所受入あり } )
-> 単位数(827)
| "長期利用者に対して提供する場合は-30単位"
: ( 併設型短期入所生活介護費Ⅰ, 要介護3
, 算定条件 { ...注なし, 長期利用 = 長期利用者である } )
-> 単位数(707)
| "夜勤基準・定員超過・送迎を左から順に重ねる"
: ( 単独型短期入所生活介護費Ⅰ, 要介護5
, 算定条件
{ ...注なし
, 夜勤を行う職員の勤務条件基準 = 満たさない
, 定員超過又は員数不足 = 入所定員を超える
, 送迎 = 送迎を行う
} )
-> 単位数(806)
| "ユニット型も同じ列を通る"
: ( 単独型ユニット型短期入所生活介護費, 要介護1
, 算定条件 { ...注なし, 夜勤職員配置加算 = 夜勤職員配置加算ⅢⅣ } )
-> 単位数(758)
| "単独型(Ⅱ)も同じ列を通る"
: (単独型短期入所生活介護費Ⅱ, 要介護2, 算定条件 { ...注なし, 送迎 = 送迎を行う }) -> 単位数(891)
| "併設型(Ⅱ)も同じ列を通る"
: (併設型短期入所生活介護費Ⅱ, 要介護4, 算定条件 { ...注なし, 送迎 = 送迎を行う }) -> 単位数(990)
| "経過的単独型ユニット型も同じ列を通る"
: (経過的単独型ユニット型短期入所生活介護費, 要介護5, 注なし) -> 単位数(1017)
| "経過的併設型ユニット型も同じ列を通る"
: (経過的併設型ユニット型短期入所生活介護費, 要介護1, 注なし) -> 単位数(696)
// ------------------------------------------------ ハからチまでの加算
example 在宅中重度者受入加算の単位数を求める
| "(Ⅰ)又は(Ⅲ)を算定している場合は421単位" : (看護体制加算ⅠまたはⅢを算定) -> 単位数(421)
| "(Ⅱ)又は(Ⅳ)を算定している場合は417単位" : (看護体制加算ⅡまたはⅣを算定) -> 単位数(417)
| "いずれも算定している場合は413単位" : (いずれの看護体制加算も算定) -> 単位数(413)
| "算定していない場合は425単位" : (看護体制加算を算定していない) -> 単位数(425)
example 月の所定単位数を求める
| "1件もなければ0" : ([]) -> 単位数(0)
| "1日だけならその単位数" : ([単位数(737)]) -> 単位数(737)
| "3日分と療養食加算" : ([単位数(737), 単位数(737), 単位数(737), 単位数(24)]) -> 単位数(2235)
| "0単位の項目が混ざっても合計は変わらない" : ([単位数(0), 単位数(100)]) -> 単位数(100)
example 処遇改善加算の単位数を求める
| "算定しない" : (単位数(10000), 処遇改善加算なし) -> 単位数(0)
| "(Ⅰ)は83/1000" : (単位数(10000), 処遇改善加算Ⅰ) -> 単位数(830)
| "(Ⅱ)は60/1000" : (単位数(10000), 処遇改善加算Ⅱ) -> 単位数(600)
| "(Ⅲ)は33/1000" : (単位数(10000), 処遇改善加算Ⅲ) -> 単位数(330)
| "端数は四捨五入する" : (単位数(2235), 処遇改善加算Ⅰ) -> 単位数(186)
| "所定単位数が0なら0" : (単位数(0), 処遇改善加算Ⅰ) -> 単位数(0)
example 特定処遇改善加算の単位数を求める
| "算定しない" : (単位数(10000), 特定処遇改善加算なし) -> 単位数(0)
| "(Ⅰ)は27/1000" : (単位数(10000), 特定処遇改善加算Ⅰ) -> 単位数(270)
| "(Ⅱ)は23/1000" : (単位数(10000), 特定処遇改善加算Ⅱ) -> 単位数(230)
| "端数は四捨五入する" : (単位数(2235), 特定処遇改善加算Ⅰ) -> 単位数(60)
| "所定単位数が0なら0" : (単位数(0), 特定処遇改善加算Ⅰ) -> 単位数(0)
// 表の列を1つずつ立てて、その列がどの記号になるかを見る。
// `souther examples` が「no row is in ...」で名指ししてきたぶん。
example 注の記号を並べる
| "定員超過又は員数不足 = 入所定員を超える"
: (併設型短期入所生活介護費Ⅰ, 算定条件 { ...注なし, 定員超過又は員数不足 = 入所定員を超える })
-> [割合乗算 { 分子 = 70, 分母 = 100 }]
| "定員超過又は員数不足 = 介護看護職員の員数が基準に満たない"
: (併設型短期入所生活介護費Ⅰ, 算定条件 { ...注なし, 定員超過又は員数不足 = 介護看護職員の員数が基準に満たない })
-> [割合乗算 { 分子 = 70, 分母 = 100 }]
| "共生型短期入所生活介護 = 指定短期入所事業所が行う"
: (併設型短期入所生活介護費Ⅰ, 算定条件 { ...注なし, 共生型短期入所生活介護 = 指定短期入所事業所が行う })
-> [割合乗算 { 分子 = 92, 分母 = 100 }]
| "生活相談員配置等加算 = 生活相談員配置等あり"
: (併設型短期入所生活介護費Ⅰ, 算定条件 { ...注なし, 生活相談員配置等加算 = 生活相談員配置等あり })
-> [単位加算 { 単位 = 単位数(13) }]
| "生活機能向上連携加算 = 生活機能向上連携加算Ⅰ"
: (併設型短期入所生活介護費Ⅰ, 算定条件 { ...注なし, 生活機能向上連携加算 = 生活機能向上連携加算Ⅰ })
-> [単位加算 { 単位 = 単位数(100) }]
| "生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算あり"
: (併設型短期入所生活介護費Ⅰ, 算定条件 { ...注なし, 生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算あり })
-> [単位加算 { 単位 = 単位数(100) }]
| "生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算なし"
: (併設型短期入所生活介護費Ⅰ, 算定条件 { ...注なし, 生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算なし })
-> [単位加算 { 単位 = 単位数(200) }]
| "専従の機能訓練指導員 = 配置している"
: (併設型短期入所生活介護費Ⅰ, 算定条件 { ...注なし, 専従の機能訓練指導員 = 配置している })
-> [単位加算 { 単位 = 単位数(12) }]
| "個別機能訓練加算 = 個別機能訓練加算あり"
: (併設型短期入所生活介護費Ⅰ, 算定条件 { ...注なし, 個別機能訓練加算 = 個別機能訓練加算あり })
-> [単位加算 { 単位 = 単位数(56) }]
| "看護体制加算 = 看護体制加算Ⅰ"
: (併設型短期入所生活介護費Ⅰ, 算定条件 { ...注なし, 看護体制加算 = 看護体制加算Ⅰ })
-> [単位加算 { 単位 = 単位数(4) }]
| "看護体制加算 = 看護体制加算Ⅱ"
: (併設型短期入所生活介護費Ⅰ, 算定条件 { ...注なし, 看護体制加算 = 看護体制加算Ⅱ })
-> [単位加算 { 単位 = 単位数(8) }]
| "医療連携強化加算 = 医療連携強化あり"
: (併設型短期入所生活介護費Ⅰ, 算定条件 { ...注なし, 医療連携強化加算 = 医療連携強化あり })
-> [単位加算 { 単位 = 単位数(58) }]
// 表の列を1つずつ立てて、基本部分に当てた答えを見る。
// `souther examples` が「no row is in ...」で名指ししてきたぶん。
example 単位数を求める
| "利用定員 = 三十人以上五十人以下 と 看護体制加算Ⅳ"
: (併設型短期入所生活介護費Ⅰ, 要介護3, 算定条件 { ...注なし, 利用定員 = 三十人以上五十人以下, 看護体制加算 = 看護体制加算Ⅳ })
-> 単位数(750)
// `souther examples --adequacy classes --generate` が書き出した行に、
// 表の該当セル(match 腕)から答えを入れたもの。
example 注の記号を並べる
| "条件.緊急短期入所受入加算=緊急短期入所受入あり"
: (単独型短期入所生活介護費Ⅰ, 算定条件 { ...注なし, 緊急短期入所受入加算 = 緊急短期入所受入あり })
-> [単位加算 { 単位 = 単位数(90) }]
| "条件.若年性認知症利用者受入加算=若年性認知症受入あり"
: (単独型短期入所生活介護費Ⅰ, 算定条件 { ...注なし, 若年性認知症利用者受入加算 = 若年性認知症受入あり })
-> [単位加算 { 単位 = 単位数(120) }]
| "条件.認知症行動心理症状緊急対応加算=緊急対応あり"
: (単独型短期入所生活介護費Ⅰ, 算定条件 { ...注なし, 認知症行動心理症状緊急対応加算 = 緊急対応あり })
-> [単位加算 { 単位 = 単位数(200) }]
// `souther examples --adequacy classes --generate` が書き出した行に、
// 表の該当セル(match 腕)から答えを入れたもの。
example 単位数を求める
| "条件.夜勤職員配置加算=夜勤職員配置加算ⅠⅡ"
: (単独型短期入所生活介護費Ⅰ, 要介護1, 算定条件 { ...注なし, 夜勤職員配置加算 = 夜勤職員配置加算ⅠⅡ })
-> 単位数(651)
module kaigo.短期入所生活介護 exposing
( 短期入所生活介護費の区分
, 単独型短期入所生活介護費Ⅰ, 単独型短期入所生活介護費Ⅱ
, 併設型短期入所生活介護費Ⅰ, 併設型短期入所生活介護費Ⅱ
, ユニット型短期入所生活介護費の区分
, 単独型ユニット型短期入所生活介護費, 経過的単独型ユニット型短期入所生活介護費
, 併設型ユニット型短期入所生活介護費, 経過的併設型ユニット型短期入所生活介護費
, 短期入所生活介護の区分, 基本部分の単位数を求める
, 夜勤を行う職員の勤務条件基準, 満たさない, 満たす
, 定員超過又は員数不足, 該当しない, 入所定員を超える, 介護看護職員の員数が基準に満たない
, ユニットケアにおける体制, 未整備である, 整備されている
, 共生型短期入所生活介護, 共生型でない, 指定短期入所事業所が行う
, 生活相談員配置等加算, 生活相談員配置等あり, 生活相談員配置等なし
, 生活機能向上連携加算, 生活機能向上連携加算なし, 生活機能向上連携加算Ⅰ
, 生活機能向上連携加算Ⅱ個別機能訓練加算あり, 生活機能向上連携加算Ⅱ個別機能訓練加算なし
, 専従の機能訓練指導員, 配置している, 配置していない
, 個別機能訓練加算, 個別機能訓練加算あり, 個別機能訓練加算なし
, 利用定員, 二十九人以下, 三十人以上五十人以下
, 看護体制加算, 看護体制加算なし, 看護体制加算Ⅰ, 看護体制加算Ⅱ, 看護体制加算Ⅲ, 看護体制加算Ⅳ
, 医療連携強化加算, 医療連携強化あり, 医療連携強化なし
, 夜勤職員配置加算, 夜勤職員配置加算なし, 夜勤職員配置加算ⅠⅡ, 夜勤職員配置加算ⅢⅣ
, 認知症行動心理症状緊急対応加算, 緊急対応あり, 緊急対応なし
, 若年性認知症利用者受入加算, 若年性認知症受入あり, 若年性認知症受入なし
, 送迎, 送迎を行う, 送迎を行わない
, 緊急短期入所受入加算, 緊急短期入所受入あり, 緊急短期入所受入なし
, 長期利用, 長期利用者である, 長期利用者ではない
, 算定条件, 注の記号を並べる, 単位数を求める
, 療養食加算, 在宅中重度者受入加算, 看護体制加算ⅠまたはⅢを算定, 看護体制加算ⅡまたはⅣを算定
, いずれの看護体制加算も算定, 看護体制加算を算定していない
, 在宅中重度者受入加算の単位数を求める
, 認知症専門ケア加算Ⅰ, 認知症専門ケア加算Ⅱ
, サービス提供体制強化加算Ⅰ, サービス提供体制強化加算Ⅱ, サービス提供体制強化加算Ⅲ
, 介護職員処遇改善加算, 処遇改善加算Ⅰ, 処遇改善加算Ⅱ, 処遇改善加算Ⅲ, 処遇改善加算なし
, 介護職員等特定処遇改善加算, 特定処遇改善加算Ⅰ, 特定処遇改善加算Ⅱ, 特定処遇改善加算なし
, 月の所定単位数を求める, 処遇改善加算の単位数を求める, 特定処遇改善加算の単位数を求める
)
// 「介護報酬の算定構造」Ⅰ-8 短期入所生活介護費(介護9ページ)。
// https://www.wam.go.jp/gyoseiShiryou-files/documents/2022/0322211552821/202203a.pdf
//
// 基本部分はイ(従来型)とロ(ユニット型)に分かれ、注の列もそこで効き方が変わる。
// ユニットケアにおける体制が未整備である場合の減算はロにだけ置かれ、
// 夜勤職員配置加算はイとロで単位数が違う。
import kaigo.共通
( 単位数, 算定記号, 単位加算, 単位減算, 割合乗算
, 要介護度, 要介護1, 要介護2, 要介護3, 要介護4, 要介護5
, 記号を適用する, 記号を順に適用する
)
// ---------------------------------------------------------------- 基本部分
// イ 短期入所生活介護費(1日につき)
// (1) 単独型短期入所生活介護費
// (一) 単独型短期入所生活介護費(Ⅰ)<従来型個室>
// (二) 単独型短期入所生活介護費(Ⅱ)<多床室>
// (2) 併設型短期入所生活介護費
// (一) 併設型短期入所生活介護費(Ⅰ)<従来型個室>
// (二) 併設型短期入所生活介護費(Ⅱ)<多床室>
data 短期入所生活介護費の区分 =
単独型短期入所生活介護費Ⅰ
| 単独型短期入所生活介護費Ⅱ
| 併設型短期入所生活介護費Ⅰ
| 併設型短期入所生活介護費Ⅱ
// ロ ユニット型短期入所生活介護費(1日につき)
// (1) 単独型ユニット型短期入所生活介護費
// (一) 単独型ユニット型短期入所生活介護費 <ユニット型個室>
// (二) 経過的単独型ユニット型短期入所生活介護費 <ユニット型個室的多床室>
// (2) 併設型ユニット型短期入所生活介護費
// (一) 併設型ユニット型短期入所生活介護費 <ユニット型個室>
// (二) 経過的併設型ユニット型短期入所生活介護費 <ユニット型個室的多床室>
data ユニット型短期入所生活介護費の区分 =
単独型ユニット型短期入所生活介護費
| 経過的単独型ユニット型短期入所生活介護費
| 併設型ユニット型短期入所生活介護費
| 経過的併設型ユニット型短期入所生活介護費
data 短期入所生活介護の区分 = 短期入所生活介護費の区分 | ユニット型短期入所生活介護費の区分
behavior 基本部分の単位数を求める : (区分: 短期入所生活介護の区分, 要介護度: 要介護度) -> 単位数
constructs 単位数
// 単独型(Ⅰ)(Ⅱ) 638 / 707 / 778 / 847 / 916
// 併設型(Ⅰ)(Ⅱ) 596 / 665 / 737 / 806 / 874
// 単独型ユニット型 738 / 806 / 881 / 949 / 1,017
// 併設型ユニット型 696 / 764 / 838 / 908 / 976
let 基本部分の単位数を求める (区分, 要介護度) =
match 区分 with
| 短期入所生活介護費の区分 as 従来型 ->
match 従来型 with
| 単独型短期入所生活介護費Ⅰ ->
match 要介護度 with
| 要介護1 -> 単位数(638)
| 要介護2 -> 単位数(707)
| 要介護3 -> 単位数(778)
| 要介護4 -> 単位数(847)
| 要介護5 -> 単位数(916)
| 単独型短期入所生活介護費Ⅱ ->
match 要介護度 with
| 要介護1 -> 単位数(638)
| 要介護2 -> 単位数(707)
| 要介護3 -> 単位数(778)
| 要介護4 -> 単位数(847)
| 要介護5 -> 単位数(916)
| 併設型短期入所生活介護費Ⅰ ->
match 要介護度 with
| 要介護1 -> 単位数(596)
| 要介護2 -> 単位数(665)
| 要介護3 -> 単位数(737)
| 要介護4 -> 単位数(806)
| 要介護5 -> 単位数(874)
| 併設型短期入所生活介護費Ⅱ ->
match 要介護度 with
| 要介護1 -> 単位数(596)
| 要介護2 -> 単位数(665)
| 要介護3 -> 単位数(737)
| 要介護4 -> 単位数(806)
| 要介護5 -> 単位数(874)
| ユニット型短期入所生活介護費の区分 as ユニット型 ->
match ユニット型 with
| 単独型ユニット型短期入所生活介護費 ->
match 要介護度 with
| 要介護1 -> 単位数(738)
| 要介護2 -> 単位数(806)
| 要介護3 -> 単位数(881)
| 要介護4 -> 単位数(949)
| 要介護5 -> 単位数(1017)
| 経過的単独型ユニット型短期入所生活介護費 ->
match 要介護度 with
| 要介護1 -> 単位数(738)
| 要介護2 -> 単位数(806)
| 要介護3 -> 単位数(881)
| 要介護4 -> 単位数(949)
| 要介護5 -> 単位数(1017)
| 併設型ユニット型短期入所生活介護費 ->
match 要介護度 with
| 要介護1 -> 単位数(696)
| 要介護2 -> 単位数(764)
| 要介護3 -> 単位数(838)
| 要介護4 -> 単位数(908)
| 要介護5 -> 単位数(976)
| 経過的併設型ユニット型短期入所生活介護費 ->
match 要介護度 with
| 要介護1 -> 単位数(696)
| 要介護2 -> 単位数(764)
| 要介護3 -> 単位数(838)
| 要介護4 -> 単位数(908)
| 要介護5 -> 単位数(976)
// 注 夜勤を行う職員の勤務条件基準を満たさない場合 ×97/100
data 夜勤を行う職員の勤務条件基準 = 満たさない | 満たす
// 注 利用者の数及び入所者の数の合計数が入所定員を超える場合 ×70/100
// 又は 介護・看護職員の員数が基準に満たない場合 ×70/100
data 定員超過又は員数不足 = 該当しない | 入所定員を超える | 介護看護職員の員数が基準に満たない
// 注 常勤のユニットリーダーをユニット毎に配置していない等ユニットケアにおける体制が
// 未整備である場合 ×97/100(ロ ユニット型にだけ枠が置かれている)
data ユニットケアにおける体制 = 未整備である | 整備されている
// 注 共生型短期入所生活介護を行う場合 指定短期入所事業所が行う場合 ×92/100
data 共生型短期入所生活介護 = 共生型でない | 指定短期入所事業所が行う
// 注 生活相談員配置等加算 1日につき +13単位
data 生活相談員配置等加算 = 生活相談員配置等あり | 生活相談員配置等なし
// 注 生活機能向上連携加算(Ⅰ)1月につき +100単位(3月に1回を限度)
// (Ⅱ)1月につき +200単位
// ※ただし、個別機能訓練加算を算定している場合は、1月につき +100単位
data 生活機能向上連携加算 =
生活機能向上連携加算なし
| 生活機能向上連携加算Ⅰ
| 生活機能向上連携加算Ⅱ個別機能訓練加算あり
| 生活機能向上連携加算Ⅱ個別機能訓練加算なし
// 注 専従の機能訓練指導員を配置している場合 1日につき +12単位
data 専従の機能訓練指導員 = 配置している | 配置していない
// 注 個別機能訓練加算 1日につき +56単位
data 個別機能訓練加算 = 個別機能訓練加算あり | 個別機能訓練加算なし
// 看護体制加算(Ⅲ)(Ⅳ)は利用定員で単位数が変わる。
data 利用定員 = 二十九人以下 | 三十人以上五十人以下
// 注 看護体制加算(Ⅰ)1日につき +4単位
// 看護体制加算(Ⅱ)1日につき +8単位
// 看護体制加算(Ⅲ)利用定員29人以下 +12単位/利用定員30人以上50人以下 +6単位
// 看護体制加算(Ⅳ)利用定員29人以下 +23単位/利用定員30人以上50人以下 +13単位
data 看護体制加算 =
看護体制加算なし | 看護体制加算Ⅰ | 看護体制加算Ⅱ | 看護体制加算Ⅲ | 看護体制加算Ⅳ
// 注 医療連携強化加算 1日につき +58単位
data 医療連携強化加算 = 医療連携強化あり | 医療連携強化なし
// 注 夜勤職員配置加算(Ⅰ)・(Ⅱ)イは1日につき +13単位/ロは1日につき +18単位
// 夜勤職員配置加算(Ⅲ)・(Ⅳ)イは1日につき +15単位/ロは1日につき +20単位
data 夜勤職員配置加算 = 夜勤職員配置加算なし | 夜勤職員配置加算ⅠⅡ | 夜勤職員配置加算ⅢⅣ
// 注 認知症行動・心理症状緊急対応加算 1日につき +200単位(7日間を限度)
data 認知症行動心理症状緊急対応加算 = 緊急対応あり | 緊急対応なし
// 注 若年性認知症利用者受入加算 1日につき +120単位
data 若年性認知症利用者受入加算 = 若年性認知症受入あり | 若年性認知症受入なし
// 注 利用者に対して送迎を行う場合 片道につき +184単位
data 送迎 = 送迎を行う | 送迎を行わない
// 注 緊急短期入所受入加算 1日につき +90単位(7日(やむを得ない事情がある場合は14日)を限度)
data 緊急短期入所受入加算 = 緊急短期入所受入あり | 緊急短期入所受入なし
// 注 長期利用者に対して短期入所生活介護を提供する場合 1日につき -30単位
data 長期利用 = 長期利用者である | 長期利用者ではない
data 算定条件 =
{ 夜勤を行う職員の勤務条件基準: 夜勤を行う職員の勤務条件基準
, 定員超過又は員数不足: 定員超過又は員数不足
, ユニットケアにおける体制: ユニットケアにおける体制
, 共生型短期入所生活介護: 共生型短期入所生活介護
, 生活相談員配置等加算: 生活相談員配置等加算
, 生活機能向上連携加算: 生活機能向上連携加算
, 専従の機能訓練指導員: 専従の機能訓練指導員
, 個別機能訓練加算: 個別機能訓練加算
, 利用定員: 利用定員
, 看護体制加算: 看護体制加算
, 医療連携強化加算: 医療連携強化加算
, 夜勤職員配置加算: 夜勤職員配置加算
, 認知症行動心理症状緊急対応加算: 認知症行動心理症状緊急対応加算
, 若年性認知症利用者受入加算: 若年性認知症利用者受入加算
, 送迎: 送迎
, 緊急短期入所受入加算: 緊急短期入所受入加算
, 長期利用: 長期利用
}
let 看護体制加算の単位 (区分: 看護体制加算, 定員: 利用定員): List<算定記号> =
match 区分 with
| 看護体制加算Ⅰ -> [単位加算 { 単位 = 単位数(4) }]
| 看護体制加算Ⅱ -> [単位加算 { 単位 = 単位数(8) }]
| 看護体制加算Ⅲ ->
match 定員 with
| 二十九人以下 -> [単位加算 { 単位 = 単位数(12) }]
| 三十人以上五十人以下 -> [単位加算 { 単位 = 単位数(6) }]
| 看護体制加算Ⅳ ->
match 定員 with
| 二十九人以下 -> [単位加算 { 単位 = 単位数(23) }]
| 三十人以上五十人以下 -> [単位加算 { 単位 = 単位数(13) }]
| 看護体制加算なし -> []
behavior 注の記号を並べる : (区分: 短期入所生活介護の区分, 条件: 算定条件) -> List<算定記号>
constructs 単位数, 単位加算, 単位減算, 割合乗算
let 注の記号を並べる (区分, 条件) =
(match 条件.夜勤を行う職員の勤務条件基準 with
| 満たさない -> [割合乗算 { 分子 = 97, 分母 = 100 }]
| 満たす -> [])
++ (match 条件.定員超過又は員数不足 with
| 入所定員を超える -> [割合乗算 { 分子 = 70, 分母 = 100 }]
| 介護看護職員の員数が基準に満たない -> [割合乗算 { 分子 = 70, 分母 = 100 }]
| 該当しない -> [])
++ (match 区分 with
// ユニットケアにおける体制の減算はロにだけ枠がある。
| 短期入所生活介護費の区分 -> []
| ユニット型短期入所生活介護費の区分 ->
match 条件.ユニットケアにおける体制 with
| 未整備である -> [割合乗算 { 分子 = 97, 分母 = 100 }]
| 整備されている -> [])
++ (match 条件.共生型短期入所生活介護 with
| 指定短期入所事業所が行う -> [割合乗算 { 分子 = 92, 分母 = 100 }]
| 共生型でない -> [])
++ (match 条件.生活相談員配置等加算 with
| 生活相談員配置等あり -> [単位加算 { 単位 = 単位数(13) }]
| 生活相談員配置等なし -> [])
++ (match 条件.生活機能向上連携加算 with
| 生活機能向上連携加算Ⅰ -> [単位加算 { 単位 = 単位数(100) }]
| 生活機能向上連携加算Ⅱ個別機能訓練加算なし -> [単位加算 { 単位 = 単位数(200) }]
| 生活機能向上連携加算Ⅱ個別機能訓練加算あり -> [単位加算 { 単位 = 単位数(100) }]
| 生活機能向上連携加算なし -> [])
++ (match 条件.専従の機能訓練指導員 with
| 配置している -> [単位加算 { 単位 = 単位数(12) }]
| 配置していない -> [])
++ (match 条件.個別機能訓練加算 with
| 個別機能訓練加算あり -> [単位加算 { 単位 = 単位数(56) }]
| 個別機能訓練加算なし -> [])
++ 看護体制加算の単位(条件.看護体制加算, 条件.利用定員)
++ (match 条件.医療連携強化加算 with
| 医療連携強化あり -> [単位加算 { 単位 = 単位数(58) }]
| 医療連携強化なし -> [])
++ (match 区分 with
| 短期入所生活介護費の区分 ->
match 条件.夜勤職員配置加算 with
| 夜勤職員配置加算ⅠⅡ -> [単位加算 { 単位 = 単位数(13) }]
| 夜勤職員配置加算ⅢⅣ -> [単位加算 { 単位 = 単位数(15) }]
| 夜勤職員配置加算なし -> []
| ユニット型短期入所生活介護費の区分 ->
match 条件.夜勤職員配置加算 with
| 夜勤職員配置加算ⅠⅡ -> [単位加算 { 単位 = 単位数(18) }]
| 夜勤職員配置加算ⅢⅣ -> [単位加算 { 単位 = 単位数(20) }]
| 夜勤職員配置加算なし -> [])
++ (match 条件.認知症行動心理症状緊急対応加算 with
| 緊急対応あり -> [単位加算 { 単位 = 単位数(200) }]
| 緊急対応なし -> [])
++ (match 条件.若年性認知症利用者受入加算 with
| 若年性認知症受入あり -> [単位加算 { 単位 = 単位数(120) }]
| 若年性認知症受入なし -> [])
++ (match 条件.送迎 with
| 送迎を行う -> [単位加算 { 単位 = 単位数(184) }]
| 送迎を行わない -> [])
++ (match 条件.緊急短期入所受入加算 with
| 緊急短期入所受入あり -> [単位加算 { 単位 = 単位数(90) }]
| 緊急短期入所受入なし -> [])
++ (match 条件.長期利用 with
| 長期利用者である -> [単位減算 { 単位 = 単位数(30) }]
| 長期利用者ではない -> [])
behavior 単位数を求める :
(区分: 短期入所生活介護の区分, 要介護度: 要介護度, 条件: 算定条件) -> 単位数
let 単位数を求める (区分, 要介護度, 条件) =
記号を順に適用する(基本部分の単位数を求める(区分, 要介護度), 注の記号を並べる(区分, 条件))
// ハ 療養食加算 1回につき 8単位を加算(1日に3回を限度)
let 療養食加算 = 単位数(8)
// ニ 在宅中重度者受入加算
// (1) 看護体制加算(Ⅰ)又は(Ⅲ)を算定している場合 1日につき 421単位を加算
// (2) 看護体制加算(Ⅱ)又は(Ⅳ)を算定している場合 1日につき 417単位を加算
// (3) (1)(2)いずれの看護体制加算も算定している場合 1日につき 413単位を加算
// (4) 看護体制加算を算定していない場合 1日につき 425単位を加算
data 在宅中重度者受入加算 =
看護体制加算ⅠまたはⅢを算定
| 看護体制加算ⅡまたはⅣを算定
| いずれの看護体制加算も算定
| 看護体制加算を算定していない
behavior 在宅中重度者受入加算の単位数を求める : (区分: 在宅中重度者受入加算) -> 単位数
constructs 単位数
let 在宅中重度者受入加算の単位数を求める (区分) =
match 区分 with
| 看護体制加算ⅠまたはⅢを算定 -> 単位数(421)
| 看護体制加算ⅡまたはⅣを算定 -> 単位数(417)
| いずれの看護体制加算も算定 -> 単位数(413)
| 看護体制加算を算定していない -> 単位数(425)
// ホ 認知症専門ケア加算(Ⅰ)1日につき 3単位を加算/(Ⅱ)1日につき 4単位を加算
let 認知症専門ケア加算Ⅰ = 単位数(3)
let 認知症専門ケア加算Ⅱ = 単位数(4)
// ヘ サービス提供体制強化加算(Ⅰ)1日につき 22単位/(Ⅱ)18単位/(Ⅲ)6単位
let サービス提供体制強化加算Ⅰ = 単位数(22)
let サービス提供体制強化加算Ⅱ = 単位数(18)
let サービス提供体制強化加算Ⅲ = 単位数(6)
// ト 介護職員処遇改善加算(Ⅰ)1月につき +所定単位×83/1000
// (Ⅱ) +所定単位×60/1000
// (Ⅲ) +所定単位×33/1000
// 注 所定単位は、イからヘまでにより算定した単位数の合計
data 介護職員処遇改善加算 = 処遇改善加算Ⅰ | 処遇改善加算Ⅱ | 処遇改善加算Ⅲ | 処遇改善加算なし
// チ 介護職員等特定処遇改善加算(Ⅰ)1月につき +所定単位×27/1000
// (Ⅱ) +所定単位×23/1000
// 注 所定単位は、イからヘまでにより算定した単位数の合計
data 介護職員等特定処遇改善加算 = 特定処遇改善加算Ⅰ | 特定処遇改善加算Ⅱ | 特定処遇改善加算なし
behavior 月の所定単位数を求める : (イからヘまでの単位数: List<単位数>) -> 単位数
constructs 単位数
let 月の所定単位数を求める (イからヘまでの単位数) =
単位数(List.sum(List.map(u -> u.value, イからヘまでの単位数)))
behavior 処遇改善加算の単位数を求める : (所定単位数: 単位数, 区分: 介護職員処遇改善加算) -> 単位数
constructs 単位数, 割合乗算
let 処遇改善加算の単位数を求める (所定単位数, 区分) =
match 区分 with
| 処遇改善加算Ⅰ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 83, 分母 = 1000 })
| 処遇改善加算Ⅱ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 60, 分母 = 1000 })
| 処遇改善加算Ⅲ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 33, 分母 = 1000 })
| 処遇改善加算なし -> 単位数(0)
behavior 特定処遇改善加算の単位数を求める : (所定単位数: 単位数, 区分: 介護職員等特定処遇改善加算) -> 単位数
constructs 単位数, 割合乗算
let 特定処遇改善加算の単位数を求める (所定単位数, 区分) =
match 区分 with
| 特定処遇改善加算Ⅰ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 27, 分母 = 1000 })
| 特定処遇改善加算Ⅱ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 23, 分母 = 1000 })
| 特定処遇改善加算なし -> 単位数(0)
examples for kaigo.福祉用具貸与
// 表の各セルと、行だけが名指す値。モデル本体と分けてある。
example 貸与費の単位数を求める
| "10,000円を10円/単位で割ると1,000単位" : (円(10000), 単位の単価(10m)) -> 単位数(1000)
| "地域単価が10.84円なら923単位" : (円(10000), 単位の単価(10.84m)) -> 単位数(923)
| "費用が0円なら0単位" : (円(0), 単位の単価(10m)) -> 単位数(0)
| "端数は四捨五入する" : (円(15), 単位の単価(10m)) -> 単位数(2)
| "0.5未満は切り捨てる" : (円(14), 単位の単価(10m)) -> 単位数(1)
example 特別地域の加算を求める
| "交通費をそのまま単位数にする" : (円(1000), 単位の単価(10m), 単位数(1000)) -> 単位数(100)
| "貸与費の100/100を限度とする" : (円(20000), 単位の単価(10m), 単位数(1000)) -> 単位数(1000)
| "ちょうど限度に届く" : (円(10000), 単位の単価(10m), 単位数(1000)) -> 単位数(1000)
| "交通費が0なら0" : (円(0), 単位の単価(10m), 単位数(1000)) -> 単位数(0)
| "貸与費が0なら加算も0" : (円(1000), 単位の単価(10m), 単位数(0)) -> 単位数(0)
example 小規模事業所の加算を求める
| "交通費の2/3を単位数にする" : (円(1500), 単位の単価(10m), 単位数(1000)) -> 単位数(100)
| "貸与費の2/3を限度とする" : (円(30000), 単位の単価(10m), 単位数(1000)) -> 単位数(667)
| "交通費が0なら0" : (円(0), 単位の単価(10m), 単位数(1000)) -> 単位数(0)
| "貸与費が0なら加算も0" : (円(1000), 単位の単価(10m), 単位数(0)) -> 単位数(0)
example 中山間地域居住の加算を求める
| "交通費の1/3を単位数にする" : (円(3000), 単位の単価(10m), 単位数(1000)) -> 単位数(100)
| "貸与費の1/3を限度とする" : (円(30000), 単位の単価(10m), 単位数(1000)) -> 単位数(333)
| "交通費が0なら0" : (円(0), 単位の単価(10m), 単位数(1000)) -> 単位数(0)
| "貸与費が0なら加算も0" : (円(1000), 単位の単価(10m), 単位数(0)) -> 単位数(0)
example 種目を算定できるかを求める
| "車いすは要介護1では算定しない" : (車いす, 要介護1) -> 算定しない
| "車いすは要介護2から算定できる" : (車いす, 要介護2) -> 算定できる
| "車いす付属品も要介護1では算定しない" : (車いす付属品, 要介護1) -> 算定しない
| "特殊寝台も要介護1では算定しない" : (特殊寝台, 要介護1) -> 算定しない
| "特殊寝台付属品も要介護1では算定しない" : (特殊寝台付属品, 要介護1) -> 算定しない
| "床ずれ防止用具も要介護1では算定しない" : (床ずれ防止用具, 要介護1) -> 算定しない
| "体位変換器も要介護1では算定しない" : (体位変換器, 要介護1) -> 算定しない
| "認知症老人徘徊感知機器も同じ" : (認知症老人徘徊感知機器, 要介護1) -> 算定しない
| "移動用リフトも同じ" : (移動用リフト, 要介護1) -> 算定しない
| "移動用リフトは要介護5なら算定できる" : (移動用リフト, 要介護5) -> 算定できる
| "手すりは要介護1でも算定できる" : (手すり, 要介護1) -> 算定できる
| "スロープも要介護1で算定できる" : (スロープ, 要介護1) -> 算定できる
| "歩行器も要介護1で算定できる" : (歩行器, 要介護1) -> 算定できる
| "歩行補助つえも要介護1で算定できる" : (歩行補助つえ, 要介護1) -> 算定できる
| "自動排泄処理装置は要介護1では算定しない" : (自動排泄処理装置, 要介護1) -> 算定しない
| "自動排泄処理装置は要介護2でも算定しない" : (自動排泄処理装置, 要介護2) -> 算定しない
| "自動排泄処理装置は要介護3でも算定しない" : (自動排泄処理装置, 要介護3) -> 算定しない
| "自動排泄処理装置は要介護4から算定できる" : (自動排泄処理装置, 要介護4) -> 算定できる
| "自動排泄処理装置は要介護5でも算定できる" : (自動排泄処理装置, 要介護5) -> 算定できる
| "車いすは要介護3でも算定できる" : (車いす, 要介護3) -> 算定できる
| "車いすは要介護4でも算定できる" : (車いす, 要介護4) -> 算定できる
| "車いすは要介護5でも算定できる" : (車いす, 要介護5) -> 算定できる
module kaigo.福祉用具貸与 exposing
( 種目, 車いす, 車いす付属品, 特殊寝台, 特殊寝台付属品, 床ずれ防止用具, 体位変換器
, 手すり, スロープ, 歩行器, 歩行補助つえ, 認知症老人徘徊感知機器, 移動用リフト, 自動排泄処理装置
, 円, 単位の単価, 貸与費の単位数を求める
, 特別地域福祉用具貸与加算, 中山間地域等における小規模事業所加算
, 中山間地域等に居住する者へのサービス提供加算
, 交通費の加算, 特別地域の加算を求める, 小規模事業所の加算を求める, 中山間地域居住の加算を求める
, 算定できるか, 算定できる, 算定しない
, 種目を算定できるかを求める
)
// 「介護報酬の算定構造」Ⅰ-11 福祉用具貸与費(介護15ページ)。
// https://www.wam.go.jp/gyoseiShiryou-files/documents/2022/0322211552821/202203a.pdf
//
// この表だけは単位数が書かれていない。基本部分は
// 「現に指定福祉用具貸与に要した費用の額を当該事業所の所在地に適用される
// 1単位の単価で除して得た単位数」
// で、注の3列も同じく金額を単価で割って単位数にする形をとる。
import kaigo.共通 ( 単位数, 記号を適用する, 割合乗算, 要介護度, 要介護1, 要介護2, 要介護3, 要介護4, 要介護5 )
// 表に並んでいる13の種目
data 種目 =
車いす
| 車いす付属品
| 特殊寝台
| 特殊寝台付属品
| 床ずれ防止用具
| 体位変換器
| 手すり
| スロープ
| 歩行器
| 歩行補助つえ
| 認知症老人徘徊感知機器
| 移動用リフト
| 自動排泄処理装置
data 円 = Int
invariant value >= 0
// 事業所の所在地に適用される1単位の単価。円で表すと小数が出るので Decimal で持つ。
data 単位の単価 = Decimal
invariant 正である = value > 0m
// 基本部分
// 現に指定福祉用具貸与に要した費用の額を、当該事業所の所在地に適用される
// 1単位の単価で除して得た単位数
// 除したあとの端数の扱いは表に書かれていない。ここでは他の単位数と同じく四捨五入する。
behavior 貸与費の単位数を求める : (費用の額: 円, 単価: 単位の単価) -> 単位数
constructs 単位数
let 単価で割る (額: 円, 単価: 単位の単価): 単位数 = {
let 商 = Decimal.divide(Decimal.fromInt(額.value), 単価.value, 0, HALF_UP)
match 商 with
| Decimal as d -> 単位数(Decimal.toInt(HALF_UP, d))
| DivisionByZero -> unreachable "単価は正であることが型に書いてある"
}
let 貸与費の単位数を求める (費用の額, 単価) = 単価で割る(費用の額, 単価)
// 注 特別地域福祉用具貸与加算
// 交通費に相当する額を事業所の所在地に適用される1単位の単価で除して得た単位数を加算
// (個々の用具ごとに貸与費の100/100を限度)
data 特別地域福祉用具貸与加算
// 注 中山間地域等における小規模事業所加算
// 交通費に相当する額の2/3に相当する額を…で除して得た単位数を加算
// (個々の用具ごとに貸与費の2/3を限度)
data 中山間地域等における小規模事業所加算
// 注 中山間地域等に居住する者へのサービス提供加算
// 交通費に相当する額の1/3に相当する額を…で除して得た単位数を加算
// (個々の用具ごとに貸与費の1/3を限度)
data 中山間地域等に居住する者へのサービス提供加算
data 交通費の加算 =
特別地域福祉用具貸与加算
| 中山間地域等における小規模事業所加算
| 中山間地域等に居住する者へのサービス提供加算
behavior 特別地域の加算を求める : (交通費: 円, 単価: 単位の単価, 貸与費: 単位数) -> 単位数
constructs 単位数
let 特別地域の加算を求める (交通費, 単価, 貸与費) =
単位数(Int.min(単価で割る(交通費, 単価).value, 貸与費.value))
behavior 小規模事業所の加算を求める : (交通費: 円, 単価: 単位の単価, 貸与費: 単位数) -> 単位数
constructs 単位数, 割合乗算
let 小規模事業所の加算を求める (交通費, 単価, 貸与費) = {
let 二の三 = 割合乗算 { 分子 = 2, 分母 = 3 }
単位数(Int.min(
記号を適用する(単価で割る(交通費, 単価), 二の三).value,
記号を適用する(貸与費, 二の三).value))
}
behavior 中山間地域居住の加算を求める : (交通費: 円, 単価: 単位の単価, 貸与費: 単位数) -> 単位数
constructs 単位数, 割合乗算
let 中山間地域居住の加算を求める (交通費, 単価, 貸与費) = {
let 一の三 = 割合乗算 { 分子 = 1, 分母 = 3 }
単位数(Int.min(
記号を適用する(単価で割る(交通費, 単価), 一の三).value,
記号を適用する(貸与費, 一の三).value))
}
// ※ 要介護1の者については、車いす、車いす付属品、特殊寝台、特殊寝台付属品、床ずれ防止用具、
// 体位変換器、認知症老人徘徊感知機器、移動用リフトを算定しない。
// 自動排泄処理装置については要介護1から要介護3の者については算定しない。
// (ただし、別に厚生労働大臣が定める状態にある者を除く。)
//
// 但し書きの「別に厚生労働大臣が定める状態」はこの表の外にあるので、この behavior は
// 表に書かれている原則だけを答える。
data 算定できるか = 算定できる | 算定しない
behavior 種目を算定できるかを求める : (種目: 種目, 要介護度: 要介護度) -> 算定できるか
let 種目を算定できるかを求める (種目, 要介護度) =
match 種目 with
| 自動排泄処理装置 ->
match 要介護度 with
| 要介護1 -> 算定しない
| 要介護2 -> 算定しない
| 要介護3 -> 算定しない
| 要介護4 -> 算定できる
| 要介護5 -> 算定できる
| 車いす -> 要介護1では算定しない(要介護度)
| 車いす付属品 -> 要介護1では算定しない(要介護度)
| 特殊寝台 -> 要介護1では算定しない(要介護度)
| 特殊寝台付属品 -> 要介護1では算定しない(要介護度)
| 床ずれ防止用具 -> 要介護1では算定しない(要介護度)
| 体位変換器 -> 要介護1では算定しない(要介護度)
| 認知症老人徘徊感知機器 -> 要介護1では算定しない(要介護度)
| 移動用リフト -> 要介護1では算定しない(要介護度)
// ※に名前が挙がっていない4種目は、どの要介護度でも算定できる。
| 手すり -> 算定できる
| スロープ -> 算定できる
| 歩行器 -> 算定できる
| 歩行補助つえ -> 算定できる
let 要介護1では算定しない (要介護度: 要介護度): 算定できるか =
match 要介護度 with
| 要介護1 -> 算定しない
| 要介護2 -> 算定できる
| 要介護3 -> 算定できる
| 要介護4 -> 算定できる
| 要介護5 -> 算定できる
examples for kaigo.訪問リハビリテーション
// 表の各セルと、行だけが名指す値。モデル本体と分けてある。
let 注なし =
算定条件
{ 同一建物の利用者 = 同一建物に該当しない
, 特別地域訪問リハビリテーション加算 = 特別地域なし
, 中山間地域等における小規模事業所加算 = 小規模事業所なし
, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住なし
, 短期集中リハビリテーション実施加算 = 短期集中なし
, リハビリテーションマネジメント加算 = マネジメント加算なし
, 事業所の医師の診療 = 診療を行った
}
example 注の記号を並べる
| "注が一つもなければ何も並ばない" : (注なし) -> []
| "並ぶ順は表の列の順"
: (算定条件
{ ...注なし
, 同一建物の利用者 = 同一建物二十人以上
, 短期集中リハビリテーション実施加算 = 短期集中あり
, 事業所の医師の診療 = 診療を行わなかった
})
-> [ 割合乗算 { 分子 = 90, 分母 = 100 }
, 単位加算 { 単位 = 単位数(200) }
, 単位減算 { 単位 = 単位数(50) }
]
example 単位数を求める
| "注が付かなければ307単位" : (注なし) -> 単位数(307)
| "同一建物20人以上は×90/100"
: (算定条件 { ...注なし, 同一建物の利用者 = 同一建物二十人以上 }) -> 単位数(276)
| "同一建物50人以上は×85/100"
: (算定条件 { ...注なし, 同一建物の利用者 = 同一建物五十人以上 }) -> 単位数(261)
| "特別地域訪問リハビリテーション加算は+15/100"
: (算定条件 { ...注なし, 特別地域訪問リハビリテーション加算 = 特別地域あり }) -> 単位数(353)
| "中山間地域等における小規模事業所加算は+10/100"
: (算定条件 { ...注なし, 中山間地域等における小規模事業所加算 = 小規模事業所あり }) -> 単位数(338)
| "中山間地域等に居住する者へのサービス提供加算は+5/100"
: (算定条件 { ...注なし, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり }) -> 単位数(322)
| "短期集中リハビリテーション実施加算は+200単位"
: (算定条件 { ...注なし, 短期集中リハビリテーション実施加算 = 短期集中あり }) -> 単位数(507)
| "リハビリテーションマネジメント加算(A)イは+180単位"
: (算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Aイ }) -> 単位数(487)
| "リハビリテーションマネジメント加算(A)ロは+213単位"
: (算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Aロ }) -> 単位数(520)
| "リハビリテーションマネジメント加算(B)イは+450単位"
: (算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Bイ }) -> 単位数(757)
| "リハビリテーションマネジメント加算(B)ロは+483単位"
: (算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Bロ }) -> 単位数(790)
| "医師が計画作成に係る診療を行わなかった場合は-50単位"
: (算定条件 { ...注なし, 事業所の医師の診療 = 診療を行わなかった }) -> 単位数(257)
| "同一建物と短期集中と減算を左から順に重ねる"
: (算定条件
{ ...注なし
, 同一建物の利用者 = 同一建物二十人以上
, 短期集中リハビリテーション実施加算 = 短期集中あり
, 事業所の医師の診療 = 診療を行わなかった
})
-> 単位数(426)
// ------------------------------------------------ ロとハの加算
// 表の列を1つずつ立てて、その列がどの記号になるかを見る。
// `souther examples` が「no row is in ...」で名指ししてきたぶん。
example 注の記号を並べる
| "同一建物の利用者 = 同一建物五十人以上"
: (算定条件 { ...注なし, 同一建物の利用者 = 同一建物五十人以上 })
-> [割合乗算 { 分子 = 85, 分母 = 100 }]
| "特別地域訪問リハビリテーション加算 = 特別地域あり"
: (算定条件 { ...注なし, 特別地域訪問リハビリテーション加算 = 特別地域あり })
-> [割合加算 { 分子 = 15, 分母 = 100 }]
| "中山間地域等における小規模事業所加算 = 小規模事業所あり"
: (算定条件 { ...注なし, 中山間地域等における小規模事業所加算 = 小規模事業所あり })
-> [割合加算 { 分子 = 10, 分母 = 100 }]
| "中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり"
: (算定条件 { ...注なし, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり })
-> [割合加算 { 分子 = 5, 分母 = 100 }]
| "リハビリテーションマネジメント加算 = マネジメント加算Aイ"
: (算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Aイ })
-> [単位加算 { 単位 = 単位数(180) }]
| "リハビリテーションマネジメント加算 = マネジメント加算Aロ"
: (算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Aロ })
-> [単位加算 { 単位 = 単位数(213) }]
| "リハビリテーションマネジメント加算 = マネジメント加算Bイ"
: (算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Bイ })
-> [単位加算 { 単位 = 単位数(450) }]
| "リハビリテーションマネジメント加算 = マネジメント加算Bロ"
: (算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Bロ })
-> [単位加算 { 単位 = 単位数(483) }]
module kaigo.訪問リハビリテーション exposing
( 事業所の種類, 病院又は診療所, 介護老人保健施設, 介護医療院
, 訪問リハビリテーション費
, 同一建物の利用者, 同一建物に該当しない, 同一建物二十人以上, 同一建物五十人以上
, 特別地域訪問リハビリテーション加算, 特別地域あり, 特別地域なし
, 中山間地域等における小規模事業所加算, 小規模事業所あり, 小規模事業所なし
, 中山間地域等に居住する者へのサービス提供加算, 中山間地域居住あり, 中山間地域居住なし
, 短期集中リハビリテーション実施加算, 短期集中あり, 短期集中なし
, リハビリテーションマネジメント加算
, マネジメント加算なし, マネジメント加算Aイ, マネジメント加算Aロ, マネジメント加算Bイ, マネジメント加算Bロ
, 事業所の医師の診療, 診療を行った, 診療を行わなかった
, 算定条件, 注の記号を並べる, 単位数を求める
, 移行支援加算, サービス提供体制強化加算Ⅰ, サービス提供体制強化加算Ⅱ
)
// 「介護報酬の算定構造」Ⅰ-4 訪問リハビリテーション費(介護4ページ)。
// https://www.wam.go.jp/gyoseiShiryou-files/documents/2022/0322211552821/202203a.pdf
import kaigo.共通
( 単位数, 算定記号, 単位加算, 単位減算, 割合乗算, 割合加算
, 記号を順に適用する
)
// ---------------------------------------------------------------- 基本部分
// イ 訪問リハビリテーション費 1回につき 307単位
// 病院又は診療所の場合・介護老人保健施設の場合・介護医療院の場合の3行が
// 1つのセルにまとめられていて、単位数はどれも同じ。
data 事業所の種類 = 病院又は診療所 | 介護老人保健施設 | 介護医療院
let 訪問リハビリテーション費 = 単位数(307)
// ---------------------------------------------------------------- 注の各列
// 注 事業所と同一建物の利用者又はこれ以外の同一建物の利用者20人以上 ×90/100
// 事業所と同一建物の利用者50人以上 ×85/100
data 同一建物の利用者 = 同一建物に該当しない | 同一建物二十人以上 | 同一建物五十人以上
// 注 特別地域訪問リハビリテーション加算 +15/100
data 特別地域訪問リハビリテーション加算 = 特別地域あり | 特別地域なし
// 注 中山間地域等における小規模事業所加算 +10/100
data 中山間地域等における小規模事業所加算 = 小規模事業所あり | 小規模事業所なし
// 注 中山間地域等に居住する者へのサービス提供加算 +5/100
data 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり | 中山間地域居住なし
// 注 短期集中リハビリテーション実施加算 1日につき +200単位
data 短期集中リハビリテーション実施加算 = 短期集中あり | 短期集中なし
// 注 リハビリテーションマネジメント加算(A)イ 1月につき +180単位
// (A)ロ 1月につき +213単位
// リハビリテーションマネジメント加算(B)イ 1月につき +450単位
// (B)ロ 1月につき +483単位
data リハビリテーションマネジメント加算 =
マネジメント加算なし
| マネジメント加算Aイ
| マネジメント加算Aロ
| マネジメント加算Bイ
| マネジメント加算Bロ
// 注 事業所の医師がリハビリテーション計画の作成に係る診療を行わなかった場合
// 1回につき -50単位
data 事業所の医師の診療 = 診療を行った | 診療を行わなかった
data 算定条件 =
{ 同一建物の利用者: 同一建物の利用者
, 特別地域訪問リハビリテーション加算: 特別地域訪問リハビリテーション加算
, 中山間地域等における小規模事業所加算: 中山間地域等における小規模事業所加算
, 中山間地域等に居住する者へのサービス提供加算: 中山間地域等に居住する者へのサービス提供加算
, 短期集中リハビリテーション実施加算: 短期集中リハビリテーション実施加算
, リハビリテーションマネジメント加算: リハビリテーションマネジメント加算
, 事業所の医師の診療: 事業所の医師の診療
}
behavior 注の記号を並べる : (条件: 算定条件) -> List<算定記号>
constructs 単位数, 単位加算, 単位減算, 割合乗算, 割合加算
let 注の記号を並べる (条件) =
(match 条件.同一建物の利用者 with
| 同一建物二十人以上 -> [割合乗算 { 分子 = 90, 分母 = 100 }]
| 同一建物五十人以上 -> [割合乗算 { 分子 = 85, 分母 = 100 }]
| 同一建物に該当しない -> [])
++ (match 条件.特別地域訪問リハビリテーション加算 with
| 特別地域あり -> [割合加算 { 分子 = 15, 分母 = 100 }]
| 特別地域なし -> [])
++ (match 条件.中山間地域等における小規模事業所加算 with
| 小規模事業所あり -> [割合加算 { 分子 = 10, 分母 = 100 }]
| 小規模事業所なし -> [])
++ (match 条件.中山間地域等に居住する者へのサービス提供加算 with
| 中山間地域居住あり -> [割合加算 { 分子 = 5, 分母 = 100 }]
| 中山間地域居住なし -> [])
++ (match 条件.短期集中リハビリテーション実施加算 with
| 短期集中あり -> [単位加算 { 単位 = 単位数(200) }]
| 短期集中なし -> [])
++ (match 条件.リハビリテーションマネジメント加算 with
| マネジメント加算Aイ -> [単位加算 { 単位 = 単位数(180) }]
| マネジメント加算Aロ -> [単位加算 { 単位 = 単位数(213) }]
| マネジメント加算Bイ -> [単位加算 { 単位 = 単位数(450) }]
| マネジメント加算Bロ -> [単位加算 { 単位 = 単位数(483) }]
| マネジメント加算なし -> [])
++ (match 条件.事業所の医師の診療 with
| 診療を行わなかった -> [単位減算 { 単位 = 単位数(50) }]
| 診療を行った -> [])
behavior 単位数を求める : (条件: 算定条件) -> 単位数
let 単位数を求める (条件) =
記号を順に適用する(訪問リハビリテーション費, 注の記号を並べる(条件))
// ロ 移行支援加算 1日につき 17単位を加算
// ハ サービス提供体制強化加算(Ⅰ) 1回につき +6単位
// サービス提供体制強化加算(Ⅱ) 1回につき +3単位
let 移行支援加算 = 単位数(17)
let サービス提供体制強化加算Ⅰ = 単位数(6)
let サービス提供体制強化加算Ⅱ = 単位数(3)
examples for kaigo.訪問介護
// 表の各セルと、行だけが名指す値。モデル本体と分けてある。
example 基本部分の単位数を求める
| "身体介護 20分未満" : (身体介護 { 所要時間 = 所要時間(19) }) -> 単位数(167)
| "身体介護 1分でも20分未満" : (身体介護 { 所要時間 = 所要時間(1) }) -> 単位数(167)
| "身体介護 ちょうど20分" : (身体介護 { 所要時間 = 所要時間(20) }) -> 単位数(250)
| "身体介護 29分は30分未満" : (身体介護 { 所要時間 = 所要時間(29) }) -> 単位数(250)
| "身体介護 ちょうど30分" : (身体介護 { 所要時間 = 所要時間(30) }) -> 単位数(396)
| "身体介護 59分は1時間未満" : (身体介護 { 所要時間 = 所要時間(59) }) -> 単位数(396)
| "身体介護 ちょうど1時間" : (身体介護 { 所要時間 = 所要時間(60) }) -> 単位数(579)
| "身体介護 1時間29分はまだ579" : (身体介護 { 所要時間 = 所要時間(89) }) -> 単位数(579)
| "身体介護 1時間30分で+84" : (身体介護 { 所要時間 = 所要時間(90) }) -> 単位数(663)
| "身体介護 2時間でさらに+84" : (身体介護 { 所要時間 = 所要時間(120) }) -> 単位数(747)
| "生活援助 20分以上45分未満" : (生活援助 { 所要時間 = 所要時間(20) }) -> 単位数(183)
| "生活援助 44分はまだ183" : (生活援助 { 所要時間 = 所要時間(44) }) -> 単位数(183)
| "生活援助 ちょうど45分" : (生活援助 { 所要時間 = 所要時間(45) }) -> 単位数(225)
| "生活援助 60分も225" : (生活援助 { 所要時間 = 所要時間(60) }) -> 単位数(225)
| "通院等乗降介助は1回99単位" : (通院等乗降介助) -> 単位数(99)
// ---------------------------------------------------------------- 注の各列
// 注が一つも付かない条件。例を書くときの土台にする。
let 注なし =
一回の算定条件
{ 引き続き行う生活援助 = 生活援助を行わない
, 訪問介護員等の人数 = 一人
, 時間帯 = 日中
, 特定事業所加算 = 特定事業所加算なし
, 特定事業所加算Ⅴ = 特定事業所加算Ⅴなし
, 共生型訪問介護 = 共生型でない
, 同一建物の利用者 = 同一建物に該当しない
, 特別地域訪問介護加算 = 特別地域なし
, 中山間地域等における小規模事業所加算 = 小規模事業所なし
, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住なし
, 緊急時訪問介護加算 = 緊急時なし
}
example 注の記号を並べる
| "注が一つもなければ何も並ばない" : (注なし) -> []
| "並ぶ順は表の列の順で、条件を変えても入れ替わらない"
: (一回の算定条件
{ ...注なし
, 訪問介護員等の人数 = 二人
, 時間帯 = 深夜
, 同一建物の利用者 = 同一建物二十人以上
, 緊急時訪問介護加算 = 緊急時あり
})
-> [ 割合乗算 { 分子 = 200, 分母 = 100 }
, 割合加算 { 分子 = 50, 分母 = 100 }
, 割合乗算 { 分子 = 90, 分母 = 100 }
, 単位加算 { 単位 = 単位数(100) }
]
| "引き続き生活援助はいちばん左に並ぶ"
: (一回の算定条件
{ ...注なし
, 引き続き行う生活援助 = 引き続き生活援助を行った { 所要時間 = 所要時間(45) }
, 時間帯 = 夜間又は早朝
})
-> [ 単位加算 { 単位 = 単位数(134) }
, 割合加算 { 分子 = 25, 分母 = 100 }
]
example 一回の単位数を求める
| "注が付かなければ基本部分のまま"
: (身体介護 { 所要時間 = 所要時間(45) }, 注なし) -> 単位数(396)
| "2人の訪問介護員等による場合は倍"
: (身体介護 { 所要時間 = 所要時間(45) }, 一回の算定条件 { ...注なし, 訪問介護員等の人数 = 二人 })
-> 単位数(792)
| "夜間又は早朝は+25/100"
: (身体介護 { 所要時間 = 所要時間(45) }, 一回の算定条件 { ...注なし, 時間帯 = 夜間又は早朝 })
-> 単位数(495)
| "深夜は+50/100"
: (身体介護 { 所要時間 = 所要時間(45) }, 一回の算定条件 { ...注なし, 時間帯 = 深夜 })
-> 単位数(594)
| "特定事業所加算(Ⅰ)は+20/100"
: (身体介護 { 所要時間 = 所要時間(45) }, 一回の算定条件 { ...注なし, 特定事業所加算 = 特定事業所加算Ⅰ })
-> 単位数(475)
| "特定事業所加算(Ⅱ)は+10/100"
: (身体介護 { 所要時間 = 所要時間(45) }, 一回の算定条件 { ...注なし, 特定事業所加算 = 特定事業所加算Ⅱ })
-> 単位数(436)
| "特定事業所加算(Ⅲ)も+10/100"
: (身体介護 { 所要時間 = 所要時間(45) }, 一回の算定条件 { ...注なし, 特定事業所加算 = 特定事業所加算Ⅲ })
-> 単位数(436)
| "特定事業所加算(Ⅳ)は+5/100"
: (身体介護 { 所要時間 = 所要時間(45) }, 一回の算定条件 { ...注なし, 特定事業所加算 = 特定事業所加算Ⅳ })
-> 単位数(416)
| "特定事業所加算(Ⅴ)は別枠で+3/100"
: (身体介護 { 所要時間 = 所要時間(45) }, 一回の算定条件 { ...注なし, 特定事業所加算Ⅴ = 特定事業所加算Ⅴあり })
-> 単位数(408)
| "(Ⅰ)と(Ⅴ)は重ねて算定できる"
: ( 身体介護 { 所要時間 = 所要時間(45) }
, 一回の算定条件 { ...注なし, 特定事業所加算 = 特定事業所加算Ⅰ, 特定事業所加算Ⅴ = 特定事業所加算Ⅴあり } )
-> 単位数(489)
| "共生型(基礎研修課程修了者等)は×70/100"
: ( 身体介護 { 所要時間 = 所要時間(45) }
, 一回の算定条件 { ...注なし, 共生型訪問介護 = 障害者居宅介護従業者基礎研修課程修了者等による } )
-> 単位数(277)
| "共生型(重度訪問介護従業者養成研修修了者)は×93/100"
: ( 身体介護 { 所要時間 = 所要時間(45) }
, 一回の算定条件 { ...注なし, 共生型訪問介護 = 重度訪問介護従業者養成研修修了者による } )
-> 単位数(368)
| "共生型(指定重度訪問介護事業所)も×93/100"
: ( 身体介護 { 所要時間 = 所要時間(45) }
, 一回の算定条件 { ...注なし, 共生型訪問介護 = 指定重度訪問介護事業所が行う } )
-> 単位数(368)
| "同一建物20人以上は×90/100"
: (身体介護 { 所要時間 = 所要時間(45) }, 一回の算定条件 { ...注なし, 同一建物の利用者 = 同一建物二十人以上 })
-> 単位数(356)
| "同一建物50人以上は×85/100"
: (身体介護 { 所要時間 = 所要時間(45) }, 一回の算定条件 { ...注なし, 同一建物の利用者 = 同一建物五十人以上 })
-> 単位数(337)
| "特別地域訪問介護加算は+15/100"
: (身体介護 { 所要時間 = 所要時間(45) }, 一回の算定条件 { ...注なし, 特別地域訪問介護加算 = 特別地域あり })
-> 単位数(455)
| "中山間地域等における小規模事業所加算は+10/100"
: ( 身体介護 { 所要時間 = 所要時間(45) }
, 一回の算定条件 { ...注なし, 中山間地域等における小規模事業所加算 = 小規模事業所あり } )
-> 単位数(436)
| "中山間地域等に居住する者へのサービス提供加算は+5/100"
: ( 身体介護 { 所要時間 = 所要時間(45) }
, 一回の算定条件 { ...注なし, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり } )
-> 単位数(416)
| "緊急時訪問介護加算は1回につき+100単位"
: (身体介護 { 所要時間 = 所要時間(45) }, 一回の算定条件 { ...注なし, 緊急時訪問介護加算 = 緊急時あり })
-> 単位数(496)
| "身体介護に引き続き生活援助20分は+67単位"
: ( 身体介護 { 所要時間 = 所要時間(45) }
, 一回の算定条件 { ...注なし, 引き続き行う生活援助 = 引き続き生活援助を行った { 所要時間 = 所要時間(20) } } )
-> 単位数(463)
| "引き続き生活援助45分は25分増えて+134単位"
: ( 身体介護 { 所要時間 = 所要時間(45) }
, 一回の算定条件 { ...注なし, 引き続き行う生活援助 = 引き続き生活援助を行った { 所要時間 = 所要時間(45) } } )
-> 単位数(530)
| "引き続き生活援助70分で201単位の限度に届く"
: ( 身体介護 { 所要時間 = 所要時間(45) }
, 一回の算定条件 { ...注なし, 引き続き行う生活援助 = 引き続き生活援助を行った { 所要時間 = 所要時間(70) } } )
-> 単位数(597)
| "引き続き生活援助95分も201単位を超えない"
: ( 身体介護 { 所要時間 = 所要時間(45) }
, 一回の算定条件 { ...注なし, 引き続き行う生活援助 = 引き続き生活援助を行った { 所要時間 = 所要時間(95) } } )
-> 単位数(597)
| "列は左から順に適用する。2人・深夜・同一建物20人以上を重ねる"
: ( 身体介護 { 所要時間 = 所要時間(45) }
, 一回の算定条件
{ ...注なし
, 訪問介護員等の人数 = 二人
, 時間帯 = 深夜
, 同一建物の利用者 = 同一建物二十人以上
} )
-> 単位数(1069)
| "生活援助も同じ列を通る"
: (生活援助 { 所要時間 = 所要時間(45) }, 一回の算定条件 { ...注なし, 時間帯 = 夜間又は早朝 })
-> 単位数(281)
| "通院等乗降介助も同じ列を通る"
: (通院等乗降介助, 一回の算定条件 { ...注なし, 時間帯 = 深夜 })
-> 単位数(149)
// ------------------------------------------------ ニからヘまでの加算
example 月の所定単位数を求める
| "1件もなければ0" : ([]) -> 単位数(0)
| "1件ならその単位数" : ([単位数(396)]) -> 単位数(396)
| "訪問3回と初回加算の合計" : ([単位数(396), 単位数(396), 単位数(250), 単位数(200)]) -> 単位数(1242)
| "0単位の項目が混ざっても合計は変わらない" : ([単位数(0), 単位数(100)]) -> 単位数(100)
example 処遇改善加算の単位数を求める
| "算定しない" : (単位数(10000), 処遇改善加算なし) -> 単位数(0)
| "(Ⅰ)は137/1000" : (単位数(10000), 処遇改善加算Ⅰ) -> 単位数(1370)
| "(Ⅱ)は100/1000" : (単位数(10000), 処遇改善加算Ⅱ) -> 単位数(1000)
| "(Ⅲ)は55/1000" : (単位数(10000), 処遇改善加算Ⅲ) -> 単位数(550)
| "端数は四捨五入する" : (単位数(1242), 処遇改善加算Ⅰ) -> 単位数(170)
| "所定単位数が0なら0" : (単位数(0), 処遇改善加算Ⅰ) -> 単位数(0)
example 特定処遇改善加算の単位数を求める
| "算定しない" : (単位数(10000), 特定処遇改善加算なし) -> 単位数(0)
| "(Ⅰ)は63/1000" : (単位数(10000), 特定処遇改善加算Ⅰ) -> 単位数(630)
| "(Ⅱ)は42/1000" : (単位数(10000), 特定処遇改善加算Ⅱ) -> 単位数(420)
| "端数は四捨五入する" : (単位数(1242), 特定処遇改善加算Ⅰ) -> 単位数(78)
| "所定単位数が0なら0" : (単位数(0), 特定処遇改善加算Ⅰ) -> 単位数(0)
// 表の列を1つずつ立てて、その列がどの記号になるかを見る。
// `souther examples` が「no row is in ...」で名指ししてきたぶん。
example 注の記号を並べる
| "特定事業所加算 = 特定事業所加算Ⅰ"
: (一回の算定条件 { ...注なし, 特定事業所加算 = 特定事業所加算Ⅰ })
-> [割合加算 { 分子 = 20, 分母 = 100 }]
| "特定事業所加算 = 特定事業所加算Ⅱ"
: (一回の算定条件 { ...注なし, 特定事業所加算 = 特定事業所加算Ⅱ })
-> [割合加算 { 分子 = 10, 分母 = 100 }]
| "特定事業所加算 = 特定事業所加算Ⅲ"
: (一回の算定条件 { ...注なし, 特定事業所加算 = 特定事業所加算Ⅲ })
-> [割合加算 { 分子 = 10, 分母 = 100 }]
| "特定事業所加算 = 特定事業所加算Ⅳ"
: (一回の算定条件 { ...注なし, 特定事業所加算 = 特定事業所加算Ⅳ })
-> [割合加算 { 分子 = 5, 分母 = 100 }]
| "特定事業所加算Ⅴ = 特定事業所加算Ⅴあり"
: (一回の算定条件 { ...注なし, 特定事業所加算Ⅴ = 特定事業所加算Ⅴあり })
-> [割合加算 { 分子 = 3, 分母 = 100 }]
| "共生型訪問介護 = 障害者居宅介護従業者基礎研修課程修了者等による"
: (一回の算定条件 { ...注なし, 共生型訪問介護 = 障害者居宅介護従業者基礎研修課程修了者等による })
-> [割合乗算 { 分子 = 70, 分母 = 100 }]
| "共生型訪問介護 = 重度訪問介護従業者養成研修修了者による"
: (一回の算定条件 { ...注なし, 共生型訪問介護 = 重度訪問介護従業者養成研修修了者による })
-> [割合乗算 { 分子 = 93, 分母 = 100 }]
| "共生型訪問介護 = 指定重度訪問介護事業所が行う"
: (一回の算定条件 { ...注なし, 共生型訪問介護 = 指定重度訪問介護事業所が行う })
-> [割合乗算 { 分子 = 93, 分母 = 100 }]
| "同一建物の利用者 = 同一建物五十人以上"
: (一回の算定条件 { ...注なし, 同一建物の利用者 = 同一建物五十人以上 })
-> [割合乗算 { 分子 = 85, 分母 = 100 }]
| "特別地域訪問介護加算 = 特別地域あり"
: (一回の算定条件 { ...注なし, 特別地域訪問介護加算 = 特別地域あり })
-> [割合加算 { 分子 = 15, 分母 = 100 }]
| "中山間地域等における小規模事業所加算 = 小規模事業所あり"
: (一回の算定条件 { ...注なし, 中山間地域等における小規模事業所加算 = 小規模事業所あり })
-> [割合加算 { 分子 = 10, 分母 = 100 }]
| "中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり"
: (一回の算定条件 { ...注なし, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり })
-> [割合加算 { 分子 = 5, 分母 = 100 }]
module kaigo.訪問介護 exposing
( 所要時間, 訪問介護の種類, 身体介護, 生活援助, 通院等乗降介助
, 引き続き行う生活援助, 生活援助を行わない, 引き続き生活援助を行った
, 訪問介護員等の人数, 一人, 二人
, 時間帯, 日中, 夜間又は早朝, 深夜
, 特定事業所加算, 特定事業所加算なし, 特定事業所加算Ⅰ, 特定事業所加算Ⅱ, 特定事業所加算Ⅲ, 特定事業所加算Ⅳ
, 特定事業所加算Ⅴ, 特定事業所加算Ⅴあり, 特定事業所加算Ⅴなし
, 共生型訪問介護, 共生型でない, 障害者居宅介護従業者基礎研修課程修了者等による, 重度訪問介護従業者養成研修修了者による, 指定重度訪問介護事業所が行う
, 同一建物の利用者, 同一建物に該当しない, 同一建物二十人以上, 同一建物五十人以上
, 特別地域訪問介護加算, 特別地域あり, 特別地域なし
, 中山間地域等における小規模事業所加算, 小規模事業所あり, 小規模事業所なし
, 中山間地域等に居住する者へのサービス提供加算, 中山間地域居住あり, 中山間地域居住なし
, 緊急時訪問介護加算, 緊急時あり, 緊急時なし
, 一回の算定条件
, 基本部分の単位数を求める, 注の記号を並べる, 一回の単位数を求める
, 初回加算, 生活機能向上連携加算Ⅰ, 生活機能向上連携加算Ⅱ
, 認知症専門ケア加算Ⅰ, 認知症専門ケア加算Ⅱ
, 介護職員処遇改善加算, 処遇改善加算Ⅰ, 処遇改善加算Ⅱ, 処遇改善加算Ⅲ, 処遇改善加算なし
, 介護職員等特定処遇改善加算, 特定処遇改善加算Ⅰ, 特定処遇改善加算Ⅱ, 特定処遇改善加算なし
, 月の所定単位数を求める, 処遇改善加算の単位数を求める, 特定処遇改善加算の単位数を求める
)
// 「介護報酬の算定構造」Ⅰ-1 訪問介護費(介護1ページ)。
// https://www.wam.go.jp/gyoseiShiryou-files/documents/2022/0322211552821/202203a.pdf
// 表の左から右へ、基本部分・注の各列・イからチまでの加算をそのまま写す。
import kaigo.共通
( 単位数, 算定記号, 単位加算, 割合乗算, 割合加算
, 記号を適用する, 記号を順に適用する
)
data 所要時間 = Int
invariant 分で数える = value > 0
// ---------------------------------------------------------------- 基本部分
// 訪問介護費又は共生型訪問介護費 イ 身体介護
data 身体介護 = { 所要時間: 所要時間 }
// 同 ロ 生活援助
data 生活援助 = { 所要時間: 所要時間 }
// 同 ハ 通院等乗降介助(1回につき)
data 訪問介護の種類 = 身体介護 | 生活援助 | 通院等乗降介助
behavior 基本部分の単位数を求める : (種類: 訪問介護の種類) -> 単位数
constructs 単位数
// イ 身体介護
// (1) 20分未満 167単位
// (2) 20分以上30分未満 250単位
// (3) 30分以上1時間未満 396単位
// (4) 1時間以上 579単位に30分を増すごとに +84単位
// ロ 生活援助
// (1) 20分以上45分未満 183単位
// (2) 45分以上 225単位
// ハ 通院等乗降介助 1回につき 99単位
let 基本部分の単位数を求める (種類) =
match 種類 with
| 身体介護 as 介護 ->
if 介護.所要時間.value < 20 then 単位数(167)
else if 介護.所要時間.value < 30 then 単位数(250)
else if 介護.所要時間.value < 60 then 単位数(396)
else 単位数(579 + 84 * ((介護.所要時間.value - 60) / 30))
| 生活援助 as 援助 ->
if 援助.所要時間.value < 45 then 単位数(183) else 単位数(225)
| 通院等乗降介助 -> 単位数(99)
// 注 身体介護の(2)〜(4)に引き続き生活援助を行った場合
// 所要時間が20分から起算して25分を増すごとに +67単位(201単位を限度)
data 引き続き生活援助を行った = { 所要時間: 所要時間 }
data 引き続き行う生活援助 = 引き続き生活援助を行った | 生活援助を行わない
// 注 2人の訪問介護員等による場合 ×200/100
data 訪問介護員等の人数 = 一人 | 二人
// 注 夜間若しくは早朝の場合又は深夜の場合
// 夜間又は早朝の場合 +25/100、深夜の場合 +50/100
data 時間帯 = 日中 | 夜間又は早朝 | 深夜
// 注 特定事業所加算
// (Ⅰ)+20/100(Ⅱ)+10/100(Ⅲ)+10/100(Ⅳ)+5/100
data 特定事業所加算 =
特定事業所加算なし | 特定事業所加算Ⅰ | 特定事業所加算Ⅱ | 特定事業所加算Ⅲ | 特定事業所加算Ⅳ
// 表では(Ⅴ)だけが(Ⅰ)〜(Ⅳ)と別の枠に置かれている。重ねて算定する列。
// 特定事業所加算(Ⅴ)+3/100
data 特定事業所加算Ⅴ = 特定事業所加算Ⅴあり | 特定事業所加算Ⅴなし
// 注 共生型訪問介護を行う場合
// 指定居宅介護事業所で障害者居宅介護従業者基礎研修課程修了者等により行われる場合 ×70/100
// 指定居宅介護事業所で重度訪問介護従業者養成研修修了者により行われる場合 ×93/100
// 指定重度訪問介護事業所が行う場合 ×93/100
data 共生型訪問介護 =
共生型でない
| 障害者居宅介護従業者基礎研修課程修了者等による
| 重度訪問介護従業者養成研修修了者による
| 指定重度訪問介護事業所が行う
// 注 事業所と同一建物の利用者又はこれ以外の同一建物の利用者20人以上にサービスを行う場合 ×90/100
// 事業所と同一建物の利用者50人以上にサービスを行う場合 ×85/100
data 同一建物の利用者 = 同一建物に該当しない | 同一建物二十人以上 | 同一建物五十人以上
// 注 特別地域訪問介護加算 +15/100
data 特別地域訪問介護加算 = 特別地域あり | 特別地域なし
// 注 中山間地域等における小規模事業所加算 +10/100
data 中山間地域等における小規模事業所加算 = 小規模事業所あり | 小規模事業所なし
// 注 中山間地域等に居住する者へのサービス提供加算 +5/100
data 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり | 中山間地域居住なし
// 注 緊急時訪問介護加算 1回につき +100単位
data 緊急時訪問介護加算 = 緊急時あり | 緊急時なし
data 一回の算定条件 =
{ 引き続き行う生活援助: 引き続き行う生活援助
, 訪問介護員等の人数: 訪問介護員等の人数
, 時間帯: 時間帯
, 特定事業所加算: 特定事業所加算
, 特定事業所加算Ⅴ: 特定事業所加算Ⅴ
, 共生型訪問介護: 共生型訪問介護
, 同一建物の利用者: 同一建物の利用者
, 特別地域訪問介護加算: 特別地域訪問介護加算
, 中山間地域等における小規模事業所加算: 中山間地域等における小規模事業所加算
, 中山間地域等に居住する者へのサービス提供加算: 中山間地域等に居住する者へのサービス提供加算
, 緊急時訪問介護加算: 緊急時訪問介護加算
}
// 引き続き生活援助の加算単位。20分から起算して25分を増すごとに+67単位、201単位を限度。
let 引き続き生活援助の単位 (時間: 所要時間): 単位数 =
単位数(Int.min(201, 67 * (1 + (時間.value - 20) / 25)))
// 表の注は左から右に並んでいる。その順に記号を並べる。
behavior 注の記号を並べる : (条件: 一回の算定条件) -> List<算定記号>
constructs 単位数, 単位加算, 割合乗算, 割合加算
let 注の記号を並べる (条件) =
(match 条件.引き続き行う生活援助 with
| 引き続き生活援助を行った as 援助 ->
[単位加算 { 単位 = 引き続き生活援助の単位(援助.所要時間) }]
| 生活援助を行わない -> [])
++ (match 条件.訪問介護員等の人数 with
| 二人 -> [割合乗算 { 分子 = 200, 分母 = 100 }]
| 一人 -> [])
++ (match 条件.時間帯 with
| 夜間又は早朝 -> [割合加算 { 分子 = 25, 分母 = 100 }]
| 深夜 -> [割合加算 { 分子 = 50, 分母 = 100 }]
| 日中 -> [])
++ (match 条件.特定事業所加算 with
| 特定事業所加算Ⅰ -> [割合加算 { 分子 = 20, 分母 = 100 }]
| 特定事業所加算Ⅱ -> [割合加算 { 分子 = 10, 分母 = 100 }]
| 特定事業所加算Ⅲ -> [割合加算 { 分子 = 10, 分母 = 100 }]
| 特定事業所加算Ⅳ -> [割合加算 { 分子 = 5, 分母 = 100 }]
| 特定事業所加算なし -> [])
++ (match 条件.特定事業所加算Ⅴ with
| 特定事業所加算Ⅴあり -> [割合加算 { 分子 = 3, 分母 = 100 }]
| 特定事業所加算Ⅴなし -> [])
++ (match 条件.共生型訪問介護 with
| 障害者居宅介護従業者基礎研修課程修了者等による -> [割合乗算 { 分子 = 70, 分母 = 100 }]
| 重度訪問介護従業者養成研修修了者による -> [割合乗算 { 分子 = 93, 分母 = 100 }]
| 指定重度訪問介護事業所が行う -> [割合乗算 { 分子 = 93, 分母 = 100 }]
| 共生型でない -> [])
++ (match 条件.同一建物の利用者 with
| 同一建物二十人以上 -> [割合乗算 { 分子 = 90, 分母 = 100 }]
| 同一建物五十人以上 -> [割合乗算 { 分子 = 85, 分母 = 100 }]
| 同一建物に該当しない -> [])
++ (match 条件.特別地域訪問介護加算 with
| 特別地域あり -> [割合加算 { 分子 = 15, 分母 = 100 }]
| 特別地域なし -> [])
++ (match 条件.中山間地域等における小規模事業所加算 with
| 小規模事業所あり -> [割合加算 { 分子 = 10, 分母 = 100 }]
| 小規模事業所なし -> [])
++ (match 条件.中山間地域等に居住する者へのサービス提供加算 with
| 中山間地域居住あり -> [割合加算 { 分子 = 5, 分母 = 100 }]
| 中山間地域居住なし -> [])
++ (match 条件.緊急時訪問介護加算 with
| 緊急時あり -> [単位加算 { 単位 = 単位数(100) }]
| 緊急時なし -> [])
behavior 一回の単位数を求める : (種類: 訪問介護の種類, 条件: 一回の算定条件) -> 単位数
let 一回の単位数を求める (種類, 条件) =
記号を順に適用する(基本部分の単位数を求める(種類), 注の記号を並べる(条件))
// ニ 初回加算 1月につき +200単位
// ホ 生活機能向上連携加算(Ⅰ) 1月につき +100単位
// 生活機能向上連携加算(Ⅱ) 1月につき +200単位
// ヘ 認知症専門ケア加算(Ⅰ) 1日につき +3単位
// 認知症専門ケア加算(Ⅱ) 1日につき +4単位
let 初回加算 = 単位数(200)
let 生活機能向上連携加算Ⅰ = 単位数(100)
let 生活機能向上連携加算Ⅱ = 単位数(200)
let 認知症専門ケア加算Ⅰ = 単位数(3)
let 認知症専門ケア加算Ⅱ = 単位数(4)
// ------------------------------------------------ トとチ 処遇改善加算
// ト 介護職員処遇改善加算
// (Ⅰ)1月につき +所定単位×137/1000
// (Ⅱ)1月につき +所定単位×100/1000
// (Ⅲ)1月につき +所定単位×55/1000
// 注 所定単位は、イからヘまでにより算定した単位数の合計
data 介護職員処遇改善加算 = 処遇改善加算Ⅰ | 処遇改善加算Ⅱ | 処遇改善加算Ⅲ | 処遇改善加算なし
// チ 介護職員等特定処遇改善加算
// (Ⅰ)1月につき +所定単位×63/1000
// (Ⅱ)1月につき +所定単位×42/1000
// 注 所定単位は、イからヘまでにより算定した単位数の合計
data 介護職員等特定処遇改善加算 = 特定処遇改善加算Ⅰ | 特定処遇改善加算Ⅱ | 特定処遇改善加算なし
// 注が言う「イからヘまでにより算定した単位数の合計」。
behavior 月の所定単位数を求める : (イからヘまでの単位数: List<単位数>) -> 単位数
constructs 単位数
let 月の所定単位数を求める (イからヘまでの単位数) =
単位数(List.sum(List.map(u -> u.value, イからヘまでの単位数)))
behavior 処遇改善加算の単位数を求める : (所定単位数: 単位数, 区分: 介護職員処遇改善加算) -> 単位数
constructs 単位数, 割合乗算
let 処遇改善加算の単位数を求める (所定単位数, 区分) =
match 区分 with
| 処遇改善加算Ⅰ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 137, 分母 = 1000 })
| 処遇改善加算Ⅱ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 100, 分母 = 1000 })
| 処遇改善加算Ⅲ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 55, 分母 = 1000 })
| 処遇改善加算なし -> 単位数(0)
behavior 特定処遇改善加算の単位数を求める : (所定単位数: 単位数, 区分: 介護職員等特定処遇改善加算) -> 単位数
constructs 単位数, 割合乗算
let 特定処遇改善加算の単位数を求める (所定単位数, 区分) =
match 区分 with
| 特定処遇改善加算Ⅰ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 63, 分母 = 1000 })
| 特定処遇改善加算Ⅱ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 42, 分母 = 1000 })
| 特定処遇改善加算なし -> 単位数(0)
examples for kaigo.訪問入浴介護
// 表の各セルと、行だけが名指す値。モデル本体と分けてある。
let 注なし =
一回の算定条件
{ 介護職員の人数 = 三人ではない
, 入浴の方法 = 全身入浴
, 同一建物の利用者 = 同一建物に該当しない
, 特別地域訪問入浴介護加算 = 特別地域なし
, 中山間地域等における小規模事業所加算 = 小規模事業所なし
, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住なし
}
example 注の記号を並べる
| "注が一つもなければ何も並ばない" : (注なし) -> []
| "並ぶ順は表の列の順"
: (一回の算定条件
{ ...注なし
, 介護職員の人数 = 三人が行った
, 入浴の方法 = 清拭又は部分浴
, 特別地域訪問入浴介護加算 = 特別地域あり
})
-> [ 割合乗算 { 分子 = 95, 分母 = 100 }
, 割合乗算 { 分子 = 90, 分母 = 100 }
, 割合加算 { 分子 = 15, 分母 = 100 }
]
example 一回の単位数を求める
| "注が付かなければ1,260単位" : (注なし) -> 単位数(1260)
| "介護職員3人が行った場合は×95/100"
: (一回の算定条件 { ...注なし, 介護職員の人数 = 三人が行った }) -> 単位数(1197)
| "清拭又は部分浴は×90/100"
: (一回の算定条件 { ...注なし, 入浴の方法 = 清拭又は部分浴 }) -> 単位数(1134)
| "同一建物20人以上は×90/100"
: (一回の算定条件 { ...注なし, 同一建物の利用者 = 同一建物二十人以上 }) -> 単位数(1134)
| "同一建物50人以上は×85/100"
: (一回の算定条件 { ...注なし, 同一建物の利用者 = 同一建物五十人以上 }) -> 単位数(1071)
| "特別地域訪問入浴介護加算は+15/100"
: (一回の算定条件 { ...注なし, 特別地域訪問入浴介護加算 = 特別地域あり }) -> 単位数(1449)
| "中山間地域等における小規模事業所加算は+10/100"
: (一回の算定条件 { ...注なし, 中山間地域等における小規模事業所加算 = 小規模事業所あり }) -> 単位数(1386)
| "中山間地域等に居住する者へのサービス提供加算は+5/100"
: (一回の算定条件 { ...注なし, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり })
-> 単位数(1323)
| "3人・部分浴・同一建物20人以上を左から順に重ねる"
: (一回の算定条件
{ ...注なし
, 介護職員の人数 = 三人が行った
, 入浴の方法 = 清拭又は部分浴
, 同一建物の利用者 = 同一建物二十人以上
})
-> 単位数(969)
// ------------------------------------------------ ロからニまでの加算
example 月の所定単位数を求める
| "1件もなければ0" : ([]) -> 単位数(0)
| "1回だけならその単位数" : ([単位数(1260)]) -> 単位数(1260)
| "2回とサービス提供体制強化加算" : ([単位数(1260), 単位数(1260), 単位数(44), 単位数(44)]) -> 単位数(2608)
| "0単位の項目が混ざっても合計は変わらない" : ([単位数(0), 単位数(100)]) -> 単位数(100)
example 処遇改善加算の単位数を求める
| "算定しない" : (単位数(10000), 処遇改善加算なし) -> 単位数(0)
| "(Ⅰ)は58/1000" : (単位数(10000), 処遇改善加算Ⅰ) -> 単位数(580)
| "(Ⅱ)は42/1000" : (単位数(10000), 処遇改善加算Ⅱ) -> 単位数(420)
| "(Ⅲ)は23/1000" : (単位数(10000), 処遇改善加算Ⅲ) -> 単位数(230)
| "端数は四捨五入する" : (単位数(2608), 処遇改善加算Ⅰ) -> 単位数(151)
| "所定単位数が0なら0" : (単位数(0), 処遇改善加算Ⅰ) -> 単位数(0)
example 特定処遇改善加算の単位数を求める
| "算定しない" : (単位数(10000), 特定処遇改善加算なし) -> 単位数(0)
| "(Ⅰ)は21/1000" : (単位数(10000), 特定処遇改善加算Ⅰ) -> 単位数(210)
| "(Ⅱ)は15/1000" : (単位数(10000), 特定処遇改善加算Ⅱ) -> 単位数(150)
| "端数は四捨五入する" : (単位数(2608), 特定処遇改善加算Ⅰ) -> 単位数(55)
| "所定単位数が0なら0" : (単位数(0), 特定処遇改善加算Ⅰ) -> 単位数(0)
// 表の列を1つずつ立てて、その列がどの記号になるかを見る。
// `souther examples` が「no row is in ...」で名指ししてきたぶん。
example 注の記号を並べる
| "同一建物の利用者 = 同一建物二十人以上"
: (一回の算定条件 { ...注なし, 同一建物の利用者 = 同一建物二十人以上 })
-> [割合乗算 { 分子 = 90, 分母 = 100 }]
| "同一建物の利用者 = 同一建物五十人以上"
: (一回の算定条件 { ...注なし, 同一建物の利用者 = 同一建物五十人以上 })
-> [割合乗算 { 分子 = 85, 分母 = 100 }]
| "中山間地域等における小規模事業所加算 = 小規模事業所あり"
: (一回の算定条件 { ...注なし, 中山間地域等における小規模事業所加算 = 小規模事業所あり })
-> [割合加算 { 分子 = 10, 分母 = 100 }]
| "中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり"
: (一回の算定条件 { ...注なし, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり })
-> [割合加算 { 分子 = 5, 分母 = 100 }]
module kaigo.訪問入浴介護 exposing
( 介護職員の人数, 三人が行った, 三人ではない
, 入浴の方法, 全身入浴, 清拭又は部分浴
, 同一建物の利用者, 同一建物に該当しない, 同一建物二十人以上, 同一建物五十人以上
, 特別地域訪問入浴介護加算, 特別地域あり, 特別地域なし
, 中山間地域等における小規模事業所加算, 小規模事業所あり, 小規模事業所なし
, 中山間地域等に居住する者へのサービス提供加算, 中山間地域居住あり, 中山間地域居住なし
, 一回の算定条件, 訪問入浴介護費, 注の記号を並べる, 一回の単位数を求める
, 初回加算, 認知症専門ケア加算Ⅰ, 認知症専門ケア加算Ⅱ
, サービス提供体制強化加算Ⅰ, サービス提供体制強化加算Ⅱ, サービス提供体制強化加算Ⅲ
, 介護職員処遇改善加算, 処遇改善加算Ⅰ, 処遇改善加算Ⅱ, 処遇改善加算Ⅲ, 処遇改善加算なし
, 介護職員等特定処遇改善加算, 特定処遇改善加算Ⅰ, 特定処遇改善加算Ⅱ, 特定処遇改善加算なし
, 月の所定単位数を求める, 処遇改善加算の単位数を求める, 特定処遇改善加算の単位数を求める
)
// 「介護報酬の算定構造」Ⅰ-2 訪問入浴介護費(介護2ページ)。
// https://www.wam.go.jp/gyoseiShiryou-files/documents/2022/0322211552821/202203a.pdf
import kaigo.共通
( 単位数, 算定記号, 割合乗算, 割合加算
, 記号を適用する, 記号を順に適用する
)
// ---------------------------------------------------------------- 基本部分
// イ 訪問入浴介護費 1回につき 1,260単位
let 訪問入浴介護費 = 単位数(1260)
// ---------------------------------------------------------------- 注の各列
// 注 介護職員3人が行った場合 ×95/100
data 介護職員の人数 = 三人が行った | 三人ではない
// 注 全身入浴が困難で、清拭又は部分浴を実施した場合 ×90/100
data 入浴の方法 = 全身入浴 | 清拭又は部分浴
// 注 事業所と同一建物の利用者又はこれ以外の同一建物の利用者20人以上にサービスを行う場合 ×90/100
// 事業所と同一建物の利用者50人以上にサービスを行う場合 ×85/100
data 同一建物の利用者 = 同一建物に該当しない | 同一建物二十人以上 | 同一建物五十人以上
// 注 特別地域訪問入浴介護加算 +15/100
data 特別地域訪問入浴介護加算 = 特別地域あり | 特別地域なし
// 注 中山間地域等における小規模事業所加算 +10/100
data 中山間地域等における小規模事業所加算 = 小規模事業所あり | 小規模事業所なし
// 注 中山間地域等に居住する者へのサービス提供加算 +5/100
data 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり | 中山間地域居住なし
data 一回の算定条件 =
{ 介護職員の人数: 介護職員の人数
, 入浴の方法: 入浴の方法
, 同一建物の利用者: 同一建物の利用者
, 特別地域訪問入浴介護加算: 特別地域訪問入浴介護加算
, 中山間地域等における小規模事業所加算: 中山間地域等における小規模事業所加算
, 中山間地域等に居住する者へのサービス提供加算: 中山間地域等に居住する者へのサービス提供加算
}
behavior 注の記号を並べる : (条件: 一回の算定条件) -> List<算定記号>
constructs 割合乗算, 割合加算
let 注の記号を並べる (条件) =
(match 条件.介護職員の人数 with
| 三人が行った -> [割合乗算 { 分子 = 95, 分母 = 100 }]
| 三人ではない -> [])
++ (match 条件.入浴の方法 with
| 清拭又は部分浴 -> [割合乗算 { 分子 = 90, 分母 = 100 }]
| 全身入浴 -> [])
++ (match 条件.同一建物の利用者 with
| 同一建物二十人以上 -> [割合乗算 { 分子 = 90, 分母 = 100 }]
| 同一建物五十人以上 -> [割合乗算 { 分子 = 85, 分母 = 100 }]
| 同一建物に該当しない -> [])
++ (match 条件.特別地域訪問入浴介護加算 with
| 特別地域あり -> [割合加算 { 分子 = 15, 分母 = 100 }]
| 特別地域なし -> [])
++ (match 条件.中山間地域等における小規模事業所加算 with
| 小規模事業所あり -> [割合加算 { 分子 = 10, 分母 = 100 }]
| 小規模事業所なし -> [])
++ (match 条件.中山間地域等に居住する者へのサービス提供加算 with
| 中山間地域居住あり -> [割合加算 { 分子 = 5, 分母 = 100 }]
| 中山間地域居住なし -> [])
behavior 一回の単位数を求める : (条件: 一回の算定条件) -> 単位数
let 一回の単位数を求める (条件) =
記号を順に適用する(訪問入浴介護費, 注の記号を並べる(条件))
// ロ 初回加算 1月につき +200単位
// ハ 認知症専門ケア加算(Ⅰ) 1日につき +3単位
// 認知症専門ケア加算(Ⅱ) 1日につき +4単位
// ニ サービス提供体制強化加算(Ⅰ) 1回につき +44単位
// サービス提供体制強化加算(Ⅱ) 1回につき +36単位
// サービス提供体制強化加算(Ⅲ) 1回につき +12単位
let 初回加算 = 単位数(200)
let 認知症専門ケア加算Ⅰ = 単位数(3)
let 認知症専門ケア加算Ⅱ = 単位数(4)
let サービス提供体制強化加算Ⅰ = 単位数(44)
let サービス提供体制強化加算Ⅱ = 単位数(36)
let サービス提供体制強化加算Ⅲ = 単位数(12)
// ------------------------------------------------ ホとヘ 処遇改善加算
// ホ 介護職員処遇改善加算(Ⅰ)1月につき +所定単位×58/1000
// (Ⅱ) +所定単位×42/1000
// (Ⅲ) +所定単位×23/1000
// 注 所定単位は、イからニまでにより算定した単位数の合計
data 介護職員処遇改善加算 = 処遇改善加算Ⅰ | 処遇改善加算Ⅱ | 処遇改善加算Ⅲ | 処遇改善加算なし
// ヘ 介護職員等特定処遇改善加算(Ⅰ)1月につき +所定単位×21/1000
// (Ⅱ) +所定単位×15/1000
// 注 所定単位は、イからニまでにより算定した単位数の合計
data 介護職員等特定処遇改善加算 = 特定処遇改善加算Ⅰ | 特定処遇改善加算Ⅱ | 特定処遇改善加算なし
behavior 月の所定単位数を求める : (イからニまでの単位数: List<単位数>) -> 単位数
constructs 単位数
let 月の所定単位数を求める (イからニまでの単位数) =
単位数(List.sum(List.map(u -> u.value, イからニまでの単位数)))
behavior 処遇改善加算の単位数を求める : (所定単位数: 単位数, 区分: 介護職員処遇改善加算) -> 単位数
constructs 単位数, 割合乗算
let 処遇改善加算の単位数を求める (所定単位数, 区分) =
match 区分 with
| 処遇改善加算Ⅰ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 58, 分母 = 1000 })
| 処遇改善加算Ⅱ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 42, 分母 = 1000 })
| 処遇改善加算Ⅲ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 23, 分母 = 1000 })
| 処遇改善加算なし -> 単位数(0)
behavior 特定処遇改善加算の単位数を求める : (所定単位数: 単位数, 区分: 介護職員等特定処遇改善加算) -> 単位数
constructs 単位数, 割合乗算
let 特定処遇改善加算の単位数を求める (所定単位数, 区分) =
match 区分 with
| 特定処遇改善加算Ⅰ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 21, 分母 = 1000 })
| 特定処遇改善加算Ⅱ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 15, 分母 = 1000 })
| 特定処遇改善加算なし -> 単位数(0)
examples for kaigo.訪問看護
// 表の各セルと、行だけが名指す値。モデル本体と分けてある。
example 基本部分の単位数を求める
| "ステーション 20分未満"
: (指定訪問看護ステーション { 訪問 = 看護職員による訪問 { 訪問時間の区分 = 二十分未満 } }) -> 単位数(313)
| "ステーション 30分未満"
: (指定訪問看護ステーション { 訪問 = 看護職員による訪問 { 訪問時間の区分 = 三十分未満 } }) -> 単位数(470)
| "ステーション 30分以上1時間未満"
: (指定訪問看護ステーション { 訪問 = 看護職員による訪問 { 訪問時間の区分 = 三十分以上一時間未満 } })
-> 単位数(821)
| "ステーション 1時間以上1時間30分未満"
: (指定訪問看護ステーション { 訪問 = 看護職員による訪問 { 訪問時間の区分 = 一時間以上一時間三十分未満 } })
-> 単位数(1125)
| "理学療法士等は293単位"
: (指定訪問看護ステーション { 訪問 = 理学療法士等による訪問 { 一日の実施回数 = 実施回数(1) } }) -> 単位数(293)
| "理学療法士等 1日2回まではそのまま"
: (指定訪問看護ステーション { 訪問 = 理学療法士等による訪問 { 一日の実施回数 = 実施回数(2) } }) -> 単位数(293)
| "理学療法士等 1日に2回を超えると90/100"
: (指定訪問看護ステーション { 訪問 = 理学療法士等による訪問 { 一日の実施回数 = 実施回数(3) } }) -> 単位数(264)
| "病院又は診療所 20分未満" : (病院又は診療所 { 訪問時間の区分 = 二十分未満 }) -> 単位数(265)
| "病院又は診療所 30分未満" : (病院又は診療所 { 訪問時間の区分 = 三十分未満 }) -> 単位数(398)
| "病院又は診療所 30分以上1時間未満"
: (病院又は診療所 { 訪問時間の区分 = 三十分以上一時間未満 }) -> 単位数(573)
| "病院又は診療所 1時間以上1時間30分未満"
: (病院又は診療所 { 訪問時間の区分 = 一時間以上一時間三十分未満 }) -> 単位数(842)
| "定期巡回と連携する場合は1月につき2,954単位"
: (定期巡回随時対応型訪問介護看護事業所と連携する場合) -> 単位数(2954)
// ------------------------------------------ イ・ロに効く注の列(1回につき)
let 注なし =
一回の算定条件
{ 訪問した職種 = 保健師又は看護師
, 時間帯 = 日中
, 複数名訪問加算 = 複数名訪問加算なし
, 一時間三十分以上の訪問看護 = 一時間三十分以上ではない
, 同一建物の利用者 = 同一建物に該当しない
, 特別地域訪問看護加算 = 特別地域なし
, 中山間地域等における小規模事業所加算 = 小規模事業所なし
, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住なし
}
let 三十分以上一時間未満のステーション訪問 =
指定訪問看護ステーション { 訪問 = 看護職員による訪問 { 訪問時間の区分 = 三十分以上一時間未満 } }
example 一回の注の記号を並べる
| "注が一つもなければ何も並ばない" : (注なし) -> []
| "並ぶ順は表の列の順"
: (一回の算定条件
{ ...注なし
, 訪問した職種 = 准看護師
, 時間帯 = 深夜
, 複数名訪問加算 = 複数名訪問加算Ⅰ { 三十分以上か = 三十分以上である }
, 同一建物の利用者 = 同一建物二十人以上
})
-> [ 割合乗算 { 分子 = 90, 分母 = 100 }
, 割合加算 { 分子 = 50, 分母 = 100 }
, 単位加算 { 単位 = 単位数(402) }
, 割合乗算 { 分子 = 90, 分母 = 100 }
]
example 一回の単位数を求める
| "注が付かなければ基本部分のまま"
: (三十分以上一時間未満のステーション訪問, 注なし) -> 単位数(821)
| "准看護師の場合は×90/100"
: (三十分以上一時間未満のステーション訪問, 一回の算定条件 { ...注なし, 訪問した職種 = 准看護師 })
-> 単位数(739)
| "夜間又は早朝は+25/100"
: (三十分以上一時間未満のステーション訪問, 一回の算定条件 { ...注なし, 時間帯 = 夜間又は早朝 })
-> 単位数(1026)
| "深夜は+50/100"
: (三十分以上一時間未満のステーション訪問, 一回の算定条件 { ...注なし, 時間帯 = 深夜 })
-> 単位数(1232)
| "複数名訪問加算(Ⅰ)30分未満は+254単位"
: ( 三十分以上一時間未満のステーション訪問
, 一回の算定条件 { ...注なし, 複数名訪問加算 = 複数名訪問加算Ⅰ { 三十分以上か = 三十分未満である } } )
-> 単位数(1075)
| "複数名訪問加算(Ⅰ)30分以上は+402単位"
: ( 三十分以上一時間未満のステーション訪問
, 一回の算定条件 { ...注なし, 複数名訪問加算 = 複数名訪問加算Ⅰ { 三十分以上か = 三十分以上である } } )
-> 単位数(1223)
| "複数名訪問加算(Ⅱ)30分未満は+201単位"
: ( 三十分以上一時間未満のステーション訪問
, 一回の算定条件 { ...注なし, 複数名訪問加算 = 複数名訪問加算Ⅱ { 三十分以上か = 三十分未満である } } )
-> 単位数(1022)
| "複数名訪問加算(Ⅱ)30分以上は+317単位"
: ( 三十分以上一時間未満のステーション訪問
, 一回の算定条件 { ...注なし, 複数名訪問加算 = 複数名訪問加算Ⅱ { 三十分以上か = 三十分以上である } } )
-> 単位数(1138)
| "1時間30分以上の訪問看護は+300単位"
: ( 三十分以上一時間未満のステーション訪問
, 一回の算定条件 { ...注なし, 一時間三十分以上の訪問看護 = 一時間三十分以上を行った } )
-> 単位数(1121)
| "同一建物20人以上は×90/100"
: (三十分以上一時間未満のステーション訪問, 一回の算定条件 { ...注なし, 同一建物の利用者 = 同一建物二十人以上 })
-> 単位数(739)
| "同一建物50人以上は×85/100"
: (三十分以上一時間未満のステーション訪問, 一回の算定条件 { ...注なし, 同一建物の利用者 = 同一建物五十人以上 })
-> 単位数(698)
| "特別地域訪問看護加算は+15/100"
: (三十分以上一時間未満のステーション訪問, 一回の算定条件 { ...注なし, 特別地域訪問看護加算 = 特別地域あり })
-> 単位数(944)
| "中山間地域等における小規模事業所加算は+10/100"
: ( 三十分以上一時間未満のステーション訪問
, 一回の算定条件 { ...注なし, 中山間地域等における小規模事業所加算 = 小規模事業所あり } )
-> 単位数(903)
| "中山間地域等に居住する者へのサービス提供加算は+5/100"
: ( 三十分以上一時間未満のステーション訪問
, 一回の算定条件 { ...注なし, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり } )
-> 単位数(862)
| "病院又は診療所も同じ列を通る"
: (病院又は診療所 { 訪問時間の区分 = 三十分以上一時間未満 }, 一回の算定条件 { ...注なし, 訪問した職種 = 准看護師 })
-> 単位数(516)
| "准看護師・深夜・同一建物20人以上を左から順に重ねる"
: ( 三十分以上一時間未満のステーション訪問
, 一回の算定条件
{ ...注なし
, 訪問した職種 = 准看護師
, 時間帯 = 深夜
, 同一建物の利用者 = 同一建物二十人以上
} )
-> 単位数(998)
// ------------------------------------------ ハに効く注の列(1月につき)
let 連携の注なし =
連携する場合の算定条件
{ 准看護師による訪問 = 一回もない
, 要介護度が五 = 要介護5ではない
, 同一建物の利用者 = 同一建物に該当しない
, 特別地域訪問看護加算 = 特別地域なし
, 中山間地域等における小規模事業所加算 = 小規模事業所なし
, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住なし
, 訪問看護指示期間 = 訪問看護指示期間(0)
}
example 連携する場合の単位数を求める
| "注が付かなければ2,954単位" : (連携の注なし) -> 単位数(2954)
| "准看護師による訪問が1回でもあれば×98/100"
: (連携する場合の算定条件 { ...連携の注なし, 准看護師による訪問 = 一回でもある }) -> 単位数(2895)
| "要介護5の者は+800単位"
: (連携する場合の算定条件 { ...連携の注なし, 要介護度が五 = 要介護5である }) -> 単位数(3754)
| "同一建物20人以上は×90/100"
: (連携する場合の算定条件 { ...連携の注なし, 同一建物の利用者 = 同一建物二十人以上 }) -> 単位数(2659)
| "同一建物50人以上は×85/100"
: (連携する場合の算定条件 { ...連携の注なし, 同一建物の利用者 = 同一建物五十人以上 }) -> 単位数(2511)
| "特別地域訪問看護加算は+15/100"
: (連携する場合の算定条件 { ...連携の注なし, 特別地域訪問看護加算 = 特別地域あり }) -> 単位数(3397)
| "中山間地域等における小規模事業所加算は+10/100"
: (連携する場合の算定条件 { ...連携の注なし, 中山間地域等における小規模事業所加算 = 小規模事業所あり })
-> 単位数(3249)
| "中山間地域等に居住する者へのサービス提供加算は+5/100"
: (連携する場合の算定条件 { ...連携の注なし, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり })
-> 単位数(3102)
| "訪問看護指示期間の日数につき1日−97単位"
: (連携する場合の算定条件 { ...連携の注なし, 訪問看護指示期間 = 訪問看護指示期間(14) }) -> 単位数(1596)
| "指示期間が1日なら−97単位"
: (連携する場合の算定条件 { ...連携の注なし, 訪問看護指示期間 = 訪問看護指示期間(1) }) -> 単位数(2857)
// ------------------------------------------ ニからチまでの加算
example 緊急時訪問看護加算の単位数を求める
| "訪問看護ステーションは+574単位"
: (指定訪問看護ステーション { 訪問 = 看護職員による訪問 { 訪問時間の区分 = 二十分未満 } }) -> 単位数(574)
| "病院又は診療所は+315単位"
: (病院又は診療所 { 訪問時間の区分 = 二十分未満 }) -> 単位数(315)
| "連携する場合もステーションの額を採る"
: (定期巡回随時対応型訪問介護看護事業所と連携する場合) -> 単位数(574)
// 表の列を1つずつ立てて、その列がどの記号になるかを見る。
// `souther examples` が「no row is in ...」で名指ししてきたぶん。
example 一回の注の記号を並べる
| "時間帯 = 夜間又は早朝"
: (一回の算定条件 { ...注なし, 時間帯 = 夜間又は早朝 })
-> [割合加算 { 分子 = 25, 分母 = 100 }]
| "複数名訪問加算 = 複数名訪問加算Ⅱ"
: (一回の算定条件 { ...注なし, 複数名訪問加算 = 複数名訪問加算Ⅱ { 三十分以上か = 三十分以上である } })
-> [単位加算 { 単位 = 単位数(317) }]
| "一時間三十分以上の訪問看護 = 一時間三十分以上を行った"
: (一回の算定条件 { ...注なし, 一時間三十分以上の訪問看護 = 一時間三十分以上を行った })
-> [単位加算 { 単位 = 単位数(300) }]
| "同一建物の利用者 = 同一建物五十人以上"
: (一回の算定条件 { ...注なし, 同一建物の利用者 = 同一建物五十人以上 })
-> [割合乗算 { 分子 = 85, 分母 = 100 }]
| "特別地域訪問看護加算 = 特別地域あり"
: (一回の算定条件 { ...注なし, 特別地域訪問看護加算 = 特別地域あり })
-> [割合加算 { 分子 = 15, 分母 = 100 }]
| "中山間地域等における小規模事業所加算 = 小規模事業所あり"
: (一回の算定条件 { ...注なし, 中山間地域等における小規模事業所加算 = 小規模事業所あり })
-> [割合加算 { 分子 = 10, 分母 = 100 }]
| "中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり"
: (一回の算定条件 { ...注なし, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり })
-> [割合加算 { 分子 = 5, 分母 = 100 }]
module kaigo.訪問看護 exposing
( 実施回数, 訪問時間の区分, 二十分未満, 三十分未満, 三十分以上一時間未満, 一時間以上一時間三十分未満
, ステーションの訪問, 看護職員による訪問, 理学療法士等による訪問
, 訪問看護費の区分, 一回につき算定する区分
, 指定訪問看護ステーション, 病院又は診療所, 定期巡回随時対応型訪問介護看護事業所と連携する場合
, 一回の基本部分の単位数を求める, 基本部分の単位数を求める
, 訪問した職種, 保健師又は看護師, 准看護師
, 時間帯, 日中, 夜間又は早朝, 深夜
, 複数名訪問加算, 複数名訪問加算なし, 複数名訪問加算Ⅰ, 複数名訪問加算Ⅱ
, 三十分以上か, 三十分以上である, 三十分未満である
, 一時間三十分以上の訪問看護, 一時間三十分以上を行った, 一時間三十分以上ではない
, 同一建物の利用者, 同一建物に該当しない, 同一建物二十人以上, 同一建物五十人以上
, 特別地域訪問看護加算, 特別地域あり, 特別地域なし
, 中山間地域等における小規模事業所加算, 小規模事業所あり, 小規模事業所なし
, 中山間地域等に居住する者へのサービス提供加算, 中山間地域居住あり, 中山間地域居住なし
, 一回の算定条件, 一回の注の記号を並べる, 一回の単位数を求める
, 准看護師による訪問, 一回でもある, 一回もない
, 要介護度が五, 要介護5である, 要介護5ではない
, 訪問看護指示期間, 連携する場合の算定条件, 連携する場合の単位数を求める
, 初回加算, 退院時共同指導加算, 看護介護職員連携強化加算
, 看護体制強化加算Ⅰ, 看護体制強化加算Ⅱ
, 緊急時訪問看護加算の単位数を求める, 特別管理加算Ⅰ, 特別管理加算Ⅱ, ターミナルケア加算
, サービス提供体制強化加算イロのⅠ, サービス提供体制強化加算イロのⅡ
, サービス提供体制強化加算ハのⅠ, サービス提供体制強化加算ハのⅡ
)
// 「介護報酬の算定構造」Ⅰ-3 訪問看護費(介護3ページ)。
// https://www.wam.go.jp/gyoseiShiryou-files/documents/2022/0322211552821/202203a.pdf
//
// この表は、注の列が基本部分のどの行に効くかが行ごとに違う。イ・ロ(1回につき)に効く列と、
// ハ 定期巡回・随時対応型訪問介護看護事業所と連携する場合(1月につき)に効く列が別なので、
// 記号を並べる behavior も分けてある。
import kaigo.共通
( 単位数, 算定記号, 単位加算, 単位減算, 割合乗算, 割合加算
, 記号を適用する, 記号を順に適用する
)
data 実施回数 = Int
invariant value >= 0
// ---------------------------------------------------------------- 基本部分
// イ・ロ に共通する所要時間の区分
// (1) 20分未満(週に1回以上、20分以上の保健師又は看護師による訪問を行った場合算定可能)
// (2) 30分未満
// (3) 30分以上1時間未満
// (4) 1時間以上1時間30分未満
data 訪問時間の区分 =
二十分未満 | 三十分未満 | 三十分以上一時間未満 | 一時間以上一時間三十分未満
data 看護職員による訪問 = { 訪問時間の区分: 訪問時間の区分 }
// イ(5) 理学療法士、作業療法士又は言語聴覚士の場合(293単位)
// ※ 1日に2回を超えて実施する場合は90/100
data 理学療法士等による訪問 = { 一日の実施回数: 実施回数 }
data ステーションの訪問 = 看護職員による訪問 | 理学療法士等による訪問
data 指定訪問看護ステーション = { 訪問: ステーションの訪問 }
data 病院又は診療所 = { 訪問時間の区分: 訪問時間の区分 }
// イ・ロは1回につき、ハは1月につき算定する。注の列も別なので、型でも分けておく。
data 一回につき算定する区分 = 指定訪問看護ステーション | 病院又は診療所
data 訪問看護費の区分 = 一回につき算定する区分 | 定期巡回随時対応型訪問介護看護事業所と連携する場合
behavior 一回の基本部分の単位数を求める : (区分: 一回につき算定する区分) -> 単位数
constructs 単位数, 割合乗算
// イ 指定訪問看護ステーションの場合
// (1) 313単位 (2) 470単位 (3) 821単位 (4) 1,125単位 (5) 293単位
// ロ 病院又は診療所の場合
// (1) 265単位 (2) 398単位 (3) 573単位 (4) 842単位
let 一回の基本部分の単位数を求める (区分) =
match 区分 with
| 指定訪問看護ステーション as ステーション ->
match ステーション.訪問 with
| 看護職員による訪問 as 訪問 ->
match 訪問.訪問時間の区分 with
| 二十分未満 -> 単位数(313)
| 三十分未満 -> 単位数(470)
| 三十分以上一時間未満 -> 単位数(821)
| 一時間以上一時間三十分未満 -> 単位数(1125)
| 理学療法士等による訪問 as 訪問 ->
if 訪問.一日の実施回数.value > 2
then 記号を適用する(単位数(293), 割合乗算 { 分子 = 90, 分母 = 100 })
else 単位数(293)
| 病院又は診療所 as 病院 ->
match 病院.訪問時間の区分 with
| 二十分未満 -> 単位数(265)
| 三十分未満 -> 単位数(398)
| 三十分以上一時間未満 -> 単位数(573)
| 一時間以上一時間三十分未満 -> 単位数(842)
behavior 基本部分の単位数を求める : (区分: 訪問看護費の区分) -> 単位数
constructs 単位数
// ハ 定期巡回・随時対応型訪問介護看護事業所と連携する場合 1月につき 2,954単位
let 基本部分の単位数を求める (区分) =
match 区分 with
| 一回につき算定する区分 as 一回 -> 一回の基本部分の単位数を求める(一回)
| 定期巡回随時対応型訪問介護看護事業所と連携する場合 -> 単位数(2954)
// 注 准看護師の場合 ×90/100
data 訪問した職種 = 保健師又は看護師 | 准看護師
// 注 夜間又は早朝の場合 +25/100、深夜の場合 +50/100
data 時間帯 = 日中 | 夜間又は早朝 | 深夜
// 注 複数名訪問加算(Ⅰ)30分未満の場合 +254単位、30分以上の場合 +402単位
// 複数名訪問加算(Ⅱ)30分未満の場合 +201単位、30分以上の場合 +317単位
data 複数名訪問加算Ⅰ = { 三十分以上か: 三十分以上か }
data 複数名訪問加算Ⅱ = { 三十分以上か: 三十分以上か }
data 複数名訪問加算 = 複数名訪問加算なし | 複数名訪問加算Ⅰ | 複数名訪問加算Ⅱ
data 三十分以上か = 三十分以上である | 三十分未満である
// 注 1時間30分以上の訪問看護を行う場合 +300単位
data 一時間三十分以上の訪問看護 = 一時間三十分以上を行った | 一時間三十分以上ではない
// 注 事業所と同一建物の利用者又はこれ以外の同一建物の利用者20人以上 ×90/100
// 事業所と同一建物の利用者50人以上 ×85/100
data 同一建物の利用者 = 同一建物に該当しない | 同一建物二十人以上 | 同一建物五十人以上
// 注 特別地域訪問看護加算 +15/100
data 特別地域訪問看護加算 = 特別地域あり | 特別地域なし
// 注 中山間地域等における小規模事業所加算 +10/100
data 中山間地域等における小規模事業所加算 = 小規模事業所あり | 小規模事業所なし
// 注 中山間地域等に居住する者へのサービス提供加算 +5/100
data 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり | 中山間地域居住なし
data 一回の算定条件 =
{ 訪問した職種: 訪問した職種
, 時間帯: 時間帯
, 複数名訪問加算: 複数名訪問加算
, 一時間三十分以上の訪問看護: 一時間三十分以上の訪問看護
, 同一建物の利用者: 同一建物の利用者
, 特別地域訪問看護加算: 特別地域訪問看護加算
, 中山間地域等における小規模事業所加算: 中山間地域等における小規模事業所加算
, 中山間地域等に居住する者へのサービス提供加算: 中山間地域等に居住する者へのサービス提供加算
}
behavior 一回の注の記号を並べる : (条件: 一回の算定条件) -> List<算定記号>
constructs 単位数, 単位加算, 割合乗算, 割合加算
let 一回の注の記号を並べる (条件) =
(match 条件.訪問した職種 with
| 准看護師 -> [割合乗算 { 分子 = 90, 分母 = 100 }]
| 保健師又は看護師 -> [])
++ (match 条件.時間帯 with
| 夜間又は早朝 -> [割合加算 { 分子 = 25, 分母 = 100 }]
| 深夜 -> [割合加算 { 分子 = 50, 分母 = 100 }]
| 日中 -> [])
++ (match 条件.複数名訪問加算 with
| 複数名訪問加算Ⅰ as 加算 ->
match 加算.三十分以上か with
| 三十分未満である -> [単位加算 { 単位 = 単位数(254) }]
| 三十分以上である -> [単位加算 { 単位 = 単位数(402) }]
| 複数名訪問加算Ⅱ as 加算 ->
match 加算.三十分以上か with
| 三十分未満である -> [単位加算 { 単位 = 単位数(201) }]
| 三十分以上である -> [単位加算 { 単位 = 単位数(317) }]
| 複数名訪問加算なし -> [])
++ (match 条件.一時間三十分以上の訪問看護 with
| 一時間三十分以上を行った -> [単位加算 { 単位 = 単位数(300) }]
| 一時間三十分以上ではない -> [])
++ (match 条件.同一建物の利用者 with
| 同一建物二十人以上 -> [割合乗算 { 分子 = 90, 分母 = 100 }]
| 同一建物五十人以上 -> [割合乗算 { 分子 = 85, 分母 = 100 }]
| 同一建物に該当しない -> [])
++ (match 条件.特別地域訪問看護加算 with
| 特別地域あり -> [割合加算 { 分子 = 15, 分母 = 100 }]
| 特別地域なし -> [])
++ (match 条件.中山間地域等における小規模事業所加算 with
| 小規模事業所あり -> [割合加算 { 分子 = 10, 分母 = 100 }]
| 小規模事業所なし -> [])
++ (match 条件.中山間地域等に居住する者へのサービス提供加算 with
| 中山間地域居住あり -> [割合加算 { 分子 = 5, 分母 = 100 }]
| 中山間地域居住なし -> [])
behavior 一回の単位数を求める : (区分: 一回につき算定する区分, 条件: 一回の算定条件) -> 単位数
let 一回の単位数を求める (区分, 条件) =
記号を順に適用する(基本部分の単位数を求める(区分), 一回の注の記号を並べる(条件))
// 注 准看護師による訪問が1回でもある場合 ×98/100
data 准看護師による訪問 = 一回でもある | 一回もない
// 注 要介護5の者の場合 +800単位
data 要介護度が五 = 要介護5である | 要介護5ではない
// 注 医療保険の訪問看護が必要であるものとして主治医が発行する訪問看護指示の文書の
// 訪問看護指示期間の日数につき減算(1日につき) -97単位
data 訪問看護指示期間 = Int
invariant 日数で数える = value >= 0
data 連携する場合の算定条件 =
{ 准看護師による訪問: 准看護師による訪問
, 要介護度が五: 要介護度が五
, 同一建物の利用者: 同一建物の利用者
, 特別地域訪問看護加算: 特別地域訪問看護加算
, 中山間地域等における小規模事業所加算: 中山間地域等における小規模事業所加算
, 中山間地域等に居住する者へのサービス提供加算: 中山間地域等に居住する者へのサービス提供加算
, 訪問看護指示期間: 訪問看護指示期間
}
behavior 連携する場合の単位数を求める : (条件: 連携する場合の算定条件) -> 単位数
constructs 単位数, 単位加算, 単位減算, 割合乗算, 割合加算
let 連携する場合の単位数を求める (条件) = {
let 記号の並び =
(match 条件.准看護師による訪問 with
| 一回でもある -> [割合乗算 { 分子 = 98, 分母 = 100 }]
| 一回もない -> [])
++ (match 条件.要介護度が五 with
| 要介護5である -> [単位加算 { 単位 = 単位数(800) }]
| 要介護5ではない -> [])
++ (match 条件.同一建物の利用者 with
| 同一建物二十人以上 -> [割合乗算 { 分子 = 90, 分母 = 100 }]
| 同一建物五十人以上 -> [割合乗算 { 分子 = 85, 分母 = 100 }]
| 同一建物に該当しない -> [])
++ (match 条件.特別地域訪問看護加算 with
| 特別地域あり -> [割合加算 { 分子 = 15, 分母 = 100 }]
| 特別地域なし -> [])
++ (match 条件.中山間地域等における小規模事業所加算 with
| 小規模事業所あり -> [割合加算 { 分子 = 10, 分母 = 100 }]
| 小規模事業所なし -> [])
++ (match 条件.中山間地域等に居住する者へのサービス提供加算 with
| 中山間地域居住あり -> [割合加算 { 分子 = 5, 分母 = 100 }]
| 中山間地域居住なし -> [])
++ [単位減算 { 単位 = 単位数(97 * 条件.訪問看護指示期間.value) }]
記号を順に適用する(単位数(2954), 記号の並び)
}
// ニ 初回加算 1月につき +300単位
// ホ 退院時共同指導加算 1回につき +600単位
// ヘ 看護・介護職員連携強化加算 1月につき +250単位
// ト 看護体制強化加算(イ及びロを算定する場合のみ算定)
// (Ⅰ)1月につき +550単位 (Ⅱ)1月につき +200単位
// チ サービス提供体制強化加算
// (1) イ及びロを算定する場合 (Ⅰ)1回につき +6単位 (Ⅱ)1回につき +3単位
// (2) ハを算定する場合 (Ⅰ)1月につき +50単位 (Ⅱ)1月につき +25単位
let 初回加算 = 単位数(300)
let 退院時共同指導加算 = 単位数(600)
let 看護介護職員連携強化加算 = 単位数(250)
let 看護体制強化加算Ⅰ = 単位数(550)
let 看護体制強化加算Ⅱ = 単位数(200)
let サービス提供体制強化加算イロのⅠ = 単位数(6)
let サービス提供体制強化加算イロのⅡ = 単位数(3)
let サービス提供体制強化加算ハのⅠ = 単位数(50)
let サービス提供体制強化加算ハのⅡ = 単位数(25)
// 注 特別管理加算 1月につき (Ⅰ)+500単位 又は (Ⅱ)+250単位
let 特別管理加算Ⅰ = 単位数(500)
let 特別管理加算Ⅱ = 単位数(250)
// 注 ターミナルケア加算
// 死亡日及び死亡日前14日以内に2日以上ターミナルケアを行った場合 +2,000単位
let ターミナルケア加算 = 単位数(2000)
// 注 緊急時訪問看護加算(※)1月につき
// 訪問看護ステーションの場合 +574単位、病院又は診療所の場合 +315単位
// ※ 1月以内の2回目以降の緊急時訪問については、早朝・夜間、深夜の訪問看護に係る加算を
// 算定できるものとする。
behavior 緊急時訪問看護加算の単位数を求める : (区分: 訪問看護費の区分) -> 単位数
constructs 単位数
let 緊急時訪問看護加算の単位数を求める (区分) =
match 区分 with
| 一回につき算定する区分 as 一回 ->
match 一回 with
| 指定訪問看護ステーション -> 単位数(574)
| 病院又は診療所 -> 単位数(315)
// ハを算定する事業所の緊急時訪問看護加算も、その事業所が訪問看護ステーションか
// 病院又は診療所かで決まる。表はその2つを並べている。
| 定期巡回随時対応型訪問介護看護事業所と連携する場合 -> 単位数(574)
examples for kaigo.通所リハビリテーション
// 表の各セルと、行だけが名指す値。モデル本体と分けてある。
example 基本部分の単位数を求める
| "通常規模型 一時間以上二時間未満 要介護1"
: (通常規模型通所リハビリテーション費, 一時間以上二時間未満, 要介護1) -> 単位数(366)
| "通常規模型 一時間以上二時間未満 要介護2"
: (通常規模型通所リハビリテーション費, 一時間以上二時間未満, 要介護2) -> 単位数(395)
| "通常規模型 一時間以上二時間未満 要介護3"
: (通常規模型通所リハビリテーション費, 一時間以上二時間未満, 要介護3) -> 単位数(426)
| "通常規模型 一時間以上二時間未満 要介護4"
: (通常規模型通所リハビリテーション費, 一時間以上二時間未満, 要介護4) -> 単位数(455)
| "通常規模型 一時間以上二時間未満 要介護5"
: (通常規模型通所リハビリテーション費, 一時間以上二時間未満, 要介護5) -> 単位数(487)
| "通常規模型 二時間以上三時間未満 要介護1"
: (通常規模型通所リハビリテーション費, 二時間以上三時間未満, 要介護1) -> 単位数(380)
| "通常規模型 二時間以上三時間未満 要介護2"
: (通常規模型通所リハビリテーション費, 二時間以上三時間未満, 要介護2) -> 単位数(436)
| "通常規模型 二時間以上三時間未満 要介護3"
: (通常規模型通所リハビリテーション費, 二時間以上三時間未満, 要介護3) -> 単位数(494)
| "通常規模型 二時間以上三時間未満 要介護4"
: (通常規模型通所リハビリテーション費, 二時間以上三時間未満, 要介護4) -> 単位数(551)
| "通常規模型 二時間以上三時間未満 要介護5"
: (通常規模型通所リハビリテーション費, 二時間以上三時間未満, 要介護5) -> 単位数(608)
| "通常規模型 三時間以上四時間未満 要介護1"
: (通常規模型通所リハビリテーション費, 三時間以上四時間未満, 要介護1) -> 単位数(483)
| "通常規模型 三時間以上四時間未満 要介護2"
: (通常規模型通所リハビリテーション費, 三時間以上四時間未満, 要介護2) -> 単位数(561)
| "通常規模型 三時間以上四時間未満 要介護3"
: (通常規模型通所リハビリテーション費, 三時間以上四時間未満, 要介護3) -> 単位数(638)
| "通常規模型 三時間以上四時間未満 要介護4"
: (通常規模型通所リハビリテーション費, 三時間以上四時間未満, 要介護4) -> 単位数(738)
| "通常規模型 三時間以上四時間未満 要介護5"
: (通常規模型通所リハビリテーション費, 三時間以上四時間未満, 要介護5) -> 単位数(836)
| "通常規模型 四時間以上五時間未満 要介護1"
: (通常規模型通所リハビリテーション費, 四時間以上五時間未満, 要介護1) -> 単位数(549)
| "通常規模型 四時間以上五時間未満 要介護2"
: (通常規模型通所リハビリテーション費, 四時間以上五時間未満, 要介護2) -> 単位数(637)
| "通常規模型 四時間以上五時間未満 要介護3"
: (通常規模型通所リハビリテーション費, 四時間以上五時間未満, 要介護3) -> 単位数(725)
| "通常規模型 四時間以上五時間未満 要介護4"
: (通常規模型通所リハビリテーション費, 四時間以上五時間未満, 要介護4) -> 単位数(838)
| "通常規模型 四時間以上五時間未満 要介護5"
: (通常規模型通所リハビリテーション費, 四時間以上五時間未満, 要介護5) -> 単位数(950)
| "通常規模型 五時間以上六時間未満 要介護1"
: (通常規模型通所リハビリテーション費, 五時間以上六時間未満, 要介護1) -> 単位数(618)
| "通常規模型 五時間以上六時間未満 要介護2"
: (通常規模型通所リハビリテーション費, 五時間以上六時間未満, 要介護2) -> 単位数(733)
| "通常規模型 五時間以上六時間未満 要介護3"
: (通常規模型通所リハビリテーション費, 五時間以上六時間未満, 要介護3) -> 単位数(846)
| "通常規模型 五時間以上六時間未満 要介護4"
: (通常規模型通所リハビリテーション費, 五時間以上六時間未満, 要介護4) -> 単位数(980)
| "通常規模型 五時間以上六時間未満 要介護5"
: (通常規模型通所リハビリテーション費, 五時間以上六時間未満, 要介護5) -> 単位数(1112)
| "通常規模型 六時間以上七時間未満 要介護1"
: (通常規模型通所リハビリテーション費, 六時間以上七時間未満, 要介護1) -> 単位数(710)
| "通常規模型 六時間以上七時間未満 要介護2"
: (通常規模型通所リハビリテーション費, 六時間以上七時間未満, 要介護2) -> 単位数(844)
| "通常規模型 六時間以上七時間未満 要介護3"
: (通常規模型通所リハビリテーション費, 六時間以上七時間未満, 要介護3) -> 単位数(974)
| "通常規模型 六時間以上七時間未満 要介護4"
: (通常規模型通所リハビリテーション費, 六時間以上七時間未満, 要介護4) -> 単位数(1129)
| "通常規模型 六時間以上七時間未満 要介護5"
: (通常規模型通所リハビリテーション費, 六時間以上七時間未満, 要介護5) -> 単位数(1281)
| "通常規模型 七時間以上八時間未満 要介護1"
: (通常規模型通所リハビリテーション費, 七時間以上八時間未満, 要介護1) -> 単位数(757)
| "通常規模型 七時間以上八時間未満 要介護2"
: (通常規模型通所リハビリテーション費, 七時間以上八時間未満, 要介護2) -> 単位数(897)
| "通常規模型 七時間以上八時間未満 要介護3"
: (通常規模型通所リハビリテーション費, 七時間以上八時間未満, 要介護3) -> 単位数(1039)
| "通常規模型 七時間以上八時間未満 要介護4"
: (通常規模型通所リハビリテーション費, 七時間以上八時間未満, 要介護4) -> 単位数(1206)
| "通常規模型 七時間以上八時間未満 要介護5"
: (通常規模型通所リハビリテーション費, 七時間以上八時間未満, 要介護5) -> 単位数(1369)
| "大規模型Ⅰ 一時間以上二時間未満 要介護1"
: (大規模型通所リハビリテーション費Ⅰ, 一時間以上二時間未満, 要介護1) -> 単位数(361)
| "大規模型Ⅰ 一時間以上二時間未満 要介護2"
: (大規模型通所リハビリテーション費Ⅰ, 一時間以上二時間未満, 要介護2) -> 単位数(392)
| "大規模型Ⅰ 一時間以上二時間未満 要介護3"
: (大規模型通所リハビリテーション費Ⅰ, 一時間以上二時間未満, 要介護3) -> 単位数(421)
| "大規模型Ⅰ 一時間以上二時間未満 要介護4"
: (大規模型通所リハビリテーション費Ⅰ, 一時間以上二時間未満, 要介護4) -> 単位数(450)
| "大規模型Ⅰ 一時間以上二時間未満 要介護5"
: (大規模型通所リハビリテーション費Ⅰ, 一時間以上二時間未満, 要介護5) -> 単位数(481)
| "大規模型Ⅰ 二時間以上三時間未満 要介護1"
: (大規模型通所リハビリテーション費Ⅰ, 二時間以上三時間未満, 要介護1) -> 単位数(375)
| "大規模型Ⅰ 二時間以上三時間未満 要介護2"
: (大規模型通所リハビリテーション費Ⅰ, 二時間以上三時間未満, 要介護2) -> 単位数(431)
| "大規模型Ⅰ 二時間以上三時間未満 要介護3"
: (大規模型通所リハビリテーション費Ⅰ, 二時間以上三時間未満, 要介護3) -> 単位数(488)
| "大規模型Ⅰ 二時間以上三時間未満 要介護4"
: (大規模型通所リハビリテーション費Ⅰ, 二時間以上三時間未満, 要介護4) -> 単位数(544)
| "大規模型Ⅰ 二時間以上三時間未満 要介護5"
: (大規模型通所リハビリテーション費Ⅰ, 二時間以上三時間未満, 要介護5) -> 単位数(601)
| "大規模型Ⅰ 三時間以上四時間未満 要介護1"
: (大規模型通所リハビリテーション費Ⅰ, 三時間以上四時間未満, 要介護1) -> 単位数(477)
| "大規模型Ⅰ 三時間以上四時間未満 要介護2"
: (大規模型通所リハビリテーション費Ⅰ, 三時間以上四時間未満, 要介護2) -> 単位数(554)
| "大規模型Ⅰ 三時間以上四時間未満 要介護3"
: (大規模型通所リハビリテーション費Ⅰ, 三時間以上四時間未満, 要介護3) -> 単位数(630)
| "大規模型Ⅰ 三時間以上四時間未満 要介護4"
: (大規模型通所リハビリテーション費Ⅰ, 三時間以上四時間未満, 要介護4) -> 単位数(727)
| "大規模型Ⅰ 三時間以上四時間未満 要介護5"
: (大規模型通所リハビリテーション費Ⅰ, 三時間以上四時間未満, 要介護5) -> 単位数(824)
| "大規模型Ⅰ 四時間以上五時間未満 要介護1"
: (大規模型通所リハビリテーション費Ⅰ, 四時間以上五時間未満, 要介護1) -> 単位数(540)
| "大規模型Ⅰ 四時間以上五時間未満 要介護2"
: (大規模型通所リハビリテーション費Ⅰ, 四時間以上五時間未満, 要介護2) -> 単位数(626)
| "大規模型Ⅰ 四時間以上五時間未満 要介護3"
: (大規模型通所リハビリテーション費Ⅰ, 四時間以上五時間未満, 要介護3) -> 単位数(711)
| "大規模型Ⅰ 四時間以上五時間未満 要介護4"
: (大規模型通所リハビリテーション費Ⅰ, 四時間以上五時間未満, 要介護4) -> 単位数(821)
| "大規模型Ⅰ 四時間以上五時間未満 要介護5"
: (大規模型通所リハビリテーション費Ⅰ, 四時間以上五時間未満, 要介護5) -> 単位数(932)
| "大規模型Ⅰ 五時間以上六時間未満 要介護1"
: (大規模型通所リハビリテーション費Ⅰ, 五時間以上六時間未満, 要介護1) -> 単位数(599)
| "大規模型Ⅰ 五時間以上六時間未満 要介護2"
: (大規模型通所リハビリテーション費Ⅰ, 五時間以上六時間未満, 要介護2) -> 単位数(709)
| "大規模型Ⅰ 五時間以上六時間未満 要介護3"
: (大規模型通所リハビリテーション費Ⅰ, 五時間以上六時間未満, 要介護3) -> 単位数(819)
| "大規模型Ⅰ 五時間以上六時間未満 要介護4"
: (大規模型通所リハビリテーション費Ⅰ, 五時間以上六時間未満, 要介護4) -> 単位数(950)
| "大規模型Ⅰ 五時間以上六時間未満 要介護5"
: (大規模型通所リハビリテーション費Ⅰ, 五時間以上六時間未満, 要介護5) -> 単位数(1077)
| "大規模型Ⅰ 六時間以上七時間未満 要介護1"
: (大規模型通所リハビリテーション費Ⅰ, 六時間以上七時間未満, 要介護1) -> 単位数(694)
| "大規模型Ⅰ 六時間以上七時間未満 要介護2"
: (大規模型通所リハビリテーション費Ⅰ, 六時間以上七時間未満, 要介護2) -> 単位数(824)
| "大規模型Ⅰ 六時間以上七時間未満 要介護3"
: (大規模型通所リハビリテーション費Ⅰ, 六時間以上七時間未満, 要介護3) -> 単位数(953)
| "大規模型Ⅰ 六時間以上七時間未満 要介護4"
: (大規模型通所リハビリテーション費Ⅰ, 六時間以上七時間未満, 要介護4) -> 単位数(1102)
| "大規模型Ⅰ 六時間以上七時間未満 要介護5"
: (大規模型通所リハビリテーション費Ⅰ, 六時間以上七時間未満, 要介護5) -> 単位数(1252)
| "大規模型Ⅰ 七時間以上八時間未満 要介護1"
: (大規模型通所リハビリテーション費Ⅰ, 七時間以上八時間未満, 要介護1) -> 単位数(734)
| "大規模型Ⅰ 七時間以上八時間未満 要介護2"
: (大規模型通所リハビリテーション費Ⅰ, 七時間以上八時間未満, 要介護2) -> 単位数(868)
| "大規模型Ⅰ 七時間以上八時間未満 要介護3"
: (大規模型通所リハビリテーション費Ⅰ, 七時間以上八時間未満, 要介護3) -> 単位数(1006)
| "大規模型Ⅰ 七時間以上八時間未満 要介護4"
: (大規模型通所リハビリテーション費Ⅰ, 七時間以上八時間未満, 要介護4) -> 単位数(1166)
| "大規模型Ⅰ 七時間以上八時間未満 要介護5"
: (大規模型通所リハビリテーション費Ⅰ, 七時間以上八時間未満, 要介護5) -> 単位数(1325)
| "大規模型Ⅱ 一時間以上二時間未満 要介護1"
: (大規模型通所リハビリテーション費Ⅱ, 一時間以上二時間未満, 要介護1) -> 単位数(353)
| "大規模型Ⅱ 一時間以上二時間未満 要介護2"
: (大規模型通所リハビリテーション費Ⅱ, 一時間以上二時間未満, 要介護2) -> 単位数(384)
| "大規模型Ⅱ 一時間以上二時間未満 要介護3"
: (大規模型通所リハビリテーション費Ⅱ, 一時間以上二時間未満, 要介護3) -> 単位数(411)
| "大規模型Ⅱ 一時間以上二時間未満 要介護4"
: (大規模型通所リハビリテーション費Ⅱ, 一時間以上二時間未満, 要介護4) -> 単位数(441)
| "大規模型Ⅱ 一時間以上二時間未満 要介護5"
: (大規模型通所リハビリテーション費Ⅱ, 一時間以上二時間未満, 要介護5) -> 単位数(469)
| "大規模型Ⅱ 二時間以上三時間未満 要介護1"
: (大規模型通所リハビリテーション費Ⅱ, 二時間以上三時間未満, 要介護1) -> 単位数(368)
| "大規模型Ⅱ 二時間以上三時間未満 要介護2"
: (大規模型通所リハビリテーション費Ⅱ, 二時間以上三時間未満, 要介護2) -> 単位数(423)
| "大規模型Ⅱ 二時間以上三時間未満 要介護3"
: (大規模型通所リハビリテーション費Ⅱ, 二時間以上三時間未満, 要介護3) -> 単位数(477)
| "大規模型Ⅱ 二時間以上三時間未満 要介護4"
: (大規模型通所リハビリテーション費Ⅱ, 二時間以上三時間未満, 要介護4) -> 単位数(531)
| "大規模型Ⅱ 二時間以上三時間未満 要介護5"
: (大規模型通所リハビリテーション費Ⅱ, 二時間以上三時間未満, 要介護5) -> 単位数(586)
| "大規模型Ⅱ 三時間以上四時間未満 要介護1"
: (大規模型通所リハビリテーション費Ⅱ, 三時間以上四時間未満, 要介護1) -> 単位数(465)
| "大規模型Ⅱ 三時間以上四時間未満 要介護2"
: (大規模型通所リハビリテーション費Ⅱ, 三時間以上四時間未満, 要介護2) -> 単位数(542)
| "大規模型Ⅱ 三時間以上四時間未満 要介護3"
: (大規模型通所リハビリテーション費Ⅱ, 三時間以上四時間未満, 要介護3) -> 単位数(616)
| "大規模型Ⅱ 三時間以上四時間未満 要介護4"
: (大規模型通所リハビリテーション費Ⅱ, 三時間以上四時間未満, 要介護4) -> 単位数(710)
| "大規模型Ⅱ 三時間以上四時間未満 要介護5"
: (大規模型通所リハビリテーション費Ⅱ, 三時間以上四時間未満, 要介護5) -> 単位数(806)
| "大規模型Ⅱ 四時間以上五時間未満 要介護1"
: (大規模型通所リハビリテーション費Ⅱ, 四時間以上五時間未満, 要介護1) -> 単位数(520)
| "大規模型Ⅱ 四時間以上五時間未満 要介護2"
: (大規模型通所リハビリテーション費Ⅱ, 四時間以上五時間未満, 要介護2) -> 単位数(606)
| "大規模型Ⅱ 四時間以上五時間未満 要介護3"
: (大規模型通所リハビリテーション費Ⅱ, 四時間以上五時間未満, 要介護3) -> 単位数(689)
| "大規模型Ⅱ 四時間以上五時間未満 要介護4"
: (大規模型通所リハビリテーション費Ⅱ, 四時間以上五時間未満, 要介護4) -> 単位数(796)
| "大規模型Ⅱ 四時間以上五時間未満 要介護5"
: (大規模型通所リハビリテーション費Ⅱ, 四時間以上五時間未満, 要介護5) -> 単位数(902)
| "大規模型Ⅱ 五時間以上六時間未満 要介護1"
: (大規模型通所リハビリテーション費Ⅱ, 五時間以上六時間未満, 要介護1) -> 単位数(579)
| "大規模型Ⅱ 五時間以上六時間未満 要介護2"
: (大規模型通所リハビリテーション費Ⅱ, 五時間以上六時間未満, 要介護2) -> 単位数(687)
| "大規模型Ⅱ 五時間以上六時間未満 要介護3"
: (大規模型通所リハビリテーション費Ⅱ, 五時間以上六時間未満, 要介護3) -> 単位数(793)
| "大規模型Ⅱ 五時間以上六時間未満 要介護4"
: (大規模型通所リハビリテーション費Ⅱ, 五時間以上六時間未満, 要介護4) -> 単位数(919)
| "大規模型Ⅱ 五時間以上六時間未満 要介護5"
: (大規模型通所リハビリテーション費Ⅱ, 五時間以上六時間未満, 要介護5) -> 単位数(1043)
| "大規模型Ⅱ 六時間以上七時間未満 要介護1"
: (大規模型通所リハビリテーション費Ⅱ, 六時間以上七時間未満, 要介護1) -> 単位数(670)
| "大規模型Ⅱ 六時間以上七時間未満 要介護2"
: (大規模型通所リハビリテーション費Ⅱ, 六時間以上七時間未満, 要介護2) -> 単位数(797)
| "大規模型Ⅱ 六時間以上七時間未満 要介護3"
: (大規模型通所リハビリテーション費Ⅱ, 六時間以上七時間未満, 要介護3) -> 単位数(919)
| "大規模型Ⅱ 六時間以上七時間未満 要介護4"
: (大規模型通所リハビリテーション費Ⅱ, 六時間以上七時間未満, 要介護4) -> 単位数(1066)
| "大規模型Ⅱ 六時間以上七時間未満 要介護5"
: (大規模型通所リハビリテーション費Ⅱ, 六時間以上七時間未満, 要介護5) -> 単位数(1211)
| "大規模型Ⅱ 七時間以上八時間未満 要介護1"
: (大規模型通所リハビリテーション費Ⅱ, 七時間以上八時間未満, 要介護1) -> 単位数(708)
| "大規模型Ⅱ 七時間以上八時間未満 要介護2"
: (大規模型通所リハビリテーション費Ⅱ, 七時間以上八時間未満, 要介護2) -> 単位数(841)
| "大規模型Ⅱ 七時間以上八時間未満 要介護3"
: (大規模型通所リハビリテーション費Ⅱ, 七時間以上八時間未満, 要介護3) -> 単位数(973)
| "大規模型Ⅱ 七時間以上八時間未満 要介護4"
: (大規模型通所リハビリテーション費Ⅱ, 七時間以上八時間未満, 要介護4) -> 単位数(1129)
| "大規模型Ⅱ 七時間以上八時間未満 要介護5"
: (大規模型通所リハビリテーション費Ⅱ, 七時間以上八時間未満, 要介護5) -> 単位数(1282)
// ---------------------------------------------------------------- 注の各列
let 注なし =
算定条件
{ 定員超過又は員数不足 = 該当しない
, 感染症又は災害による利用者数の減少 = 生じていない
, 理学療法士等体制強化加算 = 理学療法士等体制強化なし
, 通所リハビリテーションの前後の日常生活上の世話 = 世話を行わない
, リハビリテーション提供体制加算 = 提供体制加算なし
, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住なし
, 入浴介助加算 = 入浴介助加算なし
, リハビリテーションマネジメント加算 = マネジメント加算なし
, 短期集中個別リハビリテーション実施加算 = 短期集中個別なし
, 認知症短期集中リハビリテーション実施加算 = 認知症短期集中なし
, 生活行為向上リハビリテーション実施加算 = 生活行為向上なし
, 若年性認知症利用者受入加算 = 若年性認知症受入なし
, 栄養アセスメント加算 = 栄養アセスメントなし
, 栄養改善加算 = 栄養改善なし
, 口腔栄養スクリーニング加算 = 口腔栄養スクリーニングなし
, 口腔機能向上加算 = 口腔機能向上加算なし
, 重度療養管理加算 = 重度療養管理なし
, 中重度者ケア体制加算 = 中重度者ケア体制なし
, 科学的介護推進体制加算 = 科学的介護推進体制なし
, 同一建物からの利用 = 同一建物から利用しない
, 送迎 = 送迎を行う
}
example 注の記号を並べる
| "注が一つもなければ何も並ばない" : (病院又は診療所, 五時間以上六時間未満, 注なし) -> []
| "並ぶ順は表の列の順"
: ( 病院又は診療所, 五時間以上六時間未満
, 算定条件
{ ...注なし
, 定員超過又は員数不足 = 利用者の数が利用定員を超える
, リハビリテーション提供体制加算 = 提供体制加算あり
, 入浴介助加算 = 入浴介助加算Ⅰ
, 同一建物からの利用 = 同一建物から利用する
} )
-> [ 割合乗算 { 分子 = 70, 分母 = 100 }
, 単位加算 { 単位 = 単位数(20) }
, 単位加算 { 単位 = 単位数(40) }
, 単位減算 { 単位 = 単位数(94) }
]
| "リハビリテーション提供体制加算は所要時間で単位数が変わる"
: ( 病院又は診療所, 七時間以上八時間未満
, 算定条件 { ...注なし, リハビリテーション提供体制加算 = 提供体制加算あり } )
-> [単位加算 { 単位 = 単位数(28) }]
| "1時間以上2時間未満には提供体制加算の枠がない"
: ( 病院又は診療所, 一時間以上二時間未満
, 算定条件 { ...注なし, リハビリテーション提供体制加算 = 提供体制加算あり } )
-> []
| "2時間以上3時間未満にも枠がない"
: ( 病院又は診療所, 二時間以上三時間未満
, 算定条件 { ...注なし, リハビリテーション提供体制加算 = 提供体制加算あり } )
-> []
| "3時間以上4時間未満は+12単位"
: ( 病院又は診療所, 三時間以上四時間未満
, 算定条件 { ...注なし, リハビリテーション提供体制加算 = 提供体制加算あり } )
-> [単位加算 { 単位 = 単位数(12) }]
| "4時間以上5時間未満は+16単位"
: ( 病院又は診療所, 四時間以上五時間未満
, 算定条件 { ...注なし, リハビリテーション提供体制加算 = 提供体制加算あり } )
-> [単位加算 { 単位 = 単位数(16) }]
| "介護老人保健施設には重度療養管理加算の枠がない"
: ( 介護老人保健施設, 五時間以上六時間未満
, 算定条件 { ...注なし, 重度療養管理加算 = 重度療養管理あり } )
-> []
| "介護医療院には枠がある"
: ( 介護医療院, 五時間以上六時間未満
, 算定条件 { ...注なし, 重度療養管理加算 = 重度療養管理あり } )
-> [単位加算 { 単位 = 単位数(100) }]
| "介護医療院でも算定しなければ並ばない"
: ( 介護医療院, 五時間以上六時間未満
, 算定条件 { ...注なし, 重度療養管理加算 = 重度療養管理なし } )
-> []
| "病院又は診療所で算定しない場合"
: ( 病院又は診療所, 五時間以上六時間未満
, 算定条件 { ...注なし, 重度療養管理加算 = 重度療養管理なし } )
-> []
| "6時間以上7時間未満は+24単位"
: ( 病院又は診療所, 六時間以上七時間未満
, 算定条件 { ...注なし, リハビリテーション提供体制加算 = 提供体制加算あり } )
-> [単位加算 { 単位 = 単位数(24) }]
example 単位数を求める
| "注が付かなければ基本部分のまま"
: (通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3, 注なし) -> 単位数(846)
| "利用定員を超える場合は×70/100"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 定員超過又は員数不足 = 利用者の数が利用定員を超える } )
-> 単位数(592)
| "従業者の員数が基準に満たない場合も×70/100"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 定員超過又は員数不足 = 従業者の員数が基準に満たない } )
-> 単位数(592)
| "感染症又は災害による利用者数の減少は+3/100"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 感染症又は災害による利用者数の減少 = 一定以上生じている } )
-> 単位数(871)
| "理学療法士等体制強化加算は+30単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 一時間以上二時間未満, 要介護1
, 算定条件 { ...注なし, 理学療法士等体制強化加算 = 理学療法士等体制強化あり } )
-> 単位数(396)
| "8時間以上9時間未満の世話は+50単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 通所リハビリテーションの前後の日常生活上の世話 = 八時間以上九時間未満 } )
-> 単位数(1089)
| "9時間以上10時間未満の世話は+100単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 通所リハビリテーションの前後の日常生活上の世話 = 九時間以上十時間未満 } )
-> 単位数(1139)
| "10時間以上11時間未満の世話は+150単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 通所リハビリテーションの前後の日常生活上の世話 = 十時間以上十一時間未満 } )
-> 単位数(1189)
| "11時間以上12時間未満の世話は+200単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 通所リハビリテーションの前後の日常生活上の世話 = 十一時間以上十二時間未満 } )
-> 単位数(1239)
| "12時間以上13時間未満の世話は+250単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 通所リハビリテーションの前後の日常生活上の世話 = 十二時間以上十三時間未満 } )
-> 単位数(1289)
| "13時間以上14時間未満の世話は+300単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 通所リハビリテーションの前後の日常生活上の世話 = 十三時間以上十四時間未満 } )
-> 単位数(1339)
| "リハビリテーション提供体制加算は+20単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, リハビリテーション提供体制加算 = 提供体制加算あり } )
-> 単位数(866)
| "中山間地域等に居住する者へのサービス提供加算は+5/100"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり } )
-> 単位数(888)
| "入浴介助加算(Ⅰ)は+40単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 入浴介助加算 = 入浴介助加算Ⅰ } )
-> 単位数(886)
| "入浴介助加算(Ⅱ)は+60単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 入浴介助加算 = 入浴介助加算Ⅱ } )
-> 単位数(906)
| "マネジメント加算(A)イ6月以内は+560単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Aイ六月以内 } )
-> 単位数(1406)
| "マネジメント加算(A)イ6月超は+240単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Aイ六月超 } )
-> 単位数(1086)
| "マネジメント加算(A)ロ6月以内は+593単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Aロ六月以内 } )
-> 単位数(1439)
| "マネジメント加算(A)ロ6月超は+273単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Aロ六月超 } )
-> 単位数(1119)
| "マネジメント加算(B)イ6月以内は+830単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Bイ六月以内 } )
-> 単位数(1676)
| "マネジメント加算(B)イ6月超は+510単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Bイ六月超 } )
-> 単位数(1356)
| "マネジメント加算(B)ロ6月以内は+863単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Bロ六月以内 } )
-> 単位数(1709)
| "マネジメント加算(B)ロ6月超は+543単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Bロ六月超 } )
-> 単位数(1389)
| "短期集中個別リハビリテーション実施加算は+110単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 短期集中個別リハビリテーション実施加算 = 短期集中個別あり } )
-> 単位数(956)
| "認知症短期集中リハビリテーション実施加算(Ⅰ)は+240単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 認知症短期集中リハビリテーション実施加算 = 認知症短期集中Ⅰ } )
-> 単位数(1086)
| "認知症短期集中リハビリテーション実施加算(Ⅱ)は+1,920単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 認知症短期集中リハビリテーション実施加算 = 認知症短期集中Ⅱ } )
-> 単位数(2766)
| "生活行為向上リハビリテーション実施加算は+1,250単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 生活行為向上リハビリテーション実施加算 = 生活行為向上あり } )
-> 単位数(2096)
| "若年性認知症利用者受入加算は+60単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 若年性認知症利用者受入加算 = 若年性認知症受入あり } )
-> 単位数(906)
| "栄養アセスメント加算は+50単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 栄養アセスメント加算 = 栄養アセスメントあり } )
-> 単位数(896)
| "栄養改善加算は+200単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 栄養改善加算 = 栄養改善あり } )
-> 単位数(1046)
| "口腔・栄養スクリーニング加算(Ⅰ)は+20単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 口腔栄養スクリーニング加算 = 口腔栄養スクリーニング加算Ⅰ } )
-> 単位数(866)
| "口腔・栄養スクリーニング加算(Ⅱ)は+5単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 口腔栄養スクリーニング加算 = 口腔栄養スクリーニング加算Ⅱ } )
-> 単位数(851)
| "口腔機能向上加算(Ⅰ)は+150単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 口腔機能向上加算 = 口腔機能向上加算Ⅰ } )
-> 単位数(996)
| "口腔機能向上加算(Ⅱ)は+160単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 口腔機能向上加算 = 口腔機能向上加算Ⅱ } )
-> 単位数(1006)
| "重度療養管理加算は+100単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 重度療養管理加算 = 重度療養管理あり } )
-> 単位数(946)
| "中重度者ケア体制加算は+20単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 中重度者ケア体制加算 = 中重度者ケア体制あり } )
-> 単位数(866)
| "科学的介護推進体制加算は+40単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 科学的介護推進体制加算 = 科学的介護推進体制あり } )
-> 単位数(886)
| "同一建物から利用する者は-94単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 同一建物からの利用 = 同一建物から利用する } )
-> 単位数(752)
| "送迎を片道行わない場合は-47単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 送迎 = 片道の送迎を行わない } )
-> 単位数(799)
| "送迎を両道行わない場合は-94単位"
: ( 通常規模型通所リハビリテーション費, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 送迎 = 両道の送迎を行わない } )
-> 単位数(752)
| "大規模型(Ⅰ)も同じ列を通る"
: ( 大規模型通所リハビリテーション費Ⅰ, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 入浴介助加算 = 入浴介助加算Ⅰ } )
-> 単位数(859)
| "大規模型(Ⅱ)も同じ列を通る"
: ( 大規模型通所リハビリテーション費Ⅱ, 病院又は診療所, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 入浴介助加算 = 入浴介助加算Ⅰ } )
-> 単位数(833)
| "1時間以上2時間未満・要介護2"
: (通常規模型通所リハビリテーション費, 病院又は診療所, 一時間以上二時間未満, 要介護2, 注なし) -> 単位数(395)
| "2時間以上3時間未満・要介護4"
: (通常規模型通所リハビリテーション費, 病院又は診療所, 二時間以上三時間未満, 要介護4, 注なし) -> 単位数(551)
| "3時間以上4時間未満・要介護5"
: (通常規模型通所リハビリテーション費, 病院又は診療所, 三時間以上四時間未満, 要介護5, 注なし) -> 単位数(836)
| "4時間以上5時間未満・要介護1"
: (通常規模型通所リハビリテーション費, 病院又は診療所, 四時間以上五時間未満, 要介護1, 注なし) -> 単位数(549)
| "6時間以上7時間未満・要介護5"
: (通常規模型通所リハビリテーション費, 病院又は診療所, 六時間以上七時間未満, 要介護5, 注なし) -> 単位数(1281)
| "介護老人保健施設は重度療養管理加算を算定しても付かない"
: ( 通常規模型通所リハビリテーション費, 介護老人保健施設, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 重度療養管理加算 = 重度療養管理あり } )
-> 単位数(846)
| "介護医療院は重度療養管理加算が+100単位付く"
: ( 通常規模型通所リハビリテーション費, 介護医療院, 五時間以上六時間未満, 要介護3
, 算定条件 { ...注なし, 重度療養管理加算 = 重度療養管理あり } )
-> 単位数(946)
// 表の列を1つずつ立てて、その列がどの記号になるかを見る。
// `souther examples` が「no row is in ...」で名指ししてきたぶん。
example 注の記号を並べる
| "定員超過又は員数不足 = 従業者の員数が基準に満たない"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, 定員超過又は員数不足 = 従業者の員数が基準に満たない })
-> [割合乗算 { 分子 = 70, 分母 = 100 }]
| "感染症又は災害による利用者数の減少 = 一定以上生じている"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, 感染症又は災害による利用者数の減少 = 一定以上生じている })
-> [割合加算 { 分子 = 3, 分母 = 100 }]
| "理学療法士等体制強化加算 = 理学療法士等体制強化あり"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, 理学療法士等体制強化加算 = 理学療法士等体制強化あり })
-> [単位加算 { 単位 = 単位数(30) }]
| "通所リハビリテーションの前後の日常生活上の世話 = 八時間以上九時間未満"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, 通所リハビリテーションの前後の日常生活上の世話 = 八時間以上九時間未満 })
-> [単位加算 { 単位 = 単位数(50) }]
| "通所リハビリテーションの前後の日常生活上の世話 = 九時間以上十時間未満"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, 通所リハビリテーションの前後の日常生活上の世話 = 九時間以上十時間未満 })
-> [単位加算 { 単位 = 単位数(100) }]
| "通所リハビリテーションの前後の日常生活上の世話 = 十時間以上十一時間未満"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, 通所リハビリテーションの前後の日常生活上の世話 = 十時間以上十一時間未満 })
-> [単位加算 { 単位 = 単位数(150) }]
| "通所リハビリテーションの前後の日常生活上の世話 = 十一時間以上十二時間未満"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, 通所リハビリテーションの前後の日常生活上の世話 = 十一時間以上十二時間未満 })
-> [単位加算 { 単位 = 単位数(200) }]
| "通所リハビリテーションの前後の日常生活上の世話 = 十二時間以上十三時間未満"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, 通所リハビリテーションの前後の日常生活上の世話 = 十二時間以上十三時間未満 })
-> [単位加算 { 単位 = 単位数(250) }]
| "通所リハビリテーションの前後の日常生活上の世話 = 十三時間以上十四時間未満"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, 通所リハビリテーションの前後の日常生活上の世話 = 十三時間以上十四時間未満 })
-> [単位加算 { 単位 = 単位数(300) }]
| "中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり })
-> [割合加算 { 分子 = 5, 分母 = 100 }]
| "入浴介助加算 = 入浴介助加算Ⅱ"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, 入浴介助加算 = 入浴介助加算Ⅱ })
-> [単位加算 { 単位 = 単位数(60) }]
| "リハビリテーションマネジメント加算 = マネジメント加算Aイ六月以内"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Aイ六月以内 })
-> [単位加算 { 単位 = 単位数(560) }]
| "リハビリテーションマネジメント加算 = マネジメント加算Aイ六月超"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Aイ六月超 })
-> [単位加算 { 単位 = 単位数(240) }]
| "リハビリテーションマネジメント加算 = マネジメント加算Aロ六月以内"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Aロ六月以内 })
-> [単位加算 { 単位 = 単位数(593) }]
| "リハビリテーションマネジメント加算 = マネジメント加算Aロ六月超"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Aロ六月超 })
-> [単位加算 { 単位 = 単位数(273) }]
| "リハビリテーションマネジメント加算 = マネジメント加算Bイ六月以内"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Bイ六月以内 })
-> [単位加算 { 単位 = 単位数(830) }]
| "リハビリテーションマネジメント加算 = マネジメント加算Bイ六月超"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Bイ六月超 })
-> [単位加算 { 単位 = 単位数(510) }]
| "リハビリテーションマネジメント加算 = マネジメント加算Bロ六月以内"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Bロ六月以内 })
-> [単位加算 { 単位 = 単位数(863) }]
| "リハビリテーションマネジメント加算 = マネジメント加算Bロ六月超"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, リハビリテーションマネジメント加算 = マネジメント加算Bロ六月超 })
-> [単位加算 { 単位 = 単位数(543) }]
| "短期集中個別リハビリテーション実施加算 = 短期集中個別あり"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, 短期集中個別リハビリテーション実施加算 = 短期集中個別あり })
-> [単位加算 { 単位 = 単位数(110) }]
| "認知症短期集中リハビリテーション実施加算 = 認知症短期集中Ⅰ"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, 認知症短期集中リハビリテーション実施加算 = 認知症短期集中Ⅰ })
-> [単位加算 { 単位 = 単位数(240) }]
| "認知症短期集中リハビリテーション実施加算 = 認知症短期集中Ⅱ"
: (病院又は診療所, 五時間以上六時間未満, 算定条件 { ...注なし, 認知症短期集中リハビリテーション実施加算 = 認知症短期集中Ⅱ })
-> [単位加算 { 単位 = 単位数(1920) }]
// `souther examples --adequacy classes --generate` が書き出した行に、
// 表の該当セル(match 腕)から答えを入れたもの。
example 注の記号を並べる
| "条件.口腔栄養スクリーニング加算=口腔栄養スクリーニング加算Ⅰ"
: (病院又は診療所, 一時間以上二時間未満, 算定条件 { ...注なし, 口腔栄養スクリーニング加算 = 口腔栄養スクリーニング加算Ⅰ })
-> [単位加算 { 単位 = 単位数(20) }]
| "条件.口腔栄養スクリーニング加算=口腔栄養スクリーニング加算Ⅱ"
: (病院又は診療所, 一時間以上二時間未満, 算定条件 { ...注なし, 口腔栄養スクリーニング加算 = 口腔栄養スクリーニング加算Ⅱ })
-> [単位加算 { 単位 = 単位数(5) }]
| "条件.口腔機能向上加算=口腔機能向上加算Ⅰ"
: (病院又は診療所, 一時間以上二時間未満, 算定条件 { ...注なし, 口腔機能向上加算 = 口腔機能向上加算Ⅰ })
-> [単位加算 { 単位 = 単位数(150) }]
| "条件.口腔機能向上加算=口腔機能向上加算Ⅱ"
: (病院又は診療所, 一時間以上二時間未満, 算定条件 { ...注なし, 口腔機能向上加算 = 口腔機能向上加算Ⅱ })
-> [単位加算 { 単位 = 単位数(160) }]
| "条件.送迎=片道の送迎を行わない"
: (病院又は診療所, 一時間以上二時間未満, 算定条件 { ...注なし, 送迎 = 片道の送迎を行わない })
-> [単位減算 { 単位 = 単位数(47) }]
| "条件.送迎=両道の送迎を行わない"
: (病院又は診療所, 一時間以上二時間未満, 算定条件 { ...注なし, 送迎 = 両道の送迎を行わない })
-> [単位減算 { 単位 = 単位数(94) }]
| "条件.中重度者ケア体制加算=中重度者ケア体制あり"
: (病院又は診療所, 一時間以上二時間未満, 算定条件 { ...注なし, 中重度者ケア体制加算 = 中重度者ケア体制あり })
-> [単位加算 { 単位 = 単位数(20) }]
| "条件.栄養アセスメント加算=栄養アセスメントあり"
: (病院又は診療所, 一時間以上二時間未満, 算定条件 { ...注なし, 栄養アセスメント加算 = 栄養アセスメントあり })
-> [単位加算 { 単位 = 単位数(50) }]
| "条件.栄養改善加算=栄養改善あり"
: (病院又は診療所, 一時間以上二時間未満, 算定条件 { ...注なし, 栄養改善加算 = 栄養改善あり })
-> [単位加算 { 単位 = 単位数(200) }]
| "条件.生活行為向上リハビリテーション実施加算=生活行為向上あり"
: (病院又は診療所, 一時間以上二時間未満, 算定条件 { ...注なし, 生活行為向上リハビリテーション実施加算 = 生活行為向上あり })
-> [単位加算 { 単位 = 単位数(1250) }]
| "条件.科学的介護推進体制加算=科学的介護推進体制あり"
: (病院又は診療所, 一時間以上二時間未満, 算定条件 { ...注なし, 科学的介護推進体制加算 = 科学的介護推進体制あり })
-> [単位加算 { 単位 = 単位数(40) }]
| "条件.若年性認知症利用者受入加算=若年性認知症受入あり"
: (病院又は診療所, 一時間以上二時間未満, 算定条件 { ...注なし, 若年性認知症利用者受入加算 = 若年性認知症受入あり })
-> [単位加算 { 単位 = 単位数(60) }]
module kaigo.通所リハビリテーション exposing
( 事業所の規模, 通常規模型通所リハビリテーション費
, 大規模型通所リハビリテーション費Ⅰ, 大規模型通所リハビリテーション費Ⅱ
, 事業所の種類, 病院又は診療所, 介護老人保健施設, 介護医療院
, 所要時間の区分
, 一時間以上二時間未満, 二時間以上三時間未満, 三時間以上四時間未満, 四時間以上五時間未満
, 五時間以上六時間未満, 六時間以上七時間未満, 七時間以上八時間未満
, 基本部分の単位数を求める
, 定員超過又は員数不足, 該当しない, 利用者の数が利用定員を超える, 従業者の員数が基準に満たない
, 感染症又は災害による利用者数の減少, 一定以上生じている, 生じていない
, 理学療法士等体制強化加算, 理学療法士等体制強化あり, 理学療法士等体制強化なし
, 通所リハビリテーションの前後の日常生活上の世話, 世話を行わない
, 八時間以上九時間未満, 九時間以上十時間未満, 十時間以上十一時間未満
, 十一時間以上十二時間未満, 十二時間以上十三時間未満, 十三時間以上十四時間未満
, リハビリテーション提供体制加算, 提供体制加算あり, 提供体制加算なし
, 中山間地域等に居住する者へのサービス提供加算, 中山間地域居住あり, 中山間地域居住なし
, 入浴介助加算, 入浴介助加算なし, 入浴介助加算Ⅰ, 入浴介助加算Ⅱ
, リハビリテーションマネジメント加算, マネジメント加算なし
, マネジメント加算Aイ六月以内, マネジメント加算Aイ六月超
, マネジメント加算Aロ六月以内, マネジメント加算Aロ六月超
, マネジメント加算Bイ六月以内, マネジメント加算Bイ六月超
, マネジメント加算Bロ六月以内, マネジメント加算Bロ六月超
, 短期集中個別リハビリテーション実施加算, 短期集中個別あり, 短期集中個別なし
, 認知症短期集中リハビリテーション実施加算, 認知症短期集中なし, 認知症短期集中Ⅰ, 認知症短期集中Ⅱ
, 生活行為向上リハビリテーション実施加算, 生活行為向上あり, 生活行為向上なし
, 若年性認知症利用者受入加算, 若年性認知症受入あり, 若年性認知症受入なし
, 栄養アセスメント加算, 栄養アセスメントあり, 栄養アセスメントなし
, 栄養改善加算, 栄養改善あり, 栄養改善なし
, 口腔栄養スクリーニング加算, 口腔栄養スクリーニングなし
, 口腔栄養スクリーニング加算Ⅰ, 口腔栄養スクリーニング加算Ⅱ
, 口腔機能向上加算, 口腔機能向上加算なし, 口腔機能向上加算Ⅰ, 口腔機能向上加算Ⅱ
, 重度療養管理加算, 重度療養管理あり, 重度療養管理なし
, 中重度者ケア体制加算, 中重度者ケア体制あり, 中重度者ケア体制なし
, 科学的介護推進体制加算, 科学的介護推進体制あり, 科学的介護推進体制なし
, 同一建物からの利用, 同一建物から利用する, 同一建物から利用しない
, 送迎, 送迎を行う, 片道の送迎を行わない, 両道の送迎を行わない
, 算定条件, 注の記号を並べる, 単位数を求める
)
// 「介護報酬の算定構造」Ⅰ-7 通所リハビリテーション費(介護6〜8ページ)。
// https://www.wam.go.jp/gyoseiShiryou-files/documents/2022/0322211552821/202203a.pdf
//
// 基本部分は 事業所の規模(通常規模・大規模Ⅰ・大規模Ⅱ)×所要時間の区分(7段)×要介護度(5段)。
// 表は各規模の中をさらに 病院又は診療所/介護老人保健施設/介護医療院 の3つに分けているが、
// 単位数はどの種類でも同じ値が書かれている。種類が効くのは重度療養管理加算の列だけで、
// 介護老人保健施設の行にはその枠が置かれていない。
import kaigo.共通
( 単位数, 算定記号, 単位加算, 単位減算, 割合乗算, 割合加算
, 要介護度, 要介護1, 要介護2, 要介護3, 要介護4, 要介護5
, 記号を順に適用する
)
// ---------------------------------------------------------------- 基本部分
data 事業所の規模 =
通常規模型通所リハビリテーション費
| 大規模型通所リハビリテーション費Ⅰ
| 大規模型通所リハビリテーション費Ⅱ
data 事業所の種類 = 病院又は診療所 | 介護老人保健施設 | 介護医療院
// (1)1時間以上2時間未満 から (7)7時間以上8時間未満 までの7段
data 所要時間の区分 =
一時間以上二時間未満
| 二時間以上三時間未満
| 三時間以上四時間未満
| 四時間以上五時間未満
| 五時間以上六時間未満
| 六時間以上七時間未満
| 七時間以上八時間未満
behavior 基本部分の単位数を求める :
(規模: 事業所の規模, 所要時間の区分: 所要時間の区分, 要介護度: 要介護度) -> 単位数
constructs 単位数
let 基本部分の単位数を求める (規模, 所要時間の区分, 要介護度) =
match 規模 with
| 通常規模型通所リハビリテーション費 ->
match 所要時間の区分 with
| 一時間以上二時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(366)
| 要介護2 -> 単位数(395)
| 要介護3 -> 単位数(426)
| 要介護4 -> 単位数(455)
| 要介護5 -> 単位数(487)
| 二時間以上三時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(380)
| 要介護2 -> 単位数(436)
| 要介護3 -> 単位数(494)
| 要介護4 -> 単位数(551)
| 要介護5 -> 単位数(608)
| 三時間以上四時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(483)
| 要介護2 -> 単位数(561)
| 要介護3 -> 単位数(638)
| 要介護4 -> 単位数(738)
| 要介護5 -> 単位数(836)
| 四時間以上五時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(549)
| 要介護2 -> 単位数(637)
| 要介護3 -> 単位数(725)
| 要介護4 -> 単位数(838)
| 要介護5 -> 単位数(950)
| 五時間以上六時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(618)
| 要介護2 -> 単位数(733)
| 要介護3 -> 単位数(846)
| 要介護4 -> 単位数(980)
| 要介護5 -> 単位数(1112)
| 六時間以上七時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(710)
| 要介護2 -> 単位数(844)
| 要介護3 -> 単位数(974)
| 要介護4 -> 単位数(1129)
| 要介護5 -> 単位数(1281)
| 七時間以上八時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(757)
| 要介護2 -> 単位数(897)
| 要介護3 -> 単位数(1039)
| 要介護4 -> 単位数(1206)
| 要介護5 -> 単位数(1369)
| 大規模型通所リハビリテーション費Ⅰ ->
match 所要時間の区分 with
| 一時間以上二時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(361)
| 要介護2 -> 単位数(392)
| 要介護3 -> 単位数(421)
| 要介護4 -> 単位数(450)
| 要介護5 -> 単位数(481)
| 二時間以上三時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(375)
| 要介護2 -> 単位数(431)
| 要介護3 -> 単位数(488)
| 要介護4 -> 単位数(544)
| 要介護5 -> 単位数(601)
| 三時間以上四時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(477)
| 要介護2 -> 単位数(554)
| 要介護3 -> 単位数(630)
| 要介護4 -> 単位数(727)
| 要介護5 -> 単位数(824)
| 四時間以上五時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(540)
| 要介護2 -> 単位数(626)
| 要介護3 -> 単位数(711)
| 要介護4 -> 単位数(821)
| 要介護5 -> 単位数(932)
| 五時間以上六時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(599)
| 要介護2 -> 単位数(709)
| 要介護3 -> 単位数(819)
| 要介護4 -> 単位数(950)
| 要介護5 -> 単位数(1077)
| 六時間以上七時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(694)
| 要介護2 -> 単位数(824)
| 要介護3 -> 単位数(953)
| 要介護4 -> 単位数(1102)
| 要介護5 -> 単位数(1252)
| 七時間以上八時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(734)
| 要介護2 -> 単位数(868)
| 要介護3 -> 単位数(1006)
| 要介護4 -> 単位数(1166)
| 要介護5 -> 単位数(1325)
| 大規模型通所リハビリテーション費Ⅱ ->
match 所要時間の区分 with
| 一時間以上二時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(353)
| 要介護2 -> 単位数(384)
| 要介護3 -> 単位数(411)
| 要介護4 -> 単位数(441)
| 要介護5 -> 単位数(469)
| 二時間以上三時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(368)
| 要介護2 -> 単位数(423)
| 要介護3 -> 単位数(477)
| 要介護4 -> 単位数(531)
| 要介護5 -> 単位数(586)
| 三時間以上四時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(465)
| 要介護2 -> 単位数(542)
| 要介護3 -> 単位数(616)
| 要介護4 -> 単位数(710)
| 要介護5 -> 単位数(806)
| 四時間以上五時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(520)
| 要介護2 -> 単位数(606)
| 要介護3 -> 単位数(689)
| 要介護4 -> 単位数(796)
| 要介護5 -> 単位数(902)
| 五時間以上六時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(579)
| 要介護2 -> 単位数(687)
| 要介護3 -> 単位数(793)
| 要介護4 -> 単位数(919)
| 要介護5 -> 単位数(1043)
| 六時間以上七時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(670)
| 要介護2 -> 単位数(797)
| 要介護3 -> 単位数(919)
| 要介護4 -> 単位数(1066)
| 要介護5 -> 単位数(1211)
| 七時間以上八時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(708)
| 要介護2 -> 単位数(841)
| 要介護3 -> 単位数(973)
| 要介護4 -> 単位数(1129)
| 要介護5 -> 単位数(1282)
// 注 利用者の数が利用定員を超える場合 ×70/100
// 注 医師、理学療法士・作業療法士・言語聴覚士、看護・介護職員の員数が基準に満たない場合 ×70/100
data 定員超過又は員数不足 =
該当しない | 利用者の数が利用定員を超える | 従業者の員数が基準に満たない
// 注 感染症又は災害の発生を理由とする利用者数の減少が一定以上生じている場合 +3/100
data 感染症又は災害による利用者数の減少 = 一定以上生じている | 生じていない
// 注 理学療法士等体制強化加算 1日につき +30単位
// 表ではこの枠が(1)1時間以上2時間未満の行にだけ置かれている。
data 理学療法士等体制強化加算 = 理学療法士等体制強化あり | 理学療法士等体制強化なし
// 注 7時間以上8時間未満の通所リハビリテーションの前後に日常生活上の世話を行う場合
// 8時間以上9時間未満 +50単位/9時間以上10時間未満 +100単位/10時間以上11時間未満 +150単位
// 11時間以上12時間未満 +200単位/12時間以上13時間未満 +250単位/13時間以上14時間未満 +300単位
data 通所リハビリテーションの前後の日常生活上の世話 =
世話を行わない
| 八時間以上九時間未満
| 九時間以上十時間未満
| 十時間以上十一時間未満
| 十一時間以上十二時間未満
| 十二時間以上十三時間未満
| 十三時間以上十四時間未満
// 注 リハビリテーション提供体制加算
// 3時間以上4時間未満の場合 +12単位/4時間以上5時間未満の場合 +16単位
// 5時間以上6時間未満の場合 +20単位/6時間以上7時間未満の場合 +24単位
// 7時間以上の場合 +28単位
// (1時間以上3時間未満の行には枠が置かれていない)
data リハビリテーション提供体制加算 = 提供体制加算あり | 提供体制加算なし
// 注 中山間地域等に居住する者へのサービス提供加算 +5/100
data 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり | 中山間地域居住なし
// 注 入浴介助加算(Ⅰ)1日につき +40単位/(Ⅱ)1日につき +60単位
data 入浴介助加算 = 入浴介助加算なし | 入浴介助加算Ⅰ | 入浴介助加算Ⅱ
// 注 リハビリテーションマネジメント加算(A)イ 同意日の属する月から6月以内 1月につき +560単位
// 同意日の属する月から6月超 1月につき +240単位
// ロ 6月以内 1月につき +593単位/6月超 1月につき +273単位
// リハビリテーションマネジメント加算(B)イ 6月以内 1月につき +830単位/6月超 1月につき +510単位
// ロ 6月以内 1月につき +863単位/6月超 1月につき +543単位
data リハビリテーションマネジメント加算 =
マネジメント加算なし
| マネジメント加算Aイ六月以内
| マネジメント加算Aイ六月超
| マネジメント加算Aロ六月以内
| マネジメント加算Aロ六月超
| マネジメント加算Bイ六月以内
| マネジメント加算Bイ六月超
| マネジメント加算Bロ六月以内
| マネジメント加算Bロ六月超
// 注 短期集中個別リハビリテーション実施加算 1日につき +110単位
data 短期集中個別リハビリテーション実施加算 = 短期集中個別あり | 短期集中個別なし
// 注 認知症短期集中リハビリテーション実施加算(Ⅰ)1日につき +240単位(週2日を限度)
// (Ⅱ)1月につき +1,920単位
data 認知症短期集中リハビリテーション実施加算 =
認知症短期集中なし | 認知症短期集中Ⅰ | 認知症短期集中Ⅱ
// 注 生活行為向上リハビリテーション実施加算
// 利用開始日の属する月から6月以内 1月につき +1,250単位
data 生活行為向上リハビリテーション実施加算 = 生活行為向上あり | 生活行為向上なし
// 注 若年性認知症利用者受入加算 1日につき +60単位
data 若年性認知症利用者受入加算 = 若年性認知症受入あり | 若年性認知症受入なし
// 注 栄養アセスメント加算 1月につき +50単位
data 栄養アセスメント加算 = 栄養アセスメントあり | 栄養アセスメントなし
// 注 栄養改善加算 1回につき +200単位(月2回を限度)
data 栄養改善加算 = 栄養改善あり | 栄養改善なし
// 注 口腔・栄養スクリーニング加算(Ⅰ)1回につき +20単位(6月に1回を限度)
// (Ⅱ)1回につき +5単位(6月に1回を限度)
data 口腔栄養スクリーニング加算 =
口腔栄養スクリーニングなし | 口腔栄養スクリーニング加算Ⅰ | 口腔栄養スクリーニング加算Ⅱ
// 注 口腔機能向上加算(Ⅰ)1回につき +150単位(月2回を限度)
// (Ⅱ)1回につき +160単位(月2回を限度)
data 口腔機能向上加算 = 口腔機能向上加算なし | 口腔機能向上加算Ⅰ | 口腔機能向上加算Ⅱ
// 注 重度療養管理加算 1日につき +100単位
// 表では病院又は診療所の場合と介護医療院の場合にだけ枠が置かれ、
// 介護老人保健施設の場合の欄は空いている。
data 重度療養管理加算 = 重度療養管理あり | 重度療養管理なし
// 注 中重度者ケア体制加算 1日につき +20単位
data 中重度者ケア体制加算 = 中重度者ケア体制あり | 中重度者ケア体制なし
// 注 科学的介護推進体制加算 1月につき +40単位
data 科学的介護推進体制加算 = 科学的介護推進体制あり | 科学的介護推進体制なし
// 注 事業所と同一建物に居住する者又は同一建物から利用する者に通所リハビリテーションを行う場合
// 1日につき -94単位
data 同一建物からの利用 = 同一建物から利用する | 同一建物から利用しない
// 注 事業所が送迎を行わない場合 片道につき -47単位
data 送迎 = 送迎を行う | 片道の送迎を行わない | 両道の送迎を行わない
data 算定条件 =
{ 定員超過又は員数不足: 定員超過又は員数不足
, 感染症又は災害による利用者数の減少: 感染症又は災害による利用者数の減少
, 理学療法士等体制強化加算: 理学療法士等体制強化加算
, 通所リハビリテーションの前後の日常生活上の世話: 通所リハビリテーションの前後の日常生活上の世話
, リハビリテーション提供体制加算: リハビリテーション提供体制加算
, 中山間地域等に居住する者へのサービス提供加算: 中山間地域等に居住する者へのサービス提供加算
, 入浴介助加算: 入浴介助加算
, リハビリテーションマネジメント加算: リハビリテーションマネジメント加算
, 短期集中個別リハビリテーション実施加算: 短期集中個別リハビリテーション実施加算
, 認知症短期集中リハビリテーション実施加算: 認知症短期集中リハビリテーション実施加算
, 生活行為向上リハビリテーション実施加算: 生活行為向上リハビリテーション実施加算
, 若年性認知症利用者受入加算: 若年性認知症利用者受入加算
, 栄養アセスメント加算: 栄養アセスメント加算
, 栄養改善加算: 栄養改善加算
, 口腔栄養スクリーニング加算: 口腔栄養スクリーニング加算
, 口腔機能向上加算: 口腔機能向上加算
, 重度療養管理加算: 重度療養管理加算
, 中重度者ケア体制加算: 中重度者ケア体制加算
, 科学的介護推進体制加算: 科学的介護推進体制加算
, 同一建物からの利用: 同一建物からの利用
, 送迎: 送迎
}
// リハビリテーション提供体制加算は所要時間の区分で単位数が変わる。
let 提供体制加算の単位 (区分: 所要時間の区分): List<算定記号> =
match 区分 with
| 三時間以上四時間未満 -> [単位加算 { 単位 = 単位数(12) }]
| 四時間以上五時間未満 -> [単位加算 { 単位 = 単位数(16) }]
| 五時間以上六時間未満 -> [単位加算 { 単位 = 単位数(20) }]
| 六時間以上七時間未満 -> [単位加算 { 単位 = 単位数(24) }]
| 七時間以上八時間未満 -> [単位加算 { 単位 = 単位数(28) }]
// 1時間以上3時間未満の行には枠が置かれていない。
| 一時間以上二時間未満 -> []
| 二時間以上三時間未満 -> []
behavior 注の記号を並べる :
(種類: 事業所の種類, 所要時間の区分: 所要時間の区分, 条件: 算定条件) -> List<算定記号>
constructs 単位数, 単位加算, 単位減算, 割合乗算, 割合加算
let 注の記号を並べる (種類, 所要時間の区分, 条件) =
(match 条件.定員超過又は員数不足 with
| 利用者の数が利用定員を超える -> [割合乗算 { 分子 = 70, 分母 = 100 }]
| 従業者の員数が基準に満たない -> [割合乗算 { 分子 = 70, 分母 = 100 }]
| 該当しない -> [])
++ (match 条件.感染症又は災害による利用者数の減少 with
| 一定以上生じている -> [割合加算 { 分子 = 3, 分母 = 100 }]
| 生じていない -> [])
++ (match 条件.理学療法士等体制強化加算 with
| 理学療法士等体制強化あり -> [単位加算 { 単位 = 単位数(30) }]
| 理学療法士等体制強化なし -> [])
++ (match 条件.通所リハビリテーションの前後の日常生活上の世話 with
| 八時間以上九時間未満 -> [単位加算 { 単位 = 単位数(50) }]
| 九時間以上十時間未満 -> [単位加算 { 単位 = 単位数(100) }]
| 十時間以上十一時間未満 -> [単位加算 { 単位 = 単位数(150) }]
| 十一時間以上十二時間未満 -> [単位加算 { 単位 = 単位数(200) }]
| 十二時間以上十三時間未満 -> [単位加算 { 単位 = 単位数(250) }]
| 十三時間以上十四時間未満 -> [単位加算 { 単位 = 単位数(300) }]
| 世話を行わない -> [])
++ (match 条件.リハビリテーション提供体制加算 with
| 提供体制加算あり -> 提供体制加算の単位(所要時間の区分)
| 提供体制加算なし -> [])
++ (match 条件.中山間地域等に居住する者へのサービス提供加算 with
| 中山間地域居住あり -> [割合加算 { 分子 = 5, 分母 = 100 }]
| 中山間地域居住なし -> [])
++ (match 条件.入浴介助加算 with
| 入浴介助加算Ⅰ -> [単位加算 { 単位 = 単位数(40) }]
| 入浴介助加算Ⅱ -> [単位加算 { 単位 = 単位数(60) }]
| 入浴介助加算なし -> [])
++ (match 条件.リハビリテーションマネジメント加算 with
| マネジメント加算Aイ六月以内 -> [単位加算 { 単位 = 単位数(560) }]
| マネジメント加算Aイ六月超 -> [単位加算 { 単位 = 単位数(240) }]
| マネジメント加算Aロ六月以内 -> [単位加算 { 単位 = 単位数(593) }]
| マネジメント加算Aロ六月超 -> [単位加算 { 単位 = 単位数(273) }]
| マネジメント加算Bイ六月以内 -> [単位加算 { 単位 = 単位数(830) }]
| マネジメント加算Bイ六月超 -> [単位加算 { 単位 = 単位数(510) }]
| マネジメント加算Bロ六月以内 -> [単位加算 { 単位 = 単位数(863) }]
| マネジメント加算Bロ六月超 -> [単位加算 { 単位 = 単位数(543) }]
| マネジメント加算なし -> [])
++ (match 条件.短期集中個別リハビリテーション実施加算 with
| 短期集中個別あり -> [単位加算 { 単位 = 単位数(110) }]
| 短期集中個別なし -> [])
++ (match 条件.認知症短期集中リハビリテーション実施加算 with
| 認知症短期集中Ⅰ -> [単位加算 { 単位 = 単位数(240) }]
| 認知症短期集中Ⅱ -> [単位加算 { 単位 = 単位数(1920) }]
| 認知症短期集中なし -> [])
++ (match 条件.生活行為向上リハビリテーション実施加算 with
| 生活行為向上あり -> [単位加算 { 単位 = 単位数(1250) }]
| 生活行為向上なし -> [])
++ (match 条件.若年性認知症利用者受入加算 with
| 若年性認知症受入あり -> [単位加算 { 単位 = 単位数(60) }]
| 若年性認知症受入なし -> [])
++ (match 条件.栄養アセスメント加算 with
| 栄養アセスメントあり -> [単位加算 { 単位 = 単位数(50) }]
| 栄養アセスメントなし -> [])
++ (match 条件.栄養改善加算 with
| 栄養改善あり -> [単位加算 { 単位 = 単位数(200) }]
| 栄養改善なし -> [])
++ (match 条件.口腔栄養スクリーニング加算 with
| 口腔栄養スクリーニング加算Ⅰ -> [単位加算 { 単位 = 単位数(20) }]
| 口腔栄養スクリーニング加算Ⅱ -> [単位加算 { 単位 = 単位数(5) }]
| 口腔栄養スクリーニングなし -> [])
++ (match 条件.口腔機能向上加算 with
| 口腔機能向上加算Ⅰ -> [単位加算 { 単位 = 単位数(150) }]
| 口腔機能向上加算Ⅱ -> [単位加算 { 単位 = 単位数(160) }]
| 口腔機能向上加算なし -> [])
++ (match 種類 with
| 介護老人保健施設 -> []
| 病院又は診療所 ->
match 条件.重度療養管理加算 with
| 重度療養管理あり -> [単位加算 { 単位 = 単位数(100) }]
| 重度療養管理なし -> []
| 介護医療院 ->
match 条件.重度療養管理加算 with
| 重度療養管理あり -> [単位加算 { 単位 = 単位数(100) }]
| 重度療養管理なし -> [])
++ (match 条件.中重度者ケア体制加算 with
| 中重度者ケア体制あり -> [単位加算 { 単位 = 単位数(20) }]
| 中重度者ケア体制なし -> [])
++ (match 条件.科学的介護推進体制加算 with
| 科学的介護推進体制あり -> [単位加算 { 単位 = 単位数(40) }]
| 科学的介護推進体制なし -> [])
++ (match 条件.同一建物からの利用 with
| 同一建物から利用する -> [単位減算 { 単位 = 単位数(94) }]
| 同一建物から利用しない -> [])
++ (match 条件.送迎 with
| 片道の送迎を行わない -> [単位減算 { 単位 = 単位数(47) }]
| 両道の送迎を行わない -> [単位減算 { 単位 = 単位数(94) }]
| 送迎を行う -> [])
behavior 単位数を求める :
( 規模: 事業所の規模, 種類: 事業所の種類, 所要時間の区分: 所要時間の区分
, 要介護度: 要介護度, 条件: 算定条件 ) -> 単位数
let 単位数を求める (規模, 種類, 所要時間の区分, 要介護度, 条件) =
記号を順に適用する(
基本部分の単位数を求める(規模, 所要時間の区分, 要介護度),
注の記号を並べる(種類, 所要時間の区分, 条件))
examples for kaigo.通所介護
// 表の各セルと、行だけが名指す値。モデル本体と分けてある。
example 基本部分の単位数を求める
| "イ 通常規模型通所介護費 三時間以上四時間未満 要介護1"
: (通常規模型通所介護費, 三時間以上四時間未満, 要介護1) -> 単位数(368)
| "イ 通常規模型通所介護費 三時間以上四時間未満 要介護2"
: (通常規模型通所介護費, 三時間以上四時間未満, 要介護2) -> 単位数(421)
| "イ 通常規模型通所介護費 三時間以上四時間未満 要介護3"
: (通常規模型通所介護費, 三時間以上四時間未満, 要介護3) -> 単位数(477)
| "イ 通常規模型通所介護費 三時間以上四時間未満 要介護4"
: (通常規模型通所介護費, 三時間以上四時間未満, 要介護4) -> 単位数(530)
| "イ 通常規模型通所介護費 三時間以上四時間未満 要介護5"
: (通常規模型通所介護費, 三時間以上四時間未満, 要介護5) -> 単位数(585)
| "イ 通常規模型通所介護費 四時間以上五時間未満 要介護1"
: (通常規模型通所介護費, 四時間以上五時間未満, 要介護1) -> 単位数(386)
| "イ 通常規模型通所介護費 四時間以上五時間未満 要介護2"
: (通常規模型通所介護費, 四時間以上五時間未満, 要介護2) -> 単位数(442)
| "イ 通常規模型通所介護費 四時間以上五時間未満 要介護3"
: (通常規模型通所介護費, 四時間以上五時間未満, 要介護3) -> 単位数(500)
| "イ 通常規模型通所介護費 四時間以上五時間未満 要介護4"
: (通常規模型通所介護費, 四時間以上五時間未満, 要介護4) -> 単位数(557)
| "イ 通常規模型通所介護費 四時間以上五時間未満 要介護5"
: (通常規模型通所介護費, 四時間以上五時間未満, 要介護5) -> 単位数(614)
| "イ 通常規模型通所介護費 五時間以上六時間未満 要介護1"
: (通常規模型通所介護費, 五時間以上六時間未満, 要介護1) -> 単位数(567)
| "イ 通常規模型通所介護費 五時間以上六時間未満 要介護2"
: (通常規模型通所介護費, 五時間以上六時間未満, 要介護2) -> 単位数(670)
| "イ 通常規模型通所介護費 五時間以上六時間未満 要介護3"
: (通常規模型通所介護費, 五時間以上六時間未満, 要介護3) -> 単位数(773)
| "イ 通常規模型通所介護費 五時間以上六時間未満 要介護4"
: (通常規模型通所介護費, 五時間以上六時間未満, 要介護4) -> 単位数(876)
| "イ 通常規模型通所介護費 五時間以上六時間未満 要介護5"
: (通常規模型通所介護費, 五時間以上六時間未満, 要介護5) -> 単位数(979)
| "イ 通常規模型通所介護費 六時間以上七時間未満 要介護1"
: (通常規模型通所介護費, 六時間以上七時間未満, 要介護1) -> 単位数(581)
| "イ 通常規模型通所介護費 六時間以上七時間未満 要介護2"
: (通常規模型通所介護費, 六時間以上七時間未満, 要介護2) -> 単位数(686)
| "イ 通常規模型通所介護費 六時間以上七時間未満 要介護3"
: (通常規模型通所介護費, 六時間以上七時間未満, 要介護3) -> 単位数(792)
| "イ 通常規模型通所介護費 六時間以上七時間未満 要介護4"
: (通常規模型通所介護費, 六時間以上七時間未満, 要介護4) -> 単位数(897)
| "イ 通常規模型通所介護費 六時間以上七時間未満 要介護5"
: (通常規模型通所介護費, 六時間以上七時間未満, 要介護5) -> 単位数(1003)
| "イ 通常規模型通所介護費 七時間以上八時間未満 要介護1"
: (通常規模型通所介護費, 七時間以上八時間未満, 要介護1) -> 単位数(655)
| "イ 通常規模型通所介護費 七時間以上八時間未満 要介護2"
: (通常規模型通所介護費, 七時間以上八時間未満, 要介護2) -> 単位数(773)
| "イ 通常規模型通所介護費 七時間以上八時間未満 要介護3"
: (通常規模型通所介護費, 七時間以上八時間未満, 要介護3) -> 単位数(896)
| "イ 通常規模型通所介護費 七時間以上八時間未満 要介護4"
: (通常規模型通所介護費, 七時間以上八時間未満, 要介護4) -> 単位数(1018)
| "イ 通常規模型通所介護費 七時間以上八時間未満 要介護5"
: (通常規模型通所介護費, 七時間以上八時間未満, 要介護5) -> 単位数(1142)
| "イ 通常規模型通所介護費 八時間以上九時間未満 要介護1"
: (通常規模型通所介護費, 八時間以上九時間未満, 要介護1) -> 単位数(666)
| "イ 通常規模型通所介護費 八時間以上九時間未満 要介護2"
: (通常規模型通所介護費, 八時間以上九時間未満, 要介護2) -> 単位数(787)
| "イ 通常規模型通所介護費 八時間以上九時間未満 要介護3"
: (通常規模型通所介護費, 八時間以上九時間未満, 要介護3) -> 単位数(911)
| "イ 通常規模型通所介護費 八時間以上九時間未満 要介護4"
: (通常規模型通所介護費, 八時間以上九時間未満, 要介護4) -> 単位数(1036)
| "イ 通常規模型通所介護費 八時間以上九時間未満 要介護5"
: (通常規模型通所介護費, 八時間以上九時間未満, 要介護5) -> 単位数(1162)
| "ロ 大規模型通所介護費Ⅰ 三時間以上四時間未満 要介護1"
: (大規模型通所介護費Ⅰ, 三時間以上四時間未満, 要介護1) -> 単位数(356)
| "ロ 大規模型通所介護費Ⅰ 三時間以上四時間未満 要介護2"
: (大規模型通所介護費Ⅰ, 三時間以上四時間未満, 要介護2) -> 単位数(407)
| "ロ 大規模型通所介護費Ⅰ 三時間以上四時間未満 要介護3"
: (大規模型通所介護費Ⅰ, 三時間以上四時間未満, 要介護3) -> 単位数(460)
| "ロ 大規模型通所介護費Ⅰ 三時間以上四時間未満 要介護4"
: (大規模型通所介護費Ⅰ, 三時間以上四時間未満, 要介護4) -> 単位数(511)
| "ロ 大規模型通所介護費Ⅰ 三時間以上四時間未満 要介護5"
: (大規模型通所介護費Ⅰ, 三時間以上四時間未満, 要介護5) -> 単位数(565)
| "ロ 大規模型通所介護費Ⅰ 四時間以上五時間未満 要介護1"
: (大規模型通所介護費Ⅰ, 四時間以上五時間未満, 要介護1) -> 単位数(374)
| "ロ 大規模型通所介護費Ⅰ 四時間以上五時間未満 要介護2"
: (大規模型通所介護費Ⅰ, 四時間以上五時間未満, 要介護2) -> 単位数(428)
| "ロ 大規模型通所介護費Ⅰ 四時間以上五時間未満 要介護3"
: (大規模型通所介護費Ⅰ, 四時間以上五時間未満, 要介護3) -> 単位数(484)
| "ロ 大規模型通所介護費Ⅰ 四時間以上五時間未満 要介護4"
: (大規模型通所介護費Ⅰ, 四時間以上五時間未満, 要介護4) -> 単位数(538)
| "ロ 大規模型通所介護費Ⅰ 四時間以上五時間未満 要介護5"
: (大規模型通所介護費Ⅰ, 四時間以上五時間未満, 要介護5) -> 単位数(594)
| "ロ 大規模型通所介護費Ⅰ 五時間以上六時間未満 要介護1"
: (大規模型通所介護費Ⅰ, 五時間以上六時間未満, 要介護1) -> 単位数(541)
| "ロ 大規模型通所介護費Ⅰ 五時間以上六時間未満 要介護2"
: (大規模型通所介護費Ⅰ, 五時間以上六時間未満, 要介護2) -> 単位数(640)
| "ロ 大規模型通所介護費Ⅰ 五時間以上六時間未満 要介護3"
: (大規模型通所介護費Ⅰ, 五時間以上六時間未満, 要介護3) -> 単位数(739)
| "ロ 大規模型通所介護費Ⅰ 五時間以上六時間未満 要介護4"
: (大規模型通所介護費Ⅰ, 五時間以上六時間未満, 要介護4) -> 単位数(836)
| "ロ 大規模型通所介護費Ⅰ 五時間以上六時間未満 要介護5"
: (大規模型通所介護費Ⅰ, 五時間以上六時間未満, 要介護5) -> 単位数(935)
| "ロ 大規模型通所介護費Ⅰ 六時間以上七時間未満 要介護1"
: (大規模型通所介護費Ⅰ, 六時間以上七時間未満, 要介護1) -> 単位数(561)
| "ロ 大規模型通所介護費Ⅰ 六時間以上七時間未満 要介護2"
: (大規模型通所介護費Ⅰ, 六時間以上七時間未満, 要介護2) -> 単位数(664)
| "ロ 大規模型通所介護費Ⅰ 六時間以上七時間未満 要介護3"
: (大規模型通所介護費Ⅰ, 六時間以上七時間未満, 要介護3) -> 単位数(766)
| "ロ 大規模型通所介護費Ⅰ 六時間以上七時間未満 要介護4"
: (大規模型通所介護費Ⅰ, 六時間以上七時間未満, 要介護4) -> 単位数(867)
| "ロ 大規模型通所介護費Ⅰ 六時間以上七時間未満 要介護5"
: (大規模型通所介護費Ⅰ, 六時間以上七時間未満, 要介護5) -> 単位数(969)
| "ロ 大規模型通所介護費Ⅰ 七時間以上八時間未満 要介護1"
: (大規模型通所介護費Ⅰ, 七時間以上八時間未満, 要介護1) -> 単位数(626)
| "ロ 大規模型通所介護費Ⅰ 七時間以上八時間未満 要介護2"
: (大規模型通所介護費Ⅰ, 七時間以上八時間未満, 要介護2) -> 単位数(740)
| "ロ 大規模型通所介護費Ⅰ 七時間以上八時間未満 要介護3"
: (大規模型通所介護費Ⅰ, 七時間以上八時間未満, 要介護3) -> 単位数(857)
| "ロ 大規模型通所介護費Ⅰ 七時間以上八時間未満 要介護4"
: (大規模型通所介護費Ⅰ, 七時間以上八時間未満, 要介護4) -> 単位数(975)
| "ロ 大規模型通所介護費Ⅰ 七時間以上八時間未満 要介護5"
: (大規模型通所介護費Ⅰ, 七時間以上八時間未満, 要介護5) -> 単位数(1092)
| "ロ 大規模型通所介護費Ⅰ 八時間以上九時間未満 要介護1"
: (大規模型通所介護費Ⅰ, 八時間以上九時間未満, 要介護1) -> 単位数(644)
| "ロ 大規模型通所介護費Ⅰ 八時間以上九時間未満 要介護2"
: (大規模型通所介護費Ⅰ, 八時間以上九時間未満, 要介護2) -> 単位数(761)
| "ロ 大規模型通所介護費Ⅰ 八時間以上九時間未満 要介護3"
: (大規模型通所介護費Ⅰ, 八時間以上九時間未満, 要介護3) -> 単位数(881)
| "ロ 大規模型通所介護費Ⅰ 八時間以上九時間未満 要介護4"
: (大規模型通所介護費Ⅰ, 八時間以上九時間未満, 要介護4) -> 単位数(1002)
| "ロ 大規模型通所介護費Ⅰ 八時間以上九時間未満 要介護5"
: (大規模型通所介護費Ⅰ, 八時間以上九時間未満, 要介護5) -> 単位数(1122)
| "ハ 大規模型通所介護費Ⅱ 三時間以上四時間未満 要介護1"
: (大規模型通所介護費Ⅱ, 三時間以上四時間未満, 要介護1) -> 単位数(343)
| "ハ 大規模型通所介護費Ⅱ 三時間以上四時間未満 要介護2"
: (大規模型通所介護費Ⅱ, 三時間以上四時間未満, 要介護2) -> 単位数(393)
| "ハ 大規模型通所介護費Ⅱ 三時間以上四時間未満 要介護3"
: (大規模型通所介護費Ⅱ, 三時間以上四時間未満, 要介護3) -> 単位数(444)
| "ハ 大規模型通所介護費Ⅱ 三時間以上四時間未満 要介護4"
: (大規模型通所介護費Ⅱ, 三時間以上四時間未満, 要介護4) -> 単位数(493)
| "ハ 大規模型通所介護費Ⅱ 三時間以上四時間未満 要介護5"
: (大規模型通所介護費Ⅱ, 三時間以上四時間未満, 要介護5) -> 単位数(546)
| "ハ 大規模型通所介護費Ⅱ 四時間以上五時間未満 要介護1"
: (大規模型通所介護費Ⅱ, 四時間以上五時間未満, 要介護1) -> 単位数(360)
| "ハ 大規模型通所介護費Ⅱ 四時間以上五時間未満 要介護2"
: (大規模型通所介護費Ⅱ, 四時間以上五時間未満, 要介護2) -> 単位数(412)
| "ハ 大規模型通所介護費Ⅱ 四時間以上五時間未満 要介護3"
: (大規模型通所介護費Ⅱ, 四時間以上五時間未満, 要介護3) -> 単位数(466)
| "ハ 大規模型通所介護費Ⅱ 四時間以上五時間未満 要介護4"
: (大規模型通所介護費Ⅱ, 四時間以上五時間未満, 要介護4) -> 単位数(518)
| "ハ 大規模型通所介護費Ⅱ 四時間以上五時間未満 要介護5"
: (大規模型通所介護費Ⅱ, 四時間以上五時間未満, 要介護5) -> 単位数(572)
| "ハ 大規模型通所介護費Ⅱ 五時間以上六時間未満 要介護1"
: (大規模型通所介護費Ⅱ, 五時間以上六時間未満, 要介護1) -> 単位数(522)
| "ハ 大規模型通所介護費Ⅱ 五時間以上六時間未満 要介護2"
: (大規模型通所介護費Ⅱ, 五時間以上六時間未満, 要介護2) -> 単位数(617)
| "ハ 大規模型通所介護費Ⅱ 五時間以上六時間未満 要介護3"
: (大規模型通所介護費Ⅱ, 五時間以上六時間未満, 要介護3) -> 単位数(712)
| "ハ 大規模型通所介護費Ⅱ 五時間以上六時間未満 要介護4"
: (大規模型通所介護費Ⅱ, 五時間以上六時間未満, 要介護4) -> 単位数(808)
| "ハ 大規模型通所介護費Ⅱ 五時間以上六時間未満 要介護5"
: (大規模型通所介護費Ⅱ, 五時間以上六時間未満, 要介護5) -> 単位数(903)
| "ハ 大規模型通所介護費Ⅱ 六時間以上七時間未満 要介護1"
: (大規模型通所介護費Ⅱ, 六時間以上七時間未満, 要介護1) -> 単位数(540)
| "ハ 大規模型通所介護費Ⅱ 六時間以上七時間未満 要介護2"
: (大規模型通所介護費Ⅱ, 六時間以上七時間未満, 要介護2) -> 単位数(638)
| "ハ 大規模型通所介護費Ⅱ 六時間以上七時間未満 要介護3"
: (大規模型通所介護費Ⅱ, 六時間以上七時間未満, 要介護3) -> 単位数(736)
| "ハ 大規模型通所介護費Ⅱ 六時間以上七時間未満 要介護4"
: (大規模型通所介護費Ⅱ, 六時間以上七時間未満, 要介護4) -> 単位数(835)
| "ハ 大規模型通所介護費Ⅱ 六時間以上七時間未満 要介護5"
: (大規模型通所介護費Ⅱ, 六時間以上七時間未満, 要介護5) -> 単位数(934)
| "ハ 大規模型通所介護費Ⅱ 七時間以上八時間未満 要介護1"
: (大規模型通所介護費Ⅱ, 七時間以上八時間未満, 要介護1) -> 単位数(604)
| "ハ 大規模型通所介護費Ⅱ 七時間以上八時間未満 要介護2"
: (大規模型通所介護費Ⅱ, 七時間以上八時間未満, 要介護2) -> 単位数(713)
| "ハ 大規模型通所介護費Ⅱ 七時間以上八時間未満 要介護3"
: (大規模型通所介護費Ⅱ, 七時間以上八時間未満, 要介護3) -> 単位数(826)
| "ハ 大規模型通所介護費Ⅱ 七時間以上八時間未満 要介護4"
: (大規模型通所介護費Ⅱ, 七時間以上八時間未満, 要介護4) -> 単位数(941)
| "ハ 大規模型通所介護費Ⅱ 七時間以上八時間未満 要介護5"
: (大規模型通所介護費Ⅱ, 七時間以上八時間未満, 要介護5) -> 単位数(1054)
| "ハ 大規模型通所介護費Ⅱ 八時間以上九時間未満 要介護1"
: (大規模型通所介護費Ⅱ, 八時間以上九時間未満, 要介護1) -> 単位数(620)
| "ハ 大規模型通所介護費Ⅱ 八時間以上九時間未満 要介護2"
: (大規模型通所介護費Ⅱ, 八時間以上九時間未満, 要介護2) -> 単位数(733)
| "ハ 大規模型通所介護費Ⅱ 八時間以上九時間未満 要介護3"
: (大規模型通所介護費Ⅱ, 八時間以上九時間未満, 要介護3) -> 単位数(848)
| "ハ 大規模型通所介護費Ⅱ 八時間以上九時間未満 要介護4"
: (大規模型通所介護費Ⅱ, 八時間以上九時間未満, 要介護4) -> 単位数(965)
| "ハ 大規模型通所介護費Ⅱ 八時間以上九時間未満 要介護5"
: (大規模型通所介護費Ⅱ, 八時間以上九時間未満, 要介護5) -> 単位数(1081)
example 二時間以上三時間未満の単位数を求める
| "通常規模・要介護1は386単位の70/100" : (通常規模型通所介護費, 要介護1) -> 単位数(270)
| "通常規模・要介護5は614単位の70/100" : (通常規模型通所介護費, 要介護5) -> 単位数(430)
| "大規模(Ⅰ)・要介護3は484単位の70/100" : (大規模型通所介護費Ⅰ, 要介護3) -> 単位数(339)
| "大規模(Ⅱ)・要介護2は412単位の70/100" : (大規模型通所介護費Ⅱ, 要介護2) -> 単位数(288)
| "通常規模・要介護4は557単位の70/100" : (通常規模型通所介護費, 要介護4) -> 単位数(390)
| "通常規模・要介護2は442単位の70/100" : (通常規模型通所介護費, 要介護2) -> 単位数(309)
// ---------------------------------------------------------------- 注の各列
let 注なし =
算定条件
{ 定員超過又は員数不足 = 該当しない
, 感染症又は災害による利用者数の減少 = 生じていない
, 通所介護の前後の日常生活上の世話 = 世話を行わない
, 共生型通所介護 = 共生型でない
, 生活相談員配置等加算 = 生活相談員配置等なし
, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住なし
, 入浴介助加算 = 入浴介助加算なし
, 中重度者ケア体制加算 = 中重度者ケア体制なし
, 生活機能向上連携加算 = 生活機能向上連携加算なし
, 個別機能訓練加算 = 個別機能訓練加算なし
, ADL維持等加算 = ADL維持等加算なし
, 認知症加算 = 認知症加算なし
, 若年性認知症利用者受入加算 = 若年性認知症受入なし
, 栄養アセスメント加算 = 栄養アセスメントなし
, 栄養改善加算 = 栄養改善なし
, 口腔栄養スクリーニング加算 = 口腔栄養スクリーニングなし
, 口腔機能向上加算 = 口腔機能向上加算なし
, 科学的介護推進体制加算 = 科学的介護推進体制なし
, 同一建物からの利用 = 同一建物から利用しない
, 送迎 = 送迎を行う
}
example 注の記号を並べる
| "注が一つもなければ何も並ばない" : (注なし) -> []
| "並ぶ順は表の列の順"
: (算定条件
{ ...注なし
, 定員超過又は員数不足 = 利用者の数が利用定員を超える
, 入浴介助加算 = 入浴介助加算Ⅰ
, 認知症加算 = 認知症加算あり
, 同一建物からの利用 = 同一建物から利用する
, 送迎 = 片道の送迎を行わない
})
-> [ 割合乗算 { 分子 = 70, 分母 = 100 }
, 単位加算 { 単位 = 単位数(40) }
, 単位加算 { 単位 = 単位数(60) }
, 単位減算 { 単位 = 単位数(94) }
, 単位減算 { 単位 = 単位数(47) }
]
example 単位数を求める
| "注が付かなければ基本部分のまま"
: (通常規模型通所介護費, 七時間以上八時間未満, 要介護3, 注なし) -> 単位数(896)
| "利用定員を超える場合は×70/100"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 定員超過又は員数不足 = 利用者の数が利用定員を超える } )
-> 単位数(627)
| "看護・介護職員の員数が基準に満たない場合も×70/100"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 定員超過又は員数不足 = 看護介護職員の員数が基準に満たない } )
-> 単位数(627)
| "感染症又は災害による利用者数の減少は+3/100"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 感染症又は災害による利用者数の減少 = 一定以上生じている } )
-> 単位数(923)
| "9時間以上10時間未満の世話は+50単位"
: ( 通常規模型通所介護費, 八時間以上九時間未満, 要介護3
, 算定条件 { ...注なし, 通所介護の前後の日常生活上の世話 = 九時間以上十時間未満 } )
-> 単位数(961)
| "10時間以上11時間未満の世話は+100単位"
: ( 通常規模型通所介護費, 八時間以上九時間未満, 要介護3
, 算定条件 { ...注なし, 通所介護の前後の日常生活上の世話 = 十時間以上十一時間未満 } )
-> 単位数(1011)
| "11時間以上12時間未満の世話は+150単位"
: ( 通常規模型通所介護費, 八時間以上九時間未満, 要介護3
, 算定条件 { ...注なし, 通所介護の前後の日常生活上の世話 = 十一時間以上十二時間未満 } )
-> 単位数(1061)
| "12時間以上13時間未満の世話は+200単位"
: ( 通常規模型通所介護費, 八時間以上九時間未満, 要介護3
, 算定条件 { ...注なし, 通所介護の前後の日常生活上の世話 = 十二時間以上十三時間未満 } )
-> 単位数(1111)
| "13時間以上14時間未満の世話は+250単位"
: ( 通常規模型通所介護費, 八時間以上九時間未満, 要介護3
, 算定条件 { ...注なし, 通所介護の前後の日常生活上の世話 = 十三時間以上十四時間未満 } )
-> 単位数(1161)
| "共生型(指定生活介護事業所)は×93/100"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 共生型通所介護 = 指定生活介護事業所が行う } )
-> 単位数(833)
| "共生型(指定自立訓練事業所)は×95/100"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 共生型通所介護 = 指定自立訓練事業所が行う } )
-> 単位数(851)
| "共生型(指定児童発達支援事業所)は×90/100"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 共生型通所介護 = 指定児童発達支援事業所が行う } )
-> 単位数(806)
| "共生型(指定放課後等デイサービス事業所)も×90/100"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 共生型通所介護 = 指定放課後等デイサービス事業所が行う } )
-> 単位数(806)
| "生活相談員配置等加算は+13単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 生活相談員配置等加算 = 生活相談員配置等あり } )
-> 単位数(909)
| "中山間地域等に居住する者へのサービス提供加算は+5/100"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり } )
-> 単位数(941)
| "入浴介助加算(Ⅰ)は+40単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 入浴介助加算 = 入浴介助加算Ⅰ } )
-> 単位数(936)
| "入浴介助加算(Ⅱ)は+55単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 入浴介助加算 = 入浴介助加算Ⅱ } )
-> 単位数(951)
| "中重度者ケア体制加算は+45単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 中重度者ケア体制加算 = 中重度者ケア体制あり } )
-> 単位数(941)
| "生活機能向上連携加算(Ⅰ)は+100単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 生活機能向上連携加算 = 生活機能向上連携加算Ⅰ } )
-> 単位数(996)
| "生活機能向上連携加算(Ⅱ)は+200単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算なし } )
-> 単位数(1096)
| "個別機能訓練加算を算定していれば(Ⅱ)は+100単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件
{ ...注なし
, 生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算あり
, 個別機能訓練加算 = 個別機能訓練加算Ⅰイ
} )
-> 単位数(1052)
| "個別機能訓練加算(Ⅰ)イは+56単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 個別機能訓練加算 = 個別機能訓練加算Ⅰイ } )
-> 単位数(952)
| "個別機能訓練加算(Ⅰ)ロは+85単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 個別機能訓練加算 = 個別機能訓練加算Ⅰロ } )
-> 単位数(981)
| "個別機能訓練加算(Ⅱ)は+20単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 個別機能訓練加算 = 個別機能訓練加算Ⅱ } )
-> 単位数(916)
| "ADL維持等加算(Ⅰ)は+30単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, ADL維持等加算 = ADL維持等加算Ⅰ } )
-> 単位数(926)
| "ADL維持等加算(Ⅱ)は+60単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, ADL維持等加算 = ADL維持等加算Ⅱ } )
-> 単位数(956)
| "ADL維持等加算(Ⅲ)は+3単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, ADL維持等加算 = ADL維持等加算Ⅲ } )
-> 単位数(899)
| "認知症加算は+60単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 認知症加算 = 認知症加算あり } )
-> 単位数(956)
| "若年性認知症利用者受入加算は+60単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 若年性認知症利用者受入加算 = 若年性認知症受入あり } )
-> 単位数(956)
| "栄養アセスメント加算は+50単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 栄養アセスメント加算 = 栄養アセスメントあり } )
-> 単位数(946)
| "栄養改善加算は+200単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 栄養改善加算 = 栄養改善あり } )
-> 単位数(1096)
| "口腔・栄養スクリーニング加算(Ⅰ)は+20単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 口腔栄養スクリーニング加算 = 口腔栄養スクリーニング加算Ⅰ } )
-> 単位数(916)
| "口腔・栄養スクリーニング加算(Ⅱ)は+5単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 口腔栄養スクリーニング加算 = 口腔栄養スクリーニング加算Ⅱ } )
-> 単位数(901)
| "口腔機能向上加算(Ⅰ)は+150単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 口腔機能向上加算 = 口腔機能向上加算Ⅰ } )
-> 単位数(1046)
| "口腔機能向上加算(Ⅱ)は+160単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 口腔機能向上加算 = 口腔機能向上加算Ⅱ } )
-> 単位数(1056)
| "科学的介護推進体制加算は+40単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 科学的介護推進体制加算 = 科学的介護推進体制あり } )
-> 単位数(936)
| "同一建物から利用する者は-94単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 同一建物からの利用 = 同一建物から利用する } )
-> 単位数(802)
| "送迎を片道行わない場合は-47単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 送迎 = 片道の送迎を行わない } )
-> 単位数(849)
| "送迎を両道行わない場合は-94単位"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 送迎 = 両道の送迎を行わない } )
-> 単位数(802)
| "定員超過と入浴介助と減算を左から順に重ねる"
: ( 通常規模型通所介護費, 七時間以上八時間未満, 要介護3
, 算定条件
{ ...注なし
, 定員超過又は員数不足 = 利用者の数が利用定員を超える
, 入浴介助加算 = 入浴介助加算Ⅰ
, 同一建物からの利用 = 同一建物から利用する
} )
-> 単位数(573)
| "大規模型(Ⅰ)も同じ列を通る"
: ( 大規模型通所介護費Ⅰ, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 認知症加算 = 認知症加算あり } )
-> 単位数(917)
| "大規模型(Ⅱ)も同じ列を通る"
: ( 大規模型通所介護費Ⅱ, 七時間以上八時間未満, 要介護3
, 算定条件 { ...注なし, 認知症加算 = 認知症加算あり } )
-> 単位数(886)
| "3時間以上4時間未満・要介護1"
: (通常規模型通所介護費, 三時間以上四時間未満, 要介護1, 注なし) -> 単位数(368)
| "4時間以上5時間未満・要介護2"
: (通常規模型通所介護費, 四時間以上五時間未満, 要介護2, 注なし) -> 単位数(442)
| "5時間以上6時間未満・要介護4"
: (通常規模型通所介護費, 五時間以上六時間未満, 要介護4, 注なし) -> 単位数(876)
| "6時間以上7時間未満・要介護5"
: (通常規模型通所介護費, 六時間以上七時間未満, 要介護5, 注なし) -> 単位数(1003)
// ------------------------------------------------ ニからヘまでの加算
example 月の所定単位数を求める
| "1件もなければ0" : ([]) -> 単位数(0)
| "1回だけならその単位数" : ([単位数(896)]) -> 単位数(896)
| "2回とサービス提供体制強化加算" : ([単位数(896), 単位数(896), 単位数(22), 単位数(22)]) -> 単位数(1836)
| "0単位の項目が混ざっても合計は変わらない" : ([単位数(0), 単位数(100)]) -> 単位数(100)
example 処遇改善加算の単位数を求める
| "算定しない" : (単位数(10000), 処遇改善加算なし) -> 単位数(0)
| "(Ⅰ)は59/1000" : (単位数(10000), 処遇改善加算Ⅰ) -> 単位数(590)
| "(Ⅱ)は43/1000" : (単位数(10000), 処遇改善加算Ⅱ) -> 単位数(430)
| "(Ⅲ)は23/1000" : (単位数(10000), 処遇改善加算Ⅲ) -> 単位数(230)
| "端数は四捨五入する" : (単位数(1836), 処遇改善加算Ⅰ) -> 単位数(108)
| "所定単位数が0なら0" : (単位数(0), 処遇改善加算Ⅰ) -> 単位数(0)
example 特定処遇改善加算の単位数を求める
| "算定しない" : (単位数(10000), 特定処遇改善加算なし) -> 単位数(0)
| "(Ⅰ)は12/1000" : (単位数(10000), 特定処遇改善加算Ⅰ) -> 単位数(120)
| "(Ⅱ)は10/1000" : (単位数(10000), 特定処遇改善加算Ⅱ) -> 単位数(100)
| "端数は四捨五入する" : (単位数(1836), 特定処遇改善加算Ⅰ) -> 単位数(22)
| "所定単位数が0なら0" : (単位数(0), 特定処遇改善加算Ⅰ) -> 単位数(0)
// 表の列を1つずつ立てて、その列がどの記号になるかを見る。
// `souther examples` が「no row is in ...」で名指ししてきたぶん。
example 注の記号を並べる
| "定員超過又は員数不足 = 看護介護職員の員数が基準に満たない"
: (算定条件 { ...注なし, 定員超過又は員数不足 = 看護介護職員の員数が基準に満たない })
-> [割合乗算 { 分子 = 70, 分母 = 100 }]
| "感染症又は災害による利用者数の減少 = 一定以上生じている"
: (算定条件 { ...注なし, 感染症又は災害による利用者数の減少 = 一定以上生じている })
-> [割合加算 { 分子 = 3, 分母 = 100 }]
| "通所介護の前後の日常生活上の世話 = 九時間以上十時間未満"
: (算定条件 { ...注なし, 通所介護の前後の日常生活上の世話 = 九時間以上十時間未満 })
-> [単位加算 { 単位 = 単位数(50) }]
| "通所介護の前後の日常生活上の世話 = 十時間以上十一時間未満"
: (算定条件 { ...注なし, 通所介護の前後の日常生活上の世話 = 十時間以上十一時間未満 })
-> [単位加算 { 単位 = 単位数(100) }]
| "通所介護の前後の日常生活上の世話 = 十一時間以上十二時間未満"
: (算定条件 { ...注なし, 通所介護の前後の日常生活上の世話 = 十一時間以上十二時間未満 })
-> [単位加算 { 単位 = 単位数(150) }]
| "通所介護の前後の日常生活上の世話 = 十二時間以上十三時間未満"
: (算定条件 { ...注なし, 通所介護の前後の日常生活上の世話 = 十二時間以上十三時間未満 })
-> [単位加算 { 単位 = 単位数(200) }]
| "通所介護の前後の日常生活上の世話 = 十三時間以上十四時間未満"
: (算定条件 { ...注なし, 通所介護の前後の日常生活上の世話 = 十三時間以上十四時間未満 })
-> [単位加算 { 単位 = 単位数(250) }]
| "共生型通所介護 = 指定生活介護事業所が行う"
: (算定条件 { ...注なし, 共生型通所介護 = 指定生活介護事業所が行う })
-> [割合乗算 { 分子 = 93, 分母 = 100 }]
| "共生型通所介護 = 指定自立訓練事業所が行う"
: (算定条件 { ...注なし, 共生型通所介護 = 指定自立訓練事業所が行う })
-> [割合乗算 { 分子 = 95, 分母 = 100 }]
| "共生型通所介護 = 指定児童発達支援事業所が行う"
: (算定条件 { ...注なし, 共生型通所介護 = 指定児童発達支援事業所が行う })
-> [割合乗算 { 分子 = 90, 分母 = 100 }]
| "共生型通所介護 = 指定放課後等デイサービス事業所が行う"
: (算定条件 { ...注なし, 共生型通所介護 = 指定放課後等デイサービス事業所が行う })
-> [割合乗算 { 分子 = 90, 分母 = 100 }]
| "生活相談員配置等加算 = 生活相談員配置等あり"
: (算定条件 { ...注なし, 生活相談員配置等加算 = 生活相談員配置等あり })
-> [単位加算 { 単位 = 単位数(13) }]
| "中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり"
: (算定条件 { ...注なし, 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり })
-> [割合加算 { 分子 = 5, 分母 = 100 }]
| "入浴介助加算 = 入浴介助加算Ⅱ"
: (算定条件 { ...注なし, 入浴介助加算 = 入浴介助加算Ⅱ })
-> [単位加算 { 単位 = 単位数(55) }]
| "中重度者ケア体制加算 = 中重度者ケア体制あり"
: (算定条件 { ...注なし, 中重度者ケア体制加算 = 中重度者ケア体制あり })
-> [単位加算 { 単位 = 単位数(45) }]
| "生活機能向上連携加算 = 生活機能向上連携加算Ⅰ"
: (算定条件 { ...注なし, 生活機能向上連携加算 = 生活機能向上連携加算Ⅰ })
-> [単位加算 { 単位 = 単位数(100) }]
| "生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算あり"
: (算定条件 { ...注なし, 生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算あり })
-> [単位加算 { 単位 = 単位数(100) }]
| "生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算なし"
: (算定条件 { ...注なし, 生活機能向上連携加算 = 生活機能向上連携加算Ⅱ個別機能訓練加算なし })
-> [単位加算 { 単位 = 単位数(200) }]
| "個別機能訓練加算 = 個別機能訓練加算Ⅰイ"
: (算定条件 { ...注なし, 個別機能訓練加算 = 個別機能訓練加算Ⅰイ })
-> [単位加算 { 単位 = 単位数(56) }]
| "個別機能訓練加算 = 個別機能訓練加算Ⅰロ"
: (算定条件 { ...注なし, 個別機能訓練加算 = 個別機能訓練加算Ⅰロ })
-> [単位加算 { 単位 = 単位数(85) }]
| "個別機能訓練加算 = 個別機能訓練加算Ⅱ"
: (算定条件 { ...注なし, 個別機能訓練加算 = 個別機能訓練加算Ⅱ })
-> [単位加算 { 単位 = 単位数(20) }]
| "ADL維持等加算 = ADL維持等加算Ⅰ"
: (算定条件 { ...注なし, ADL維持等加算 = ADL維持等加算Ⅰ })
-> [単位加算 { 単位 = 単位数(30) }]
| "ADL維持等加算 = ADL維持等加算Ⅱ"
: (算定条件 { ...注なし, ADL維持等加算 = ADL維持等加算Ⅱ })
-> [単位加算 { 単位 = 単位数(60) }]
| "ADL維持等加算 = ADL維持等加算Ⅲ"
: (算定条件 { ...注なし, ADL維持等加算 = ADL維持等加算Ⅲ })
-> [単位加算 { 単位 = 単位数(3) }]
// `souther examples --adequacy classes --generate` が書き出した行に、
// 表の該当セル(match 腕)から答えを入れたもの。
example 注の記号を並べる
| "条件.口腔栄養スクリーニング加算=口腔栄養スクリーニング加算Ⅰ"
: (算定条件 { ...注なし, 口腔栄養スクリーニング加算 = 口腔栄養スクリーニング加算Ⅰ })
-> [単位加算 { 単位 = 単位数(20) }]
| "条件.口腔栄養スクリーニング加算=口腔栄養スクリーニング加算Ⅱ"
: (算定条件 { ...注なし, 口腔栄養スクリーニング加算 = 口腔栄養スクリーニング加算Ⅱ })
-> [単位加算 { 単位 = 単位数(5) }]
| "条件.口腔機能向上加算=口腔機能向上加算Ⅰ"
: (算定条件 { ...注なし, 口腔機能向上加算 = 口腔機能向上加算Ⅰ })
-> [単位加算 { 単位 = 単位数(150) }]
| "条件.口腔機能向上加算=口腔機能向上加算Ⅱ"
: (算定条件 { ...注なし, 口腔機能向上加算 = 口腔機能向上加算Ⅱ })
-> [単位加算 { 単位 = 単位数(160) }]
| "条件.送迎=両道の送迎を行わない"
: (算定条件 { ...注なし, 送迎 = 両道の送迎を行わない })
-> [単位減算 { 単位 = 単位数(94) }]
| "条件.栄養アセスメント加算=栄養アセスメントあり"
: (算定条件 { ...注なし, 栄養アセスメント加算 = 栄養アセスメントあり })
-> [単位加算 { 単位 = 単位数(50) }]
| "条件.栄養改善加算=栄養改善あり"
: (算定条件 { ...注なし, 栄養改善加算 = 栄養改善あり })
-> [単位加算 { 単位 = 単位数(200) }]
| "条件.科学的介護推進体制加算=科学的介護推進体制あり"
: (算定条件 { ...注なし, 科学的介護推進体制加算 = 科学的介護推進体制あり })
-> [単位加算 { 単位 = 単位数(40) }]
| "条件.若年性認知症利用者受入加算=若年性認知症受入あり"
: (算定条件 { ...注なし, 若年性認知症利用者受入加算 = 若年性認知症受入あり })
-> [単位加算 { 単位 = 単位数(60) }]
module kaigo.通所介護 exposing
( 事業所の規模, 通常規模型通所介護費, 大規模型通所介護費Ⅰ, 大規模型通所介護費Ⅱ
, 所要時間の区分
, 三時間以上四時間未満, 四時間以上五時間未満, 五時間以上六時間未満
, 六時間以上七時間未満, 七時間以上八時間未満, 八時間以上九時間未満
, 基本部分の単位数を求める, 二時間以上三時間未満の単位数を求める
, 定員超過又は員数不足, 該当しない, 利用者の数が利用定員を超える, 看護介護職員の員数が基準に満たない
, 感染症又は災害による利用者数の減少, 一定以上生じている, 生じていない
, 通所介護の前後の日常生活上の世話, 世話を行わない
, 九時間以上十時間未満, 十時間以上十一時間未満, 十一時間以上十二時間未満
, 十二時間以上十三時間未満, 十三時間以上十四時間未満
, 共生型通所介護, 共生型でない, 指定生活介護事業所が行う, 指定自立訓練事業所が行う
, 指定児童発達支援事業所が行う, 指定放課後等デイサービス事業所が行う
, 生活相談員配置等加算, 生活相談員配置等あり, 生活相談員配置等なし
, 中山間地域等に居住する者へのサービス提供加算, 中山間地域居住あり, 中山間地域居住なし
, 入浴介助加算, 入浴介助加算なし, 入浴介助加算Ⅰ, 入浴介助加算Ⅱ
, 中重度者ケア体制加算, 中重度者ケア体制あり, 中重度者ケア体制なし
, 生活機能向上連携加算, 生活機能向上連携加算なし, 生活機能向上連携加算Ⅰ
, 生活機能向上連携加算Ⅱ個別機能訓練加算あり, 生活機能向上連携加算Ⅱ個別機能訓練加算なし
, 個別機能訓練加算, 個別機能訓練加算なし, 個別機能訓練加算Ⅰイ, 個別機能訓練加算Ⅰロ, 個別機能訓練加算Ⅱ
, ADL維持等加算, ADL維持等加算なし, ADL維持等加算Ⅰ, ADL維持等加算Ⅱ, ADL維持等加算Ⅲ
, 認知症加算, 認知症加算あり, 認知症加算なし
, 若年性認知症利用者受入加算, 若年性認知症受入あり, 若年性認知症受入なし
, 栄養アセスメント加算, 栄養アセスメントあり, 栄養アセスメントなし
, 栄養改善加算, 栄養改善あり, 栄養改善なし
, 口腔栄養スクリーニング加算, 口腔栄養スクリーニングなし
, 口腔栄養スクリーニング加算Ⅰ, 口腔栄養スクリーニング加算Ⅱ
, 口腔機能向上加算, 口腔機能向上加算なし, 口腔機能向上加算Ⅰ, 口腔機能向上加算Ⅱ
, 科学的介護推進体制加算, 科学的介護推進体制あり, 科学的介護推進体制なし
, 同一建物からの利用, 同一建物から利用する, 同一建物から利用しない
, 送迎, 送迎を行う, 片道の送迎を行わない, 両道の送迎を行わない
, 算定条件, 注の記号を並べる, 単位数を求める
, サービス提供体制強化加算Ⅰ, サービス提供体制強化加算Ⅱ, サービス提供体制強化加算Ⅲ
, 介護職員処遇改善加算, 処遇改善加算Ⅰ, 処遇改善加算Ⅱ, 処遇改善加算Ⅲ, 処遇改善加算なし
, 介護職員等特定処遇改善加算, 特定処遇改善加算Ⅰ, 特定処遇改善加算Ⅱ, 特定処遇改善加算なし
, 月の所定単位数を求める, 処遇改善加算の単位数を求める, 特定処遇改善加算の単位数を求める
)
// 「介護報酬の算定構造」Ⅰ-6 通所介護費(介護5ページ)。
// https://www.wam.go.jp/gyoseiShiryou-files/documents/2022/0322211552821/202203a.pdf
//
// 基本部分は 事業所の規模(イ・ロ・ハ)×所要時間の区分(6段)×要介護度(5段)の90通り。
// 注は29列ある。
import kaigo.共通
( 単位数, 算定記号, 単位加算, 単位減算, 割合乗算, 割合加算
, 要介護度, 要介護1, 要介護2, 要介護3, 要介護4, 要介護5
, 記号を適用する, 記号を順に適用する
)
// ---------------------------------------------------------------- 基本部分
// イ 通常規模型通所介護費
// ロ 大規模型通所介護費(Ⅰ)
// ハ 大規模型通所介護費(Ⅱ)
data 事業所の規模 = 通常規模型通所介護費 | 大規模型通所介護費Ⅰ | 大規模型通所介護費Ⅱ
// (1)3時間以上4時間未満 から (6)8時間以上9時間未満 までの6段
data 所要時間の区分 =
三時間以上四時間未満
| 四時間以上五時間未満
| 五時間以上六時間未満
| 六時間以上七時間未満
| 七時間以上八時間未満
| 八時間以上九時間未満
behavior 基本部分の単位数を求める :
(規模: 事業所の規模, 所要時間の区分: 所要時間の区分, 要介護度: 要介護度) -> 単位数
constructs 単位数
let 基本部分の単位数を求める (規模, 所要時間の区分, 要介護度) =
match 規模 with
| 通常規模型通所介護費 ->
match 所要時間の区分 with
| 三時間以上四時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(368)
| 要介護2 -> 単位数(421)
| 要介護3 -> 単位数(477)
| 要介護4 -> 単位数(530)
| 要介護5 -> 単位数(585)
| 四時間以上五時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(386)
| 要介護2 -> 単位数(442)
| 要介護3 -> 単位数(500)
| 要介護4 -> 単位数(557)
| 要介護5 -> 単位数(614)
| 五時間以上六時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(567)
| 要介護2 -> 単位数(670)
| 要介護3 -> 単位数(773)
| 要介護4 -> 単位数(876)
| 要介護5 -> 単位数(979)
| 六時間以上七時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(581)
| 要介護2 -> 単位数(686)
| 要介護3 -> 単位数(792)
| 要介護4 -> 単位数(897)
| 要介護5 -> 単位数(1003)
| 七時間以上八時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(655)
| 要介護2 -> 単位数(773)
| 要介護3 -> 単位数(896)
| 要介護4 -> 単位数(1018)
| 要介護5 -> 単位数(1142)
| 八時間以上九時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(666)
| 要介護2 -> 単位数(787)
| 要介護3 -> 単位数(911)
| 要介護4 -> 単位数(1036)
| 要介護5 -> 単位数(1162)
| 大規模型通所介護費Ⅰ ->
match 所要時間の区分 with
| 三時間以上四時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(356)
| 要介護2 -> 単位数(407)
| 要介護3 -> 単位数(460)
| 要介護4 -> 単位数(511)
| 要介護5 -> 単位数(565)
| 四時間以上五時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(374)
| 要介護2 -> 単位数(428)
| 要介護3 -> 単位数(484)
| 要介護4 -> 単位数(538)
| 要介護5 -> 単位数(594)
| 五時間以上六時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(541)
| 要介護2 -> 単位数(640)
| 要介護3 -> 単位数(739)
| 要介護4 -> 単位数(836)
| 要介護5 -> 単位数(935)
| 六時間以上七時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(561)
| 要介護2 -> 単位数(664)
| 要介護3 -> 単位数(766)
| 要介護4 -> 単位数(867)
| 要介護5 -> 単位数(969)
| 七時間以上八時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(626)
| 要介護2 -> 単位数(740)
| 要介護3 -> 単位数(857)
| 要介護4 -> 単位数(975)
| 要介護5 -> 単位数(1092)
| 八時間以上九時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(644)
| 要介護2 -> 単位数(761)
| 要介護3 -> 単位数(881)
| 要介護4 -> 単位数(1002)
| 要介護5 -> 単位数(1122)
| 大規模型通所介護費Ⅱ ->
match 所要時間の区分 with
| 三時間以上四時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(343)
| 要介護2 -> 単位数(393)
| 要介護3 -> 単位数(444)
| 要介護4 -> 単位数(493)
| 要介護5 -> 単位数(546)
| 四時間以上五時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(360)
| 要介護2 -> 単位数(412)
| 要介護3 -> 単位数(466)
| 要介護4 -> 単位数(518)
| 要介護5 -> 単位数(572)
| 五時間以上六時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(522)
| 要介護2 -> 単位数(617)
| 要介護3 -> 単位数(712)
| 要介護4 -> 単位数(808)
| 要介護5 -> 単位数(903)
| 六時間以上七時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(540)
| 要介護2 -> 単位数(638)
| 要介護3 -> 単位数(736)
| 要介護4 -> 単位数(835)
| 要介護5 -> 単位数(934)
| 七時間以上八時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(604)
| 要介護2 -> 単位数(713)
| 要介護3 -> 単位数(826)
| 要介護4 -> 単位数(941)
| 要介護5 -> 単位数(1054)
| 八時間以上九時間未満 ->
match 要介護度 with
| 要介護1 -> 単位数(620)
| 要介護2 -> 単位数(733)
| 要介護3 -> 単位数(848)
| 要介護4 -> 単位数(965)
| 要介護5 -> 単位数(1081)
// 注 2時間以上3時間未満の通所介護を行う場合 ×70/100
// 表はこの列に単位数を書かず、×70/100の枠を基本部分の(2)4時間以上5時間未満の行に
// 合わせて置いている。所定単位数がどの行のものかは文では書かれていないので、
// (2)の単位数に掛けるものとして写した。
behavior 二時間以上三時間未満の単位数を求める : (規模: 事業所の規模, 要介護度: 要介護度) -> 単位数
constructs 割合乗算
let 二時間以上三時間未満の単位数を求める (規模, 要介護度) =
記号を適用する(
基本部分の単位数を求める(規模, 四時間以上五時間未満, 要介護度),
割合乗算 { 分子 = 70, 分母 = 100 })
// 注 利用者の数が利用定員を超える場合 又は 看護・介護職員の員数が基準に満たない場合 ×70/100
data 定員超過又は員数不足 =
該当しない | 利用者の数が利用定員を超える | 看護介護職員の員数が基準に満たない
// 注 感染症又は災害の発生を理由とする利用者数の減少が一定以上生じている場合 +3/100
data 感染症又は災害による利用者数の減少 = 一定以上生じている | 生じていない
// 注 8時間以上9時間未満の通所介護の前後に日常生活上の世話を行う場合
// 9時間以上10時間未満 +50単位/10時間以上11時間未満 +100単位/11時間以上12時間未満 +150単位
// 12時間以上13時間未満 +200単位/13時間以上14時間未満 +250単位
data 通所介護の前後の日常生活上の世話 =
世話を行わない
| 九時間以上十時間未満
| 十時間以上十一時間未満
| 十一時間以上十二時間未満
| 十二時間以上十三時間未満
| 十三時間以上十四時間未満
// 注 共生型通所介護を行う場合
// 指定生活介護事業所が行う場合 ×93/100
// 指定自立訓練事業所が行う場合 ×95/100
// 指定児童発達支援事業所が行う場合 ×90/100
// 指定放課後等デイサービス事業所が行う場合 ×90/100
data 共生型通所介護 =
共生型でない
| 指定生活介護事業所が行う
| 指定自立訓練事業所が行う
| 指定児童発達支援事業所が行う
| 指定放課後等デイサービス事業所が行う
// 注 生活相談員配置等加算 1日につき +13単位
data 生活相談員配置等加算 = 生活相談員配置等あり | 生活相談員配置等なし
// 注 中山間地域等に居住する者へのサービス提供加算 +5/100
data 中山間地域等に居住する者へのサービス提供加算 = 中山間地域居住あり | 中山間地域居住なし
// 注 入浴介助加算(Ⅰ)1日につき +40単位/(Ⅱ)1日につき +55単位
data 入浴介助加算 = 入浴介助加算なし | 入浴介助加算Ⅰ | 入浴介助加算Ⅱ
// 注 中重度者ケア体制加算 1日につき +45単位
data 中重度者ケア体制加算 = 中重度者ケア体制あり | 中重度者ケア体制なし
// 注 生活機能向上連携加算(Ⅰ)1月につき +100単位(3月に1回を限度)
// 生活機能向上連携加算(Ⅱ)1月につき +200単位
// ※ただし、個別機能訓練加算を算定している場合は、1月につき +100単位
data 生活機能向上連携加算 =
生活機能向上連携加算なし
| 生活機能向上連携加算Ⅰ
| 生活機能向上連携加算Ⅱ個別機能訓練加算あり
| 生活機能向上連携加算Ⅱ個別機能訓練加算なし
// 注 個別機能訓練加算(Ⅰ)イ 1日につき +56単位
// 個別機能訓練加算(Ⅰ)ロ 1日につき +85単位
// 個別機能訓練加算(Ⅱ) 1月につき +20単位
data 個別機能訓練加算 =
個別機能訓練加算なし | 個別機能訓練加算Ⅰイ | 個別機能訓練加算Ⅰロ | 個別機能訓練加算Ⅱ
// 注 ADL維持等加算(Ⅰ)1月につき +30単位/(Ⅱ)1月につき +60単位/(Ⅲ)1月につき +3単位
// ※ ADL維持等加算(Ⅲ)については、令和5年3月31日まで算定可能。
data ADL維持等加算 = ADL維持等加算なし | ADL維持等加算Ⅰ | ADL維持等加算Ⅱ | ADL維持等加算Ⅲ
// 注 認知症加算 1日につき +60単位
data 認知症加算 = 認知症加算あり | 認知症加算なし
// 注 若年性認知症利用者受入加算 1日につき +60単位
data 若年性認知症利用者受入加算 = 若年性認知症受入あり | 若年性認知症受入なし
// 注 栄養アセスメント加算 1月につき +50単位
data 栄養アセスメント加算 = 栄養アセスメントあり | 栄養アセスメントなし
// 注 栄養改善加算 1回につき +200単位(月2回を限度)
data 栄養改善加算 = 栄養改善あり | 栄養改善なし
// 注 口腔・栄養スクリーニング加算(Ⅰ)1回につき +20単位(6月に1回を限度)
// (Ⅱ)1回につき +5単位(6月に1回を限度)
data 口腔栄養スクリーニング加算 =
口腔栄養スクリーニングなし | 口腔栄養スクリーニング加算Ⅰ | 口腔栄養スクリーニング加算Ⅱ
// 注 口腔機能向上加算(Ⅰ)1回につき +150単位(月2回を限度)
// (Ⅱ)1回につき +160単位(月2回を限度)
data 口腔機能向上加算 = 口腔機能向上加算なし | 口腔機能向上加算Ⅰ | 口腔機能向上加算Ⅱ
// 注 科学的介護推進体制加算 1月につき +40単位
data 科学的介護推進体制加算 = 科学的介護推進体制あり | 科学的介護推進体制なし
// 注 事業所と同一建物に居住する者又は同一建物から利用する者に通所介護を行う場合
// 1日につき -94単位
data 同一建物からの利用 = 同一建物から利用する | 同一建物から利用しない
// 注 事業所が送迎を行わない場合 片道につき -47単位
data 送迎 = 送迎を行う | 片道の送迎を行わない | 両道の送迎を行わない
data 算定条件 =
{ 定員超過又は員数不足: 定員超過又は員数不足
, 感染症又は災害による利用者数の減少: 感染症又は災害による利用者数の減少
, 通所介護の前後の日常生活上の世話: 通所介護の前後の日常生活上の世話
, 共生型通所介護: 共生型通所介護
, 生活相談員配置等加算: 生活相談員配置等加算
, 中山間地域等に居住する者へのサービス提供加算: 中山間地域等に居住する者へのサービス提供加算
, 入浴介助加算: 入浴介助加算
, 中重度者ケア体制加算: 中重度者ケア体制加算
, 生活機能向上連携加算: 生活機能向上連携加算
, 個別機能訓練加算: 個別機能訓練加算
, ADL維持等加算: ADL維持等加算
, 認知症加算: 認知症加算
, 若年性認知症利用者受入加算: 若年性認知症利用者受入加算
, 栄養アセスメント加算: 栄養アセスメント加算
, 栄養改善加算: 栄養改善加算
, 口腔栄養スクリーニング加算: 口腔栄養スクリーニング加算
, 口腔機能向上加算: 口腔機能向上加算
, 科学的介護推進体制加算: 科学的介護推進体制加算
, 同一建物からの利用: 同一建物からの利用
, 送迎: 送迎
}
behavior 注の記号を並べる : (条件: 算定条件) -> List<算定記号>
constructs 単位数, 単位加算, 単位減算, 割合乗算, 割合加算
let 注の記号を並べる (条件) =
(match 条件.定員超過又は員数不足 with
| 利用者の数が利用定員を超える -> [割合乗算 { 分子 = 70, 分母 = 100 }]
| 看護介護職員の員数が基準に満たない -> [割合乗算 { 分子 = 70, 分母 = 100 }]
| 該当しない -> [])
++ (match 条件.感染症又は災害による利用者数の減少 with
| 一定以上生じている -> [割合加算 { 分子 = 3, 分母 = 100 }]
| 生じていない -> [])
++ (match 条件.通所介護の前後の日常生活上の世話 with
| 九時間以上十時間未満 -> [単位加算 { 単位 = 単位数(50) }]
| 十時間以上十一時間未満 -> [単位加算 { 単位 = 単位数(100) }]
| 十一時間以上十二時間未満 -> [単位加算 { 単位 = 単位数(150) }]
| 十二時間以上十三時間未満 -> [単位加算 { 単位 = 単位数(200) }]
| 十三時間以上十四時間未満 -> [単位加算 { 単位 = 単位数(250) }]
| 世話を行わない -> [])
++ (match 条件.共生型通所介護 with
| 指定生活介護事業所が行う -> [割合乗算 { 分子 = 93, 分母 = 100 }]
| 指定自立訓練事業所が行う -> [割合乗算 { 分子 = 95, 分母 = 100 }]
| 指定児童発達支援事業所が行う -> [割合乗算 { 分子 = 90, 分母 = 100 }]
| 指定放課後等デイサービス事業所が行う -> [割合乗算 { 分子 = 90, 分母 = 100 }]
| 共生型でない -> [])
++ (match 条件.生活相談員配置等加算 with
| 生活相談員配置等あり -> [単位加算 { 単位 = 単位数(13) }]
| 生活相談員配置等なし -> [])
++ (match 条件.中山間地域等に居住する者へのサービス提供加算 with
| 中山間地域居住あり -> [割合加算 { 分子 = 5, 分母 = 100 }]
| 中山間地域居住なし -> [])
++ (match 条件.入浴介助加算 with
| 入浴介助加算Ⅰ -> [単位加算 { 単位 = 単位数(40) }]
| 入浴介助加算Ⅱ -> [単位加算 { 単位 = 単位数(55) }]
| 入浴介助加算なし -> [])
++ (match 条件.中重度者ケア体制加算 with
| 中重度者ケア体制あり -> [単位加算 { 単位 = 単位数(45) }]
| 中重度者ケア体制なし -> [])
++ (match 条件.生活機能向上連携加算 with
| 生活機能向上連携加算Ⅰ -> [単位加算 { 単位 = 単位数(100) }]
| 生活機能向上連携加算Ⅱ個別機能訓練加算なし -> [単位加算 { 単位 = 単位数(200) }]
| 生活機能向上連携加算Ⅱ個別機能訓練加算あり -> [単位加算 { 単位 = 単位数(100) }]
| 生活機能向上連携加算なし -> [])
++ (match 条件.個別機能訓練加算 with
| 個別機能訓練加算Ⅰイ -> [単位加算 { 単位 = 単位数(56) }]
| 個別機能訓練加算Ⅰロ -> [単位加算 { 単位 = 単位数(85) }]
| 個別機能訓練加算Ⅱ -> [単位加算 { 単位 = 単位数(20) }]
| 個別機能訓練加算なし -> [])
++ (match 条件.ADL維持等加算 with
| ADL維持等加算Ⅰ -> [単位加算 { 単位 = 単位数(30) }]
| ADL維持等加算Ⅱ -> [単位加算 { 単位 = 単位数(60) }]
| ADL維持等加算Ⅲ -> [単位加算 { 単位 = 単位数(3) }]
| ADL維持等加算なし -> [])
++ (match 条件.認知症加算 with
| 認知症加算あり -> [単位加算 { 単位 = 単位数(60) }]
| 認知症加算なし -> [])
++ (match 条件.若年性認知症利用者受入加算 with
| 若年性認知症受入あり -> [単位加算 { 単位 = 単位数(60) }]
| 若年性認知症受入なし -> [])
++ (match 条件.栄養アセスメント加算 with
| 栄養アセスメントあり -> [単位加算 { 単位 = 単位数(50) }]
| 栄養アセスメントなし -> [])
++ (match 条件.栄養改善加算 with
| 栄養改善あり -> [単位加算 { 単位 = 単位数(200) }]
| 栄養改善なし -> [])
++ (match 条件.口腔栄養スクリーニング加算 with
| 口腔栄養スクリーニング加算Ⅰ -> [単位加算 { 単位 = 単位数(20) }]
| 口腔栄養スクリーニング加算Ⅱ -> [単位加算 { 単位 = 単位数(5) }]
| 口腔栄養スクリーニングなし -> [])
++ (match 条件.口腔機能向上加算 with
| 口腔機能向上加算Ⅰ -> [単位加算 { 単位 = 単位数(150) }]
| 口腔機能向上加算Ⅱ -> [単位加算 { 単位 = 単位数(160) }]
| 口腔機能向上加算なし -> [])
++ (match 条件.科学的介護推進体制加算 with
| 科学的介護推進体制あり -> [単位加算 { 単位 = 単位数(40) }]
| 科学的介護推進体制なし -> [])
++ (match 条件.同一建物からの利用 with
| 同一建物から利用する -> [単位減算 { 単位 = 単位数(94) }]
| 同一建物から利用しない -> [])
++ (match 条件.送迎 with
| 片道の送迎を行わない -> [単位減算 { 単位 = 単位数(47) }]
| 両道の送迎を行わない -> [単位減算 { 単位 = 単位数(94) }]
| 送迎を行う -> [])
behavior 単位数を求める :
(規模: 事業所の規模, 所要時間の区分: 所要時間の区分, 要介護度: 要介護度, 条件: 算定条件) -> 単位数
let 単位数を求める (規模, 所要時間の区分, 要介護度, 条件) =
記号を順に適用する(基本部分の単位数を求める(規模, 所要時間の区分, 要介護度), 注の記号を並べる(条件))
// ニ サービス提供体制強化加算(Ⅰ)1回につき 22単位を加算
// (Ⅱ)1回につき 18単位を加算
// (Ⅲ)1回につき 6単位を加算
let サービス提供体制強化加算Ⅰ = 単位数(22)
let サービス提供体制強化加算Ⅱ = 単位数(18)
let サービス提供体制強化加算Ⅲ = 単位数(6)
// ホ 介護職員処遇改善加算(Ⅰ)1月につき +所定単位×59/1000
// (Ⅱ) +所定単位×43/1000
// (Ⅲ) +所定単位×23/1000
// 注 所定単位は、イからニまでにより算定した単位数の合計
data 介護職員処遇改善加算 = 処遇改善加算Ⅰ | 処遇改善加算Ⅱ | 処遇改善加算Ⅲ | 処遇改善加算なし
// ヘ 介護職員等特定処遇改善加算(Ⅰ)1月につき +所定単位×12/1000
// (Ⅱ) +所定単位×10/1000
// 注 所定単位は、イからニまでにより算定した単位数の合計
data 介護職員等特定処遇改善加算 = 特定処遇改善加算Ⅰ | 特定処遇改善加算Ⅱ | 特定処遇改善加算なし
behavior 月の所定単位数を求める : (イからニまでの単位数: List<単位数>) -> 単位数
constructs 単位数
let 月の所定単位数を求める (イからニまでの単位数) =
単位数(List.sum(List.map(u -> u.value, イからニまでの単位数)))
behavior 処遇改善加算の単位数を求める : (所定単位数: 単位数, 区分: 介護職員処遇改善加算) -> 単位数
constructs 単位数, 割合乗算
let 処遇改善加算の単位数を求める (所定単位数, 区分) =
match 区分 with
| 処遇改善加算Ⅰ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 59, 分母 = 1000 })
| 処遇改善加算Ⅱ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 43, 分母 = 1000 })
| 処遇改善加算Ⅲ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 23, 分母 = 1000 })
| 処遇改善加算なし -> 単位数(0)
behavior 特定処遇改善加算の単位数を求める : (所定単位数: 単位数, 区分: 介護職員等特定処遇改善加算) -> 単位数
constructs 単位数, 割合乗算
let 特定処遇改善加算の単位数を求める (所定単位数, 区分) =
match 区分 with
| 特定処遇改善加算Ⅰ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 12, 分母 = 1000 })
| 特定処遇改善加算Ⅱ -> 記号を適用する(所定単位数, 割合乗算 { 分子 = 10, 分母 = 1000 })
| 特定処遇改善加算なし -> 単位数(0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment