Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Rest-API timezone support #11

Merged
merged 8 commits into from
Jan 10, 2022
7 changes: 4 additions & 3 deletions CTSMS/BulkProcessor/Projects/ETL/EcrfExport.pm
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ use CTSMS::BulkProcessor::Projects::ETL::EcrfSettings qw(
$selection_set_value_separator

$skip_errors
$timezone

$dbtool

Expand Down Expand Up @@ -495,7 +496,7 @@ NEXT_VISIT:

my $first = $context->{api_values_page_num} * $ecrf_data_api_values_page_size;
_info($context,"fetch eCRF values page: " . $first . '-' . ($first + $ecrf_data_api_values_page_size) . ' of ' . (defined $context->{api_values_page_total_count} ? $context->{api_values_page_total_count} : '?'),not $show_page_progress);
$context->{api_values_page} = CTSMS::BulkProcessor::RestRequests::ctsms::trial::TrialService::EcrfFieldValues::get_ecrffieldvalues($context->{listentry}->{id},$context->{ecrf}->{id},$context->{visit}->{id},0, $p, $sf, { _value => 1, _selectionValueMap => 1 })->{rows};
$context->{api_values_page} = CTSMS::BulkProcessor::RestRequests::ctsms::trial::TrialService::EcrfFieldValues::get_ecrffieldvalues($context->{listentry}->{id},$context->{ecrf}->{id},$context->{visit}->{id},0, $timezone, $p, $sf, { _value => 1, _selectionValueMap => 1 })->{rows};
$context->{api_values_page_total_count} = $p->{total_count};
$context->{api_values_page_num} += 1;
}
Expand Down Expand Up @@ -842,7 +843,7 @@ sub _get_probandlistentrytagvalues {

my $first = $api_listentrytagvalues_page_num * $ecrf_data_api_probandlistentrytagvalues_page_size;
_info($context,"fetch proband list attribute values page: " . $first . '-' . ($first + $ecrf_data_api_probandlistentrytagvalues_page_size) . ' of ' . (defined $api_listentrytagvalues_page_total_count ? $api_listentrytagvalues_page_total_count : '?'),not $show_page_progress);
$api_listentrytagvalues_page = CTSMS::BulkProcessor::RestRequests::ctsms::trial::TrialService::ProbandListEntryTagValues::get_probandlistentrytagvalues($context->{listentry}->{id}, 0, 0, $p, $sf, { _value => 1 })->{rows};
$api_listentrytagvalues_page = CTSMS::BulkProcessor::RestRequests::ctsms::trial::TrialService::ProbandListEntryTagValues::get_probandlistentrytagvalues($context->{listentry}->{id}, 0, 0, $timezone, $p, $sf, { _value => 1 })->{rows};
$api_listentrytagvalues_page_total_count = $p->{total_count};
$api_listentrytagvalues_page_num += 1;
}
Expand Down Expand Up @@ -879,7 +880,7 @@ sub _get_ecrffieldvalues {

my $first = $api_values_page_num * $ecrf_data_api_values_page_size;
_info($context,"fetch eCRF values page: " . $first . '-' . ($first + $ecrf_data_api_values_page_size) . ' of ' . (defined $api_values_page_total_count ? $api_values_page_total_count : '?'),not $show_page_progress);
$api_values_page = CTSMS::BulkProcessor::RestRequests::ctsms::trial::TrialService::EcrfFieldValues::get_ecrffieldvalues($context->{listentry}->{id},$ecrfid,$visit->{id},0, $p, $sf, { _value => 1, _selectionValueMap => 1 })->{rows};
$api_values_page = CTSMS::BulkProcessor::RestRequests::ctsms::trial::TrialService::EcrfFieldValues::get_ecrffieldvalues($context->{listentry}->{id},$ecrfid,$visit->{id},0, $timezone, $p, $sf, { _value => 1, _selectionValueMap => 1 })->{rows};
$api_values_page_total_count = $p->{total_count};
$api_values_page_num += 1;
}
Expand Down
3 changes: 2 additions & 1 deletion CTSMS/BulkProcessor/Projects/ETL/EcrfExporter/process.pl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
use CTSMS::BulkProcessor::Projects::ETL::EcrfSettings qw(
$output_path
$skip_errors
$timezone
$ctsms_base_url
$ecrf_data_trial_id
$lockfile
Expand Down Expand Up @@ -167,7 +168,7 @@ sub init {
"jid=i" => \$job_id,
"auth=s" => \$auth,
"upload" => \$upload_files,

"tz=s" => \$timezone,
);

my $result = load_config($configfile);
Expand Down
5 changes: 3 additions & 2 deletions CTSMS/BulkProcessor/Projects/ETL/EcrfImport.pm
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ use CTSMS::BulkProcessor::FileProcessors::XlsxFileSimple qw();

use CTSMS::BulkProcessor::Projects::ETL::EcrfSettings qw(
$skip_errors
$timezone
$ecrf_data_trial_id

%colname_abbreviation
Expand Down Expand Up @@ -1345,7 +1346,7 @@ sub _save_ecrf_values {
return $result unless scalar @{$context->{in}};
my $out;
eval {
$out = CTSMS::BulkProcessor::RestRequests::ctsms::trial::TrialService::EcrfFieldValues::set_ecrffieldvalues($context->{in});
$out = CTSMS::BulkProcessor::RestRequests::ctsms::trial::TrialService::EcrfFieldValues::set_ecrffieldvalues($context->{in},undef,$timezone);
};
my $stats = _get_values_stats($context,$out,sub {
my $in_row = shift;
Expand Down Expand Up @@ -1395,7 +1396,7 @@ sub _save_listentrytag_values {
return unless scalar @{$context->{in}};
my $out;
eval {
$out = CTSMS::BulkProcessor::RestRequests::ctsms::trial::TrialService::ProbandListEntryTagValues::set_probandlistentrytagvalues($context->{in});
$out = CTSMS::BulkProcessor::RestRequests::ctsms::trial::TrialService::ProbandListEntryTagValues::set_probandlistentrytagvalues($context->{in},undef,$timezone);
};
my $stats = _get_values_stats($context,$out,sub {
my $in_row = shift;
Expand Down
2 changes: 2 additions & 0 deletions CTSMS/BulkProcessor/Projects/ETL/EcrfImporter/process.pl
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
);
use CTSMS::BulkProcessor::Projects::ETL::EcrfSettings qw(
$skip_errors
$timezone
$ctsms_base_url
$ecrf_data_trial_id
$lockfile
Expand Down Expand Up @@ -111,6 +112,7 @@ sub init {
"jid=i" => \$job_id,
"auth=s" => \$auth,
"file=s" => \$file,
"tz=s" => \$timezone,
);

my $result = load_config($configfile);
Expand Down
5 changes: 5 additions & 0 deletions CTSMS/BulkProcessor/Projects/ETL/EcrfSettings.pm
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ our @EXPORT_OK = qw(
$csv_dir

$skip_errors
$timezone

$ecrf_data_trial_id

Expand Down Expand Up @@ -112,6 +113,8 @@ our $ctsms_base_url = undef;
our $dbtool = undef;
our $lockfile = undef;

our $timezone = undef;

our $ecrf_proband_alias_column_name = 'alias';
our $ecrf_proband_category_column_name;
our $ecrf_proband_department_column_name;
Expand Down Expand Up @@ -283,6 +286,8 @@ sub update_settings {
$selection_set_value_separator = $data->{selection_set_value_separator} if exists $data->{selection_set_value_separator};
$selection_set_value_separator //= '';

$timezone = $data->{timezone} if exists $data->{timezone};

if (exists $data->{ecrf_data_include_ecrffield_code}) {
if ('CODE' eq ref $data->{ecrf_data_include_ecrffield_code}) {
$ecrf_data_include_ecrffield_code = $data->{ecrf_data_include_ecrffield_code};
Expand Down
6 changes: 3 additions & 3 deletions CTSMS/BulkProcessor/Projects/ETL/InquiryExport.pm
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ use CTSMS::BulkProcessor::Projects::ETL::InquirySettings qw(
$inquiry_data_export_pdfs_filename

$skip_errors
$timezone

get_proband_columns
update_job
Expand Down Expand Up @@ -284,7 +285,7 @@ NEXT_PROBAND:

my $first = $context->{api_values_page_num} * $inquiry_data_api_values_page_size;
_info($context,"fetch inquiry values page: " . $first . '-' . ($first + $inquiry_data_api_values_page_size) . ' of ' . (defined $context->{api_values_page_total_count} ? $context->{api_values_page_total_count} : '?'),not $show_page_progress);
$context->{api_values_page} = CTSMS::BulkProcessor::RestRequests::ctsms::proband::ProbandService::InquiryValues::get_inquiryvalues($context->{proband}->{id},$context->{inquiry_data_trial}->{id},$active,$active_#,1,0, $p, $sf, { _value => 1, _selectionValueMap => 1 })->{rows};
$context->{api_values_page} = CTSMS::BulkProcessor::RestRequests::ctsms::proband::ProbandService::InquiryValues::get_inquiryvalues($context->{proband}->{id},$context->{inquiry_data_trial}->{id},$active,$active_#,1,0,$timezone,$p, $sf, { _value => 1, _selectionValueMap => 1 })->{rows};
$context->{api_values_page_total_count} = $p->{total_count};
$context->{api_values_page_num} += 1;
}
Expand Down Expand Up @@ -553,7 +554,6 @@ sub _inquiry_data_horizontal_items_to_row {
return \@row;
}


sub _insert_inquiry_data_horizontal_rows {
my ($context,$inquiry_data_rows) = @_;
my $result = 1;
Expand Down Expand Up @@ -657,7 +657,7 @@ sub _get_inquiryvalues {

my $first = $api_values_page_num * $inquiry_data_api_values_page_size;
_info($context,"fetch inquiry values page: " . $first . '-' . ($first + $inquiry_data_api_values_page_size) . ' of ' . (defined $api_values_page_total_count ? $api_values_page_total_count : '?'),not $show_page_progress);
$api_values_page = CTSMS::BulkProcessor::RestRequests::ctsms::proband::ProbandService::InquiryValues::get_inquiryvalues($context->{proband}->{id},$context->{inquiry_data_trial}->{id},$active,$active_#, 1, 0, $p, $sf, { _value => 1, _selectionValueMap => 1 })->{rows};
$api_values_page = CTSMS::BulkProcessor::RestRequests::ctsms::proband::ProbandService::InquiryValues::get_inquiryvalues($context->{proband}->{id},$context->{inquiry_data_trial}->{id},$active,$active_#, 1, 0,$timezone,$p, $sf, { _value => 1, _selectionValueMap => 1 })->{rows};
$api_values_page_total_count = $p->{total_count};
$api_values_page_num += 1;
}
Expand Down
3 changes: 2 additions & 1 deletion CTSMS/BulkProcessor/Projects/ETL/InquiryExporter/process.pl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
use CTSMS::BulkProcessor::Projects::ETL::InquirySettings qw(
$output_path
$skip_errors
$timezone
$ctsms_base_url
$inquiry_data_trial_id
$lockfile
Expand Down Expand Up @@ -134,7 +135,7 @@ sub init {
"jid=i" => \$job_id,
"auth=s" => \$auth,
"upload" => \$upload_files,

"tz=s" => \$timezone,
);

my $result = load_config($configfile);
Expand Down
5 changes: 5 additions & 0 deletions CTSMS/BulkProcessor/Projects/ETL/InquirySettings.pm
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ our @EXPORT_OK = qw(
$csv_dir

$skip_errors
$timezone

$inquiry_data_truncate_table
$inquiry_data_ignore_duplicates
Expand Down Expand Up @@ -127,6 +128,8 @@ our $lockfile = undef;

our $inquiry_data_export_pdfs_filename = '%s_%s%s';

our $timezone = undef;

#my $ecrfname_abbreviate_opts = {};

my $category_abbreviate_opts = {};
Expand Down Expand Up @@ -272,6 +275,8 @@ sub update_settings {
$selection_set_value_separator = $data->{selection_set_value_separator} if exists $data->{selection_set_value_separator};
$selection_set_value_separator //= '';

$timezone = $data->{timezone} if exists $data->{timezone};

if (exists $data->{inquiry_data_include_inquiry_code}) {
if ('CODE' eq ref $data->{inquiry_data_include_inquiry_code}) {
$inquiry_data_include_inquiry_code = $data->{inquiry_data_include_inquiry_code};
Expand Down
32 changes: 4 additions & 28 deletions CTSMS/BulkProcessor/Projects/WebApps/#/Controller/Inquiry.pm
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ use CTSMS::BulkProcessor::Projects::WebApps::#::Settings qw(
$enable_geolocation_services
$force_default_geolocation
$system_timezone
$convert_timezone
);


Expand Down Expand Up @@ -157,7 +158,6 @@ Dancer::get('/inquiry',sub {
my $site = get_site();
my $trial = Dancer::session('trial');


return get_template('inquiry',
script_names => [ 'sketch/jquery.colorPicker', 'sketch/raphael-2.2.0', 'sketch/raphael.sketchpad', 'sketch/json2.min', 'sketch/sketch',
'fieldcalculation/js-joda', 'fieldcalculation/js-joda-timezone', 'fieldcalculation/strip-comments', 'fieldcalculation/jquery.base64',
Expand Down Expand Up @@ -231,6 +231,7 @@ Dancer::post('/inquiries',sub {
1,
1,
$params->{load_all_js_values},
($convert_timezone ? undef : get_input_timezone()),
$p,
undef,
{ _selectionSetValueMap => 1, _inputFieldSelectionSelectionSetValueMap => 1 },$restapi);
Expand Down Expand Up @@ -286,17 +287,6 @@ Dancer::post('/inquiries',sub {
});
});












Dancer::post('/inquiry/savepage',sub {
my $ajax_error;
return $ajax_error if $ajax_error = CTSMS::BulkProcessor::Projects::WebApps::#::Controller::Trial::check_selected_ajax();
Expand Down Expand Up @@ -332,10 +322,6 @@ Dancer::post('/inquiry',sub {
my $trial = Dancer::session('trial');
my $posted_inquiries_map = _save_page_params($trial,$save_all_pages);





return check_done(sub {
check_prev(sub {
return unless CTSMS::BulkProcessor::Projects::WebApps::#::Controller::Proband::check_created();
Expand All @@ -362,7 +348,8 @@ sub _save_page {
my $trial_inquiries_saved_map = Dancer::session('trial_inquiries_saved_map') // {};
my $inquiries_saved_map = $trial_inquiries_saved_map->{$trial->{id}} // {};
my $in = _get_inquiryvalues_in($posted_inquiries_map,$inquiries_saved_map);
my $out = CTSMS::BulkProcessor::RestRequests::ctsms::proband::ProbandService::InquiryValues::set_inquiryvalues($in,0,0,$restapi);
my $out = CTSMS::BulkProcessor::RestRequests::ctsms::proband::ProbandService::InquiryValues::set_inquiryvalues($in,0,
($convert_timezone ? undef : get_input_timezone()),0,$restapi);
foreach my $inquiry_value (@{$out->{rows}}) {
$inquiries_saved_map->{$inquiry_value->{inquiry}->{id}} = { id => $inquiry_value->{id}, version => $inquiry_value->{version}, user_timezone => $inquiry_value->{inquiry}->{field}->{userTimeZone}, };
Dancer::debug('inquiry value ' . $inquiry_value->{id} . ' set');
Expand Down Expand Up @@ -506,17 +493,6 @@ sub _unpack_inkvalue {

}












sub _save_page_params {
my ($trial,$all_pages) = @_;
my $posted_inquiries_map;
Expand Down
2 changes: 2 additions & 0 deletions CTSMS/BulkProcessor/Projects/WebApps/#/Settings.pm
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ our @EXPORT_OK = qw(
$default_language_code
$dancer_maketext_options
$system_timezone
$convert_timezone
$default_timezone
$default_date_format
$default_decimal_separator
Expand Down Expand Up @@ -89,6 +90,7 @@ our $default_language_code = 'en';
our $dancer_maketext_options = { Style => 'gettext' };
our $system_timezone = 'UTC';
our $default_timezone = $system_timezone;
our $convert_timezone = 0; # 1 for clientside user timezone conversion
our $default_date_format = 'yyyy-MM-dd';
our $default_decimal_separator = '.'; # expected by the user

Expand Down
Loading