Skip to content

Commit 71499e0

Browse files
committed
Handle missing accession number with MISSING_ATTRIBUTE response
1 parent 860b6cd commit 71499e0

2 files changed

Lines changed: 20 additions & 10 deletions

File tree

src/services/mwl/n_create.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,20 +45,22 @@ def call(self, event: Event) -> tuple[int, Dataset | None]:
4545
scheduled_step_sequence = getattr(attr_list, "ScheduledStepAttributesSequence", [])
4646
if len(scheduled_step_sequence) == 0:
4747
logger.warning("MPPS N-CREATE: Missing ScheduledStepAttributesSequence in request")
48-
return INVALID_ATTRIBUTE, None
48+
return MISSING_ATTRIBUTE, None
4949

5050
sps = attr_list.ScheduledStepAttributesSequence[0]
51-
accession_number = sps.get("AccessionNumber", UNKNOWN)
51+
accession_number = sps.get("AccessionNumber")
5252

5353
logger.info("MPPS N-CREATE: Started procedure for Accession Number: %w", accession_number)
5454

55-
# Update database to record that this study acquisition has been started
56-
if accession_number != UNKNOWN:
57-
source_message_id = self.storage.update_status(accession_number, "IN_PROGRESS", ds.SOPInstanceUID)
58-
if source_message_id:
59-
logger.info(f"Worklist item updated: {accession_number} -> IN_PROGRESS")
60-
else:
61-
logger.warning(f"Could not find accession {accession_number} in database")
55+
if not accession_number:
56+
logger.warning("MPPS N-CREATE: Missing Accession Number in ScheduledStepAttributesSequence")
57+
return MISSING_ATTRIBUTE, None
58+
59+
source_message_id = self.storage.update_status(accession_number, "IN_PROGRESS", ds.SOPInstanceUID)
60+
if source_message_id:
61+
logger.info(f"Worklist item updated: {accession_number} -> IN_PROGRESS")
62+
else:
63+
logger.warning(f"Could not find accession {accession_number} in database")
6264

6365
except Exception as e:
6466
logger.error(f"Error in handle_create: {str(e)}", exc_info=True)

tests/services/mwl/test_n_create.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ def test_ncreate_missing_scheduled_step_sequence(self, storage, event):
9898

9999
status, ds = NCreate(storage).call(event)
100100

101-
assert status == INVALID_ATTRIBUTE
101+
assert status == MISSING_ATTRIBUTE
102102
assert ds is None
103103

104104
def test_ncreate_processing_failure(self, storage, event):
@@ -108,3 +108,11 @@ def test_ncreate_processing_failure(self, storage, event):
108108

109109
assert status == PROCESSING_FAILURE
110110
assert ds is None
111+
112+
def test_ncreate_missing_accession_number(self, storage, event):
113+
del event.attribute_list.ScheduledStepAttributesSequence[0].AccessionNumber
114+
115+
status, ds = NCreate(storage).call(event)
116+
117+
assert status == MISSING_ATTRIBUTE
118+
assert ds is None

0 commit comments

Comments
 (0)