{% extends "base.html" %}
{% block title %}FastSSV · OMOP SQL Validator{% endblock %}
{% block extra_scripts %}
{% endblock %}
{% block content %}
Catch silent OMOP CDM v5.4 bugs before they run. Static analysis against
{{ rules_loaded }} rules covering standard-concept
enforcement, hierarchy expansion, join paths, and temporal logic.
OMOP SQL Validator
FastSSV runs {{ rules_loaded }} static rules against your SQL, targeting
the silent failures you can't catch with a linter: missing
standard_concept = 'S' enforcement, wrong
concept_ancestor rollup direction, temporal logic outside
observation periods, joins that don't align with OMOP CDM v5.4 foreign
keys, type mismatches, and more.
See /rules for the full live list.
The query is POSTed to this service's validator process and parsed in memory. Only a SHA-256 hash of the SQL plus counts (rule IDs fired, duration) are logged — never the SQL body itself. No database is contacted, no data is persisted between requests.
PostgreSQL and T-SQL / SQL Server are both supported. Use the dialect
dropdown to force one, or leave it on Auto-detect — FastSSV
looks for T-SQL indicators (@vars, GETDATE(),
DATEDIFF(day, …), TOP N, etc.) and picks the
right parser.
Yes. The same validator backs a CLI (pip install fastssv)
and a JSON API — POST /v1/validate with
{sql, dialect, strict} returns per-query results with
query_index attribution. Swagger UI lives at
/docs.
FastSSV is open source and tracked on GitHub. If a rule fires on a query you believe is correct, or a real bug slipped through, please file an issue — a minimal failing SQL snippet and the dialect are enough to get it reproduced.