耳鼻科工作室

耳鼻科診療検査機器を自分で作っています

ORCA受付ボックスを作りました

日医のレセコンorcaは、せっかくHTTP方式のAPIが多く提供されているのに、それを利用したItoTガジェットのような道具がないのが残念です。そこで実用半分、お遊び半分で患者受付専用のORCA受付ボックスを作ってみました。



当院のような零細クリニックでは受付けパソコンが一台しかないので、新患情報入力で占拠されてしまったときに、とりあえず再診の患者さんの受付をする場合などに便利です。当院では患者IDは5桁の数字なので、それをキーパッド入力すると前回受診時と同じ保険組合せで受付をします。受付できるとゼロ、受付エラーのときはorcaの受付APIの結果コードApi_Resultが表示されます。

秋月電子のESP32マイコンボードとテンキーパッド、中華製6桁7セグLEDモジュールを組み合わせました。電源は単4乾電池3本を3.3vレギュレーターで降圧して使っています。

プロブラムはArduino IDE で組んでいます。

 

配線図は下図のとおりです。

 

arduinoのプログラム(スケッチ)は下記のとおりです

ORCA_POST.ino******************************************

 

#include <HTTPClient.h>

#include <WiFi.h>

 

#include "TM1637_6D.h"  //67セグLED用のライブラリーを利用

 

#define CLK 27 //pins definitions for TM1637 and can be changed to other ports

#define DIO 26

 

TM1637_6D tm1637_6D(CLK,DIO);

 

#include "Arduino.h"

#include <Keypad.h>

 

#define ROW_NUM     4 // four rows

#define COLUMN_NUM  3 // three columns

 

char keys[ROW_NUM][COLUMN_NUM] = {

  {'1', '2', '3'},

  {'4', '5', '6'},

  {'7', '8', '9'},

  {'*', '0', '#'}

};

 

byte pin_rows[ROW_NUM] = {18, 0, 4, 17}; // GIOP18, GIOP0, GIOP4, GIOP17 connect to the row pins

byte pin_column[COLUMN_NUM] = {5, 19, 16};  // GIOP5, GIOP19, GIOP16 connect to the column pins

 

Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM );

 

String Pid = "";

 

#ifndef WIFI_SSID

#define WIFI_SSID ********  // ルーターWiFi SSID (2.4GHz only)

#endif

 

#ifndef WIFI_PASSWORD

#define WIFI_PASSWORD ********  // 無線ルーターWiFiパスワード

#endif

 

String url = "http://192.168.0.102:8000/orca11/acceptmodv2";

 

void setup() {

    Serial.begin(115200);

 

    WiFi.mode(WIFI_STA);

    delay(500);

    WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

 

    tm1637_6D.init();

    tm1637_6D.set(BRIGHT_TYPICAL);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;

 

    Serial.println("Orca_Reception");

    tm1637_6D.displayInteger(12345678, false);

 

}

 

void loop() {

 

  key43();

  Serial.print("受付患者ID = "); 

  Serial.println(Pid);

  

 

  WiFiClient client;

  HTTPClient http;

  String json = "<data><acceptreq type=\"record\"><Request_Number type=\"string\">01</Request_Number><Patient_ID type=\"string\">" + Pid +"</Patient_ID><Department_Code type=\"string\">01</Department_Code><Physician_Code type=\"string\">10011</Physician_Code><Medical_Information type=\"string\">01</Medical_Information></acceptreq></data>";

  Pid = "";

    http.begin(client, url);

   http.setAuthorization("Ormaster", "password");  //ORCAIDとパスワード

 

       //APIからのレスポンスを取得

    Serial.println(json);

    http.addHeader("Content-Type", "application/xml");

    int responseCode = http.POST(json);

    String body = http.getString();

 

    Serial.println(responseCode);

    Serial.println(body);

 

    int api0 = body.indexOf("<Api_Result type=\"string\">") ;  

    String api_res = body.substring(api0+26, api0+28) ; //受付API結果コード

    Serial.println(api_res);

    tm1637_6D.displayInteger(api_res.toInt(), false);

  http.end();

 

}

 

//テンキーパッドからのキー情報の取得とLED表示

void key43(){

  char key;

  do {

    key = keypad.getKey();

    if (key) {

      if (key == '*' ){

        Pid = "";

      }else if( key != '#'){ //*キーを押すと入力した数字を消去

      //Serial.println(key);

      Serial.println(Pid += key);

      tm1637_6D.displayInteger(Pid.toInt(), false);

      }

    }   

  }while (key != '#'); //#キーを押すと患者番号が確定

}

***************************************

電子工作やプログラミングにご興味のある先生のご参考になればと供覧させていただきました。

なおwifi経由で接続しますのでセキュリティーには十分ご注意ください。

 

赤外線フレンツェル眼鏡をつくる(4)その後の経過

3年ぶりのブログ更新です。

自作の赤外線フレンツェル眼鏡ですが、2年以上仕掛かりのまま棚晒しになっていました。というのも目に照射する赤外線の強度についての情報がなかったからです。

JISに赤外線フレンツェル眼鏡の規格はないし、めまい平衡医学会の検査基準にもないようです。医学系や工学系の論文も調べてみましたが、赤外線の網膜への影響が体系的に記載された論文は見あたりませんでした。

紫外線と違って赤外線の網膜に対する影響はほぼないようです。昔こたつの中の赤外線ヒーターを覗くと目が悪くなると親にいわれたので変な先入観があったようです。

ちなみに赤外線こたつの赤いランプヒーターは、本来赤外線は目に見えない筈なのに赤い可視光も出るようにした方が消費者受けするので、その様な仕様になったらしいです。

というわけで赤外線LEDを電圧制御して、虹彩紋理がはっきり認識できる程度の一番弱い照度に設定しました。

ちょっとレトロスペクティブになりますが、製作記を書き直してみようと思います。

赤外線フレンツェル眼鏡をつくる(3)カメラケーシング

 診療現場で使うのでカメラ基板を露出させるわけにもいかず、ケースに納めることにしました。N社オリジナルのようなケースを旋盤で挽き出すのは大変なので、既製のケースを使います。タカチのケースで適当なものがありました。

www.monotaro.com

 このケースにちょうど収まります。

f:id:KOTENKI:20181124014035j:plain

 ゴーグル本体に嵌め込む部分は30mmφのパイプです。これは以前他の目的で友人にお願いして作っていただいた。1mm厚アルミ板を折り曲げて作ったパイプを切断しました。左上は同じモノで真鍮板を曲げたものです。こういう厚板の折り曲げには、手で曲げるのではなく、三本ロールという工具を使って作ります。

www.monotaro.com

 材質は真鍮でも良いのですが、今回は軽量化したいのでアルミ材を使いました。接合部は、材質がアルミなのでハンダ付けするわけにはいかず、メタルロックという金属用接着剤を使いました。

www.cemedine.co.jp

 この接着剤固まると非常に強固で、エポキシ接着剤と違って衝撃で剥がれるということがありません。溶接並みの強度があるらしいです。

 取付部分アダプターの真ん中に18mmの孔のあいた28mmφのリングは、1.0mm厚の快削真鍮板から自分で旋盤を使って挽き出しました。自分で旋盤加工する場合は、アルミは粘って削りにくいので快削真鍮材を使うのが楽です。

 

赤外線フレンツェル眼鏡をつくる(2)赤外線カメラユニット

 赤外線カメラユニットの裏蓋を開けて、内部をみると赤外線カメラユニットが装着されています。似たようにものを秋月電子で売っていたようなので、検索してみるとありました。

akizukidenshi.com

 ただしこのカメラは基板の大きさが、オリジナルより少し大きくて 元のカメラケースには収まりません。というわけでケースから自作することになりました。

 オリジナルのカメラケースは、アルミ挽物(アルミの棒材から旋盤加工したもの)のようです。本体のネジの形状からすると、カメラの鏡筒などを作っているメーカーに外注したのではないかと思います。さすがN社、使用している部品が高級です。

 またオリジナルの使用しているカメラも変わっているようで、一番最後に購入した3代目は、赤外線モノクロと可視光カラーの自動切り替え機能がついていましたが、このMTV-2510EMはモノクロのみで、機能的にはダウングレードとなります。

赤外線フレンツェル眼鏡をつくる(1)赤外線フレンツェル眼鏡がこわれた

ある日突然 赤外線フレンツェル眼鏡が壊れました。TVにつないでも画像がでません。

両眼仕様で使っていたので反対側は動いているので、当面は片眼仕様で使って、反対側カメラユニットを買えばよいと思って、N社に連絡をとったところ現在のカメラは仕様が違っているので旧来のゴーグルには装着不可との返事がありました。その後これは担当者の思い違いで、装着可能だったことが判明します。

全部買い替えるとなると出費ですし、とりあえずカメラユニットを振ると音がするので、内部を開けてみました。

f:id:KOTENKI:20181124010707j:plain

クリスタル(水晶発振子)が脱落していましたので、基板のもとの位置にハンダ付けしたら治りました。

ただもう10年以上使っており、反対側も含めて今後経年変化による故障も考えられるので、互換カメラユニットを自作してみることにしました。

耳鼻科工作室のブログはじめました

耳鼻科診療で使う検査・診療機器を自作するときの覚え書きです。

これらの機器の仕掛けがどうなっているかご興味のある先生方の参考になればさいわいです。

なお検査医療機器を自分で作ることをすすめているわけではありません。

材料や工具のコスト、製作時間を考えると ○島や○ァ○ス○などの完成品買った方がはるかに安上がりですよ! あくまで趣味の工作です。