自作のWebアプリをアップロード

サーバー

はじめに

前回、Nginx、uWsig、Flask(python)をつなげてWebアプリの基盤を作成した。
今回はWindowsで作成したWebアプリをCentOS上にアップロードしてきちんと動くかどうか検証。

Windowsで作成したアプリから設定を抽出

まずはライブラリの抽出。pip freezeと入力するとライブラリの一覧が表示される。バージョンも一緒に取得できるのでこれをそのまま本番環境に移植。
pip freeze > requirements.txt と入力するとテキストファイルとして保存できる。

ちなみに中身はこんな感じ。ライブラリ名とバージョンがセットとなって入っている。
本当なら開発段階で仮想環境構築をしておいたほうが良かったかも。
まだpythonの勉強を始めたばかりなので、venvの存在も知らなかったので、ガンガンライブラリをインストールしていた。そのため今回は必要のないライブラリもたくさん入っている。。。

WindowsからTeraTermのウインドウにドラッグ&ドロップするとSCPで送信できる。

ドラッグ&ドロップすると下のウインドウが立ち上がるので送信先を指定する。
今回は /var/www/uwsgi の中に入れるのでその場所に指定。

ちゃんと送信できているか確認。

今度はテキストファイルをpipでインストールする。pip install -r requirements.txt と入力するとファイル内に書き込まれているすべてのライブラリをインストールしてくれる。

同じようにWindowsで作成したアプリ一式もアップロード。

アップロードしたWebアプリ

今回作ったWebアプリだが、特に予定としては公開するつもりはないです。どんなものを作っただけ公開しておきます。皆様のアイデアの一つとなれば幸いです。

厚生労働省のページにNDBデータと呼ばれるレセプトデータがあります。その中にどれだけの薬がどこで処方されているかがわかるファイルが存在します。そのファイルはExcelファイルなのだが、とても見にくい。それを簡便にみれるようにと作ったのが今回のアプリです。

内服、外用、注射とわかれているのでまずはどのファイルを読み込むか指定する。
そして医薬品名の一部を入力することでそのデータを引っ張りグラフ化するというのが主な目的です。

Excelファイルの中には厚労省コードが入っているのでそれを使って先発、後発を同時に引っ張れるようにした。
そうすればある成分の薬のシェアがどれぐらいなのか一目でわかるからです。


グラフ化はAjaxを使っているのでページの遷移することなく表示されます。pythonを使っているのでサクサク取得できます。
ちなみに下のグラフは「アレグラ」で検索した結果です。

アレグラのAGはやっぱり強いですね。そして「EE」は先発越えですね。

なんでこんなシステムを作ったかというと、ここ最近医薬品の流通がかなり悪いからです。
今までは自局には関係ない薬が回収となると「良かった~」で済んでいたが、それを使っていた薬局が他のメーカーに押し寄せて、結局自局の採用品に影響するということが多々あったからです。

失敗談

アセトアミノフェンが数社回収になると聞いて、自局で採用しているカロナールを慌てて多めに発注しました。
ところが蓋をあけてみると全然影響がなかった。
その時このシステムが出来上がっていれば慌てて買わずに済んだなと。
なぜならカロナールで調べたグラフが下の図だからです。

カロナールは圧倒的なシェアなので数社倒れても全然大丈夫なんですね。最近やっと余分に買ったカロナールがなくなったところです。

おわりに

いままではMySQL、PHP、JQueryなどを使ってグラフ化を行っていたが、pythonはデータ読み込みからデータ処理、グラフ化までの処理速度が圧倒的に早い。
他にもいろいろとデータをグラフ化したいものがあるのでしばらくはpythonで遊んでいきたいと思います。

コメント

タイトルとURLをコピーしました