public void addWorklistItem( Long studyPk, String templateFile, String humanPerformerCode, Long scheduleDate) throws Exception { String uri = FileUtils.resolve(new File(templatePath, templateFile + ".xml")).toURI().toString(); if (log.isDebugEnabled()) log.debug("load template file: " + uri); Dataset ds = DatasetUtils.fromXML(new InputSource(uri)); ContentManager cm = getContentManager(); // patient Dataset patDS = cm.getPatientForStudy(studyPk.longValue()); if (log.isDebugEnabled()) { log.debug("Patient Dataset:"); log.debug(patDS); } ds.putAll(patDS.subSet(PAT_ATTR_TAGS)); // Dataset sopInstRef = cm.getSOPInstanceRefMacro(studyPk.longValue(), false); String studyIUID = sopInstRef.getString(Tags.StudyInstanceUID); ds.putUI(Tags.SOPInstanceUID, UIDGenerator.getInstance().createUID()); ds.putUI(Tags.StudyInstanceUID, studyIUID); DcmElement inSq = ds.putSQ(Tags.InputInformationSeq); inSq.addItem(sopInstRef); // Scheduled Human Performer Seq DcmElement schedHPSq = ds.putSQ(Tags.ScheduledHumanPerformersSeq); Dataset item = schedHPSq.addNewItem(); DcmElement hpCodeSq = item.putSQ(Tags.HumanPerformerCodeSeq); Dataset dsCode = (Dataset) this.humanPerformer.get(humanPerformerCode); log.info(dsCode); if (dsCode != null) { hpCodeSq.addItem(dsCode); item.putPN(Tags.HumanPerformerName, dsCode.getString(Tags.CodeMeaning)); } // Scheduled Procedure Step Start Date and Time ds.putDT(Tags.SPSStartDateAndTime, new Date(scheduleDate.longValue())); if (log.isDebugEnabled()) { log.debug("GPSPS Dataset:"); log.debug(ds); } addWorklistItem(ds); }
private void sendMwlItem() throws CreateException, FinderException, Exception { String id = "123"; String PatientId = "PATID-" + id; String PatientName = "Ivanov-" + id + "^I^I"; String PatientBirthDate = "19740301"; String PatientSex = "M"; String AdmissionID = "ADMID-" + id; String ScheduledProcedureStepID = "SPSID-" + id; String RequestedProcedureID = "RPID-" + id; // TODO Auto-generated method stub File fXmlFile = new File("./test/dicom/mwlitem.xml"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(fXmlFile); // optional, but recommended // read this - // http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work doc.getDocumentElement().normalize(); System.out.println("Root element :" + doc.getDocumentElement().getNodeName()); NodeList nList = doc.getElementsByTagName("attr"); for (int i = 0; i < nList.getLength(); i++) { Node attrNode = nList.item(i); // PatientId if (((Element) (attrNode)).getAttribute("tag").equals("00100020")) { attrNode.getFirstChild().setNodeValue(PatientId); System.out.println("PatientId " + attrNode.getFirstChild().getNodeValue()); } // PatientName if (((Element) (attrNode)).getAttribute("tag").equals("00100010")) { attrNode.getFirstChild().setNodeValue(PatientName); System.out.println("PatientName " + attrNode.getFirstChild().getNodeValue()); } // PatientBirthDate if (((Element) (attrNode)).getAttribute("tag").equals("00100030")) { attrNode.getFirstChild().setNodeValue(PatientBirthDate); System.out.println("PatientBirthDate " + attrNode.getFirstChild().getNodeValue()); } // PatientSex if (((Element) (attrNode)).getAttribute("tag").equals("00100040")) { attrNode.getFirstChild().setNodeValue(PatientSex); System.out.println("PatientSex " + attrNode.getFirstChild().getNodeValue()); } // AdmissionID if (((Element) (attrNode)).getAttribute("tag").equals("00380010")) { attrNode.getFirstChild().setNodeValue(AdmissionID); System.out.println("AdmissionID " + attrNode.getFirstChild().getNodeValue()); } // Scheduled Procedure Step Sequence if (((Element) (attrNode)).getAttribute("tag").equals("00400100")) { NodeList itemList = attrNode.getChildNodes(); for (int j = 0; j < itemList.getLength(); j++) { Node itemNode = itemList.item(j); if (itemNode.getNodeType() == Node.ELEMENT_NODE) { NodeList tagList = ((Element) itemNode).getElementsByTagName("attr"); for (int k = 0; k < tagList.getLength(); k++) { Node itemNode2 = tagList.item(k); // ScheduledProcedureStepID if (((Element) (itemNode2)).getAttribute("tag").equals("00400009")) { itemNode2.getFirstChild().setNodeValue(ScheduledProcedureStepID); System.out.println( "ScheduledProcedureStepID " + itemNode2.getFirstChild().getNodeValue()); } } } } } // RequestedProcedureID if (((Element) (attrNode)).getAttribute("tag").equals("00401001")) { attrNode.getFirstChild().setNodeValue(RequestedProcedureID); System.out.println("RequestedProcedureID " + attrNode.getFirstChild().getNodeValue()); } } TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = tf.newTransformer(); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); StringWriter writer = new StringWriter(); transformer.transform(new DOMSource(doc), new StreamResult(writer)); String output = writer.getBuffer().toString().replaceAll("\n|\r", ""); // System.out.println("!! "+output); Dataset ds = DatasetUtils.fromXML(output); ds = add(ds); Dataset spsitem = ds.getItem(Tags.SPSSeq); System.out.println( ds.getString(Tags.RequestedProcedureID) + '/' + spsitem.getString(Tags.SPSID)); }