import { BackboneElement, DomainResource, Identifier, Reference } from 'fhir/r4.js';
export interface ScheduleDefinitionOccurrenceDaysDuration extends BackboneElement {
    /**
     * The duration (length) of the slot in minutes or hours
     */
    length: number;
    /**
     * The unit of time expressed as minutes or hours
     */
    quantity: 'minute' | 'hour';
}
export interface ScheduleDefinitionOccurrenceDaysTime extends BackboneElement {
    /**
     * The hour at which the first slot starts
     */
    hour: number;
    /**
     * The minute at which the first slot starts
     */
    minute: number;
}
export interface ScheduleDefinitionOccurrenceDays extends BackboneElement {
    /**
     * The days of the week that a schedule will have slots available
     */
    day: 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat' | 'sun';
    /**
     * Defines the time of the first slot
     */
    start: ScheduleDefinitionOccurrenceDaysTime;
    /**
     * Defines the time of the end of the last slot
     */
    end: ScheduleDefinitionOccurrenceDaysTime;
    /**
     * Defines the duration of a slot
     */
    duration: ScheduleDefinitionOccurrenceDaysDuration;
    /**
     * Defines the gap (duration) between two slots
     */
    gap?: ScheduleDefinitionOccurrenceDaysDuration;
    /**
     * How an appointment booked into this slot will be delivered
     */
    delivery: 'In-person' | 'Telephone' | 'Video';
    /**
     * The style of appointment or patient that may be booked in the slot (not service type)
     */
    type: 'CHECKUP' | 'EMERGENCY' | 'FOLLOWUP' | 'ROUTINE' | 'WALKIN';
    /**
     * Optional total number of Slots this config would create
     */
    total?: number;
}
export interface ScheduleDefinitionOccurrence extends BackboneElement {
    /**
     * Defines a per day configuration for Slot generation within a Schedule
     * minimum of 1 and maximum of 7 values
     */
    days: ScheduleDefinitionOccurrenceDays[];
    /**
     * Recurrence pattern for Slot(s) between the Schedule start and end date
     * e.g. every week (weekly), every fortnight (fortnightly), every month (monthly)
     */
    pattern: 'weekly' | 'fortnightly' | 'monthly';
}
/**
 * ScheduleDefinition defines a source of data for the regional shared care record
 */
export interface ScheduleDefinition extends DomainResource {
    /**
     * The resourceType, always ScheduleDefinition
     */
    readonly resourceType: 'ScheduleDefinition';
    /**
     * An identifier for this ScheduleDefinition
     */
    identifier?: Identifier[];
    /**
     * Used to identify the schedule in human communication
     */
    name: string;
    /**
     * A description of the Schedule Definition for human identification and communication
     */
    narrative?: string;
    /**
     * The status of this schedule definition. Enables tracking the life-cycle of the content
     */
    status: 'draft' | 'active' | 'retired' | 'unknown';
    /**
     * Business identifiers that should be assigned to the schedule
     */
    scheduleIdentifier?: Identifier[];
    /**
     * The date at which this schedule comes into effect (starts)
     */
    start: string;
    /**
     * The date at which this schedule comes to an end
     */
    end: string;
    /**
     * HealthcareService to whom this schedule applies/is for
     */
    healthcareService: Reference;
    /**
     * The practitioner that patients booked into this appointment will see
     */
    practitioner?: Reference;
    /**
     * The clinician type/role that patients booked into this appointment will see
     */
    practitionerRole?: Reference;
    /**
     * Roles that are allowed to access data from the data provider
     * If blank, then all roles are allowed
     */
    occurrence?: ScheduleDefinitionOccurrence;
}
//# sourceMappingURL=scheduleDefinition.d.ts.map