private void emitReferencedValue(AttributeList attrs) throws SAXException { if (expectingTarget) { String previousElement = ""; if (!elementStack.empty()) { previousElement = (String) elementStack.peek(); } int prevSrxId = XmiMapping.getSrxId(previousElement); // enabledOutput = toProcess(prevSrxId); if (!enabledOutput) { return; } if (attrs != null) { for (int i = 0; i < attrs.getLength(); i++) { String attr = attrs.getName(i); if (attr.equals(kTarget)) { String key = attrs.getValue(i); String name = (String) idTable.get(key); if (name != null) { emit(name + eol); } expectingTarget = false; } } // end for } // end if } // end if } // end emitReferencedValue()
public void startElement(String name, AttributeList atts) throws org.xml.sax.SAXException { //-- strip namespace prefix int idx = name.indexOf(':'); if (idx >= 0) { name = name.substring(idx+1); } StateInfo sInfo = null; boolean topLevel = false; //-- if we are currently in another element //-- definition...flag as complex content if (!_siStack.isEmpty()) { sInfo = (StateInfo)_siStack.peek(); sInfo.complex = true; } else { topLevel = true; } //-- create current holder for stateInformation sInfo = new StateInfo(); sInfo.topLevel = topLevel; _siStack.push(sInfo); //-- create element definition sInfo.element = new ElementDecl(_schema, name); //-- create attributes for (int i = 0; i < atts.getLength(); i++) { String attName = atts.getName(i); //-- skip namespace declarations if (attName.equals(XMLNS)) continue; String prefix = ""; idx = attName.indexOf(':'); if (idx >= 0) { prefix = attName.substring(0, idx); attName = attName.substring(idx+1); } if (prefix.equals(XMLNS)) continue; AttributeDecl attr = new AttributeDecl(_schema, attName); //-- guess simple type String typeName = _nsPrefix + ':' + DatatypeHandler.guessType(atts.getValue(i)); attr.setSimpleTypeReference(typeName); sInfo.attributes.addElement(attr); } } //-- startElement
/** * Read a DICOM dataset and write an XML representation of it to the standard output, or vice * versa. * * @param arg either one filename of the file containing the DICOM dataset, or a direction * argument (toDICOM or toXML, case insensitive) and an input filename */ public static void main(String arg[]) { try { boolean bad = true; boolean toXML = true; String filename = null; if (arg.length == 1) { bad = false; toXML = true; filename = arg[0]; } else if (arg.length == 2) { filename = arg[1]; if (arg[0].toLowerCase(java.util.Locale.US).equals("toxml")) { bad = false; toXML = true; } else if (arg[0].toLowerCase(java.util.Locale.US).equals("todicom") || arg[0].toLowerCase(java.util.Locale.US).equals("todcm")) { bad = false; toXML = false; } } if (bad) { System.err.println( "usage: XMLRepresentationOfDicomObjectFactory [toDICOM|toXML] inputfile"); } else { if (toXML) { AttributeList list = new AttributeList(); // System.err.println("reading list"); list.read(filename, null, true, true); // System.err.println("making document"); Document document = new XMLRepresentationOfDicomObjectFactory().getDocument(list); // System.err.println(toString(document)); write(System.out, document); } else { // long startReadTime = System.currentTimeMillis(); AttributeList list = new XMLRepresentationOfDicomObjectFactory().getAttributeList(filename); // System.err.println("AttributeList.main(): read XML and create DICOM AttributeList - // done in "+(System.currentTimeMillis()-startReadTime)+" ms"); String sourceApplicationEntityTitle = Attribute.getSingleStringValueOrEmptyString( list, TagFromName.SourceApplicationEntityTitle); list.removeMetaInformationHeaderAttributes(); FileMetaInformation.addFileMetaInformation( list, TransferSyntax.ExplicitVRLittleEndian, sourceApplicationEntityTitle); list.write( System.out, TransferSyntax.ExplicitVRLittleEndian, true /*useMeta*/, true /*useBufferedStream*/); } } } catch (Exception e) { e.printStackTrace(System.err); } }
public void TestSafePrivateGEPACSRelated_CreatorFromList() throws Exception { AttributeList list = new AttributeList(); { Attribute a = new LongStringAttribute(new AttributeTag(0x0903, 0x0010)); a.addValue("GEIIS PACS"); list.put(a); } assertTrue( "Checking Reject Image Flag is safe", ClinicalTrialsAttributes.isSafePrivateAttribute(new AttributeTag(0x0903, 0x1010), list)); }
/** * This method is called for the end tag of the root document tag. If there are name spaces, they * would have been defined in this tag. Insert them in the front of the attribute list. * * @throws XmlPullParserException */ private void addNamespaces(int depth) throws XmlPullParserException { TagNode tag = (TagNode) mDocumentTag; AttributeList attrList = tag.getAttrList(); int nsStart = mParser.getNamespaceCount(depth - 1); int nsEnd = mParser.getNamespaceCount(depth); for (int i = nsEnd - 1; i >= nsStart; i--) { Attribute attr = buildNS(i); attrList.insert(attr); } } // addNamespaces
/* ------------------------------------------------------------ */ public AttributeList getAttributes(String[] names) { log.debug("getAttributes"); AttributeList results = new AttributeList(names.length); for (int i = 0; i < names.length; i++) { try { results.add(new Attribute(names[i], getAttribute(names[i]))); } catch (Exception e) { log.warn(LogSupport.EXCEPTION, e); } } return results; }
private AttributeList getAttributes(ObjectName objName, String[] attrNames) throws InstanceNotFoundException, ReflectionException, IOException { final NameValueMap values = getCachedAttributes(objName, new TreeSet<String>(Arrays.asList(attrNames))); final AttributeList list = new AttributeList(); for (String attrName : attrNames) { final Object value = values.get(attrName); if (value != null || values.containsKey(attrName)) { list.add(new Attribute(attrName, value)); } } return list; }
public void TestSafePrivatePhilipsPETRelated_ScaleFactors_FromList() throws Exception { AttributeList list = new AttributeList(); { Attribute a = new LongStringAttribute(new AttributeTag(0x7053, 0x0010)); a.addValue("Philips PET Private Group"); list.put(a); } assertTrue( "Checking SUV Factor is safe", ClinicalTrialsAttributes.isSafePrivateAttribute(new AttributeTag(0x7053, 0x1000), list)); assertTrue( "Checking Activity Concentration Factor is safe", ClinicalTrialsAttributes.isSafePrivateAttribute(new AttributeTag(0x7053, 0x1009), list)); }
public void TestSafePrivateGEPACSRelated_FromFile() throws Exception { AttributeList list = new AttributeList(); String testFilePath = System.getProperty("com.pixelmed.test.filepath"); // System.err.println("TestSafePrivateGEPACSRelated.TestSafePrivateGEPACSRelated_FromFile(): // testFilePath = "+testFilePath); list.read(new java.io.File(testFilePath, "philipsctwithgepacsprivateattributes.dcm")); // System.err.print("TestSafePrivateGEPACSRelated.TestSafePrivateGEPACSRelated():\n"+list); list.removeUnsafePrivateAttributes(); assertTrue( "Checking Creator is not removed", list.get(new AttributeTag(0x0903, 0x0010)) != null); assertTrue( "Checking Reject Image Flag is not removed", list.get(new AttributeTag(0x0903, 0x1010)) != null); }
private static boolean checkAttrs(String what, AttributeList attrs) { if (attrs.size() != 1) { System.out.println( "TEST FAILS: list returned by " + what + " does not have size 1: " + attrs); return false; } Attribute attr = (Attribute) attrs.get(0); if (!"Exotic".equals(attr.getName())) { System.out.println("TEST FAILS: " + what + " returned wrong " + "attribute: " + attr); return false; } return true; }
/** * Build a tag node. Note that a tag node always has an AttributeList object, even if there is no * attribute list. This wastes some memory, but in theory should make the tree processing more * regular, since it can always be assumed that this object exits. */ private TagNode buildTagNode() { String name = mParser.getName(); // String prefix = mParser.getPrefix(); String prefix = null; String namespace = mParser.getNamespace(); TagNode tag = new TagNode(name, prefix, namespace); AttributeList attrList = new AttributeList(); int numAttr = mParser.getAttributeCount(); for (int i = 0; i < numAttr; i++) { Attribute attr = buildAttr(i); attrList.append(attr); } // for tag.setAttrList(attrList); return tag; } // buildTagNode
/* ------------------------------------------------------------ */ public AttributeList setAttributes(AttributeList attrs) { log.debug("setAttributes"); AttributeList results = new AttributeList(attrs.size()); Iterator iter = attrs.iterator(); while (iter.hasNext()) { try { Attribute attr = (Attribute) iter.next(); setAttribute(attr); results.add(new Attribute(attr.getName(), getAttribute(attr.getName()))); } catch (Exception e) { log.warn(LogSupport.EXCEPTION, e); } } return results; }
public void writeClass(OutputStream is) throws IOException { DataOutputStream classStream = new DataOutputStream(is); classStream.writeInt(magic); classStream.writeShort(minorVersion); classStream.writeShort(majorVersion); classStream.writeShort(constantPool.size()); Iterator<CPInfo> i = constantPool.iterator(); i.next(); // Skip initial, not really there entry for (; i.hasNext(); ) { CPInfo poolEntry = i.next(); poolEntry.write(classStream); // Constant pool array must have null entry after long or double if (poolEntry.tag == CONSTANT_Double || poolEntry.tag == CONSTANT_Long) i.next(); } classStream.writeShort(accessFlags); classStream.writeShort(thisClassIndex); classStream.writeShort(superClassIndex); classStream.writeShort(interfaces.size()); for (Iterator<Integer> j = interfaces.iterator(); j.hasNext(); ) { classStream.writeShort(j.next()); } classStream.writeShort(fields.size()); for (Iterator<FieldInfo> j = fields.iterator(); j.hasNext(); ) { j.next().write(classStream); } classStream.writeShort(methods.size()); for (Iterator<MethodInfo> j = methods.iterator(); j.hasNext(); ) { j.next().write(classStream); } attributes.write(classStream); }
CreateCommand(UnicoreInvokeServer is, String requestId) throws Command.Exception { super(is); this.requestId = requestId; String line; while ((line = is.readLine()) != null) { if (line.trim().equals(CMD_CREATE_END)) { terminated = true; break; } else { try { StringTokenizer st = new StringTokenizer(line); String key = st.nextToken(); String value = line.substring(key.length()); list.put(key, value); } catch (java.lang.Exception e) { Log.printStackTrace(e); } } } if (terminated) { job = new UnicoreJob(this); } else { new Command.Exception("the command was not terminated!"); } }
public List<org.openprovenance.prov.model.Other> getOther() { if (others == null) { others = AttributeList.populateKnownAttributes( this, all, org.openprovenance.prov.model.Other.class); } return this.others; }
/** * Gets the value of the type property. * * <p>This accessor method returns a reference to the live list, not a snapshot. Therefore any * modification you make to the returned list will be present inside the JAXB object. This is why * there is not a <CODE>set</CODE> method for the type property. * * <p>For example, to add a new item, do as follows: * * <pre> * getType().add(newItem); * </pre> * * <p>Objects of the following type(s) are allowed in the list {@link * org.openprovenance.prov.xml.Type } */ public List<org.openprovenance.prov.model.Type> getType() { if (type == null) { type = AttributeList.populateKnownAttributes( this, all, org.openprovenance.prov.model.Type.class); } return this.type; }
/** * Gets the value of the role property. * * <p>This accessor method returns a reference to the live list, not a snapshot. Therefore any * modification you make to the returned list will be present inside the JAXB object. This is why * there is not a <CODE>set</CODE> method for the role property. * * <p>For example, to add a new item, do as follows: * * <pre> * getRole().add(newItem); * </pre> * * <p>Objects of the following type(s) are allowed in the list {@link * org.openprovenance.prov.xml.Role } */ public List<org.openprovenance.prov.model.Role> getRole() { if (role == null) { role = AttributeList.populateKnownAttributes( this, all, org.openprovenance.prov.model.Role.class); } return this.role; }
void commit() { if (attList == null || !attList.hasOption("autowidth")) { double width = 100.0 / count; ColumnContext col = rootColumn; for (int i = 0; i < count; i++) { col.width = width; col = col.next; } } }
/** * Creates a new AppInfoUnmarshaller * * @param atts the AttributeList */ public AppInfoUnmarshaller(AttributeList atts) throws SAXException { super(); _appInfo = new AppInfo(); // -- handle attributes String attValue = null; _appInfo.setSource(atts.getValue(SchemaNames.BASE_ATTR)); } // -- AppInfoUnmarshaller
public void TestSafePrivateGEPACSRelated_AddedToList() throws Exception { AttributeList list = new AttributeList(); { Attribute a = new LongStringAttribute(new AttributeTag(0x0903, 0x0010)); a.addValue("GEIIS PACS"); list.put(a); } { Attribute a = new UnsignedShortAttribute(new AttributeTag(0x0903, 0x1010)); a.addValue(0); list.put(a); } list.removeUnsafePrivateAttributes(); assertTrue( "Checking Creator is not removed", list.get(new AttributeTag(0x0903, 0x0010)) != null); assertTrue( "Checking Reject Image Flag is not removed", ClinicalTrialsAttributes.isSafePrivateAttribute(new AttributeTag(0x0903, 0x1010), list)); }
/** * @exception IOException * @exception DicomException */ public CEchoRequestCommandMessage() throws DicomException, IOException { commandField = MessageServiceElementCommand.C_ECHO_RQ; messageID = super.getNextAvailableMessageID(); int dataSetType = 0x0101; // none // NB. The Affected SOP Class UID should have no extra trailing padding, otherwise the // SCP may fail and send an A-ABORT :) (Part 5 says one null (not space) is allowed) // This is taken care of by the Attribute.write() AttributeList list = new AttributeList(); { AttributeTag t = groupLengthTag; Attribute a = new UnsignedLongAttribute(t); a.addValue(0); list.put(t, a); } { AttributeTag t = TagFromName.AffectedSOPClassUID; Attribute a = new UniqueIdentifierAttribute(t); a.addValue(SOPClass.Verification); list.put(t, a); } { AttributeTag t = TagFromName.CommandField; Attribute a = new UnsignedShortAttribute(t); a.addValue(commandField); list.put(t, a); } { AttributeTag t = TagFromName.MessageID; Attribute a = new UnsignedShortAttribute(t); a.addValue(messageID); list.put(t, a); } { AttributeTag t = TagFromName.CommandDataSetType; Attribute a = new UnsignedShortAttribute(t); a.addValue(dataSetType); list.put(t, a); } ByteArrayOutputStream bout = new ByteArrayOutputStream(); DicomOutputStream dout = new DicomOutputStream( bout, null /* no meta-header */, TransferSyntax.ImplicitVRLittleEndian); list.write(dout); bytes = bout.toByteArray(); groupLength = bytes.length - 12; bytes[8] = (byte) groupLength; // little endian bytes[9] = (byte) (groupLength >> 8); bytes[10] = (byte) (groupLength >> 16); bytes[11] = (byte) (groupLength >> 24); // System.err.println("CEchoRequestCommandMessage: bytes="+HexDump.dump(bytes)); }
private synchronized NameValueMap getCachedAttributes(ObjectName objName, Set<String> attrNames) throws InstanceNotFoundException, ReflectionException, IOException { NameValueMap values = cachedValues.get(objName); if (values != null && values.keySet().containsAll(attrNames)) { return values; } attrNames = new TreeSet<String>(attrNames); Set<String> oldNames = cachedNames.get(objName); if (oldNames != null) { attrNames.addAll(oldNames); } values = new NameValueMap(); final AttributeList attrs = conn.getAttributes(objName, attrNames.toArray(new String[attrNames.size()])); for (Attribute attr : attrs.asList()) { values.put(attr.getName(), attr.getValue()); } cachedValues.put(objName, values); cachedNames.put(objName, attrNames); return values; }
public void TestSafePrivateGEMRRelated_CreatorFromList() throws Exception { { AttributeList list = new AttributeList(); { Attribute a = new LongStringAttribute(new AttributeTag(0x0019, 0x0010)); a.addValue("GEMS_ACQU_01"); list.put(a); } assertTrue( "Internal Pulse Sequence Name is safe", ClinicalTrialsAttributes.isSafePrivateAttribute(new AttributeTag(0x0019, 0x109E), list)); } { AttributeList list = new AttributeList(); { Attribute a = new LongStringAttribute(new AttributeTag(0x0025, 0x0010)); a.addValue("GEMS_SERS_01"); list.put(a); } assertTrue( "Images In Series is safe", ClinicalTrialsAttributes.isSafePrivateAttribute(new AttributeTag(0x0025, 0x1007), list)); } { AttributeList list = new AttributeList(); { Attribute a = new LongStringAttribute(new AttributeTag(0x0043, 0x0010)); a.addValue("GEMS_PARM_01"); list.put(a); } assertTrue( "Scanner Table Entry + Gradient Coil Selected", ClinicalTrialsAttributes.isSafePrivateAttribute(new AttributeTag(0x0043, 0x106F), list)); } }
private void testIsNotRemovedAndRetainsValue( String description, AttributeTag creatorTag, String creator, Attribute privateAttribute, String expectValue) throws DicomException { AttributeList list = new AttributeList(); { Attribute a = new LongStringAttribute(creatorTag); a.addValue(creator); list.put(a); } list.put(privateAttribute); AttributeTag privateTag = privateAttribute.getTag(); list.removeUnsafePrivateAttributes(); assertTrue("Checking Creator is not removed", list.get(creatorTag) != null); assertEquals( "Checking Creator retains value", creator, Attribute.getDelimitedStringValuesOrEmptyString(list, creatorTag)); assertTrue("Checking " + description + " is not removed", list.get(privateTag) != null); assertEquals( "Checking " + description + " retains value", expectValue, Attribute.getDelimitedStringValuesOrEmptyString(list, privateTag)); }
public String getSourceFile() { SourceFileAttribute sfa = (SourceFileAttribute) attributes.getAttributeByType(SourceFileAttribute.typeString); if (sfa != null) { return sfa.getSourceFile(); } String internalName = getInternalClassName(getCurrentClassIndex()); int lastSlash = internalName.lastIndexOf('/'); if (lastSlash != -1) internalName = internalName.substring(lastSlash + 1); int firstPeriod = internalName.indexOf('$'); if (firstPeriod != -1) internalName = internalName.substring(0, firstPeriod); return internalName + ".java"; }
private void emitNewOccurrence(int srxId, AttributeList attrs) throws SAXException { enabledOutput = toProcess(srxId); if (!enabledOutput) { return; } currentSrxId = srxId; String mappedName = XmiMapping.getMappingName(srxId); emit(eol + kOccurrenceType + " " + mappedName + eol); // if it's a component, write its composite String composite = XmiMapping.getComposite(srxId); if (composite != null) { if (!occurrenceNameStack.empty()) { String compositeName = (String) occurrenceNameStack.peek(); if (compositeName != null) { emit(composite + " " + compositeName + eol); } } // end if } // end if // Keep its XMI.id if (attrs != null) { for (int i = 0; i < attrs.getLength(); i++) { String attr = attrs.getName(i); if (attr.equals(kXmiId)) { currentXmiId = attrs.getValue(i); } // end if } // end for } // end if // Keep its current XMI name & SRX name currentXmiName = XmiMapping.getXmiName(srxId); currentSrxName = XmiMapping.getSrxName(srxId); }
/** * @param list * @return array of two String values, row then column orientation, else array of two nulls if * cannot be obtained */ private static String[] getPatientOrientation(AttributeList list) { String[] vPatientOrientation = null; Attribute aPatientOrientation = list.get(TagFromName.PatientOrientation); if (aPatientOrientation != null && aPatientOrientation.getVM() == 2) { try { vPatientOrientation = aPatientOrientation.getStringValues(); if (vPatientOrientation != null && vPatientOrientation.length != 2) { vPatientOrientation = null; } } catch (DicomException e) { vPatientOrientation = null; } } if (vPatientOrientation == null) { vPatientOrientation = new String[2]; } return vPatientOrientation; }
public void TestSafePrivatePhilipsPETRelated_ScaleFactors_FromFile() throws Exception { AttributeList list = new AttributeList(); String testFilePath = System.getProperty("com.pixelmed.test.filepath"); // System.err.println("TestSafePrivatePhilipsPETRelated.TestSafePrivatePhilipsPETRelated_ScaleFactors_FromFile(): testFilePath = "+testFilePath); list.read(new java.io.File(testFilePath, "philipssuvandactivityscalefactors.dcm")); // System.err.print("TestSafePrivatePhilipsPETRelated.TestSafePrivatePhilipsPETRelated_ScaleFactors():\n"+list); list.removeUnsafePrivateAttributes(); assertTrue( "Checking Creator is not removed", list.get(new AttributeTag(0x7053, 0x0010)) != null); assertTrue( "Checking SUV Factor is not removed", list.get(new AttributeTag(0x7053, 0x1000)) != null); assertTrue( "Checking Activity Concentration Factor is not removed", list.get(new AttributeTag(0x7053, 0x1009)) != null); }
public void readClass(InputStream is) throws IOException, CodeCheckException { clearClass(); DataInputStream classStream = new DataInputStream(is); magic = classStream.readInt(); minorVersion = classStream.readUnsignedShort(); majorVersion = classStream.readUnsignedShort(); constantPool.add(null); int constantPoolCount = classStream.readUnsignedShort(); int i; for (i = 1; i < constantPoolCount; i++) { CPInfo poolEntry = readConstant(classStream); constantPool.add(poolEntry); if (poolEntry.tag == CONSTANT_Double || poolEntry.tag == CONSTANT_Long) { i++; constantPool.add(null); } } accessFlags = classStream.readUnsignedShort(); thisClassIndex = classStream.readUnsignedShort(); superClassIndex = classStream.readUnsignedShort(); int interfacesCount = classStream.readUnsignedShort(); for (i = 0; i < interfacesCount; i++) { interfaces.add(new Integer(classStream.readUnsignedShort())); } int fieldsCount = classStream.readUnsignedShort(); for (i = 0; i < fieldsCount; i++) { fields.add(readFieldInfo(classStream)); } int methodsCount = classStream.readUnsignedShort(); for (i = 0; i < methodsCount; i++) { methods.add(readMethodInfo(classStream)); } attributes.read(classStream); }
/** * Generate commomn attributes for converted images. * * <p>Does NOT add ManufacturerModelName ... that should be added by caller. * * <p>Does NOT call * CodingSchemeIdentification.replaceCodingSchemeIdentificationSequenceWithCodingSchemesUsedInAttributeList * ... that should be done by caller. * * @param list * @param patientName * @param patientID * @param studyID * @param seriesNumber * @param instanceNumber * @param modality may be null * @param sopClass may be null * @throws DicomException * @throws NumberFormatException */ public static void generateCommonAttributes( AttributeList list, String patientName, String patientID, String studyID, String seriesNumber, String instanceNumber, String modality, String sopClass) throws DicomException { UIDGenerator u = new UIDGenerator(); { Attribute a = new UniqueIdentifierAttribute(TagFromName.SOPInstanceUID); a.addValue(u.getAnotherNewUID()); list.put(a); } { Attribute a = new UniqueIdentifierAttribute(TagFromName.SeriesInstanceUID); a.addValue(u.getAnotherNewUID()); list.put(a); } { Attribute a = new UniqueIdentifierAttribute(TagFromName.StudyInstanceUID); a.addValue(u.getAnotherNewUID()); list.put(a); } { Attribute a = new UniqueIdentifierAttribute(TagFromName.FrameOfReferenceUID); a.addValue(u.getAnotherNewUID()); list.put(a); } { Attribute a = new PersonNameAttribute(TagFromName.PatientName); a.addValue(patientName); list.put(a); } { Attribute a = new LongStringAttribute(TagFromName.PatientID); a.addValue(patientID); list.put(a); } { Attribute a = new DateAttribute(TagFromName.PatientBirthDate); list.put(a); } { Attribute a = new CodeStringAttribute(TagFromName.PatientSex); list.put(a); } { Attribute a = new ShortStringAttribute(TagFromName.StudyID); a.addValue(studyID); list.put(a); } { Attribute a = new PersonNameAttribute(TagFromName.ReferringPhysicianName); a.addValue("^^^^"); list.put(a); } { Attribute a = new ShortStringAttribute(TagFromName.AccessionNumber); list.put(a); } { Attribute a = new IntegerStringAttribute(TagFromName.SeriesNumber); a.addValue(seriesNumber); list.put(a); } { Attribute a = new IntegerStringAttribute(TagFromName.InstanceNumber); a.addValue(instanceNumber); list.put(a); } { Attribute a = new LongStringAttribute(TagFromName.Manufacturer); a.addValue("PixelMed"); list.put(a); } { Attribute a = new LongStringAttribute(TagFromName.DeviceSerialNumber); a.addValue(new java.rmi.dgc.VMID().toString()); list.put(a); } { Attribute a = new LongStringAttribute(TagFromName.SoftwareVersions); a.addValue(VersionAndConstants.getBuildDate()); list.put(a); } { Attribute a = new CodeStringAttribute(TagFromName.PatientOrientation); list.put(a); } { Attribute a = new CodeStringAttribute(TagFromName.BurnedInAnnotation); a.addValue("NO"); list.put(a); } { Attribute a = new CodeStringAttribute(TagFromName.RecognizableVisualFeatures); a.addValue("NO"); list.put(a); } { Attribute a = new CodeStringAttribute(TagFromName.ContentQualification); a.addValue("RESEARCH"); list.put(a); } { Attribute a = new CodeStringAttribute(TagFromName.LossyImageCompression); a.addValue("00"); list.put(a); } { Attribute a = new LongStringAttribute(TagFromName.PositionReferenceIndicator); list.put(a); } { java.util.Date currentDateTime = new java.util.Date(); String currentDate = new java.text.SimpleDateFormat("yyyyMMdd").format(currentDateTime); String currentTime = new java.text.SimpleDateFormat("HHmmss.SSS").format(currentDateTime); { Attribute a = new DateAttribute(TagFromName.StudyDate); a.addValue(currentDate); list.put(a); } { Attribute a = new TimeAttribute(TagFromName.StudyTime); a.addValue(currentTime); list.put(a); } { Attribute a = new DateAttribute(TagFromName.SeriesDate); a.addValue(currentDate); list.put(a); } { Attribute a = new TimeAttribute(TagFromName.SeriesTime); a.addValue(currentTime); list.put(a); } { Attribute a = new DateAttribute(TagFromName.ContentDate); a.addValue(currentDate); list.put(a); } { Attribute a = new TimeAttribute(TagFromName.ContentTime); a.addValue(currentTime); list.put(a); } { Attribute a = new DateAttribute(TagFromName.InstanceCreationDate); a.addValue(currentDate); list.put(a); } { Attribute a = new TimeAttribute(TagFromName.InstanceCreationTime); a.addValue(currentTime); list.put(a); } { Attribute a = new ShortStringAttribute(TagFromName.TimezoneOffsetFromUTC); a.addValue(DateTimeAttribute.getTimeZone(java.util.TimeZone.getDefault(), currentDateTime)); list.put(a); } } { Attribute a = new UniqueIdentifierAttribute(TagFromName.InstanceCreatorUID); a.addValue(VersionAndConstants.instanceCreatorUID); list.put(a); } int numberOfFrames = Attribute.getSingleIntegerValueOrDefault(list, TagFromName.NumberOfFrames, 1); int samplesPerPixel = Attribute.getSingleIntegerValueOrDefault(list, TagFromName.SamplesPerPixel, 1); if (sopClass == null) { // if modality were not null, could actually attempt to guess SOP Class based on modality here // :( sopClass = SOPClass.SecondaryCaptureImageStorage; if (numberOfFrames > 1) { if (samplesPerPixel == 1) { int bitsAllocated = Attribute.getSingleIntegerValueOrDefault(list, TagFromName.BitsAllocated, 1); if (bitsAllocated == 8) { sopClass = SOPClass.MultiframeGrayscaleByteSecondaryCaptureImageStorage; } else if (bitsAllocated == 16) { sopClass = SOPClass.MultiframeGrayscaleWordSecondaryCaptureImageStorage; } else { Attribute aPixelData = list.getPixelData(); if (aPixelData instanceof OtherFloatAttribute || aPixelData instanceof OtherDoubleAttribute) { sopClass = SOPClass.ParametricMapStorage; } } } else if (samplesPerPixel == 3) { sopClass = SOPClass.MultiframeTrueColorSecondaryCaptureImageStorage; } } } if (sopClass.equals(SOPClass.ParametricMapStorage)) { addParametricMapFrameTypeSharedFunctionalGroup(list); { Attribute a = new CodeStringAttribute(TagFromName.ContentLabel); a.addValue("LABEL1"); list.put(a); } { Attribute a = new LongStringAttribute(TagFromName.ContentDescription); list.put(a); } { Attribute a = new PersonNameAttribute(TagFromName.ContentCreatorName); list.put(a); } } if (SOPClass.isEnhancedMultiframeImageStorage(sopClass)) { if (samplesPerPixel == 1) { double windowWidth = Attribute.getSingleDoubleValueOrDefault(list, TagFromName.WindowWidth, 0); if (windowWidth > 0) { double windowCenter = Attribute.getSingleDoubleValueOrDefault(list, TagFromName.WindowCenter, 0); String voiLUTFunction = Attribute.getSingleStringValueOrDefault(list, TagFromName.VOILUTFunction, "LINEAR"); FunctionalGroupUtilities.generateVOILUTFunctionalGroup( list, numberOfFrames, windowWidth, windowCenter, voiLUTFunction); list.remove(TagFromName.WindowCenter); list.remove(TagFromName.WindowWidth); list.remove(TagFromName.VOILUTFunction); } } double rescaleSlope = Attribute.getSingleDoubleValueOrDefault(list, TagFromName.RescaleSlope, 0); if (rescaleSlope > 0) { double rescaleIntercept = Attribute.getSingleDoubleValueOrDefault(list, TagFromName.RescaleIntercept, 0); String rescaleType = Attribute.getSingleStringValueOrDefault(list, TagFromName.RescaleType, "US"); FunctionalGroupUtilities.generatePixelValueTransformationFunctionalGroup( list, numberOfFrames, rescaleSlope, rescaleIntercept, rescaleType); list.remove(TagFromName.RescaleSlope); list.remove(TagFromName.RescaleIntercept); list.remove(TagFromName.RescaleType); } // four values required { Attribute a = new CodeStringAttribute(TagFromName.ImageType); a.addValue("DERIVED"); a.addValue("PRIMARY"); a.addValue(""); a.addValue(""); list.put(a); } } else { // two values will usually do { Attribute a = new CodeStringAttribute(TagFromName.ImageType); a.addValue("DERIVED"); a.addValue("PRIMARY"); list.put(a); } } if (SOPClass.isMultiframeSecondaryCaptureImageStorage(sopClass)) { if (list.get(TagFromName.PerFrameFunctionalGroupsSequence) != null) { { AttributeTagAttribute a = new AttributeTagAttribute(TagFromName.FrameIncrementPointer); a.addValue(TagFromName.PerFrameFunctionalGroupsSequence); list.put(a); } } else { if (numberOfFrames > 1) { { AttributeTagAttribute a = new AttributeTagAttribute(TagFromName.FrameIncrementPointer); a.addValue(TagFromName.PageNumberVector); list.put(a); } { Attribute a = new IntegerStringAttribute(TagFromName.PageNumberVector); for (int page = 1; page <= numberOfFrames; ++page) { a.addValue(page); } list.put(a); } } } } System.err.println( "CommonConvertedAttributeGeneration.generateCommonAttributes(): SOP Class = " + sopClass); { Attribute a = new UniqueIdentifierAttribute(TagFromName.SOPClassUID); a.addValue(sopClass); list.put(a); } if (SOPClass.isSecondaryCaptureImageStorage(sopClass)) { { Attribute a = new CodeStringAttribute(TagFromName.ConversionType); a.addValue("WSD"); list.put(a); } } if (modality == null) { // could actually attempt to guess modality based on SOP Class here :( modality = "OT"; } { Attribute a = new CodeStringAttribute(TagFromName.Modality); a.addValue(modality); list.put(a); } { Attribute a = new SequenceAttribute(TagFromName.AcquisitionContextSequence); list.put(a); } }