🩺看護師が医療現場で使う計算ツールの開発に挑戦してみた #1
💡 はじめに
現役看護師として働きながら、Next.js × TypeScript × Tailwind CSS を学習し、
そのアウトプットとして「看護師向け計算ツールアプリ」の開発に挑戦しています。
このツールは、投薬量・点滴速度・体液バランス・栄養計算など医療現場でよく使う計算をひとまとめにした Web アプリであり、現場での“使いやすさ”と、開発者としての“型安全性・再利用性”の両立を目指しています。
⚙️ 使用技術
- Next.js 15(App Router)
- TypeScript
- Tailwind CSS
- PWA対応(オフライン動作)
📈 これまでの進捗
- 投薬・点滴・栄養など主要計算機能の実装
- 履歴データの保存・表示
- PWA対応によるオフライン化
- 型ガードによる安全な履歴再利用
🎯 今回のテーマ
電解質補正機能(Na/K)を分割して、タブ切替で操作できるようにする
以前の実装では Na補正・K補正を同じファイル内に書いており、
ロジックが混在して可読性が低下していました。
今回はこの課題を整理し、機能分割+タブ切替UI に改善します。
⚙️ 背景 ― 電解質補正の課題
以前の実装では以下のような問題がありました。
- コードが長く、可読性が低下
- Na/K のロジックが混在して修正が困難
- UI上でもどちらの計算かわかりにくい
💡 改善方針
機能ごとに責務を分け、フォルダ構成を以下のように整理しました。
components/
└─ calculators/
├─ ElectrolyteCorrectionCalculator.tsx
├─ NaCorrectionForm.tsx
└─ KCorrectionForm.tsx
- NaCorrectionForm.tsx:Na補正(ナトリウム)
- KCorrectionForm.tsx:K補正(カリウム)
- ElectrolyteCorrectionCalculator.tsx:親コンポーネント(タブで切替)
🧩 実装のポイント
🧠 タブ切替コンポーネント
const [tab, setTab] = useState<"na" | "k">("na");
<div className="flex space-x-4 mb-4">
<button
className={`px-4 py-2 rounded ${
tab === "na" ? "bg-cyan-600 text-white" : "bg-gray-200"
}`}
onClick={() => setTab("na")}
>
Na補正
</button>
<button
className={`px-4 py-2 rounded ${
tab === "k" ? "bg-cyan-600 text-white" : "bg-gray-200"
}`}
onClick={() => setTab("k")}
>
K補正
</button>
</div>
{tab === "na" && <NaCorrectionForm />}
{tab === "k" && <KCorrectionForm />}
useState で現在のタブを管理し、
tab === "na" のときはナトリウム、"k" のときはカリウム計算を表示します。
📊 Na補正(ナトリウム)計算式
const correctedNa = measuredNa + 0.016 * (glucoseLevel - 100);
補正Na = 測定Na + 0.016 × (血糖値 - 100)
→ 「Katzの式」を採用しています。
TailwindでUIを整え、結果は ResultBox コンポーネントで表示。
saveHistory() を共通呼び出しして履歴にも保存します。
🧮 K補正(カリウム)計算式
const correctedK = measuredK + 0.6 * (pH - 7.4);
補正K = 実測K + 0.6 × (pH - 7.4)
pHが低下すると、細胞外へKが移動しやすくなるため補正が必要です。
こちらも saveHistory() を共通化して再利用しました。
🎨 UIの完成イメージ
- ボタンで「Na補正」「K補正」を切替
- 入力フォームのみ切り替わり、画面遷移は不要
- 計算結果は共通 ResultBox で表示
小さなUI改善が、現場での操作体験を大きく変える。
🧠 学びと気づき
- Reactでは「1機能1責務」にすると保守性が大幅に上がる
- 親コンポーネントで状態を持ち、子を切り替える設計はシンプルで強い
- 機能を分けると、今後の追加(例:Ca補正)にも柔軟に対応できる
🚀 次回予告
次回は ボタンレイアウトと履歴UIの改善 に取り組みます。
より「現場で使えるアプリ」らしいデザインへと進化させていきます。
🩺 現場で働く看護師だからこそ見える課題を、
React × TypeScript で“ツール”として形にしていく試み。
引き続きシリーズでお届けします。
Discussion