| Reading a dicom file (simple case) BufferedImage image = ImageIO.read(new File("image.dcm"));
Reading a dicom file (with attribute retrieval) Iterator readers = ImageIO.getImageReadersByFormatName("dicom");
DicomReader reader = (DicomReader)readers.next();
reader.setInput(new FileImageInputStream(new File("image.dcm")));
DicomMetadata dmd = reader.getDicomMetadata();
BufferedImage image = reader.read(0);
String patient_id = dmd.getAttributeString(Tag.PatientID);
Writing a dicom file (simple case) ImageIO.write(image, "dicom", new File("image.dcm"));
Writing a dicom file (specifying attributes) Iterator writers = ImageIO.getImageWritersByFormatName("dicom");
ImageWriter writer = (ImageWriter) writers.next();
DicomMetadata dmd = new DicomMetadata();
dmd.setModality("NM");
dmd.setAttribute(Tag.PatientID, 12345);
File file = new File("image.dcm");
file.delete();
writer.setOutput(new FileImageOutputStream(file));
writer.write(dmd, new IIOImage(image, null, null), null);
Receiving a dicom object from the network (synchronous listening) Iterator readers = ImageIO.getImageReadersByFormatName("dicom");
ImageReader reader = (ImageReader)readers.next();
reader.setInput(new StorageSCP());
BufferedImage image = reader.read(0);
Receiving a dicom object from the network (asynchronous listening) Iterator readers = ImageIO.getImageReadersByFormatName("dicom");
final ImageReader reader = (ImageReader)readers.next();
class Listener implements StorageSCPListener {
public void objectReceived(ReceivedObject o) {
reader.setInput(o);
BufferedImage image = reader.read(0);
/* ... */
}
}
new StorageSCP(new Listener()).start();
Sending a dicom object through the network Iterator writers = ImageIO.getImageWritersByFormatName("dicom");
ImageWriter writer = (ImageWriter)writers.next();
PeerAE peer = new PeerAE(InetAddress.getByName("server.hospital.com"), "TEST AE");
writer.setOutput(peer);
writer.write(image);
Querying a remote image database and retrieving an object Iterator readers = ImageIO.getImageReadersByFormatName("dicom");
DicomReader reader = (DicomReader)readers.next();
PeerAE peer = new PeerAE(InetAddress.getByName("server.hospital.com"), "TEST AE");
QueryRetrieveSCU scu = new QueryRetrieveSCU(peer);
Identifier query = new Identifier(Identifier.MODEL_PATIENT_ROOT, Identifier.LEVEL_IMAGE);
query.setAttribute(Tag.PatientID, 1234);
query.setAttribute(Tag.StudyInstanceUID, "*");
query.setAttribute(Tag.SeriesInstanceUID, "*");
Iterator founds = scu.find(query);
while (founds.hasNext()) {
Identifier id = (Identifier) founds.next();
Iterator retrieved = scu.get(id);
while (retrieved.hasNext()) {
ReceivedObject ro = (ReceivedObject) it.next();
reader.setInput(ro);
BufferedImage image = reader.read(0);
/* ... */
}
}
Complete example codes are available in the examples directory of the downloadable archive. |