/**
* 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.Collection;
import java.util.List;
import java.util.Map;
import org.openmrs.Person;
import org.openmrs.Provider;
import org.openmrs.ProviderAttribute;
import org.openmrs.ProviderAttributeType;
import org.openmrs.api.ProviderService;
/**
* Data Access function for Provider
*
* @since 1.9
*/
public interface ProviderDAO {
/**
* Gets all Providers
*
* @param includeRetired - whether or not to include retired Provider
*/
List<Provider> getAllProviders(boolean includeRetired);
/**
* Saves/Updates a given Provider
*/
public Provider saveProvider(Provider provider);
/**
* deletes an exisiting Provider
*/
public void deleteProvider(Provider provider);
/**
* @param id
* @return Provider gets the Provider based on id
*/
public Provider getProvider(Integer id);
/**
* @param uuid
* @return Provider gets the Provider based on uuid
*/
public Provider getProviderByUuid(String uuid);
/**
* @see ProviderService#getProvidersByPerson( Person, boolean )
*/
public Collection<Provider> getProvidersByPerson(Person person, boolean includeRetired);
/**
* @param name
* @param serializedAttributeValues
* @param start
* @param length
* @param includeRetired
* @return List of Providers
*/
public List<Provider> getProviders(String name, Map<ProviderAttributeType, String> serializedAttributeValues,
Integer start, Integer length, boolean includeRetired);
/**
* @param name
* @param includeRetired
* @return Count of providers satisfying the given query
*/
public Long getCountOfProviders(String name, boolean includeRetired);
/**
* @see ProviderService#getAllProviderAttributeTypes(boolean)
* @see ProviderService#getAllProviderAttributeTypes()
*/
List<ProviderAttributeType> getAllProviderAttributeTypes(boolean includeRetired);
/**
* @see ProviderService#getProviderAttributeType(Integer)
*/
ProviderAttributeType getProviderAttributeType(Integer providerAttributeTypeId);
/**
* @see ProviderService#getProviderAttributeTypeByUuid(String)
*/
ProviderAttributeType getProviderAttributeTypeByUuid(String uuid);
/**
* @see ProviderService#saveProviderAttributeType(ProviderAttributeType)
*/
ProviderAttributeType saveProviderAttributeType(ProviderAttributeType providerAttributeType);
/**
* @see ProviderService#purgeProviderAttributeType(ProviderAttributeType)
*/
void deleteProviderAttributeType(ProviderAttributeType providerAttributeType);
/**
* @see ProviderService#getProviderAttribute(Integer)
*/
ProviderAttribute getProviderAttribute(Integer providerAttributeID);
/**
* @see ProviderService#getProviderAttributeByUuid(String)
*/
ProviderAttribute getProviderAttributeByUuid(String uuid);
/**
* @see ProviderService#isProviderIdentifierUnique(Provider)
*/
public boolean isProviderIdentifierUnique(Provider provider) throws DAOException;
/**
* @see ProviderService#getProviderByIdentifier(String)
*/
public Provider getProviderByIdentifier(String identifier);
}