emuhealth 0.3.0 → 0.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.
Files changed (52) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_NOTICES.md +28 -0
  3. package/dist/api.js +18 -15
  4. package/dist/api.js.map +1 -1
  5. package/dist/{chunk-VCQ3UPC5.js → chunk-RNX62IMQ.js} +19 -16
  6. package/dist/chunk-RNX62IMQ.js.map +1 -0
  7. package/dist/{dist-YK2XJNH7.js → dist-4CPLP2NQ.js} +3 -1
  8. package/dist/dist-4CPLP2NQ.js.map +1 -0
  9. package/dist/{dist-ATXASBBA.js → dist-6OM56NLC.js} +3 -1
  10. package/dist/dist-6OM56NLC.js.map +1 -0
  11. package/dist/{dist-L3SNHIRB.js → dist-6TPEFTAK.js} +3 -1
  12. package/dist/dist-6TPEFTAK.js.map +1 -0
  13. package/dist/{dist-22OZW7MU.js → dist-AZA2TRAN.js} +3 -1
  14. package/dist/dist-AZA2TRAN.js.map +1 -0
  15. package/dist/{dist-EUMN2OAH.js → dist-DVBHDPLP.js} +3 -1
  16. package/dist/dist-DVBHDPLP.js.map +1 -0
  17. package/dist/{dist-KRJZAPPL.js → dist-DWUKLYZG.js} +3 -1
  18. package/dist/dist-DWUKLYZG.js.map +1 -0
  19. package/dist/dist-EPYBRSJC.js +4726 -0
  20. package/dist/dist-EPYBRSJC.js.map +1 -0
  21. package/dist/{dist-575EVZLI.js → dist-IJ7LRDHX.js} +3 -1
  22. package/dist/{dist-575EVZLI.js.map → dist-IJ7LRDHX.js.map} +1 -1
  23. package/dist/{dist-KAYD3L2O.js → dist-KQGIGONJ.js} +3 -1
  24. package/dist/{dist-KAYD3L2O.js.map → dist-KQGIGONJ.js.map} +1 -1
  25. package/dist/{dist-YMRASK5I.js → dist-QUEHZ2IC.js} +3 -1
  26. package/dist/dist-QUEHZ2IC.js.map +1 -0
  27. package/dist/{dist-M5TIXC2F.js → dist-RWIGUWMG.js} +3 -1
  28. package/dist/dist-RWIGUWMG.js.map +1 -0
  29. package/dist/{dist-ZGCIWJJM.js → dist-TOCHFEDO.js} +3 -1
  30. package/dist/dist-TOCHFEDO.js.map +1 -0
  31. package/dist/{dist-B4K5JXTS.js → dist-UFXXFP3R.js} +3 -1
  32. package/dist/dist-UFXXFP3R.js.map +1 -0
  33. package/dist/{dist-IMIDQ6CJ.js → dist-UKXOY2NR.js} +3 -1
  34. package/dist/dist-UKXOY2NR.js.map +1 -0
  35. package/dist/index.js +12 -4
  36. package/dist/index.js.map +1 -1
  37. package/dist/project-worker.js +1 -1
  38. package/package.json +6 -6
  39. package/dist/chunk-VCQ3UPC5.js.map +0 -1
  40. package/dist/dist-22OZW7MU.js.map +0 -1
  41. package/dist/dist-ATXASBBA.js.map +0 -1
  42. package/dist/dist-B4K5JXTS.js.map +0 -1
  43. package/dist/dist-EUMN2OAH.js.map +0 -1
  44. package/dist/dist-IMIDQ6CJ.js.map +0 -1
  45. package/dist/dist-KRJZAPPL.js.map +0 -1
  46. package/dist/dist-L3SNHIRB.js.map +0 -1
  47. package/dist/dist-M5TIXC2F.js.map +0 -1
  48. package/dist/dist-WLTGCLZF.js +0 -1531
  49. package/dist/dist-WLTGCLZF.js.map +0 -1
  50. package/dist/dist-YK2XJNH7.js.map +0 -1
  51. package/dist/dist-YMRASK5I.js.map +0 -1
  52. package/dist/dist-ZGCIWJJM.js.map +0 -1
package/README.md CHANGED
@@ -37,7 +37,7 @@ All services listen on IPv4 loopback (`127.0.0.1`) by default. No config file ne
37
37
 
38
38
  Health and life science services use a fixed range starting at `http://localhost:4100`. Each health service keeps its port no matter which other services run or how many upstream services exist.
39
39
 
40
- - **FHIR R4** on `http://localhost:4100` (create, read, update, JSON Patch, delete, versioning, `_history`, search, batch and transaction Bundles, and a CapabilityStatement at `/metadata`; SMART on FHIR is on the roadmap)
40
+ - **FHIR R4** on `http://localhost:4100` (create, read, update, JSON Patch, delete, versioning, `_history`, search, batch and transaction Bundles, and a CapabilityStatement at `/metadata`, `Patient/$everything`, Bulk Data `$export` with NDJSON output; starts with 5 generated synthetic patients; SMART App Launch with patient and practitioner pickers, an EHR launch simulator, PKCE, SMART Backend Services with `private_key_jwt`, and scope and patient enforcement for presented tokens; terminology fixtures with `CodeSystem/$lookup` and `$validate-code`; browse it at `/_inspector`)
41
41
 
42
42
  Stripe webhooks configured with a secret include a `Stripe-Signature` header signed over the timestamp and raw request body.
43
43
 
@@ -37,3 +37,31 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
37
37
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
38
38
  SOFTWARE.
39
39
  ```
40
+
41
+ ## Clinical terminology
42
+
43
+ The emuhealth synthetic data generator in
44
+ `packages/@emuhealth/fhir-core/src/generator.ts` uses a small number of codes from
45
+ the following code systems to make generated records realistic. No full code
46
+ system is redistributed.
47
+
48
+ ### LOINC
49
+
50
+ This material contains content from LOINC (https://loinc.org). LOINC is
51
+ copyright Regenstrief Institute, Inc. and the Logical Observation Identifiers
52
+ Names and Codes (LOINC) Committee and is available at no cost under the license
53
+ at https://loinc.org/license. LOINC® is a registered United States trademark of
54
+ Regenstrief Institute, Inc.
55
+
56
+ ### RxNorm
57
+
58
+ This product uses publicly available data from the U.S. National Library of
59
+ Medicine (NLM), National Institutes of Health, Department of Health and Human
60
+ Services; NLM is not responsible for the product and does not endorse or
61
+ recommend this or any other product.
62
+
63
+ ### ICD-10-CM and CVX
64
+
65
+ ICD-10-CM codes are published by the National Center for Health Statistics and
66
+ CVX codes by the Centers for Disease Control and Prevention. Both are U.S.
67
+ government works in the public domain.
package/dist/api.js CHANGED
@@ -1158,6 +1158,8 @@ body{
1158
1158
  .inspector-table tbody tr{transition:background .1s;}
1159
1159
  .inspector-table tbody tr:hover{background:#0a3300;}
1160
1160
  .inspector-empty{color:#1a8c00;text-align:center;padding:20px 0;font-size:.8125rem;}
1161
+ .inspector-section a{color:#33ff00;text-decoration:underline;text-decoration-color:#1a8c00;text-underline-offset:2px;}
1162
+ .inspector-section a:hover{text-decoration-color:#33ff00;}
1161
1163
 
1162
1164
  .checkout-layout{
1163
1165
  display:flex;min-height:calc(100vh - 42px);
@@ -1945,9 +1947,9 @@ var HEALTH_SERVICE_NAMES = HEALTH_SERVICE_NAME_LIST;
1945
1947
  var HEALTH_SERVICE_REGISTRY = {
1946
1948
  fhir: {
1947
1949
  label: "FHIR R4 server emulator",
1948
- endpoints: "create, read, vread, update (including create on update), JSON Patch, logical delete, _history, search with includes and chaining, batch and transaction Bundles, CapabilityStatement at /metadata, ETag and If-Match",
1950
+ endpoints: "create, read, vread, update (including create on update), JSON Patch, logical delete, _history, search with includes and chaining, batch and transaction Bundles, CapabilityStatement at /metadata, Patient/$everything, Bulk Data $export, SMART App Launch and Backend Services, ETag and If-Match, generated synthetic patients, terminology $lookup and $validate-code, inspector at /_inspector",
1949
1951
  async load() {
1950
- const mod = await import("./dist-WLTGCLZF.js");
1952
+ const mod = await import("./dist-EPYBRSJC.js");
1951
1953
  return { plugin: mod.fhirPlugin, seedFromConfig: mod.seedFromConfig };
1952
1954
  },
1953
1955
  defaultFallback() {
@@ -1955,6 +1957,7 @@ var HEALTH_SERVICE_REGISTRY = {
1955
1957
  },
1956
1958
  initConfig: {
1957
1959
  fhir: {
1960
+ generate: { patients: 5, seed: 1 },
1958
1961
  resources: [
1959
1962
  {
1960
1963
  resourceType: "Patient",
@@ -1998,7 +2001,7 @@ var SERVICE_REGISTRY = {
1998
2001
  label: "Vercel REST API emulator",
1999
2002
  endpoints: "projects, deployments, domains, env vars, users, teams, file uploads, protection bypass, blob storage",
2000
2003
  async load() {
2001
- const mod = await import("./dist-YK2XJNH7.js");
2004
+ const mod = await import("./dist-4CPLP2NQ.js");
2002
2005
  return { plugin: mod.vercelPlugin, seedFromConfig: mod.seedFromConfig };
2003
2006
  },
2004
2007
  defaultFallback(cfg) {
@@ -2025,7 +2028,7 @@ var SERVICE_REGISTRY = {
2025
2028
  label: "GitHub REST API emulator",
2026
2029
  endpoints: "users, repos, issues, PRs, comments, reviews, labels, milestones, branches, git data, orgs, teams, releases, webhooks, search, actions, checks, rate limit",
2027
2030
  async load() {
2028
- const mod = await import("./dist-M5TIXC2F.js");
2031
+ const mod = await import("./dist-RWIGUWMG.js");
2029
2032
  return {
2030
2033
  plugin: mod.githubPlugin,
2031
2034
  seedFromConfig: mod.seedFromConfig,
@@ -2089,7 +2092,7 @@ var SERVICE_REGISTRY = {
2089
2092
  label: "Google OAuth 2.0 / OpenID Connect + Gmail, Calendar, and Drive emulator",
2090
2093
  endpoints: "OAuth authorize, token exchange, userinfo, RS256 OIDC discovery and JWKS, token revocation, Gmail messages/drafts/threads/labels/history/settings, Calendar discovery/lists/events/freebusy, Drive files/uploads",
2091
2094
  async load() {
2092
- const mod = await import("./dist-575EVZLI.js");
2095
+ const mod = await import("./dist-IJ7LRDHX.js");
2093
2096
  return { plugin: mod.googlePlugin, seedFromConfig: mod.seedFromConfig };
2094
2097
  },
2095
2098
  defaultFallback(cfg) {
@@ -2171,7 +2174,7 @@ var SERVICE_REGISTRY = {
2171
2174
  label: "Slack API emulator",
2172
2175
  endpoints: "auth, chat, conversations, users, profiles, presence, files, pins, bookmarks, views, reactions, team, OAuth, incoming webhooks, inspector",
2173
2176
  async load() {
2174
- const mod = await import("./dist-IMIDQ6CJ.js");
2177
+ const mod = await import("./dist-UKXOY2NR.js");
2175
2178
  return { plugin: mod.slackPlugin, seedFromConfig: mod.seedFromConfig };
2176
2179
  },
2177
2180
  defaultFallback() {
@@ -2252,7 +2255,7 @@ var SERVICE_REGISTRY = {
2252
2255
  label: "Apple Sign In / OAuth emulator",
2253
2256
  endpoints: "OAuth authorize, token exchange, JWKS",
2254
2257
  async load() {
2255
- const mod = await import("./dist-L3SNHIRB.js");
2258
+ const mod = await import("./dist-6TPEFTAK.js");
2256
2259
  return { plugin: mod.applePlugin, seedFromConfig: mod.seedFromConfig };
2257
2260
  },
2258
2261
  defaultFallback(cfg) {
@@ -2277,7 +2280,7 @@ var SERVICE_REGISTRY = {
2277
2280
  label: "Microsoft Entra ID OAuth 2.0 / OpenID Connect emulator",
2278
2281
  endpoints: "OAuth authorize, token exchange, userinfo, OIDC discovery, Graph /me, logout, token revocation",
2279
2282
  async load() {
2280
- const mod = await import("./dist-ZGCIWJJM.js");
2283
+ const mod = await import("./dist-TOCHFEDO.js");
2281
2284
  return { plugin: mod.microsoftPlugin, seedFromConfig: mod.seedFromConfig };
2282
2285
  },
2283
2286
  defaultFallback(cfg) {
@@ -2302,7 +2305,7 @@ var SERVICE_REGISTRY = {
2302
2305
  label: "Okta OAuth 2.0 / OpenID Connect + management API emulator",
2303
2306
  endpoints: "OIDC discovery, JWKS, OAuth authorize/token/userinfo/introspect/revoke/logout, users, groups, apps, authorization servers",
2304
2307
  async load() {
2305
- const mod = await import("./dist-EUMN2OAH.js");
2308
+ const mod = await import("./dist-DVBHDPLP.js");
2306
2309
  return { plugin: mod.oktaPlugin, seedFromConfig: mod.seedFromConfig };
2307
2310
  },
2308
2311
  defaultFallback(cfg) {
@@ -2330,7 +2333,7 @@ var SERVICE_REGISTRY = {
2330
2333
  label: "AWS cloud service emulator",
2331
2334
  endpoints: "S3 (buckets, objects), SQS (queues, messages), Cognito (User Pools, OAuth, JWTs, Identity Pools), IAM (users, roles, access keys), STS (assume role, caller identity)",
2332
2335
  async load() {
2333
- const mod = await import("./dist-22OZW7MU.js");
2336
+ const mod = await import("./dist-AZA2TRAN.js");
2334
2337
  return { plugin: mod.awsPlugin, seedFromConfig: mod.seedFromConfig };
2335
2338
  },
2336
2339
  defaultFallback() {
@@ -2352,7 +2355,7 @@ var SERVICE_REGISTRY = {
2352
2355
  label: "Resend email API emulator",
2353
2356
  endpoints: "emails with idempotency, recipient restrictions, send attempts, domains, contacts, API keys, inbox UI",
2354
2357
  async load() {
2355
- const mod = await import("./dist-B4K5JXTS.js");
2358
+ const mod = await import("./dist-UFXXFP3R.js");
2356
2359
  return { plugin: mod.resendPlugin, seedFromConfig: mod.seedFromConfig };
2357
2360
  },
2358
2361
  defaultFallback() {
@@ -2369,7 +2372,7 @@ var SERVICE_REGISTRY = {
2369
2372
  label: "Stripe payments emulator",
2370
2373
  endpoints: "customers, payment methods, customer sessions, payment intents, charges, products, prices, checkout sessions, webhooks",
2371
2374
  async load() {
2372
- const mod = await import("./dist-KRJZAPPL.js");
2375
+ const mod = await import("./dist-DWUKLYZG.js");
2373
2376
  return { plugin: mod.stripePlugin, seedFromConfig: mod.seedFromConfig };
2374
2377
  },
2375
2378
  defaultFallback() {
@@ -2406,7 +2409,7 @@ var SERVICE_REGISTRY = {
2406
2409
  label: "Clerk authentication and user management emulator",
2407
2410
  endpoints: "OIDC discovery, JWKS, OAuth authorize/token/userinfo, users, email addresses, organizations, memberships, invitations, sessions",
2408
2411
  async load() {
2409
- const mod = await import("./dist-YMRASK5I.js");
2412
+ const mod = await import("./dist-QUEHZ2IC.js");
2410
2413
  return { plugin: mod.clerkPlugin, seedFromConfig: mod.seedFromConfig };
2411
2414
  },
2412
2415
  defaultFallback(cfg) {
@@ -2445,7 +2448,7 @@ var SERVICE_REGISTRY = {
2445
2448
  label: "Linear GraphQL API emulator",
2446
2449
  endpoints: "GraphQL, OAuth, issues, teams, users, workflow states, comments, labels, projects, cycles, webhooks, agents, inspector",
2447
2450
  async load() {
2448
- const mod = await import("./dist-ATXASBBA.js");
2451
+ const mod = await import("./dist-6OM56NLC.js");
2449
2452
  return { plugin: mod.linearPlugin, seedFromConfig: mod.seedFromConfig };
2450
2453
  },
2451
2454
  defaultFallback(cfg) {
@@ -2510,7 +2513,7 @@ var SERVICE_REGISTRY = {
2510
2513
  label: "Twilio API emulator",
2511
2514
  endpoints: "accounts, API keys, phone numbers, Programmable Messaging, Messaging Services, Verify, Voice, webhooks, simulator, inspector",
2512
2515
  async load() {
2513
- const mod = await import("./dist-KAYD3L2O.js");
2516
+ const mod = await import("./dist-KQGIGONJ.js");
2514
2517
  return { plugin: mod.twilioPlugin, seedFromConfig: mod.seedFromConfig };
2515
2518
  },
2516
2519
  defaultFallback(cfg) {