Home / カスタマイズ・修正ガイド

カスタマイズ・修正ガイド

会計ロジック・レセプト・検査基準値の間違いを見つけて直す方法

このガイドについて

重要な前提

VetCare Proの会計機能・レセプト機能・検査基準値等は、動物病院の実務経験がない公務員獣医が、 素人が推測で実装したものです。以下のような問題がある可能性があります:

  • 消費税の端数処理方法が実際の慣行と異なる
  • 保険適用時の計算ロジック(負担率の適用方法、免責金額の扱い等)が不正確
  • レセプトの様式・記載項目が実際の動物保険のレセプトと合致しない
  • 検査基準値(血液検査の正常範囲等)が動物種・年齢に合っていない
  • 薬品の用法用量・単価が実態と異なる

このガイドは、これらの問題をご自身で見つけて修正する方法を解説します。

PHPの基本的な知識があれば、ほとんどの修正は可能です。PHPの経験がない方でも、 このガイドに沿って進めれば、基本的な修正作業ができるように構成しています。

ファイル構造の理解

修正する前に、プロジェクトのファイル構造を理解しましょう。修正が必要なファイルがどこにあるかが分かります。

VetCare-Pro-ver-3/ +-- pages/ # 各画面のPHPファイル | +-- invoice_form.php # <-- 会計フォーム(計算ロジック) | +-- invoice_print.php # <-- 請求書・領収書の印刷 | +-- invoices.php # <-- 請求書一覧 | +-- insurance_claim_form.php # <-- レセプト作成フォーム | +-- insurance_claims.php # <-- レセプト一覧 | +-- insurance_export.php # <-- レセプトCSVエクスポート | +-- lab_results.php # <-- 検査結果表示(基準値判定) | +-- medical_record.php # カルテ画面 | +-- patient_detail.php # 患者詳細画面 | +-- settings.php # 設定画面 | +-- ... +-- api/ # API ファイル | +-- insurance_policies.php # <-- 保険情報API +-- includes/ # 共通ファイル | +-- helpers.php # <-- 共通関数(生成関数等) +-- migrations/ # DBマイグレーション | +-- 001_create_tables.php # <-- テーブル定義(基準値のデフォルト) | +-- 002_seed_data.php # <-- サンプルデータ(薬品・検査マスタ) +-- data/ # データベースファイル | +-- vetcare.db # SQLiteデータベース(本体) +-- config.php # システム設定

会計・計算ロジックの修正

修正が必要な可能性が高い箇所

会計機能は、動物病院の会計実務を知らないまま作られています。以下の問題がある可能性が高いです。

問題1:消費税の端数処理

対象ファイル:pages/invoice_form.php 74行目付近
現在の実装:消費税を round()(四捨五入)で計算しています。

// 現在のコード(invoice_form.php 74行目付近)
$tax = round($subtotal * ($tax_rate / 100));  // 四捨五入

潜在的な問題:動物病院の会計では切り捨てが一般的かもしれません(人間の医療では切り捨てが標準)。 ここがどうあるべきかは、実際の動物病院の会計実務に基づいて判断してください。

// 修正例1:切り捨てに変更
$tax = floor($subtotal * ($tax_rate / 100));  // 切り捨て

// 修正例2:切り上げに変更
$tax = ceil($subtotal * ($tax_rate / 100));   // 切り上げ

// 修正例3:1円未満を四捨五入(現状のまま)
$tax = round($subtotal * ($tax_rate / 100));  // 四捨五入
修正のヒント: 同様の消費税計算は 45行目の明細行計算$amt = round($qty * $price);)にもあります。 行単位の端数処理と合計後の端数処理が一貫しているか確認してください。

問題2:保険適用時の計算

対象ファイル:pages/invoice_form.php 75-77行目
現在の実装:合計 = 小計 + 消費税 - 割引 - 保険負担

// 現在のコード
$discount = (int)($_POST['discount'] ?? 0);
$insurance = (int)($_POST['insurance_covered'] ?? 0);
$total = $subtotal + $tax - $discount - $insurance;

潜在的な問題:

  • 保険が負担するのは「税込額に対する割合」なのか「税抜額に対する割合」なのか不明瞭
  • 保険の免責金額(deductible)がこの計算に含まれていない
  • 割引を適用するタイミング(保険計算前 or 後)が正しいか不明
  • 動物保険の実際の計算方法(窓口精算 vs 後日請求)によって計算式が異なる
// 修正例:保険計算をより厳密にする場合
$subtotal = ...; // 小計(税抜)
$tax = floor($subtotal * ($tax_rate / 100));
$total_with_tax = $subtotal + $tax;

// 割引は税込額から
$after_discount = $total_with_tax - $discount;

// 保険負担額 = (割引後の額 - 免責金額) x 保険負担率
$deductible = (int)($_POST['deductible'] ?? 0);
$insurance_base = max(0, $after_discount - $deductible);
$insurance_covered = floor($insurance_base * $coverage_rate / 100);

// 飼い主負担額
$owner_pays = $after_discount - $insurance_covered;
重要:動物保険の計算方法は保険会社ごとに異なります。 アニコム、アイペット等の各保険会社の公式資料を確認した上で、正確な計算式に修正してください。 上記の修正例はあくまで一般的な考え方の例示です。

問題3:明細行の金額計算

対象ファイル:pages/invoice_form.php 43-46行目

// 現在のコード
$name  = $_POST['item_name'][$i];
$qty   = (float)$_POST['item_qty'][$i];
$price = (int)$_POST['item_price'][$i];
$amt   = round($qty * $price);  // 行合計を四捨五入

確認ポイント:数量が小数(例:0.5錠)の場合、行合計の端数処理が正しいか。 また、行単位で税込計算するのか、合計後に税込計算するのかも確認が必要です。

レセプト機能の修正

レセプト機能の重大な限界

レセプト機能は完全にAIの推測で作られており、実際の動物保険のレセプト様式に一切準拠していません。 「レセプトっぽい見た目のフォーム」という認識でお使いください。実用化するには大幅な修正が必要です。

レセプト計算の修正箇所

対象ファイル:pages/insurance_claim_form.php 15-18行目

// 現在のコード(保険負担額の計算)
$totalFee      = (int)$_POST['total_medical_fee'];
$covRate       = $policy ? $policy['coverage_rate'] : 50;
$coveredAmount = round($totalFee * $covRate / 100);
$ownerCopay    = $totalFee - $coveredAmount;

問題点:

  • 保険負担率のデフォルトが「50%」になっているが、実際の保険プランによって70%、50%、30%等がある
  • $_POST['deductible'](免責金額)がレセプト計算に反映されていない(データは保存されるが計算に使われない)
  • 保険金の支払限度額(1日あたり/1回あたり/年間上限)の概念がない
  • 保険対象外の項目(ワクチン、避妊手術等)を除外するロジックがない

レセプトの様式修正

対象ファイル:pages/insurance_claims.php(レセプト一覧表示)
実際のレセプト様式に準拠させるには、以下の対応が必要です:

  • 使用している保険会社のレセプト様式(PDF)を入手する
  • 様式に合わせたHTML/CSSテンプレートを作成する
  • 各保険会社が求める記載項目(診療行為コード、点数テーブル等)を調査・実装する
  • 印刷レイアウトを保険会社の用紙サイズに合わせる
現実的なアプローチ: 動物保険のレセプトを本格的に対応させるのは非常に大きな作業です。 まずは自院で使用している保険会社1社のレセプト様式だけに対応することをおすすめします。 保険会社によってはオンラインでの電子申請が可能な場合もあり、レセプト印刷が不要なこともあります。

検査基準値の修正

検査結果の「正常/異常」判定に使われる基準値は、サンプルデータとして入っているものです。 動物種・年齢・検査機器によって基準値は大きく異なります。必ず自院の検査機器メーカーの基準値に修正してください。

方法1:管理画面から修正(推奨)

  1. 管理者でログイン
  2. メニューから「検査マスタ」ページへ移動
  3. 各検査項目の「基準値(下限)」「基準値(上限)」を修正
  4. 動物種別に基準値を変えたい場合は、検査項目名に動物種を含める(例:「BUN(犬)」「BUN(猫)」)

方法2:データベースを直接修正

大量に修正する場合は、SQLiteデータベースを直接編集する方が効率的です。

# SQLite データベースに接続
sqlite3 data/vetcare.db

-- 検査マスタの一覧を確認
SELECT id, test_name, category, reference_low, reference_high, unit
FROM test_master
ORDER BY category, test_name;

-- 基準値の更新例(BUNの基準値を変更)
UPDATE test_master
SET reference_low = 10, reference_high = 30
WHERE test_name = 'BUN';

-- 一括修正用のCSVからインポート
-- (先にCSVを準備してから)
.mode csv
.import updated_test_master.csv test_master_temp

方法3:サンプルデータ自体を修正

対象ファイル:migrations/002_seed_data.php
セットアップウィザードでサンプルデータを投入する際のデータを修正します。 新規インストール時に最初から正しい基準値が入るようになります。

注意:検査基準値は検査機器のメーカー・機種によっても異なります。 同じ検査項目でも使用する機器が違えば基準値が変わります。 自院で使用している検査機器の添付文書やメーカー資料を確認してください。

異常判定ロジックの修正

検査結果の異常判定(高値↑/低値↓の表示)は、検査結果登録時に自動判定されます。 判定ロジックを確認・修正する場所:

// 検査結果の異常判定(lab_results関連のページで使用)
// 基本的な判定ロジック:
if ($result_value < $reference_low) {
    $is_abnormal = 1;  // 低値(↓で表示)
} elseif ($result_value > $reference_high) {
    $is_abnormal = 1;  // 高値(↑で表示)
} else {
    $is_abnormal = 0;  // 正常範囲内
}

// 問題点: 動物種・年齢・性別による基準値の違いが考慮されていない
// 改善案: test_master に species カラムを追加し、動物種別に基準値を設定

薬品マスタの修正

サンプルの薬品マスタに入っている薬品名・用量・単価はAIが推測で入力したものです。 必ず実際の薬品情報に基づいて修正してください。

管理画面での修正

  1. 管理者でログイン → メニュー「薬品マスタ
  2. 各薬品の 薬品名一般名単位単価 を確認・修正
  3. 不要な薬品は「無効化」(一覧から非表示になります)
  4. 新しい薬品は「新規登録」ボタンから追加

確認すべきポイント

  • 薬品名:商品名と一般名の両方が正しいか
  • 単位:錠、mL、mg、本、包 など、実際に使用する単位と合っているか
  • 単価:院内の薬価テーブルと一致しているか
  • カテゴリ:分類が自院の管理方法と合っているか
  • 最小在庫数:在庫アラートの閾値が適切か
警告:薬品の用法用量に関しては、必ず獣医師が確認してください。 AIが推測で設定した用量情報をそのまま使用すると、患畜に重大な健康被害を与える可能性があります。

印刷テンプレートの修正

請求書・領収書の印刷レイアウト、記載項目を自院に合わせてカスタマイズする方法です。

請求書・領収書のレイアウト修正

対象ファイル:pages/invoice_print.php

  • 病院情報の表示位置・フォーマットを変更 → HTMLの該当部分を編集
  • 明細の表示項目(カテゴリ表示、税率表示等)を追加・削除
  • 印刷用CSSのスタイル@media print セクション)を調整
  • 用紙サイズを変更(A4、A5、レシート用紙等)
  • ロゴ・角印の位置を調整(設定画面でアップロードしたものが自動反映されます)
/* 印刷レイアウトの CSS 修正例 */
@media print {
  /* 用紙サイズの変更(A5に変更する場合) */
  @page {
    size: A5;
    margin: 10mm;
  }

  /* フォントサイズの調整 */
  body {
    font-size: 11px;
  }
}

修正の一般的なヒント

修正作業の手順

  1. バックアップを取る - 修正前に必ず data/vetcare.db と修正するPHPファイルのコピーを保存
  2. テスト環境で修正 - 本番環境の前にXAMPP等のローカル環境で動作確認
  3. 小さく修正 - 一度に大きな変更をせず、少しずつ修正・テストを繰り返す
  4. ブラウザのキャッシュをクリア - CSS/JSの変更が反映されない場合はキャッシュを削除(Ctrl+Shift+R)
  5. エラーが出たら - config.phpDEBUG_MODEtrue にしてエラーメッセージを確認

PHPファイルの編集方法

初心者の方
  • Visual Studio Code(無料)をインストール
  • PHPファイルをVS Codeで開く
  • Ctrl+G で行番号を指定してジャンプ
  • Ctrl+F でキーワード検索
  • 修正後にファイルを保存(Ctrl+S
経験者の方
  • お好きなエディタ/IDEで編集
  • Gitでバージョン管理しながら修正
  • git diff で変更点を確認
  • php -l ファイル名.php で構文チェック
  • 修正内容をPull Requestで共有いただけると幸いです

よくある修正パターン

修正したいこと対象ファイル検索キーワード
消費税の端数処理pages/invoice_form.phpround($subtotal
保険負担額の計算pages/insurance_claim_form.phpcoverage_rate
合計金額の計算式pages/invoice_form.php$total =
検査の異常判定pages/lab_results.phpis_abnormal
印刷レイアウトpages/invoice_print.php@media print
税率のデフォルト値pages/settings.phptax_rate
予約枠の設定pages/settings.phpappointment_interval
薬品在庫の減算pages/invoice_form.phpstock_quantity

修正をプロジェクトに貢献する

修正した内容をGitHubを通じてプロジェクトにフィードバックしていただけると、 他のユーザーの方にも恩恵があります。

Pull Requestの送り方(初心者向け)

  1. GitHubアカウントを作成(無料)
  2. リポジトリページで「Fork」ボタンをクリック
  3. 自分のForkしたリポジトリでファイルを編集(GitHub上で直接編集可能)
  4. 「Pull Request」を作成して、どこをなぜ修正したかを説明
特に歓迎する修正:
  • 消費税計算の正確な実装(動物病院の実務に基づくもの)
  • レセプト様式の修正(実際の保険会社の様式に基づくもの)
  • 検査基準値の正確なデータ(動物種別・検査機器別)
  • 薬品マスタの正確なデータ
  • 業務フローの改善提案(動物病院経験者からの視点)