-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathai.html
More file actions
360 lines (345 loc) · 20.9 KB
/
Copy pathai.html
File metadata and controls
360 lines (345 loc) · 20.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>AI assistance & legacy migration — MessageFoundry</title>
<meta name="description" content="AI is optional — the MessageFoundry engine needs no AI and never sends message traffic to a model; the VS Code assistant uses your own model for feed code.">
<link rel="canonical" href="https://messagefoundry.org/ai.html">
<link rel="icon" href="/assets/img/favicon.svg" type="image/svg+xml">
<meta name="theme-color" content="#0b1220">
<meta property="og:type" content="website">
<meta property="og:site_name" content="MessageFoundry">
<meta property="og:title" content="AI assistance & legacy migration — MessageFoundry">
<meta property="og:description" content="AI is optional and never touches your messages. The engine needs no AI to run. The VS Code extension's @messagefoundry assistant runs on your own model (Copilot, Claude, …) to help write the Python that drives feeds — code-only, governed by a central policy.">
<meta property="og:url" content="https://messagefoundry.org/ai.html">
<meta property="og:image" content="https://messagefoundry.org/assets/img/og.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:type" content="image/png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="https://messagefoundry.org/assets/img/og.png">
<link rel="stylesheet" href="/assets/css/styles.css">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"@id": "https://messagefoundry.org/#software",
"name": "MessageFoundry",
"applicationCategory": "Healthcare interface engine",
"applicationSubCategory": "HL7 interface engine",
"operatingSystem": "Windows, Linux, macOS",
"url": "https://messagefoundry.org/",
"downloadUrl": "https://pypi.org/project/messagefoundry/",
"license": "https://www.gnu.org/licenses/agpl-3.0.html",
"isAccessibleForFree": true,
"offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" },
"publisher": { "@id": "https://messagefoundry.org/#org" }
}
</script>
</head>
<body>
<a class="skip-link" href="#main">Skip to content</a>
<div class="eabar" role="region" aria-label="Project status">
<div class="container">
<p><strong>Early Access · beta.</strong> We're building toward 1.0 — and we want people involved now, while it can still be shaped. <a href="/status.html">Where the project stands →</a></p>
</div>
</div>
<header class="site-header">
<div class="container header-inner">
<a class="brand" href="/" aria-label="MessageFoundry home">
<img class="brand-mark" src="/assets/img/logo.svg" alt="" width="28" height="28">
<span class="brand-name">Message<span class="brand-accent">Foundry</span><span class="brand-tm">™</span></span>
</a>
<button class="nav-toggle" aria-expanded="false" aria-controls="site-nav" aria-label="Toggle navigation"><span></span><span></span><span></span></button>
<nav class="site-nav" id="site-nav">
<div class="nav-group">
<button type="button" class="nav-group__btn" aria-expanded="false" aria-haspopup="true" aria-controls="nav-product">Product</button>
<div class="nav-group__menu" id="nav-product">
<a href="/overview.html">Overview</a>
<a href="/features.html">Features</a>
<a href="/features-table.html">Feature list</a>
<a href="/architecture.html">Architecture</a>
<a href="/reliability.html">Reliability (CI)</a>
<a href="/tools.html">Tools</a>
<a href="/editor.html">Editor</a>
<a href="/console.html">Console</a>
<a href="/ai.html" class="active" aria-current="page">AI assist</a>
</div>
</div>
<a href="/security.html">Security</a>
<a href="/comparison.html">Comparison</a>
<div class="nav-group">
<button type="button" class="nav-group__btn" aria-expanded="false" aria-haspopup="true" aria-controls="nav-getstarted">Get started</button>
<div class="nav-group__menu" id="nav-getstarted">
<a href="/getting-started.html">Quickstart</a>
<a href="/guides/">Guides</a>
<a href="/documents.html">Documents</a>
</div>
</div>
<div class="nav-group">
<button type="button" class="nav-group__btn" aria-expanded="false" aria-haspopup="true" aria-controls="nav-company">About Us</button>
<div class="nav-group__menu" id="nav-company">
<a href="/about.html">About</a>
<a href="/status.html">Project status</a>
<a href="/licensing.html">Licensing</a>
<a href="/contact.html">Contact</a>
<a href="/sponsor.html">Sponsor</a>
</div>
</div>
<a class="btn btn-ghost" href="/pypi.html">PyPI<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3l8 4.5l0 9l-8 4.5l-8 -4.5l0 -9l8 -4.5"/><path d="M12 12l8 -4.5"/><path d="M12 12l0 9"/><path d="M12 12l-8 -4.5"/><path d="M16 5.25l-8 4.5"/></svg></a>
<a class="btn btn-ghost" href="https://github.com/MEFORORG/MessageFoundry" target="_blank" rel="noopener">GitHub ↗</a>
</nav>
</div>
</header>
<main id="main">
<!-- hero -->
<section class="section section--dark section--tight">
<div class="container center">
<span class="eyebrow">Optional AI assistance</span>
<h1 style="max-width:26ch;margin-inline:auto">AI is optional — and it never touches your messages</h1>
<p class="lead">MessageFoundry is a modern, secure healthcare interface engine — powerful and fully capable on its own, with <b>no model anywhere in the message path</b>. Whether you use AI is <b>entirely your choice</b>: an optional aid at the keyboard that speeds up the work and never touches your messages.</p>
<div class="btn-row">
<a class="btn btn-primary" href="/getting-started.html">Get started</a>
<a class="btn btn-secondary" href="/security.html">How we handle PHI →</a>
</div>
</div>
</section>
<!-- where AI fits -->
<section class="section section--tight">
<div class="container" style="max-width:760px">
<p class="lead">AI shows up only at the keyboard, as an <b>optional</b> coding aid. It works through whatever model you've already set up in your editor — Copilot, Claude, and others — so MessageFoundry <b>bundles no AI vendor and ships no keys</b>. It helps write and edit the <b>Python that drives each feed</b>, with a developer reviewing every line.</p>
<p>We build MessageFoundry's own feeds this way too. Prefer to skip AI entirely? Guided wizards and plain Python do the same job.</p>
</div>
</section>
<!-- the essentials, up front -->
<section class="section section--alt section--tight">
<div class="container">
<h2 class="vh">What to know about AI assistance up front</h2>
<div class="grid grid-3">
<div class="card">
<h3>Optional, always</h3>
<p>Switch AI off entirely and nothing about how MessageFoundry runs changes. Guided wizards and plain Python build and operate every feed without it.</p>
</div>
<div class="card">
<h3>No AI in the message path</h3>
<p>The engine moves, routes, and transforms messages with ordinary code. No model runs a feed, sits between your systems, or is needed to start one.</p>
</div>
<div class="card">
<h3>Your messages never reach a model</h3>
<p>The engine never sends message traffic to an AI. The coding assistant only ever sees the Python you're editing — never a message body, never PHI.</p>
</div>
</div>
</div>
</section>
<!-- the assistant itself -->
<section class="section">
<div class="container grid grid-2" style="align-items:start">
<div>
<span class="eyebrow">In your editor</span>
<h2>A chat assistant that speaks Message<span class="wordmark-accent">Foundry</span></h2>
<p class="lead">The MessageFoundry VS Code extension is <b>optional</b>. Install it and you get a <code>@messagefoundry</code> chat participant — ask it about an interface in plain language, and because it's primed with MessageFoundry's real Router and Handler API, its answers and drafts use the actual <code>msg[...]</code> and <code>Send(...)</code> surface, not generic, almost-right guesses.</p>
<p>Each request goes straight from your editor to your provider — the <b>engine is never in the loop</b>.</p>
<p style="margin-top:8px"><a href="/editor.html" style="color:var(--accent-ink)">The chat is one part of the MessageFoundry editor — see the whole editor →</a></p>
</div>
<div class="card" style="height:auto;align-self:start">
<h3 style="margin-bottom:.6em">Slash commands, primed with the API</h3>
<ul class="feature-list">
<li><b><code>/explain</code></b> — walk through what a router or handler does, in plain language.</li>
<li><b><code>/transform</code></b> — draft a <code>@handler</code> transform from a description of the mapping you need.</li>
<li><b><code>/review</code></b> — get a review of the handler you're writing, against the real MessageFoundry API.</li>
</ul>
<p style="margin-top:14px;color:var(--muted);font-size:.95rem"><b>More commands are in progress.</b> Provider-agnostic by design — you bring the model; MessageFoundry holds no keys.</p>
</div>
</div>
</section>
<!-- why fast -->
<section class="section">
<div class="container grid grid-2" style="align-items:start">
<div>
<span class="eyebrow">Why it's fast</span>
<h2>Your logic becomes plain, reviewable Python</h2>
<p class="lead">Legacy engines lock integration logic inside proprietary scripts and GUIs — JavaScript channels, Tcl, ObjectScript, XML buried in a database. Porting it by hand means relearning each system and rebuilding interface by interface.</p>
<p>MessageFoundry's configuration <em>is</em> code, so the assistant can do the mechanical translation for you: paste a legacy channel or open its export, and it drafts the matching <code>inbound</code> / <code>outbound</code> Connections, a <code>@router</code>, and the <code>@handler</code> transforms in Python. You stay in control — every line lands as a diff you read, adjust, and approve.</p>
</div>
<div class="card">
<h3 style="margin-bottom:.4em">What the assistant can draft for you</h3>
<p style="margin:0 0 .9em;color:var(--muted);font-size:.95rem">Point it at one legacy channel and it writes a first-pass version of each piece in Python — yours to read, adjust, and approve before anything runs:</p>
<ul class="feature-list">
<li><b>Connections</b> — MLLP, TCP, X12/EDI, HTTP/REST, SOAP, FHIR REST, database, and file endpoints (local and SFTP/FTP/FTPS) mapped from your existing source/destination config.</li>
<li><b>Routing</b> — a <code>@router</code> that mirrors your channel's filter and routing rules.</li>
<li><b>Transforms</b> — <code>@handler</code> functions that reproduce field mappings and reshaping as pure Python.</li>
<li><b>Tests</b> — starting points for harness scenarios so you can prove parity before cutover.</li>
</ul>
</div>
</div>
</section>
<!-- legacy vs modern -->
<section class="section section--alt">
<div class="container">
<div class="center" style="margin-bottom:36px">
<span class="eyebrow">Legacy → modern</span>
<h2>The same interface, two eras of tooling</h2>
</div>
<div class="grid grid-2">
<div class="card">
<h3>The legacy way</h3>
<ul class="feature-list" style="margin-top:12px">
<li>Logic locked in a proprietary language (JavaScript, Tcl, ObjectScript) and a vendor GUI.</li>
<li>Configuration exported as XML or held in a database — hard to diff or review.</li>
<li>Migration is manual re-platforming, channel by channel, by scarce specialists.</li>
<li>Testing and promotion live in separate, proprietary tooling.</li>
</ul>
</div>
<div class="card">
<h3>The Message<span class="wordmark-accent">Foundry</span> way</h3>
<ul class="feature-list" style="margin-top:12px">
<li>Logic is plain Python in <em>your</em> git repository — read it, diff it, own it.</li>
<li>The AI assistant drafts that Python <em>from</em> your legacy logic, in your editor.</li>
<li>Review as a pull request; dry-run in the included test harness on synthetic data.</li>
<li>Stage → Promote to a running engine — no separate platform to learn.</li>
</ul>
</div>
</div>
</div>
</section>
<!-- workflow -->
<section class="section">
<div class="container" style="max-width:860px">
<div class="center" style="margin-bottom:34px">
<span class="eyebrow">The migration loop</span>
<h2>From legacy channel to running route</h2>
</div>
<div class="steps">
<div class="step">
<h3>Point the assistant at your legacy logic</h3>
<p>Open or paste an existing channel — a Mirth transformer, a Cloverleaf Tcl proc, a Rhapsody filter. That's source code, so it stays within the assistant's code-only scope.</p>
</div>
<div class="step">
<h3>It drafts the Message<span class="wordmark-accent">Foundry</span> equivalent</h3>
<p>You get Python Connections, a Router, and Handlers that mirror the original's routing, filtering, and field mapping — wired by name, ready to read.</p>
</div>
<div class="step">
<h3>Review it like any code change</h3>
<p>The draft lands as a diff in your editor and your pull request. Adjust, comment, and approve — the migration is now a normal review, not a black box.</p>
</div>
<div class="step">
<h3>Prove parity in the test harness</h3>
<p>Dry-run synthetic, PHI-free messages through the new route and compare before/after. The headless scenario runner keeps the check green in CI.</p>
</div>
<div class="step">
<h3>Stage → Promote, then repeat in parallel</h3>
<p>Promote the verified route to a running engine. Because each interface is independent code, a team can migrate many channels at once instead of serially.</p>
</div>
</div>
</div>
</section>
<!-- governance -->
<section class="section section--dark">
<div class="container">
<div class="center" style="margin-bottom:36px">
<span class="eyebrow">Governed & PHI-safe</span>
<h2>PHI-safe by construction — never your messages</h2>
<p class="lead center" style="max-width:74ch;margin-inline:auto">Safety is enforced in the code path, not left to a policy promise. The assistant only ever sees your code and the <em>names</em> in your config graph (connections, routers, handlers) — never a message body, never patient data — whatever model or provider sits behind it. On top of that, whoever runs the install sets one central policy that every workstation honors.</p>
</div>
<div class="grid grid-2">
<div class="card">
<h3>Code-only, by construction</h3>
<ul class="feature-list">
<li><b>Only code, never messages</b> — the assistant sends your code plus the config-graph names, and nothing else. <b>No message bodies, no patient data</b>, regardless of the model or provider behind it.</li>
<li><b>Bounded context</b> — what it sends is capped (default 8,000 characters, tunable), and any truncation is line-aligned and clearly marked.</li>
<li><b>On-prem, localhost-first</b> — the engine binds to <code>127.0.0.1</code> and requires auth; nothing leaves the workstation through the assistant.</li>
</ul>
</div>
<div class="card">
<h3>Your model, centrally governed</h3>
<ul class="feature-list">
<li><b>Your model, your agreement</b> — bring whatever you've set up in VS Code (e.g. GitHub Copilot under your own HIPAA BAA). MessageFoundry bundles no model and holds no keys.</li>
<li><b>Hard kill-switch</b> — ops/admin sets the policy per install; a central <code>off</code> is honored on every workstation and can't be overridden locally.</li>
<li><b>RBAC-gated</b> — an <code>ai:assist</code> permission controls who may use it, deny-by-default like the rest of the engine.</li>
<li><b>Fails safe</b> — the editor checks the policy before every request and disables the assistant rather than guess.</li>
</ul>
</div>
</div>
</div>
</section>
<section class="section section--tight">
<div class="container">
<div class="callout">
<p><strong>Migrating doesn't expose patients.</strong> Channel logic is code, and code is all the assistant sends. Your historical messages and live PHI never go to a model during a migration — the work happens entirely on the integration logic.</p>
</div>
</div>
</section>
<!-- cta -->
<section class="section">
<div class="container">
<div class="cta-band">
<h2>Bring your interfaces into the modern era</h2>
<p class="lead center" style="color:var(--muted-dk)">Open, Python, and AI-assisted — migrate off a legacy engine one interface at a time, without a big-bang re-platforming project.</p>
<div class="btn-row center">
<a class="btn btn-primary" href="/getting-started.html">Get started</a>
<a class="btn btn-ghost" href="/comparison.html">Compare the engines →</a>
</div>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container">
<div class="footer-grid">
<div class="footer-brand">
<a class="brand" href="/" aria-label="MessageFoundry home">
<img class="brand-mark" src="/assets/img/logo.svg" alt="" width="28" height="28">
<span class="brand-name">Message<span class="brand-accent">Foundry</span><span class="brand-tm">™</span></span>
</a>
<p class="footer-tagline"><b>More</b> Than an HL7 Interface Engine</p>
<p>Open-source healthcare interface engine — secure by default, built to recognized standards, connecting a wide range of protocols and message types.</p>
<div class="badge-row" style="margin-top:16px">
<span class="badge">Open source</span>
<span class="badge">No lock-in</span>
<span class="badge">Self-hosted</span>
</div>
</div>
<div class="footer-col">
<h4>Product</h4>
<a href="/overview.html">Overview</a>
<a href="/features.html">Features</a>
<a href="/architecture.html">Architecture</a>
<a href="/reliability.html">Reliability</a>
<a href="/dicom.html">DICOM</a>
<a href="/security.html">Security & PHI</a>
<a href="/documents.html">Documents</a>
</div>
<div class="footer-col">
<h4>Tools</h4>
<a href="/tools.html">Tools</a>
<a href="/editor.html">Editor</a>
<a href="/console.html">Console</a>
<a href="/ai.html">AI assist</a>
</div>
<div class="footer-col">
<h4>Get started</h4>
<a href="/getting-started.html">Quickstart</a>
<a href="/guides/">Guides</a>
<a href="/comparison.html">Comparison</a>
</div>
<div class="footer-col">
<h4>Project</h4>
<a href="/status.html">Project status</a>
<a href="https://github.com/MEFORORG/MessageFoundry" target="_blank" rel="noopener">GitHub</a>
<a href="https://github.com/MEFORORG/MessageFoundry/issues" target="_blank" rel="noopener">Issues</a>
<a href="/contact.html">Contact</a>
<a href="/licensing.html">License</a>
<a href="/about.html">About</a>
<a href="/sponsor.html">Sponsor</a>
</div>
</div>
<div class="footer-bottom">
<span>© 2026 MEFOR-ORG, a non-profit — this website and its content, all rights reserved. The MessageFoundry engine is separately open source, licensed under AGPL-3.0-or-later.</span>
<span>MessageFoundry and the MessageFoundry word mark are trademarks of MEFOR-ORG. Mirth Connect, Cloverleaf, Rhapsody, Corepoint, and Ensemble are trademarks of their respective owners; MessageFoundry is independent and unaffiliated.</span>
</div>
</div>
</footer>
<script src="/assets/js/nav.js" defer></script>
</body>
</html>