薬剤師のプログラミング備忘録

変人薬剤師の独り言

ランダムに出題をするプログラム

忙しさの合間を縫ってdatabaseの方を充実させるはずが、国家試験を見ているうちに出題システムを作る方が楽しくなってしまっていました。

 

正誤の照合が上手くいかないので、いろいろとテストしていますが、自動的に問題を出題させるのはそれほど難しくありません。

まず、

<form action="" method="post"

<input type='submit' value='出題' />

</form>

で出題ボタン作ります。クリック後の転送先は同じページにしています。

特に理由もありませんが、基本的に私は同一ページで全ての動作を終わらせるようにしています。

 

この際に、inputにhiddenを加えて、何らかのpostを組み込みます。

このpostが存在することによって、出題をクリックしたことを認識して、問題をランダムに表示させています。postが無ければ問題は表示されません=初回にページを開いた際には問題は表示されません。

 

問題は、databaseから取得しています。

先に作成した自動出題プログラムとは別に、問題自体をまるごとdatabaseに登録しています。(前回のものは、医薬品名を登録することによって、出題形式、つまり文章そのものを自動で作成していました)

まず、特定の数だけ数字を並べて、その後ランダムに数字を入れ替えします。

//1から5までの数字を並べる

$array_num = range(1,5);

//前述の数字をランダムに並び替える

$s_ar_num = shuffle($array_num);

擬似的に非重複性の乱数を生成することによって、"11245"というような数字の重複を防ぎます。

これをforループで指定回数databaseから問題文を取得します。

 for ($i = 0; $i < 5; $i++){

mysql_queryなど~

$question_data;

echo $question_data['question']."<br>";

}

という感じです。

その後、inputのsubmitで回答を押すと正誤判定ができるようにしていますが、少し行き詰まっています。

同一問題を表示しようとすると、再度ランダムに表示する判定が起きてしまうのは回避できましたが、その問題自体をdatabaseと照合し、問題の正誤判定を行わせるのが目標です。

 

薬剤師とはミスがあってはならないのでトライ・アンド・エラーはなかなかできない仕事ですが、プログラミングは常に試行錯誤と失敗の連続です。

あくまで趣味の範疇なので仕事と異なるという前提ですが、何度でも失敗できるということは精神的なストレスが少なくてよいですね。

 

テスト中:問題自動生成プログラム

問題の自動生成プログラム

お久しぶりです。

Twitterの方ではよく呟いていましたが、blogは2,3ヶ月近く更新していませんでした。

何分、仕事が忙しく…というのは言い訳ですが。

 

さて、今日は薬剤師国家試験の本番ですね。

自分にもいろいろな思い出がありますが、それは置いておいて。

 

ランダムで文章を表示するコードを書こうと思い立ち作ってみました。

データベースに登録された医薬品名からランダムに簡単な(受容体正誤の暇つぶしレベルの)薬理機序の問題を表示します。

医薬品ごとに種別をタグ付けし、送信したデータを照合できるようにすると、暇つぶしぐらいにはなるのかなと思います。

問題は簡単なものをいくつかしか登録していません。

いろいろとゼロから作るのは楽しいですね。

 

テスト中:問題自動生成プログラム

web医薬品マスタの更新 12/10

ご助言いただいたものを参考に、医薬品マスタの検索部分を修正しました。

1,半角英数カナを全角に変換するようにしました。

"0.5%"で検索しても、"0.5%"で検索されるようになりました。

 

2,正規表現使用時の禁止文字の登録

%のみで検索すると正規表現の特性上、全医薬品が表示されるので、一部の文字の使用を拒否するようにしました。

 

最近、画面を見ることが多く目が痛くてなかなか作業が進みません。

今後もゆっくりと続けていこうと思います。

 

Drug Master

 

--------

傷病名検索

Disease Code test

医薬品検索

Drug search (autocomplete test)

 

--------

webからの新規登録は募集していませんが、処方例データベースのβtest中です。
現在、テストアカウントで一部機能が利用可能です。(PC推奨、スマホ非対応)

メールアドレス:test

パスワード:test

登録型処方例データベース

Pharmana

 

f:id:MC753:20171210235629g:plain

f:id:MC753:20171210235636g:plain

 

web医薬品マスタ作りました

いろいろとデータが足りず、メーカー名や一般名が空欄の場所もありますが、とりあえず作ってみました。

このままCYPも登録してみようかと思います。

 

薬価や毒劇物分類、一般名などを検索できます。

そのうち液剤や散剤の分類も追加する予定です。

Drug Master

 

--------

傷病名検索

Disease Code test

医薬品検索

Drug search (autocomplete test)

 

--------

webからの新規登録は募集していませんが、処方例データベースのβtest中です。
現在、テストアカウントで一部機能が利用可能です。(PC推奨、スマホ非対応)

メールアドレス:test

パスワード:test

登録型処方例データベース

Pharmana

 

f:id:MC753:20171204214030g:plain

CYPの話

CYPに関する内容をTweetしたところ、かなりの反響がありました。

 

 自分はソフトウェアよりも「『誰でも関わることのできる』webアプリケーション」を開発することを重きに置いていますので、ダウンロード型のコンテンツの開発は今のところ考えていません。(ただ、誰でも接続できるということは、工夫しないとサーバーレンタル代やらの管理費用ぐらいの利益を得ることも難しいということでして、webまたはスマートフォンのアプリケーション開発も視野には入れています。)

 

 本来は、これらは国営または医療法人やある程度の組織によってデータベース化されるべきものであり、一個人がどうこうするような問題とも思います。現在日本で使用されている医薬品数は商品名で約20,000品目。これらについて一人の人間が全ての添付文書を閲覧し、確認し、代謝経路をデータベース化するというのは不可能に近い所業です。(可能であれば、薬剤師を総動員して添付文書を全て書き直した方が早いのかもしれません。)

 しかし、日本には添付文書というものがあります。公的なデータがあるのであれば、それをしっかりと一覧に示せばよいのですが、この添付文書も表記ゆれが多く、あまり当てにならない部分があるのが現状です。今回作成しているCYPに関するデータは外国から取得しています。ネット上または書籍上では代表的な医薬品や、CYPを強く阻害・誘導する医薬品についてはところどころで記載されていますが、一覧については記載されているところは見受けられませんでした。信憑性については論文等を根拠にしているため、各々の判断に任せるところがありますが。

根拠URL:SuperCYP

 本来であれば電子カルテの入力段階でCYPの影響は表示すべきですし、薬剤師が管理する薬局であるならば、薬歴システムに組み込むべき内容でもあります。

 配合禁忌、併用禁忌についてはソフトウェア開発会社もしくは薬剤部がデータ登録してあれば表示されるであろうことではありますが、CYPの相互作用については明らかに禁忌であるもの以外はほとんど記載がありません。これらは薬剤師の脳内での計算に頼っているところがありますし、添付文書の表記が統一されていないこと(表記ゆれ)が多いのと、CYPの阻害・誘導についての「強さ」の表記が具体的でないことも原因があります。

※薬物相互作用の強さについてはPISCSという概念があります。相互作用の強さをFDA基準の"strong","moderate","weak"に分けることを基本とし、それらを臨床試験に基いて式で表し位置づける概念です。学問としては薬物動態学に分類されます。

 

臨床薬物相互作用のシミュレーションによる予測

https://www.jstage.jst.go.jp/article/faruawpsj/50/7/50_664/_pdf

 

 

 例えばテオフィリンはCYP1A2が主な代謝経路ということは皆さんよくご存知かと思われますが、添付文書にはこのように記載されています。

テオフィリンの代謝にはP450の分子種のうちCYP1A2が主たる分子種として,3A4や2E1がマイナーな分子種として関与することが示唆されている. 

 もちろん、医薬品の主要代謝経路である3A4が関わることは知っていても、エタノールに代表される代謝酵素の2E1が関わるということを知っている薬剤師はどの程度居るかということです。

 しかし、それらを全ての医薬品に関して覚えることは非常に困難かと思われます。

 今や、医薬品の種類・作用機序は多岐に渡り、これらは覚えるよりも調べたほうが遥かに早い量になっています。薬剤師として、知っていることは重要ですが、如何にして早く・正しく調べるかという能力も重要になってくると思います。"正しい知識"ですら、数年ごとにアップデートされる世の中です。

 CYP3A43やCYP4F22なんかを把握している薬剤師が居るのかどうかと言われれば、多分居ないでしょう。もちろん自分自身も初めて目にしました。ただ、それを把握し、理解し、考慮してこそ、意味のある存在になれるのではないのかなと思います。ただし、これらがdatabase化し、誰でもアクセスできるようになった瞬間、薬剤師である意味は失います。医師や看護師がそれらを把握して処方を始めた瞬間に、それらは薬剤師が考慮する必要は少しずつ失われていくのかもしれません。

薬剤師の業務は"知っていること"から、"判断すること"にシフトしてきています。

薬剤師とは何なのでしょうか。そろそろ、結論が出るのかもしれません。

 

頭がうまく回らないので、今日はこの辺で。

社会保険診療報酬支払基金のマスタと厚労省の医薬品マスタが異なる件について

これが社会保険診療報酬支払基金が公表している医薬品マスタです。

f:id:MC753:20171125033308g:plain

 もう既に細々しすぎて何も見えないですが、そもそもがまずこれ、それぞれに書いてある番号や名前の意味を書いておらず、別紙参照という形です。しかも別紙がPDF…(PDF文化が嫌い)。

 というか、excelファイル形式が古くて形式保存できませんでした。ちなみに傷病名マスタはテキストファイル形式です。統一しない理由は…?

 フィルタかけるために自分で左から順番にその数字や言葉の意味するところを入力していって…。ほんと無駄です。そして製品名は書いてあるのに成分名が書いてません。先発後発は1や2と番号で記載されています。麻毒覚原向の欄も数字表記です。ソフトウェアに導入した際に1="麻薬"とすれば良いのでしょうけれども、そもそもが echo $bunrui['xxx'] (これはphp表記ですが)とすればいいのではないかとかもうなんかいろいろ、いやc言語とかだと楽なんでしょうけれども。

 問題はやはり成分名との紐付けができてないことで、「ブロプレス」はあくまで「ブロプレス」だけの表記になっています。「カンデサルタン」では検索できないので、こちらから新たに入力してやる必要があります。これを厚労省の方のマスタから一般名処方と成分名を商品名に紐付けしてやればいいのですが、そもそもが製品名の表記が異なっている部分もあります。

例)

 厚労省マスタ:アミカリック輸液

 社会保険診療報酬支払基金マスタ:アミカリック輸液 200mL

こう表記されると、データベース内では別物扱いされるので、正規表現で探して書き換える必要があります。この辺を統一しないから、院内マスタと薬局マスタで齟齬が発生するんでしょうね…。たまにエンシュアなんかでマスタおかしくなってる病院の処方箋を見たことがありますが、多分そういうことなのかもしれません。

 というか、なんでどちらのマスタも全品目全規格が全角になっているんだろう…。そういう取り決めでもあるんだろうか…。半角だとシステム誤作動起こすとか?うーん…

 今回はいろいろ思うところがあったので、ただのストレス発散記事でした。

 そのうち、HatenaBlogからwordpressに引っ越そうかとも思っています。定期的に50人/日ぐらいで来ていただいているので、嬉しい限りです。一部のツイートがバズってるのもありますが、こっそり生きてるのでそっとしておいてください。

 次回は添付文書の表記ブレについてストレスをぶちまけようと思います。

--------

傷病名検索

Disease Code test

医薬品検索

Drug search (autocomplete test)

薬価検索

Drug Code test

--------

webからの新規登録は募集していませんが、処方例データベースのβtest中です。
現在、テストアカウントで一部機能が利用可能です。(PC推奨、スマホ非対応)

メールアドレス:test

パスワード:test

処方例データベース

Pharmana

 

傷病名マスタから傷病名databaseの作成

作ってみました。あれこれ試行錯誤したところ、SQLのINSERT構文を高速化する方法を思いついたので、早めに設定できました。

この傷病名マスタは厚労省の方ではなく、レセプト請求用の社会保険診療報酬支払基金の方からお借りしたものですので、またちょっと内容が違います。

というか、医薬品マスタも厚労省と微妙に違ってたりするのですが、どういうことやらと…。

 

傷病名をサーチできるので、こんな病気あるんだーへー程度に使ってみて下さい。

処方例データベースの方では、疾患名が特定出来ている場合は処方に紐付けして入力できるようにしたいと思います。同じ要領でautocompleteも作れるので、ちょっと試してみようかなとも思っています。

--------

傷病名検索

Disease Code test

医薬品検索

Drug search (autocomplete test)

薬価検索

Drug Code test

--------

webからの新規登録は募集していませんが、処方例データベースのβtest中です。
現在、テストアカウントで一部機能が利用可能です。(PC推奨、スマホ非対応)

メールアドレス:test

パスワード:test

処方例データベース

Pharmana

 

f:id:MC753:20171123215342g:plain

f:id:MC753:20171123215352g:plain