アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもこちらではお世話になっております。

SQL serverを使用しています。
膨大なデータの中から、「変化のあったとき」を抽出したいと考えています。
同じ薬剤を連続して投与することが基本となっており、それを逸脱した状況を拾いたいです。

下記のようなデータがあります(元データは数万件あります)。

患者  薬     投与量   投与日
a  かぜ薬A   1錠    5月1日 
a  かぜ薬A   1錠    5月2日
a  かぜ薬A   1錠    5月3日
a  かぜ薬A   2錠    5月4日
b  かぜ薬B   1錠    4月4日
b  かぜ薬C   1錠    4月5日
c  かぜ薬A   1錠    6月5日
c  かぜ薬A   1錠    6月6日
c  かぜ薬A   1錠    6月7日
c  かぜ薬A   1錠    6月8日
c  かぜ薬A   1錠    6月15日

例1)
 患者Aの投与量が変わった
例2)
 患者Bの薬が変わった
例3)
 患者Cの投与日が連続ではなく投与された

このように「連続して同じ薬剤を同じ投与量使用しなかったとき」を知りたいです。
最低限、
 1 その患者が、連続(毎日)して同じ薬剤・投与量を投与し続けたか否か?
   (数日で一般的な投与期間は終わります)
が知りたいですが、追加で
 2 連続して投与した日数(同じ薬剤・投与量で1セットとして)
が知りたいです。

自分でも考えてみたのですが、妙案が思いつきませんでした。
よろしくお願いします。

質問者からの補足コメント

  • うーん・・・

    コメントありがとうございます。

    既に収集されているデータを1患者ごとに1列に集約後、別のデータを突合する予定です。
    そのため、今回挙げさせて頂いている「例」では中途半端な状態になることも承知しておりますm(_ _)m

    補足させて頂きます。
    基本的に連続して数日間、投与することは決まっていますので、
    1 「連続投与が途切れた日」
    2 「連続投与した日数」
    3 「(同一患者で)薬剤の種類が変わった日」
    4 「薬剤の量が変わった日(薬剤も一緒に変わっていてもOK)」
    これらの4点を、それぞれで「条件に合うなら1、それ以外は0」といった列を4つ追加でも大丈夫です。

    よろしくお願いします。

      補足日時:2021/05/07 08:02

A 回答 (2件)

計画は存在しないのでしょうか?



計画が存在しててその計画と実績に差異があるのを見つけるのは難しくないですが
提示されている例だと結局全てのデータを一つ一つ洗い出し照合する必要があります
これはデータベース化する意味がありません

大量のデータの中から条件を絞って抽出する
抽出したデータを加工する
こういうのはデータベースとして得意分野ですが

例の場合だと、一人一人の患者に関して抽出して
その後は前後関係の比較を行うので・・・・
やってやれないことはないですが
SQL Server単独ではなく、抽出して判断するプログラムを別途準備する必要があるでしょう
    • good
    • 1

条件が複雑なのと、曖昧で、そのような柔軟なニーズにDBのみで対応することは私は得策ではないと思います。



あくまで例だとしても、仮に実現するとすれば、一つの解決策はVIEWだと思いますが、その都度、集計が走ることになります。
OracleのマテリアライズドビューのようなものがSQLServerにあれば少しは負荷を減らせるかもしれません。

「最低限」を見ると、1日1回のバッチで対応できそうなので、夜間バッチで、アプリで対応するのが普通に感じます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!