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 copyCode(boolean copy, Dataset code, DcmElement sq) { if (copy && code != null) { sq.addItem(code); } }