Monthly Archives: May 2008

薬剤師の資格確認のための検索システム

薬剤師の氏名を検索できるシステムがいつの間にかできていたようです。

薬剤師の資格確認のための検索システム

今年の4月1日から公開されたようです。

自分の名前を検索してみたところ、残念ながら同姓同名はいませんでしたw。あ、もちろん自分の名前はありましたよ!

さよならテレビ

“iPod課金”の対象機器や上乗せ額、明日「文化庁案」提示へ

こんな条件なら、もうダビング10どころか、テレビ自体いらないんで。このままアナログ停波と同時に、終了しちゃってくださいな。

以前、iPodの宣伝にこんなものがあった。

Hello, iPod. Goodbye, MD.

今の時代は

Hello, YouTube. Goodbye, TV.

これでいいんじゃなかろうか?

日々雑感: 2008/05/07

1. iPhoneのアプリ作成で遊んでいる。

これは楽しい。
まだよくわからないことがたくさんあるけれど、サンプルプログラムを参照しながら、少しずつ作る。

もうめちゃめちゃなコードだけれども、いったんできあがったらリファクタリングしまくればいいだけの話だと思う。
実機で動かしたらどれぐらいの速度になるのかが非常に気になる。

とにかくこれは楽しい。
もう少ししたら、画面だけでも公開しようかな。
それとも本当に宮崎(意味不明)に出すw?

日々雑感 2008/05/05

1. SQLiteで遊んでいる。

コマンドラインからでも気軽に試せるし、rubyで少しスクリプトを書いてもよい。
2万件近くレコードがあるのに、一瞬にして結果を表示してくれるのがおもしろくて仕方がない。

図書カードが確か2,500円分あったので、今日はSQLの本を一冊購入してこようと思う。

csvファイルから読み込むには、コマンドラインから

sqlite3 -separator , test.db ".import test.csv test"

なんて書いてもよいのだけれども、自分のつたない知識では主キーを設定できなかったので、rubyで一項目ずつ加えていくことにした。

ただし、そのまま一項目ずつ加えると劇的に遅いので、トランザクションを使う。

db.transaction
begin
  db.execute "insert test (hoge, piyo) values(?, ?)", hoge, piyo
  db.commit
rescue
  db.rollback
end

こんな風に使うらしい。

トランザクションを明示的にしない場合には、裏で一項目追加されるごとにトランザクションをおこない(この書き方があっているかどうかは知らない)、commitされるそうだ。
それで、遅くなる理由が納得できた。

事実、トランザクションを使うと何倍も早く追加ができた。

薬価基準収載コード(厚生労働省コード)を使って同一成分規格の薬を検索する

薬価基準収載コードは

医薬品に付けられている番号(コード)の意味

というサイトを参照すると

薬価基準収載医薬品に付けられる12桁(アルファベット1字を含む)の数字です。

医薬品の成分、剤形、銘柄等を表しています。

例)アスピリン  1 1 4 3 0 0 1 X
 

            1    2  3 4  5 6

日本標準商品分類コードの87を除いた数字です。薬効を表します。

成分別の番号です。(内服薬:001-399、注射薬:400-699、外用薬:700-999)

剤形を表す記号です。(内服薬の場合、A-E:散剤、F-L:錠剤、M-P:カプセル、Q-S:液剤、T,X:その他)

1から3によって分類された同一分類内での、規格単位番号です。

同一規格内での、銘柄別に付けられた番号です。

誤記入を検索するための番号です。

そこで8桁まで、たとえば”2171022F”というコードで検索してみよう。すると結果はたとえば以下のようになる。

2171022F1037|アムロジン錠 2.5 2.5 mg
2171022F1045|アムロジン錠 2.5 mg
2171022F1029|ノルバスク錠 2.5 mg
2171022F2033|アムロジン錠 5 5 mg
2171022F2041|アムロジン錠 5 mg
2171022F2025|ノルバスク錠 5 mg
2171022F3021|アムロジンOD錠 2.5 mg
2171022F4028|アムロジンOD錠 5 mg

ここで9桁目に注目すると規格によって数字が違うことがわかる。

すなわち同一成分、同一規格のものを検索したい場合には、薬価基準収載コードで9桁目まで同一なものを検索すればよいということになる。

P.S.
それにしても5 mgと書くべきところを、全角しかも単位と数字の間にスペースを入れない5mgと書くのはいい加減にやめて欲しい。

とにかく進んでいない

厚生労働省のサイトを見ても、そこで提供されるファイルを見ても、本当にITリテラシ(ITという言葉は好きではないのだけれど)が足りていないなぁと感じます。

残念なことに、医療関係は特に足りていない。

前にも書いたかもしれないけれども、厚生労働省のサイトはRSSに対応していないし、まずWebサイト自体が情報が多すぎてどこを見たらいいのかさっぱりわからない。

伝わらないプレゼント一緒ですね。一枚に表示される情報が多すぎるという。

提供されるデータベースはXML化されていないし、Excelのファイルで提供するってどういう神経しているんだろう?せめてcsvで提供しなさいと思う。

一般の人がITリテラシをどれほど持つ必要があるかについては何とも言えないところだけれど、少なくとも情報を提供する側はちゃんと持ってほしい。

まあ、逆に辺にリテラシがあると手段と目的が逆転してこの技術を使いたいからという方向に行きがちなんだけれども。。。

そうそう、医療関係の人がソフトを作るとなんでああ、香港並みの色遣いになるんでしょうかね?

ボタンもテキストボックスも何もかもが香港並みの色使い。
ダメなユーザインタフェイス講座

boost 1.35でUniversal Binaryを作成する方法

Building Boost as Universal Binary on Mac OS X
Boost総合スレ part6
によると、

bjam --toolset=darwin architecture=combined address-model=32,64 threading=multi link=static,shared runtime_link=static,shared release debug stage

でも、Core Duoな我がMacBookでは64-bitのコンパイルが通らないのか?(そんなことはないと思うんだけどなぁ)address-model=32,64を入れると、エラーが出てコンパイルされませんでした。

デバッグができないのはともかくコンパイルができないのはおかしいと思って、address-model=64だけだとコンパイルできます。どうやらエラーメッセージを読んでみると、32ビットと64ビットで同じファイル名でかぶるみたいなエラーでした。

そこで、address-modelを32と64でコンパイルしたものをそれぞれ用意し、Universal Binaryを作成するためのコマンドlipoでくっつけることにしました。

lipoの使い方は単純で

lipo -create 32ビットのファイル 64ビットのファイル -output くっつけた後のファイル

とやるだけです。

一つ一つやると面倒なので、rubyでスクリプトを書きました。

もう一つ問題があります。64ビットのバイナリを作成するとき、iostreamやらmpiやらは依存するライブラリ(zlibとか)の64ビット版が10.4のSDKには含まれていません。なので、途中でコンパイルエラーが起きます。これはbjamのオプションにさらにmacosx-version=10.5と指定することで解決します(でも、これで作ったバイナリはTigerで使えるのか謎です)。

まとめ!

bjam --toolset=darwin macosx-version=10.5 architecture=combined address-model=32 threading=multi link=static,shared runtime_link=static,shared release debug stage

bjam --toolset=darwin macosx-version=10.5 architecture=combined address-model=64 threading=multi link=static,shared runtime_link=static,shared release debug stage

で各々32ビットと64ビットのバイナリを作った後にlipoでくっつける。

ということになりました。