@claude-flow/plugin-healthcare-clinical 3.0.0-alpha.1
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 +280 -0
- package/dist/bridges/gnn-bridge.d.ts +70 -0
- package/dist/bridges/gnn-bridge.d.ts.map +1 -0
- package/dist/bridges/gnn-bridge.js +534 -0
- package/dist/bridges/gnn-bridge.js.map +1 -0
- package/dist/bridges/hnsw-bridge.d.ts +98 -0
- package/dist/bridges/hnsw-bridge.d.ts.map +1 -0
- package/dist/bridges/hnsw-bridge.js +390 -0
- package/dist/bridges/hnsw-bridge.js.map +1 -0
- package/dist/bridges/index.d.ts +8 -0
- package/dist/bridges/index.d.ts.map +1 -0
- package/dist/bridges/index.js +8 -0
- package/dist/bridges/index.js.map +1 -0
- package/dist/index.d.ts +95 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +154 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-tools.d.ts +22 -0
- package/dist/mcp-tools.d.ts.map +1 -0
- package/dist/mcp-tools.js +525 -0
- package/dist/mcp-tools.js.map +1 -0
- package/dist/types.d.ts +638 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +166 -0
- package/dist/types.js.map +1 -0
- package/package.json +103 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Healthcare Clinical Decision Support Plugin
|
|
3
|
+
*
|
|
4
|
+
* A HIPAA-compliant clinical decision support plugin that combines
|
|
5
|
+
* ultra-fast vector search for medical literature retrieval with
|
|
6
|
+
* graph neural networks for patient pathway analysis.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Patient similarity search using HNSW (150x faster)
|
|
10
|
+
* - Drug interaction detection using GNN
|
|
11
|
+
* - Clinical pathway recommendations
|
|
12
|
+
* - Medical literature semantic search
|
|
13
|
+
* - Ontology navigation (ICD-10, SNOMED-CT, LOINC, RxNorm)
|
|
14
|
+
*
|
|
15
|
+
* HIPAA Compliance:
|
|
16
|
+
* - All patient data processed locally in WASM sandbox
|
|
17
|
+
* - No PHI transmitted externally
|
|
18
|
+
* - Complete audit logging
|
|
19
|
+
* - Role-based access control
|
|
20
|
+
*
|
|
21
|
+
* @packageDocumentation
|
|
22
|
+
* @module @claude-flow/plugin-healthcare-clinical
|
|
23
|
+
*/
|
|
24
|
+
// Export all types
|
|
25
|
+
export * from './types.js';
|
|
26
|
+
// Export MCP tools
|
|
27
|
+
export { healthcareTools, toolHandlers, getTool, getToolNames, patientSimilarityTool, drugInteractionsTool, clinicalPathwaysTool, literatureSearchTool, ontologyNavigateTool, } from './mcp-tools.js';
|
|
28
|
+
// Export bridges
|
|
29
|
+
export { HealthcareHNSWBridge, createHNSWBridge, PatientEmbeddingGenerator, } from './bridges/hnsw-bridge.js';
|
|
30
|
+
export { HealthcareGNNBridge, createGNNBridge, } from './bridges/gnn-bridge.js';
|
|
31
|
+
// Import for plugin definition
|
|
32
|
+
import { healthcareTools } from './mcp-tools.js';
|
|
33
|
+
import { HealthcareHNSWBridge } from './bridges/hnsw-bridge.js';
|
|
34
|
+
import { HealthcareGNNBridge } from './bridges/gnn-bridge.js';
|
|
35
|
+
import { DEFAULT_HEALTHCARE_CONFIG } from './types.js';
|
|
36
|
+
/**
|
|
37
|
+
* Plugin metadata
|
|
38
|
+
*/
|
|
39
|
+
export const pluginMetadata = {
|
|
40
|
+
name: '@claude-flow/plugin-healthcare-clinical',
|
|
41
|
+
version: '3.0.0-alpha.1',
|
|
42
|
+
description: 'HIPAA-compliant clinical decision support with patient similarity, drug interactions, and clinical pathways',
|
|
43
|
+
author: 'rUv',
|
|
44
|
+
license: 'MIT',
|
|
45
|
+
category: 'healthcare',
|
|
46
|
+
tags: ['healthcare', 'clinical', 'hipaa', 'fhir', 'patient-similarity', 'drug-interactions'],
|
|
47
|
+
wasmPackages: [
|
|
48
|
+
'micro-hnsw-wasm',
|
|
49
|
+
'ruvector-gnn-wasm',
|
|
50
|
+
'ruvector-hyperbolic-hnsw-wasm',
|
|
51
|
+
'ruvector-sparse-inference-wasm',
|
|
52
|
+
],
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Healthcare Clinical Plugin class
|
|
56
|
+
*/
|
|
57
|
+
export class HealthcareClinicalPlugin {
|
|
58
|
+
config;
|
|
59
|
+
logger;
|
|
60
|
+
bridge;
|
|
61
|
+
initialized = false;
|
|
62
|
+
constructor(config, logger) {
|
|
63
|
+
this.config = { ...DEFAULT_HEALTHCARE_CONFIG, ...config };
|
|
64
|
+
this.logger = logger ?? {
|
|
65
|
+
debug: (msg, meta) => console.debug(`[healthcare-plugin] ${msg}`, meta),
|
|
66
|
+
info: (msg, meta) => console.info(`[healthcare-plugin] ${msg}`, meta),
|
|
67
|
+
warn: (msg, meta) => console.warn(`[healthcare-plugin] ${msg}`, meta),
|
|
68
|
+
error: (msg, meta) => console.error(`[healthcare-plugin] ${msg}`, meta),
|
|
69
|
+
};
|
|
70
|
+
this.bridge = {
|
|
71
|
+
hnsw: undefined,
|
|
72
|
+
gnn: undefined,
|
|
73
|
+
initialized: false,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Initialize the plugin
|
|
78
|
+
*/
|
|
79
|
+
async initialize() {
|
|
80
|
+
if (this.initialized)
|
|
81
|
+
return;
|
|
82
|
+
this.logger.info('Initializing Healthcare Clinical Plugin');
|
|
83
|
+
try {
|
|
84
|
+
// Initialize HNSW bridge
|
|
85
|
+
const hnswBridge = new HealthcareHNSWBridge(this.config.hnsw, this.logger);
|
|
86
|
+
await hnswBridge.initialize();
|
|
87
|
+
this.bridge.hnsw = hnswBridge;
|
|
88
|
+
// Initialize GNN bridge
|
|
89
|
+
const gnnBridge = new HealthcareGNNBridge(this.config.gnn, this.logger);
|
|
90
|
+
await gnnBridge.initialize();
|
|
91
|
+
this.bridge.gnn = gnnBridge;
|
|
92
|
+
this.bridge.initialized = true;
|
|
93
|
+
this.initialized = true;
|
|
94
|
+
this.logger.info('Healthcare Clinical Plugin initialized successfully', {
|
|
95
|
+
hnswReady: hnswBridge.initialized,
|
|
96
|
+
gnnReady: gnnBridge.initialized,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
this.logger.error('Failed to initialize Healthcare Clinical Plugin', {
|
|
101
|
+
error: error instanceof Error ? error.message : String(error),
|
|
102
|
+
});
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get all MCP tools
|
|
108
|
+
*/
|
|
109
|
+
getTools() {
|
|
110
|
+
return healthcareTools;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get the bridge for tool execution
|
|
114
|
+
*/
|
|
115
|
+
getBridge() {
|
|
116
|
+
return this.bridge;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get plugin configuration
|
|
120
|
+
*/
|
|
121
|
+
getConfig() {
|
|
122
|
+
return this.config;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Cleanup resources
|
|
126
|
+
*/
|
|
127
|
+
async destroy() {
|
|
128
|
+
if (this.bridge.hnsw) {
|
|
129
|
+
this.bridge.hnsw.destroy();
|
|
130
|
+
}
|
|
131
|
+
if (this.bridge.gnn) {
|
|
132
|
+
this.bridge.gnn.destroy();
|
|
133
|
+
}
|
|
134
|
+
this.bridge.initialized = false;
|
|
135
|
+
this.initialized = false;
|
|
136
|
+
this.logger.info('Healthcare Clinical Plugin destroyed');
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Create a new Healthcare Clinical Plugin instance
|
|
141
|
+
*/
|
|
142
|
+
export function createHealthcarePlugin(config, logger) {
|
|
143
|
+
return new HealthcareClinicalPlugin(config, logger);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Default export for plugin loader
|
|
147
|
+
*/
|
|
148
|
+
export default {
|
|
149
|
+
metadata: pluginMetadata,
|
|
150
|
+
tools: healthcareTools,
|
|
151
|
+
createPlugin: createHealthcarePlugin,
|
|
152
|
+
HealthcareClinicalPlugin,
|
|
153
|
+
};
|
|
154
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Healthcare Clinical MCP Tools
|
|
3
|
+
*
|
|
4
|
+
* HIPAA-compliant clinical decision support tools including:
|
|
5
|
+
* - patient-similarity: Find similar patient cases
|
|
6
|
+
* - drug-interactions: Analyze drug-drug and drug-condition interactions
|
|
7
|
+
* - clinical-pathways: Recommend evidence-based treatment pathways
|
|
8
|
+
* - literature-search: Semantic search across medical literature
|
|
9
|
+
* - ontology-navigate: Navigate medical ontology hierarchies
|
|
10
|
+
*/
|
|
11
|
+
import type { MCPTool, MCPToolResult, ToolContext } from './types.js';
|
|
12
|
+
export declare const patientSimilarityTool: MCPTool;
|
|
13
|
+
export declare const drugInteractionsTool: MCPTool;
|
|
14
|
+
export declare const clinicalPathwaysTool: MCPTool;
|
|
15
|
+
export declare const literatureSearchTool: MCPTool;
|
|
16
|
+
export declare const ontologyNavigateTool: MCPTool;
|
|
17
|
+
export declare const healthcareTools: MCPTool[];
|
|
18
|
+
export declare const toolHandlers: Map<string, (input: Record<string, unknown>, context?: ToolContext) => Promise<MCPToolResult>>;
|
|
19
|
+
export declare function getTool(name: string): MCPTool | undefined;
|
|
20
|
+
export declare function getToolNames(): string[];
|
|
21
|
+
export default healthcareTools;
|
|
22
|
+
//# sourceMappingURL=mcp-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tools.d.ts","sourceRoot":"","sources":["../src/mcp-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,WAAW,EAOZ,MAAM,YAAY,CAAC;AA8IpB,eAAO,MAAM,qBAAqB,EAAE,OAqBnC,CAAC;AAqHF,eAAO,MAAM,oBAAoB,EAAE,OAkBlC,CAAC;AAgFF,eAAO,MAAM,oBAAoB,EAAE,OAkBlC,CAAC;AAsFF,eAAO,MAAM,oBAAoB,EAAE,OAoBlC,CAAC;AAuGF,eAAO,MAAM,oBAAoB,EAAE,OAmBlC,CAAC;AAMF,eAAO,MAAM,eAAe,EAAE,OAAO,EAMpC,CAAC;AAEF,eAAO,MAAM,YAAY,gGAMvB,CAAC;AAEH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEzD;AAED,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAEvC;AAED,eAAe,eAAe,CAAC"}
|