みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
病院で血液浄化の検査値のデータベースを作成しています。
治療前後の血中濃度の変化から除去率を算出したいのですが、行き詰ってしまいました。。。
検査値は、エクセルからインポートしています。
データベースは以下のような感じで、エクセルの採血時間から採血のタイミングを判断し、
「治療前」、「治療後」としています。
例のように、治療前のレコードに、その治療での除去率を表示させようと思い、
調べてみましたがわかりませんでした。
どなたか力をかしてくれませんでしょうか?
名前 タイミング 検査値1 検査値1の除去率 検査値2 検査値2の除去率 ・・・・・・
患者A 治療前 12 66.7%
患者A 治療後 4
患者B 治療前 9 55.6%
患者B 治療後 15
患者C
採血時刻が有った方が処理は容易です。
また、患者Bでは増加していますが....
まず、「治療前 治療後」という値の値一覧を作ります。
患者名で自己リレーションを張り、タイミングでソート、ソート順は、上の値一覧を使います。
1 - GetNthRecord ( リレーション::検査値 ; 2 ) / GetNthRecord ( リレーション::検査値 ; 1 )
で出ますね。
Offline
Shin様
早速のお返事有難うございます。
患者名よりカルテ番号の方が良いかと思い、カルテ番号のフィールドを作成して
カルテ番号で自己リレーションを張りました(テーブル名は、「検査値pre」、「検査値post」としました)。
そして、患者名、検査値、除去率などを一覧で表示するレイアウトを作成し、1.採血日(降順)、2.患者名(昇順)、3.タイミング(治療前→治療後と並ぶように)ソートしました。
すみませんが、最後のところがわかりません。
除去率(計算フィールド)を作成し、
1 - GetNthRecord ( 検査値1 ; 2 ) / GetNthRecord ( 検査値post::検査値1 ; 1 )
と入力しましたが、除去率が正しく表示されません。
私のやり方が悪いのはわかっているのですが、教えていただけないでしょうか。。。
すみません。#3の名前、間違えて別の方のになってます。
ソートは、リレーションの中の設定です。
GetNthRecord ( 検査値1 ; 2 ) は、そのリスト表示の2レコード目の数値が参照されます。ですから無意味です。上で書いたフィールドを設定してください。
突然、検査日、という情報が出てきましたが、...
Offline
Shin様、ありがとうございます。
もともとのテーブルを「検査値」、自己リレーションのテーブルを「検査値リレーション」とした場合、
「リレーションシップ編集」で双方のテーブルの「レコードのソート」をチェックして「タイミング」にてソート、
除去率(計算フィールド)で、
1 - GetNthRecord ( 検査値リレーション::検査値1 ; 2 ) / GetNthRecord ( 検査値リレーション::検査値1 ; 1 )
を計算するということでしょうか?
申し訳ありませんがよろしくお願いします。
その通りです。
ただし、検査日、という新しい概念も考えないと行けないですね。
Offline
Shin様、ありがとうございます。
検査日について伝え忘れてしまいました。すみませんでした。
検査日があると上記の方法だと違う検査日のレコードで除去率を算出してしまいました。
そこで、検査日(yyyy/mm/ddの表記)を8桁の数字にし、
8桁の数字&カルテ番号で、番号を作成して、
この番号で自己リレーションしてみました。
素人なりに考えてみたのですが、この方法は回りくどいのでしょうか?
もっとスマートな方法がありますでしょうか?
FM6以前ではないですよね。(環境は必ず書いてください)
リレーションキーは、複数持てますので、IDと検査日でリレーションすれば良いです。
Offline
FM12Ad Win7です。
ご教示いただいた方法で、今までにインポートしていたレコードに関しては
除去率を算出することができました。
ありがとうございました!
しかし、本日新しくレコードをインポートすると、
GetNthRecord ( 検査値リレーション::検査値1 ; 1 )、GetNthRecord ( 検査値リレーション::検査値1 ; 2 )
共に空のレコードがほとんどで、いくつかのレコードのみ入力されていました(GetNthRecord ( 検査値リレーション::検査値1 ; 1 )にあるべきレコードが、GetNthRecord ( 検査値リレーション::検査値1 ; 2 )に入力されていました)。
これは、何が原因なのでしょうか?
度々すみません。。。
Pages: 1
[ Generated in 0.009 seconds, 10 queries executed - Memory usage: 521.61 KiB (Peak: 526.15 KiB) ]