病名のインポート

ORCAから患者基本情報をインポートする事が出来たので、次は病名をインポートしてみます。
患者番号で検索してODBC経由で病名をインポートする場合、当該患者に複数の病名が登録されていれば、複数のレコードが帰ってきます。
病名のインポート用の別DBファイル「病名取得」を用意して一旦そこにデータを取込み、必要な病名(転機のない病名)だけを書き連ねた文字列を生成して「患者登録」に送るようにしてみます。

病名は患者病名情報テーブル"tbl_ptbyomei"に病名コード"byomeicd"で記録されています。
病名コードを病名に変換するのには、「病名ルックアップ」とのリレーションを使うことにします。

なお、患者基本情報のインポートで述べたのと同様に「表の結合」を使った"ptnum"による検索でも良いのですが、すでに患者基本情報のインポートで"ptid"が「患者登録」に取得済みであることを前提に、ここでは"ptid"を検索条件としてインポートしています。

新規データベースを「病名取得」を作成し、まずフィールド定義です。
最低限必要なフィールドは、

(1)No.       <数字フィールド>      検索対象の患者番号を入力するフィールド。
(2)ptid       <数字フィールド>      「患者登録」からルックアップで自動入力。
(3)病名      <テキスト・フィールド>   「病名ルックアップ」ルックアップで自動入力。
(4)病名取込み  <テキスト・フィールド>    ORCAからのデータ取込み用。
(5)転機区分   <テキスト・フィールド>    ORCAからのデータ取込み用。
(6)疑いフラグ  <数字フィールド>       ORCAからのデータ取込み用。
(7)クエリー    <グローバル・フィールド> SQL文の共通部分を格納する。

SELECT
"tbl_ptbyomei"."byomei",
"tbl_ptbyomei"."ptid",
"tbl_ptbyomei"."utagaiflg",
"tbl_ptbyomei"."sryymd",
"tbl_ptbyomei"."tenkikbn"
FROM "tbl_ptbyomei"
WHERE "tbl_ptbyomei"."ptid" =


(8)クエリー全文  <計算フィールド>

=クエリー & ptid

(9)修飾語付き病名 <計算フィールド> 疑いフラグを反映させた病名に変換する。

=Case( 疑いフラグ = 1 , 病名 & "疑い" ,疑いフラグ = 2, "急性" & 病名 , 疑いフラグ = 3 , "急性" & 病名 & "疑い" ,病名)

(10)貼り付ける病名 <計算フィールド> 修飾語付き病名のうち転機のついていない病名だけ残す。

=If( Length(修飾語付病名) >= 1 , If( Length(転機区分) >=1 , "" , 修飾語付病名 & "、" ) , "" )

(11)病名列記    <テキスト・フィールド>
後述するスクリプト「病名を作成」を実行することにより、このフィールドに病名を羅列していきます。
最後のレコードのこのフィールド値が最終的な病名の文字列になります。


フィールド定義が終わったら、次はスクリプトを作成します。

(1)スクリプト「病名をインポート」

 患者基本情報のインポートで説明した手順と同様にして「レコードをインポート」スクリプトステップを作成し、データがインポート出来ることを確認てください。

(2)スクリプト「病名を作成」

レコード/検索条件/ページへ移動[最初の]
Loop
  コピー[選択、「貼り付ける病名」]
  貼り付け[病名列記]
  コピー[選択、「病名列記」]
  レコード/検索条件/ページへ移動[最後まできたら終了、次の]
  貼り付け[病名列記]
End Loop


これを実行すると、最後のレコードの病名列記フィールドに最終的な病名の文字列ができあがります。

「患者登録」から「病名取得」を起動してバックグラウンドで処理を実行させ、できあがった病名の文字列を「患者登録」に返したら自動的に終了するように動作させたいので、一度「患者登録」に戻って次の二つを追加しておきます。

            テキスト・フィールド「病名」を作成する。

            スクリプト「病名貼り付け」を作成する。
                   貼り付け[選択、「病名」]
                   閉じる[「病名.fp5」]
                   全レコードを表示


再び「病名取得」に戻り、スクリプトを用意します。

(3)スクリプト「新規レコード」

全レコードを表示
対象レコード削除[ダイアログなし]
新規レコード/検索条件
貼り付け[選択、「No,」]


(4)スクリプト「スクリプト連結」

スクリプト実行[サブスクリプト、「新規レコード作成」]
スクリプト実行[サブスクリプト、「病名をインポート」]
スクリプト実行[サブスクリプト、「病名を作成」]
スクリプト実行[サブスクリプト、外部:「患者登録」]


最後の行の、外部:「患者登録」では、「患者登録」に先ほど作ったスクリプト「病名貼り付け」を指定。

もう一度「患者登録」に戻り、
          スクリプト「病名のインポート」を作成する。
                   コピー[選択、「No.」]
                   スクリプト実行[サブスクリプト、外部:「病名取得」]
           外部:「病名取得」 
は(4)で作った「スクリプト連結」です。

これで「患者登録」でスクリプト「病名のインポート」を実行すれば病名が取得出来るはずです。


HOME  TOP↑  ORCAのページのTOP