[sqlfluff]
templater = jinja
dialect = athena
sql_file_exts = .sql,.sql.jinja
exclude_rules=
    # these rule overfires on athena nested arrays
    references.from,
    structure.column_order,
    structure.unused_join,
    aliasing.unused,
    # this rule interferes with FHIR naming conventions
    capitalisation.identifiers
max_line_length = 90

[sqlfluff:indentation]
template_blocks_indent = false

[sqlfluff:rules:layout.long_lines]
ignore_comment_lines = true

[sqlfluff:rules:capitalisation.keywords]
capitalisation_policy = upper


[sqlfluff:templater:jinja]
load_macros_from_path = cumulus_library/template_sql/shared_macros,cumulus_library/studies/core/core_templates

[sqlfluff:templater:jinja:context]
code_systems = ["http://snomed.info/sct", "http://hl7.org/fhir/sid/icd-10-cm"]
column_aliases = {'a.foo': 'foobar', 'b.bar' : 'foobaz'}
col_type_list = ["a string","b string"]
columns = ['a','b']
cc_columns = 
    [
        {"name": "baz", "is_array": True}, 
        {"name": "foobar", "is_array": False}
    ]
cc_column = 'code'
code_system_tables = 
    [
        {
            table_name":"hasarray",
            "column_hierarchy":[("acol",list),("bcol",dict)],
            "has_data": True
        },
        {
            "table_name":"noarray",
            "column_hierarchy":[("acol.bcol", list)],
            "has_data": True
        },
        {
            "table_name":"bare",
            "column_hierarchy":[("bcol", dict)],
            "has_data": True
        },
        {
            "table_name":"empty",
            "column_hierarchy":[("empty",dict],
            "has_data": False
        }
    ]
column_name = 'bar'
column_names = ['foo', 'bar']
conditions = ["1 > 0", "1 < 2"]
column_hierarchy = [('a', list),('b',dict)]
count_ref = count_ref
count_table = count_table
dataset = 
    [
        ["foo","foo"],
        ["bar","bar"]
    ]
db_type = duckdb
dependent_variable = is_flu
ext_systems = ["omb", "text"]
extra_alias_done = True
extra_field = ("field", "alias")
extra_fields = [("field", "alias")]
field = 'column_name'
field_alias = 'field'
filter_table = filter_table
filter_resource = True
fhir_extension = condition
fhir_resource = patient
id = 'id'
join_clauses = ['a.foo = b.foo','a.bar = b.bar']
join_columns = ['a.foo', 'b.foo', 'a.bar', 'b.bar']
join_cols_by_table = 
    { 
        "join_table": { 
            "join_id": "enc_ref",
            "included_cols": [["a"], ["b", "c"]]
        }
    }
join_id = subject_ref
join_tables = ['table_a','table_b']
join_table_aliases = ['a','b']
keywords = ['key','words']
local_location = /var/study/data/
neg_source_table = neg_source_table
output_table_name = 'created_table'
parent_field = 'parent'
prefix = Test
primary_ref = encounter_ref
pos_source_table = pos_source_table
remote_location = s3://bucket/study/data/
sab = 'MED-RT'
schema_name = test_schema
schema = 
    {
        'allergyintolerance': {
            'category': True,
            'criticality': True,
            'encounter': {
                'reference': True,
            },
            'id': True,
            'patient': {
                'reference': True,
            },
            'reaction': {
                'severity': True,
            },
        },
        'condition': {
            'category': {
                'coding': True, 'code': True, 'display': True, 'system': True, 'userSelected': True, 'version': True, 'text': True
            },
            'clinicalStatus': {
                'coding': True, 'code': True, 'display': True, 'system': True, 'userSelected': True, 'version': True, 'text': True
            },
            'id': True, 
            'recordedDate': True, 
            'verificationStatus': {
                'coding': True, 'code': True, 'display': True, 'system': True, 'userSelected': True, 'version': True, 'text': True},
            'subject': {
                'reference': True, 'display': False, 'type': True
            },
            'encounter': {
                'reference': True, 'display': False, 'type': True
            }
        }, 
        'diagnosticreport': {
            'effectivePeriod': {
              'start': True, 'end': True,
            },
            'encounter': {
                'reference': True,
            },
            'id': True,
            'result': {
                'reference': True,
            },
            'subject': {
                'reference': True,
            },
        },
        'documentreference': {
            'id': True, 
            'type': True, 
            'status': True, 
            'docStatus': True, 
            'context': {
                'period': True, 'start': True
            }, 
            'subject': {
                'reference': True
            }
        }, 
        'encounter': {
            'status': True, 
            'period': {
                'start': True, 'end': False
            }, 
            'class': {
                'code': True, 'system': True, 'display': False, 'userSelected': True, 'version': True
            }, 
            'subject': {
                'reference': True, 'display': False, 'type': True
            }, 
            'id': True
        },
        'etl__completion': {
            'group_name': True,
        },
        'etl__completion_encounters': {
            'group_name': True,
        },
        'medicationrequest': {
            'id': True, 
            'status': True, 
            'intent': True, 
            'authoredOn': True, 
            'category': {
                'code': True, 'system': True, 'display': False
            },
            'reportedBoolean': True,
            'reportedReference': {
                'reference': True
            },
            'dosageInstruction': {
                'text': True,
            },
            'medicationReference': {
                'reference': True
            },
            'subject': {
                'reference': True
            }, 
            'encounter': {
                'reference': True
            }
        }, 
        'observation': {
            'id': True, 
            'category': {
                'coding': True, 'code': True, 'display': True, 'system': True, 'text': True
            },
            'component': {
                'valueQuantity': {
                    'code': True, 'comparator': True, 'system': True, 'unit': True, 'value': True
                },
            },
            'status': True,
            'code': {
                'coding': True, 'code': True, 'display': True, 'system': True, 'text': True
            }, 
            'interpretation': {
                'coding': True, 'code': True, 'display': True, 'system': True, 'text': True
            }, 
            'referenceRange': {
                'low': False, 'high': False, 'normalvalue': False, 'type': False, 'appliesto': False, 'age': False, 'text': True
            }, 
            'effectivedatetime': True, 
            'valueQuantity': {
                'value': True, 'comparator': False, 'unit': False, 'system': False, 'code': False
            }, 
            'valueCodeableConcept': {
                'coding': True, 'code': True, 'display': True, 'system': True
            }, 
            'subject': {
                'reference': True
            }, 
            'encounter': {
                'reference': True
            }
        },
        'patient': {
            'id': True, 
            'gender': True, 
            'address': True, 
            'birthdate': True
        },
        'procedure': {
            'encounter': {
                'reference': True,
            },
            'id': True,
            'performedPeriod': {
              'start': True, 'end': True,
            },
            'subject': {
                'reference': True,
            },
        }
    }
source_table = source_table
source_id = source_id
steward = steward
study_prefix = study
table_cols = ["a","b"]
table_cols_types = ["varchar", "varchar"]
table_name = test_table
table_names = ["test_table"]
table_prefix = 'foo'
tables = ["test_a", "test_b"]
table_suffix = 2024_01_01_11_11_11
target_col_prefix = prefix
target_table = target_table
tier = 2
type_casts={"b": "VARCHAR"}
unnests = 
    [
        {
            "source col": "g", 
            "table_alias": "i", 
            "row_alias":"j"
        }, 
        {
            "source col": "k", 
            "table_alias": "l", 
            "row_alias":"m"
        },
    ]
view_cols = ["c","d"]
view_name = test_view
view_or_table_name = test_view_or_table
view_or_table = TABLE
where_clauses = ['cnt_subject >= 99', 'cnt_encounter >= 5']