PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
Basic

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

// Establish association
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();
// Create MPPS SCU and start procedure
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;
// ... perform exam ...
// Complete the procedure
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();