前回の内容はこちら。
【開発日記】薬価検索アプリno.3 〜設計・画面の設計〜
開発背景などはこちら
【開発日記】薬価検索アプリno.1 〜開発概要→企画〜
##現在の進捗状況
1.必要な機能の洗い出し
2.必要な画面設計
3.データベース設計 ⬅︎今ココ
4.Railsでアプリケーションの雛形作成
5.大きな機能から順に実装
6.テストコードを書いて動作を担保する
7.リファクタリングして整理する
8.デプロイ
#DB設計
どうやって設計するのか、
なぜ、この段階で設計する必要があるのか、
ER図はどうやって書くのか、
これらは他の記事に譲りますね。
###大まかな手順
1.管理するデータ(エンティティ)の決定
2.データ属性を決定
3.エンティティ同士の関係性を決定(リレーション)
4.実際にテーブルとして定義する
#いざ、設計!
と、気合い入れてみましたが、
今回のアプリではDBを検索するだけなので、
薬価収載されている薬剤のデータさえあればOKでした。
今後の拡張機能として、お気に入り薬剤を登録できたり、過去の検索履歴が見れたり、というのはまだ先なので、今回は以下のようなテーブルを作成しようと思います。
#medicationsテーブル
今回使用するデータは公に公開されているデータを使用します。
こちらにある「医薬品マスター」を使用します。
診療報酬情報提供サービス
こちらからCSVファイルがダウンロードできます。
また、CSVのままだとなんのこっちゃわからないので、説明を見てみましょう。
データ内容に関する説明
テーブルの構造を書き出すと以下のようになりました。
使わないよね?ってカラムもありますが、
このデータは、少なくとも2年に一回は薬価改定がありますし、常に新しい医薬品も増え続けます。
逆に、販売がなくなる医薬品もあります。
その時に簡単にアップデートできるように、手をつけない形で運用してみようかと思います。
のちのアップデートも考慮して設計していきたいところです。
書き出してみるとこのようになりました。
column | type | options | 備考 |
---|---|---|---|
変更区分 change_category | integer | ||
マスター種別 master_type | string | Y:固定 | |
医薬品コード(医薬品名、規格名)pharmaceutical_code | integer | ||
漢字有効桁数 kanji_significant_digits | integer | ||
漢字名称 name | string | index | |
カナ有効桁数 kana_significant_digits | integer | ||
カナ名称 kana_name | string | ||
単位コード unit_code | integer | ||
単位漢字有効桁数 unit_significant_digits | integer | ||
単位漢字名称 unit_name | string | index | |
金額種別 price_type | integer | ||
新又は現金額 price | integer | ||
予備 spare | integer | 未使用(すべて0) | |
麻薬・毒薬・覚せい剤原料・向精神薬 n_p_s_p_drugs | integer | ||
神経破壊剤 nerve_destroyer | integer | ||
生物学的製剤 biologics | integer | ||
後発品 generic | integer | index | |
予備 spare_2 | integer | 未使用(全て0) | |
歯科特定薬剤 dental_drugs | integer | ||
造影(補助)剤 contrast_agent | integer | ||
注射容量 injection_volume | integer | ||
収載方式等識別 listing_type | integer | ||
商品名等関連product_name_relations | integer | ||
旧金額種別 old_price_type | integer | ||
旧金額 old_price | integer | ||
漢字名称変更区分 name_change_category | integer | ||
カナ名称変更区分 kana_name_change_category | integer | ||
剤形 dosage_form | integer | ||
予備 spare_3 | integer | 未使用(null) | |
変更年月日 changed_date | integer | ||
廃止年月日 abolition_date | integer | ||
薬価基準コード standard_code | string | ||
公表順序番号 order_number | integer | ||
経過措置年月日又は商品名医薬品コード使用期限 expiration_date | integer | ||
基本漢字名称 standard_name | string |
#まとめ・所感
今回は、DB設計を行いました。
今想定してる機能としてはDBを検索するだけ。なので、DBは1つで事足ります。
しかし、今後、お気に入りの登録や、検索履歴、セット処方での金額表示など、ユーザー登録が必要な機能も考えているので、
その時はER図も使って書いてみようと思います。
次回、【開発日記】薬価検索アプリno.5 〜Railsでアプリケーションの雛形作成、mySQLエラー、GitHubの設定まで〜に続きます。