MPPS SCU service for reporting procedure status.
MPPS SCU service for reporting procedure status The MPPS SCU (Service Class User) sends N-CREATE and N-SET requests to remote MPPS SCP systems (PACS, RIS) to report procedure progress.
MPPS Message Flow
Modality (MPPS SCU) PACS/RIS (MPPS SCP)
| |
| [Exam Started] |
| |
| N-CREATE-RQ |
| +--------------------------+ |
| | Status: "IN PROGRESS" | |
| | PatientID, Modality... | |
| +--------------------------+ |
|------------------------------------>|
| |
| N-CREATE-RSP (Success) |
|<------------------------------------|
| |
| [Exam Completed] |
| |
| N-SET-RQ |
| +--------------------------+ |
| | Status: "COMPLETED" | |
| | PerformedSeriesSequence | |
| +--------------------------+ |
|------------------------------------>|
| |
| N-SET-RSP (Success) |
|<------------------------------------|
Usage
association_config config;
config.calling_ae_title = "CT_SCANNER";
config.called_ae_title = "RIS_SCP";
config.proposed_contexts.push_back({
1,
std::string(mpps_sop_class_uid),
{"1.2.840.10008.1.2.1", "1.2.840.10008.1.2"}
});
auto assoc_result = association::connect("192.168.1.100", 11112, config);
auto& assoc = assoc_result.value();
mpps_scu scu;
mpps_create_data create_data;
create_data.patient_id = "12345";
create_data.patient_name = "Doe^John";
create_data.modality = "CT";
create_data.station_ae_title = "CT_SCANNER";
auto create_result = scu.create(assoc, create_data);
if (create_result.is_ok() && create_result.value().is_success()) {
std::string mpps_uid = create_result.value().mpps_sop_instance_uid;
performed_series_info series;
series.series_uid = "1.2.3.4.5.6";
series.modality = "CT";
series.num_instances = 150;
auto complete_result = scu.complete(assoc, mpps_uid, {series});
}
assoc.release();