Skip to content

[BAH-4339] | Make Encounter Type Filtering Configurable in EncounterServiceSaveAdvice #15

@rahu1ramesh

Description

@rahu1ramesh

JIRA -> BAH-4339

Currently, the EncounterServiceSaveAdvice class has a hardcoded check that only publishes atomfeed events for encounters with type "INVESTIGATION":

if (ENCOUNTER_TYPE_INVESTIGATION.equals(encounterType)) {
      // publish event
  }

This implementation is restrictive and prevents deployments from configuring which encounter types should trigger event publication without modifying the source code.

Impact

  • Deployments requiring event publication for other encounter types (e.g., "CONSULTATION", "LAB_RESULT", "ADMISSION") are skipped
  • Inconsistent with other advice classes in the module that use global properties for configuration
  • Reduces flexibility and increases maintenance burden

Proposed Solution

Replace the hardcoded encounter type check with a configurable global property that supports multiple encounter types:

  • Add a new global property: atomfeed.publish.encounterTypes (comma-separated list) - Example value: "INVESTIGATION,CONSULTATION,LAB_RESULT"
  • If the property is empty or not set, maintain backward compatibility by defaulting to "INVESTIGATION"
  • Update the logic to check if the encounter type exists in the configured list
  • Follow the existing pattern used in PersonRelationshipAdvice.java:60-62 and PatientProgramAdvice.java:82-87

Acceptance Criteria

  • Global property atomfeed.publish.encounterTypes is supported
  • Multiple encounter types can be configured (comma-separated)
  • Backward compatibility: defaults to "INVESTIGATION" when property is not set
  • Whitespace handling in the comma-separated list
  • Unit tests cover multiple encounter types and edge cases
  • Documentation updated with the new configuration option

Technical Notes

  • File location: openmrs-atomfeed-api/src/main/java/org/openmrs/module/atomfeed/advice/EncounterServiceSaveAdvice.java:49
  • Reference implementation: PersonRelationshipAdvice.java for global property pattern
  • Consider using StringUtils.split() or similar for parsing comma-separated values

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions