RSS Git Download  Clone
Raw Blame History
# generated automatically by script/make_classes.pl

#---------------------------------------------------------------------------
package LIMS::AdditionalOption;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'additional_options',

    columns => [
        id           => { type => 'integer', not_null => 1 },
        option_name  => { type => 'varchar', length => 255 },
        option_label => { type => 'varchar', length => 255 },
        is_active    => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_keys => [
        [ 'option_label' ],
        [ 'option_name' ],
    ],
);

1;

#---------------------------------------------------------------------------
package LIMS::AuditRequestCategory;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'audit_request_categories',

    columns => [
        id          => { type => 'integer', not_null => 1 },
        description => { type => 'varchar', default => '', length => 255, not_null => 1 },
        active      => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'description' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::AuditRequestOption;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'audit_request_options',

    columns => [
        id          => { type => 'integer', not_null => 1 },
        description => { type => 'varchar', default => '', length => 255, not_null => 1 },
        category_id => { type => 'integer', default => '0', not_null => 1 },
        active      => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'description' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::ClinicalTrial;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'clinical_trials',

    columns => [
        id         => { type => 'integer', not_null => 1 },
        trial_name => { type => 'varchar', length => 50 },
        active     => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'trial_name' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::ConsentOption;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'consent_options',

    columns => [
        id            => { type => 'integer', not_null => 1 },
        consent_name  => { type => 'varchar', default => '', length => 255, not_null => 1 },
        consent_label => { type => 'varchar', default => '', length => 255, not_null => 1 },
        is_active     => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_keys => [
        [ 'consent_label' ],
        [ 'consent_name' ],
    ],
);

1;

#---------------------------------------------------------------------------
package LIMS::ContextWarningDiagnosi;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'context_warning_diagnosis',

    columns => [
        id                 => { type => 'integer', not_null => 1 },
        diagnosis_id       => { type => 'integer', default => '0', not_null => 1 },
        context_warning_id => { type => 'integer', default => '0', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'diagnosis_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::DeletedRequest;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'deleted_requests',

    columns => [
        id             => { type => 'serial', not_null => 1 },
        request_id     => { type => 'integer', default => '0', not_null => 1 },
        request_number => { type => 'integer', default => '0', not_null => 1 },
        year           => { type => 'scalar', default => '0000', length => 4, not_null => 1 },
        action         => { type => 'varchar', default => '', length => 255, not_null => 1 },
        user_id        => { type => 'integer', default => '0', not_null => 1 },
        time           => { type => 'datetime' },
    ],

    primary_key_columns => [ 'id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::Diagnos;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'diagnoses',

    columns => [
        id                     => { type => 'integer', not_null => 1 },
        name                   => { type => 'varchar', length => 255 },
        icdo3                  => { type => 'varchar', length => 6 },
        diagnostic_category_id => { type => 'integer' },
        active                 => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes' },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'name' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::DiagnosisChangeOption;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'diagnosis_change_options',

    columns => [
        id          => { type => 'integer', not_null => 1 },
        option_name => { type => 'varchar', default => '', length => 25, not_null => 1 },
        description => { type => 'varchar', default => '', length => 255, not_null => 1 },
        is_active   => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'option_name' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::DiagnosisContextWarning;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'diagnosis_context_warnings',

    columns => [
        id          => { type => 'integer', not_null => 1 },
        description => { type => 'varchar', default => '', length => 255, not_null => 1 },
        is_active   => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes' },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'description' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::DiagnosticCategory;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'diagnostic_categories',

    columns => [
        id            => { type => 'integer', not_null => 1 },
        description   => { type => 'varchar', length => 255 },
        category_type => { type => 'enum', check_in => [ 'main', 'sub' ] },
        active        => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes' },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'description' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::EmailAddress;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'email_addresses',

    columns => [
        address => { type => 'varchar', length => 255, not_null => 1 },
    ],

    primary_key_columns => [ 'address' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::EmailContact;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'email_contacts',

    columns => [
        id                 => { type => 'integer', not_null => 1 },
        display_name       => { type => 'varchar', default => '', length => 255, not_null => 1 },
        scope              => { type => 'enum', check_in => [ 'hospital', 'organisation' ] },
        referral_source_id => { type => 'integer', default => '0', not_null => 1 },
        type               => { type => 'enum', check_in => [ 'mdt', 'report', 'other' ] },
        contact_address    => { type => 'varchar', default => '', length => 255, not_null => 1 },
        is_active          => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'type', 'contact_address' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::ErrorCode;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'error_codes',

    columns => [
        id          => { type => 'integer', not_null => 1 },
        code        => { type => 'varchar', length => 2 },
        description => { type => 'varchar', length => 255 },
        is_unique   => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
        active      => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'code' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::HospitalDepartment;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'hospital_departments',

    columns => [
        id           => { type => 'integer', not_null => 1 },
        display_name => { type => 'varchar', default => '', length => 50, not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'display_name' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::IcdoCategory;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'icdo_category',

    columns => [
        diagnostic_category_id => { type => 'integer', not_null => 1 },
        icdo3                  => { type => 'varchar', length => 6, not_null => 1 },
    ],

    primary_key_columns => [ 'diagnostic_category_id', 'icdo3' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::LabSection;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'lab_sections',

    columns => [
        id                 => { type => 'integer', not_null => 1 },
        section_name       => { type => 'varchar', default => '', length => 255, not_null => 1 },
        has_result_summary => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'no', not_null => 1 },
        has_section_notes  => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'no', not_null => 1 },
        has_test_sign_out  => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'no', not_null => 1 },
        has_foreign_id     => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'no', not_null => 1 },
        has_results_import => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'no', not_null => 1 },
        is_active          => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'section_name' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::LabSectionStatusOption;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'lab_section_status_option',

    columns => [
        lab_section_id   => { type => 'integer', not_null => 1 },
        status_option_id => { type => 'integer', not_null => 1 },
    ],

    primary_key_columns => [ 'lab_section_id', 'status_option_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::LabTest;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'lab_tests',

    columns => [
        id             => { type => 'integer', not_null => 1 },
        test_name      => { type => 'varchar', default => '', length => 25, not_null => 1 },
        field_label    => { type => 'varchar', default => '', length => 25, not_null => 1 },
        lab_section_id => { type => 'integer', default => '0', not_null => 1 },
        test_type      => { type => 'enum', check_in => [ 'test', 'panel' ] },
        has_results    => { type => 'enum', check_in => [ 'yes', 'no' ] },
        is_active      => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_keys => [
        [ 'lab_section_id', 'test_type', 'field_label' ],
        [ 'lab_section_id', 'test_type', 'test_name' ],
    ],
);

1;

#---------------------------------------------------------------------------
package LIMS::LabTestDataType;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'lab_test_data_type',

    columns => [
        lab_test_id  => { type => 'integer', not_null => 1 },
        data_type_id => { type => 'integer', default => '0', not_null => 1 },
        is_active    => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'lab_test_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::LabTestMap;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => '_lab_test_map',

    columns => [
        id       => { type => 'integer', not_null => 1 },
        TestName => { type => 'varchar', length => 255 },
    ],

    primary_key_columns => [ 'id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::LabTestResultDataType;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'lab_test_result_data_types',

    columns => [
        id          => { type => 'integer', not_null => 1 },
        description => { type => 'varchar', default => '', length => 25, not_null => 1 },
        is_active   => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'description' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::LabTestResultOption;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'lab_test_result_options',

    columns => [
        id           => { type => 'integer', not_null => 1 },
        data_type_id => { type => 'integer', default => '0', not_null => 1 },
        value        => { type => 'varchar', default => '', length => 30, not_null => 1 },
        is_active    => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'data_type_id', 'value' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::LabTestStatusOption;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'lab_test_status_options',

    columns => [
        id          => { type => 'integer', not_null => 1 },
        description => { type => 'varchar', default => '', length => 255, not_null => 1 },
        is_editable => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
        is_active   => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'description' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::LocalNetworkLocation;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'local_network_locations',

    columns => [
        parent_id => { type => 'integer', not_null => 1 },
    ],

    primary_key_columns => [ 'parent_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::Login;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'logins',

    columns => [
        id         => { type => 'serial', not_null => 1 },
        user_id    => { type => 'integer', default => '0', not_null => 1 },
        address    => { type => 'varchar', length => 15 },
        browser    => { type => 'varchar', length => 255 },
        session_id => { type => 'character', length => 32 },
        time       => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::ParentOrganisation;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'parent_organisations',

    columns => [
        id               => { type => 'integer', not_null => 1 },
        parent_code      => { type => 'varchar', default => '', length => 6, not_null => 1 },
        description      => { type => 'varchar', default => '', length => 255, not_null => 1 },
        referral_type_id => { type => 'integer', default => '0', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_keys => [
        [ 'description' ],
        [ 'parent_code' ],
    ],
);

1;

#---------------------------------------------------------------------------
package LIMS::Patient;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'patients',

    columns => [
        id          => { type => 'serial', not_null => 1 },
        last_name   => { type => 'varchar', length => 50 },
        first_name  => { type => 'varchar', length => 50 },
        middle_name => { type => 'varchar', length => 50 },
        dob         => { type => 'date' },
        gender      => { type => 'enum', check_in => [ 'M', 'F', 'U' ], default => 'U' },
        nhs_number  => { type => 'varchar', length => 10 },
        created_at  => { type => 'timestamp', not_null => 1 },
        updated_at  => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'nhs_number' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::PatientCase;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'patient_case',

    columns => [
        id                 => { type => 'serial', not_null => 1 },
        patient_id         => { type => 'integer', default => '0', not_null => 1 },
        referral_source_id => { type => 'integer', default => '0', not_null => 1 },
        unit_number        => { type => 'varchar', default => 'UNKNOWN', length => 255, not_null => 1 },
        time               => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'patient_id', 'unit_number', 'referral_source_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::PatientDemographic;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'patient_demographics',

    columns => [
        patient_id     => { type => 'integer', not_null => 1 },
        address        => { type => 'varchar', length => 255 },
        post_code      => { type => 'varchar', length => 8 },
        contact_number => { type => 'varchar', length => 15 },
        gp_id          => { type => 'integer', default => '0', not_null => 1 },
        practice_id    => { type => 'integer', default => '0', not_null => 1 },
        status         => { type => 'enum', check_in => [ 'alive', 'dead' ], default => 'alive', not_null => 1 },
        dod            => { type => 'date' },
        time           => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'patient_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::PatientDemographicHistory;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'patient_demographic_history',

    columns => [
        id         => { type => 'serial', not_null => 1 },
        patient_id => { type => 'integer', default => '0', not_null => 1 },
        user_id    => { type => 'integer', default => '0', not_null => 1 },
        action     => { type => 'varchar', default => '', length => 255, not_null => 1 },
        time       => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::PatientEdit;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'patient_edits',

    columns => [
        id            => { type => 'serial', not_null => 1 },
        patient_id    => { type => 'integer', default => '0', not_null => 1 },
        last_name     => { type => 'varchar', length => 50 },
        first_name    => { type => 'varchar', length => 50 },
        middle_name   => { type => 'varchar', length => 50 },
        dob           => { type => 'date' },
        gender        => { type => 'enum', check_in => [ 'M', 'F', 'U' ], default => 'U' },
        nhs_number    => { type => 'varchar', length => 10 },
        user_id       => { type => 'integer', default => '', not_null => 1 },
        error_code_id => { type => 'integer', default => '', not_null => 1 },
        time          => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::PatientTrial;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'patient_trial',

    columns => [
        patient_id   => { type => 'integer', not_null => 1 },
        trial_id     => { type => 'integer', not_null => 1 },
        trial_number => { type => 'varchar', length => 255 },
    ],

    primary_key_columns => [ 'patient_id', 'trial_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::PhoneLogOption;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'phone_log_options',

    columns => [
        id          => { type => 'integer', not_null => 1 },
        description => { type => 'varchar', default => '', length => 255, not_null => 1 },
        is_active   => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'description' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::PreRegistration;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'pre_registration',

    columns => [
        id          => { type => 'serial', not_null => 1 },
        labno       => { type => 'varchar', default => '', length => 8, not_null => 1 },
        surname     => { type => 'varchar', length => 25 },
        is_screened => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'no', not_null => 1 },
        time        => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'labno' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::PreRegistrationLabTest;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'pre_registration_lab_test',

    columns => [
        id              => { type => 'serial', not_null => 1 },
        reg_specimen_id => { type => 'integer', default => '0', not_null => 1 },
        lab_test_id     => { type => 'integer', default => '0', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'reg_specimen_id', 'lab_test_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::PreRegistrationSpecimen;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'pre_registration_specimen',

    columns => [
        id            => { type => 'serial', not_null => 1 },
        pre_reg_id    => { type => 'integer', default => '0', not_null => 1 },
        specimen_code => { type => 'character', default => '0', length => 2, not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'pre_reg_id', 'specimen_code' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::QuestionnaireSymptom;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'questionnaire_symptoms',

    columns => [
        request_id              => { type => 'integer', not_null => 1 },
        weight                  => { type => 'float', precision => 32 },
        weight_loss             => { type => 'enum', check_in => [ 'Y', 'N' ] },
        night_sweats            => { type => 'enum', check_in => [ 'none', 'occasional', 'frequent', 'drenching' ] },
        persistent_night_sweats => { type => 'enum', check_in => [ 'Y', 'N' ] },
        serious_infection       => { type => 'enum', check_in => [ 'Y', 'N' ] },
    ],

    primary_key_columns => [ 'request_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::ReferralSource;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'referral_sources',

    columns => [
        id                     => { type => 'integer', not_null => 1 },
        display_name           => { type => 'varchar', default => '', length => 255, not_null => 1 },
        organisation_code      => { type => 'varchar', default => '', length => 6, not_null => 1 },
        parent_organisation_id => { type => 'integer', default => '0', not_null => 1 },
        referral_type_id       => { type => 'integer', default => '0', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_keys => [
        [ 'display_name' ],
        [ 'organisation_code' ],
    ],
);

1;

#---------------------------------------------------------------------------
package LIMS::ReferralType;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'referral_types',

    columns => [
        id              => { type => 'integer', not_null => 1 },
        description     => { type => 'varchar', default => '', length => 255, not_null => 1 },
        prefix          => { type => 'varchar', length => 2 },
        default_unknown => { type => 'varchar', default => '', length => 8, not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'description' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::Referrer;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'referrers',

    columns => [
        id               => { type => 'serial', not_null => 1 },
        name             => { type => 'varchar', default => '', length => 255, not_null => 1 },
        national_code    => { type => 'varchar', default => '', length => 8, not_null => 1 },
        referral_type_id => { type => 'integer', default => '0', not_null => 1 },
        active           => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'national_code' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::ReferrerDepartment;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'referrer_department',

    columns => [
        id                       => { type => 'serial', not_null => 1 },
        referrer_id              => { type => 'integer', default => '0', not_null => 1 },
        parent_organisation_id   => { type => 'integer', default => '0', not_null => 1 },
        hospital_department_code => { type => 'integer', default => '0', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'referrer_id', 'parent_organisation_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::ReportErrorCode;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'report_error_codes',

    columns => [
        id          => { type => 'integer', not_null => 1 },
        code        => { type => 'varchar', length => 2 },
        description => { type => 'varchar', length => 255 },
        active      => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'code' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::Request;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'requests',

    columns => [
        id                     => { type => 'serial', not_null => 1 },
        request_number         => { type => 'integer', default => '0', not_null => 1 },
        year                   => { type => 'scalar', default => '0000', length => 4, not_null => 1 },
        patient_case_id        => { type => 'integer', default => '0', not_null => 1 },
        referrer_department_id => { type => 'integer', default => '0', not_null => 1 },
        status_option_id       => { type => 'integer', default => 1, not_null => 1 },
        created_at             => { type => 'timestamp', not_null => 1 },
        updated_at             => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'request_number', 'year' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestAudit;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_audit',

    columns => [
        request_id              => { type => 'integer', not_null => 1 },
        audit_request_option_id => { type => 'integer', not_null => 1 },
    ],

    primary_key_columns => [ 'request_id', 'audit_request_option_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestAuthorisationDiagnosi;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_authorisation_diagnosis',

    columns => [
        request_id          => { type => 'integer', not_null => 1 },
        report_diagnosis_id => { type => 'integer', default => '0', not_null => 1 },
        auth_diagnosis_id   => { type => 'integer', default => '0', not_null => 1 },
        user_id             => { type => 'integer', default => '0', not_null => 1 },
        time                => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'request_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestConsent;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_consent',

    columns => [
        request_id => { type => 'integer', not_null => 1 },
        consent_id => { type => 'integer', not_null => 1 },
        status     => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'no', not_null => 1 },
    ],

    primary_key_columns => [ 'request_id', 'consent_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestDiagnosisHistory;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_diagnosis_history',

    columns => [
        id           => { type => 'serial', not_null => 1 },
        request_id   => { type => 'integer', default => '', not_null => 1 },
        diagnosis_id => { type => 'integer', default => '', not_null => 1 },
        reason       => { type => 'enum', check_in => [ 'error', 'update' ] },
        user_id      => { type => 'integer', default => '', not_null => 1 },
        time         => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestDispatchLog;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_dispatch_log',

    columns => [
        id         => { type => 'serial', not_null => 1 },
        request_id => { type => 'integer', default => '0', not_null => 1 },
        recipient  => { type => 'varchar', default => '', length => 255, not_null => 1 },
        time       => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestErrorCode;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_error_code',

    columns => [
        id            => { type => 'serial', not_null => 1 },
        request_id    => { type => 'integer', default => '0', not_null => 1 },
        error_code_id => { type => 'integer', default => '0', not_null => 1 },
        user_id       => { type => 'integer', default => '0', not_null => 1 },
        time          => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestExternalRef;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_external_ref',

    columns => [
        request_id         => { type => 'integer', not_null => 1 },
        external_reference => { type => 'varchar', default => '', length => 255, not_null => 1 },
        status             => { type => 'varchar', length => 255 },
    ],

    primary_key_columns => [ 'request_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestGeneralNote;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_general_notes',

    columns => [
        request_id => { type => 'integer', not_null => 1 },
        detail     => { type => 'text', length => 65535 },
    ],

    primary_key_columns => [ 'request_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestGrossDescription;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_gross_description',

    columns => [
        request_id => { type => 'integer', not_null => 1 },
        detail     => { type => 'text', length => 65535 },
    ],

    primary_key_columns => [ 'request_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestHistory;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_history',

    columns => [
        id         => { type => 'serial', not_null => 1 },
        request_id => { type => 'integer', default => '0', not_null => 1 },
        action     => { type => 'varchar', default => '', length => 255, not_null => 1 },
        user_id    => { type => 'integer', default => '0', not_null => 1 },
        time       => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestInitialScreen;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_initial_screen',

    columns => [
        request_id => { type => 'integer', not_null => 1 },
        screen_id  => { type => 'integer', default => '0', not_null => 1 },
    ],

    primary_key_columns => [ 'request_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestLabSectionForeignId;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_lab_section_foreign_id',

    columns => [
        request_id     => { type => 'integer', not_null => 1 },
        lab_section_id => { type => 'integer', not_null => 1 },
        foreign_id     => { type => 'varchar', default => '', length => 25, not_null => 1 },
        time           => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'request_id', 'lab_section_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestLabSectionNote;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_lab_section_notes',

    columns => [
        request_id     => { type => 'integer', not_null => 1 },
        lab_section_id => { type => 'integer', not_null => 1 },
        details        => { type => 'text', length => 65535 },
        time           => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'request_id', 'lab_section_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestLabTestHistory;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_lab_test_history',

    columns => [
        id         => { type => 'serial', not_null => 1 },
        request_id => { type => 'integer', default => '0', not_null => 1 },
        action     => { type => 'varchar', default => '', length => 255, not_null => 1 },
        user_id    => { type => 'integer', default => '0', not_null => 1 },
        time       => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestLabTestResult;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_lab_test_results',

    columns => [
        id          => { type => 'serial', not_null => 1 },
        request_id  => { type => 'integer', default => '0', not_null => 1 },
        lab_test_id => { type => 'integer', default => '0', not_null => 1 },
        result      => { type => 'varchar', default => '', length => 255, not_null => 1 },
        time        => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'request_id', 'lab_test_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestLabTestStatu;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_lab_test_status',

    columns => [
        id               => { type => 'serial', not_null => 1 },
        request_id       => { type => 'integer', default => '0', not_null => 1 },
        lab_test_id      => { type => 'integer', default => '0', not_null => 1 },
        status_option_id => { type => 'integer', default => '0', not_null => 1 },
        user_id          => { type => 'integer', default => '0', not_null => 1 },
        time             => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'request_id', 'lab_test_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestOption;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_option',

    columns => [
        request_id => { type => 'integer', not_null => 1 },
        option_id  => { type => 'integer', not_null => 1 },
    ],

    primary_key_columns => [ 'request_id', 'option_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestPhoneLog;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_phone_log',

    columns => [
        id         => { type => 'serial', not_null => 1 },
        request_id => { type => 'integer', default => '0', not_null => 1 },
        user_id    => { type => 'integer', default => '0', not_null => 1 },
        status     => { type => 'enum', check_in => [ 'inbound', 'outbound' ] },
        contact    => { type => 'varchar', default => '', length => 255, not_null => 1 },
        details    => { type => 'varchar', default => '', length => 255, not_null => 1 },
        time       => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestPrintLog;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_print_log',

    columns => [
        id         => { type => 'serial', not_null => 1 },
        request_id => { type => 'integer', default => '0', not_null => 1 },
        user_id    => { type => 'integer', default => '0', not_null => 1 },
        time       => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestReport;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_report',

    columns => [
        request_id       => { type => 'integer', not_null => 1 },
        comment          => { type => 'text', length => 65535 },
        clinical_details => { type => 'text', length => 65535 },
        status           => { type => 'enum', check_in => [ 'new', 'relapse', 'default' ], default => 'default', not_null => 1 },
        specimen_quality => { type => 'enum', check_in => [ 'good', 'adequate', 'poor' ], default => 'adequate', not_null => 1 },
        diagnosis_id     => { type => 'integer', default => '', not_null => 1 },
        created_at       => { type => 'timestamp', not_null => 1 },
        updated_at       => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'request_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestReportHistory;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_report_history',

    columns => [
        id         => { type => 'serial', not_null => 1 },
        request_id => { type => 'integer', default => '0', not_null => 1 },
        field      => { type => 'varchar', default => '', length => 255, not_null => 1 },
        content    => { type => 'text', length => 65535 },
        user_id    => { type => 'integer', default => '0', not_null => 1 },
        time       => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestResultSummary;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_result_summaries',

    columns => [
        request_id      => { type => 'integer', not_null => 1 },
        lab_section_id  => { type => 'integer', not_null => 1 },
        results_summary => { type => 'text', length => 65535 },
        time            => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'request_id', 'lab_section_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestSpecimen;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_specimen',

    columns => [
        request_id  => { type => 'integer', not_null => 1 },
        specimen_id => { type => 'integer', not_null => 1 },
    ],

    primary_key_columns => [ 'request_id', 'specimen_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestTrial;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_trial',

    columns => [
        request_id => { type => 'integer', not_null => 1 },
        trial_id   => { type => 'integer', default => '0', not_null => 1 },
    ],

    primary_key_columns => [ 'request_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::RequestViewLog;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'request_view_log',

    columns => [
        id         => { type => 'serial', not_null => 1 },
        request_id => { type => 'integer', default => '0', not_null => 1 },
        user_id    => { type => 'integer', default => '0', not_null => 1 },
        ip_address => { type => 'varchar', default => '', length => 255, not_null => 1 },
        time       => { type => 'timestamp', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::ResultSummaryOption;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'result_summary_options',

    columns => [
        id             => { type => 'integer', not_null => 1 },
        description    => { type => 'varchar', default => '', length => 255, not_null => 1 },
        lab_section_id => { type => 'integer', default => '0', not_null => 1 },
        is_active      => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'description', 'lab_section_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::Screen;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'screens',

    columns => [
        id          => { type => 'integer', not_null => 1 },
        description => { type => 'varchar', length => 50 },
        sample_type => { type => 'enum', check_in => [ 'fresh', 'fixed' ] },
        active      => { type => 'enum', check_in => [ 'yes', 'no' ] },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'description' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::ScreenLabTest;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'screen_lab_test',

    columns => [
        screen_id   => { type => 'integer', not_null => 1 },
        lab_test_id => { type => 'integer', not_null => 1 },
    ],

    primary_key_columns => [ 'screen_id', 'lab_test_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::ScreenLabTestDetail;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'screen_lab_test_detail',

    columns => [
        screen_id      => { type => 'integer', not_null => 1 },
        lab_section_id => { type => 'integer', not_null => 1 },
        test_details   => { type => 'varchar', default => '', length => 255, not_null => 1 },
    ],

    primary_key_columns => [ 'screen_id', 'lab_section_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::Specimen;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'specimens',

    columns => [
        id          => { type => 'integer', not_null => 1 },
        sample_code => { type => 'varchar', length => 4 },
        description => { type => 'varchar', length => 40 },
        active      => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'sample_code' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::SpecimenLabTest;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'specimen_lab_test',

    columns => [
        specimen_id => { type => 'integer', not_null => 1 },
        lab_test_id => { type => 'integer', not_null => 1 },
    ],

    primary_key_columns => [ 'specimen_id', 'lab_test_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::StatusOption;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'status_options',

    columns => [
        id          => { type => 'integer', not_null => 1 },
        description => { type => 'varchar', default => '', length => 255, not_null => 1 },
        is_editable => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
        is_active   => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'description' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::User;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'users',

    columns => [
        id               => { type => 'integer', not_null => 1 },
        username         => { type => 'varchar', default => 'username', length => 50, not_null => 1 },
        first_name       => { type => 'varchar', default => 'first_name', length => 50, not_null => 1 },
        last_name        => { type => 'varchar', default => 'last_name', length => 50, not_null => 1 },
        password         => { type => 'varchar', default => 'password', length => 32, not_null => 1 },
        email            => { type => 'varchar', default => 'user@here.com', length => 50, not_null => 1 },
        user_location_id => { type => 'integer', default => '0', not_null => 1 },
        designation      => { type => 'varchar', default => 'designation', length => 50, not_null => 1 },
        group_id         => { type => 'integer', default => '0', not_null => 1 },
        last_login       => { type => 'timestamp', not_null => 1 },
        active           => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_keys => [
        [ 'email' ],
        [ 'first_name', 'last_name' ],
        [ 'username' ],
    ],
);

1;

#---------------------------------------------------------------------------
package LIMS::UserFunction;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'user_functions',

    columns => [
        id              => { type => 'integer', not_null => 1 },
        function_name   => { type => 'varchar', length => 20 },
        function_detail => { type => 'varchar', length => 255 },
        active          => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_keys => [
        [ 'function_detail' ],
        [ 'function_name' ],
    ],
);

1;

#---------------------------------------------------------------------------
package LIMS::UserGroup;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'user_groups',

    columns => [
        id           => { type => 'integer', not_null => 1 },
        group_name   => { type => 'varchar', length => 10 },
        group_label  => { type => 'varchar', length => 30 },
        group_detail => { type => 'varchar', length => 255 },
        active       => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes', not_null => 1 },
    ],

    primary_key_columns => [ 'id' ],

    unique_keys => [
        [ 'group_label' ],
        [ 'group_name' ],
    ],
);

1;

#---------------------------------------------------------------------------
package LIMS::UserGroupFunction;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'user_group_function',

    columns => [
        group_id    => { type => 'integer', not_null => 1 },
        function_id => { type => 'integer', not_null => 1 },
    ],

    primary_key_columns => [ 'group_id', 'function_id' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::UserLocation;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'user_locations',

    columns => [
        id            => { type => 'integer', not_null => 1 },
        location_name => { type => 'varchar', default => '', length => 50, not_null => 1 },
        active        => { type => 'enum', check_in => [ 'yes', 'no' ], default => 'yes' },
    ],

    primary_key_columns => [ 'id' ],

    unique_key => [ 'location_name' ],
);

1;

#---------------------------------------------------------------------------
package LIMS::UserPermission;

use strict;

use base qw(LIMS::DB::Object::AutoBase1);

__PACKAGE__->meta->setup(
    table   => 'user_permission',

    columns => [
        user_id     => { type => 'integer', not_null => 1 },
        function_id => { type => 'integer', not_null => 1 },
    ],

    primary_key_columns => [ 'user_id', 'function_id' ],
);

1;