[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[orca-dev:00040] Re: 病名クラス



有家@松山記念病院です。

病名クラス Disease に
ある病名がorca病名かどうかを示す orca? と、medis病名かどうかを示す medis?
というメソッドを追加します。

まず、www.medis.or.jp から byomei20.exe をダウンロードし
ftp.orca.med.or.jp からダウンロードしたファイル中の(どこにあるのか忘れた ..;)
byomei_20011101.tar.gz から以下の手順でテキストファイルを作ります。
下のコマンドラインは実際は一行です。

$ tar zxOf byomei_20011101.tar.gz | ruby -ane 'print "#{$F[1]}\n" if $F[5] != "0"'
  > disease_orca_20011101.txt
(この方法では一部編集が必要です。ファイルの最初と最後の数行を delete します)

$ lha p byomei20.exe main200.txt | nkf -e | cut -d "," -f 3 | sed -e "s/\"//g"
  > disease_medis_200.txt

ここで以下のようなコードを仮に dtest.rb とすると
ある病名がorca病名/medis病名として有効かどうかは

$ dtest.rb 開放性外傷性くも膜下出血

 開放性外傷性くも膜下出血 is available in orca  : true
 開放性外傷性くも膜下出血 is available in medis : false

となります。
つまり orca では有効だが、medis の病名としては無効ということのようです。


#!/usr/local/bin/ruby -Ke

class Disease < String
    # ファイル存在のチェックなどは省略(実装の際に考慮します)
    dis_orca_txt = "disease_orca_20011101.txt"
    dis_mdis_txt = "disease_medis_200.txt"

    Orca = open(dis_orca_txt, "r"){|io| io.readlines}.each{|$_| chomp!}
    Mdis = open(dis_mdis_txt, "r"){|io| io.readlines}.each{|$_| chomp!}

    def initialize(str)
        @name = String.new(str)
    end
    def orca?
        Orca.include?(@name)
    end
    def medis?
        Mdis.include?(@name)
    end
end

ARGV.each{|arg|
    d = Disease.new(arg)

    print "#{arg} is available in orca  : #{d.orca?}\n"
    print "#{arg} is available in medis : #{d.medis?}\n"
}

__END__


# どこまでできるかわかりませんが (^^);
# クラス Symptom, Examination, Medicine なども作りたい。
# Rubyの勉強にもなるし..
# どなたか、ご一緒しませんか。

-- 
pba00250@xxxxxxxxx
yoariie@xxxxxxxxxxxxxxx
-------------------------
有家佳紀  Yoshinori Ariie