ぺーぺーぷーぷーな日々

Claris FileMaker と戯れる日々です。

While関数を使って対象レコードの特定のフィールドの値を改行区切りで取得する

以下、 以前に書いた記事の補足になります。


kei0114.hatenablog.com

 


目次


 

GetFieldValues関数について

 

上記の記事の中で、GetFieldValues関数 というカスタム関数を拝借しておりました。

大変お世話になったカスタム関数なのですが、再帰回数5万回という制限があるとのご指摘も頂いておりました。 

iphlox.hatenadiary.org

 

また現在では、 上記カスタム関数が掲載されていたサイトが無くなっていて、残念ながらオリジナルの情報にたどりつくことができないようです。

 

 

While関数

 

解決策としては、FileMaker 18 以降から使えるようになった While関数 と SetRecursion関数 を組み合わせて代替する計算式を書いてしまうのが良さそうです。While関数単体だと5万回の再帰回数制限があるそうなのですが、それを SetRecursion関数 で解除できるのだとか。

 

とりあえず今回は、再帰回数制限のことは脇に置いておきます。<おい!

まずは GetFieldValues関数で実現していたことを While関数で作り直してみます。

下図は以前の記事でも掲載していた画像です。この画像中のスクリプトで GetFieldValues関数で記述していたことを While関数で作り直します。

 

f:id:Kei0114:20210424221849p:plain

 

While関数で書き直した内容が、以下です。

取り出したいフィールドは、[患者_idorrk::__fk_患者番号]というフィールドです。

 

Let ([
 
#field = 患者_idorrk::__fk_患者番号    //ターゲットにするフィールド
 
];
 
GetNthRecord ( #field ; 1 ) &  //最初のレコードだけ先に取り出しておく
 
While (
 
//条件を揃える
[
#max = Get ( 対象レコード数 );
#i = 1;
#result = ""
] ;
 
#i < #max ;  //終了条件
 
//繰り返し部分
[
#i = #i + 1;
#result = #result & ¶ & GetNthRecord ( #field ; #i )
];
 
#result
 
)//while
)//let

 

 

別のフィールドを書き出したい場合は、
[#field = 患者_idorrk::__fk_患者番号    //ターゲットにするフィールド]
という部分を書き換えれば、そのまま転用できると思います。
 

本当は、JSONでも使ってよりスマートに仕上げるべきところなのですが、とりあえず今回は、以前からのスクリプトを踏襲する形で修正いたしました。JSONは、もう少し勉強いたします(笑)。

 

参考

以下、While関数の解説など、参考にさせていただいた記事です。

ありがとうございます。

 

ywc.com

www.mirai-switch.com

usagi-mimi.com

qiita.com

help.claris.com

Wi-Fi は子機も大事

LAN環境の話が続きます。

どんなに優れたシステムだろうと、アプリ開発以前にインフラが整っていないとどうしようもありませんし、個人的に Claris FileMaker Server での運用は、思いのほか通信障害の影響を受けやすいと思っておりまして。

 

今回は、良い子機だと受信も安定するものなのですね、というお話。当たり前か。

 

 

5GHz帯だと、思いのほか遮蔽物の影響を受けるようです。紙の束とか本とか冊子とかも立派な遮蔽物になるようで、PCに接続された受信機がそれらに遮蔽されていると、思いのほか通信状態が悪くなっていたりするようです。高価な親機を導入しても、デスクが書類に埋もれていてはダメみたいです。

 

そういう埋もれた環境にPCが設置されている場合、PCから離した場所にアンテナを置けるタイプは実に有用です。上記の製品は値段もお手頃です。これまで意外と無かったタイプのような気がします。

 

電波の良く届く位置に、両面テープで貼り付けてしまいましょー。

f:id:Kei0114:20210501134026j:plain

貼り付け

 

ちなみに今回の環境ですが、親機は Cisco社のMeraki-Goです。

 アプリから遠隔管理もできますし、子機ごとの受信強度も確認できます。

受信強度の弱い端末、子機を特定して交換対応しています。

 

www.cisco.com

 

 

関連記事

 

kei0114.hatenablog.com

 

 

kei0114.hatenablog.com

 

 

kei0114.hatenablog.com

 

 

kei0114.hatenablog.com

 

FileMaker Server のログ | TopCallStats

FileMaker Server を運用する上で、問題の特定に役立つのではないかと個人的に考えている機能が、「TopCallStats」ログという機能です。

 

「TopCallStats.log」は共有データベースに伴うパフォーマンスの問題を特定するのに役立ちますが、ログプロセスによりサーバーのパフォーマンスが低下する可能性があります。

 最長呼び出しの使用状況のログ

 

上記公式サイトのヘルプによると、パフォーマンス低下の懸念があるとのことですが、私の経験した環境では特に影響はありませんでした。懸念よりも問題の特定につながるならばと思いまして、機能を有効にしてみました。

 

 

f:id:Kei0114:20210228082516p:plain

TopCallStatsを有効にする

 

得られるログは、こんな感じです。

f:id:Kei0114:20210228083143p:plain

TopCallStatsログ

 

このログを表計算ソフトやFileMakerで読み込んで、単純に経過合計が最も長かった端末に疑いをかけて、その周辺を捜索します。具体的には、その端末が接続している無線LAN親機やハブ、そこから派生している端末が捜索対象です。

 

その捜索結果としては、「無線LANの受信が弱い」ということが多いように思っておりますが、もしかするとループがあるかもしれません。

 

あくまで個人的な経験則ではありますが、FileMaker Server のトラブルも、LANの通信環境の影響が大きいような気がします。LAN環境のメンテナンスはなかなか重要で大変ですよね。

 

kei0114.hatenablog.com

 

kei0114.hatenablog.com

 

 

kei0114.hatenablog.com

 

転職しました。

1月いっぱいで、17年勤めた病院を退職いたしました。

そして、この2月からは、株式会社エヌ・ケイ・カスタマイズ に雇用していただくことになりました。

 

nkcustomize.co.jp

 

 

なお、これまでの勤め先である病院へは、引き続き主に私が月10日を目安に訪問する契約となっております。これまでと変わらず、でもこれからは、機会をいただければ、新しいところへも関わっていく所存です。

 

こちらのブログは今後とも私個人の備忘録として、ボチボチと継続いたします。

これまで通り、よろしくお願いいたします。

なんとか院内LANが安定した様子

(追記:不調の要因は他にもありました。)

Loop解消やメッシュWi-Fiが安定化の大きな要因でしょうか。

 

なんとか院内LANの問題が解消されてきたようで、安心しているところです。

3年ほど眠れない日々が続いておりましたから。

 

以前にも記事にしたのですが、うちの施設でのLAN安定の最大の要因としてはループが解消されたのが大きく、これによって、FileMaker Server が止まる、アクセスできなくるという状況が、ほぼ無くなりました。また、IPアドレスが枯渇しそうな状況だったのですが、数カ所の部署をセグメント分けすることで、回避いたしました。

 

f:id:Kei0114:20170707145605p:plain

FileMaker Server がクエリー処理中となって、止まっちゃう現象。

 

ちなみに、FileMaker Server が止まってしまう場合の要因ですが、私の経験では、LANに起因することが多く、大きな要因としては3つあると考えています。

  1. 弱いWi-Fiを掴んだまま通信
  2. LANコネクタのツメ折れ
  3. LANのループ

LANの不安定要因は他にも多々あるのですが、1のWi-Fi関連については、「ちょっと離れた隣の部署の弱いSSIDを掴みっぱなし」の状態で FileMaker の処理をしていると発生しやすい印象です。分厚い本棚や書類に囲まれた環境も、意外なほど良くない気がしています。

 

あと、Wi-Fi に関しては、最近はメッシュ Wi-Fi の機器も増えてきて、運用が楽になってきたなと感じております。複数のメーカーのものを設置して試しておりますが、最近は、Cisco社のMeraki Goを増やしているところです。有線バックホールができるみたいですし。 それぞれのメーカーのそれぞれの機種でそれぞれ特徴があってややこしさはあります。この点は、Buffalo社のような国内のものが設定がわかりやすくて助かるんですけれども。

 

ネットワークインフラって、大変ですよねー。

 

 

関連記事

kei0114.hatenablog.com

 

kei0114.hatenablog.com

 

kei0114.hatenablog.com

 

kei0114.hatenablog.com

 

kei0114.hatenablog.com

 

ORCAの情報をFileMakerに取り込むためのツール(有償)

日医標準レセプト(ORCA)の情報を、手軽にFileMakerに取り込んでくれる有償ツールがあります。その名は、「AD DBManager」。ANNYYS_DのMsis社のご提供です。

 

www.annyys.net

日医標準レセプト(以下「日レセ」)にあるのデータベース情報をFileMakerデータべースに簡単移行!
テーブル構築や差分が発生した場合も勝手にメンテナンスしてくれます。
一度設定したらあとは自動で定期更新できるので手間いらず(^^)/

 

詳しくは上記リンク先を読んで頂くとして、このツールを使うと、ORCAに内包されているテーブルを全て自動で取り込むことができるとのことです。

 

f:id:Kei0114:20210125095556p:plain

AD_DBManagerの設定

 

運用方法は様々だと思いますが、例えば、うちの場合ですと、ORCAから患者基本情報を10分毎に取り込んでいます。具体的には、ORCAの患者基本情報関連の2つのテーブル(TBL_PTINF、TBL_PTNUM)だけを10分毎に取り込むように、Windowsのタスクスケジューラにセットして使っています。

  1. FileMaker Server に、[DBManager.fmp12]という空のファイルを置いておきます。
  2. Windows マシンにて、1で設置したファイルを取り込み先として設定しています。
  3. そして、2のWindowsマシンのタスクスケジューラにバッチファイルを登録。

 

f:id:Kei0114:20210125095951p:plain

Windowsマシンにて、AD_DBManagerを設定

f:id:Kei0114:20210125101110p:plain

バッチファイルをタスクスケジューラに登録

 

「患者基本情報は10分毎に欲しいけど、他の情報は1日1回の取り込みで十分なんだよねー」という場合は、ダウンロードしたDBManagerのフォルダを目的ごとに分けて配置して利用しています。

 

f:id:Kei0114:20210125102011j:plain

フォルダを分ける

 

私は実は、これがどういう仕組みで動いているのか分かっていません(笑)。

どうやったら、JavaからFileMakerのファイルを操作できちゃうんでしょうか。

とはいえ、便利に利用しています。詳しくは、Msis社までお問い合わせください。

 

www.annyys.net

水が流れるようにいきたい

今年で48歳になりました。もう50歳も目前です。

 

世の中はコロナ禍で大変なご時世です。自分だって、いつ罹患するかわかりません。それを考えると、自分の仕事をいつでも引き継げるように常々備えておかなくては、と思わざるを得ません。しかし、よくよく考えてみると、すでに窓際族の私には引き継ぎが生じるような仕事がありませんでした(笑)。

 

それはさておき、私自身の狭い範囲の出来事に関しては、ここ数年は、周囲で起こる変化の流れに沿って淡々と過ごせてきたように感じております。今年は、この流れのままに、もう少し乗ってみたいと思っているところです。自分から動く、というよりは、成り行き任せに水が流れるように身を処すのが理想です。できる限り我を消したい。相変わらず老荘思想が好きです。

 

今年もよろしくお願いいたします。