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

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

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

You are not logged in.

Announcement

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


#1 2020-01-22 22:57:08

ハンク
Member

メモフィールドから文字を抜粋する

いつも大変お世話になっております。

以前のスレッドと同じようにメモフォールドから文字を抜粋したいのですが、応用できずにいるのでアドバイスいただきたいです。


メモフィールドは以下の形式で、
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
患者ID:111111                    ←半角数字
    カナ:アアアアア                        ←半角カナ
患者氏名:阿阿阿阿阿
生年月日:昭和(平成、大正の場合もあり)○○年○月○日生(△△歳)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
患者ID
カナ
患者氏名
生年月日
をそれぞれのフィールドに抜粋できるようにしたいです。
ただし、生年月日はカッコ内の△△歳の部分だけ抽出できるようにしたいです。

よろしくお願い致します。

Offline

#2 2020-01-23 01:01:38

Hiro
Member

Re: メモフィールドから文字を抜粋する

  • 「患者ID」「カナ」「患者氏名」フィールドの汎用式は、(※自己の順番を上から1~3として)
    GetValue(Substitute(GetValue(メモフィールド; ※抜出す行番号); [":";¶]); 2)
       

  • 最後の「生年月日」フィールドの専用式は、
    GetValue(Substitute(GetValue(メモフィールド; 4); ["(";¶];[")";¶]); 2)

Offline

#3 2020-01-23 21:07:09

ハンク
Member

Re: メモフィールドから文字を抜粋する

Hiroさん
お返事ありがとうございます。当初の表記ではできたのですが、

メモフィールドの固定テンプレートに
患者氏名の後に性別がくっついてコピーされしまうことに気づきました。

ーーーーーーーーーーーーーーーーーーー
メモフィールド
患者氏名:阿阿阿         男(もしくは女)
ーーーーーーーーーーーーーーーーーーー
に対して、
患者氏名フィールドで性別を除いた、「阿阿阿」のみ抜き出すにはどうしたら良いでしょうか?

Last edited by ハンク (2020-01-24 11:31:48)

Offline

#4 2020-01-24 12:53:57

koeda
Member

Re: メモフィールドから文字を抜粋する

和男さんとか早乙女さんとか、患者氏名に"男/女"の文字が含まれていることも考慮しないと。
姓と名はスペース1文字区切り(あるいは区切りがない)、性別の前はスペースがN個以上、性別のあとは必ず改行、
性別が空欄になることはない…などメモフィールドの値に確実な規則性は期待できますか?

Last edited by koeda (2020-01-24 13:03:58)

Offline

#5 2020-01-24 13:14:00

ハンク
Member

Re: メモフィールドから文字を抜粋する

koedaさん

なるほど、その辺も考慮しないといけないんですね。盲点でした。
規則性はあります。
姓・名の間は全角スペース1文字、性別の前は8個くらい(電子カルテのパソコンを今すぐに閲覧できないので不確かですが)、
性別の後は必ず改行です。性別が空欄になることはございません。

これでできますでしょうか?
よろしくお願い致します。

Last edited by ハンク (2020-01-24 13:14:28)

Offline

#6 2020-01-24 13:18:23

チポ
Member

Re: メモフィールドから文字を抜粋する

必ず最後に
  男
  女
の一文字が有るのなら、その一文字を除けばいいですが。
Left関数でできますよね。

後ろに空白が残り、それも除くのなら、
Trim関数があります。

Offline

#7 2020-01-24 13:34:15

koeda
Member

Re: メモフィールドから文字を抜粋する

チポさんの回答どおり、Left()とTrim()の組み合わせで。

Let ( [
  txt = GetValue( Substitute ( GetValue( メモ; 3 ); [":"; ¶ ] ); 2 )
];
  //性別の1文字を取り除いたあと、スペース文字を取り払う
  Trim( Left ( txt ; Length ( txt )-1 ))
)

もちろんLetを使わなくても、関数を入れ子にすれば1行で書けますね。
もし性別を抽出するなら

Let ( [
  txt = GetValue( Substitute ( GetValue( メモ; 3 ); [":";¶ ] ); 2 )
];
  //末尾の性別1文字のみを取り出す
  Right ( txt ; 1 )  
)

Last edited by koeda (2020-01-24 14:15:22)

Offline

#8 2020-01-24 13:49:54

Shin
Member

Re: メモフィールドから文字を抜粋する

電子カルテは、富士通のGXですか?
そこからの書き出しならば、バイト換算で固定位置にくるはずです。

Offline

#9 2020-01-24 14:48:51

ハンク
Member

Re: メモフィールドから文字を抜粋する

チポさん、koedaさん
できました。性別を抽出する計算式までありがとうございます。

Shinさん
電子カルテはSSI ?かと思われます。あまりメーカーは精通していなくてすいません。
今後ともよろしくお願い致します。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 518.16 KiB (Peak: 523.06 KiB) ]