export * from "../fb_collections";
import { IProfile } from "../../evo-people";
import type { FirestoreDocumentReference, IAddress, IContact, IExternalLink, ITag } from "../../shared";
import { IMedication, PatientAttachmentBaseCategory } from "../dic";
export declare const EvoMedProfessionalPermissions: {
    readonly List: "evo_med_people_professional_read";
    readonly Get: "evo_med_people_professional_read";
    readonly Create: "evo_med_people_professional_write";
    readonly Update: "evo_med_people_professional_write";
    readonly Delete: "evo_med_people_professional_write";
};
export type EvoMedProfessionalPermissions = (typeof EvoMedProfessionalPermissions)[keyof typeof EvoMedProfessionalPermissions];
export declare const EvoMedPatientPermissions: {
    readonly List: "evo_med_people_patient_read";
    readonly Get: "evo_med_people_patient_read";
    readonly Create: "evo_med_people_patient_write";
    readonly Update: "evo_med_people_patient_write";
    readonly Delete: "evo_med_people_patient_write";
};
export type EvoMedPatientPermissions = (typeof EvoMedPatientPermissions)[keyof typeof EvoMedPatientPermissions];
export type MedPeopleAction = "CREATE_PROFESSIONAL" | "DELETE_PROFESSIONAL" | "UPDATE_PROFESSIONAL" | "UPDATE_PROFESSIONAL_PHOTO" | "UPDATE_PROFESSIONAL_PROFILE" | "UPDATE_PROFESSIONAL_PASSWORD" | "UPDATE_PROFESSIONAL_REPORT_TO" | "UPDATE_PROFESSIONAL_DEPARTMENT" | "UPDATE_PROFESSIONAL_OFFICE" | "UPDATE_PROFESSIONAL_COMPANY" | "UPDATE_PROFESSIONAL_JOB_TITLE" | "UPDATE_PROFESSIONAL_WORK_EMAIL" | "UPDATE_PROFESSIONAL_STATUS";
export declare enum IMedPeopleAction {
    Create_professional = "CREATE_PROFESSIONAL",
    Delete_professional = "DELETE_PROFESSIONAL",
    Update_professional = "UPDATE_PROFESSIONAL",
    Update_professional_photo = "UPDATE_PROFESSIONAL_PHOTO",
    Update_professional_profile = "UPDATE_PROFESSIONAL_PROFILE",
    Update_professional_password = "UPDATE_PROFESSIONAL_PASSWORD",
    Update_professional_report_to = "UPDATE_PROFESSIONAL_REPORT_TO",
    Update_professional_department = "UPDATE_PROFESSIONAL_DEPARTMENT",
    Update_professional_office = "UPDATE_PROFESSIONAL_OFFICE",
    Update_professional_company = "UPDATE_PROFESSIONAL_COMPANY",
    Update_professional_job_title = "UPDATE_PROFESSIONAL_JOB_TITLE",
    Update_professional_work_email = "UPDATE_PROFESSIONAL_WORK_EMAIL",
    Update_professional_status = "UPDATE_PROFESSIONAL_STATUS"
}
export type ProfessionalStatus = "active" | "inactive" | "draft";
export declare enum IProfessionalStatus {
    Active = "active",
    Inactive = "inactive",
    Draft = "draft"
}
export interface IProfessionalCouncil {
    doc: string;
    name: string;
    acronym: string;
    uf?: string | null;
    ref?: FirestoreDocumentReference;
}
export interface IProfessionalSpecialty {
    code: string;
    name: string;
    ref?: FirestoreDocumentReference;
}
export interface IProfessionalOffice {
    code: string;
    name: string;
    ref?: FirestoreDocumentReference;
}
export interface IProfessional extends IProfile {
    external_id?: string | null;
    status?: ProfessionalStatus;
    professionalId?: string | null;
    title?: string | null;
    type?: string | null;
    job_title?: string | null;
    councils?: IProfessionalCouncil[] | null;
    specialties?: IProfessionalSpecialty[] | null;
    offices?: IProfessionalOffice[] | null;
    date_joining?: Date | null;
    company_code?: string | null;
    company_name?: string | null;
    companyRef?: FirestoreDocumentReference;
    department_code?: string | null;
    department_name?: string | null;
    departmentRef?: FirestoreDocumentReference;
    address?: IAddress | null;
    contact?: IContact | null;
    tags?: ITag[] | null;
    userRef?: FirestoreDocumentReference;
    [key: string]: unknown;
}
export type PatientStatus = "active" | "inactive" | "draft" | "anonymized";
export declare enum IPatientStatus {
    Active = "active",
    Inactive = "inactive",
    Draft = "draft",
    Anonymized = "anonymized"
}
export type BloodType = "A+" | "A-" | "B+" | "B-" | "AB+" | "AB-" | "O+" | "O-" | "Unknown";
export declare enum IBloodType {
    APositive = "A+",
    ANegative = "A-",
    BPositive = "B+",
    BNegative = "B-",
    ABPositive = "AB+",
    ABNegative = "AB-",
    OPositive = "O+",
    ONegative = "O-",
    Unknown = "Unknown"
}
export type Severity = "Mild" | "Moderate" | "Severe" | "Unknown";
export declare enum ISeverity {
    Mild = "Mild",
    Moderate = "Moderate",
    Severe = "Severe",
    Unknown = "Unknown"
}
export interface IPatientChronicCondition {
    code: string;
    name: string;
    ref?: FirestoreDocumentReference;
    diagnosis_date?: Date | null;
    severity?: Severity | null;
    controlled?: boolean | null;
    medications?: IMedication[] | null;
    notes?: string | null;
}
export interface IPatientAllergy {
    code: string;
    name: string;
    kind?: "Food" | "Drug" | "Insect" | "Other" | null;
    ref?: FirestoreDocumentReference;
    severity?: Severity | null;
}
export interface IPatientAttachment {
    id: string;
    filename: string;
    originalFilename: string;
    contentType: string;
    size: number;
    storagePath: string;
    category: string;
    baseCategory: PatientAttachmentBaseCategory;
    categoryColor?: string;
    externalLinks?: IExternalLink[];
    externalLinkKeys?: string[];
    uploadedBy?: {
        userId: string;
        displayName: string;
    };
    uploadedAt: Date;
    updatedAt?: Date;
}
export interface IAppointmentCounters {
    statusBase?: Record<string, number>;
    appointmentBaseType?: Record<string, number>;
    total?: number;
    deleted?: number;
}
export interface IPatient extends IProfile {
    external_id?: string | null;
    social_id?: string | null;
    status?: PatientStatus;
    source_code?: string | null;
    source_name?: string | null;
    sourceRef?: FirestoreDocumentReference;
    address?: IAddress | null;
    contact?: IContact | null;
    lead_id?: string | null;
    chat_contact_id?: string | number | null;
    height_cm?: number | null;
    weight_kg?: number | null;
    blood_type?: BloodType | null;
    allergies?: IPatientAllergy[] | null;
    chronic_conditions?: IPatientChronicCondition[] | null;
    notes?: string | null;
    appointmentCounters?: IAppointmentCounters | null;
    attachments?: IPatientAttachment[] | null;
    attachmentExternalLinkKeys?: string[] | null;
    tags?: ITag[] | null;
    userRef?: FirestoreDocumentReference;
    [key: string]: unknown;
}
