みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Windows10/FileMakerPro18を使用しています。
初心者ののため説明が至らない部分がございましたら申し訳ありません。
検査結果データ_B検査というポータルを設置しています。
ポータルはフィルタを使いマスタに登録しているコードを使用し
B検査のみ(B検査の検査項目は5つあります)表示されるようにし、
ポータルのソートで検査日フィールドを降順にし、
最新の1行のみ表示でスクロールはできないようにしています。
B検査は他院のデータを採用することがあるため
B検査日_他院フィールドを設置しています。
今回、B検査日_アラートフィールドに
下記の条件でアラートを表示させたいと考えております。
①検査結果データ_B検査::検査日フィールドとB検査日_他院フィールドの両方が空欄の場合「実施日は?」
②検査結果データ_B検査::検査日フィールドが空欄(検査未実施)で、B検査日_他院フィールドが入力されていて
なおかつ期限(1年)が切れている場合「他院期限切れ」
③B検査日_他院フィールドが空欄で、検査結果データ_B検査::検査日フィールドが入力されていて
なおかつ期限(1年)が切れている場合「当院期限切れ」
①~③をそれぞれ作ってはみたのですが、1つにつなげると全く思いどおりに表示されません・・・
また特に③は下記のように組んでみましたが、期限切れではないのに期限切れが表示されてしまいます
case(
Let($cnt=1;( 検査結果データ_B検査::検査日フィールド + マスタ::B検査_検査間隔[$cnt] < Get( 日付 )))or
Let($cnt=2;( 検査結果データ_B検査::検査日フィールド + マスタ::B検査_検査間隔[$cnt] < Get( 日付 )))or
Let($cnt=3;( 検査結果データ_B検査::検査日フィールド + マスタ::B検査_検査間隔[$cnt] < Get( 日付 )))or
Let($cnt=4;( 検査結果データ_B検査::検査日フィールド + マスタ::B検査_検査間隔[$cnt] < Get( 日付 )))or
Let($cnt=5;( 検査結果データ_B検査::検査日フィールド + マスタ::B検査_検査間隔[$cnt] < Get( 日付 )));"当院期限切れ";""
)
ご教授いただければと思います。よろしくお願いいたします。
説明の文章では「期限(1年)」と言ってるのに、提示している計算式でいきなり検査間隔のフィールドが出てくるのは?
Letを使ってますが、代入した変数を1回しか使ってないのでLetの意味がありません。
>①~③をそれぞれ作ってはみたのですが、1つにつなげると全く思いどおりに表示されません
3つの条件は同時に満たすものはないので、単純に連結していいはずです。
(1の式) & (2の式) & (3の式)
himadanee様
説明の文章では「期限(1年)」と言ってるのに、提示している計算式でいきなり検査間隔のフィールドが出てくるのは?
Letを使ってますが、代入した変数を1回しか使ってないのでLetの意味がありません。
大変失礼しました。B検査はマスタに検査間隔を登録していました。
検査結果データ_B検査::検査日フィールドを塗りつぶすために
条件付き書式で下記を使っていたのでそれを参考にしていました。
Letの意味がないとアドバイスいただいたので
case(
$cnt=1;( 検査結果データ_B検査::検査日フィールド + 365) < Get( 日付 )or
$cnt=2;( 検査結果データ_B検査::検査日フィールド + 365) < Get( 日付 )or
$cnt=3;( 検査結果データ_B検査::検査日フィールド + 365) < Get( 日付 )or
$cnt=4;( 検査結果データ_B検査::検査日フィールド + 365) < Get( 日付 )or
$cnt=5;( 検査結果データ_B検査::検査日フィールド + 365) < Get( 日付 );"当院期限切れ")にしてみたのですが、計算結果をテキストしていますが0か1での表示になってしましました・・
3つの条件は同時に満たすものはないので、単純に連結していいはずです。
(1の式) & (2の式) & (3の式)
やってみます!
> B検査の検査項目は5つあります
というのがわかりませんが、1回のB検査に対して、結果が5個ある、ということでしょうか。
その検査は、常に一括して返ってきているのでしたら、検査日は同じはずですよね。でしたら、最初の1検査だけ評価すればいいのでは。
一番簡単なのが、検査結果テーブル側に、
Min ( 査結果データ_B検査::検査日フィールド ; 検査結果データ_B検査::B検査日_他院フィールド ) + 365 < Get ( 日付 )
という計算フィールドを作っておき、それを評価すると簡単です。①は null が返っています。
Offline
Shin様
その検査は、常に一括して返ってきているのでしたら、検査日は同じはずですよね。でしたら、最初の1検査だけ評価すればいいのでは。
おっしゃる通り検査を行う際は一括のため検査日は同じになります。
最初の1項目だけで式を考えてみたのですがうまくいかず・・
5項目必要なのかと思って作業していました。
一番簡単なのが、検査結果テーブル側に、
Min ( 査結果データ_B検査::検査日フィールド ; 検査結果データ_B検査::B検査日_他院フィールド ) + 365 < Get ( 日付 )
という計算フィールドを作っておき、それを評価すると簡単です。①は null が返っています。
申し訳ありません。記載していなかったのですが
B検査日_他院フィールド(とB検査日_アラートフィールド)は検査結果テーブルとは別のテーブルQにあります・・
また検査結果テーブルに新たなフィールドを作るのは避けたく、
できれば、B検査日_アラートフィールドでどうにかできないかと考えています。
別テーブルでも同じですよ。ですが、ポータルの設定はどうなっていますか。
また、自院のB検査が行われていない、他院の検査だけ、という状態では、評価が不可能になりますが、それはいいのですか。
非保存の計算フィールドでいいので、元データには全く関係なく運用できます。それでもだめですか。私なら、幾つでも作ってしまいますよ。
どうしてもいやでしたら、そのレコードIDとその日付だけをコピーした別テーブルをつくり、そこで計算させればいいでしょう。というか、そのテーブルには1年未満のレコードだけを作っておけばいいかも。
Last edited by Shin (2022-07-19 14:09:18)
Offline
別テーブルでも同じですよ。ですが、ポータルの設定はどうなっていますか。
また、自院のB検査が行われていない、他院の検査だけ、という状態では、評価が不可能になりますが、それはいいのですか。
B検査結果データ_B検査のポータルはテーブルQと患者IDでリレーションし、
フィルタでLetとExtendを使い項目5つと検査コード(4つまで登録されている)を設定
ソートで①検査日②更新日を降順にしています。
全くおっしゃる通りです。
現在、自院ではB検査を行われておらず他院のみのため、
B検査日_アラートフィールドフィールドの式①〜③がまったくうまく組めないうえに動きません・・
非保存の計算フィールドでいいので、元データには全く関係なく運用できます。
てっきり元データに影響があるのかと思い避けていました・・
Min ( 査結果データ_B検査::検査日フィールド ; 検査結果データ_B検査::B検査日_他院フィールド ) + 365 < Get ( 日付 )
という計算フィールドを作っておき、それを評価すると簡単です。①は null が返っています。
以前おっしゃっていただいた上記の計算フィールドを検査結果テーブルに作り、
評価というのはB検査日_アラートフィールドでどのように組めばよいのでしょうか?
検査場所によってテーブルを別にしないといけない理由はありますか。基準値が異なるとしても、検査場所に紐づけたマスターを持たせればいいです。
Offline
Shin様
検査場所によってテーブルを別にしないといけない理由はありますか。基準値が異なるとしても、検査場所に紐づけたマスターを持たせればいいです。
知識不足で申し訳ありません。
検査結果デーブルは自院での検査結果が入りいます。
テーブルQでしかB検査の他院データ(検査日)を参照しないため、テーブルQに作成していました。
最初の式で
> マスタ::B検査_検査間隔[$cnt]
とか、
その後で
> Extend
と書かれていますが、
これは繰り返しフィールドですか?
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 588.1 KiB (Peak: 604.64 KiB) ]