/** * The contents of this file are subject to the OpenMRS Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://license.openmrs.org * * 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. * * Copyright (C) OpenMRS, LLC. All Rights Reserved. */ package org.openmrs.api.db; import java.util.Collection; import java.util.Date; import java.util.List; import org.openmrs.Cohort; import org.openmrs.Concept; import org.openmrs.ConceptStateConversion; import org.openmrs.Patient; import org.openmrs.PatientProgram; import org.openmrs.PatientState; import org.openmrs.Program; import org.openmrs.ProgramWorkflow; import org.openmrs.ProgramWorkflowState; /** * Program- and PatientProgram- and ConceptStateConversion-related database functions * * @version 1.0 */ public interface ProgramWorkflowDAO { // ************************** // PROGRAM // ************************** /** * Saves a Program to the database * * @param program - The {@link Program} to save * @return The saved {@link Program} * @throws DAOException */ public Program saveProgram(Program program) throws DAOException; /** * Retrieves a {@link Program} from the database by primary key programId * * @param programId - The primary key programId to use to retrieve a {@link Program} * @return Program - The {@link Program} matching the passed programId * @throws DAOException */ public Program getProgram(Integer programId) throws DAOException; /** * Returns all programs * * @param includeRetired whether or not to include retired programs * @return List<Program> all existing programs, including retired based on the input parameter * @throws DAOException */ public List<Program> getAllPrograms(boolean includeRetired) throws DAOException; /** * Returns programs that match the given string. A null list will never be returned. An empty * list will be returned if there are no programs matching this <code>nameFragment</code> * * @param nameFragment is the string used to search for programs * @return List<Program> - list of Programs whose name matches the input parameter * @throws DAOException */ public List<Program> findPrograms(String nameFragment) throws DAOException; /** * Completely remove a program from the database (not reversible) This method delegates to * #purgeProgram(program, boolean) method * * @param program the Program to clean out of the database. * @throws DAOException */ public void deleteProgram(Program program) throws DAOException; // ************************** // PATIENT PROGRAM // ************************** /** * Save patientProgram to database (create if new or update if changed) * * @param patientProgram is the PatientProgram to be saved to the database * @return PatientProgram - the saved PatientProgram * @throws DAOException */ public PatientProgram savePatientProgram(PatientProgram patientProgram) throws DAOException; /** * Returns a PatientProgram given that PatientPrograms primary key <code>patientProgramId</code> * A null value is returned if no PatientProgram exists with this patientProgramId. * * @param id integer primary key of the PatientProgram to find * @return PatientProgram object that has patientProgram.patientProgramId = * <code>patientProgramId</code> passed in. * @throws DAOException */ public PatientProgram getPatientProgram(Integer id); public List<PatientProgram> getPatientPrograms(Cohort cohort, Collection<Program> programs); /** * Returns PatientPrograms that match the input parameters. If an input parameter is set to * null, the parameter will not be used. Calling this method will all null parameters will * return all PatientPrograms in the database A null list will never be returned. An empty list * will be returned if there are no programs matching the input criteria * * @param patient - if supplied all PatientPrograms returned will be for this Patient * @param program - if supplied all PatientPrograms returned will be for this Program * @param minEnrollmentDate - if supplied will limit PatientPrograms to those with enrollments * on or after this Date * @param maxEnrollmentDate - if supplied will limit PatientPrograms to those with enrollments * on or before this Date * @param minCompletionDate - if supplied will limit PatientPrograms to those completed on or * after this Date OR not yet completed * @param maxCompletionDate - if supplied will limit PatientPrograms to those completed on or * before this Date * @param includeVoided - boolean, if true will return voided PatientPrograms as well. If false, * will not return voided PatientPrograms * @return List<PatientProgram> of PatientPrograms that match the passed input parameters * @throws DAOException */ public List<PatientProgram> getPatientPrograms(Patient patient, Program program, Date minEnrollmentDate, Date maxEnrollmentDate, Date minCompletionDate, Date maxCompletionDate, boolean includeVoided) throws DAOException; /** * Completely remove a patientProgram from the database (not reversible) This method delegates * to #purgePatientProgram(patientProgram, boolean) method * * @param patientProgram the PatientProgram to clean out of the database. * @throws DAOException */ public void deletePatientProgram(PatientProgram patientProgram) throws DAOException; // ************************** // CONCEPT STATE CONVERSION // ************************** /** * Save ConceptStateConversion to database (create if new or update if changed) * * @param csc The ConceptStateConversion to save * @return The saved ConceptStateConversion * @throws DAOException */ public ConceptStateConversion saveConceptStateConversion(ConceptStateConversion csc) throws DAOException; /** * Returns all conceptStateConversions * * @return List<ConceptStateConversion> of all ConceptStateConversions that exist * @throws DAOException */ public List<ConceptStateConversion> getAllConceptStateConversions() throws DAOException; /** * Returns a conceptStateConversion given that conceptStateConversions primary key * <code>conceptStateConversionId</code> A null value is returned if no conceptStateConversion * exists with this conceptStateConversionId. * * @param id integer primary key of the conceptStateConversion to find * @return ConceptStateConversion object that has * conceptStateConversion.conceptStateConversionId = * <code>conceptStateConversionId</code> passed in. * @throws DAOException */ public ConceptStateConversion getConceptStateConversion(Integer id); /** * Completely remove a conceptStateConversion from the database (not reversible) * * @param csc the ConceptStateConversion to clean out of the database. * @throws DAOException */ public void deleteConceptStateConversion(ConceptStateConversion csc); /** * Retrieves the ConceptStateConversion that matches the passed <code>ProgramWorkflow</code> and * <code>Concept</code> * * @param workflow the ProgramWorkflow to check * @param trigger the Concept to check * @return ConceptStateConversion that matches the passed <code>ProgramWorkflow</code> and * <code>Concept</code> * @throws DAOException */ public ConceptStateConversion getConceptStateConversion(ProgramWorkflow workflow, Concept trigger); /** * Auto generated method comment * * @param uuid * @return */ public ConceptStateConversion getConceptStateConversionByUuid(String uuid); /** * Auto generated method comment * * @param uuid * @return */ public PatientProgram getPatientProgramByUuid(String uuid); /** * Auto generated method comment * * @param uuid * @return */ public Program getProgramByUuid(String uuid); /** * Auto generated method comment * * @param uuid * @return */ public ProgramWorkflowState getStateByUuid(String uuid); public PatientState getPatientStateByUuid(String uuid); /** * Auto generated method comment * * @param uuid * @return */ public ProgramWorkflow getWorkflowByUuid(String uuid); }