Drug mapping enhancements + Dependabot fixes - #20
Open
gkennos wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Normalised search compares against a computed expression, so ordinary indexes on
concept_namedo not help.Measured on a 1.7M-concept CDM:
domain='Drug'vocabulary_id='MedDRA'search_normalizednow requiresvocabulary_idorparent_ids(adomainfilter is not selective enough) and raisesINVALID_INPUTotherwise.allow_unindexed_scan=Trueaccepts the scan if it's really requires (exposed on MCP tool)concept_candidate_bundledegrades instead of failing (the same way an absent full-text sidecar is handled)Share one normalisation contract between Python and SQL
Adds
NormalizationProfile(StrEnum: verbatim / aggressive / drug_name) and moves the SQL expression builder tobase/sql.pyasnormalization_expression(), replacing the private_normalized_sql_exprin the vocab service. The three profiles were previously bare strings validated on only one of the two paths; an unknown profile is now rejected by both.Expose a read-only
MappingContextto pluginsPlugins can reuse the host's configured mapping and grounding services (candidate bundles, sync and async, concept context, grounding), instead of constructing a second
omop-graphor vocabulary adapter fromcontext.cdm_engine. All operations are query-only --> the underlying service objects are deliberately not exposed. The application wires one shared instance into every plugin.Checklist
breaking,feature,fix,dependencies, orchore)uv run pytest -q)uv run ruff check .)