Feat: Add quetiapine support to medication tracking
- Implement migration script to add quetiapine and quetiapine_doses columns to existing CSV data. - Update DataManager to include quetiapine and quetiapine_doses in data handling. - Modify MedTrackerApp to manage quetiapine entries and doses. - Enhance UIManager to include quetiapine in the user interface for medication selection and display. - Update tests to cover new quetiapine functionality, including sample data and DataManager tests.
This commit is contained in:
@@ -24,9 +24,9 @@ def temp_csv_file():
|
||||
def sample_data():
|
||||
"""Sample data for testing."""
|
||||
return [
|
||||
["2024-01-01", 3, 2, 4, 3, 1, 0, 2, 1, "Test note 1"],
|
||||
["2024-01-02", 2, 3, 3, 4, 1, 1, 2, 0, "Test note 2"],
|
||||
["2024-01-03", 4, 1, 5, 2, 0, 0, 1, 1, ""],
|
||||
["2024-01-01", 3, 2, 4, 3, 1, "", 0, "", 2, "", 1, "", 0, "", "Test note 1"],
|
||||
["2024-01-02", 2, 3, 3, 4, 1, "", 1, "", 2, "", 0, "", 1, "", "Test note 2"],
|
||||
["2024-01-03", 4, 1, 5, 2, 0, "", 0, "", 1, "", 1, "", 0, "", ""],
|
||||
]
|
||||
|
||||
|
||||
@@ -40,9 +40,15 @@ def sample_dataframe():
|
||||
'sleep': [4, 3, 5],
|
||||
'appetite': [3, 4, 2],
|
||||
'bupropion': [1, 1, 0],
|
||||
'bupropion_doses': ['', '', ''],
|
||||
'hydroxyzine': [0, 1, 0],
|
||||
'hydroxyzine_doses': ['', '', ''],
|
||||
'gabapentin': [2, 2, 1],
|
||||
'gabapentin_doses': ['', '', ''],
|
||||
'propranolol': [1, 0, 1],
|
||||
'propranolol_doses': ['', '', ''],
|
||||
'quetiapine': [0, 1, 0],
|
||||
'quetiapine_doses': ['', '', ''],
|
||||
'note': ['Test note 1', 'Test note 2', '']
|
||||
})
|
||||
|
||||
|
||||
@@ -40,7 +40,8 @@ class TestDataManager:
|
||||
expected_headers = [
|
||||
"date", "depression", "anxiety", "sleep", "appetite",
|
||||
"bupropion", "bupropion_doses", "hydroxyzine", "hydroxyzine_doses",
|
||||
"gabapentin", "gabapentin_doses", "propranolol", "propranolol_doses", "note"
|
||||
"gabapentin", "gabapentin_doses", "propranolol", "propranolol_doses",
|
||||
"quetiapine", "quetiapine_doses", "note"
|
||||
]
|
||||
assert headers == expected_headers
|
||||
|
||||
@@ -78,7 +79,9 @@ class TestDataManager:
|
||||
# Write headers first
|
||||
writer.writerow([
|
||||
"date", "depression", "anxiety", "sleep", "appetite",
|
||||
"bupropion", "hydroxyzine", "gabapentin", "propranolol", "note"
|
||||
"bupropion", "bupropion_doses", "hydroxyzine", "hydroxyzine_doses",
|
||||
"gabapentin", "gabapentin_doses", "propranolol", "propranolol_doses",
|
||||
"quetiapine", "quetiapine_doses", "note"
|
||||
])
|
||||
# Write sample data
|
||||
writer.writerows(sample_data)
|
||||
@@ -90,7 +93,9 @@ class TestDataManager:
|
||||
assert len(df) == 3
|
||||
assert list(df.columns) == [
|
||||
"date", "depression", "anxiety", "sleep", "appetite",
|
||||
"bupropion", "hydroxyzine", "gabapentin", "propranolol", "note"
|
||||
"bupropion", "bupropion_doses", "hydroxyzine", "hydroxyzine_doses",
|
||||
"gabapentin", "gabapentin_doses", "propranolol", "propranolol_doses",
|
||||
"quetiapine", "quetiapine_doses", "note"
|
||||
]
|
||||
# Check data types
|
||||
assert df["depression"].dtype == int
|
||||
@@ -101,16 +106,18 @@ class TestDataManager:
|
||||
"""Test that loaded data is sorted by date."""
|
||||
# Write data in random order
|
||||
unsorted_data = [
|
||||
["2024-01-03", 1, 1, 1, 1, 1, 1, 1, 1, "third"],
|
||||
["2024-01-01", 2, 2, 2, 2, 2, 2, 2, 2, "first"],
|
||||
["2024-01-02", 3, 3, 3, 3, 3, 3, 3, 3, "second"],
|
||||
["2024-01-03", 1, 1, 1, 1, 1, "", 1, "", 1, "", 1, "", 0, "", "third"],
|
||||
["2024-01-01", 2, 2, 2, 2, 2, "", 2, "", 2, "", 2, "", 1, "", "first"],
|
||||
["2024-01-02", 3, 3, 3, 3, 3, "", 3, "", 3, "", 3, "", 0, "", "second"],
|
||||
]
|
||||
|
||||
with open(temp_csv_file, 'w', newline='') as f:
|
||||
writer = csv.writer(f)
|
||||
writer.writerow([
|
||||
"date", "depression", "anxiety", "sleep", "appetite",
|
||||
"bupropion", "hydroxyzine", "gabapentin", "propranolol", "note"
|
||||
"bupropion", "bupropion_doses", "hydroxyzine", "hydroxyzine_doses",
|
||||
"gabapentin", "gabapentin_doses", "propranolol", "propranolol_doses",
|
||||
"quetiapine", "quetiapine_doses", "note"
|
||||
])
|
||||
writer.writerows(unsorted_data)
|
||||
|
||||
@@ -143,13 +150,15 @@ class TestDataManager:
|
||||
writer = csv.writer(f)
|
||||
writer.writerow([
|
||||
"date", "depression", "anxiety", "sleep", "appetite",
|
||||
"bupropion", "hydroxyzine", "gabapentin", "propranolol", "note"
|
||||
"bupropion", "bupropion_doses", "hydroxyzine", "hydroxyzine_doses",
|
||||
"gabapentin", "gabapentin_doses", "propranolol", "propranolol_doses",
|
||||
"quetiapine", "quetiapine_doses", "note"
|
||||
])
|
||||
writer.writerows(sample_data)
|
||||
|
||||
dm = DataManager(temp_csv_file, mock_logger)
|
||||
# Try to add entry with existing date
|
||||
duplicate_entry = ["2024-01-01", 5, 5, 5, 5, 1, 1, 1, 1, "Duplicate"]
|
||||
duplicate_entry = ["2024-01-01", 5, 5, 5, 5, 1, "", 1, "", 1, "", 1, "", 0, "", "Duplicate"]
|
||||
|
||||
result = dm.add_entry(duplicate_entry)
|
||||
assert result is False
|
||||
@@ -162,12 +171,14 @@ class TestDataManager:
|
||||
writer = csv.writer(f)
|
||||
writer.writerow([
|
||||
"date", "depression", "anxiety", "sleep", "appetite",
|
||||
"bupropion", "hydroxyzine", "gabapentin", "propranolol", "note"
|
||||
"bupropion", "bupropion_doses", "hydroxyzine", "hydroxyzine_doses",
|
||||
"gabapentin", "gabapentin_doses", "propranolol", "propranolol_doses",
|
||||
"quetiapine", "quetiapine_doses", "note"
|
||||
])
|
||||
writer.writerows(sample_data)
|
||||
|
||||
dm = DataManager(temp_csv_file, mock_logger)
|
||||
updated_values = ["2024-01-01", 5, 5, 5, 5, 2, 2, 2, 2, "Updated note"]
|
||||
updated_values = ["2024-01-01", 5, 5, 5, 5, 2, "", 2, "", 2, "", 2, "", 1, "", "Updated note"]
|
||||
|
||||
result = dm.update_entry("2024-01-01", updated_values)
|
||||
assert result is True
|
||||
@@ -185,12 +196,14 @@ class TestDataManager:
|
||||
writer = csv.writer(f)
|
||||
writer.writerow([
|
||||
"date", "depression", "anxiety", "sleep", "appetite",
|
||||
"bupropion", "hydroxyzine", "gabapentin", "propranolol", "note"
|
||||
"bupropion", "bupropion_doses", "hydroxyzine", "hydroxyzine_doses",
|
||||
"gabapentin", "gabapentin_doses", "propranolol", "propranolol_doses",
|
||||
"quetiapine", "quetiapine_doses", "note"
|
||||
])
|
||||
writer.writerows(sample_data)
|
||||
|
||||
dm = DataManager(temp_csv_file, mock_logger)
|
||||
updated_values = ["2024-01-05", 5, 5, 5, 5, 2, 2, 2, 2, "Updated note"]
|
||||
updated_values = ["2024-01-05", 5, 5, 5, 5, 2, "", 2, "", 2, "", 2, "", 1, "", "Updated note"]
|
||||
|
||||
result = dm.update_entry("2024-01-01", updated_values)
|
||||
assert result is True
|
||||
@@ -207,13 +220,15 @@ class TestDataManager:
|
||||
writer = csv.writer(f)
|
||||
writer.writerow([
|
||||
"date", "depression", "anxiety", "sleep", "appetite",
|
||||
"bupropion", "hydroxyzine", "gabapentin", "propranolol", "note"
|
||||
"bupropion", "bupropion_doses", "hydroxyzine", "hydroxyzine_doses",
|
||||
"gabapentin", "gabapentin_doses", "propranolol", "propranolol_doses",
|
||||
"quetiapine", "quetiapine_doses", "note"
|
||||
])
|
||||
writer.writerows(sample_data)
|
||||
|
||||
dm = DataManager(temp_csv_file, mock_logger)
|
||||
# Try to change date to one that already exists
|
||||
updated_values = ["2024-01-02", 5, 5, 5, 5, 2, 2, 2, 2, "Updated note"]
|
||||
updated_values = ["2024-01-02", 5, 5, 5, 5, 2, "", 2, "", 2, "", 2, "", 1, "", "Updated note"]
|
||||
|
||||
result = dm.update_entry("2024-01-01", updated_values)
|
||||
assert result is False
|
||||
@@ -228,7 +243,9 @@ class TestDataManager:
|
||||
writer = csv.writer(f)
|
||||
writer.writerow([
|
||||
"date", "depression", "anxiety", "sleep", "appetite",
|
||||
"bupropion", "hydroxyzine", "gabapentin", "propranolol", "note"
|
||||
"bupropion", "bupropion_doses", "hydroxyzine", "hydroxyzine_doses",
|
||||
"gabapentin", "gabapentin_doses", "propranolol", "propranolol_doses",
|
||||
"quetiapine", "quetiapine_doses", "note"
|
||||
])
|
||||
writer.writerows(sample_data)
|
||||
|
||||
@@ -249,7 +266,9 @@ class TestDataManager:
|
||||
writer = csv.writer(f)
|
||||
writer.writerow([
|
||||
"date", "depression", "anxiety", "sleep", "appetite",
|
||||
"bupropion", "hydroxyzine", "gabapentin", "propranolol", "note"
|
||||
"bupropion", "bupropion_doses", "hydroxyzine", "hydroxyzine_doses",
|
||||
"gabapentin", "gabapentin_doses", "propranolol", "propranolol_doses",
|
||||
"quetiapine", "quetiapine_doses", "note"
|
||||
])
|
||||
writer.writerows(sample_data)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user