2016年9月25日日曜日

夏休みが終わりました!

早いもので2か月間の夏休みがあけ,秋学期のゼミが始まります。
夏休み明け初日のメニューは次の通りです。
  • 夏休みの宿題確認
  • 今後のスケジュールの確認
  • ORCA Client Ver 0.1の開発着手
まず,夏休みの宿題の確認です。夏休みの宿題は,中間報告会で質問された下記に対する回答を各自で考えてくることでした。
  1. 何故電子カルテではなくORCAとスマホを接続するのか?
  2. スマホをレセコン(あるいは電カル)の端末として利用するという先行研究はあるか?どのような内容か?
  3. 研究テーマが「在宅医療を支援するための医事会計システム(ORCA)連携スマホアプリの開発」となっているが、これは何が「連携」しているのか?人と人の連携?それともスマホの連携?
  4. 研究の目的をもっとしっかり説明する(なぜ、この研究をするのか、する必要があるのか)
  5. ORCAはレセコンなので、検査結果や画像データは入っていない。それを在宅医療の現場でどのように活用するのか?また、活用する意味はあるのか?
もう一つあります。
それは,これまでJSON形式のデータを扱っていたスマホアプリをXML形式のデータを扱えるように修正することでした。これがやがてORCAクライアント開発へと繋がっていきます。

今後のスケジュールの確認

卒論発表までのスケジュールを作成しました。


卒論発表までもう2か月半しかありません。その間にアプリの開発と卒論執筆をやらなければならないのですから気を引き締めて取り掛からないと痛い目にあいそうです。
アプリを開発してから卒論を書いていたのでは間に合わないので並行して行うことにします。またゼミの時間だけではアプリを開発することができないのでゼミとゼミの合間にも開発作業は続けてください。

ORCA Client Ver 0.1の開発

夏休みの課題アプリをもとにしてORCAクライアントアプリの開発に着手します。
まず,初期画面です。これまで通り患者一覧を表示します。患者一覧データはORCA APIを使います。APIの中に患者番号一覧の取得というのがあり,これを用いてORCAに登録されている患者一覧情報を取得できます。


ORCA Client 初期画面


 ただし,このAPIでは患者の住所は入手できません。したがって,これまでと違って患者一覧の中には住所が出力されません。

次に,一覧から患者をタップしたとき,患者の基本情報と病名情報を表示します(下図)。

ORCA Client 患者情報画面

これまでは,患者受診一覧を表示していましたが,APIには受診一覧を取得する機能が見当たらないので,ここでは代わりに病名情報を表示してあります(画面下部)。患者病名情報を取得するAPIは患者病名情報の返却です。
また,画面上部には患者一覧画面に表示されていた項目を出力していましたが,ここでは患者基本情報を取得するAPIを使って住所や電話番号を出力しています。このAPIではほかにも禁忌,感染情報,アレルギー,コメント,保険情報なども取得できるので,必要に応じてそれらも出力するとよいでしょう。

APIを使う前に

最終的にはORCAの提供するAPIを使ってスマホはORCAサーバと通信することになります。しかし,ORCAと通信するには認証を受けたり,必要なデータをポストメッセージで送信したりといろいろ面倒な手順を踏まなければなりません。
そこで,最初は従来と同じようにWebサーバから固定XMLデータを取得してそれを画面編集するプログラムを作成し,それが完成してからORCAサーバと通信するように修正していこうと思います。このようにプログラムの初心者はいきなり難しいことに取り組もうとするのではなく徐々に修正して最終的に完成されるというスタイルで開発を進めていったほうが無難です。
下記はそのために使う固定XMLデータです。

2016年7月26日火曜日

夏休み前の最後のゼミです!

さて、今日は夏休み前の最後のゼミです。先週は、サーバからJSON形式で患者一覧情報と患者受診一覧情報を受け取り、それを画面に表示するプログラムを作成しました。今日は、その応用で、JSON形式ではなくXML形式で患者一覧情報と患者受診一覧情報を受け取り、それを画面に表示するプログラムを作成します。

患者一覧XMLデータ

Ajaxで取得する患者一覧のXMLデータです。このデータは次のURLで取得します。
http://172.16.108.250/~semi2015/XML/getPatientList.php
JSON形式と違ってXMLタグで各データ要素の意味が明確です。
<?xml version="1.0" encoding="UTF-8"?>
<patientList>
  <patient>
    <id>A0001</id>
    <name>在本 璃奈</name>
    <gender>female</gender>
    <birthdate>1996/4/1</birthdate>
    <address>岡山県倉敷市山田町1丁目-2-3</address>
  </patient>
  <patient>
    <id>A0002</id>
    <name>清水 伸平</name>
    <gender>male</gender>
    <birthdate>1995/5/10</birthdate>
    <address>岡山県岡山市苦米地3丁目-5-6</address>
  </patient>
  <patient>
    <id>A0003</id>
    <name>田中 昌昭</name>
    <gender>male</gender>
    <birthdate>1958/7/6</birthdate>
    <address>岡山県瀬戸内市大岡5丁目-9-8</address>
  </patient>
</patientList>

患者受診一覧XMLデータ

続いて患者受診一覧のXMLデータです。このデータは、以下のURLで取得します。
http://172.16.108.250/~semi2015/XML/getVisitData.php
<?xml version="1.0" encoding="UTF-8"?>
<visitData>
  <patient id="A0001">
    <visit>
      <date>2016/5/20</date>
      <dept>内科</dept>
      <diseaseName>気管支炎</diseaseName>
    </visit>
    <visit>
      <date>2014/1/29</date>
      <dept>外科</dept>
      <diseaseName>大腿骨骨折</diseaseName>
    </visit>
    <visit>
      <date>2015/8/6</date>
      <dept>耳鼻科</dept>
      <diseaseName>中耳炎</diseaseName>
    </visit>
  </patient>
  <patient id="A0002">
    <visit>
      <date>2016/3/19</date>
      <dept>内科</dept>
      <diseaseName>インフルエンザ</diseaseName>
    </visit>
    <visit>
      <date>2015/2/10</date>
      <dept>外科</dept>
      <diseaseName>虫垂炎</diseaseName>
    </visit>
  </patient>
  <patient id="A0003">
    <visit>
      <date>2016/4/8</date>
      <dept>眼科</dept>
      <diseaseName>白内障</diseaseName>
    </visit>
    <visit>
      <date>2013/2/5</date>
      <dept>内科</dept>
      <diseaseName>心筋梗塞</diseaseName>
    </visit>
    <visit>
      <date>2011/11/4</date>
      <dept>皮膚科</dept>
      <diseaseName>アトピー性皮膚炎</diseaseName>
    </visit>
    <visit>
      <date>2014/12/15</date>
      <dept>精神科</dept>
      <diseaseName>気分障害</diseaseName>
    </visit>
  </patient>
</visitData>
患者受診一覧XMLデータには、複数の患者の受診履歴があり、patient要素のid属性でどの患者の受診履歴か区別できるようになっています。

XML形式のデータの扱い方

サーバからのレスポンスがJSON形式からXML形式に変わったからといってもプログラムが大きく変わるわけではありません。変更点は大きく以下の2点です。
  1. サーバのURLが変わる
  2. サーバからのレスポンスが変わる
URLについては上で示した通りです。サーバからのレスポンスはJSON形式ではなくXML形式となり、Ajaxで取得したデータはJSON形式の時のように解析(JSON.parse)する必要はなく、そのまま使えます。
次に、XML形式のデータはXMLオブジェクトとしてプログラム中に取り込まれ、JSON形式のデータがJSON.parseによってjavascriptオブジェクトに変換されるのと異なります。XMLオブジェクトの取り扱い方は専用のメソッドを使います。
具体的には、タグ名が'ABC'の要素を取り出すには、$(XMLオブジェクト).find('ABC').text()とします。また,タグ名が'ABC'の要素の中にある属性値名が'XYZ'の属性値を取り出したい場合は$(XMLオブジェクト).find('ABC').attr('XYZ')とします。

2016年7月19日火曜日

いよいよ後半開始!

中間発表も終わり、いよいよ後半開始です。これまで、JSON形式のデータをスマホに表示するプログラムを作成してきましたが、ここからは、スマホに表示するデータをサーバから取得します。

AjaxによるJSON形式データの取得





図のように、スマホからHttpRequestと呼ばれるWebサービス要求を行います。すると、Webサーバは要求に対する応答をJSON形式のデータに編集してスマホへ返送します。たとえば、次の例は患者一覧を要求したときのJSON形式のレスポンスを示しています。

患者一覧要求に対するサーバのレスポンス(JSON形式)

これを受け取ったスマホ側のアプリは画面に患者一覧を表示します。このように、Webサーバと通信を行うことによって必要な情報を取得し、それを画面上に表示するプログラミング形態をAjaxと言います。これまで作成してきたアプリとの違いは、患者一覧データなどのデータを、javascriptファイルとしてあらかじめスマホ側に持たせるのではなく、必要になった時点で、サーバへ要求して取得する点が異なります。

では、Ajaxを用いたアプリを作成しましょう。修正すべきファイルは index.html と app.js です。

index.htmlの修正


患者一覧データ(js/patientList.js)と患者受診データ(js/visitData.js)は不要なのでコメントにします。

app.jsの修正


  • 患者一覧データ(patientList)を宣言する
  • 患者受診データ(visitData)を宣言する
  • 関数getPatientListを作成する
  • list-pageが表示されたとき、関数getPatientListを呼び出す
  • 関数getVisitDataを作成する
  • detail-pageが表示されたとき、関数getVisitDataを呼び出す

これまで、患者一覧データと患者受診データは、javascritファイルとして読み込んでいましたが、ここではAjaxを使ってサーバから取得するため、空の配列を宣言します。

  var currentItem = {};
  var visitData = [];
  var patientList = [];

上記の2~3行目がそれです。

患者一覧の作成


次に関数getPatientListを作成します。この関数は、app.js内に作成します(どこに作っても構いませんが、末尾に追加するのが良いでしょう)。この関数は、Ajaxを用いて、2行名に指定したURLに対して患者一覧データをリクエストしています。結果は doneコールバック関数の第1引数(response)に返ってきます。JSON形式の患者一覧を11行目でパース(解析)してjavascriptオブジェクトに変換して変数 res へ代入しています。実際の患者一覧は、このオブジェクトのメンバ変数であるpatientListに格納されているので、これを上で宣言したグローバル変数 patientList へ代入します。
function getPatientList() {
    var url = 'http://172.16.108.250/~semi2015/sample/getPatientList.php';

    $.ajax({
        type: 'GET',
        url: url,
        async: false,
        cache: false
    }).done(function(response, status, error){
        if (status == 'success') {
            var res = JSON.parse(response);
            if (res.status == 'OK') {
                patientList = res.patientList;
            } else {
                alert('ERROR:res.status=' + res.status);
            }
        } else {
            alert('文書データ取得失敗');
        }
    }).fail(function(xhr, status, error){
        var message = "xhr.status = " + xhr.status + ", xhr.statusText = " + xhr.statusText + ", status = " + status + ", error = " + error;
        alert('サーバから応答がありません: ' + message);
    });
}
作成した関数getPatientListは、list-pageが表示されたタイミングで呼び出し(2行目)、患者一覧データ(patientList)を取得した後、画面に出力します。その部分が下記のプログラムです。
  $(document).on('pageinit', '#list-page', function() {
    getPatientList();
    var html = '';
    $.each(patientList, function(i, item) {
        html += '<ons-list-item modifier="chevron" class="item">';
        html += '<ons-row>';
        html += '<ons-col width="60px"> ';
        html += '<div class="item-thum">';
        html += '</div>';
        html += '</ons-col>';
        html += '<ons-col>';
        html += '<header>';
        html += '<span class="item-id">' + item.id + '</span>';
        html += '<span class="item-gender">' + item.gender + '</span>';
        html += '</header>';
        html += '<p class="item-name">' + item.name + '</p>';
        html += '<p class="item-birthdate">' + item.birthdate + '</p>';
        html += '<p class="item-address">' + item.address + '</p>';
        html += '</ons-col>';
        html += '</ons-row> ';                        
        html += '</ons-list-item>';
      }
    );
    $("#item-list").html(html);
    var content = $("#item-list").get(0);
    ons.compile(content);

    $('.item', this).on('click', function() {
      currentItem = {
        id : $('.item-id', this).text(),
        gender : $('.item-gender', this).text(),
        name : $('.item-name', this).text(),
        birthdate : $('.item-birthdate', this).text(),
        address : $('.item-address', this).text()
      };

      app.navi.pushPage('detail.html');
    });
  });

受診一覧の作成


次に関数getVisitDataを作成します。 この関数も、app.js内に作成します。上記で作成したgetPatientListに続いて作成してください。この関数は、Ajaxを用いて、2行目に指定したURLに 対して指定した患者(patientId)の受診一覧データをリクエストしています。患者を指定するために、クエリストリング(?patientId=患者番号)を使っている点に注目してください。指定する患者IDは関数getVisitDataの引数で関数へ渡しています。結果は、getPatientListの場合と同様に doneコールバック関数の第1引数(response)に返ってきます。JSON形式の受診一覧を11行目でパース(解析)してjavascriptオ ブジェクトに変換して変数 res へ代入しています。実際の受診一覧は、このオブジェクトのメンバ変数であるvisitDataに格納されているので、これを上で宣言したグローバル変 数 visitData へ代入します。
function getVisitData(patientId) {
    var url = 'http://172.16.108.250/~semi2015/sample/getVisitData.php?patientId=' + patientId;

    $.ajax({
        type: 'GET',
        url: url,
        async: false,
        cache: false
    }).done(function(response, status, error){
        if (status == 'success') {
            var res = JSON.parse(response);
            if (res.status == 'OK') {
                visitData = res.visitData;
            } else {
                alert('ERROR:res.status=' + res.status);
            }
        } else {
            alert('文書データ取得失敗');
        }
    }).fail(function(xhr, status, error){
        var message = "xhr.status = " + xhr.status + ", xhr.statusText = " + xhr.statusText + ", status = " + status + ", error = " + error;
        alert('サーバから応答がありません: ' + message);
    });
}
作成した関数getVisitDataは、detail-pageが表示されたタイミングで当該患者ID(currentItem.id)を引数として呼び出し(2行目)、患者受診データ(visitData)を取得した後、画面に出力します。その部分が下記のプログラムです。
  $(document).on('pageinit', '#detail-page', function() {
    getVisitData(currentItem.id);
    var html = '';
    $.each(visitData, function(i, item) {
        html += '<ons-list-item class="detail-item">';
        html += '<header>';
        html += '<span class="detail-item-date">' + item.date + '</span>';
        html += '</header>';
        html += '<p class="detail-item-dept">' + item.dept + '</p>';
        html += '<p class="detail-item-diseaseName">' + item.diseaseName + '</p>';
        html += '</ons-list-item>';
    });
    $("#detail-item-list").html(html);
    var content = $("#detail-item-list").get(0);
    ons.compile(content);
    $('.item-id', this).text(currentItem.id);
    $('.item-gender', this).text(currentItem.gender);
    $('.item-name', this).text(currentItem.name);
    $('.item-birthdate', this).text(currentItem.birthdate);
    $('.item-address', this).text(currentItem.address);
    $('.add-note-action-item', this).click(function () {
        alert('dummy message');
    });
  });

なお、このプログラムが、従来の処理と違うのは、4行目の繰り返し処理において visitData が連想記憶の要素 visitData[currentItem.id] になっていない点です。これは、関数getVisitDataで取得した受診データが、指定した患者の受診データなので、わざわざ患者IDを指定して配列要素を取ってくる必要がないからです。

2016年7月13日水曜日

中間発表終わりました!

今日、中間発表が終わりました。発表自体は悪くなかったですが、質問には明快に答えられませんでした。忘れないうちに質問を書き残しておきましょう。
  • 何故電子カルテではなくORCAなのか?
  • スマホをORCAの端末として利用するという研究?
  • それは「連携」と言えるのか?
  • ORCAとスマホをつなぐ先行事例はある?
  • 研究の目的をもっとしっかり説明した方がいい(なぜ、この研究をするのか、する必要があるのか)
いかがでしょう。どれもなかなか本質を突いた厳しい質問です。漫然と言われたことだけやっていてはだめですね。何のためにやっているのかを意識しながらやらないとね。ORCAは医事コンなので、検査結果や画像データは入っていない。それを在宅医療の現場でどのように活用するのか?また、活用する意味はあるのか?そのあたりについても考えていかないといけませんね。



2016年6月29日水曜日

中間発表に向けての準備

いよいよ中間発表が迫ってきました。今日はその準備です。まず中間発表の流れを考えます。
  • これまでやってきたこと(3年生秋学期~今日まで)
    • VMware上にLinuxインストール
    • Javascriptの勉強
    • PHP+MySQL
    • 成果:ボールゲーム(オープンキャンパスでパネルからリンク)
  • 卒研テーマ:在宅医療を支援するための医事会計システム(ORCA)連携スマホアプリの開発
    • 概要:
    • 研究の目的(この研究は何のためにやるのか):
    • 目標(卒研でどこまでを目標とするか):
    • 現状(どこまで研究が進んでいるか、今後何をしなければならないか、何か問題はないか):
      • これについては、現在Monacaで開発中のスマホアプリを報告する
      • 患者一覧→患者の受診履歴

VMwareのインストール


VMwareの初期画面

VMwareはWindowsパソコンでLinuxを利用するために必要なコンピュータの仮想化ソフトウェアです。使用したのはVMware Workstation 12 Playerです。

CentOSのインストール

VMware上で稼働するCentOS 6.7

次にVMware上にCentOSをインストールしました。バージョンはCentOS 6.7です。これは、Javascriptの勉強をするためのWebサーバとして稼働させたものです。WebサーバにはApacheを用いました。

ボールゲームの作成

javascriptで開発したボールゲーム
javascriptを勉強するためにボールゲームを作成しました。このゲームは、画面上に3つのボール(バスケットボール、サッカーボール、赤いボール)を動かせ、バスケットボールを上下左右のボタンでコントロールし、サッカーボールにぶつけたら得点、赤玉にぶつけたら減点するというルールで一定の時間内に何点取れるかを競うゲームです。PCだけでなくスマホでも楽しめ、オープンキャンパスで展示しました。

在宅医療を支援するための医事会計システム(ORCA)連携スマホアプリの開発

次に4年生になってから卒研テーマを決定しました。テーマは、診療所内で動いている医療情報システムを、訪問診療の際に、スマホから利用できるようにするシステムを開発することです。なぜこのようなシステムを開発しようとしたかと言うと、医師が訪問先の患者宅や自宅で患者情報を確認したり、処方内容や検査内容を見たいとき、スマホで手軽に見ることができたら便利だと考えたからです。しかし、これはあくまでもで私たちが想像したことで、実際にそのような必要性があるかどうかはきちんと調査しなければなりません。
今回は、医療情報システムとして、日本医師会が開発した日医標準レセプトORCAを利用することにしました。これはいわゆる開業医向けのレセコンです。なぜ、ORCAを選んだかと言うと、ORCAは無料で使えるからです。それだけでなく、全国で1万6千を超えるユーザがいるので、開発したシステムが利用される可能性もあると考えたからです。また、ユーザが多い分、技術情報もたくさんネットから得られるます。しかし、何よりも魅力なのは、ORCAが日医標準レセプトAPIというWebAPIを提供していたことです。WebAPIがあれば、スマホのアプリから簡単にORCAの機能を利用できます。ORCAの内部構造を知らなくても簡単に連携ができるのです。

ORCAのクライアント(患者登録画面)

システム構成図

開発するシステムの構成は次のようになっています。

システム構成

スマホアプリからORCAサーバに向けて患者情報や受診履歴などのリクエストを行います。その際、スマホアプリは日医標準レセプトAPIを利用します。 今回、スマホアプリは3年次生の時に勉強したjavascriptで作成しました。開発環境としてはクラウド型スマホアプリ開発環境であるMonacaを利用しています。MonacaはHTML5+javascriptでハイブリッドスマホアプリを開発できる開発環境です。また、javascriptライブラリとしてはjQueryを利用しました。そのjavascriptを使ってHttpRequestを利用してORCAサーバにHTTPリクエストを送ります。すると、ORCAはリクエストに対するレスポンスをXML形式で返してきます。たとえば、次のXMLデータは、スマホが患者基本情報を要求したときのレスポンスデータです。

<?xml version="1.0" encoding="UTF-8"?>
<xmlio2>
  <patientinfores type="record">
    <Information_Date type="string">2016-06-29</Information_Date>
    <Information_Time type="string">09:18:03</Information_Time>
    <Api_Result type="string">00</Api_Result>
    <Api_Result_Message type="string">処理終了</Api_Result_Message>
    <Reskey type="string">Patient Info</Reskey>
    <Patient_Information type="record">
      <Patient_ID type="string">00001</Patient_ID>
      <WholeName type="string">川崎 太郎</WholeName>
      <WholeName_inKana type="string">カワサキ タロウ</WholeName_inKana>
      <BirthDate type="string">1958-07-06</BirthDate>
      <Sex type="string">1</Sex>
      <HouseHolder_WholeName type="string">川崎 太郎</HouseHolder_WholeName>
      <Relationship type="string">本人</Relationship>
      <Home_Address_Information type="record">
        <Address_ZipCode type="string">7010114</Address_ZipCode>
        <WholeAddress1 type="string">岡山県倉敷市松島</WholeAddress1>
        <PhoneNumber1 type="string">086-462-1234</PhoneNumber1>
        <PhoneNumber2 type="string">086-462-1111</PhoneNumber2>
      </Home_Address_Information>
      <Community_Cid_Agree type="string">False</Community_Cid_Agree>
      <FirstVisit_Date type="string">2016-06-11</FirstVisit_Date>
      <LastVisit_Date type="string">2016-06-12</LastVisit_Date>
      <HealthInsurance_Information type="array">
        <HealthInsurance_Information_child type="record">
          <Insurance_Combination_Number type="string">0001</Insurance_Combination_Number>
          <InsuranceCombination_Rate_Admission type="string">0.30</InsuranceCombination_Rate_Admission>
          <InsuranceCombination_Rate_Outpatient type="string">0.30</InsuranceCombination_Rate_Outpatient>
          <InsuranceProvider_Class type="string">060</InsuranceProvider_Class>
          <InsuranceProvider_Number type="string">330019</InsuranceProvider_Number>
          <InsuranceProvider_WholeName type="string">国保</InsuranceProvider_WholeName>
          <HealthInsuredPerson_Symbol type="string">あいう</HealthInsuredPerson_Symbol>
          <HealthInsuredPerson_Number type="string">123456</HealthInsuredPerson_Number>
          <HealthInsuredPerson_Assistance type="string">3</HealthInsuredPerson_Assistance>
          <HealthInsuredPerson_Assistance_Name type="string">3割</HealthInsuredPerson_Assistance_Name>
          <RelationToInsuredPerson type="string">1</RelationToInsuredPerson>
          <HealthInsuredPerson_WholeName type="string">川崎 太郎</HealthInsuredPerson_WholeName>
          <Certificate_StartDate type="string">2016-06-05</Certificate_StartDate>
          <Certificate_ExpiredDate type="string">9999-12-31</Certificate_ExpiredDate>
          <Insurance_CheckDate type="string">2016-06-05</Insurance_CheckDate>
        </HealthInsurance_Information_child>
      </HealthInsurance_Information>
    </Patient_Information>
  </patientinfores>
</xmlio2>
スマホアプリは受け取ったXMLデータを画面にレンダリングします。
なぜこのようなシステムを開発するのか
私たちのゼミではなぜスマホを使ったこうしたシステムを開発するのか説明しておきましょう。私たちのゼミでは、3年前からスマホを使って在宅医療を支援するシステムの開発を行ってきました。昨年はPACSサーバを構築して、訪問診察など外出先からスマホを使って画像を送ったり検索・閲覧したりするシステムを開発しました。 画像ができたので、じゃあ、今度は電子カルテをスマホから利用できるようにしたいと思い、今年のテーマに選びました。しかし、診療所向きで私たちが入手できる電子カルテがありませんでした。そこで、日本医師会が無料で提供しているORCAに注目したのです。ORCAは医事会計システム(レセプトシステム:レセコン)で、電子カルテではありません。したがって、医師が書く診療録は入っていません。患者情報と診療行為のみです。しかも、診療報酬に必要なデータしか入っていないので、例えば検査結果などは入っていません。ですから在宅診療に利用するには機能はかなり限定的です。しかし、手法自体はスマホが連携する相手がORCAであろうが電子カルテであろうが変わりません。つまり、今回の研究は実用性を目指すというよりも方法論を示すための研究です。この方法でうまくスマホ連携ができれば、あとはこの考え方で様々なシステムを連携を図ればよいのです。ですから、今回の研究の目的は「スマホを使って在宅医療を支援する」ですが、目標は「スマホとORCAの情報連携を確立する」ということになります。その際に利用するのがWebAPIというわけです。

2016年6月22日水曜日

ORCAについてもっと知ろう!

私たちのゼミではORCAの機能をスマートフォンから利用できるアプリを開発しています。ではなぜこのようなアプリを開発する必要があるのでしょうか?ORCAは診療所で利用されているオープンソフトウェアの医事会計システムです。2016-05-16現在で稼働実績は15,656施設にも達しており、非常によく利用されている医事会計システムといってよいでしょう。ちなみに平成27年1月現在の診療所の数は100,801施設です(厚生労働省医療施設実態調査)。すなわちORCAのシェアは約16%ということになります。ちなみに一般診療所向け医事会計システムのシェアNo.1はパナソニックのメディコムで38.9%(2015年9月現在)ということです。
さて、そのORCAをスマホ等のモバイル端末で操作できるソフトウェアは殆どありません(ORCA mobiClipla)。医事会計システムをモバイル端末で操作できるメリットを考えてみましょう。
  • 在宅医療など出先からでも患者の情報を参照できる
  • どんな薬をいつ出したかがわかる
  • どんな検査をいつ行ったかがわかる
  • 外出先から診療予約を入れることができる
  • 外出先から診療行為を入力することができる
このようにいろいろ考えることができますが、実際の現場で利用されるかどうか、必要性があるかどうかはわかりません。今はそういうアプリがあったらいいなという思い込みで開発を進めていますが、いずれそれについても調べる必要があるでしょう。


2016年6月15日水曜日

ORCAに触ってみよう!

ORCAは日本医師会が開発した診療所向けの医事会計システムです。オープンソフトなので自由にダウンロードして利用できます。実際の業務で利用することを想定していますので膨大な機能があります。このゼミではスマホからORCAの機能を呼び出して利用するアプリの開発を目指しています。
では、ORCAがどのようなものかを把握するために操作マニュアルに従ってORCAで職員登録と患者登録を行ってみます。
ORCAを利用するには、ORCAクライアントを使います。ORCAクライアントはGoogleドライブのORCAフォルダへ保存してあります(ORCAクライアントはここからダウンロードできます。Java Web Start版をダウンロードしてください)。起動したら次の手順でサーバの設定を行います。
  1. [ホスト(ポート)]に172.16.108.250と8000を入力
  2. [ユーザ]にormaster
  3. [パスワード]にormaster
  4. [パスワードを保存]をチェック
  5. [接続]をクリック
 ORCAクライアントが起動したら、職員登録を行います。職員登録についてはマニュアルの「第5章マスタ登録」-[5.1システム管理マスタ]の「1010 職員情報」に従って行ってください。
職員登録ができたらいったんORCAクライアントを終了させて、再び起動して、登録したユーザでログインしてください。
次に患者登録を行います。患者登録は入力マニュアルの「第2章日時業務」-「2.2登録(患者登録について)」に従って行ってください。