public interface IEncounterService
{
    Task<Encounter> GetByIdAsync(Guid id);
    Task<PagedResult<WardEncounterSummary>> ListAsync(
        EncounterStatus? status, Department? department, int page, int pageSize);
    Task<EncounterStatusTransitionResult> TransitionStatusAsync(
        Guid encounterId, EncounterStatus targetStatus, string? dischargeDiagnosis = null);
    Task<object> GetTimelineAsync(Guid encounterId);
    Task<Encounter> OpenOrUpdateByIdentifierAsync(FhirEncounterUpsertRequest req);
}
