NST栄養管理情報のICT化について

0、この文章の目的


NSTでは患者さんの栄養状態を評価するために、電子カルテから必要な患者データを拾ってくる必要があります。専用のソフトウェアを導入し、電子カルテと連動して数秒で必要なデータの一覧が取得できるのであればこの記事を読む必要はありません。

一部の医療従事者は専用のソフトウェアを導入することができない場合に、電子カルテを開き、患者IDを入力し、必要な画面にたどり着き、ひとつひとつのデータをExcelなどにコピー&ペーストしているのではないでしょうか?1件につき1分であれば簡単な作業のようですが、これが30件になると30分かかり単純な作業の繰り返しに飽き飽きします。

これは担当者が専従であれば時間が取れるとかそういう問題ではありません。医療従事者の仕事はデータの抽出ではなく、データの評価です。必要なデータは例え30件であっても1~2分でストレスなく取得されるべきです。そのためのいくつかのアイデアを紹介していきます。

なお、ここで紹介する知識については特別な事情まで考慮していませんので、すべての状況に対応しうるものではありません。

1、Excelについて

・Excelの問題点

電子カルテの入ったパソコンにはセキュティ上の理由で個人でソフトウェアをインストールすることは禁止されている場合がほとんどです。もしすでに入っているソフトウェアがあるとすればExcelが挙げられます。

Excelにはマクロと呼ばれる機能が存在し、マクロはプログラムの一種です。マクロを使うと画面上のデータを集計したり、計算した結果を表示することが簡単にできます。この機能を使いたいためにExcelを利用するという場面は多いでしょう。

Excelの不便なところはデータをファイルとして取得する場合です。例えば、電子カルテの特定のデータをExcelで操作したい場合があったとします。しかし、電子カルテからExcelのファイルである拡張子xlsのファイルを書き出すのは困難なのです。電子カルテからExcelのファイルを開いて手作業や自動化で入力することは可能です。拡張子xlsのファイルはExcelだけが専用で使用できるデータ形式であり、電子カルテなどの他のソフトウェアが書き出すことはできません。

・csvとは何か?

拡張子csvのファイルは文字や数値のみのデータを持つファイルです。対して、拡張子xlsのファイルは文字の大きさ、書式、数式、枠線、マクロなどのすべての情報を持ちます。拡張子csvのファイルは非常にシンプルにできていてWindows標準のメモ帳でも読むことができます。拡張子csvのファイルを電子カルテやデータベースサーバーから書き出すことは驚くほど簡単です。

こういった経緯から電子カルテからcsvファイルを作成しExcelに読み込んで使用するという事例は見られます。しかし、ここでわざわざ扱いにくい拡張子xlsのファイルに変換する必要があるでしょうか?電子カルテが書き出したcsvファイルをExcel以外のソフトウェアで処理するほうが簡単です。csvファイルをそのまま利用するという考えかたがあってもいいのではないかと思います。

・データの規則性の問題

複数のデータをいちどに処理して作業時間を短縮したい場合があるとします。このときに複数のファイルを処理できるプログラムがあれば簡単に処理できるはずです。ここで大切なのがデータの規則性です。

名称についてはすべてID番号がついているべきですし、ID番号はすべて独立で重複は認められません。数値であるべきところに文字列が入っていたりするのもダメです。例えば、体重は数値で通常は「40.5」と記載するところに「40.5k」、「40.5kg」と記載したり「測定なし」などと記載してはいけません。

Excelでデータを作成するとExcel特有の反則を見かけます。セルを結合したり、1セルに2行に渡って文字列を入力したりする場合があります。勝手に行や列が追加される場合があるかもしれません。こういった規則性に従わないデータはプログラムによる一括処理を行う場合の大きな障害になります。

プログラムを書いたことがある人ならわかると思いますが、与えられる入力には規則性があるべきです。もし、規則に従わないとすればそれはどのような場合でどのように対応すべきかも定めておくべきです。もし規則性に従わないデータを規則に従わない場合の対応を指示せずに処理して欲しいとプログラマーに依頼するとほとんどの場合で無理と返答されるでしょう。

もし一括で処理できるようなデータ構造にする場合は電子カルテ上で入力させて、入力確定する際に入力の不正をソフトウェアでチェックし、不正があれば確定させない必要があります。ただし、この方法は柔軟な表現の入力を認めないことになるので現場からは不満が出そうです。

・Excelはどう使うべきか

電子カルテの入ったパソコンでExcelを利用する場合はたくさんあるでしょう。しかし、Excelは見栄えの良い画面を作ることはできますが、データを一括処理するためのデータの保管場所にするには不適です。なぜならExcelにはデータの規則性を破壊する機能が多数含まれています。複数のxlsファイルに入ったデータを集計して結果を表示するという要望はあるかもしれませんが、拡張子xlsのファイルが扱いにくいということ、xlsファイルが規則性を持っている可能性が低いという理由から集計はほぼ不可能ということになります。

もし複数のデータを管理するのであれば、ファイル名から内部データの構造まで規則性があるcsvファイルにしておくのが良い方法です。例えば、2023月11月25日のデータであればnst20231125.csvのようなファイル名にし、1列目には患者ID、2列目には氏名(性と名の間には半角スペース)、3列目には体重(単位はkgで数値のみ記載する、小数点第一位まで記載)と規則性を持たせます。

データを閲覧する場合にはメモ帳よりExcelを使うほうが見やすいでしょう。複数のcsvを取り込んで解析するのにも、見やすいグラフを作るのにもExcelは使えます。

もしなんとしてでもExcelでデータ管理をしたいのであればデータの規則性を念頭に入れましょう。ただし基礎知識の無い人間が規則性を守って入力するのには注意力とストレスがかかりそうです。規則性については総務省が以下のリンクでデータの作成法について基準を公開していますので、参考にできると思います。

https://www.soumu.go.jp/main_content/000723697.pdf

2、ソフトウェアでできること

・ソフトウェアとは何か?

ソフトウェアとはWindowsでいうとデスクトップ上にアイコンがあってダブルクリックすると起動するものです。電子カルテはおそらくソフトウェアでありますし、Excelもソフトウェアと言えます。ソフトウェアはプログラミング言語を使ってプログラムを書くことで作成することができます。

プログラミング言語の学習については図書館で解説本を見つけることができますし、インターネット上で学習することも可能です。プログラミング言語でプログラムを書いてソフトウェアを作成する場合にお金はかからず、ほとんどの場合で無料で作成することができます。

・ソフトウェアでできること

足し算、引き算、掛け算はソフトウェアの最も得意なことです。身長と体重を与えてBMIを計算するのは簡単です。身長と体重を入力しボタンを押すとBMIが表示されるソフトウェアであれば1時間もあれば完成すると思います。複数のファイルを読み込んで集計し結果を書き出すこともできます。規則性のある複数のcsvファイルが入った特定のフォルダを指定するとその中のすべてのファイルを読み込み、集計したcsvファイルを書き出すというソフトウェアは作成できます。どのような集計をするかにもよりますが2~3時間もあれば完成しそうです。印刷は簡単にできます。印刷した見た目を整える必要があればその調整に多くの時間を使うかもしれません。PDFファイルも簡単に作成できます。印刷結果をPDFに変換する仕組みがあるのでPDFも簡単に作成できると言えます。

先にも書きましたがExcelで使える拡張子xlsのファイルを別のソフトウェアが作成したり読み込んだりするのは困難です。何ができて何ができないかはプログラマーとしてプログラムを書いてみないと実感できない場合が多そうです。

・ソフトウェアができる過程

ソフトウェアを外注で作成するとどれくらいのコストがかかるでしょうか?まず要件定義が必要になります。導入する環境がどのようなものでどのような動作をするソフトウェアが必要なのか詳細を詰める必要があります。ソフトウェアが完成した後で「要件として言わなくても当然〇〇はできるものと思っていた。」とか「あと少し〇〇という機能を追加して欲しい。」などはよくある事例で、こういった対応はそもそもの設計から見直す必要があるためこのような事態が起こらないように要件定義は慎重に行き違いの無いように行われます。実際に担当者が交通費を使って病院に訪れ時間を使いますのでコストが発生します。次にこの用件でプログラムを作成できるプログラマーを確保します。この人員調整にもコストがかかります。プログラマーは1日仕事をすれば数万円の収益がないとやっていけませんのでプログラマーの人件費が発生します。また完成品のテストにコストがかかり、導入する際に人が出向けばコストが発生し、その後のアフターケア、制作会社の利益も乗せないといけないため数十万からの費用が必要になるのはなんとなくわかるのではないでしょうか。

・ソフトウェアは導入すべきか

無料の良いソフトウェアがあれば導入すべきですが、セキュリティ上の理由で電子カルテの入ったシステムにインストールできる可能性は低いと言えます。ソフトウェアを自作して導入する方法も同じ理由でできないでしょう。よって業者に外注してソフトウェアを入れてもらうというのは良い方法です。ソフトウェアを使用することで手作業の時間がいかに削減できて、ソフトウェア導入によって人件費がいかに下げられるかを病院側に主張すべきです。長く使い続けるためには、電子カルテの入れ替えなども想定して他システムに依存しすぎたり、個人のわがままを通して個性のあるソフトウェアにしないほうが良さそうです。

3、データベースとは何か?

・サーバーとは何か?

サーバーと聞くと難しいもののように思われますが実物はパソコンです。Windowsサーバーと呼ばれるサーバーがあり、Windowsという名前は誰でも知っていると思います。WindowsとWindowsサーバーの違いは、Windowsが人が何か作業を行うときにそのつど起動して使うものだとすると、Windowsサーバーは常に起動しておいて回線を通じて外部から操作を行うというようなものです。

実はWindowsサーバーはサーバーとしては主流ではなく、UnixサーバーやLinuxサーバーが主流となっています。UnixやLinuxはWindowsとは操作方法が異なりますので、サーバーの操作は何も知らない人から見ると難しいということになります。

UnixサーバーやLinuxサーバーを理解するためには、実際に自宅のパソコンにUnix系のOSやLinux系のOSをインストールして触ってみるのがいちばん理解が進むはずです。おすすめはLinux系のUbuntuでWebサーバーを立ち上げてみることです。初心者向けの解説も出回っており、実際に触ってみることでサーバーとは何かを理解するのに役立つと思います。

・データベースサーバーとは何か?

データーベースサーバーとはデータを保管することに特化したサーバーのことを言います。院内に電子カルテの入ったパソコンが100台あったとして、そのすべてのパソコンにそれぞれ膨大な患者情報を入れて管理するというのは現実的ではありません。どこかに巨大なデータを記録できるパソコンを1台起動しておいて、それぞれの電子カルテのパソコンから回線を通じてデータを拾いにいくほうが効率が良いです。このときに巨大なデータを保管し、電子カルテからデータの要求があればそのデータを渡す処理を行うパソコンをデータベースサーバーといいます。

データベースサーバーは24時間いつでもデータを渡すために待機しておく必要があるので基本は電源は入れっぱなしです。メンテナンスの時には一時的に電源を落とすなどの対応をします。

・データベースの標準化について

データベースサーバーは与えられたデータを効率よく保存したり、検索できたりする機能を持っています。これらの機能を備えたデータベースサーバーを電子カルテの制作会社が開発しているかというと、そういったケースは少ないと言えます。電子カルテを制作する会社は他社の作った性能の良いデータベースサーバーを導入し、そのデータベースサーバーと連動する電子カルテを開発しています。

データベースについては標準化が進められています。データベースサーバーの使い方がデータベースサーバーごとに異なると、利用者がそれぞれ異なる使い方を覚える必要があり不便です。データベースサーバーはデータベースサーバーごとに性能は異なるかもしれませんが、使い方については標準化する方向に向かっています。
データベースを扱うプログラム言語としてSQLと呼ばれるものがあり、データベースが標準的なSQLで操作できるのであれば、データベースと連動する電子カルテの開発は容易になります。

電子カルテを開発する会社はどのようなデータベースサーバーを導入するかを決定します。データベースサーバーの導入が決まればSQLのような標準的な方法で電子カルテからデータベースを操作するような機能を電子カルテに持たせることができます。

・データベースサーバーへのアクセス権

データベースは機能としてアクセスの権限を制御できます。電子カルテからデーターベースを操作するので、もちろん電子カルテには書き込みや読み込みの権限を与える必要があります。他に、電子カルテ以外のソフトウェアに読み込みだけの権限を与えるとか、一部のデータを読み込めるようにするなどの権限の設定が可能です。

電子カルテが利用するデータサーバーのデータを、権限を得た他社のソフトウェアがデータベースを扱う標準的な方法でデータに変更を加えずデータを読み込んで取得だけするということは可能です。

4、ここまで何を言いたかったか

Excelは便利なソフトウェアではあるがその便利さがかえって足かせになっている場合がないだろうか?csvファイルなどを利用することで大幅に時間を短縮するような仕組みは作れないだろうか?外注でソフトウェアを導入することで大幅な業務の効率化ができないだろうか?データベースサーバーから簡単にデータを引き出す仕組みは作れないだろうか?

5、カルテからデータを簡単に拾う

・お金をかけて良い場合

NST加算で元が取れるからなどの理由をつけて予算をもらいソフトウェアを導入してもらうのが近道です。誰でも使うことができそうな見た目でやりたいことがピンポイントでできます。ソフトウェアには複数のデータを少ない操作でいちどに処理できるような仕組みを導入すべきです。医療従事者の負担が減らなければ意味がありません。

・お金をかけたくない場合

X月のNST対象患者の体重や血液検査のデータを拾いたいとします。データベースサーバーからデータを拾うのは簡単にできるはずです。もしデータが拾えないとしたら、データが適当な規則性を持たずに登録されている場合やデータベースの設計に最初から問題があると考えられます。データが拾えるのであれば課題は誰がNST対象患者であるかということを識別するところです。

電子カルテの会社に「NST対象患者だけ体重と指定した検査値を取り出したい」と注文すると、相手は(NSTってなんだろう?と思いながら)「そのNST対象のフラグか何か立っていればできると思います。」(フラグか何かってなんだろう?)と不思議な返答をするようなことはありそうです。

これはつまりNST対象患者であるかないかを見分ける手段が電子カルテを作った会社側から見てわかるかどうかを確認しているということです。フラグ(目印)があるかどうかですね。医療従事者も電子カルテの会社の社員もお互い相手の理解できない専門用語を簡単に使いすぎます。もしかすると単なる言葉の行き違いでできることができないことになっているのではないかと思うことはあります。

NST対象患者を見分ける方法としてNST対象患者情報をデータベースサーバーに登録するという手段があります。これはデータベースサーバーの構造の作り替えになり大きな変更となりますので、費用を抑えるという意味ではお勧めできません。電子カルテの導入時に機能として組み込むならありでしょう。

個人的にお勧めなのはNST対象患者の患者IDをまとめたリストを1画面で用意して、ボタン等を押すと所定の場所にcsvファイルを作成するようなものを作ることです。患者IDをまとめたリストは1画面であることをお勧めします。各患者のカルテ画面ごとに登録する仕組みにすると登録の有無をわざわざ各患者のカルテ画面に見に行くことになり不便です。

csvファイルであるとExcelで枠線を追加したりセル幅を調節するのが面倒だと思われます。しかし、csvファイルを読み込むだけで自動で数値を枠線内に配置するような仕組みはExcelの機能を使ってできます。例えば、csvのデータをsheet1に貼り付けると、自動的にsheet2に用意しておいたテンプレート内に文字や数値を当てはめるというものです。

Excelできれいな画面が出来上がるとExcelのxlsファイルに保存して元のcsvファイルは削除してしまうことがあるかもしれません。しかし、後にデータの再集計を行う場合を考えて元のcsvファイルこそわかりやすいファイル名をつけて保存しておくべきです。

お金をかけたくない場合はお金をかけて良い場合に比べて多少なりとも知識が必要になり、マニュアルの完備とパソコンに詳しい職員の確保が必要になると思われます。

・お金が無い場合

電子カルテの会社に取得できる患者情報をcsvファイルで書き出す仕組みを作ってもらいます。

あとは膨大なcsvファイルを分別、集計するプログラムを自力で書きます。ハードルは高いですが、いったん仕組みができてしまえばいちいち画面を開いて数値を拾う作業に比べれば圧倒的に効率は良いはずです。集計のやり方の変更なども思うようにできます。高度な知識が必要となり担当者がいなくなったときにどう業務を引き継ぐかが課題になりそうです。

医療情報技師という資格があり、医療情報技師がこういった業務ができると助かります。

6、自作のプログラムを導入する裏技

自作のプログラムを動かしたい場合にやむを得ずExcelのマクロを使っているのが現状だと思います。

プログラミング環境を入れても良いと許可がでればPythonと呼ばれるプログラミング言語を使えるようにするのは良い方法です。

ソフトウェアをインストールする許可がなく、電子カルテ内にブラウザが入っている場合はJavaScriptと呼ばれるプログラミング言語が使えます。

JavaScriptを使ってcsvファイルを処理するサンプルを紹介します。

まずサンプルで使用するcsvファイルを用意します。内容は患者ID、患者名、体重で構成された以下のようなものです。Windows標準のメモ帳で以下を記載してsample.csv(sampleの部分はなんでも良い)というようなファイル名にして保存します。性と名の間は半角スペースです。カンマ、ドットは正確に入力してください。

111,山田 太郎,50.3
222,田中 花子,48.7
333,伊藤 次郎,51.7

次に、Windows標準のメモ帳に以下のようなプログラムを記載し例えばnst.html(nstの部分はなんでも良い)というようなファイル名にして保存します。このnst.htmlを開くとブラウザ中にボタンが表示されるのでボタンを押してサンプルで使用するcsvファイルを選択して開きます。するとNST対象患者である患者IDが111と333の患者のデータを抽出してテキストエリアに表示するはずです。対象患者が患者ID111と333であることはプログラム中に記載されています。

<html lang="ja">
<title>NST対象患者を抽出</title>
<body>
ボタンを押して拡張子.csvのファイルを開いてください。<br/>
<form name="myform">
<input name="myfile" type="file"><br/>
<textarea name="output" cols="100" rows="50"></textarea>
<form>

<script>
var arr = [
"111",
"333",
];
var form = document.forms.myform;
form.myfile.addEventListener('change', function(e){
	var result = e.target.files[0];
	var reader = new FileReader();
	reader.readAsText(result);
	reader.addEventListener('load', function() {
		var out = "";
		var str = reader.result;
		var tmp = str.split(/\r\n|\n/);
		for(var i = 0; i < tmp.length; i++){
			var a = tmp[i].split(',');
			if(arr.includes(a[0])){
				out += tmp[i] + "\n";
			}
		}
		form.output.textContent = out;
	})
})
</script>
</body>
</html>

このプログラムはJavaScriptを使って書かれており、患者データからNST対象患者のデータのみを抽出することが可能になっています。

他に、複数のcsvファイルをいちどに開いたり、昇順、降順にしたり、ダウンロードという形でファイルに書き出すこともJavaScriptでできます。

JavaScriptはマイナーなプログラミング言語ではありませんので、勉強するために情報が不足することはないと思います。

7、最後に

電子カルテを使っていると「え?なんでこれができないの?」と疑問に思える場面がたくさんあります。ICT化によって人間の業務は圧倒的に楽になるはずです。医療従事者がパソコンに向かって数値の拾い出しのような単純作業を繰り返すことはやってはいけないことだと思っています。

8、おまけ

「複数のcsvファイルをいちどに開く方法」と「昇順にする方法」、「ダウンロードという形でファイルを書き出す方法」のJavaScriptを用いた短いサンプルをこれ以降に記載します。

・サンプルプログラムの注意

使い方は黒枠内のコードをWindows標準のメモ帳にコピーしてnst.htmlのような名前で保存します。そしてnst.htmlをブラウザで開きます。単純な例で正常に動作することを確認していますが、想定外のパターンでうまく動作しない場合があるかもしれません。個人的に利用する場合に限りコードの修正は自由ですので改良してください。

・複数のcsvファイルをいちどに開く

Ctrlを押しながら選択することで複数のcsvファイルを開くことができます。テキストエリアにcsvファイルの中身が表示されます。

<html lang="ja">
<title>複数のcsvファイルをいちどに開く</title>
<body>
ボタンを押して拡張子.csvのファイルを開いてください。<br/>
Ctrlを押しながら選択すると複数のファイルが選べます。<br/>
<form name="myform">
<input name="myfile" type="file" multiple><br/>
<textarea name="output" cols="100" rows="50"></textarea>
<form>

<script>
var form = document.forms.myform;
form.myfile.addEventListener('change', function(e){
	var files = e.target.files;
	var reader = [];
	for(var i = 0; i < files.length; i++){
		reader[i] = new FileReader();
		reader[i].readAsText(files[i]);
		const f = function(e){
			var str = reader[this.n].result;
			var tmp = str.split(/\r\n|\n/);
			for(var j = 0; j < tmp.length; j++){
				var out = tmp[j] + "," + files[this.n].name + "\n";
				form.output.textContent += out;
			}
		}
		reader[i].addEventListener('load', {n: i, handleEvent: f})
	}
})
</script>
</body>
</html>

・昇順にする

ファイルを開くと自動的に体重で昇順になります。csvファイルは1列目が患者ID、2列目が氏名、3列目が体重(数値)とします。この規則を守らないと正常に動作しません。

<html lang="ja">
<title>昇順にする</title>
<body>
ボタンを押して拡張子.csvのファイルを開いてください。<br/>
csvファイルは1列目が患者ID、2列目が氏名、3列目が体重(数値)とします。<br/>
<form name="myform">
<input name="myfile" type="file"><br/>
<textarea name="output" cols="100" rows="50"></textarea>
<form>

<script>
var form = document.forms.myform;
form.myfile.addEventListener('change', function(e){
	var result = e.target.files[0];
	var reader = new FileReader();
	reader.readAsText(result);
	reader.addEventListener('load', function() {
		var out = "";
		var str = reader.result;
		var tmp = str.split(/\r\n|\n/);
		var arr = [];
		for(var i = 0; i < tmp.length; i++){
			a = tmp[i].split(',');
			arr[i] = {id: a[0], name: a[1], weight: a[2]};
		}
		arr.sort(function(a,b){
    		if(a.weight < b.weight) return -1;
    		if(a.weight > b.weight) return 1;
    		return 0;
    	});
    	for(var i = 0; i < arr.length; i++){
			out += arr[i].id + "," + arr[i].name + "," + arr[i].weight;
			if(i != arr.length-1)out += "\n";
		}
		form.output.textContent = out;
	})
})
</script>
</body>
</html>

・ダウンロードという形でファイルを書き出す(csvファイル)

ボタンを押すとsample.csvをダウンロードします。ダウンロード前にテキストエリア内を編集することも可能です。
このファイルはExcelで開くと文字化けします。これはcsvファイルの文字コードがUTF-8になっているからです。いったんWindows標準のメモ帳でcsvファイルを開き、名前をつけて保存を選んでその際にエンコードをANSIにして上書きすると改善します。

<html lang="ja">
<title>ダウンロードという形でファイルを書き出す(csvファイル)</title>
<body>
ボタンを押すとsample.cvsをダウンロードします。<br/>
<form name="myform">
<button id="download">csvファイルをダウンロード</button><br/>
<textarea name="output" cols="100" rows="50">
111,山田 太郎,50.3
222,田中 花子,48.7
333,伊藤 次郎,51.7</textarea>
<form>

<script>
var form = document.forms.myform;
document.getElementById("download").addEventListener("click", function() {
	var out = form.output.value;
	var blob = new Blob([out], {type: "text/plain"});
	var url = URL.createObjectURL(blob);
	const a = document.createElement("a");
	a.href = url;
	a.download = "sample.csv";
	a.click();
	URL.revokeObjectURL(url);
});
</script>
</body>
</html>

・ダウンロードという形でファイルを書き出す(htmlファイル)

先にcsvファイルを読み込んでおきます。次に、ボタンを押すとsample.htmlをダウンロードします。ダウンロード前にテキストエリア内を編集することも可能です。
ダウンロードしたhtmlファイルはダブルクリックでブラウザに開くことができるのでブラウザの機能を使ってすぐに印刷できます。また、印刷機能からPDFで保存することも可能です。

<html lang="ja">
<title>ダウンロードという形でファイルを書き出す(htmlファイル)</title>
<body>
先にcsvファイルを読み込みます。<br/>
ボタンを押すとsample.htmlをダウンロードします。<br/>
<form name="myform">
<input name="myfile" type="file"><br/>
<button id="download">htmlファイルをダウンロード</button><br/>
<textarea name="output" cols="100" rows="50"></textarea>
<form>

<script>
var form = document.forms.myform;
form.myfile.addEventListener('change', function(e){
	var result = e.target.files[0];
	var reader = new FileReader();
	reader.readAsText(result);
	reader.addEventListener('load', function() {
		form.output.textContent = reader.result;
	})
})
document.getElementById("download").addEventListener("click", function() {
	var out = "<html><body>◎ NST対象患者<table border=1>";
	out += "<tr><th>患者ID</th><th>氏名</th><th>体重(kg)</th></tr>";
	var str = form.output.value;
	var tmp = str.split(/\r\n|\n/);
	for(var i = 0; i < tmp.length; i++){
		var a = tmp[i].split(',');
		out += "<tr>";
		for(var j = 0; j < a.length; j++){
			out += "<td>" + a[j] + "</td>";
		}
		out += "</tr>";
	}
	out += "</table></body></html>";
	var blob = new Blob([out], {type: "text/plain"});
	var url = URL.createObjectURL(blob);
	var a = document.createElement("a");
	a.href = url;
	a.download = "sample.html";
	a.click();
	URL.revokeObjectURL(url);
});
</script>
</body>
</html>

この記事が気に入ったらサポートをしてみませんか?