Convert-Pheno

 view release on metacpan or  search on metacpan

lib/Convert/Pheno/CLI/Args.pm  view on Meta::CPAN

          unless $supported_tables{$table};
        $output_name_overrides{$table} =
          _resolve_output_path( $out_dir, $filename );
    }

    my $out_file =
        $out_pxf    ? _resolve_output_path( $out_dir, $out_pxf )
      : defined $out_bff && length $out_bff ? _resolve_output_path( $out_dir, $out_bff )
      : $out_csv    ? _resolve_output_path( $out_dir, $out_csv )
      : $out_jsonf  ? _resolve_output_path( $out_dir, $out_jsonf )
      : $out_jsonld ? _resolve_output_path( $out_dir, $out_jsonld )
      : $out_omop_selected ? undef
      : @entity_list == 1
      ? catfile( $out_dir, $entity_list[0] . '.json' )
      : catfile( $out_dir, 'individuals.json' );

    my $log_file =
      catfile( $out_dir, ( $log ? $log : 'convert-pheno-log.json' ) );
    my $term_audit_file =
      defined $term_audit
      ? _resolve_output_path( $out_dir, $term_audit )
      : undef;

    my $in_type =
        $in_pxf     ? 'pxf'
      : $in_bff     ? 'bff'
      : $in_cbioportal ? 'cbioportal'
      : $in_redcap  ? 'redcap'
      : $in_cdiscodm ? 'cdiscodm'
      : @datasetjson_files ? 'datasetjson'
      : @datasetxml_files ? 'datasetxml'
      : @fhir_files  ? 'fhir'
      : $in_csv     ? 'csv'
      : @openehr_files ? 'openehr'
      : @omop_files ? 'omop'
      :               'bff';
    my $out_type =
        $out_pxf    ? 'pxf'
      : $out_bff_selected ? 'bff'
      : $out_csv    ? 'csv'
      : $out_jsonf  ? 'jsonf'
      : $out_jsonld ? 'jsonld'
      : $out_omop_selected ? 'omop'
      :               'bff';
    my $method = $in_type . '2' . $out_type;
    $usage_error->("Unsupported conversion <$method>")
      unless is_public_conversion($method);
    my $conversion_spec = conversion_spec($method);

    if ($out_bff_selected) {
        my %supported_for_route =
          map { $_ => 1 } @{ $conversion_spec->{entities}{supported} };
        for my $entity (@entity_list) {
            $usage_error->(
                "The entity <$entity> is not supported by conversion <$method>"
            ) unless $supported_for_route{$entity};
        }
    }

    $usage_error->("The conversion <$method> does not support --stream")
      if $stream && !$conversion_spec->{streaming};

    my $id = time . substr( "00000$$", -5 );

    my %data = (
        out_dir                   => $out_dir,
        in_textfile               => 1,
        method                    => $method,
        sql2csv                   => $sql2csv ? 1 : 0,
        exposures_file            => $exposures_file,
        search                    => $search,
        ohdsi_db                  => $ohdsi_db ? 1 : 0,
        omop_tables               => \@omop_tables,
        username                  => $username,
        text_similarity_method    => $text_similarity_method,
        min_text_similarity_score => $min_text_similarity_score,
        levenshtein_weight        => $levenshtein_weight,
        max_lines_sql             => $max_lines_sql,
        stream                    => $stream ? 1 : 0,
        schema_file               => $schema_file,
        out_file                  => $out_file,
        id                        => $id,
        test                      => $test ? 1 : 0,
        source_info               => $source_info ? 1 : 0,
        entities                  => \@entity_list,
    );

    $data{output_name_overrides} = \%output_name_overrides if %output_name_overrides;

    my $resolved_in_file =
        $in_pxf     ? $in_pxf
      : $in_bff     ? $in_bff
      : $in_cbioportal ? $in_cbioportal
      : $in_redcap  ? $in_redcap
      : $in_cdiscodm ? $in_cdiscodm
      : $in_csv     ? $in_csv
      :               undef;

    $data{in_file}              = $resolved_in_file if defined $resolved_in_file;
    $data{in_files}             = \@datasetjson_files if @datasetjson_files;
    $data{in_files}             = \@datasetxml_files  if @datasetxml_files;
    $data{in_files}             = \@fhir_files       if @fhir_files;
    $data{in_files}             = \@omop_files      if @omop_files;
    $data{in_files}             = \@openehr_files   if @openehr_files;
    $data{sep}                  = $sep if defined $sep;
    $data{redcap_dictionary}    = $redcap_dictionary if defined $redcap_dictionary;
    $data{mapping_file}         = $mapping_file if defined $mapping_file;
    $data{define_xml}           = $define_xml if defined $define_xml;
    $data{self_validate_schema} = $self_validate_schema if defined $self_validate_schema;
    $data{path_to_ohdsi_db}     = $path_to_ohdsi_db if defined $path_to_ohdsi_db;
    $data{term_audit_file}      = $term_audit_file if defined $term_audit_file;
    $data{default_vital_status} = $default_vital_status if defined $default_vital_status;
    $data{debug}                = $debug if defined $debug;
    $data{log}                  = $log if defined $log;
    $data{verbose}              = $verbose ? 1 : 0 if defined $verbose;

    return {
        action    => 'run',
        color     => $color,
        overwrite => $overwrite,
        out_file  => $out_file,



( run in 1.480 second using v1.01-cache-2.11-cpan-5c0b1e786e0 )