Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Pythonについての作法です。

pythonについて作法について質問です。

しがない薬剤師をしております。

Sipsデータという処方箋データが、サーバーより処方箋入力ごとに1枚、1件(CSVファイル)で吐き出されます。

Pythonを利用して、手始めに在庫管理をしようかと考えています。
データベースソフトは利用しない事が前提です。

今までは、フロントエンドにAccessを利用したりしていました、GUIベースで簡単に作業が出来たり、Excelに簡単にデータを渡せたり出来たのが大きな理由です。

業務内でもタブレット、スマホを利用する機会が増えた事から、転換しようかと考えての投稿です。

質問は、
1.テーブルの作成を行って(患者テーブル、薬品テーブ、処方テーブル等々)クエリを利用して
  集計、抽出を図る。

2.必要に応じてのプログラムを作成し、その都度、テキストから直接集計をかけてく。
 関数の集合体。

設計が変わってくるのでプロはどう考えているのかなと思い投稿しました。

0

5Answer

どちらでも出来なくは無いですが、集計・検索する処理があるならデータベース使うべき(テーブルに入れてSQLを実行するべき)だと思いますよ。
DBサーバー建てたくないということならSQLite使ったりもできます。

データベースソフトは利用しない事が前提

Accessはデータベースだと思うので少々このへんがわかりませんでした、、、

1Like

タイトルのPythonについての作法です。微妙感がありますね?

さて、私なら?の仮定の移行計画です。ご参考ください。

データベースソフトは利用しない事が前提です。現代のシステム開発ではDB排除は生産性の視点、データ管理の視点からお勧めしません。Accessを継続する方がましです。

▼1stステージ
Step1: クラクド/オンプレにmariaDB
    などを導入する。
Step2: Accessのテーブルをサーバーへ移行
Step3: MysqlのODCBドライバー経由で
    mariaDBのテーブルにアタッチ
Step4: Accessのフロントアプリ調整し
    テスト実施
Step5: mariaDB版Accessによる
     通常の並行運用開始

▼2ndステージ
Accessのフロントアプリのcsvアップロードではなく、mariaDBに直接アップロードするようにpythonなどで開発&並行運用

 同様にAccessのフロントアプリ機能を移管しつつ、iphone,Androidアプリ、webアプリでコツコツ開発でしょうか?
 
暇人x in スパー銭湯帰りより

0Like

Comments

  1. 1. Nsips規格のPOSレジはある前提
    2. 製薬卸への仕入システムがある前提
    3. windowsファイルサーバーに1名の処方箋がNsips形式で随時保存される。但し、必ず売上が上がるとは限らないし、別病院の飛び込みの処方箋は登録されない。
    4. POSレジはNsipsと飛び込みを清算し、POSレジのストコンが売上システムである前提

    とすると、在庫管理は+仕入システムー売上システムとなります。

    Accessで仕入システムとPOSレジと連携し、在庫管理する方が簡単かもしれません。ストコンのパッケージがあるのでは?

    暇人x in 東京ラーメンフェスタより
  2. @atagohosimi

    Questioner

    HalHarada様
    色々とご配慮ありがとうございます。
    残念ながら、小さな薬局なので私のマンパワー(無料)で解決していかなければ
    なりません(笑)

tonberry1050,HalHarada様

早急で丁寧な回答に感謝します。
やはり、そうか! という感じです。
業務ソフトであるレセコンの中にある患者データに、我々外部の者がアクセスする事は不可能の状態が続きました。近年、外部機器との連携の為、Nsipsという規格が生まれてリアルタイムにデータがアクセスする事がようやく出来るようになった経緯があります。

データベースを利用しないというしばりは、情報保護と機器の安定の観念(メーカーによりますが、WindowsUpdateを行わない)からいわゆる”何も入れてくれるな”という意向を受けての話です。

Nsips以前は、レセコン操作から処方データ(期間を決めて-だいたいは前日分)をCSV(数十人で1ファイル)で吐き出させそれをDBに追加していく方法をとっていましたが、手作業が避けて通れいない事と時間的遅れがネックになっていた事が、Nsipsのおかげで処方入力ごとにサーバーに1ファイルずつ自動的に蓄積されるので、さてどうしたものかと相談した次第です。

ただ、1件1件の処方データをDBに追加していく作業がどのような問題がおきるか? また初めての経験なのでデータベースの構築だけでもフローを考えていくうえで途中でパンクせずに行けるかな?と感じた次第です。

それなら、フォルダ内にあるファイルそのものをデータと考えて必要に応じてピックアップする方が
効率的なんじゃないか?という考えに至って、ひょっとしたらプロもそう考えているかな?と思い質問しました。まま、多くて数千件なので可能かもしれませんが、やはりプログラムも餅は餅屋という事で理解しました。

ありがとうございます。

0Like

もし検索をするのがIDだけなどと確定している(名前で検索したりすることはない、指定した処方箋を取り出すことしかしない)のなら、フォルダ名やIDを工夫すればCSVのまま保存可能です。物理的なクリアファイルに付箋つけて何順で並べるかみたいな話です。

さてそう言っても日付だったり薬だったりで検索したいからデジタル化するわけでして。
例に上げましたsqliteはSQLで読み込めるローカルのファイルであり、csvを内部に保存していることと変わりません。またpythonで動くDBなどもありますそれでしたらpythonをインストールすることの中には含まれるのではないかと思います(pythonの標準ライブラリだけで開発しろなんて言われてませんよね、、、?)。
案外nosqlのデータベースのほうが自由に投げ込めて個人で試すのには楽なのかもしれないと思います(ハマりどころはあります)
https://self-development.info/%E3%80%90python%E3%80%91nosql%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9tinydb%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/

なんぞやフォルダにファイルが保存されたことを感知するあるいは一日の定時間にcsvを読み込み、insert(保存するsql)を実行するだけでデータの保存場所としては完成するので、頑張ってください
https://qiita.com/ksato9700/items/ea4b769d010e8cf1fb0c

0Like

Comments

  1. @atagohosimi

    Questioner

    ご丁寧にありがとうとうございます。
    今、サーバーから吐き出されたSipsファイルを移動、フォルダ管理の処理が終わったところです(Config.ini、サービス化を含む)。皆さんの世界ではありきたりなのかもしれませんが、処方データは、投薬時に薬の内容が変わる(余っている、処方自体が間違っている)。無保険者が後日、保険を持ってきて会計が変わる等の一度作成されたがデータの変更が、それなりの頻度で発生します。Sipsファイル自体は削除されずに、ファイルの頭に、多分ですがU(Update)、A(Dafult)、D(Delete)に続けて日付、患者ID.txtと増えていきます。この多分は、Sipsファイルの仕様書なるものが手元になく、挙動を見て想像していたりします。DBの利用では、参照整合性にはいつも苦労しており、今回はテーブルではなくファイル自体を一元化管理してシンプルに行きたいなぁと思案しているところです。ですから、まず練習がてらファイル管理用のDBの作成(非常にシンプルになると予測される)を行いたいと思ます。

  2. 多分ですが、「削除や更新が来たからDBから情報を更新したり削除しよう!」と考えているのかもしれませんが、削除しなくても良いのですよ。

    それら全ての処方箋の差分もそのまま登録してしまい(多分患者のIDか診察IDあたりがキーですよね?)、キーに引っかかった処方箋を続けて人間が見るように合計して表示するインターフェースを作れば良いのだと思いますよ
    (これをSQLベースで実装するかアプリコードで書くかは設計の話)

    そうすれば「この患者は最終的に〜を何錠処方された」みたいな数値の出力が可能になります
  3. このような処理はNoSQLのデータベースでよくあります。

色々な知恵をありがとうございます。

まま、当たり前ですが、まずはサーバーの特定フォルダにファイルは吐き出されるので、Bat、shとタスクスケジューラ組み合わせて作業フォルダにコピー行い、不要行の削除、マージを行います。タイムスタンプは面白そうなので参考にしてみます。

並行して、ポータブル的な扱いのできるDB(sqlite,Tinyも含めて)の検証をしてみます。

0Like

Your answer might help someone💌