{"id":"dermatologist-pyomop","name":"pyomop","homepage":"https://nuchange.ca/2025/08/vibe-coding-fhir-to-omop-cdm.html?github","repo_url":"https://github.com/dermatologist/pyomop","category":"ai-ml","subcategories":[],"tags":["ai-ml","clinical-trials","health-informatics","ohdsi","omop","cdm","fhir","text-to-sql","llm","mcp","sqlalchemy","etl"],"what_it_does":"pyomop is a Python library/CLI for working with OHDSI OMOP CDM (v5.4/v6) databases using SQLAlchemy. It can create/init CDM tables, load OMOP vocabularies, run QueryLibrary queries, execute custom SQL and convert results to pandas DataFrames. It also includes FHIR Bulk Export (NDJSON/NDJSON) import utilities that map FHIR source values to OMOP concepts, and an optional MCP server exposing tools for database operations and query execution. There is also optional LLM-based natural-language query support via langchain extras.","use_cases":["Creating and initializing OMOP CDM schemas (SQLite/PostgreSQL/MySQL).","Loading OMOP vocabulary CSVs and reconciling vocabulary.","Running OHDSI QueryLibrary predefined queries and exporting results to pandas.","Executing custom SQL against OMOP CDM and converting results to DataFrames.","Importing FHIR Bulk Export data into OMOP CDM with vocabulary reconciliation using provided mapping configs.","Using an MCP client to programmatically create/load/run SQL against an OMOP CDM database."],"not_for":["Production-grade managed access control for multi-tenant environments (no evidence of robust authN/authZ).","Internet-facing services without additional deployment hardening (package appears primarily developer/CLI focused).","Environments where deterministic/repeatable query generation from LLMs is required (LLM support is optional and depends on external models/prompts)."],"best_when":"You control the database and runtime environment (local/managed instance), and you want a developer-friendly toolkit for OMOP CDM setup, querying, and some ETL (FHIR import), optionally with agent access via MCP.","avoid_when":"You need strong, standardized API authentication/authorization, auditing, and strict operational guardrails for untrusted users—especially for an HTTP-exposed MCP server and for tools that can execute SQL.","alternatives":["omop-cdm (schema definitions)","OHDSI WebAPI/Atlas for OMOP tooling","QueryLibrary for query definitions","Other OMOP ETL/FHIR conversion tools (e.g., from OHDSI or FHIR-to-OMOP community projects)","omop_mcp (mentioned as combining with PyOMOP)"],"af_score":58.1,"security_score":41.0,"reliability_score":36.2,"package_type":"mcp_server","discovery_source":["github"],"priority":"high","status":"evaluated","version_evaluated":null,"last_evaluated":"2026-04-04T19:32:34.697206+00:00","interface":{"has_rest_api":false,"has_graphql":false,"has_grpc":false,"has_mcp_server":true,"mcp_server_url":null,"has_sdk":true,"sdk_languages":["python"],"openapi_spec_url":null,"webhooks":false},"auth":{"methods":["Local usage / direct DB credentials via connection parameters or environment variables (PYOMOP_DB/HOST/PORT/USER/PW/SCHEMA).","MCP server via stdio default; HTTP transport available (requires dependencies), but explicit auth mechanisms not described in provided README."],"oauth":false,"scopes":false,"notes":"Authentication/authorization for database access appears to be delegated to the target DB credentials supplied by the user. For the MCP server, transport options are described, but no explicit MCP authN/authZ, API keys, or scope enforcement are documented in the provided materials."},"pricing":{"model":null,"free_tier_exists":false,"free_tier_limits":null,"paid_tiers":[],"requires_credit_card":false,"estimated_workload_costs":null,"notes":"No hosted service pricing is indicated; this is a library/CLI. LLM extras may incur external model/provider costs depending on configuration."},"requirements":{"requires_signup":false,"requires_credit_card":false,"domain_verification":false,"data_residency":[],"compliance":[],"min_contract":null},"agent_readiness":{"af_score":58.1,"security_score":41.0,"reliability_score":36.2,"mcp_server_quality":86.0,"documentation_accuracy":70.0,"error_message_quality":0.0,"error_message_notes":null,"auth_complexity":55.0,"rate_limit_clarity":0.0,"tls_enforcement":55.0,"auth_strength":30.0,"scope_granularity":20.0,"dependency_hygiene":50.0,"secret_handling":55.0,"security_notes":"Strengths/positives: TLS enforcement for database connections may depend on SQLAlchemy/DB settings; package uses standard drivers (asyncpg/SQLAlchemy) rather than custom network protocols. The MCP server supports stdio by default (less exposed). Environment variables for DB credentials are documented (reducing shell-history leakage). Concerns: no explicit authN/authZ for MCP tools (especially HTTP transport) is described; MCP includes tools that can execute SQL, increasing impact if exposed to untrusted users. No evidence of fine-grained tool-level scoping or audit logging. Dependency hygiene is not verifiable from provided content; presence of several external packages increases need for routine vulnerability scanning.","uptime_documented":0.0,"version_stability":55.0,"breaking_changes_history":45.0,"error_recovery":45.0,"idempotency_support":"false","idempotency_notes":"No explicit idempotency guarantees described. Tools like create/load/execute SQL could have side effects depending on how callers use them and whether targets already exist.","pagination_style":"none","retry_guidance_documented":false,"known_agent_gotchas":["SQL execution tools can modify databases; agents should use check_sql/validation and constrain scope before run_sql.","create_cdm/create_eunomia limited to local sqlite to avoid inadvertent data loss—agents should respect those constraints to prevent unexpected failures.","HTTP transport is available for MCP but no authentication guidance is provided; avoid exposing publicly without external safeguards.","LLM-based natural language query generation quality depends heavily on prompt/model configuration and may require validation via check_sql before executing."]}}