概要

両親が高齢者に近づくにつれ医療費が増えたため、
医療費控除を受けるために確定申告を行う。

交通費や医療費の入力が面倒だったため、Python を用いて自動化する。
また、いつでもスマホで入力できるように、Notion データベースを利用する。

医療費の確定申告方法

医療費控除を受けるためには、専用の Excel ファイルに医療費情報を入力し、
アップロードする必要がある。

このテンプレートは以下のようなものだ。(引用: 国税庁 医療費集計フォーム) 医療費集計フォームの画像

入力したいデータは以下の4つだ。

  • 治療を受けた人
  • 医療機関名
  • 支払い金額
  • 年月日

Notion データベースの設定

データを入力するためのデータベースを Notion で作成する。 Notionデータベース

以下のような設定を行った。

  • 治療を受けた人: 家族しかいないので選択肢で選ぶ
  • 医療機関名: 文字列
  • 支払い金額: 整数
  • 年月日: 日付

Notion は現在のビューを CSV 出力することができるので、
これを Python で読み込んで、Excel に書き込む。

※医療機関名は選択肢の方が適しているが、
両親は「選択肢の追加操作」が出来ない(苦手)ため文字列で入力する。

医療機関の登録

医療機関を登録するための CSV、 hospitals.csv を作成する。

以下のようなカラムで構成されており、
薬局や医療機関の分類情報や交通費(往復)の情報を記載できる。

1
2
3
病院,区分/診療,区分/医薬品,区分/介護,区分/その他,交通費(往復)
〇〇病院,1,0,0,0,280
〇△医院,1,0,0,0,1042

hospitals.csv に登録されていない医療機関が入力された場合は、
以下のように表示され、交通費以外の情報を入力する。

1
2
3
--未登録の医療機関--
○○病院 x1
〇△医院 x1

Python での処理

ここからは Python で処理を行う。 入力は次のような CSV で受け取る。

1
2
3
日付,病院,費用,患者
2099年1月1日,〇〇病院,1420,太郎
2099年3月18日,〇△医院,1530,次郎

ここからは単純に医療費を計算し、openpyxl を用いて Excel に出力する。
テンプレートをコピーし、医療機関ごとに Excel ファイルへ書き込む。
交通費はまとめて記述するため、診療回数を数えておいて合計値のみを記載する。

実行結果例

また、以下のように長い名前の医療機関名を入力したときには、20 文字以内に直したり
半角数字を全角数字に変換したりする機能を持っている。

1
2
3
4
日付,病院,費用,患者
2099年1月1日,〇〇病院,1420,太郎
2099年3月18日,〇△医院,1530,次郎
2099年12月1日,合計の文字数が20文字を超えるようなすごく長い名前の医療機関の名前,3000,太郎

長い名前の処理

プログラム

フォルダ階層やデータファイルの名前に注意してください。

プログラムと同階層に ./hospitals.csv./iryouhi_form_v3.xlsx が必要です。
2023 年の CSV は ./2023/data2023.csv に保存してください。
./2023/2023医療費.xlsx に出力されます。

ダウンロード