/** * This Source Code Form is subject to the terms of the Mozilla Public License, * v. 2.0. If a copy of the MPL was not distributed with this file, You can * obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under * the terms of the Healthcare Disclaimer located at http://openmrs.org/license. * * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS * graphic logo is a trademark of OpenMRS Inc. */ package org.openmrs.api.db; import java.util.Date; import java.util.List; import java.util.Map; import org.openmrs.Cohort; import org.openmrs.Encounter; import org.openmrs.EncounterRole; import org.openmrs.EncounterType; import org.openmrs.Location; import org.openmrs.Patient; import org.openmrs.Visit; import org.openmrs.api.EncounterService; import org.openmrs.parameter.EncounterSearchCriteria; /** * Encounter-related database functions */ public interface EncounterDAO { /** * Saves an encounter * * @param encounter to be saved * @throws DAOException */ public Encounter saveEncounter(Encounter encounter) throws DAOException; /** * Purge an encounter from database. * * @param encounter encounter object to be purged */ public void deleteEncounter(Encounter encounter) throws DAOException; /** * Get encounter by internal identifier * * @param encounterId encounter id * @return encounter with given internal identifier * @throws DAOException */ public Encounter getEncounter(Integer encounterId) throws DAOException; /** * @param patientId * @return all encounters for the given patient identifier * @throws DAOException */ public List<Encounter> getEncountersByPatientId(Integer patientId) throws DAOException; /** * @see org.openmrs.api.EncounterService#getEncounters(org.openmrs.parameter.EncounterSearchCriteria) */ public List<Encounter> getEncounters(EncounterSearchCriteria encounterSearchCriteria); /** * Save an Encounter Type * * @param encounterType */ public EncounterType saveEncounterType(EncounterType encounterType); /** * Purge encounter type from database. * * @param encounterType * @throws DAOException */ public void deleteEncounterType(EncounterType encounterType) throws DAOException; /** * Get encounterType by internal identifier * * @param encounterTypeId Internal Integer identifier for an EncounterType * @return EncounterType with given internal identifier * @throws DAOException */ public EncounterType getEncounterType(Integer encounterTypeId) throws DAOException; /** * Get encounterType by name * * @param name String representation of an encounterType * @return EncounterType * @throws DAOException */ public EncounterType getEncounterType(String name) throws DAOException; /** * Get all encounter types * * @return encounter types list * @throws DAOException */ public List<EncounterType> getAllEncounterTypes(Boolean includeVoided) throws DAOException; /** * Find Encounter Types matching the given name. Search string is case insensitive, so that * "NaMe".equals("name") is true. * * @param name * @return all EncounterTypes that match * @throws DAOException */ public List<EncounterType> findEncounterTypes(String name) throws DAOException; /** * Gets the value of encounterDatetime currently saved in the database for the given encounter, * bypassing any caches. This is used prior to saving an encounter so that we can change the obs * if need be * * @param encounter the Encounter go the the encounterDatetime of * @return the encounterDatetime currently in the database for this encounter * @should get saved encounter datetime from database */ public Date getSavedEncounterDatetime(Encounter encounter); /** * Find {@link Encounter} matching a uuid * * @param uuid * @return {@link Encounter} */ public Encounter getEncounterByUuid(String uuid); /** * Find {@link EncounterType} matching a uuid * * @param uuid * @return {@link EncounterType} */ public EncounterType getEncounterTypeByUuid(String uuid); /** * Get a list of {@link Encounter} by Patient name or identifier based on batch settings * * @param query patient name or identifier * @param patientId the patient id * @param start beginning index for the batch * @param length number of encounters to return in the batch * @param includeVoided Specifies whether voided encounters should be included * @return list of {@link Encounter} based on batch settings * @see EncounterService#getEncounters(String, Integer, Integer, boolean) */ List<Encounter> getEncounters(String query, Integer patientId, Integer start, Integer length, boolean includeVoided); /** * Gets the location of the encounter * * @param encounter to be retrieved from the database * @return {@link Location} */ public Location getSavedEncounterLocation(Encounter encounter); /** * @see EncounterService#getAllEncounters(Cohort) */ public Map<Integer, List<Encounter>> getAllEncounters(Cohort patients); /** * Return the number of encounters matching a patient name or patient identifier * * @param query patient name or identifier * @param patientId the patient id * @param includeVoided Specifies whether voided encounters should be included * @return the number of encounters matching the given search phrase * @see EncounterService#getCountOfEncounters(String, boolean) */ public Long getCountOfEncounters(String query, Integer patientId, boolean includeVoided); /** * @see EncounterService#getEncountersByVisit(Visit, boolean) */ public List<Encounter> getEncountersByVisit(Visit visit, boolean includeVoided); /** * Saves an encounter role * * @param encounterRole role to be saved * @throws org.openmrs.api.db.DAOException */ public EncounterRole saveEncounterRole(EncounterRole encounterRole) throws DAOException; /** * Purge an encounter role from database. * * @param encounterRole encounter role object to be purged */ public void deleteEncounterRole(EncounterRole encounterRole) throws DAOException; /** * Get encounter role by internal identifier * * @param encounterRoleId encounter role id * @return encounter role with given internal identifier * @throws org.openmrs.api.db.DAOException */ public EncounterRole getEncounterRole(Integer encounterRoleId) throws DAOException; /** * Find {@link org.openmrs.EncounterRole} matching a uuid * * @param uuid * @return {@link org.openmrs.EncounterRole} */ public EncounterRole getEncounterRoleByUuid(String uuid); /** * Get all encounter roles and optionally specify whether to include retired encountered roles * * @param includeRetired include retired * @return enconter roles * @throws org.openmrs.api.db.DAOException * @see org.openmrs.api.EncounterService#getAllEncounterRoles(boolean) */ public List<EncounterRole> getAllEncounterRoles(boolean includeRetired) throws DAOException; /** * @see org.openmrs.api.EncounterService#getEncounterRoleByName(String name) */ public EncounterRole getEncounterRoleByName(String name) throws DAOException; /** * @see EncounterService#getEncountersNotAssignedToAnyVisit(Patient) */ public List<Encounter> getEncountersNotAssignedToAnyVisit(Patient patient) throws DAOException; /** * @see org.openmrs.api.EncounterService#getEncountersByVisitsAndPatient(org.openmrs.Patient, boolean, java.lang.String, java.lang.Integer, java.lang.Integer) */ List<Encounter> getEncountersByVisitsAndPatient(Patient patient, boolean includeVoided, String query, Integer start, Integer length); /** * @see EncounterService#getEncountersByVisitsAndPatientCount(Patient, boolean, String) */ Integer getEncountersByVisitsAndPatientCount(Patient patient, boolean includeVoided, String query); /** * Get encounter roles by name * * @param name encounter role name * @return encounter roles * @throws org.openmrs.api.db.DAOException * @see org.openmrs.api.EncounterService#getEncounterRolesByName(String name) */ public List<EncounterRole> getEncounterRolesByName(String name) throws DAOException; }