def test_value_requires_translation(self):
        self.assertTrue(
            domain_mapping.value_requires_translation(
                src_table=self.condition_table,
                dest_table=self.procedure_table,
                src_field=self.condition_type_concept_id,
                dest_field=self.procedure_type_concept_id))

        self.assertFalse(
            domain_mapping.value_requires_translation(
                src_table=self.condition_table,
                dest_table=self.procedure_table,
                src_field=self.condition_concept_id,
                dest_field=self.procedure_concept_id))

        self.assertFalse(
            domain_mapping.value_requires_translation(
                src_table=self.condition_table,
                dest_table=self.procedure_table,
                src_field=self.condition_source_concept_id,
                dest_field=self.procedure_source_concept_id))

        self.assertFalse(
            domain_mapping.value_requires_translation(
                src_table=self.condition_table,
                dest_table=self.procedure_table,
                src_field=self.condition_concept_id,
                dest_field=self.procedure_source_concept_id))
Пример #2
0
def resolve_field_mappings(src_table, dest_table):
    """
    This function generates the content of SQL select statement for the given src_table and dest_table.
    :param src_table: the source CDM table for rerouting
    :param dest_table: the destination CDM table for rerouting
    :return: the content of the SQL select statements
    """
    select_statements = []

    field_mappings = domain_mapping.get_field_mappings(src_table, dest_table)

    for dest_field, src_field in field_mappings.items():
        if domain_mapping.value_requires_translation(src_table, dest_table,
                                                     src_field, dest_field):
            value_mappings = domain_mapping.get_value_mappings(
                src_table, dest_table, src_field, dest_field)

            if len(value_mappings) == 0:
                if field_mapping.is_field_required(dest_table, dest_field):
                    case_statements = ZERO_AS_DEST_FIELD.format(
                        dest_field=dest_field)
                else:
                    case_statements = NULL_AS_DEST_FIELD.format(
                        dest_field=dest_field)
            else:
                case_statements = '\n\t\t'.join([
                    WHEN_STATEMENT.format(src_value=s, dest_value=d)
                    for d, s in value_mappings.items()
                ])

                dummy_value = fetch_dummy_value(
                    dest_table, dest_field) if field_mapping.is_field_required(
                        dest_table, dest_field) else NULL_VALUE

                case_statements = CASE_STATEMENT.format(
                    src_field=src_field,
                    dest_field=dest_field,
                    dummy_value=dummy_value,
                    statements=case_statements)
            select_statements.append(case_statements)
        else:
            select_statements.append(
                SRC_FIELD_AS_DEST_FIELD.format(src_field=src_field,
                                               dest_field=dest_field))

    return ',\n\t'.join(select_statements)