use DateTime;
use Digest::SHA1 'sha1_base64';
# CHANGES HERE NEED TO BE MIRRORED IN constraints.t
my $NOW = DateTime->now();
$TEST_DATA = {
additional_options => {
fields => [ qw(option_name option_label is_active) ],
values => [
[ qw( urgent Urgent yes ) ],
[ qw( doi DoI yes ) ],
]
},
audit_request_categories => {
fields => [ 'description' ],
values => [
[ 'cytopenia' ],
],
},
audit_request_options => {
fields => [ qw(description category_id) ],
values => [
[ 'Anaemia', 1 ],
],
},
clinical_trials => {
fields => [ qw(trial_name active) ],
values => [
[ 'NCRI: Myeloma X', 'yes' ],
[ 'HMDS outreach', 'yes' ],
],
},
consent_options => {
fields => [ qw(consent_name consent_label is_active) ],
values => [
[ qw( treatment Treatment yes ) ],
[ qw( research Research yes ) ],
]
},
diagnoses => {
fields => [ qw(name icdo3 diagnostic_category_id active) ],
values => [
[ qw( RAEB 9983/3 1 yes ) ],
[ qw( CLL 9823/3 2 yes ) ],
],
},
diagnosis_change_options => {
fields => [ qw( option_name description is_active ) ],
values => [
[ qw(error error yes) ],
[ qw(update update yes) ]
],
},
diagnostic_categories => {
fields => [ qw(description category_type active) ],
values => [
[ qw(Myelodysplastic main yes) ],
[ qw(Lymphoproliferative main yes) ],
[ qw(Non-diagnostic main yes) ],
],
},
email_addresses => {
fields => [ 'address' ],
values => [
[ 'user@anywhere.net' ],
],
},
error_codes => {
fields => [ qw(code description is_unique active) ],
values => [
[ qw(a first_error yes yes) ],
[ qw(b second_error no yes) ],
[ qw(c third_error yes yes) ],
],
},
error_code_assignment => {
fields => [ qw(type error_code_id) ],
values => [
[ qw(new_request 1) ],
[ qw(patient 1) ],
[ qw(errors 2) ],
[ qw(errors 3) ],
],
},
hospital_departments => {
fields => [ qw(id display_name) ],
values => [
[ 100, 'General Surgery' ],
[ 600, 'General Medical Practice' ],
[ 823, 'Haematology' ],
[ 999, 'Unknown/other' ],
],
},
lab_test_sample_type => {
fields => [ qw(lab_test_id sample_type_id) ],
values => [
[1, 1],
[2, 1],
[3, 1],
[4, 1],
[5, 1],
[5, 2],
[6, 2],
[7, 2],
[8, 2],
[9, 2],
],
},
lab_section_sample_type => {
fields => [ qw(lab_section_id sample_type_id) ],
values => [
[ 1, 1 ], # Flow / liquid
[ 2, 2 ], # Histology / biopsy
[ 3, 1 ], # Molecular / liquid
[ 3, 2 ], # Molecular / biopsy
],
},
lab_section_status_option => {
fields => [ qw(lab_section_id status_option_id) ],
values => [
[ 1, 4 ],
],
},
lab_sections => {
fields => [ 'section_name', 'has_result_summary', 'has_section_notes',
'has_test_sign_out', 'has_foreign_id', 'has_results_import', 'is_active' ],
values => [
[ qw(Flow yes yes no yes no yes) ],
[ qw(Histology yes yes yes no no yes) ],
[ qw(Molecular yes no yes no yes yes) ],
],
},
lab_test_data_type => {
fields => [ qw(lab_test_id data_type_id is_active ) ],
values => [
[ 6, 2, 'yes' ],
[ 7, 2, 'yes' ],
[ 8, 1, 'yes' ],
]
},
lab_test_result_data_types => {
fields => [ 'description' ],
values => [
[ 'numeric' ], [ 'subjective' ], [ 'text' ],
],
},
lab_test_result_options => {
fields => [ qw(data_type_id value is_active) ],
values => [
[ 1, 0, 'yes' ],
[ 1, 10, 'yes' ],
[ 1, 50, 'yes' ],
[ 2, '+', 'yes' ],
[ 2, '-', 'yes' ],
[ 2, '+/-', 'yes' ],
],
},
lab_test_status_options => {
fields => [ 'description', 'is_active' ],
values => [
[ 'new', 'yes' ],
[ 'complete', 'yes' ],
[ 'delete', 'yes' ],
[ 'setup', 'yes' ],
],
},
lab_tests => {
fields => [
qw(field_label test_name lab_section_id test_type has_results is_active)
],
values => [
[ qw(PNH pnh 1 panel no yes) ],
[ qw(AML aml 1 panel no yes) ],
[ qw(CML cml 1 panel no yes) ],
[ qw(HIV hiv 1 panel no yes) ],
[ qw(APML apml 3 panel no yes) ],
[ qw(CD20 cd20 2 test yes yes) ],
[ qw(p53 p53 2 test yes yes) ],
[ qw(Mib1 mib1 2 test yes yes) ],
[ qw(AUTO auto 2 test yes yes) ], # auto-requested by sample type
],
},
local_network_locations => {
fields => [ 'parent_id' ],
values => [ [1] ], # any org code will do
},
parent_organisations => {
fields => [ qw(parent_code description referral_type_id) ],
values => [
[ 'ABC', 'NEWTOWN NHS TRUST', 3 ],
[ 'B12345', 'OLD SURGERY, NT1 1TN', 4 ],
[ 'X99999', 'UNKNOWN HOSPITAL', 3 ],
[ 'V81999', 'UNKNOWN PRACTICE', 4 ],
],
},
patients => {
fields => [ qw(last_name first_name dob gender nhs_number created_at) ],
values => [
[ qw(green alan 1940-02-01 M 1111111111), $NOW ],
[ qw(brown stan 1960-10-04 M 2222222222), $NOW ],
],
},
patient_case => {
fields => [ qw(patient_id referral_source_id unit_number) ],
values => [
[ 1, 2, 1011 ], # gp surgery referral
[ 2, 1, 1234 ], # hospital referral
],
},
phone_log_options => {
fields => [ qw(description is_active) ],
values => [
[ 'final diagnosis given', 'yes' ],
[ 'request report copy', 'yes' ],
],
},
referral_types => {
fields => [ qw( description prefix default_unknown ) ],
values => [
[ qw( clinician C C9999998 ) ],
[ qw( practitioner G G9999998 ) ],
[ 'hospital', undef, 'X99999' ],
[ 'practice', undef, 'V81999' ],
],
},
referrers => {
fields => [ qw(name national_code referral_type_id) ],
values => [
[ 'Brown CC', 'C1234567', 1 ],
[ 'Black DE', 'G1234567', 2 ],
[ 'Cutter S', 'C7654321', 1 ],
[ 'Unknown', 'C9999998', 1 ],
[ 'Unknown', 'G9999998', 2 ],
],
},
referral_sources => {
fields => [ qw( display_name organisation_code parent_organisation_id
referral_type_id ) ],
values => [
[ 'Newtown General Infirmary', 'ABC01', 1, 3 ],
[ 'The Surgery, Newtown, NT1 1NT', 'B12345', 2, 4 ],
[ 'Unknown hospital', 'X99999', 3, 3 ],
[ 'Unknown practice', 'V81999', 4, 4 ],
],
},
referrer_department => {
fields => [ qw(referrer_id parent_organisation_id hospital_department_code) ],
values => [
[ 1, 1, 823 ],
[ 2, 2, 600 ],
[ 3, 1, 100 ],
[ 4, 3, 999 ],
[ 5, 4, 600 ],
],
},
requests => {
fields => [ qw(year request_number patient_case_id referrer_department_id created_at) ],
values => [
[ $NOW->year, 1, 1, 2, $NOW ], # gp surgery referral
[ $NOW->year, 2, 2, 1, $NOW ], # hospital referral
],
},
request_consent => {
fields => [ qw( request_id consent_id status ) ],
values => [
[ 1, 1, 'yes' ],
]
},
request_specimen => {
fields => [ qw(request_id specimen_id) ],
values => [
[ 1, 1 ],
[ 1, 4 ],
[ 2, 2 ],
],
},
request_specimen_detail => {
fields => [ qw(request_id specimen_date) ],
values => [
[ 1, $NOW->clone->subtract( days => 1 ) ],
[ 2, $NOW->clone->subtract( days => 1 ) ],
],
},
request_trial => {
fields => [ qw(request_id trial_id) ],
values => [
[ 1, 1 ],
],
},
result_summary_options => {
fields => [ qw(description lab_section_id is_active ) ],
values => [
[ 'Normal', 1, 'yes' ],
]
},
sample_types => {
fields => [ 'specimen_type' ],
values => [
[ 'liquid' ],
[ 'biopsy' ],
],
},
screen_category => {
fields => [ 'name' ],
values => [
[ 'fresh' ],
[ 'fixed' ],
],
},
screens => {
fields => [ qw(description category_id active) ],
values => [
[ qw(AML 1 yes) ],
[ qw(PNH 1 yes) ],
],
},
screen_lab_test => {
fields => [ qw(screen_id lab_test_id) ],
values => [
[ 1, 2 ], # AML / AML (Flow)
[ 1, 5 ], # AML / APML (Molecular)
[ 2, 1 ], # PNH / PNH (Flow)
]
},
screen_lab_test_detail => {
fields => [ qw(screen_id lab_section_id test_details) ],
values => [
[ 1, 1, 'AML partial panel' ],
]
},
specimen_lab_test => {
fields => [ 'specimen_id', 'lab_test_id' ],
values => [
[ 4, 9 ], # specimen BMAT auto-requests test 'AUTO'
],
},
specimens => {
fields => [ qw(sample_code description active) ],
values => [
[ 'PB', 'peripheral blood', 'yes' ],
[ 'LU', 'lymph node, unfixed', 'yes' ],
[ 'BMA', 'bone marrow aspirate', 'yes' ],
[ 'BMAT', 'bone marrow aspirate & trephine', 'yes' ],
],
},
specimen_sample_type => {
fields => [ qw(specimen_id sample_type_id) ],
values => [
[ 1, 1 ], # PB / liquid
[ 2, 1 ], # LU / liquid
[ 3, 1 ], # BMA / liquid
[ 4, 1 ], # BMAT / liquid
[ 4, 2 ], # BMAT / biopsy
],
},
status_options => {
fields => [ qw( description is_editable is_active ) ],
values => [
[ 'new', 'yes', 'yes', ],
[ 'screened', 'yes', 'yes', ],
[ 'reported', 'yes', 'yes', ],
[ 'authorised', 'yes', 'yes', ],
[ 'complete', 'yes', 'yes', ],
[ 'deleted', 'yes', 'yes', ],
]
},
user_functions => {
fields => [ qw(function_name function_detail active) ],
values => [
[ 'search', 'search for requests', 'yes' ],
[ 'view_history', 'view request history', 'yes' ],
[ 'print_one', 'print a record', 'yes' ],
[ 'register', 'register requests', 'yes' ],
[ 'edit_pid', 'edit patient', 'yes' ],
[ 'modify_results', 'modify results', 'yes' ],
[ 'screen', 'screen requests', 'yes' ],
[ 'report', 'report requests', 'yes' ],
[ 'do_admin', 'admin functions', 'yes' ],
[ 'phone_log', 'view/edit phone log', 'yes' ],
[ 'log_errors', 'log errors', 'yes' ],
[ 'delete_record', 'delete requests', 'yes' ],
[ 'patient_merge', 'merge patients', 'yes' ],
[ 'view_unrestricted', 'view unauthorised entries', 'yes' ],
],
},
user_groups => {
fields => [ qw(group_name group_label group_detail active) ],
values => [
[ 'su', 'SuperUser', 'superuser description', 'yes' ],
[ 'guest', 'Guest', 'guest description', 'yes' ],
[ 'bms', 'BMS', 'bms description', 'yes' ],
],
},
user_group_function => {
fields => [ 'group_id', 'function_id' ],
values => [
# group_id #1 needs all functions for test-script user:
( map { [ 1, $_ ] } (1..14) ),
# guest:
[ 2, 1 ], # search
[ 2, 2 ], # view history
[ 2, 3 ], # print record
# bms:
[ 3, 1 ], # search
[ 3, 2 ], # view history
[ 3, 3 ], # print record
[ 3, 4 ], # register
],
},
user_locations => {
fields => [ qw(location_name region_code active) ],
values => [
[ qw(HMDS ABC yes) ],
],
},
users => {
fields => [ qw( username last_name first_name email user_location_id
designation group_id active password ) ],
values => [
[ qw(admin admin_lname admin_fname admin@here.com 1 administrator 1 yes ),
Digest::SHA1::sha1_base64('adm1n')],
]
}
};