2008年11月16日

FileMaker Pro - 重複データ削除 part1

最近上司に言われ、数年分の病院の手術統計を出すことになった


さすがにデータベースソフトウェアがないと厳しいです


やりたくないからそう答えたところ


『ん?買ったらやるんだな。

 おい、研究費用あまっていたな。買ってやれ』


部長の一言で購入が決まった



とりあえず、一番メジャーな

FileMaker Pro 9 Advancedを紹介した

別にFileMaker Pro 9

おそらく何も問題ないのだけれども

自分で買う気わけでもないし

そんな統計などやりたくもないから

少し高い方が良いと思ったので…

『そのソフトはいくらするんや?』


Amazon

60,536 円(税込)

Yahoo!でも楽天で探しても似たような値段ですね』


『そんな高いのならやめる』

そういってもらうつもりだったのに…


『他の科も持っているし、うちの科も買うぞ。

 そんなもんぐらいの値段はどうでも良いから

 ヨン、近いうちに買っておけ』


が〜〜ん!!

買っておけって…


買って使わされるのは…俺ですよね…



そう思ったが…

決定事項は変えられない


気づけば、目の前にFileMaker Pro 9 Advancedが届いてあった

仕方がないから

泌尿器専用のパソコンにインストールする


思っていたよりも使い方は楽

エクセルなどの他のデータベースから

データもインポートでき楽


病院のオーダリングシステムは

入院患者さんのIDなどがエクセル形式で保存できるようになっているので

それを基に患者さんのデータベースを作ろうとした

入院していた人のデータベースを基にすれば

手術統計の基本データベースを作れると思ったからだ



しかし、データを蓄えだしているうちに

ふと、あることに気づいた!

今までインポートされたデータは

重複データが満載

だったのである


参った…本当に参った


しかし、さすがにデータベースソフトだから

重複データ削除ぐらい…


が…しかし…ないのである


適当にググるとどうもスクリプトで作らないといけないらしいことがわかった


しかし、自分にとって最善のものがよくわからない

決まった方法はどうもないのかと思う



自分で作れと言うことか…



そこで、ネットで見た内容を少し、自分なりに整理する

まず大切なのは

どういう手順で自動化させるのか。

僕がしたいことは

IDを決めれば一人が決まる台帳である

その台帳の中にはIDの重複はない方が好ましい状態である


つまり、IDが重複していれば削除するスクリプトがほしいのである


それが決まれば、

次はプランを考える


俺は

@すべてのデータを読み込む
AID順に並べる
BIDを前のと比較して、違うものならばグローバル格納、同じものならば同じものだったと印をつける
C全データを同じ手順で比較する
D印がついているものだけを集める
E集めたやつを削除する

この行程をスクリプトかすることにした

とりあえず最低限度必要となるフォールドは

IDと比較ID(グローバル格納設定しているもの)と重複ID(印を残すところ)

後はいくらフィールドがあっても問題はない



まあ、そんなことを考えながら作ったのが

chouhuku.gif


こんな感じで作った


ふ〜疲れた
posted by ヨン at 22:05| Comment(0) | TrackBack(0) | パソコン

FileMaker Pro - 経過日数を求める

FileMakerで入院日から退院日までの日数を表示することは

実は馬鹿みたいに簡単である


FileMakerは西暦1年1月1日からの累積日数を基準に

年月日の計算を行っています


つまり

FileMakerで

入院日数を求めたければ

退院日 - 入院日

とすれば終了…



簡単である


上司にちょっと無理矢理やらされている感があるが

なんかちょっとずつそれらしいものができてきた…


ちなみに

僕が購入して

参考にしている書籍は下にあるやつです


気が向いたら

一度、使ってみてください


どちらもなかなかだと思います


<参考書籍>

FileMaker Pro 関数・スクリプト [サンプル活用辞典] Ver.9対応

新・リレーションで極めるFileMaker
posted by ヨン at 22:06| Comment(0) | TrackBack(0) | パソコン

FileMaker Pro - 年齢計算

ファイルメーカーに生年月日と手術日を入力するだけで

その手術日の年齢を計算したいと思っていた


単純に年齢は

生年月日の「西暦」と手術日の「西暦」がわかればほとんど年齢が決まります

つまり、

生年月日がたとえば1981年で手術日が2008年だと

手術日の年齢は2008-1981=27か27-1=26のどちらかです

1歳引くかどうかは

今年、手術日までに誕生日を過ぎたかどうかです



手術日がまだ誕生日を迎えていなければ1引いたらいいのです


となると

パターンとして

@まだ誕生月まで届いていない場合

A誕生月だけどまだ誕生日になってない場合

は1引いたらいいのです


さて、ここでFileMakerはどうも演算子で「真」は「1」を「偽」は「0」を返します

これを利用して式にすれば

おそらく年齢計算式ができあがる

たとえば


(Year(手術日) - Year(生年月日)) -(((Month(手術日) = Month(生年月日)) and (Day(手術日) < Day(生年月日))) or (Month(手術日) < Month(生年月日)))


という形で作ればどうだろうか

上記の@とAを式にしただけだが…



まあ、とりあえずこれで計算してくれましたわ



<参考書籍>

FileMaker Pro 関数・スクリプト [サンプル活用辞典] Ver.9対応

新・リレーションで極めるFileMaker
posted by ヨン at 22:07| Comment(0) | TrackBack(0) | パソコン