レセプトまるみえ君の作り方 1
まず、サイトを表示して新規ユーザー登録をして、ログインしてみてください。最初はとても時間がかかりますが、我慢してお待ちください。「heroku」の無料プランだからです。
画面が表示されたら「名前を付けてページを保存」します。右クリックは禁止になっているので、Chrome の場合メニューから「その他のツール」で選択してください。「レセプトまるみえ君.html」というファイルと「レセプトまるみえ君_files」というフォルダが保存されていると思います。
html ファイルをブラウザじゃなくメモ帳で開いてみます。右クリック、「プログラムから開く」、「他のアプリ」などで開いてみて下さい。ずっと下の方に、、、
<script type="text/javascript" src="./レセプトまるみえ君_files/marumie2.js.ダウンロード"></script>
ここで、javascript を読み込んでいます。フォルダをあけてみると、js のファイルがたくさんあります。これらが javascript の本体です。このうち、marumie2.js と tools.js が恥ずかしながら筆者の書いた分です。
javascript はこうやって覗き見ることができるので、隠し事はできません。
では、marumie2.js をメモ帳で開けてみましょう。visual studio code などで開けばその方が読みやすいかもしれません。あちこちから借りてきたコードをつなぎあわせて、インデントも統一せず、汚い書き方なので、お恥ずかしい限りです。
$(function(){ のなかの var handleDroppedFile = function(event) { のところに、ドロップしたときにやることを書きます。fileReader で読み込みます。event.target.result に読み込んだ内容が入ります。
個人情報の隠蔽とアップロード
var Str = event.target.result;
if( $("#masked").prop("checked") ){
Str = MaskUKE(Str,true);
}
postForm(Str);
チェックボックスがチェックされていれば、個人情報の隠蔽をやります。
MaskUKE() の内容は tools.js にあります。2番目の引数は施設情報を隠蔽するかどうかを指定します。
function MaskUKE(Str,MskCln){
var R = "";
var S = "";
R = Line(Str,0);
if(MskCln){
str = Csv(R,4,",") + Csv(R,6,",");
R = CsvInsert(R,4,",","********");
R = CsvInsert(R,6,",","--------");
R = CsvInsert(R,9,",", "***-***-****") + "\r\n";
}
for(var i = 1; i < LineCount(Str); i++){
var L = Line(Str,i);
if(Csv(L,0,",") == "RE"){
S = Csv(R,4,","); if(S != ""){S = "--------";}
L = CsvInsert(L,4,",", S);
L = CsvInsert(L,36,",", "--------");
}else if(Csv(L,0,",") == "HO"){
S = Csv(R,1,","); if(S != ""){S = "*******";}
L = CsvInsert(L,1,",", S);
S = Csv(R,2,","); if(S != ""){S = "-------";}
L = CsvInsert(L,2,",", S);
S = Csv(R,3,","); if(S != ""){S = "*******";}
L = CsvInsert(L,3,",", S);
}
R = R + L + "\n";
}
return R
}
1行目が施設情報です。5、7、10列目の医療機関コード、施設名称、電話番号を置き換えます。
2行目以降では、まず、RE行の患者名、フリガナを置き換えます。乳幼児加算とかあるので誕生日は残すことにしました。次に、HO行の保険者番号、記号、番号を置き換えます。
フォーマットについては「レセプト電算データの中身」を参照ください。
Csv(), CsvInsert(), Line(), LineCount() などは、Csvを扱うための自作の関数です。不備があるかもしれませんが、いまのところよく働いています。
いろいろ置き換えて、情報を隠蔽した文字列をそのまま postForm(); でアップロードします。
function postForm(value) {
var form = document.createElement('form');
var request = document.createElement('input');
form.method = 'POST';
request.type = 'hidden'; //入力フォームが表示されないように
request.name = 'text';
request.value = value;
form.appendChild(request);
document.body.appendChild(form);
form.submit();
}
ふつうの form はボタンを押すと POST されますが、隠れ form を作って submit するかんじです。
ここまでが、自分のPCで処理される、サーバー前の段階です。
heroku は https で、暗号化通信だし、個人情報は隠蔽しなくてもサーバーには保存されないのですが、プログラムがまるみえになっている javascript で、どうやって情報が処理されているかを理解していただければ、安心感も増すのではないかと、下手な自作のプログラムを公表した次第です。