Skip to content

Commit

Permalink
Share Transfer Capabilities from other Network AE of the same Archiv…
Browse files Browse the repository at this point in the history
…e Device #4470
  • Loading branch information
gunterze committed Apr 22, 2024
1 parent f3d6893 commit 24e182d
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -650,9 +650,11 @@ public boolean restrictRetrieveAccordingTransferCapabilities(RetrieveContext ctx
Collection<InstanceLocations> matches = ctx.getMatches();
Iterator<InstanceLocations> iter = matches.iterator();
boolean restrictRetrieveSilently = arcAE.restrictRetrieveSilently();
ApplicationEntity transferCapabilitiesAE = StringUtils.maskNull(
ctx.getLocalApplicationEntity().transferCapabilitiesAE(), ctx.getLocalApplicationEntity());
while (iter.hasNext()) {
InstanceLocations match = iter.next();
if (!(ctx.getLocalApplicationEntity().hasTransferCapabilityFor(match.getSopClassUID(), SCU)
if (!(transferCapabilitiesAE.hasTransferCapabilityFor(match.getSopClassUID(), SCU)
&& (noDestinationRestriction
|| destAE.hasTransferCapabilityFor(match.getSopClassUID(), SCP)))) {
iter.remove();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
import org.dcm4che3.net.pdu.PresentationContext;
import org.dcm4che3.net.service.DicomServiceException;
import org.dcm4che3.net.service.RetrieveTask;
import org.dcm4che3.util.StringUtils;
import org.dcm4chee.arc.entity.Location;
import org.dcm4chee.arc.retrieve.RetrieveContext;
import org.dcm4chee.arc.retrieve.RetrieveEnd;
Expand Down Expand Up @@ -116,11 +117,12 @@ private AAssociateRQ createAARQ(RetrieveContext ctx) {
ApplicationEntity destAE = ctx.getDestinationAE();
if (!localAE.isMasqueradeCallingAETitle(ctx.getDestinationAETitle()))
aarq.setCallingAET(ctx.getCallingAET());
ApplicationEntity transferCapabilitiesAE = StringUtils.maskNull(localAE.transferCapabilitiesAE(), localAE);
boolean noDestinationRestriction = destAE.getTransferCapabilitiesWithRole(SCP).isEmpty();
for (Iterator<InstanceLocations> iter = ctx.getMatches().iterator(); iter.hasNext();) {
InstanceLocations inst = iter.next();
String cuid = inst.getSopClassUID();
TransferCapability localTC = localAE.getTransferCapabilityFor(cuid, SCU);
TransferCapability localTC = transferCapabilitiesAE.getTransferCapabilityFor(cuid, SCU);
TransferCapability destTC = noDestinationRestriction ? null : destAE.getTransferCapabilityFor(cuid, SCP);
List<Location> locations = inst.getLocations();
if (!aarq.containsPresentationContextFor(cuid) && !isVideo(locations)) {
Expand Down

0 comments on commit 24e182d

Please sign in to comment.