Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions raw_data/inpatients_mitigators.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ def generate_inpatients_mitigators() -> None:
"""Generrate Inpatients Mitigators"""
path = ["mitigators", "ip"]

import_errors = False
for i in ["activity_avoidance", "efficiency"]:
for j in sorted(os.listdir("/".join(path + [i]))):
if j == "__init__.py":
Expand All @@ -18,23 +19,20 @@ def generate_inpatients_mitigators() -> None:
try:
importlib.import_module(module)
except: # pylint: disable=bare-except
import_errors = True
print(f"Error: {module}")

if import_errors:
raise ImportError("Error importing modules")

all_mitigators = [
v2
for v1 in mitigators.__registered_mitigators.values() # pylint: disable=protected-access
for v2 in v1.values()
]

errors = {}

for m in all_mitigators:
try:
m.save()
except Exception as e: # pylint: disable=broad-exception-caught
errors[str(m)] = e

print(errors)
m.save()


if __name__ == "__main__":
Expand Down
40 changes: 6 additions & 34 deletions raw_data/mitigators/ip/activity_avoidance/virtual_wards.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,59 +3,31 @@
Virtual wards allow patients to receive the care they need at home, safely and conveniently rather
than in hospital. They also provide systems with a significant opportunity to narrow the gap between
demand and capacity for secondary care beds, by providing an alternative to admission and/or early
discharge.
discharge.

Whilst virtual wards may be beneficial for patients on a variety of clinical pathways, guidance has
been produced relating to three pathways which represent the majority of patients who may be
clinically suitable to benefit from a virtual ward. These pathways are Frailty, Acute Respiratory
Infections (ARI) and Heart failure.
Infections (ARI) and Heart failure.

This activity avoidance mitigator identifies patients who may be suitable for admission to an ARI or
Heart Failure virtual ward.
Heart Failure virtual ward.

### Available breakdowns

- Acute Respiratory Infection (IP-AA-030)
- Heart Failure (IP-AA-031)
"""

from pyspark.sql import functions as F

from hes_datasets import nhp_apc, primary_diagnosis, procedures
from raw_data.mitigators import activity_avoidance_mitigator


def _virtual_wards_admissions(*args):
return (
nhp_apc.filter(F.col("admimeth").rlike("^2"))
.filter(F.col("dismeth").isin(["1", "2", "3"]))
.filter(F.col("age") >= 18)
.admission_has(primary_diagnosis, *args)
.select("epikey")
.withColumn("sample_rate", F.lit(1.0))
)


# define these methods so they can be used for both activity avoidance and efficiencies


def virtual_wards_ari():
"""Virtual Wards: Acute Respiratory Infection (ARI)"""
return _virtual_wards_admissions("B(3[34]|97)", "J(0[6-9]|[1-9])", "U0[467]").join(
procedures, ["epikey"], "anti"
)


def virtual_wards_heart_failure():
"""Virtual Wards: Heart Failure"""
return _virtual_wards_admissions("I(110|255|42[09]|50[019])")
from raw_data.mitigators.ip.shared import virtual_wards


@activity_avoidance_mitigator()
def _virtual_wards_activity_avoidance_ari():
return virtual_wards_ari()
return virtual_wards.ari()


@activity_avoidance_mitigator()
def _virtual_wards_activity_avoidance_heart_failure():
return virtual_wards_heart_failure()
return virtual_wards.heart_failure()
17 changes: 6 additions & 11 deletions raw_data/mitigators/ip/efficiency/virtual_wards.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,26 @@
Virtual wards allow patients to receive the care they need at home, safely and conveniently rather
than in hospital. They also provide systems with a significant opportunity to narrow the gap between
demand and capacity for secondary care beds, by providing an alternative to admission and/or early
discharge.
discharge.

Whilst virtual wards may be beneficial for patients on a variety of clinical pathways guidance has
been produced relating to three pathways which represent the majority of patients who may be
clinically suitable to benefit from a virtual ward. These pathways are Frailty, Acute Respiratory
Infections (ARI) and Heart failure.
Infections (ARI) and Heart failure.

This efficiency mitigator identifies patients who may be suitable for earlier discharge through
admission to step down ARI or Heart Failure virtual wards.
admission to step down ARI or Heart Failure virtual wards.
"""

from raw_data.mitigators import efficiency_mitigator
from raw_data.mitigators.ip.activity_avoidance.virtual_wards import (
virtual_wards_ari,
virtual_wards_heart_failure,
)

# use the definitions from activity avoidance
from raw_data.mitigators.ip.shared import virtual_wards


@efficiency_mitigator()
def _virtual_wards_efficiencies_ari():
return virtual_wards_ari()
return virtual_wards.ari()


@efficiency_mitigator()
def _virtual_wards_efficiencies_heart_failure():
return virtual_wards_heart_failure()
return virtual_wards.heart_failure()
Empty file.
42 changes: 42 additions & 0 deletions raw_data/mitigators/ip/shared/virtual_wards.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
"""Virtual Wards

Virtual wards allow patients to receive the care they need at home, safely and conveniently rather
than in hospital. They also provide systems with a significant opportunity to narrow the gap between
demand and capacity for secondary care beds, by providing an alternative to admission and/or early
discharge.

Whilst virtual wards may be beneficial for patients on a variety of clinical pathways, guidance has
been produced relating to three pathways which represent the majority of patients who may be
clinically suitable to benefit from a virtual ward. These pathways are Frailty, Acute Respiratory
Infections (ARI) and Heart failure.
"""

from pyspark.sql import functions as F

from hes_datasets import nhp_apc, primary_diagnosis, procedures


def _virtual_wards_admissions(*args):
return (
nhp_apc.filter(F.col("admimeth").rlike("^2"))
.filter(F.col("dismeth").isin(["1", "2", "3"]))
.filter(F.col("age") >= 18)
.admission_has(primary_diagnosis, *args)
.select("epikey")
.withColumn("sample_rate", F.lit(1.0))
)


# define these methods so they can be used for both activity avoidance and efficiencies


def ari():
"""Virtual Wards: Acute Respiratory Infection (ARI)"""
return _virtual_wards_admissions("B(3[34]|97)", "J(0[6-9]|[1-9])", "U0[467]").join(
procedures, ["epikey"], "anti"
)


def heart_failure():
"""Virtual Wards: Heart Failure"""
return _virtual_wards_admissions("I(110|255|42[09]|50[019])")