/** * This handler doesn't ever assign an encounter to a visit. * * @see EncounterVisitHandler */ @Handler public class NoVisitAssignmentHandler extends BaseEncounterVisitHandler { @Override public String getDisplayName(Locale locale) { return Context.getMessageSourceService().getMessage("Visit.assignmentHandler.noAssignment", null, locale); } @Override public void beforeCreateEncounter(Encounter encounter) { // not doing anything here. This is the simplest handler you can get } }
/** * This class sets the void attributes on the given {@link Visit} object when a void* method is * called with this class. This differs from the {@link BaseVoidHandler} because voiding the Visit * object implies voiding encounters. * * @see RequiredDataAdvice * @see VoidHandler * @since 1.9 */ @Handler(supports = Visit.class) public class VisitVoidHandler implements VoidHandler<Visit> { @Override public void handle(Visit voidableObject, User voidingUser, Date voidedDate, String voidReason) { List<Encounter> encountersByVisit = Context.getEncounterService().getEncountersByVisit(voidableObject, false); for (Encounter encounter : encountersByVisit) { encounter.setDateVoided(voidedDate); Context.getEncounterService().voidEncounter(encounter, voidReason); } } }
/** * This class sets the void attributes on the given {@link Visit} object when an unvoid* method is * called with this class. This differs from the {@link BaseUnvoidHandler} because unvoiding the * Visit object implies unvoiding encounters voided with that visit. * * @see RequiredDataAdvice * @see UnvoidHandler * @since 1.9 */ @Handler(supports = Visit.class) public class VisitUnvoidHandler implements UnvoidHandler<Visit> { @Override public void handle(Visit visit, User voidingUser, Date origParentVoidedDate, String unused) { List<Encounter> encountersByVisit = Context.getEncounterService().getEncountersByVisit(visit, true); for (Encounter encounter : encountersByVisit) { if (encounter.getVoided() && encounter.getDateVoided().equals(visit.getDateVoided()) && encounter.getVoidReason().equals(visit.getVoidReason())) { Context.getEncounterService().unvoidEncounter(encounter); } } } }
/** * This class deals with {@link Order} objects when they are saved via a save* method in an Openmrs * Service. This handler is automatically called by the {@link RequiredDataAdvice} AOP class. <br> * * @see RequiredDataHandler * @see SaveHandler * @see Order * @since 1.5 */ @Handler(supports = Order.class) public class OrderSaveHandler implements SaveHandler<Order> { /** * @see org.openmrs.api.handler.SaveHandler#handle(org.openmrs.OpenmrsObject, org.openmrs.User, * java.util.Date, java.lang.String) */ @Override public void handle(Order order, User creator, Date dateCreated, String other) { if (order.getPatient() == null && order.getEncounter() != null) { order.setPatient(order.getEncounter().getPatient()); } } }
/** * This class ensures that the voidReason is non-null for supported object types * * @see RequiredDataAdvice * @see UnvoidHandler * @since 1.5 */ @Handler(supports = { Patient.class, Encounter.class, Obs.class, Cohort.class, Order.class }, order = 1 /* low order so this is run first */) public class RequireVoidReasonVoidHandler implements VoidHandler<Voidable> { /** * Validates that the voidReason is non-null and non-empty for supported objects * * @should throw IllegalArgumentException if Patient voidReason is null * @should throw IllegalArgumentException if Encounter voidReason is empty * @should throw IllegalArgumentException if Obs voidReason is blank * @should not throw Exception if voidReason is not blank * @should not throw Exception if voidReason is null for unsupported types */ @Override public void handle(Voidable voidableObject, User voidingUser, Date voidedDate, String voidReason) { if (StringUtils.isBlank(voidReason)) { throw new IllegalArgumentException("The 'reason' argument is required"); } } }
/** * Validates attributes on the {@link ProviderAttributeType} object. * * @since 1.9 */ @Handler(supports = { ProviderAttributeType.class }, order = 50) public class ProviderAttributeTypeValidator extends BaseAttributeTypeValidator<ProviderAttributeType> { /** * Determines if the command object being submitted is a valid type * * @see org.springframework.validation.Validator#supports(java.lang.Class) * @should pass validation if field lengths are correct * @should fail validation if field lengths are not correct */ @Override public boolean supports(Class<?> c) { return ProviderAttributeType.class.isAssignableFrom(c); } @Override public void validate(Object obj, Errors errors) { if (obj != null) { super.validate(obj, errors); ValidateUtil.validateFieldLengths(errors, obj.getClass(), "name", "description", "datatypeClassname", "preferredHandlerClassname", "retireReason"); } } }
@Handler(supports = { Patient.class, Encounter.class }) public class RequireVoidReasonSaveHandler implements SaveHandler<Voidable> {
@Handler(supports = { LocationTag.class }, order = 50) public class LocationTagValidator implements Validator {
@Handler(supports = Patient.class) public class PatientSaveHandler implements SaveHandler<Patient> {
@Handler(supports = { VisitAttributeType.class }, order = 50) public class VisitAttributeTypeValidator extends BaseAttributeTypeValidator<VisitAttributeType> {
/** * This is called every time a {@link PersonName} object is saved. The current implemention just * trims out the whitespace from the beginning and end of the given/middle/familyname/familyName2 * attributes */ @Handler(supports = PersonName.class) public class PersonNameSaveHandler implements SaveHandler<PersonName> { /** * @see org.openmrs.api.handler.SaveHandler#handle(org.openmrs.OpenmrsObject, org.openmrs.User, * java.util.Date, java.lang.String) */ @Override public void handle(PersonName personName, User creator, Date dateCreated, String other) { if (personName.getGivenName() != null) { personName.setGivenName(personName.getGivenName().trim()); } if (personName.getMiddleName() != null) { personName.setMiddleName(personName.getMiddleName().trim()); } if (personName.getFamilyName() != null) { personName.setFamilyName(personName.getFamilyName().trim()); } if (personName.getFamilyName2() != null) { personName.setFamilyName2(personName.getFamilyName2().trim()); } } }
@Handler(supports = ConceptReferenceTerm.class) public class ConceptReferenceTermSaveHandler implements SaveHandler<ConceptReferenceTerm> {
@Handler(supports = { Attribute.class }, order = 50) public class BaseAttributeValidator implements Validator {
@Handler(supports = ConceptProposal.class) public class ConceptProposalHandler implements SaveHandler<ConceptProposal> {
@Handler(supports = {ConceptAttributeType.class}, order = 50) public class ConceptAttributeTypeValidator extends BaseAttributeTypeValidator<ConceptAttributeType> {
@Handler(supports = {Condition.class}, order = 50) public class ConditionValidator implements Validator {
@Handler(supports = { EncounterRole.class }, order = 50) public class EncounterRoleValidator extends RequireNameValidator {
@Handler(supports = {Cohort.class}, order=50) public class CohortValidator implements Validator {
@Handler(supports = { ImplementationId.class }, order = 50) public class ImplementationIdValidator implements Validator {
@Handler(supports = { Privilege.class }, order = 50) public class PrivilegeValidator implements Validator {