{% extends "base.html" %} {% block title %}FastSSV · OMOP SQL Validator{% endblock %} {% block extra_scripts %} {% endblock %} {% block content %}
Free · Open source

OMOP SQL Validator

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.

Your SQL stays in this session — nothing is logged or stored.
Try:

SQL query to check — Press ⌘/Ctrl + to validate

Paste a query or pick an example above, then click Validate SQL.

Frequently asked

What does FastSSV check?

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.

Is my SQL sent anywhere?

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.

Which SQL dialects are supported?

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.

Can I use this programmatically?

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.

Found a bug or have a feature request?

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.

Open an issue on GitHub →

{% endblock %}