Skip to content

Commit 4d34a1a

Browse files
committed
Remove status clause from worklist queries
Modalities will likely need SCHEDULED and IN PROGRESS items at the very least. Defaulting to SCHEDULED may obscure items. Remove the status clause, we can implement this as a query parameter.
1 parent bc133bc commit 4d34a1a

5 files changed

Lines changed: 25 additions & 27 deletions

File tree

src/server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515

1616
from services.dicom.c_echo import CEcho
1717
from services.dicom.c_store import CStore
18+
from services.mwl.c_find import CFind
1819
from services.mwl.n_create import NCreate
1920
from services.mwl.n_set import NSet
20-
from services.mwl.c_find import CFind
2121
from services.storage import MWLStorage, PACSStorage
2222

2323
logger = logging.getLogger(__name__)

src/services/mwl/c_find.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,14 @@ def call(self, event: evt.Event) -> Iterator[Tuple[int, Dataset | None]]:
4545
query_date = procedure_sequence[0].get("ScheduledProcedureStepStartDate")
4646

4747
logger.debug(
48-
"Query parameters: modality=%s, date=%s, patient_id=%s",
49-
query_modality, query_date, query_patient_id
48+
"Query parameters: modality=%s, date=%s, patient_id=%s", query_modality, query_date, query_patient_id
5049
)
5150

5251
try:
5352
items = self.storage.find_worklist_items(
5453
modality=query_modality if query_modality else None,
5554
scheduled_date=query_date if query_date else None,
5655
patient_id=query_patient_id if query_patient_id else None,
57-
status="SCHEDULED",
5856
)
5957

6058
logger.info("Found %s matching worklist items", len(items))

src/services/storage.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,6 @@ def find_worklist_items(
358358
modality: Optional[str] = None,
359359
scheduled_date: Optional[str] = None,
360360
patient_id: Optional[str] = None,
361-
status: str = "SCHEDULED",
362361
) -> List[WorklistItem]:
363362
"""
364363
Query worklist items with optional filters.
@@ -367,7 +366,6 @@ def find_worklist_items(
367366
modality: Filter by modality (e.g., "MG")
368367
scheduled_date: Filter by scheduled date (YYYYMMDD)
369368
patient_id: Filter by patient ID
370-
status: Filter by status (default: "SCHEDULED")
371369
372370
Returns:
373371
List of WorklistItem instances matching the criteria
@@ -376,22 +374,26 @@ def find_worklist_items(
376374
"SELECT accession_number, modality, patient_birth_date, patient_id, "
377375
"patient_name, patient_sex, procedure_code, scheduled_date, scheduled_time, "
378376
"source_message_id, study_description, study_instance_uid, status, mpps_instance_uid "
379-
"FROM worklist_items WHERE status = ?"
377+
"FROM worklist_items"
380378
)
381-
params = [status]
379+
where_clauses = []
380+
params = []
382381

383382
if modality:
384-
query += " AND modality = ?"
383+
where_clauses.append("modality = ?")
385384
params.append(modality)
386385

387386
if scheduled_date:
388-
query += " AND scheduled_date = ?"
387+
where_clauses.append("scheduled_date = ?")
389388
params.append(scheduled_date)
390389

391390
if patient_id:
392-
query += " AND patient_id = ?"
391+
where_clauses.append("patient_id = ?")
393392
params.append(patient_id)
394393

394+
if where_clauses:
395+
query += " WHERE " + " AND ".join(where_clauses)
396+
395397
query += " ORDER BY scheduled_date, scheduled_time"
396398

397399
with self._get_connection() as conn:

tests/services/mwl/test_c_find.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,7 @@ def test_call_with_modality_filter(self, handler, mock_storage, mock_event):
116116

117117
list(handler.call(mock_event))
118118

119-
mock_storage.find_worklist_items.assert_called_once_with(
120-
modality="MG", scheduled_date=None, patient_id=None, status="SCHEDULED"
121-
)
119+
mock_storage.find_worklist_items.assert_called_once_with(modality="MG", scheduled_date=None, patient_id=None)
122120

123121
def test_call_with_date_filter(self, handler, mock_storage, mock_event):
124122
sps_item = Dataset()
@@ -129,7 +127,7 @@ def test_call_with_date_filter(self, handler, mock_storage, mock_event):
129127
list(handler.call(mock_event))
130128

131129
mock_storage.find_worklist_items.assert_called_once_with(
132-
modality=None, scheduled_date="20260107", patient_id=None, status="SCHEDULED"
130+
modality=None, scheduled_date="20260107", patient_id=None
133131
)
134132

135133
def test_call_with_patient_id_filter(self, handler, mock_storage, mock_event):
@@ -139,7 +137,7 @@ def test_call_with_patient_id_filter(self, handler, mock_storage, mock_event):
139137
list(handler.call(mock_event))
140138

141139
mock_storage.find_worklist_items.assert_called_once_with(
142-
modality=None, scheduled_date=None, patient_id="9876543210", status="SCHEDULED"
140+
modality=None, scheduled_date=None, patient_id="9876543210"
143141
)
144142

145143
def test_call_handles_storage_exception(self, handler, mock_storage, mock_event):

tests/services/test_storage.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -211,9 +211,9 @@ def test_find_worklist_items(self, mock_db, tmp_dir, result):
211211
"SELECT accession_number, modality, patient_birth_date, patient_id, "
212212
"patient_name, patient_sex, procedure_code, scheduled_date, scheduled_time, "
213213
"source_message_id, study_description, study_instance_uid, status, mpps_instance_uid "
214-
"FROM worklist_items WHERE status = ? ORDER BY scheduled_date, scheduled_time"
214+
"FROM worklist_items ORDER BY scheduled_date, scheduled_time"
215215
),
216-
["SCHEDULED"],
216+
[],
217217
)
218218

219219
assert len(results) == 1
@@ -236,9 +236,9 @@ def test_find_worklist_items_with_filters(self, mock_db, tmp_dir):
236236
"SELECT accession_number, modality, patient_birth_date, patient_id, "
237237
"patient_name, patient_sex, procedure_code, scheduled_date, scheduled_time, "
238238
"source_message_id, study_description, study_instance_uid, status, mpps_instance_uid "
239-
"FROM worklist_items WHERE status = ? AND patient_id = ? ORDER BY scheduled_date, scheduled_time"
239+
"FROM worklist_items WHERE patient_id = ? ORDER BY scheduled_date, scheduled_time"
240240
),
241-
["SCHEDULED", "999123456"],
241+
["999123456"],
242242
)
243243

244244
mock_connection.reset_mock()
@@ -249,9 +249,9 @@ def test_find_worklist_items_with_filters(self, mock_db, tmp_dir):
249249
"SELECT accession_number, modality, patient_birth_date, patient_id, "
250250
"patient_name, patient_sex, procedure_code, scheduled_date, scheduled_time, "
251251
"source_message_id, study_description, study_instance_uid, status, mpps_instance_uid "
252-
"FROM worklist_items WHERE status = ? AND modality = ? ORDER BY scheduled_date, scheduled_time"
252+
"FROM worklist_items WHERE modality = ? ORDER BY scheduled_date, scheduled_time"
253253
),
254-
["SCHEDULED", "CT"],
254+
["CT"],
255255
)
256256

257257
mock_connection.reset_mock()
@@ -262,10 +262,10 @@ def test_find_worklist_items_with_filters(self, mock_db, tmp_dir):
262262
"SELECT accession_number, modality, patient_birth_date, patient_id, "
263263
"patient_name, patient_sex, procedure_code, scheduled_date, scheduled_time, "
264264
"source_message_id, study_description, study_instance_uid, status, mpps_instance_uid "
265-
"FROM worklist_items WHERE status = ? AND scheduled_date = ? "
265+
"FROM worklist_items WHERE scheduled_date = ? "
266266
"ORDER BY scheduled_date, scheduled_time"
267267
),
268-
["SCHEDULED", "20240101"],
268+
["20240101"],
269269
)
270270

271271
mock_connection.reset_mock()
@@ -276,11 +276,11 @@ def test_find_worklist_items_with_filters(self, mock_db, tmp_dir):
276276
"SELECT accession_number, modality, patient_birth_date, patient_id, "
277277
"patient_name, patient_sex, procedure_code, scheduled_date, scheduled_time, "
278278
"source_message_id, study_description, study_instance_uid, status, mpps_instance_uid "
279-
"FROM worklist_items WHERE status = ? "
280-
"AND modality = ? AND scheduled_date = ? AND patient_id = ? "
279+
"FROM worklist_items "
280+
"WHERE modality = ? AND scheduled_date = ? AND patient_id = ? "
281281
"ORDER BY scheduled_date, scheduled_time"
282282
),
283-
["SCHEDULED", "MG", "20240101", "999123456"],
283+
["MG", "20240101", "999123456"],
284284
)
285285

286286
def test_get_worklist_item(self, mock_db, tmp_dir, result):

0 commit comments

Comments
 (0)