話題 06  レコードを超えてField値を引き渡す 5つの方法 (Script)

レセプト作成では, ソートされた隣のレコードのField値を転送する(データの引き渡し)という処理が多々あります。例えば,

● 再診と乳児再診加算, 明細書発行体制加算点数をを包括表示する,

● 院外処方箋料と一般名処方加算の包括計算,

● 包括検査点数を合算計算する,

● 処置に使用した複数薬剤点数をを包括計算する,

● 2つの手術を同時に行ったときに副手術点数を主手術の50%にする,

● 時間外,夜間の高点数処置を40~80%加算する,

などなどですが, “加算”という名の診療項目の多くで同様の処理が必要です。






この, レコードを超えてFieldのデータを受け渡す, のは単純な足し算でなく, そこに”分岐の判断”を求められるので,ちょっとしたScriptを組まなければなりません。それを達成するのに, 以下の例題にあるように5つの方法(Script)があります。


(A)レイアウト上にFieldを配置しておかないと機能しない方法 (2種類)

1. コピー and ペースト(貼り付け) step を使う

最も最初に思いつく方法で, イメージどおりのscriptを組めるので, 楽ですし, OSのクリップボードを使うので, 後述のように, Fileを超えても, ソフトを超えてもデータの引き渡しが可能であり, 最強の方法です。 ただし, それ故に同時に使用しているソフトの他のScript, 他のソフト(ワープロなど)のジャマをすることもあるかもしれません。実際, FMでも, あるレコードのFieldをコピー -> Scriptでレコードを移動(コピペを使っている) -> 別のレコードで貼り付けは不成立になります。もう一つの欠点は1個のFieldしか同時に引き渡しできないことです。


2.”直前に参照したレコードから挿入” step を使う

“直前に参照した”というのがミソですが, 単にブラウジングだけではダメで, そのFieldにたいして”計算結果を挿入”, “テキストを挿入”などのactiveな操作が必要です。”Field設定”のときは”Fieldへ移動”stepが必要です。もちろんポータルでも機能します。


上記2法は, 表示したくないFieldまで見せなければならないのが精神衛生上よくないです。そこで, “あればいい”ので, 以前は以下のように こんなアコディオンのような格好にしてやむなく”表示”していました。(^.^)



(B) レイアウト上にFieldを配置しなくても機能する方法(3種類)

1. Global FieldとField設定 を用いる方法

Global Fieldを受け渡し時のメモリがわりに利用する方向です。v6以前ではこの方法しかありませんでした。前もってGlobal Fieldを定義しておかねばなりません。瞬間的にしか使用しませんので, 他のScriptでも使い回せばよく, タイプ(数字, テキスト)ごとに 数個用意しておけばよいわけです。ご存じのように”Field設定”はレイアウト上にFieldを配置しなくても機能します。


2. “変数を設定”と”Field設定” を用いる方法

v8以降にこの”変数を設定”stepが使えるようになりました。これがコピペのイメージに近く,使いやすくてスマートな方法です。例えば変数名を$XY, として値を入力(指定)し, 必要なときに Filed設定で取り出します。 変数値を取り出すときは Stepの指定計算結果の欄に $XY, と手書きします...はじめはこの手書きのことがわからないで戸惑いました。上記の変数はローカル変数のことですが, それはScriptが終了すると消滅します。 グローバル変数は($$XY...など)はFileが閉じられるまで生きますから, Scriptを終了しても値を保持したいときはこれを使います。


3. Get(スクリプト引数)関数 を用いる方法

これもv7以降に使えるようになった関数です。 最初の引数設定はボタンに設定するしかありません。引数は引き出したあと ひとつのScript内でのみ有効ですので,  SubScriptを実行するときは 新たにGet(スクリプト引数)関数の設定が必要になりますので, 上記の4つのScriptとはちょっと異なる記述になります。例題ではsubscriptを使っています。


Sample (FMsample06-13, FMsample06-14)

山田商店の 1ヶ月の仕入れ商品リスト(ポータル)で, 商品のメーカーごとに小計を計算するというものです。ポータル行を最初から始めて, 次行の商品が前と同じメーカなら,前のレコードに戻って価格を記憶した上で消して, 価格を合算します。これを繰り返します。sample fileをdownloadしてみてください。( FMD_Konyu Fileを開いてください,各ボタンを実行してください。 動作はわかりやすいように, 各行ごとに0.5秒の間隔を入れています。 zip形式で圧縮してあります。 MacOSXでは OSの標準機能で解凍できます。Windows7でも問題無く解凍できました。)