in import/src/main/java/com/google/cloud/healthcare/imaging/dicomadapter/StorageCommitmentService.java [63:99]
protected void onDimseRQ(Association as, PresentationContext pc, Dimse dimse, Attributes cmd,
Attributes data) throws IOException {
try {
if (dimse != Dimse.N_ACTION_RQ) {
throw new DicomServiceException(Status.UnrecognizedOperation);
}
if (!cmd.getString(Tag.RequestedSOPClassUID).equals(UID.StorageCommitmentPushModel)) {
throw new DicomServiceException(Status.NoSuchSOPclass);
}
if (!cmd.getString(Tag.RequestedSOPInstanceUID)
.equals(UID.StorageCommitmentPushModelInstance)) {
throw new DicomServiceException(Status.NoSuchObjectInstance);
}
int actionTypeID = cmd.getInt(Tag.ActionTypeID, 0);
if (actionTypeID != 1) {
throw new DicomServiceException(Status.NoSuchActionType).setActionTypeID(actionTypeID);
}
MonitoringService.addEvent(Event.COMMITMENT_REQUEST);
Aet remoteAet = aets.getAet(as.getRemoteAET());
if (remoteAet == null) {
MonitoringService.addEvent(Event.COMMITMENT_ERROR);
throw new DicomServiceException(Status.ProcessingFailure,
"Unknown AET: " + as.getRemoteAET());
}
CommitmentReportTask task = new CommitmentReportTask(as.getApplicationEntity(),
data, remoteAet);
as.getApplicationEntity().getDevice().execute(task);
as.writeDimseRSP(pc, Commands.mkNActionRSP(cmd, Status.Success));
} catch (RuntimeException e) {
throw new DicomServiceException(Status.ProcessingFailure, e);
}
}