From: Franz W. <jav...@us...> - 2007-05-31 14:30:25
|
Update of /cvsroot/dcm4che/dcm4jboss-ejb/src/java/org/dcm4chex/archive/ejb/session In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv16718/src/java/org/dcm4chex/archive/ejb/session Modified Files: MPPSManagerBean.java Log Message: Changed: 1) Update SeriesRequest object list after manual MPPS to MWL linking. 2) Update Requested Attribute Sequence in series attributes. 3) corrected: series will be updated not only for the attributes of the first linked MWL. Issue: DCMEE-401 Index: MPPSManagerBean.java =================================================================== RCS file: /cvsroot/dcm4che/dcm4jboss-ejb/src/java/org/dcm4chex/archive/ejb/session/MPPSManagerBean.java,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** MPPSManagerBean.java 18 Apr 2007 23:21:55 -0000 1.29 --- MPPSManagerBean.java 31 May 2007 14:30:20 -0000 1.30 *************** *** 260,322 **** MWLItemLocal mwlItem; MPPSLocal mpps; - Map map = new HashMap(); try { mwlItem = mwlItemHome.findByRpIdAndSpsId(rpid, spsid); mpps = mppsHome.findBySopIuid(mppsIUID); - String accNo = mwlItem.getAccessionNumber(); PatientLocal mwlPat = mwlItem.getPatient(); PatientLocal mppsPat = mpps.getPatient(); Dataset mwlAttrs = mwlItem.getAttributes(); ! Dataset mppsAttrs = mpps.getAttributes(); ! Dataset ssa; ! DcmElement ssaSQ = mppsAttrs.get(Tags.ScheduledStepAttributesSeq); ! String ssaSpsID, studyIUID = null; ! boolean spsNotInList = true; ! for ( int i = 0, len = ssaSQ.countItems() ; i < len ; i++ ) { ! ssa = ssaSQ.getItem(i); ! if ( ssa != null ) { ! if ( studyIUID == null ) { ! studyIUID = ssa.getString(Tags.StudyInstanceUID); ! if ( !studyIUID.equals( ! mwlAttrs.getString(Tags.StudyInstanceUID) ) ) { ! log.info("StudyInstanceUID corrected for spsID "+spsid); ! mwlAttrs.putUI(Tags.StudyInstanceUID, ssa.getString(Tags.StudyInstanceUID) ); ! mwlItem.setAttributes( mwlAttrs ); ! } ! } ! ssaSpsID = ssa.getString(Tags.SPSID); ! if ( ssaSpsID == null || spsid.equals(ssaSpsID) ) { ! ssa.putSH(Tags.AccessionNumber,accNo); ! ssa.putSH(Tags.SPSID, spsid); ! ssa.putSH(Tags.RequestedProcedureID, rpid); ! ssa.putUI(Tags.StudyInstanceUID, studyIUID); ! spsNotInList = false; ! } ! } ! } ! if ( spsNotInList ) { ! ssa = ssaSQ.addNewItem(); ! Dataset spsDS = mwlAttrs.getItem(Tags.SPSSeq); ! ssa.putUI(Tags.StudyInstanceUID, studyIUID); ! ssa.putSH(Tags.SPSID, spsid); ! ssa.putSH(Tags.RequestedProcedureID, rpid); ! ssa.putSH(Tags.AccessionNumber, accNo); ! ssa.putSQ(Tags.RefStudySeq); ! ssa.putSH(Tags.RequestedProcedureID, mwlAttrs.getString(Tags.RequestedProcedureID)); ! ssa.putLO(Tags.SPSDescription, spsDS.getString(Tags.SPSDescription)); ! DcmElement mppsSPCSQ = ssa.putSQ(Tags.ScheduledProtocolCodeSeq); ! DcmElement mwlSPCSQ = spsDS.get(Tags.ScheduledProtocolCodeSeq); ! if ( mwlSPCSQ != null && mwlSPCSQ.countItems() > 0 ) { ! for ( int i = 0, len = mwlSPCSQ.countItems() ; i < len ; i++ ) { ! mppsSPCSQ.addNewItem().putAll(mwlSPCSQ.getItem(i)); ! } ! } ! log.debug("add new scheduledStepAttribute item:");log.info(ssa); ! log.debug("new mppsAttrs:");log.debug(mppsAttrs); ! } ! mpps.setAttributes(mppsAttrs); ! mppsAttrs.putAll(mppsPat.getAttributes(false)); ! map.put("mppsAttrs",mppsAttrs); ! map.put("mwlAttrs",mwlAttrs); if ( ! mwlPat.equals(mppsPat) ) { map.put( "mwlPat", mwlPat.getAttributes(true)); --- 260,270 ---- MWLItemLocal mwlItem; MPPSLocal mpps; try { mwlItem = mwlItemHome.findByRpIdAndSpsId(rpid, spsid); mpps = mppsHome.findBySopIuid(mppsIUID); PatientLocal mwlPat = mwlItem.getPatient(); PatientLocal mppsPat = mpps.getPatient(); Dataset mwlAttrs = mwlItem.getAttributes(); ! Map map = updateLinkedMpps(mpps, mwlItem, mwlAttrs); if ( ! mwlPat.equals(mppsPat) ) { map.put( "mwlPat", mwlPat.getAttributes(true)); *************** *** 331,334 **** --- 279,348 ---- } + private Map updateLinkedMpps(MPPSLocal mpps, MWLItemLocal mwlItem, Dataset mwlAttrs) { + Map map = new HashMap(); + Dataset ssa; + Dataset mppsAttrs = mpps.getAttributes(); + log.debug("MPPS attrs:");log.debug(mppsAttrs); + log.debug("MWL attrs:");log.debug(mwlAttrs); + String rpid = mwlAttrs.getString(Tags.RequestedProcedureID); + String spsid = mwlAttrs.getItem(Tags.SPSSeq).getString(Tags.SPSID); + String accNo = mwlAttrs.getString(Tags.AccessionNumber); + DcmElement ssaSQ = mppsAttrs.get(Tags.ScheduledStepAttributesSeq); + String ssaSpsID, studyIUID = null; + boolean spsNotInList = true; + for ( int i = 0, len = ssaSQ.countItems() ; i < len ; i++ ) { + ssa = ssaSQ.getItem(i); + if ( ssa != null ) { + if ( studyIUID == null ) { + studyIUID = ssa.getString(Tags.StudyInstanceUID); + if ( !studyIUID.equals( + mwlAttrs.getString(Tags.StudyInstanceUID) ) ) { + if ( mwlItem != null ) { + log.info("StudyInstanceUID corrected for spsID "+spsid); + mwlAttrs.putUI(Tags.StudyInstanceUID, studyIUID ); + mwlItem.setAttributes( mwlAttrs ); + } else { + log.warn("StudyInstanceUID of external MWL entry can not be corrected! spsID "+spsid); + log.warn("--- StudyIUID MWL:"+mwlAttrs.getString(Tags.StudyInstanceUID)+" StudyIUID MPPS:"+studyIUID); + } + } + } + ssaSpsID = ssa.getString(Tags.SPSID); + if ( ssaSpsID == null || spsid.equals(ssaSpsID) ) { + ssa.putSH(Tags.AccessionNumber,accNo); + ssa.putSH(Tags.SPSID, spsid); + ssa.putSH(Tags.RequestedProcedureID, rpid); + ssa.putUI(Tags.StudyInstanceUID, studyIUID); + spsNotInList = false; + } + } + } + if ( spsNotInList ) { + ssa = ssaSQ.addNewItem(); + Dataset spsDS = mwlAttrs.getItem(Tags.SPSSeq); + ssa.putUI(Tags.StudyInstanceUID, studyIUID); + ssa.putSH(Tags.SPSID, spsid); + ssa.putSH(Tags.RequestedProcedureID, rpid); + ssa.putSH(Tags.AccessionNumber, accNo); + ssa.putSQ(Tags.RefStudySeq); + ssa.putSH(Tags.RequestedProcedureID, mwlAttrs.getString(Tags.RequestedProcedureID)); + ssa.putLO(Tags.SPSDescription, spsDS.getString(Tags.SPSDescription)); + DcmElement mppsSPCSQ = ssa.putSQ(Tags.ScheduledProtocolCodeSeq); + DcmElement mwlSPCSQ = spsDS.get(Tags.ScheduledProtocolCodeSeq); + if ( mwlSPCSQ != null && mwlSPCSQ.countItems() > 0 ) { + for ( int i = 0, len = mwlSPCSQ.countItems() ; i < len ; i++ ) { + mppsSPCSQ.addNewItem().putAll(mwlSPCSQ.getItem(i)); + } + } + log.debug("add new scheduledStepAttribute item:");log.debug(ssa); + log.debug("new mppsAttrs:");log.debug(mppsAttrs); + } + mppsAttrs.putAll(mpps.getPatient().getAttributes(false)); + mpps.setAttributes(mppsAttrs); + map.put("mppsAttrs",mppsAttrs); + map.put("mwlAttrs",mwlAttrs); + return map; + } + /** * Links a mpps to a mwl entry (external). *************** *** 361,418 **** String spsID = mwlAttrs.get(Tags.SPSSeq).getItem().getString(Tags.SPSID); log.info("linkMppsToMwl sps:"+spsID+" mpps:"+mppsIUID); ! MPPSLocal mpps; ! Map map = new HashMap(); ! mpps = mppsHome.findBySopIuid(mppsIUID); ! String accNo = mwlAttrs.getString(Tags.AccessionNumber); AttributeFilter filter = AttributeFilter.getPatientAttributeFilter(null); Dataset mwlPatDs = filter.filter(mwlAttrs); PatientLocal mppsPat = mpps.getPatient(); ! Dataset mppsAttrs = mpps.getAttributes(); ! Dataset ssa; ! DcmElement ssaSQ = mppsAttrs.get(Tags.ScheduledStepAttributesSeq); ! String ssaSpsID, studyIUID = null; ! boolean spsNotInList = true; ! for ( int i = 0, len = ssaSQ.countItems() ; i < len ; i++ ) { ! ssa = ssaSQ.getItem(i); ! if ( ssa != null ) { ! if ( studyIUID == null ) { ! studyIUID = ssa.getString(Tags.StudyInstanceUID); ! if ( !studyIUID.equals( ! mwlAttrs.getString(Tags.StudyInstanceUID) ) ) { ! log.warn("StudyInstanceUID of external MWL entry can not be corrected! spsID "+spsID); ! } ! } ! ssaSpsID = ssa.getString(Tags.SPSID); ! if ( ssaSpsID == null || spsID.equals(ssaSpsID) ) { ! ssa.putSH(Tags.AccessionNumber,accNo); ! ssa.putSH(Tags.SPSID, spsID); ! ssa.putUI(Tags.StudyInstanceUID, studyIUID); ! spsNotInList = false; ! } ! } ! } ! if ( spsNotInList ) { ! ssa = ssaSQ.addNewItem(); ! Dataset spsDS = mwlAttrs.getItem(Tags.SPSSeq); ! ssa.putUI(Tags.StudyInstanceUID, studyIUID); ! ssa.putSH(Tags.SPSID, spsID); ! ssa.putSH(Tags.AccessionNumber, accNo); ! ssa.putSQ(Tags.RefStudySeq); ! ssa.putSH(Tags.RequestedProcedureID, mwlAttrs.getString(Tags.RequestedProcedureID)); ! ssa.putLO(Tags.SPSDescription, spsDS.getString(Tags.SPSDescription)); ! DcmElement mppsSPCSQ = ssa.putSQ(Tags.ScheduledProtocolCodeSeq); ! DcmElement mwlSPCSQ = spsDS.get(Tags.ScheduledProtocolCodeSeq); ! if ( mwlSPCSQ != null && mwlSPCSQ.countItems() > 0 ) { ! for ( int i = 0, len = mwlSPCSQ.countItems() ; i < len ; i++ ) { ! mppsSPCSQ.addNewItem().putAll(mwlSPCSQ.getItem(i)); ! } ! } ! log.debug("add new scheduledStepAttribute item:");log.info(ssa); ! log.debug("new mppsAttrs:");log.debug(mppsAttrs); ! } ! mpps.setAttributes(mppsAttrs); ! mppsAttrs.putAll(mppsPat.getAttributes(false)); ! map.put("mppsAttrs",mppsAttrs); ! map.put("mwlAttrs",mwlAttrs); if ( ! isSamePatient(mwlPatDs,mppsPat) ) { Collection col = patHome.findByPatientIdWithIssuer(mwlPatDs.getString(Tags.PatientID), --- 375,383 ---- String spsID = mwlAttrs.get(Tags.SPSSeq).getItem().getString(Tags.SPSID); log.info("linkMppsToMwl sps:"+spsID+" mpps:"+mppsIUID); ! MPPSLocal mpps = mppsHome.findBySopIuid(mppsIUID); AttributeFilter filter = AttributeFilter.getPatientAttributeFilter(null); Dataset mwlPatDs = filter.filter(mwlAttrs); PatientLocal mppsPat = mpps.getPatient(); ! Map map = updateLinkedMpps(mpps, null, mwlAttrs); if ( ! isSamePatient(mwlPatDs,mppsPat) ) { Collection col = patHome.findByPatientIdWithIssuer(mwlPatDs.getString(Tags.PatientID), *************** *** 528,532 **** * @ejb.interface-method */ ! public Dataset updateSeriesAndStudy(Collection seriesDS) throws FinderException { Dataset ds = null; String iuid; --- 493,497 ---- * @ejb.interface-method */ ! public Dataset updateSeriesAndStudy(Collection seriesDS) throws FinderException, CreateException { Dataset ds = null; String iuid; *************** *** 539,543 **** iuid = ds.getString(Tags.SeriesInstanceUID); series = seriesHome.findBySeriesIuid(iuid); ! series.setAttributes(ds); dsSer = refSeriesSeq.addNewItem(); dsSer.putAll(series.getAttributes(true)); --- 504,508 ---- iuid = ds.getString(Tags.SeriesInstanceUID); series = seriesHome.findBySeriesIuid(iuid); ! series.updateAttributes(ds, true); dsSer = refSeriesSeq.addNewItem(); dsSer.putAll(series.getAttributes(true)); |