Skip to content

Commit 90f37ba

Browse files
authored
Merge pull request #461 from The-Strategy-Unit/remove_data_modification_steps
removes data modification steps
2 parents aac9618 + b39b491 commit 90f37ba

File tree

10 files changed

+8
-230
lines changed

10 files changed

+8
-230
lines changed

src/nhp/model/aae.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,6 @@ def __init__(
6767
def _get_data(self, data_loader: Data) -> pd.DataFrame:
6868
return data_loader.get_aae()
6969

70-
def _add_pod_to_data(self) -> None:
71-
"""Adds the POD column to data."""
72-
self.data["pod"] = "aae_type-" + self.data["aedepttype"]
73-
7470
def get_data_counts(self, data: pd.DataFrame) -> np.ndarray:
7571
"""Get row counts of data.
7672

src/nhp/model/helpers.py

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -41,38 +41,6 @@ def rnorm(rng: np.random.Generator, low: float, high: float) -> float:
4141
return rng.normal(mean, stdev)
4242

4343

44-
def age_groups(age: pd.Series) -> pd.Series:
45-
"""Cut age into groups.
46-
47-
Takes a pandas Series of age's and cut's into discrete intervals
48-
49-
:param age: a Series of ages
50-
:type age: pandas.Series
51-
52-
:returns: a Series of age groups
53-
:rtype: pandas.Series
54-
"""
55-
return pd.cut(
56-
age.fillna(-1),
57-
[-1, 0, 1, 5, 10, 16, 18, 35, 50, 65, 75, 85, 1000],
58-
right=False,
59-
labels=[
60-
"Unknown",
61-
"0",
62-
"1-4",
63-
"5-9",
64-
"10-15",
65-
"16-17",
66-
"18-34",
67-
"35-49",
68-
"50-64",
69-
"65-74",
70-
"75-84",
71-
"85+",
72-
],
73-
).astype(str)
74-
75-
7644
def load_params(filename: str) -> dict:
7745
"""Load a params file.
7846

src/nhp/model/inpatients.py

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -65,24 +65,6 @@ def __init__(
6565
save_full_model_results,
6666
)
6767

68-
def _add_pod_to_data(self) -> None:
69-
"""Adds the POD column to data."""
70-
self.data["pod"] = "ip_" + self.data["group"] + "_admission"
71-
# update pod for daycases/regular attenders
72-
classpat = self.data["classpat"]
73-
self.data.loc[classpat == "2", "pod"] = "ip_elective_daycase"
74-
75-
# handle regular attenders
76-
self.data.loc[classpat == "3", "pod"], self.data.loc[classpat == "4", "pod"] = (
77-
("ip_regular_day_attender", "ip_regular_night_attender")
78-
if self.params.get("separate_regular_attenders", True)
79-
else ("ip_elective_daycase", "ip_elective_admission")
80-
)
81-
82-
def _add_ndggrp_to_data(self) -> None:
83-
super()._add_ndggrp_to_data()
84-
self.data.loc[self.data["admimeth"].isin(["82", "83"]), "ndggrp"] = "maternity"
85-
8668
def _get_data(self, data_loader: Data) -> pd.DataFrame:
8769
return data_loader.get_ip()
8870

src/nhp/model/model.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
HealthStatusAdjustment,
2222
HealthStatusAdjustmentInterpolated,
2323
)
24-
from nhp.model.helpers import age_groups, inrange, load_params, rnorm
24+
from nhp.model.helpers import inrange, load_params, rnorm
2525
from nhp.model.model_iteration import ModelIteration, ModelRunResult
2626

2727

@@ -136,10 +136,7 @@ def _get_data(self, data_loader: Data) -> pd.DataFrame:
136136

137137
def _load_data(self, data_loader: Data) -> None:
138138
self.data = self._get_data(data_loader).sort_values("rn")
139-
self.data["age_group"] = age_groups(self.data["age"])
140139
self.baseline_counts = self.get_data_counts(self.data)
141-
self._add_pod_to_data()
142-
self._add_ndggrp_to_data()
143140

144141
self.baseline_step_counts = (
145142
pd.DataFrame(

src/nhp/model/outpatients.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,6 @@ def __init__(
6767
def _get_data(self, data_loader: Data) -> pd.DataFrame:
6868
return data_loader.get_op()
6969

70-
def _add_pod_to_data(self) -> None:
71-
"""Adds the POD column to data."""
72-
self.data.loc[self.data["is_first"], "pod"] = "op_first"
73-
self.data.loc[~self.data["is_first"], "pod"] = "op_follow-up"
74-
self.data.loc[self.data["has_procedures"], "pod"] = "op_procedure"
75-
7670
def get_data_counts(self, data: pd.DataFrame) -> np.ndarray:
7771
"""Get row counts of data.
7872

tests/unit/nhp/model/test_aae.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -95,21 +95,6 @@ def test_get_data(mock_model):
9595
data_loader.get_aae.assert_called_once_with()
9696

9797

98-
def test_add_pod_to_data(mock_model):
99-
# arrange
100-
mock_model.data = pd.DataFrame({"aedepttype": ["01", "02", "03", "04"]})
101-
# act
102-
mock_model._add_pod_to_data()
103-
104-
# assert
105-
assert mock_model.data["pod"].to_list() == [
106-
"aae_type-01",
107-
"aae_type-02",
108-
"aae_type-03",
109-
"aae_type-04",
110-
]
111-
112-
11398
def test_get_data_counts(mock_model):
11499
# arrange
115100
mdl = mock_model

tests/unit/nhp/model/test_helpers.py

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import pandas as pd
77
import pytest
88

9-
from nhp.model.helpers import age_groups, inrange, load_params, rnorm
9+
from nhp.model.helpers import inrange, load_params, rnorm
1010

1111

1212
@pytest.mark.parametrize("value, expected", [(-1.1, 0), (1.1, 1), (0, 0), (1, 1), (0.5, 0.5)])
@@ -31,30 +31,6 @@ def test_rnorm():
3131
rng.normal.assert_called_once_with(1.5, 0.3901520929904105)
3232

3333

34-
def test_age_groups():
35-
"""Test that the age_groups function returns expected values."""
36-
ages = pd.Series([np.nan] + list(range(0, 90)))
37-
expected = list(
38-
np.concatenate(
39-
[
40-
["Unknown"],
41-
["0"],
42-
["1-4"] * 4,
43-
["5-9"] * 5,
44-
["10-15"] * 6,
45-
["16-17"] * 2,
46-
["18-34"] * 17,
47-
["35-49"] * 15,
48-
["50-64"] * 15,
49-
["65-74"] * 10,
50-
["75-84"] * 10,
51-
["85+"] * 5,
52-
]
53-
).flat
54-
)
55-
assert np.array_equal(age_groups(ages), expected)
56-
57-
5834
def test_load_params():
5935
"""Test that load_params opens the params file."""
6036
with patch("builtins.open", mock_open(read_data='{"params": 0}')) as mock_file:

tests/unit/nhp/model/test_inpatients.py

Lines changed: 0 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -81,92 +81,6 @@ def test_init_calls_super_init(mocker):
8181
super_mock.assert_called_once()
8282

8383

84-
def test_add_ndggrp_to_data(mock_model):
85-
# arrange
86-
mdl = mock_model
87-
mdl.data = pd.DataFrame({"group": ["a", "b", "c"], "admimeth": ["80", "82", "83"]})
88-
89-
# act
90-
mock_model._add_ndggrp_to_data()
91-
92-
# assert
93-
assert mdl.data["ndggrp"].to_list() == ["a", "maternity", "maternity"]
94-
95-
96-
def test_add_pod_to_data(mock_model):
97-
# arrange
98-
mock_model.data = pd.DataFrame(
99-
{
100-
"group": [
101-
"elective",
102-
"elective",
103-
"elective",
104-
"non-elective",
105-
"maternity",
106-
"elective",
107-
"maternity",
108-
],
109-
"classpat": ["1", "2", "3", "1", "1", "4", "5"],
110-
}
111-
)
112-
# act
113-
mock_model._add_pod_to_data()
114-
115-
# assert
116-
assert mock_model.data["pod"].to_list() == [
117-
"ip_elective_admission",
118-
"ip_elective_daycase",
119-
"ip_regular_day_attender",
120-
"ip_non-elective_admission",
121-
"ip_maternity_admission",
122-
"ip_regular_night_attender",
123-
"ip_maternity_admission",
124-
]
125-
126-
127-
@pytest.mark.parametrize(
128-
"test, expected",
129-
[
130-
(True, ["ip_regular_day_attender", "ip_regular_night_attender"]),
131-
(False, ["ip_elective_daycase", "ip_elective_admission"]),
132-
],
133-
)
134-
def test_add_pod_to_data_separate_regular_day_attenders_param(mock_model, test, expected):
135-
# arrange
136-
mock_model.data = pd.DataFrame(
137-
{
138-
"group": ["elective", "elective"],
139-
"classpat": ["3", "4"],
140-
}
141-
)
142-
mock_model.params["separate_regular_attenders"] = test
143-
144-
# act
145-
mock_model._add_pod_to_data()
146-
147-
# assert
148-
assert mock_model.data["pod"].to_list() == expected
149-
150-
151-
def test_add_pod_to_data_no_regular_attenders(mock_model):
152-
# arrange
153-
mock_model.data = pd.DataFrame(
154-
{
155-
"group": ["elective", "elective"],
156-
"classpat": ["1", "2"],
157-
}
158-
)
159-
160-
# act
161-
mock_model._add_pod_to_data()
162-
163-
# assert
164-
assert mock_model.data["pod"].to_list() == [
165-
"ip_elective_admission",
166-
"ip_elective_daycase",
167-
]
168-
169-
17084
def test_get_data(mock_model):
17185
# arrange
17286
mdl = mock_model

tests/unit/nhp/model/test_model.py

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -303,40 +303,26 @@ def test_load_data(mocker, mock_model):
303303
# arrange
304304
mdl = mock_model
305305
mdl._measures = ["x", "y"]
306-
mocker.patch("nhp.model.model.age_groups", return_value="age_groups")
307306
mocker.patch("nhp.model.model.Model.get_data_counts", return_value=np.array([[1, 2], [3, 4]]))
308-
mocker.patch("nhp.model.model.Model._add_pod_to_data")
309-
mocker.patch("nhp.model.model.Model._add_ndggrp_to_data")
310-
311307
data_loader = Mock()
312308

313-
mdl._get_data = Mock(
314-
return_value=pd.DataFrame(
315-
{"rn": [2, 1], "age": [2, 1], "pod": ["a", "b"], "sitetret": ["c", "d"]}
316-
)
317-
)
309+
data = {"rn": [1, 2], "age": [1, 2], "pod": ["a", "b"], "sitetret": ["c", "d"]}
310+
311+
mdl._get_data = Mock(return_value=pd.DataFrame(data))
318312

319313
# act
320314
mdl._load_data(data_loader)
321315

322316
# assert
323-
assert mdl.data.to_dict(orient="list") == {
324-
"rn": [1, 2],
325-
"age": [1, 2],
326-
"pod": ["b", "a"],
327-
"sitetret": ["d", "c"],
328-
"age_group": ["age_groups"] * 2,
329-
}
317+
assert mdl.data.to_dict(orient="list") == data
330318
assert mdl.baseline_counts.tolist() == [[1, 2], [3, 4]]
331319
mdl.get_data_counts.call_args_list[0][0][0].equals(mdl.data)
332-
mdl._add_pod_to_data.assert_called_once_with()
333-
mdl._add_ndggrp_to_data.assert_called_once_with()
334320

335321
assert mdl.baseline_step_counts.to_dict("list") == {
336322
"pod": ["a", "b"],
337323
"sitetret": ["c", "d"],
338-
"x": [2, 1],
339-
"y": [4, 3],
324+
"x": [1, 2],
325+
"y": [3, 4],
340326
"change_factor": ["baseline", "baseline"],
341327
"strategy": ["-", "-"],
342328
}

tests/unit/nhp/model/test_outpatients.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -93,26 +93,6 @@ def test_get_data(mock_model):
9393
data_loader.get_op.assert_called_once_with()
9494

9595

96-
def test_add_pod_to_data(mock_model):
97-
# arrange
98-
mock_model.data = pd.DataFrame(
99-
{
100-
"is_first": [True, True, False, False],
101-
"has_procedures": [True, False, True, False],
102-
}
103-
)
104-
# act
105-
mock_model._add_pod_to_data()
106-
107-
# assert
108-
assert mock_model.data["pod"].to_list() == [
109-
"op_procedure",
110-
"op_first",
111-
"op_procedure",
112-
"op_follow-up",
113-
]
114-
115-
11696
def test_get_data_counts(mock_model):
11797
# arrange
11898
mdl = mock_model

0 commit comments

Comments
 (0)