@omophub/omophub-mcp 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/tools/concepts.js +2 -2
- package/dist/tools/concepts.js.map +1 -1
- package/dist/tools/fhir.d.ts.map +1 -1
- package/dist/tools/fhir.js +33 -3
- package/dist/tools/fhir.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -221,8 +221,8 @@ docker run -i -e OMOPHUB_API_KEY=oh_your_key_here omophub/omophub-mcp --transpor
|
|
|
221
221
|
| `semantic_search` | Search using natural language with neural embeddings (understands clinical meaning) |
|
|
222
222
|
| `find_similar_concepts` | Find concepts similar to a reference concept, name, or description |
|
|
223
223
|
| `explore_concept` | Get concept details, hierarchy, and cross-vocabulary mappings in one call |
|
|
224
|
-
| `fhir_resolve` | Resolve a FHIR coded value (
|
|
225
|
-
| `fhir_resolve_codeable_concept` | Resolve a FHIR CodeableConcept —
|
|
224
|
+
| `fhir_resolve` | Resolve a FHIR coded value (incl. administrative codes via the HL7 FHIR-to-OMOP IG ConceptMaps) to its OMOP standard concept and CDM target table |
|
|
225
|
+
| `fhir_resolve_codeable_concept` | Resolve a FHIR CodeableConcept — best match by OHDSI vocabulary preference, honoring `userSelected` |
|
|
226
226
|
|
|
227
227
|
### Resources
|
|
228
228
|
|
|
@@ -305,7 +305,7 @@ In **HTTP mode**, the health endpoint is available at `/health` on the same port
|
|
|
305
305
|
```bash
|
|
306
306
|
npx @omophub/omophub-mcp --transport=http --port=3100 --api-key=oh_your_key
|
|
307
307
|
curl http://localhost:3100/health
|
|
308
|
-
# → {"status":"ok","version":"1.
|
|
308
|
+
# → {"status":"ok","version":"1.5.0","uptime_seconds":42}
|
|
309
309
|
```
|
|
310
310
|
|
|
311
311
|
In **stdio mode**, use `--health-port` for a standalone health endpoint:
|
package/dist/tools/concepts.js
CHANGED
|
@@ -41,11 +41,11 @@ export function registerConceptTools(server, client) {
|
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
});
|
|
44
|
-
server.tool('get_concept_by_code', "Look up an OMOP concept using a vocabulary-specific code and vocabulary ID. Both parameters are required to avoid ambiguity
|
|
44
|
+
server.tool('get_concept_by_code', "Look up an OMOP concept using a vocabulary-specific code and vocabulary ID. Both parameters are required to avoid ambiguity - the same code can exist in multiple vocabularies (e.g., 'E11' exists in both ICD10CM and ICD10). If multiple concepts share the same code within a vocabulary, all matches are returned - prefer the one with standard_concept='S'.", {
|
|
45
45
|
vocabulary_id: z
|
|
46
46
|
.string()
|
|
47
47
|
.max(50)
|
|
48
|
-
.describe("The vocabulary system. Examples: 'ICD10CM', 'SNOMED', 'RxNorm', 'LOINC', '
|
|
48
|
+
.describe("The vocabulary system. Examples: 'ICD10CM', 'SNOMED', 'RxNorm', 'LOINC', 'HCPCS', 'NDC'"),
|
|
49
49
|
concept_code: z
|
|
50
50
|
.string()
|
|
51
51
|
.max(50)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concepts.js","sourceRoot":"","sources":["../../src/tools/concepts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAqB;IAC3E,MAAM,CAAC,IAAI,CACT,aAAa,EACb,8PAA8P,EAC9P;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KAC5E,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE;QAC9B,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,WAAW,UAAU,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAqC,CAAC;YAE9E,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAClD,OAAO;oBACL,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE;wBAC/B,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE;qBACtC;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,OAAO,CAC/B,aAAa,UAAU,EAAE,EACzB,SAAS,EACT,aAAa,CACd,CAAC;YAEF,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACrC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpD,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE;oBAC/B,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE;iBACtC;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAC/D,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE;oBAC/B,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE;iBACtC;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,mWAAmW,EACnW;QACE,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,CACP,
|
|
1
|
+
{"version":3,"file":"concepts.js","sourceRoot":"","sources":["../../src/tools/concepts.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/fhir.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fhir.d.ts","sourceRoot":"","sources":["../../src/tools/fhir.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"fhir.d.ts","sourceRoot":"","sources":["../../src/tools/fhir.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAyEtD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAwJhF"}
|
package/dist/tools/fhir.js
CHANGED
|
@@ -2,8 +2,13 @@ import { z } from 'zod';
|
|
|
2
2
|
import { resolveClient } from '../client/resolve.js';
|
|
3
3
|
import { formatErrorForMcp } from '../utils/errors.js';
|
|
4
4
|
function formatResolution(res) {
|
|
5
|
+
// concept_id 0 is the OMOP "no matching concept" sentinel — surface it as
|
|
6
|
+
// unmapped rather than presenting it as a successful resolution.
|
|
7
|
+
const header = res.standard_concept.concept_id === 0
|
|
8
|
+
? 'Unmapped: no OMOP standard concept (concept_id 0) for this input'
|
|
9
|
+
: `Resolved: ${res.standard_concept.concept_name} (ID: ${res.standard_concept.concept_id})`;
|
|
5
10
|
const lines = [
|
|
6
|
-
|
|
11
|
+
header,
|
|
7
12
|
`Vocabulary: ${res.vocabulary_id ?? 'N/A'} | Type: ${res.mapping_type}`,
|
|
8
13
|
`Target table: ${res.target_table ?? 'unknown'} | Alignment: ${res.domain_resource_alignment}`,
|
|
9
14
|
];
|
|
@@ -13,6 +18,15 @@ function formatResolution(res) {
|
|
|
13
18
|
if (res.mapping_quality) {
|
|
14
19
|
lines.push(`Quality: ${res.mapping_quality}`);
|
|
15
20
|
}
|
|
21
|
+
if (res.value_as_concept) {
|
|
22
|
+
lines.push(`Value concept: ${res.value_as_concept.concept_name} (${res.value_as_concept.concept_id}) → ${res.value_target_field ?? 'value_as_concept_id'}`);
|
|
23
|
+
}
|
|
24
|
+
if (res.concept_map_id) {
|
|
25
|
+
lines.push(`Via IG ConceptMap: ${res.concept_map_id}`);
|
|
26
|
+
}
|
|
27
|
+
if (res.mapping_note) {
|
|
28
|
+
lines.push(`Note: ${res.mapping_note}`);
|
|
29
|
+
}
|
|
16
30
|
if (res.recommendations && res.recommendations.length > 0) {
|
|
17
31
|
lines.push(`Recommendations (${res.recommendations.length}):`);
|
|
18
32
|
for (const rec of res.recommendations.slice(0, 5)) {
|
|
@@ -50,6 +64,10 @@ export function registerFhirTools(server, client) {
|
|
|
50
64
|
.optional()
|
|
51
65
|
.default(false)
|
|
52
66
|
.describe('Include mapping quality signal (high/medium/low/manual_review)'),
|
|
67
|
+
on_unmapped: z
|
|
68
|
+
.enum(['error', 'sentinel'])
|
|
69
|
+
.optional()
|
|
70
|
+
.describe("Behavior when nothing resolves: 'error' (default, 404) or 'sentinel' (return a concept_id 0 record)"),
|
|
53
71
|
}, async (params, extra) => {
|
|
54
72
|
try {
|
|
55
73
|
const rc = resolveClient(extra, client);
|
|
@@ -68,6 +86,8 @@ export function registerFhirTools(server, client) {
|
|
|
68
86
|
body.include_recommendations = true;
|
|
69
87
|
if (params.include_quality)
|
|
70
88
|
body.include_quality = true;
|
|
89
|
+
if (params.on_unmapped)
|
|
90
|
+
body.on_unmapped = params.on_unmapped;
|
|
71
91
|
const response = await rc.post('/fhir/resolve', body, 'fhir_resolve');
|
|
72
92
|
const res = response.data?.resolution;
|
|
73
93
|
const text = res ? formatResolution(res) : 'Resolution failed — no data returned';
|
|
@@ -92,9 +112,13 @@ export function registerFhirTools(server, client) {
|
|
|
92
112
|
server.tool('fhir_resolve_codeable_concept', 'Resolve a FHIR CodeableConcept with multiple codings. Picks the best match per OHDSI vocabulary preference (SNOMED > RxNorm > LOINC > CVX > ICD-10). Falls back to the text field via semantic search if no coding resolves.', {
|
|
93
113
|
coding: z
|
|
94
114
|
.array(z.object({
|
|
95
|
-
system: z.string().describe('FHIR code system URI'),
|
|
96
|
-
code: z.string().describe('Code value'),
|
|
115
|
+
system: z.string().trim().min(1).describe('FHIR code system URI'),
|
|
116
|
+
code: z.string().trim().min(1).describe('Code value'),
|
|
97
117
|
display: z.string().optional().describe('Display text'),
|
|
118
|
+
user_selected: z
|
|
119
|
+
.boolean()
|
|
120
|
+
.optional()
|
|
121
|
+
.describe('FHIR Coding.userSelected — wins over vocabulary preference when set'),
|
|
98
122
|
}))
|
|
99
123
|
.min(1)
|
|
100
124
|
.max(20)
|
|
@@ -106,6 +130,10 @@ export function registerFhirTools(server, client) {
|
|
|
106
130
|
resource_type: z.string().optional().describe('FHIR resource type'),
|
|
107
131
|
include_recommendations: z.boolean().optional().default(false),
|
|
108
132
|
include_quality: z.boolean().optional().default(false),
|
|
133
|
+
on_unmapped: z
|
|
134
|
+
.enum(['error', 'sentinel'])
|
|
135
|
+
.optional()
|
|
136
|
+
.describe("Behavior when nothing resolves: 'error' (default, 404) or 'sentinel' (concept_id 0 record)"),
|
|
109
137
|
}, async (params, extra) => {
|
|
110
138
|
try {
|
|
111
139
|
const rc = resolveClient(extra, client);
|
|
@@ -118,6 +146,8 @@ export function registerFhirTools(server, client) {
|
|
|
118
146
|
body.include_recommendations = true;
|
|
119
147
|
if (params.include_quality)
|
|
120
148
|
body.include_quality = true;
|
|
149
|
+
if (params.on_unmapped)
|
|
150
|
+
body.on_unmapped = params.on_unmapped;
|
|
121
151
|
const response = await rc.post('/fhir/resolve/codeable-concept', body, 'fhir_resolve_codeable_concept');
|
|
122
152
|
const best = response.data?.best_match?.resolution;
|
|
123
153
|
const altCount = response.data?.alternatives?.length ?? 0;
|
package/dist/tools/fhir.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fhir.js","sourceRoot":"","sources":["../../src/tools/fhir.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"fhir.js","sourceRoot":"","sources":["../../src/tools/fhir.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omophub/omophub-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"mcpName": "io.github.OMOPHub/omophub-mcp",
|
|
5
5
|
"description": "MCP server for OHDSI OMOP standardized medical vocabularies - search, lookup, map, and navigate concepts via AI agents",
|
|
6
6
|
"type": "module",
|