レセプトまるみえ君の作り方 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 で、どうやって情報が処理されているかを理解していただければ、安心感も増すのではないかと、下手な自作のプログラムを公表した次第です。







いいなと思ったら応援しよう!