[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[orca-tech:01860] Re: CLAIM受信サーバの挙動について



吉冨 様

お世話になります、寺岡です。
ご返信有り難うございます。

ORCA側のCLAIM通信自体は問題ありませんでした。
吉冨様のご指摘通り、XMLの解析自体に問題があったようです。

どうやら、AccessVBAの文字列型変数にテキストデータを格納した時点で
ShiftJISに変換されるようで、送信データ→SJIS、XMLの文字コード宣言→UTF8と
矛盾の状態でXMLを送信してしまっていた為に、ORCA側が誤作動(フリーズ)していたようです。

XML内の文字コード宣言部分をSJISに変えてやることで、無事ORCAがCLAIMを受付取込してくれました。
本当に有り難うございます。

寺岡 壮

> 吉冨@佐賀です。
>
> 返信がないので、分かる分で確認だけさせていただきます。
> まず、CLAIM文の送信についてBASP21から送信されている
> とのことですが、BASP21側で送信完了後、ORCA側の
> CLAIM通信(netstatで確認)は完了していますか?
> 完了していれば、通信の問題ではなくXML解析の問題になって
> くるかと思います。CLAIM文をUTF8で保存されているとのこと
> ですのでCLAIM文内のエンコード指定とあっているかを一度確認
> されたほうがいいかと思います。
>
>
> (2012/02/26 18:14), 寺岡壮 wrote:
>> お世話になります。
>> フリーでAccessによるシステム開発を行っている寺岡と申します。
>>
>> 現在、ある病院様向けにORCA+MS-Accessによるシステムを構築しておりますが
>> CLAIM通信の部分で分からない事がありますので
>> 皆様のお知恵を拝借したく、こちらのMLに参加させていただきました。
>>
>> Access側からBASP21のソケット通信機能を用い、
>> CLAIMを使用して診療行為登録および傷病名登録を行おうと考えております。
>>
>> 日レセで公開されているCLAIMのサンプルを元に、
>> 医療機関IDや患者番号などを適宜変更し、一般的なソケット通信プログラムを使用して
>> ORCAにCLAIMを送った所、診療行為および傷病名の登録が行えました。
>> (ソケット通信プログラムは「SocketDebuggerFree」を使用しました)
>>
>> さて、次に上記で成功した同じCLAIM文をAccessから
>> BASP21のソケット通信を用いてORCAに送ると、登録されませんでした。
>> さらにはAccessから一度でも送信すると、CLAIM受信サーバがフリーズ?の
>> ような状態になり、以後、成功した方法で送信しても、CLAIMの受信がうまくいきません。
>> (なお、別の送信方法としてOpenDolphinでも試しており、こちらも問題無くCLAIM通信できておりますが
>> 一度Accessで送ると、以後は失敗します)
>>
>> なお、このフリーズの状態であっても、/tmp/claim_rcv.log自体はAccessから送信した時刻で
>> 更新されますので、通信レベルでの疎通はしているものと思われます。
>>
>> そこで"dpkg-reconfigure jma-receipt"を実行し、一度ORCA自体の再起動を行うと
>> 再びSocketDebuggerFreeやOpenDolphinからCLAIM通信が行え、ORCAにも登録されるようになります。
>> (ORCAの再起動はsudo /etc/init.d/jma-receipt restartでは駄目でした。)
>>
>>
>> Accessから送信した場合、/tmp/L0030.logは更新されますが、中身が
>> -----
>> 2012/02/2617:32:54 P:dbstub_main.c:242:module ORCL0030: /var/tmp/claim_rcv_0
>> PARA /var/tmp/claim_rcv_0226_173253_07.txt
>> ##
>> -----
>> とだけ記述されています。(この後、フリーズのような状態になっています)
>>
>> このフリーズの状態になると、SocketDebuggerFreeやOpendolphinから
>> CLAIMを送信しても/tmp/claim_rcv.logは更新されますが、
>> /tmp/L0030.logは一切更新されなくなることが分かりました。
>>
>> 恐らくAccess(BASP21)からの送信方法に問題があると思われますが、
>> 考えられる要因としては何でしょうか。
>> なお、Accessから送信する際は、あらかじめSocketDebuggerFreeにて成功した
>> CLAIM文をUTF-8にてテキストファイルとして保存し、それを
>> 読み込んで送信しています。(CLAIM文の最後にEOT(0x04)も付加しております)
>>
>>
>> ORCAバージョン:4.6.0
>> MS-Accessバージョン:2010