@Override public DicomImageElement getNearestImage(double location, int offset, Filter<DicomImageElement> filter, Comparator<DicomImageElement> sort) { Iterable<DicomImageElement> mediaList = getMedias(filter, sort); DicomImageElement nearest = null; int index = 0; return getMedia(bestIndex + offset, filter, sort);
public Series<MediaElement> buildSeries(String seriesUID) { Series<? extends MediaElement> series; if (IMAGE_MIMETYPE.equals(mimeType)) { series = new DicomSeries(seriesUID); } else if (SERIES_VIDEO_MIMETYPE.equals(mimeType)) { series = new DicomVideoSeries(seriesUID); } else if (SERIES_ENCAP_DOC_MIMETYPE.equals(mimeType)) { series = new DicomEncapDocSeries(seriesUID); } else { series = new DicomSeries(seriesUID); } return (Series<MediaElement>) series; }
public DicomEncapDocSeries(DicomSeries dicomSeries) { super(TagW.SubseriesInstanceUID, dicomSeries.getTagValue(TagW.SubseriesInstanceUID), DicomSeries.defaultTagView); Iterator<Entry<TagW, Object>> iter = dicomSeries.getTagEntrySetIterator(); while (iter.hasNext()) { Entry<TagW, Object> e = iter.next(); setTag(e.getKey(), e.getValue()); } }
@Override public void addMedia(DicomImageElement media) { if (media != null && media.getMediaReader() instanceof DcmMediaReader) { int insertIndex; synchronized (this) { // add image or multi-frame sorted by Instance Number (0020,0013) order int index = Collections.binarySearch(medias, media, SortSeriesStack.instanceNumber); if (index < 0) { insertIndex = -(index + 1); } else { // Should not happen because the instance number must be unique insertIndex = index + 1; } if (insertIndex < 0 || insertIndex > medias.size()) { insertIndex = medias.size(); } add(insertIndex, media); } DataExplorerModel model = (DataExplorerModel) getTagValue(TagW.ExplorerModel); if (model != null) { model.firePropertyChange(new ObservableEvent(ObservableEvent.BasicAction.ADD, model, null, new SeriesEvent(SeriesEvent.Action.ADD_IMAGE, this, media))); } } }
img, viewParams, origPixSize, sPixSize, geometry, mprView, attributes); if (dicomSeries != null && dicomSeries.size(null) > 0) { ((DcmMediaReader) dicomSeries.getMedia(0, null, null).getMediaReader()) .writeMetaData(dicomSeries); if (study != null && treeModel != null) { dicomSeries.setTag(TagW.ExplorerModel, model); treeModel.addHierarchyNode(study, dicomSeries); if (treeModel instanceof DicomModel) {
(List<DicomSpecialElement>) initialSeries.getTagValue(TagW.DicomSpecialElementList); String rMime = dicomReader.getMimeType(); if (specialElementList == null) { specialElementList = new CopyOnWriteArrayList<>(); initialSeries.setTag(TagW.DicomSpecialElementList, specialElementList); } else if ("sr/dicom".equals(rMime) || "wf/dicom".equals(rMime)) { //$NON-NLS-1$ //$NON-NLS-2$ initialSeries.addMedia((DicomImageElement) media); } else { Modality modality = initialSeries.addMedia((DicomImageElement) media); return false; if (group instanceof DicomSeries) { if (isSimilar(rules, (DicomSeries) group, media)) { ((DicomSeries) group).addMedia((DicomImageElement) media); return false;
private KOSpecialElement buildKO(DicomModel model, DicomSeries s) { DicomSpecialElement dcmElement = DicomModel.getFirstSpecialElement(series, DicomSpecialElement.class); if (dcmElement != null) { DicomImageElement dcm = s.getMedia(MediaSeries.MEDIA_POSITION.FIRST, null, null); if (dcm != null && dcm.getMediaReader() instanceof DcmMediaReader) { Attributes dicomSourceAttribute = ((DcmMediaReader) dcm.getMediaReader()).getDicomObject(); Attributes attributes = DicomMediaUtils.createDicomKeyObject(dicomSourceAttribute, dcmElement.getShortLabel(), null); new LoadDicomObjects(model, attributes).addSelectionAndnotify(); // must be executed in the EDT for (KOSpecialElement koElement : DicomModel.getKoSpecialElements(s)) { if (koElement.getMediaReader().getDicomObject().equals(attributes)) { return koElement; } } } } return null; }
@Override public String getSeriesNumber() { Integer splitNb = (Integer) getTagValue(TagW.SplitSeriesNumber); Integer val = TagD.getTagValue(this, Tag.SeriesNumber, Integer.class); String result = val == null ? "" : val.toString(); //$NON-NLS-1$ return splitNb == null ? result : result + "-" + splitNb.toString(); //$NON-NLS-1$ }
@Override public int getNearestImageIndex(double location, int offset, Filter<DicomImageElement> filter, Comparator<DicomImageElement> sort) { Iterable<DicomImageElement> mediaList = getMedias(filter, sort); int index = 0; int bestIndex = -1; synchronized (this) { double bestDiff = Double.MAX_VALUE; for (Iterator<DicomImageElement> iter = mediaList.iterator(); iter.hasNext();) { DicomImageElement dcm = iter.next(); double[] val = (double[]) dcm.getTagValue(TagW.SlicePosition); if (val != null) { double diff = Math.abs(location - (val[0] + val[1] + val[2])); if (diff < bestDiff) { bestDiff = diff; bestIndex = index; if (MathUtil.isEqualToZero(diff)) { break; } } } index++; } } return (offset > 0) ? (bestIndex + offset) : bestIndex; }
if (userObject instanceof DicomSeries) { DicomImageElement midImage = ((DicomSeries) userObject).getMedia(MediaSeries.MEDIA_POSITION.MIDDLE, null, null); Attributes iconItem = mkIconItem(midImage); if (iconItem != null) {
@Override public void run() { if (imageList != null) { DataExplorerModel model = (DataExplorerModel) series.getTagValue(TagW.ExplorerModel); int size = imageList.size(); if (model == null || index < 0 || index >= size) {
for (DicomImageElement media : ((DicomSeries) s).getMedias(null, null)) { if ("RTDOSE".equals(TagD.getTagValue(media, Tag.Modality))) { specialElementList.add(media); for (DicomImageElement media : ((DicomSeries) s).getMedias(null, null)) { if ("CT".equals(TagD.getTagValue(media, Tag.Modality))) { specialElementList.add(media);
Series<?> prSeries = new DicomSeries(seriesInstanceUID); prSeries.setTag(TagD.get(Tag.SeriesNumber), TagD.getTagValue(series, Tag.SeriesNumber, Integer.class)); prSeries.setTag(TagD.get(Tag.Modality), "PR"); //$NON-NLS-1$
public DicomVideoSeries(DicomSeries dicomSeries) { super(TagD.getUID(Level.SERIES), dicomSeries.getTagValue(TagW.SubseriesInstanceUID), DicomSeries.defaultTagView); Iterator<Entry<TagW, Object>> iter = dicomSeries.getTagEntrySetIterator(); while (iter.hasNext()) { Entry<TagW, Object> e = iter.next(); setTag(e.getKey(), e.getValue()); } }
} else if (dicoms.size() > 1) { DicomImageElement dcm = dicoms.get(0); Series s = new DicomSeries(TagD.getTagValue(dcm, Tag.SeriesInstanceUID, String.class)); s.addAll(dicoms); ((DcmMediaReader) dcm.getMediaReader()).writeMetaData(s);
Series dicomSeries = (Series) dicomModel.getHierarchyNode(study, seriesUID); if (dicomSeries == null) { dicomSeries = new DicomSeries(seriesUID); dicomSeries.setTag(TagW.ExplorerModel, dicomModel); dicomSeries.setTag(TagW.WadoParameters, wadoParameters);
dicomModel.addHierarchyNode(patient, study); Series dicomSeries = new DicomSeries(seriesUID); dicomSeries.setTag(TagW.ExplorerModel, dicomModel); dicomSeries.setTag(TagD.get(Tag.SeriesInstanceUID), seriesUID);
dicomSeries = new DicomSeries(seriesUID); dicomSeries.setTag(seriesTag, seriesUID); dicomSeries.setTag(TagW.ExplorerModel, model);
dcms.add(dcm); return new DicomSeries(params.seriesUID, dcms, DicomModel.series.getTagView());