/* * The contents of this file are subject to the Mozilla Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations under * the License. * * The Original Code is OpenELIS code. * * Copyright (C) ITECH, University of Washington, Seattle WA. All Rights Reserved. */ package us.mn.state.health.lims.result.action.util; import org.apache.struts.action.ActionMessages; import us.mn.state.health.lims.analysis.valueholder.Analysis; import us.mn.state.health.lims.common.services.IResultSaveService; import us.mn.state.health.lims.note.valueholder.Note; import us.mn.state.health.lims.referral.valueholder.Referral; import us.mn.state.health.lims.result.valueholder.Result; import us.mn.state.health.lims.test.beanItems.TestResultItem; import java.util.ArrayList; import java.util.List; /** */ public class ResultsUpdateDataSet implements IResultSaveService{ private List<TestResultItem> modifiedItems = new ArrayList<TestResultItem>( ); private List<ResultSet> modifiedResults = new ArrayList<ResultSet>( ); private List<TestResultItem> analysisOnlyChangeResults = new ArrayList<TestResultItem>( ); private List<ResultSet> newResults = new ArrayList<ResultSet>( ); private List<Analysis> modifiedAnalysis = new ArrayList<Analysis>( ); private List<Result> deletableResults = new ArrayList<Result>( ); private List<Referral> savableReferrals = new ArrayList<Referral>( ); private List<String> referredAnalysisIds = new ArrayList<String>( ); private Analysis previousAnalysis = new Analysis(); private ResultsValidation resultValidation = new ResultsValidation(); private List<Note> noteList = new ArrayList<Note>( ); private final String currentUserId; public ResultsUpdateDataSet( String currentUserId){ this.currentUserId = currentUserId; } public List<TestResultItem> getModifiedItems(){ return modifiedItems; } @Override public List<ResultSet> getModifiedResults(){ return modifiedResults; } @Override public String getCurrentUserId(){ return currentUserId; } @Override public List<ResultSet> getNewResults(){ return newResults; } public List<TestResultItem> getAnalysisOnlyChangeResults(){ return analysisOnlyChangeResults; } public List<Analysis> getModifiedAnalysis(){ return modifiedAnalysis; } public List<Result> getDeletableResults(){ return deletableResults; } public List<Referral> getSavableReferrals(){ return savableReferrals; } public List<String> getReferredAnalysisIds(){ return referredAnalysisIds; } public Analysis getPreviousAnalysis(){ return previousAnalysis; } public List<Note> getNoteList(){ return noteList; } public void addToNoteList( Note note){ if( note != null){ noteList.add( note ); } } public void filterModifiedItems( List<TestResultItem> allItems ){ for(TestResultItem item : allItems){ if( isUpdated( item )){ modifiedItems.add(item); }else if( item.getIsModified()){ //this covers cases such as test date change or test method change w/o data update analysisOnlyChangeResults.add( item ); } } } public ActionMessages validateModifiedItems(){ return resultValidation.validateModifiedItems(getModifiedItems()); } private boolean isUpdated( TestResultItem item ){ return item.getIsModified() && (ResultUtil.areResults(item) || ResultUtil.areNotes(item) || ResultUtil.isReferred(item) || ResultUtil.isForcedToAcceptance(item) || ResultUtil.isRejected(item)); } public void setPreviousAnalysis( Analysis previousAnalysis ){ this.previousAnalysis = previousAnalysis; } }