LICENSE
README.md
pyproject.toml
src/fastssv/__init__.py
src/fastssv/cli.py
src/fastssv.egg-info/PKG-INFO
src/fastssv.egg-info/SOURCES.txt
src/fastssv.egg-info/dependency_links.txt
src/fastssv.egg-info/entry_points.txt
src/fastssv.egg-info/requires.txt
src/fastssv.egg-info/top_level.txt
src/fastssv/api/__init__.py
src/fastssv/api/app.py
src/fastssv/api/config.py
src/fastssv/api/models.py
src/fastssv/api/routes.py
src/fastssv/api/ui.py
src/fastssv/api/static/DRIVE.png
src/fastssv/api/static/Kings.svg
src/fastssv/api/static/LANCS.png
src/fastssv/api/static/Lancaster.png
src/fastssv/api/static/htmx.min.js
src/fastssv/api/static/prism-json.min.js
src/fastssv/api/static/prism-sql.min.js
src/fastssv/api/static/prism.min.js
src/fastssv/api/static/sql-editor.js
src/fastssv/api/static/style.css
src/fastssv/api/templates/base.html
src/fastssv/api/templates/index.html
src/fastssv/api/templates/rules.html
src/fastssv/api/templates/partials/results.html
src/fastssv/core/__init__.py
src/fastssv/core/base.py
src/fastssv/core/deduplication.py
src/fastssv/core/helpers.py
src/fastssv/core/logging.py
src/fastssv/core/patch.py
src/fastssv/core/registry.py
src/fastssv/core/validation_context.py
src/fastssv/rules/__init__.py
src/fastssv/rules/anti_patterns/__init__.py
src/fastssv/rules/anti_patterns/ambiguous_column_reference.py
src/fastssv/rules/anti_patterns/attribute_definition_invalid_join.py
src/fastssv/rules/anti_patterns/comma_separated_cross_join.py
src/fastssv/rules/anti_patterns/concept_ancestor_mixed_with_concept_relationship_redundantly.py
src/fastssv/rules/anti_patterns/concept_code_requires_vocabulary_id.py
src/fastssv/rules/anti_patterns/concept_name_lookup.py
src/fastssv/rules/anti_patterns/concept_relationship_transitive_misuse.py
src/fastssv/rules/anti_patterns/destructive_operations_on_clinical_tables.py
src/fastssv/rules/anti_patterns/duplicate_column_alias.py
src/fastssv/rules/anti_patterns/having_without_group_by.py
src/fastssv/rules/anti_patterns/join_key_validation.py
src/fastssv/rules/anti_patterns/limit_without_order_by.py
src/fastssv/rules/anti_patterns/no_distinct_on_primary_key_column.py
src/fastssv/rules/anti_patterns/no_string_identification.py
src/fastssv/rules/anti_patterns/null_comparison_operator.py
src/fastssv/rules/anti_patterns/singleton_metadata_clinical_join.py
src/fastssv/rules/anti_patterns/standard_concept_or_with_classification.py
src/fastssv/rules/anti_patterns/top_as_synthetic_data.py
src/fastssv/rules/anti_patterns/type_concept_id_domain_filter.py
src/fastssv/rules/anti_patterns/type_concept_id_misuse.py
src/fastssv/rules/concept_standardization/__init__.py
src/fastssv/rules/concept_standardization/concept_ancestor_cross_domain_validation.py
src/fastssv/rules/concept_standardization/concept_ancestor_max_levels_misuse.py
src/fastssv/rules/concept_standardization/concept_ancestor_rollup_direction.py
src/fastssv/rules/concept_standardization/concept_ancestor_self_include_redundancy.py
src/fastssv/rules/concept_standardization/concept_class_id_ingredient_for_drug_grouping.py
src/fastssv/rules/concept_standardization/concept_domain_validation.py
src/fastssv/rules/concept_standardization/concept_synonym_language_concept_id.py
src/fastssv/rules/concept_standardization/domain_vocabulary_validation.py
src/fastssv/rules/concept_standardization/era_table_standard_concepts.py
src/fastssv/rules/concept_standardization/invalid_reason_enforcement.py
src/fastssv/rules/concept_standardization/maps_to_target_standard_validation.py
src/fastssv/rules/concept_standardization/multiple_maps_to_targets.py
src/fastssv/rules/concept_standardization/source_concept_id_standard_filter.py
src/fastssv/rules/concept_standardization/source_concept_id_warning.py
src/fastssv/rules/concept_standardization/source_to_concept_map_validation.py
src/fastssv/rules/concept_standardization/standard_concept_enforcement.py
src/fastssv/rules/concept_standardization/standard_concept_value_validation.py
src/fastssv/rules/concept_standardization/unit_vocabulary_validation.py
src/fastssv/rules/data_quality/__init__.py
src/fastssv/rules/data_quality/canonical_string_value_validation.py
src/fastssv/rules/data_quality/clinical_event_date_before_1900_validation.py
src/fastssv/rules/data_quality/column_type_validation.py
src/fastssv/rules/data_quality/comprehensive_schema_validation.py
src/fastssv/rules/data_quality/concept_id_string_comparison.py
src/fastssv/rules/data_quality/concept_name_whitespace.py
src/fastssv/rules/data_quality/episode_requires_concept_filter.py
src/fastssv/rules/data_quality/fact_relationship_no_self_reference.py
src/fastssv/rules/data_quality/fact_relationship_requires_relationship_concept_filter.py
src/fastssv/rules/data_quality/fact_relationship_valid_concepts.py
src/fastssv/rules/data_quality/free_text_column_misuse.py
src/fastssv/rules/data_quality/incorrect_percentile_calculation.py
src/fastssv/rules/data_quality/negative_concept_id_validation.py
src/fastssv/rules/data_quality/non_standard_date_literal_format.py
src/fastssv/rules/data_quality/note_nlp_nlp_date_for_temporal_filtering.py
src/fastssv/rules/data_quality/note_nlp_offset_is_character_position.py
src/fastssv/rules/data_quality/source_value_field_usage.py
src/fastssv/rules/data_quality/standard_concept_null_handling.py
src/fastssv/rules/data_quality/union_concept_id_domain_indicator.py
src/fastssv/rules/data_quality/union_vs_union_all_clinical_events.py
src/fastssv/rules/data_quality/unmapped_concept_handling.py
src/fastssv/rules/data_quality/vocabulary_table_protection.py
src/fastssv/rules/domain_specific/__init__.py
src/fastssv/rules/domain_specific/cost_currency_concept_id.py
src/fastssv/rules/domain_specific/cost_paid_ingredient_cost_drug_specific.py
src/fastssv/rules/domain_specific/dose_era_cross_unit_comparison.py
src/fastssv/rules/domain_specific/event_cardinality_validation.py
src/fastssv/rules/domain_specific/event_field_polymorphic_resolution.py
src/fastssv/rules/domain_specific/cohort/__init__.py
src/fastssv/rules/domain_specific/cohort/cohort_definition_syntax_not_executable_sql.py
src/fastssv/rules/domain_specific/condition/__init__.py
src/fastssv/rules/domain_specific/condition/condition_occurrence_cardinality_validation.py
src/fastssv/rules/domain_specific/condition/condition_visit_hierarchy_validation.py
src/fastssv/rules/domain_specific/cost/__init__.py
src/fastssv/rules/domain_specific/cost/cost_event_id_polymorphic_resolution.py
src/fastssv/rules/domain_specific/cost/cost_payer_plan_period_id_join.py
src/fastssv/rules/domain_specific/death/__init__.py
src/fastssv/rules/domain_specific/death/death_cause_source_concept_validation.py
src/fastssv/rules/domain_specific/death/death_join_to_person_not_to_clinical_event.py
src/fastssv/rules/domain_specific/drug/__init__.py
src/fastssv/rules/domain_specific/drug/drug_days_supply_validation.py
src/fastssv/rules/domain_specific/drug/drug_era_concept_class_validation.py
src/fastssv/rules/domain_specific/drug/drug_exposure_cardinality_validation.py
src/fastssv/rules/domain_specific/drug/drug_exposure_quantity_misuse.py
src/fastssv/rules/domain_specific/drug/drug_exposure_sig_parsing.py
src/fastssv/rules/domain_specific/drug/drug_quantity_validation.py
src/fastssv/rules/domain_specific/drug/drug_strength_numerator_denominator_for_concentration.py
src/fastssv/rules/domain_specific/drug/drug_strength_validity_filter.py
src/fastssv/rules/domain_specific/episode/__init__.py
src/fastssv/rules/domain_specific/episode/episode_event_no_person_id.py
src/fastssv/rules/domain_specific/episode/episode_parent_id_self_join.py
src/fastssv/rules/domain_specific/location/__init__.py
src/fastssv/rules/domain_specific/location/location_history_entity_id_requires_domain_id.py
src/fastssv/rules/domain_specific/measurement/__init__.py
src/fastssv/rules/domain_specific/measurement/measurement_cross_unit_comparison.py
src/fastssv/rules/domain_specific/measurement/measurement_duplicate_detection.py
src/fastssv/rules/domain_specific/measurement/measurement_operator_concept_validation.py
src/fastssv/rules/domain_specific/measurement/measurement_range_low_high_validation.py
src/fastssv/rules/domain_specific/measurement/measurement_unit_validation.py
src/fastssv/rules/domain_specific/measurement/measurement_value_as_number_and_concept_validation.py
src/fastssv/rules/domain_specific/note/__init__.py
src/fastssv/rules/domain_specific/note/note_nlp_snippet_misuse.py
src/fastssv/rules/domain_specific/observation/__init__.py
src/fastssv/rules/domain_specific/observation/observation_value_as_columns_mutually_contextual.py
src/fastssv/rules/domain_specific/observation/observation_value_as_concept_confusion.py
src/fastssv/rules/domain_specific/observation/observation_value_as_string_numeric_comparison.py
src/fastssv/rules/domain_specific/person/__init__.py
src/fastssv/rules/domain_specific/person/person_birth_field_validation.py
src/fastssv/rules/domain_specific/person/year_of_birth_age_arithmetic.py
src/fastssv/rules/domain_specific/procedure/__init__.py
src/fastssv/rules/domain_specific/procedure/procedure_date_not_procedure_start_date.py
src/fastssv/rules/domain_specific/procedure/procedure_occurrence_quantity_semantics.py
src/fastssv/rules/domain_specific/specimen/__init__.py
src/fastssv/rules/domain_specific/specimen/specimen_source_id_not_specimen_id.py
src/fastssv/rules/domain_specific/visit/__init__.py
src/fastssv/rules/domain_specific/visit/cdm_v53_to_v54_column_renames.py
src/fastssv/rules/domain_specific/visit/visit_detail_admitted_discharged_domain.py
src/fastssv/rules/domain_specific/visit/visit_detail_dates_within_parent_visit.py
src/fastssv/rules/domain_specific/visit/visit_detail_visit_occurrence_reference.py
src/fastssv/rules/domain_specific/visit/visit_event_temporal_validation.py
src/fastssv/rules/domain_specific/visit/visit_length_of_stay_arithmetic.py
src/fastssv/rules/domain_specific/visit/visit_occurrence_type_domain.py
src/fastssv/rules/domain_specific/visit/visit_outpatient_same_day_validation.py
src/fastssv/rules/domain_specific/visit_detail/__init__.py
src/fastssv/rules/domain_specific/visit_detail/visit_detail_has_no_preceding_visit_occurrence_id.py
src/fastssv/rules/domain_specific/vocabulary/__init__.py
src/fastssv/rules/domain_specific/vocabulary/relationship_boolean_comparison.py
src/fastssv/rules/joins/__init__.py
src/fastssv/rules/joins/care_site_id_join_validation.py
src/fastssv/rules/joins/care_site_join_validation.py
src/fastssv/rules/joins/care_site_location_join_validation.py
src/fastssv/rules/joins/clinical_person_id_linkage_validation.py
src/fastssv/rules/joins/clinical_pk_cross_join_validation.py
src/fastssv/rules/joins/clinical_visit_detail_join_validation.py
src/fastssv/rules/joins/cohort_clinical_join_validation.py
src/fastssv/rules/joins/concept_alias_reuse_validation.py
src/fastssv/rules/joins/concept_ancestor_name_resolution_validation.py
src/fastssv/rules/joins/concept_concept_class_join_validation.py
src/fastssv/rules/joins/concept_domain_join_validation.py
src/fastssv/rules/joins/concept_primary_key_join_validation.py
src/fastssv/rules/joins/concept_relationship_concept_join_validation.py
src/fastssv/rules/joins/concept_relationship_relationship_join_validation.py
src/fastssv/rules/joins/concept_relationship_requires_relationship_id.py
src/fastssv/rules/joins/concept_synonym_join_validation.py
src/fastssv/rules/joins/concept_vocabulary_join_validation.py
src/fastssv/rules/joins/cost_table_domain_validation.py
src/fastssv/rules/joins/death_visit_occurrence_join_validation.py
src/fastssv/rules/joins/drug_exposure_drug_strength_join_validation.py
src/fastssv/rules/joins/era_forbidden_join_validation.py
src/fastssv/rules/joins/fact_relationship_join_validation.py
src/fastssv/rules/joins/join_path_validation.py
src/fastssv/rules/joins/left_join_then_where_on_right_table.py
src/fastssv/rules/joins/maps_to_direction.py
src/fastssv/rules/joins/note_nlp_note_join_validation.py
src/fastssv/rules/joins/observation_period_join_validation.py
src/fastssv/rules/joins/payer_plan_period_join_validation.py
src/fastssv/rules/joins/person_id_join_validation.py
src/fastssv/rules/joins/person_location_join_validation.py
src/fastssv/rules/joins/preceding_visit_occurrence_validation.py
src/fastssv/rules/joins/provider_care_site_join_validation.py
src/fastssv/rules/joins/provider_join_validation.py
src/fastssv/rules/joins/visit_detail_join_validation.py
src/fastssv/rules/joins/visit_occurrence_id_join_validation.py
src/fastssv/rules/joins/visit_occurrence_inner_join_validation.py
src/fastssv/rules/temporal/__init__.py
src/fastssv/rules/temporal/clinical_event_date_in_future_validation.py
src/fastssv/rules/temporal/datetime_between_date_literal.py
src/fastssv/rules/temporal/death_date_before_birth_validation.py
src/fastssv/rules/temporal/death_date_in_future_validation.py
src/fastssv/rules/temporal/end_before_start_validation.py
src/fastssv/rules/temporal/future_information_leakage.py
src/fastssv/rules/temporal/nullable_end_date_null_handling.py
src/fastssv/rules/temporal/observation_period_anchoring.py
src/fastssv/rules/temporal/observation_period_date_range_logic.py
src/fastssv/rules/temporal/required_date_column_validation.py
src/fastssv/schemas/__init__.py
src/fastssv/schemas/cdm_column_types.py
src/fastssv/schemas/semantic_schema.py
tests/test_cli.py
tests/test_deduplication.py
tests/test_integration.py
tests/test_parse_sql.py
tests/test_patch.py
tests/test_rules.py
tests/test_schema_consistency.py
tests/test_strict_mode.py