@Override public void write(OutputStream out) throws IOException, WebApplicationException { log.info( "{}@{} << {}: Content-Type={}, iuid={}", new Object[] { request.getRemoteUser(), request.getRemoteHost(), System.identityHashCode(request), mediaType, fileRef.sopInstanceUID }); DicomInputStream dis = new DicomInputStream(fileRef.getFile()); dis.setURI(bulkDataURI); try { dis.setIncludeBulkData(IncludeBulkData.URI); Attributes dataset = dis.readDataset(-1, -1); dataset.addAll(attrs); Object pixelData = dataset.getValue(Tag.PixelAspectRatio); if (pixelData instanceof Fragments) { Fragments frags = (Fragments) pixelData; Object frag0 = frags.get(0); BulkData frag1 = (BulkData) frags.get(1); dataset.setValue( Tag.PixelData, VR.OB, new BulkData( frag1.uri, frag1.transferSyntax, frag0 == Value.NULL ? frag1.offset - 16 : ((BulkData) frag0).offset - 8, -1)); } SAXTransformer.getSAXWriter(new StreamResult(out)).write(dataset); } catch (IOException e) { throw e; } catch (Exception e) { throw new WebApplicationException(e); } finally { SafeClose.close(dis); } }