初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2020-05-13 14:03:16

t-tanaka2
Member

重複するデータに2段階で連番を振る方法についてご教示ください

いつも勉強させていただいております
今回質問があり、投稿させていただきました
Windows10
FMP Ver12
の環境で使用しております

病院における救命センターへの入院台帳を作成しており
現在
テーブルとして

①入院台帳
②血液検査結果テーブル
を作成してリレーションを組んで行っています

入院台帳には

ICU(集中治療室)への入院日の順に順次患者登録を行っており
患者によっては1度の入院で病状によってはICUに入ったり一般病棟へ移ったりを繰り返しているような患者もいます
そのようなデータで入院回数を算出させたいのですが
台帳番号 ID  名前  入院日    ICU入室日  ICU退室日  退院日  病名.....
000001 0001 日本太郎 2020.01.01 2020.01.02  2020.01.04 2020.01.30
000002 0012 日本花子 2020.01.02 2020.01.02  2020.01.06 2020.01.10
000003 0001 日本太郎 2020.01.01 2020.01.06  2020.01.08 2020.01.30
000004 0102 日本次郎 2020.01.04 2020.01.06  2020.01.11 2020.01.16
000005 0232 米国太郎 2020.01.04 2020.01.07  2020.01.17 2020.01.22
000006 0111 日本三郎 2020.01.05 2020.01.07  2020.01.14 2020.01.16
000007 0042 日本四郎 2020.01.05 2020.01.07  2020.01.25 2020.01.30
000008 0001 日本太郎 2020.01.01 2020.01.06  2020.01.08 2020.01.30
000010 0001 日本太郎 2020.03.01 2020.03.02  2020.03.04 2020.03.20
000011 0001 日本太郎 2020.03.07 2020.03.11  2020.03.16 2020.03.20

たとえば上記のようなDataの場合
000001 0001 日本太郎 2020.01.01 2020.01.02 →入院1回目、ICU入室1回目、全期間を通してICU入室1回目
000002 0012 日本花子 2020.01.02 2020.01.02  2020.01.06 2020.01.10
000003 0001 日本太郎 2020.01.01 2020.01.06 →入院1回目、ICU入室2回目、全期間を通してICU入室2回目
000004 0102 日本次郎 2020.01.04 2020.01.06  2020.01.11 2020.01.16
000005 0232 米国太郎 2020.01.04 2020.01.07  2020.01.17 2020.01.22
000006 0111 日本三郎 2020.01.05 2020.01.07  2020.01.14 2020.01.16
000007 0042 日本四郎 2020.01.05 2020.01.07  2020.01.25 2020.01.30
000008 0001 日本太郎 2020.01.01 2020.01.06 →入院1回目、ICU入室3回目、全期間を通してICU入室3回目
000010 0001 日本太郎 2020.03.01 2020.03.02 →入院1回目、ICU入室4回目、全期間を通してICU入室4回目
000011 0001 日本太郎 2020.03.07 2020.03.11 →入院2回目、ICU入室1回目、全期間を通してICU入室5回目

日本太郎が複数回入院歴があるため
それらに対して入院回数およびICUへの入室回数を求めたいのです

台帳自体がICUの入室をもとに作成しているため
全体を通してうのICUへの入室回数は
自己リレーションシップを組んで、関数でCount(IDのフィールド)、リレーションシップの検索条件に台帳番号≦台帳番号で何とか表示させることができました
しかし、入院回数やその入院の中でICUへの入室回数がどうやってもうまくできませんでした

いい方法がございましたら、ご教示いただけますと幸いです。

Offline

#2 2020-05-13 15:58:47

チポ
Member

Re: 重複するデータに2段階で連番を振る方法についてご教示ください

1入院ごとに入院IDを振れば簡単では。
それごとのテーブルがあればもっと簡単でしょう。

Offline

#3 2020-05-13 17:48:47

t-tanaka2
Member

Re: 重複するデータに2段階で連番を振る方法についてご教示ください

チポ様

返信ありがとうございます。
たしかに、一つの入院ごとで作っていればそういったことも可能なのでしょうが
もともと前任者から、以前に作成されていたデータの引継ぎを行ったため
そのようなデータ型になっておりました。

数千件あるため、入院毎で組みなおすのが大変なため、手っ取り早く
一患者ごとで入院回数をうまいことできないものかと思い投稿した次第です。

エクセルに落とし込んで、エクセルの方でソートをかけて、
IF関数で入院回数、入室回数を算出させて再びFMPの方にインポートする形で入院回数は何とか算出できそうですが、
今後もそれをちょこちょこ繰り返していくのが手間なこともあり
自動的に算出できればと思った次第です。

Offline

#4 2020-05-14 00:14:14

Shin
Member

Re: 重複するデータに2段階で連番を振る方法についてご教示ください

集計機能を使えば、簡単です。
いまのテーブルで、集計用のレイアウトを作ります。ガイドを使えば簡単ですが、。
患者IDをキーにした小計パート、その中に患者IDと患者名をおきます。
入院日をキーにした小計パートを作り、入院日をおきます。
ボディーパートには、台帳番号 ICU入室日 退室日をおきます。
患者ID、入院日でソートすればいいでしょう。
台帳番号をカウントする集計フィールドを作り、入院日小計パートにおけば、数えてくれます。

Offline

#5 2020-05-14 08:58:49

チポ
Member

Re: 重複するデータに2段階で連番を振る方法についてご教示ください

集計レイアウトでは、
単純に各患者の入院回数を数えることはできませんね。


前レスの提案のテーブルは現テーブルからインポートで簡単に作れますよ。

新たにテーブルを作り、フィールドを
  ID
  入院日
  IDと入院日
    入力値の自動化の計算式
        ID & 入院日(日付の書式をそろえるため YYMMDDのようなものがいいでしょう)
    入力値の制限
       ユニーク・常時

として、もとのテーブルの全レコードをインポートすると、
Dと入院日の値の重複を排除してレコードが作られます。

このテーブルの同IDのレコード数が入院回数です。

Offline

#6 2020-05-14 10:22:16

Shin
Member

Re: 重複するデータに2段階で連番を振る方法についてご教示ください

入院回数も必要なんですか。
最近のバージョンでしたら、テキストの集計でユニークを数えれば出せるのですが。

本来は、
患者マスター、入院テーブル、ICUテーブルに分けるべきでしょうね。
患者ID ー 患者ID
              入院番号 ー 入院番号
                               台帳番号
というリレーションを張るといいでしょう。

とりあえず、入院番号を与えましょう。
IDと入院日で自己リレーションします。入院番号フィールドを作り、リレーション::台帳番号で全置換します。
今のテーブルを2回複製して、それぞれそれらの名前にしておきます。
患者マスターではIDを常時ユニークに、入院テーブルでは入院番号を常時ユニークにしておきます。
それぞれのテーブルに現在の台帳のレコードをそのままインポートすれば、それぞれにユニークになります。不要なフィールドを削除すれば、理論的にただしい構造になります。それをポータルで表示していけばいいでしょう。この構造でしたら、集計でカウントできます。

Last edited by Shin (2020-05-14 15:51:48)

Offline

#7 2020-05-14 20:46:58

t-tanaka2
Member

Re: 重複するデータに2段階で連番を振る方法についてご教示ください

チポ様、Shin様

返信ありがとうございます。

無事、入院回数なども算出することができました。

ありがとうございます!

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 10 queries executed - Memory usage: 570.14 KiB (Peak: 575.02 KiB) ]