@medplum/definitions 5.1.22 → 5.1.24

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.
@@ -1,2 +1,2 @@
1
- "use strict";var a=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var D=(e,r)=>{for(var o in r)a(e,o,{get:r[o],enumerable:!0})},E=(e,r,o,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of p(r))!l.call(e,n)&&n!==o&&a(e,n,{get:()=>r[n],enumerable:!(i=h(r,n))||i.enumerable});return e};var P=e=>E(a({},"__esModule",{value:!0}),e);var S={};D(S,{SEARCH_PARAMETER_BUNDLE_FILES:()=>y,getDataDir:()=>d,readJson:()=>_});module.exports=P(S);var c=require("fs"),m=require("node:fs"),t=require("node:path"),u=require("node:url"),f={};function _(e){let r=(0,t.resolve)(d(),e);return JSON.parse((0,c.readFileSync)(r,"utf8"))}var s;function d(){if(s)return s;let e=g(),r=["./","../","./cjs/","./esm/"];for(let o of r){let i=(0,t.resolve)(e,o),n=(0,t.resolve)(i,"fhir");if((0,m.existsSync)(n))return s=i,i}throw new Error("No data directory found")}function g(){if(typeof __dirname<"u")return(0,t.resolve)(__dirname);if(f.url)return(0,t.resolve)((0,t.dirname)((0,u.fileURLToPath)(f.url)));throw new Error("No data directory found")}var y=["fhir/r4/search-parameters.json","fhir/r4/search-parameters-medplum.json","fhir/r4/search-parameters-uscore.json"];0&&(module.exports={SEARCH_PARAMETER_BUNDLE_FILES,getDataDir,readJson});
1
+ "use strict";var a=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var j=(e,r)=>{for(var t in r)a(e,t,{get:r[t],enumerable:!0})},T=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of E(r))!g.call(e,o)&&o!==t&&a(e,o,{get:()=>r[o],enumerable:!(s=y(r,o))||s.enumerable});return e};var _=e=>T(a({},"__esModule",{value:!0}),e);var L={};j(L,{SEARCH_PARAMETER_BUNDLE_FILES:()=>P,STRUCTURE_DEFINITION_BUNDLE_FILES:()=>x,TERMINOLOGY_BUNDLE_FILES:()=>S,getDataDir:()=>u,getDefinitionResource:()=>v,readJson:()=>h,readJsonAsync:()=>R});module.exports=_(L);var m=require("fs"),l=require("node:fs"),d=require("node:fs/promises"),n=require("node:path"),p=require("node:url"),c={},D=Object.freeze([]);function h(e){let r=(0,n.resolve)(u(),e);return JSON.parse((0,m.readFileSync)(r,"utf8"))}async function R(e){let r=(0,n.resolve)(u(),e),t=await(0,d.readFile)(r,"utf8");return JSON.parse(t)}var f;function u(){if(f)return f;let e=N(),r=["./","../","./cjs/","./esm/"];for(let t of r){let s=(0,n.resolve)(e,t),o=(0,n.resolve)(s,"fhir");if((0,l.existsSync)(o))return f=s,s}throw new Error("No data directory found")}function N(){if(typeof __dirname<"u")return(0,n.resolve)(__dirname);if(c.url)return(0,n.resolve)((0,n.dirname)((0,p.fileURLToPath)(c.url)));throw new Error("No data directory found")}var P=["fhir/r4/search-parameters.json","fhir/r4/search-parameters-medplum.json","fhir/r4/search-parameters-uscore.json"],x=["fhir/r4/profiles-types.json","fhir/r4/profiles-resources.json","fhir/r4/profiles-medplum.json","fhir/r4/profiles-others.json"],S=["fhir/r4/v2-tables.json","fhir/r4/v3-codesystems.json","fhir/r4/valuesets.json","fhir/r4/valuesets-medplum.json","fhir/r4/valuesets-medplum-generated.json"];function v(e,r,t){let s=h(e);for(let o of s.entry??D){let i=o.resource;if(i?.resourceType===r&&i.url===t)return i}throw new Error(`Missing definition resource: ${r}?url=${t}`)}0&&(module.exports={SEARCH_PARAMETER_BUNDLE_FILES,STRUCTURE_DEFINITION_BUNDLE_FILES,TERMINOLOGY_BUNDLE_FILES,getDataDir,getDefinitionResource,readJson,readJsonAsync});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors\n// SPDX-License-Identifier: Apache-2.0\nimport { readFileSync } from 'fs';\nimport { existsSync } from 'node:fs';\nimport { dirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nexport function readJson(filename: string): any {\n const filenamePath = resolve(getDataDir(), filename);\n return JSON.parse(readFileSync(filenamePath, 'utf8'));\n}\n\nlet cachedDataDir: string | undefined = undefined;\n\nexport function getDataDir(): string {\n if (cachedDataDir) {\n return cachedDataDir;\n }\n\n const currentDir = getCurrentDir();\n\n // Need to handle the following cases:\n // v4 and earlier: `index.js` in `dist/`, data in `dist/fhir/`\n // v5.0.0: data in `index.js` in `dist/cjs/` and `dist/esm/`, data in `/dist/cjs/fhir/` and `/dist/esm/fhir/`\n // v5.0.1 and after: `index.js` in `dist/cjs/` and `dist/esm/`, data back in `/dist/fhir/`\n const relativePaths = ['./', '../', './cjs/', './esm/'];\n for (const relativePath of relativePaths) {\n const fullPath = resolve(currentDir, relativePath);\n const fhirPath = resolve(fullPath, 'fhir');\n if (existsSync(fhirPath)) {\n cachedDataDir = fullPath;\n return fullPath;\n }\n }\n throw new Error('No data directory found');\n}\n\nfunction getCurrentDir(): string {\n if (typeof __dirname !== 'undefined') {\n return resolve(__dirname);\n } else if (import.meta.url) {\n return resolve(dirname(fileURLToPath(import.meta.url)));\n } else {\n throw new Error('No data directory found');\n }\n}\n\n/**\n * The list of all known search parameter definition bundle file paths relative to the\n * `@medplum/definitions` package. Typically used in conjunction with `readJson`.\n */\nexport const SEARCH_PARAMETER_BUNDLE_FILES = [\n 'fhir/r4/search-parameters.json',\n 'fhir/r4/search-parameters-medplum.json',\n 'fhir/r4/search-parameters-uscore.json',\n];\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mCAAAE,EAAA,eAAAC,EAAA,aAAAC,IAAA,eAAAC,EAAAL,GAEA,IAAAM,EAA6B,cAC7BC,EAA2B,mBAC3BC,EAAiC,qBACjCC,EAA8B,oBAL9BC,EAAA,GAOO,SAASN,EAASO,EAAuB,CAC9C,IAAMC,KAAe,WAAQT,EAAW,EAAGQ,CAAQ,EACnD,OAAO,KAAK,SAAM,gBAAaC,EAAc,MAAM,CAAC,CACtD,CAEA,IAAIC,EAEG,SAASV,GAAqB,CACnC,GAAIU,EACF,OAAOA,EAGT,IAAMC,EAAaC,EAAc,EAM3BC,EAAgB,CAAC,KAAM,MAAO,SAAU,QAAQ,EACtD,QAAWC,KAAgBD,EAAe,CACxC,IAAME,KAAW,WAAQJ,EAAYG,CAAY,EAC3CE,KAAW,WAAQD,EAAU,MAAM,EACzC,MAAI,cAAWC,CAAQ,EACrB,OAAAN,EAAgBK,EACTA,CAEX,CACA,MAAM,IAAI,MAAM,yBAAyB,CAC3C,CAEA,SAASH,GAAwB,CAC/B,GAAI,OAAO,UAAc,IACvB,SAAO,WAAQ,SAAS,EACnB,GAAIL,EAAY,IACrB,SAAO,cAAQ,cAAQ,iBAAcA,EAAY,GAAG,CAAC,CAAC,EAEtD,MAAM,IAAI,MAAM,yBAAyB,CAE7C,CAMO,IAAMR,EAAgC,CAC3C,iCACA,yCACA,uCACF",
6
- "names": ["index_exports", "__export", "SEARCH_PARAMETER_BUNDLE_FILES", "getDataDir", "readJson", "__toCommonJS", "import_fs", "import_node_fs", "import_node_path", "import_node_url", "import_meta", "filename", "filenamePath", "cachedDataDir", "currentDir", "getCurrentDir", "relativePaths", "relativePath", "fullPath", "fhirPath"]
4
+ "sourcesContent": ["// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors\n// SPDX-License-Identifier: Apache-2.0\nimport type { Bundle, Resource } from '@medplum/fhirtypes';\nimport { readFileSync } from 'fs';\nimport { existsSync } from 'node:fs';\nimport { readFile } from 'node:fs/promises';\nimport { dirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst EMPTY: readonly [] = Object.freeze([]);\n\nexport function readJson(filename: string): any {\n const filenamePath = resolve(getDataDir(), filename);\n return JSON.parse(readFileSync(filenamePath, 'utf8'));\n}\n\nexport async function readJsonAsync(filename: string): Promise<any> {\n const filenamePath = resolve(getDataDir(), filename);\n const data = await readFile(filenamePath, 'utf8');\n return JSON.parse(data);\n}\n\nlet cachedDataDir: string | undefined = undefined;\n\nexport function getDataDir(): string {\n if (cachedDataDir) {\n return cachedDataDir;\n }\n\n const currentDir = getCurrentDir();\n\n // Need to handle the following cases:\n // v4 and earlier: `index.js` in `dist/`, data in `dist/fhir/`\n // v5.0.0: data in `index.js` in `dist/cjs/` and `dist/esm/`, data in `/dist/cjs/fhir/` and `/dist/esm/fhir/`\n // v5.0.1 and after: `index.js` in `dist/cjs/` and `dist/esm/`, data back in `/dist/fhir/`\n const relativePaths = ['./', '../', './cjs/', './esm/'];\n for (const relativePath of relativePaths) {\n const fullPath = resolve(currentDir, relativePath);\n const fhirPath = resolve(fullPath, 'fhir');\n if (existsSync(fhirPath)) {\n cachedDataDir = fullPath;\n return fullPath;\n }\n }\n throw new Error('No data directory found');\n}\n\nfunction getCurrentDir(): string {\n if (typeof __dirname !== 'undefined') {\n return resolve(__dirname);\n } else if (import.meta.url) {\n return resolve(dirname(fileURLToPath(import.meta.url)));\n } else {\n throw new Error('No data directory found');\n }\n}\n\n/**\n * The list of all known search parameter definition bundle file paths relative to the\n * `@medplum/definitions` package. Typically used in conjunction with `readJson`.\n */\nexport const SEARCH_PARAMETER_BUNDLE_FILES = [\n 'fhir/r4/search-parameters.json',\n 'fhir/r4/search-parameters-medplum.json',\n 'fhir/r4/search-parameters-uscore.json',\n];\n\nexport const STRUCTURE_DEFINITION_BUNDLE_FILES = [\n 'fhir/r4/profiles-types.json',\n 'fhir/r4/profiles-resources.json',\n 'fhir/r4/profiles-medplum.json',\n 'fhir/r4/profiles-others.json',\n];\n\nexport const TERMINOLOGY_BUNDLE_FILES = [\n 'fhir/r4/v2-tables.json',\n 'fhir/r4/v3-codesystems.json',\n 'fhir/r4/valuesets.json',\n 'fhir/r4/valuesets-medplum.json',\n 'fhir/r4/valuesets-medplum-generated.json',\n];\n\nexport function getDefinitionResource<T extends Resource & { url?: string }>(\n file: string,\n resourceType: T['resourceType'],\n url: string\n): T {\n const bundle = readJson(file) as Bundle;\n for (const entry of bundle.entry ?? EMPTY) {\n const resource = entry.resource as Resource & { url: string };\n if (resource?.resourceType === resourceType && resource.url === url) {\n return resource as T;\n }\n }\n throw new Error(`Missing definition resource: ${resourceType}?url=${url}`);\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mCAAAE,EAAA,sCAAAC,EAAA,6BAAAC,EAAA,eAAAC,EAAA,0BAAAC,EAAA,aAAAC,EAAA,kBAAAC,IAAA,eAAAC,EAAAT,GAGA,IAAAU,EAA6B,cAC7BC,EAA2B,mBAC3BC,EAAyB,4BACzBC,EAAiC,qBACjCC,EAA8B,oBAP9BC,EAAA,GASMC,EAAqB,OAAO,OAAO,CAAC,CAAC,EAEpC,SAAST,EAASU,EAAuB,CAC9C,IAAMC,KAAe,WAAQb,EAAW,EAAGY,CAAQ,EACnD,OAAO,KAAK,SAAM,gBAAaC,EAAc,MAAM,CAAC,CACtD,CAEA,eAAsBV,EAAcS,EAAgC,CAClE,IAAMC,KAAe,WAAQb,EAAW,EAAGY,CAAQ,EAC7CE,EAAO,QAAM,YAASD,EAAc,MAAM,EAChD,OAAO,KAAK,MAAMC,CAAI,CACxB,CAEA,IAAIC,EAEG,SAASf,GAAqB,CACnC,GAAIe,EACF,OAAOA,EAGT,IAAMC,EAAaC,EAAc,EAM3BC,EAAgB,CAAC,KAAM,MAAO,SAAU,QAAQ,EACtD,QAAWC,KAAgBD,EAAe,CACxC,IAAME,KAAW,WAAQJ,EAAYG,CAAY,EAC3CE,KAAW,WAAQD,EAAU,MAAM,EACzC,MAAI,cAAWC,CAAQ,EACrB,OAAAN,EAAgBK,EACTA,CAEX,CACA,MAAM,IAAI,MAAM,yBAAyB,CAC3C,CAEA,SAASH,GAAwB,CAC/B,GAAI,OAAO,UAAc,IACvB,SAAO,WAAQ,SAAS,EACnB,GAAIP,EAAY,IACrB,SAAO,cAAQ,cAAQ,iBAAcA,EAAY,GAAG,CAAC,CAAC,EAEtD,MAAM,IAAI,MAAM,yBAAyB,CAE7C,CAMO,IAAMb,EAAgC,CAC3C,iCACA,yCACA,uCACF,EAEaC,EAAoC,CAC/C,8BACA,kCACA,gCACA,8BACF,EAEaC,EAA2B,CACtC,yBACA,8BACA,yBACA,iCACA,0CACF,EAEO,SAASE,EACdqB,EACAC,EACAC,EACG,CACH,IAAMC,EAASvB,EAASoB,CAAI,EAC5B,QAAWI,KAASD,EAAO,OAASd,EAAO,CACzC,IAAMgB,EAAWD,EAAM,SACvB,GAAIC,GAAU,eAAiBJ,GAAgBI,EAAS,MAAQH,EAC9D,OAAOG,CAEX,CACA,MAAM,IAAI,MAAM,gCAAgCJ,CAAY,QAAQC,CAAG,EAAE,CAC3E",
6
+ "names": ["index_exports", "__export", "SEARCH_PARAMETER_BUNDLE_FILES", "STRUCTURE_DEFINITION_BUNDLE_FILES", "TERMINOLOGY_BUNDLE_FILES", "getDataDir", "getDefinitionResource", "readJson", "readJsonAsync", "__toCommonJS", "import_fs", "import_node_fs", "import_promises", "import_node_path", "import_node_url", "import_meta", "EMPTY", "filename", "filenamePath", "data", "cachedDataDir", "currentDir", "getCurrentDir", "relativePaths", "relativePath", "fullPath", "fhirPath", "file", "resourceType", "url", "bundle", "entry", "resource"]
7
7
  }
@@ -1,11 +1,23 @@
1
+ import type { Resource } from '@medplum/fhirtypes';
2
+
1
3
  export declare function getDataDir(): string;
2
4
 
5
+ export declare function getDefinitionResource<T extends Resource & {
6
+ url?: string;
7
+ }>(file: string, resourceType: T['resourceType'], url: string): T;
8
+
3
9
  export declare function readJson(filename: string): any;
4
10
 
11
+ export declare function readJsonAsync(filename: string): Promise<any>;
12
+
5
13
  /**
6
14
  * The list of all known search parameter definition bundle file paths relative to the
7
15
  * `@medplum/definitions` package. Typically used in conjunction with `readJson`.
8
16
  */
9
17
  export declare const SEARCH_PARAMETER_BUNDLE_FILES: string[];
10
18
 
19
+ export declare const STRUCTURE_DEFINITION_BUNDLE_FILES: string[];
20
+
21
+ export declare const TERMINOLOGY_BUNDLE_FILES: string[];
22
+
11
23
  export { }
@@ -1,11 +1,23 @@
1
+ import type { Resource } from '@medplum/fhirtypes';
2
+
1
3
  export declare function getDataDir(): string;
2
4
 
5
+ export declare function getDefinitionResource<T extends Resource & {
6
+ url?: string;
7
+ }>(file: string, resourceType: T['resourceType'], url: string): T;
8
+
3
9
  export declare function readJson(filename: string): any;
4
10
 
11
+ export declare function readJsonAsync(filename: string): Promise<any>;
12
+
5
13
  /**
6
14
  * The list of all known search parameter definition bundle file paths relative to the
7
15
  * `@medplum/definitions` package. Typically used in conjunction with `readJson`.
8
16
  */
9
17
  export declare const SEARCH_PARAMETER_BUNDLE_FILES: string[];
10
18
 
19
+ export declare const STRUCTURE_DEFINITION_BUNDLE_FILES: string[];
20
+
21
+ export declare const TERMINOLOGY_BUNDLE_FILES: string[];
22
+
11
23
  export { }
@@ -1,2 +1,2 @@
1
- import{readFileSync as s}from"fs";import{existsSync as f}from"node:fs";import{dirname as c,resolve as r}from"node:path";import{fileURLToPath as m}from"node:url";function E(e){let t=r(u(),e);return JSON.parse(s(t,"utf8"))}var o;function u(){if(o)return o;let e=d(),t=["./","../","./cjs/","./esm/"];for(let i of t){let n=r(e,i),a=r(n,"fhir");if(f(a))return o=n,n}throw new Error("No data directory found")}function d(){if(typeof __dirname<"u")return r(__dirname);if(import.meta.url)return r(c(m(import.meta.url)));throw new Error("No data directory found")}var P=["fhir/r4/search-parameters.json","fhir/r4/search-parameters-medplum.json","fhir/r4/search-parameters-uscore.json"];export{P as SEARCH_PARAMETER_BUNDLE_FILES,u as getDataDir,E as readJson};
1
+ import{readFileSync as u}from"fs";import{existsSync as c}from"node:fs";import{readFile as m}from"node:fs/promises";import{dirname as l,resolve as o}from"node:path";import{fileURLToPath as d}from"node:url";var p=Object.freeze([]);function h(e){let r=o(f(),e);return JSON.parse(u(r,"utf8"))}async function D(e){let r=o(f(),e),t=await m(r,"utf8");return JSON.parse(t)}var a;function f(){if(a)return a;let e=y(),r=["./","../","./cjs/","./esm/"];for(let t of r){let n=o(e,t),s=o(n,"fhir");if(c(s))return a=n,n}throw new Error("No data directory found")}function y(){if(typeof __dirname<"u")return o(__dirname);if(import.meta.url)return o(l(d(import.meta.url)));throw new Error("No data directory found")}var R=["fhir/r4/search-parameters.json","fhir/r4/search-parameters-medplum.json","fhir/r4/search-parameters-uscore.json"],N=["fhir/r4/profiles-types.json","fhir/r4/profiles-resources.json","fhir/r4/profiles-medplum.json","fhir/r4/profiles-others.json"],P=["fhir/r4/v2-tables.json","fhir/r4/v3-codesystems.json","fhir/r4/valuesets.json","fhir/r4/valuesets-medplum.json","fhir/r4/valuesets-medplum-generated.json"];function x(e,r,t){let n=h(e);for(let s of n.entry??p){let i=s.resource;if(i?.resourceType===r&&i.url===t)return i}throw new Error(`Missing definition resource: ${r}?url=${t}`)}export{R as SEARCH_PARAMETER_BUNDLE_FILES,N as STRUCTURE_DEFINITION_BUNDLE_FILES,P as TERMINOLOGY_BUNDLE_FILES,f as getDataDir,x as getDefinitionResource,h as readJson,D as readJsonAsync};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors\n// SPDX-License-Identifier: Apache-2.0\nimport { readFileSync } from 'fs';\nimport { existsSync } from 'node:fs';\nimport { dirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nexport function readJson(filename: string): any {\n const filenamePath = resolve(getDataDir(), filename);\n return JSON.parse(readFileSync(filenamePath, 'utf8'));\n}\n\nlet cachedDataDir: string | undefined = undefined;\n\nexport function getDataDir(): string {\n if (cachedDataDir) {\n return cachedDataDir;\n }\n\n const currentDir = getCurrentDir();\n\n // Need to handle the following cases:\n // v4 and earlier: `index.js` in `dist/`, data in `dist/fhir/`\n // v5.0.0: data in `index.js` in `dist/cjs/` and `dist/esm/`, data in `/dist/cjs/fhir/` and `/dist/esm/fhir/`\n // v5.0.1 and after: `index.js` in `dist/cjs/` and `dist/esm/`, data back in `/dist/fhir/`\n const relativePaths = ['./', '../', './cjs/', './esm/'];\n for (const relativePath of relativePaths) {\n const fullPath = resolve(currentDir, relativePath);\n const fhirPath = resolve(fullPath, 'fhir');\n if (existsSync(fhirPath)) {\n cachedDataDir = fullPath;\n return fullPath;\n }\n }\n throw new Error('No data directory found');\n}\n\nfunction getCurrentDir(): string {\n if (typeof __dirname !== 'undefined') {\n return resolve(__dirname);\n } else if (import.meta.url) {\n return resolve(dirname(fileURLToPath(import.meta.url)));\n } else {\n throw new Error('No data directory found');\n }\n}\n\n/**\n * The list of all known search parameter definition bundle file paths relative to the\n * `@medplum/definitions` package. Typically used in conjunction with `readJson`.\n */\nexport const SEARCH_PARAMETER_BUNDLE_FILES = [\n 'fhir/r4/search-parameters.json',\n 'fhir/r4/search-parameters-medplum.json',\n 'fhir/r4/search-parameters-uscore.json',\n];\n"],
5
- "mappings": "AAEA,OAAS,gBAAAA,MAAoB,KAC7B,OAAS,cAAAC,MAAkB,UAC3B,OAAS,WAAAC,EAAS,WAAAC,MAAe,YACjC,OAAS,iBAAAC,MAAqB,WAEvB,SAASC,EAASC,EAAuB,CAC9C,IAAMC,EAAeJ,EAAQK,EAAW,EAAGF,CAAQ,EACnD,OAAO,KAAK,MAAMN,EAAaO,EAAc,MAAM,CAAC,CACtD,CAEA,IAAIE,EAEG,SAASD,GAAqB,CACnC,GAAIC,EACF,OAAOA,EAGT,IAAMC,EAAaC,EAAc,EAM3BC,EAAgB,CAAC,KAAM,MAAO,SAAU,QAAQ,EACtD,QAAWC,KAAgBD,EAAe,CACxC,IAAME,EAAWX,EAAQO,EAAYG,CAAY,EAC3CE,EAAWZ,EAAQW,EAAU,MAAM,EACzC,GAAIb,EAAWc,CAAQ,EACrB,OAAAN,EAAgBK,EACTA,CAEX,CACA,MAAM,IAAI,MAAM,yBAAyB,CAC3C,CAEA,SAASH,GAAwB,CAC/B,GAAI,OAAO,UAAc,IACvB,OAAOR,EAAQ,SAAS,EACnB,GAAI,YAAY,IACrB,OAAOA,EAAQD,EAAQE,EAAc,YAAY,GAAG,CAAC,CAAC,EAEtD,MAAM,IAAI,MAAM,yBAAyB,CAE7C,CAMO,IAAMY,EAAgC,CAC3C,iCACA,yCACA,uCACF",
6
- "names": ["readFileSync", "existsSync", "dirname", "resolve", "fileURLToPath", "readJson", "filename", "filenamePath", "getDataDir", "cachedDataDir", "currentDir", "getCurrentDir", "relativePaths", "relativePath", "fullPath", "fhirPath", "SEARCH_PARAMETER_BUNDLE_FILES"]
4
+ "sourcesContent": ["// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors\n// SPDX-License-Identifier: Apache-2.0\nimport type { Bundle, Resource } from '@medplum/fhirtypes';\nimport { readFileSync } from 'fs';\nimport { existsSync } from 'node:fs';\nimport { readFile } from 'node:fs/promises';\nimport { dirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst EMPTY: readonly [] = Object.freeze([]);\n\nexport function readJson(filename: string): any {\n const filenamePath = resolve(getDataDir(), filename);\n return JSON.parse(readFileSync(filenamePath, 'utf8'));\n}\n\nexport async function readJsonAsync(filename: string): Promise<any> {\n const filenamePath = resolve(getDataDir(), filename);\n const data = await readFile(filenamePath, 'utf8');\n return JSON.parse(data);\n}\n\nlet cachedDataDir: string | undefined = undefined;\n\nexport function getDataDir(): string {\n if (cachedDataDir) {\n return cachedDataDir;\n }\n\n const currentDir = getCurrentDir();\n\n // Need to handle the following cases:\n // v4 and earlier: `index.js` in `dist/`, data in `dist/fhir/`\n // v5.0.0: data in `index.js` in `dist/cjs/` and `dist/esm/`, data in `/dist/cjs/fhir/` and `/dist/esm/fhir/`\n // v5.0.1 and after: `index.js` in `dist/cjs/` and `dist/esm/`, data back in `/dist/fhir/`\n const relativePaths = ['./', '../', './cjs/', './esm/'];\n for (const relativePath of relativePaths) {\n const fullPath = resolve(currentDir, relativePath);\n const fhirPath = resolve(fullPath, 'fhir');\n if (existsSync(fhirPath)) {\n cachedDataDir = fullPath;\n return fullPath;\n }\n }\n throw new Error('No data directory found');\n}\n\nfunction getCurrentDir(): string {\n if (typeof __dirname !== 'undefined') {\n return resolve(__dirname);\n } else if (import.meta.url) {\n return resolve(dirname(fileURLToPath(import.meta.url)));\n } else {\n throw new Error('No data directory found');\n }\n}\n\n/**\n * The list of all known search parameter definition bundle file paths relative to the\n * `@medplum/definitions` package. Typically used in conjunction with `readJson`.\n */\nexport const SEARCH_PARAMETER_BUNDLE_FILES = [\n 'fhir/r4/search-parameters.json',\n 'fhir/r4/search-parameters-medplum.json',\n 'fhir/r4/search-parameters-uscore.json',\n];\n\nexport const STRUCTURE_DEFINITION_BUNDLE_FILES = [\n 'fhir/r4/profiles-types.json',\n 'fhir/r4/profiles-resources.json',\n 'fhir/r4/profiles-medplum.json',\n 'fhir/r4/profiles-others.json',\n];\n\nexport const TERMINOLOGY_BUNDLE_FILES = [\n 'fhir/r4/v2-tables.json',\n 'fhir/r4/v3-codesystems.json',\n 'fhir/r4/valuesets.json',\n 'fhir/r4/valuesets-medplum.json',\n 'fhir/r4/valuesets-medplum-generated.json',\n];\n\nexport function getDefinitionResource<T extends Resource & { url?: string }>(\n file: string,\n resourceType: T['resourceType'],\n url: string\n): T {\n const bundle = readJson(file) as Bundle;\n for (const entry of bundle.entry ?? EMPTY) {\n const resource = entry.resource as Resource & { url: string };\n if (resource?.resourceType === resourceType && resource.url === url) {\n return resource as T;\n }\n }\n throw new Error(`Missing definition resource: ${resourceType}?url=${url}`);\n}\n"],
5
+ "mappings": "AAGA,OAAS,gBAAAA,MAAoB,KAC7B,OAAS,cAAAC,MAAkB,UAC3B,OAAS,YAAAC,MAAgB,mBACzB,OAAS,WAAAC,EAAS,WAAAC,MAAe,YACjC,OAAS,iBAAAC,MAAqB,WAE9B,IAAMC,EAAqB,OAAO,OAAO,CAAC,CAAC,EAEpC,SAASC,EAASC,EAAuB,CAC9C,IAAMC,EAAeL,EAAQM,EAAW,EAAGF,CAAQ,EACnD,OAAO,KAAK,MAAMR,EAAaS,EAAc,MAAM,CAAC,CACtD,CAEA,eAAsBE,EAAcH,EAAgC,CAClE,IAAMC,EAAeL,EAAQM,EAAW,EAAGF,CAAQ,EAC7CI,EAAO,MAAMV,EAASO,EAAc,MAAM,EAChD,OAAO,KAAK,MAAMG,CAAI,CACxB,CAEA,IAAIC,EAEG,SAASH,GAAqB,CACnC,GAAIG,EACF,OAAOA,EAGT,IAAMC,EAAaC,EAAc,EAM3BC,EAAgB,CAAC,KAAM,MAAO,SAAU,QAAQ,EACtD,QAAWC,KAAgBD,EAAe,CACxC,IAAME,EAAWd,EAAQU,EAAYG,CAAY,EAC3CE,EAAWf,EAAQc,EAAU,MAAM,EACzC,GAAIjB,EAAWkB,CAAQ,EACrB,OAAAN,EAAgBK,EACTA,CAEX,CACA,MAAM,IAAI,MAAM,yBAAyB,CAC3C,CAEA,SAASH,GAAwB,CAC/B,GAAI,OAAO,UAAc,IACvB,OAAOX,EAAQ,SAAS,EACnB,GAAI,YAAY,IACrB,OAAOA,EAAQD,EAAQE,EAAc,YAAY,GAAG,CAAC,CAAC,EAEtD,MAAM,IAAI,MAAM,yBAAyB,CAE7C,CAMO,IAAMe,EAAgC,CAC3C,iCACA,yCACA,uCACF,EAEaC,EAAoC,CAC/C,8BACA,kCACA,gCACA,8BACF,EAEaC,EAA2B,CACtC,yBACA,8BACA,yBACA,iCACA,0CACF,EAEO,SAASC,EACdC,EACAC,EACAC,EACG,CACH,IAAMC,EAASpB,EAASiB,CAAI,EAC5B,QAAWI,KAASD,EAAO,OAASrB,EAAO,CACzC,IAAMuB,EAAWD,EAAM,SACvB,GAAIC,GAAU,eAAiBJ,GAAgBI,EAAS,MAAQH,EAC9D,OAAOG,CAEX,CACA,MAAM,IAAI,MAAM,gCAAgCJ,CAAY,QAAQC,CAAG,EAAE,CAC3E",
6
+ "names": ["readFileSync", "existsSync", "readFile", "dirname", "resolve", "fileURLToPath", "EMPTY", "readJson", "filename", "filenamePath", "getDataDir", "readJsonAsync", "data", "cachedDataDir", "currentDir", "getCurrentDir", "relativePaths", "relativePath", "fullPath", "fhirPath", "SEARCH_PARAMETER_BUNDLE_FILES", "STRUCTURE_DEFINITION_BUNDLE_FILES", "TERMINOLOGY_BUNDLE_FILES", "getDefinitionResource", "file", "resourceType", "url", "bundle", "entry", "resource"]
7
7
  }
@@ -156,6 +156,7 @@
156
156
  "ClientApplication": "#/definitions/ClientApplication",
157
157
  "User": "#/definitions/User",
158
158
  "Login": "#/definitions/Login",
159
+ "LoginEmailMfa": "#/definitions/LoginEmailMfa",
159
160
  "JsonWebKey": "#/definitions/JsonWebKey",
160
161
  "Bot": "#/definitions/Bot",
161
162
  "AccessPolicy": "#/definitions/AccessPolicy",
@@ -196,7 +197,9 @@
196
197
  "BotCdsService": "#/definitions/BotCdsService",
197
198
  "Package": "#/definitions/Package",
198
199
  "PackageRelease": "#/definitions/PackageRelease",
199
- "PackageInstallation": "#/definitions/PackageInstallation"
200
+ "PackageInstallation": "#/definitions/PackageInstallation",
201
+ "SmartHealthLink": "#/definitions/SmartHealthLink",
202
+ "SmartHealthLinkFile": "#/definitions/SmartHealthLinkFile"
200
203
  }
201
204
  },
202
205
  "oneOf": [
@@ -775,6 +778,15 @@
775
778
  },
776
779
  {
777
780
  "$ref": "#/definitions/PackageInstallation"
781
+ },
782
+ {
783
+ "$ref": "#/definitions/SmartHealthLink"
784
+ },
785
+ {
786
+ "$ref": "#/definitions/SmartHealthLinkFile"
787
+ },
788
+ {
789
+ "$ref": "#/definitions/LoginEmailMfa"
778
790
  }
779
791
  ],
780
792
  "definitions": {
@@ -1355,6 +1367,15 @@
1355
1367
  },
1356
1368
  {
1357
1369
  "$ref": "#/definitions/PackageInstallation"
1370
+ },
1371
+ {
1372
+ "$ref": "#/definitions/SmartHealthLink"
1373
+ },
1374
+ {
1375
+ "$ref": "#/definitions/SmartHealthLinkFile"
1376
+ },
1377
+ {
1378
+ "$ref": "#/definitions/LoginEmailMfa"
1358
1379
  }
1359
1380
  ]
1360
1381
  },
@@ -62067,6 +62088,16 @@
62067
62088
  "description": "Whether the user has completed MFA enrollment.",
62068
62089
  "$ref": "#/definitions/boolean"
62069
62090
  },
62091
+ "mfaMethod": {
62092
+ "description": "The MFA methods the user has enrolled in. \u0027totp\u0027 uses an authenticator application; \u0027email\u0027 sends a magic link to the user\u0027s email address on login.",
62093
+ "items": {
62094
+ "enum": [
62095
+ "totp",
62096
+ "email"
62097
+ ]
62098
+ },
62099
+ "type": "array"
62100
+ },
62070
62101
  "project": {
62071
62102
  "description": "Optional project if the user only exists for the project. This is used for the project-specific user database.",
62072
62103
  "$ref": "#/definitions/Reference"
@@ -62202,6 +62233,10 @@
62202
62233
  "description": "Whether the user has verified using multi-factor authentication (MFA). This will only be set is the user has MFA enabled (see User.mfaEnrolled).",
62203
62234
  "$ref": "#/definitions/boolean"
62204
62235
  },
62236
+ "emailMfa": {
62237
+ "description": "Single-use 6-digit code for email-based MFA. Set when a code is issued for this login and cleared on verification.",
62238
+ "$ref": "#/definitions/LoginEmailMfa"
62239
+ },
62205
62240
  "expiresAt": {
62206
62241
  "description": "The time at which a token will expire for this login.",
62207
62242
  "$ref": "#/definitions/instant"
@@ -62247,6 +62282,24 @@
62247
62282
  "authTime"
62248
62283
  ]
62249
62284
  },
62285
+ "LoginEmailMfa": {
62286
+ "description": "Single-use 6-digit code for email-based MFA. Set when a code is issued for this login and cleared on verification.",
62287
+ "properties": {
62288
+ "codeHash": {
62289
+ "description": "Hashed single-use 6-digit code that was emailed to the user.",
62290
+ "$ref": "#/definitions/string"
62291
+ },
62292
+ "expiresAt": {
62293
+ "description": "The time at which the emailed code expires and can no longer be used to verify the login.",
62294
+ "$ref": "#/definitions/instant"
62295
+ }
62296
+ },
62297
+ "additionalProperties": false,
62298
+ "required": [
62299
+ "codeHash",
62300
+ "expiresAt"
62301
+ ]
62302
+ },
62250
62303
  "JsonWebKey": {
62251
62304
  "description": "A JSON object that represents a cryptographic key. The members of the object represent properties of the key, including its value.",
62252
62305
  "properties": {
@@ -62855,6 +62908,17 @@
62855
62908
  "description": "Remote URL for the external Identity Provider userinfo endpoint.",
62856
62909
  "$ref": "#/definitions/string"
62857
62910
  },
62911
+ "userInfoMode": {
62912
+ "description": "Optional userinfo mode. Defaults to standard OIDC userinfo semantics.",
62913
+ "enum": [
62914
+ "oidc",
62915
+ "gcip"
62916
+ ]
62917
+ },
62918
+ "userInfoApiKey": {
62919
+ "description": "Optional API key used by custom userinfo modes such as Google Cloud Identity Platform.",
62920
+ "$ref": "#/definitions/string"
62921
+ },
62858
62922
  "clientId": {
62859
62923
  "description": "External Identity Provider client ID.",
62860
62924
  "$ref": "#/definitions/string"
@@ -65074,6 +65138,128 @@
65074
65138
  "status",
65075
65139
  "installedBy"
65076
65140
  ]
65141
+ },
65142
+ "SmartHealthLink": {
65143
+ "description": "A SMART Health Link generated by Medplum.",
65144
+ "properties": {
65145
+ "resourceType": {
65146
+ "description": "This is a SmartHealthLink resource",
65147
+ "const": "SmartHealthLink"
65148
+ },
65149
+ "id": {
65150
+ "description": "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes.",
65151
+ "$ref": "#/definitions/string"
65152
+ },
65153
+ "meta": {
65154
+ "description": "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource.",
65155
+ "$ref": "#/definitions/Meta"
65156
+ },
65157
+ "implicitRules": {
65158
+ "description": "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc.",
65159
+ "$ref": "#/definitions/uri"
65160
+ },
65161
+ "language": {
65162
+ "description": "The base language in which the resource is written.",
65163
+ "$ref": "#/definitions/code"
65164
+ },
65165
+ "text": {
65166
+ "description": "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety.",
65167
+ "$ref": "#/definitions/Narrative"
65168
+ },
65169
+ "contained": {
65170
+ "description": "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope.",
65171
+ "items": {
65172
+ "$ref": "#/definitions/Resource"
65173
+ },
65174
+ "type": "array"
65175
+ },
65176
+ "extension": {
65177
+ "description": "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition and use of extensions.",
65178
+ "items": {
65179
+ "$ref": "#/definitions/Extension"
65180
+ },
65181
+ "type": "array"
65182
+ },
65183
+ "modifierExtension": {
65184
+ "description": "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element\u0027s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).",
65185
+ "items": {
65186
+ "$ref": "#/definitions/Extension"
65187
+ },
65188
+ "type": "array"
65189
+ },
65190
+ "status": {
65191
+ "description": "The status of the SMART Health Link.",
65192
+ "enum": [
65193
+ "active",
65194
+ "revoked"
65195
+ ]
65196
+ },
65197
+ "mode": {
65198
+ "description": "The SMART Health Link delivery mode.",
65199
+ "enum": [
65200
+ "manifest",
65201
+ "direct"
65202
+ ]
65203
+ },
65204
+ "subject": {
65205
+ "description": "The subject whose records are shared by the SMART Health Link.",
65206
+ "$ref": "#/definitions/Reference"
65207
+ },
65208
+ "url": {
65209
+ "description": "The public SMART Health Link manifest or payload URL.",
65210
+ "$ref": "#/definitions/url"
65211
+ },
65212
+ "label": {
65213
+ "description": "Optional human-readable label for the SMART Health Link.",
65214
+ "$ref": "#/definitions/string"
65215
+ },
65216
+ "flag": {
65217
+ "description": "Optional SMART Health Link flags.",
65218
+ "$ref": "#/definitions/string"
65219
+ },
65220
+ "expiresAt": {
65221
+ "description": "Optional time when the SMART Health Link expires.",
65222
+ "$ref": "#/definitions/instant"
65223
+ },
65224
+ "passcodeHash": {
65225
+ "description": "Optional hash of the SMART Health Link passcode.",
65226
+ "$ref": "#/definitions/string"
65227
+ },
65228
+ "file": {
65229
+ "description": "Encrypted file available from the SMART Health Link.",
65230
+ "items": {
65231
+ "$ref": "#/definitions/SmartHealthLinkFile"
65232
+ },
65233
+ "type": "array"
65234
+ }
65235
+ },
65236
+ "additionalProperties": false,
65237
+ "required": [
65238
+ "resourceType",
65239
+ "status",
65240
+ "mode",
65241
+ "subject",
65242
+ "url",
65243
+ "file"
65244
+ ]
65245
+ },
65246
+ "SmartHealthLinkFile": {
65247
+ "description": "Encrypted file available from the SMART Health Link.",
65248
+ "properties": {
65249
+ "contentType": {
65250
+ "description": "The MIME type of the plaintext file content.",
65251
+ "$ref": "#/definitions/code"
65252
+ },
65253
+ "attachment": {
65254
+ "description": "Attachment containing or referencing the encrypted SMART Health Link file.",
65255
+ "$ref": "#/definitions/Attachment"
65256
+ }
65257
+ },
65258
+ "additionalProperties": false,
65259
+ "required": [
65260
+ "contentType",
65261
+ "attachment"
65262
+ ]
65077
65263
  }
65078
65264
  }
65079
65265
  }
@@ -290,7 +290,7 @@
290
290
  {
291
291
  "id" : "Project.defaultPatientAccessPolicy",
292
292
  "path" : "Project.defaultPatientAccessPolicy",
293
- "definition" : "The default access policy for patients using open registration.",
293
+ "definition" : "@deprecated Use defaultAccessPolicies instead. The default access policy for patients using open registration.",
294
294
  "min" : 0,
295
295
  "max" : "1",
296
296
  "type" : [{
@@ -573,6 +573,52 @@
573
573
  "max": "*"
574
574
  }
575
575
  },
576
+ {
577
+ "id": "Project.defaultAccessPolicies",
578
+ "path": "Project.defaultAccessPolicies",
579
+ "definition": "Default access policies to apply to project members by role when no explicit policy is provided.",
580
+ "min": 0,
581
+ "max": "*",
582
+ "type": [{"code": "BackboneElement"}],
583
+ "base": {
584
+ "path": "Project.defaultAccessPolicies",
585
+ "min": 0,
586
+ "max": "*"
587
+ }
588
+ },
589
+ {
590
+ "id": "Project.defaultAccessPolicies.profileType",
591
+ "path": "Project.defaultAccessPolicies.profileType",
592
+ "definition": "The member role this policy applies to.",
593
+ "min": 1,
594
+ "max": "1",
595
+ "type": [{"code": "code"}],
596
+ "base": {
597
+ "path": "Project.defaultAccessPolicies.profileType",
598
+ "min": 1,
599
+ "max": "1"
600
+ },
601
+ "binding": {
602
+ "strength": "required",
603
+ "valueSet": "https://medplum.com/fhir/ValueSet/project-membership-profile-type"
604
+ }
605
+ },
606
+ {
607
+ "id": "Project.defaultAccessPolicies.accessPolicy",
608
+ "path": "Project.defaultAccessPolicies.accessPolicy",
609
+ "definition": "The access policy to apply to members of this role.",
610
+ "min": 1,
611
+ "max": "1",
612
+ "type": [{
613
+ "code": "Reference",
614
+ "targetProfile": ["https://medplum.com/fhir/StructureDefinition/AccessPolicy"]
615
+ }],
616
+ "base": {
617
+ "path": "Project.defaultAccessPolicies.accessPolicy",
618
+ "min": 1,
619
+ "max": "1"
620
+ }
621
+ },
576
622
  {
577
623
  "id": "Project.exportedResourceType",
578
624
  "path": "Project.exportedResourceType",
@@ -1448,6 +1494,25 @@
1448
1494
  "max" : "1"
1449
1495
  }
1450
1496
  },
1497
+ {
1498
+ "id" : "User.mfaMethod",
1499
+ "path" : "User.mfaMethod",
1500
+ "definition" : "The MFA methods the user has enrolled in. 'totp' uses an authenticator application; 'email' sends a magic link to the user's email address on login.",
1501
+ "min" : 0,
1502
+ "max" : "*",
1503
+ "type" : [{
1504
+ "code" : "code"
1505
+ }],
1506
+ "base": {
1507
+ "path" : "User.mfaMethod",
1508
+ "min" : 0,
1509
+ "max" : "*"
1510
+ },
1511
+ "binding" : {
1512
+ "strength" : "required",
1513
+ "valueSet" : "https://medplum.com/fhir/ValueSet/user-mfa-method|4.0.1"
1514
+ }
1515
+ },
1451
1516
  {
1452
1517
  "id" : "User.project",
1453
1518
  "path" : "User.project",
@@ -2851,6 +2916,51 @@
2851
2916
  "max" : "1"
2852
2917
  }
2853
2918
  },
2919
+ {
2920
+ "id" : "Login.emailMfa",
2921
+ "path" : "Login.emailMfa",
2922
+ "definition" : "Single-use 6-digit code for email-based MFA. Set when a code is issued for this login and cleared on verification.",
2923
+ "min" : 0,
2924
+ "max" : "1",
2925
+ "type" : [{
2926
+ "code" : "BackboneElement"
2927
+ }],
2928
+ "base" : {
2929
+ "path" : "Login.emailMfa",
2930
+ "min" : 0,
2931
+ "max" : "1"
2932
+ }
2933
+ },
2934
+ {
2935
+ "id" : "Login.emailMfa.codeHash",
2936
+ "path" : "Login.emailMfa.codeHash",
2937
+ "definition" : "Hashed single-use 6-digit code that was emailed to the user.",
2938
+ "min" : 1,
2939
+ "max" : "1",
2940
+ "type" : [{
2941
+ "code" : "string"
2942
+ }],
2943
+ "base" : {
2944
+ "path" : "Login.emailMfa.codeHash",
2945
+ "min" : 1,
2946
+ "max" : "1"
2947
+ }
2948
+ },
2949
+ {
2950
+ "id" : "Login.emailMfa.expiresAt",
2951
+ "path" : "Login.emailMfa.expiresAt",
2952
+ "definition" : "The time at which the emailed code expires and can no longer be used to verify the login.",
2953
+ "min" : 1,
2954
+ "max" : "1",
2955
+ "type" : [{
2956
+ "code" : "instant"
2957
+ }],
2958
+ "base" : {
2959
+ "path" : "Login.emailMfa.expiresAt",
2960
+ "min" : 1,
2961
+ "max" : "1"
2962
+ }
2963
+ },
2854
2964
  {
2855
2965
  "id" : "Login.expiresAt",
2856
2966
  "path" : "Login.expiresAt",
@@ -5074,6 +5184,342 @@
5074
5184
  }
5075
5185
  }
5076
5186
  },
5187
+ {
5188
+ "fullUrl" : "https://medplum.com/fhir/StructureDefinition/SmartHealthLink",
5189
+ "resource" : {
5190
+ "resourceType" : "StructureDefinition",
5191
+ "id" : "SmartHealthLink",
5192
+ "name" : "SmartHealthLink",
5193
+ "url" : "https://medplum.com/fhir/StructureDefinition/SmartHealthLink",
5194
+ "status" : "active",
5195
+ "kind" : "resource",
5196
+ "abstract" : false,
5197
+ "type" : "SmartHealthLink",
5198
+ "baseDefinition" : "http://hl7.org/fhir/StructureDefinition/DomainResource",
5199
+ "description" : "A SMART Health Link generated by Medplum.",
5200
+ "snapshot" : {
5201
+ "element" : [
5202
+ {
5203
+ "id" : "SmartHealthLink",
5204
+ "path" : "SmartHealthLink",
5205
+ "short" : "A SMART Health Link generated by Medplum.",
5206
+ "definition" : "A SMART Health Link generated by Medplum.",
5207
+ "min" : 0,
5208
+ "max" : "*",
5209
+ "base": {
5210
+ "path" : "SmartHealthLink",
5211
+ "min" : 0,
5212
+ "max" : "*"
5213
+ }
5214
+ },
5215
+ {
5216
+ "id" : "SmartHealthLink.id",
5217
+ "path" : "SmartHealthLink.id",
5218
+ "short" : "Logical id of this artifact",
5219
+ "definition" : "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes.",
5220
+ "min" : 0,
5221
+ "max" : "1",
5222
+ "base" : {
5223
+ "path" : "Resource.id",
5224
+ "min" : 0,
5225
+ "max" : "1"
5226
+ },
5227
+ "type" : [{
5228
+ "code" : "string"
5229
+ }]
5230
+ },
5231
+ {
5232
+ "id" : "SmartHealthLink.meta",
5233
+ "path" : "SmartHealthLink.meta",
5234
+ "definition" : "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource.",
5235
+ "min" : 0,
5236
+ "max" : "1",
5237
+ "base" : {
5238
+ "path" : "Resource.meta",
5239
+ "min" : 0,
5240
+ "max" : "1"
5241
+ },
5242
+ "type" : [{
5243
+ "code" : "Meta"
5244
+ }]
5245
+ },
5246
+ {
5247
+ "id" : "SmartHealthLink.implicitRules",
5248
+ "path" : "SmartHealthLink.implicitRules",
5249
+ "definition" : "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc.",
5250
+ "min" : 0,
5251
+ "max" : "1",
5252
+ "base" : {
5253
+ "path" : "Resource.implicitRules",
5254
+ "min" : 0,
5255
+ "max" : "1"
5256
+ },
5257
+ "type" : [{
5258
+ "code" : "uri"
5259
+ }]
5260
+ },
5261
+ {
5262
+ "id" : "SmartHealthLink.language",
5263
+ "path" : "SmartHealthLink.language",
5264
+ "definition" : "The base language in which the resource is written.",
5265
+ "min" : 0,
5266
+ "max" : "1",
5267
+ "type" : [{
5268
+ "code" : "code"
5269
+ }],
5270
+ "base" : {
5271
+ "path" : "Resource.language",
5272
+ "min" : 0,
5273
+ "max" : "1"
5274
+ }
5275
+ },
5276
+ {
5277
+ "id" : "SmartHealthLink.text",
5278
+ "path" : "SmartHealthLink.text",
5279
+ "short" : "Text summary of the resource, for human interpretation",
5280
+ "definition" : "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety.",
5281
+ "min" : 0,
5282
+ "max" : "1",
5283
+ "base" : {
5284
+ "path" : "DomainResource.text",
5285
+ "min" : 0,
5286
+ "max" : "1"
5287
+ },
5288
+ "type" : [{
5289
+ "code" : "Narrative"
5290
+ }]
5291
+ },
5292
+ {
5293
+ "id" : "SmartHealthLink.contained",
5294
+ "path" : "SmartHealthLink.contained",
5295
+ "short" : "Contained, inline Resources",
5296
+ "definition" : "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope.",
5297
+ "min" : 0,
5298
+ "max" : "*",
5299
+ "base" : {
5300
+ "path" : "DomainResource.contained",
5301
+ "min" : 0,
5302
+ "max" : "*"
5303
+ },
5304
+ "type" : [{
5305
+ "code" : "Resource"
5306
+ }]
5307
+ },
5308
+ {
5309
+ "id" : "SmartHealthLink.extension",
5310
+ "path" : "SmartHealthLink.extension",
5311
+ "short" : "Additional content defined by implementations",
5312
+ "definition" : "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition and use of extensions.",
5313
+ "min" : 0,
5314
+ "max" : "*",
5315
+ "base" : {
5316
+ "path" : "DomainResource.extension",
5317
+ "min" : 0,
5318
+ "max" : "*"
5319
+ },
5320
+ "type" : [{
5321
+ "code" : "Extension"
5322
+ }]
5323
+ },
5324
+ {
5325
+ "id" : "SmartHealthLink.modifierExtension",
5326
+ "path" : "SmartHealthLink.modifierExtension",
5327
+ "short" : "Extensions that cannot be ignored",
5328
+ "definition" : "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).",
5329
+ "min" : 0,
5330
+ "max" : "*",
5331
+ "base" : {
5332
+ "path" : "DomainResource.modifierExtension",
5333
+ "min" : 0,
5334
+ "max" : "*"
5335
+ },
5336
+ "type" : [{
5337
+ "code" : "Extension"
5338
+ }]
5339
+ },
5340
+ {
5341
+ "id" : "SmartHealthLink.status",
5342
+ "path" : "SmartHealthLink.status",
5343
+ "short" : "active | revoked",
5344
+ "definition" : "The status of the SMART Health Link.",
5345
+ "min" : 1,
5346
+ "max" : "1",
5347
+ "type" : [{
5348
+ "code" : "code"
5349
+ }],
5350
+ "base" : {
5351
+ "path" : "SmartHealthLink.status",
5352
+ "min" : 1,
5353
+ "max" : "1"
5354
+ },
5355
+ "binding" : {
5356
+ "strength" : "required",
5357
+ "valueSet" : "https://medplum.com/fhir/ValueSet/smart-health-link-status"
5358
+ }
5359
+ },
5360
+ {
5361
+ "id" : "SmartHealthLink.mode",
5362
+ "path" : "SmartHealthLink.mode",
5363
+ "short" : "manifest | direct",
5364
+ "definition" : "The SMART Health Link delivery mode.",
5365
+ "min" : 1,
5366
+ "max" : "1",
5367
+ "type" : [{
5368
+ "code" : "code"
5369
+ }],
5370
+ "base" : {
5371
+ "path" : "SmartHealthLink.mode",
5372
+ "min" : 1,
5373
+ "max" : "1"
5374
+ },
5375
+ "binding" : {
5376
+ "strength" : "required",
5377
+ "valueSet" : "https://medplum.com/fhir/ValueSet/smart-health-link-mode"
5378
+ }
5379
+ },
5380
+ {
5381
+ "id" : "SmartHealthLink.subject",
5382
+ "path" : "SmartHealthLink.subject",
5383
+ "definition" : "The subject whose records are shared by the SMART Health Link.",
5384
+ "min" : 1,
5385
+ "max" : "1",
5386
+ "type" : [{
5387
+ "code" : "Reference",
5388
+ "targetProfile" : [
5389
+ "http://hl7.org/fhir/StructureDefinition/Patient",
5390
+ "http://hl7.org/fhir/StructureDefinition/Group"
5391
+ ]
5392
+ }],
5393
+ "base" : {
5394
+ "path" : "SmartHealthLink.subject",
5395
+ "min" : 1,
5396
+ "max" : "1"
5397
+ }
5398
+ },
5399
+ {
5400
+ "id" : "SmartHealthLink.url",
5401
+ "path" : "SmartHealthLink.url",
5402
+ "definition" : "The public SMART Health Link manifest or payload URL.",
5403
+ "min" : 1,
5404
+ "max" : "1",
5405
+ "type" : [{
5406
+ "code" : "url"
5407
+ }],
5408
+ "base" : {
5409
+ "path" : "SmartHealthLink.url",
5410
+ "min" : 1,
5411
+ "max" : "1"
5412
+ }
5413
+ },
5414
+ {
5415
+ "id" : "SmartHealthLink.label",
5416
+ "path" : "SmartHealthLink.label",
5417
+ "definition" : "Optional human-readable label for the SMART Health Link.",
5418
+ "min" : 0,
5419
+ "max" : "1",
5420
+ "type" : [{
5421
+ "code" : "string"
5422
+ }],
5423
+ "base" : {
5424
+ "path" : "SmartHealthLink.label",
5425
+ "min" : 0,
5426
+ "max" : "1"
5427
+ }
5428
+ },
5429
+ {
5430
+ "id" : "SmartHealthLink.flag",
5431
+ "path" : "SmartHealthLink.flag",
5432
+ "definition" : "Optional SMART Health Link flags.",
5433
+ "min" : 0,
5434
+ "max" : "1",
5435
+ "type" : [{
5436
+ "code" : "string"
5437
+ }],
5438
+ "base" : {
5439
+ "path" : "SmartHealthLink.flag",
5440
+ "min" : 0,
5441
+ "max" : "1"
5442
+ }
5443
+ },
5444
+ {
5445
+ "id" : "SmartHealthLink.expiresAt",
5446
+ "path" : "SmartHealthLink.expiresAt",
5447
+ "definition" : "Optional time when the SMART Health Link expires.",
5448
+ "min" : 0,
5449
+ "max" : "1",
5450
+ "type" : [{
5451
+ "code" : "instant"
5452
+ }],
5453
+ "base" : {
5454
+ "path" : "SmartHealthLink.expiresAt",
5455
+ "min" : 0,
5456
+ "max" : "1"
5457
+ }
5458
+ },
5459
+ {
5460
+ "id" : "SmartHealthLink.passcodeHash",
5461
+ "path" : "SmartHealthLink.passcodeHash",
5462
+ "definition" : "Optional hash of the SMART Health Link passcode.",
5463
+ "min" : 0,
5464
+ "max" : "1",
5465
+ "type" : [{
5466
+ "code" : "string"
5467
+ }],
5468
+ "base" : {
5469
+ "path" : "SmartHealthLink.passcodeHash",
5470
+ "min" : 0,
5471
+ "max" : "1"
5472
+ }
5473
+ },
5474
+ {
5475
+ "id" : "SmartHealthLink.file",
5476
+ "path" : "SmartHealthLink.file",
5477
+ "definition" : "Encrypted file available from the SMART Health Link.",
5478
+ "min" : 1,
5479
+ "max" : "*",
5480
+ "type" : [{
5481
+ "code" : "BackboneElement"
5482
+ }],
5483
+ "base" : {
5484
+ "path" : "SmartHealthLink.file",
5485
+ "min" : 1,
5486
+ "max" : "*"
5487
+ }
5488
+ },
5489
+ {
5490
+ "id" : "SmartHealthLink.file.contentType",
5491
+ "path" : "SmartHealthLink.file.contentType",
5492
+ "definition" : "The MIME type of the plaintext file content.",
5493
+ "min" : 1,
5494
+ "max" : "1",
5495
+ "type" : [{
5496
+ "code" : "code"
5497
+ }],
5498
+ "base" : {
5499
+ "path" : "SmartHealthLink.file.contentType",
5500
+ "min" : 1,
5501
+ "max" : "1"
5502
+ }
5503
+ },
5504
+ {
5505
+ "id" : "SmartHealthLink.file.attachment",
5506
+ "path" : "SmartHealthLink.file.attachment",
5507
+ "definition" : "Attachment containing or referencing the encrypted SMART Health Link file.",
5508
+ "min" : 1,
5509
+ "max" : "1",
5510
+ "type" : [{
5511
+ "code" : "Attachment"
5512
+ }],
5513
+ "base" : {
5514
+ "path" : "SmartHealthLink.file.attachment",
5515
+ "min" : 1,
5516
+ "max" : "1"
5517
+ }
5518
+ }
5519
+ ]
5520
+ }
5521
+ }
5522
+ },
5077
5523
  {
5078
5524
  "fullUrl" : "https://medplum.com/fhir/StructureDefinition/DomainConfiguration",
5079
5525
  "resource" : {
@@ -8696,5 +9142,34 @@
8696
9142
  ]
8697
9143
  }
8698
9144
  }
9145
+ },
9146
+ {
9147
+ "fullUrl": "https://medplum.com/fhir/OperationDefinition/rebuild-base-definitions",
9148
+ "resource": {
9149
+ "resourceType": "OperationDefinition",
9150
+ "url": "https://medplum.com/fhir/OperationDefinition/rebuild-base-definitions",
9151
+ "name": "rebuild-base-definitions",
9152
+ "title": "Rebuild Base Definitions",
9153
+ "status": "active",
9154
+ "kind": "operation",
9155
+ "code": "rebuild-base-definitions",
9156
+ "system": true,
9157
+ "type": false,
9158
+ "instance": false,
9159
+ "parameter": [
9160
+ {
9161
+ "use": "in",
9162
+ "name": "resourceType",
9163
+ "documentation": "StructureDefinition | SearchParameter | ValueSet | CodeSystem | OperationDefinition",
9164
+ "min": 0,
9165
+ "max": "*",
9166
+ "type": "code",
9167
+ "binding": {
9168
+ "strength": "required",
9169
+ "valueSet": "https://medplum.com/fhir/ValueSet/base-definition-types"
9170
+ }
9171
+ }
9172
+ ]
9173
+ }
8699
9174
  }]
8700
9175
  }
@@ -22029,6 +22029,22 @@
22029
22029
  "type" : [{
22030
22030
  "code" : "Reference"
22031
22031
  }]
22032
+ },
22033
+ {
22034
+ "id" : "Meta.deleted",
22035
+ "path" : "Meta.deleted",
22036
+ "short" : "True when this version represents a logical delete tombstone.",
22037
+ "definition" : "True when this version represents a logical delete tombstone.",
22038
+ "min" : 0,
22039
+ "max" : "1",
22040
+ "base" : {
22041
+ "path" : "Meta.deleted",
22042
+ "min" : 0,
22043
+ "max" : "1"
22044
+ },
22045
+ "type" : [{
22046
+ "code" : "boolean"
22047
+ }]
22032
22048
  }]
22033
22049
  },
22034
22050
  "differential" : {
@@ -1942,6 +1942,58 @@
1942
1942
  "expression": "PackageInstallation.version"
1943
1943
  }
1944
1944
  },
1945
+ {
1946
+ "fullUrl": "https://medplum.com/fhir/SearchParameter/SmartHealthLink-status",
1947
+ "resource": {
1948
+ "resourceType": "SearchParameter",
1949
+ "id": "SmartHealthLink-status",
1950
+ "url": "https://medplum.com/fhir/SearchParameter/SmartHealthLink-status",
1951
+ "version": "4.0.1",
1952
+ "name": "status",
1953
+ "status": "draft",
1954
+ "publisher": "Medplum",
1955
+ "description": "The status of the SMART Health Link",
1956
+ "code": "status",
1957
+ "base": ["SmartHealthLink"],
1958
+ "type": "token",
1959
+ "expression": "SmartHealthLink.status"
1960
+ }
1961
+ },
1962
+ {
1963
+ "fullUrl": "https://medplum.com/fhir/SearchParameter/SmartHealthLink-mode",
1964
+ "resource": {
1965
+ "resourceType": "SearchParameter",
1966
+ "id": "SmartHealthLink-mode",
1967
+ "url": "https://medplum.com/fhir/SearchParameter/SmartHealthLink-mode",
1968
+ "version": "4.0.1",
1969
+ "name": "mode",
1970
+ "status": "draft",
1971
+ "publisher": "Medplum",
1972
+ "description": "The delivery mode of the SMART Health Link",
1973
+ "code": "mode",
1974
+ "base": ["SmartHealthLink"],
1975
+ "type": "token",
1976
+ "expression": "SmartHealthLink.mode"
1977
+ }
1978
+ },
1979
+ {
1980
+ "fullUrl": "https://medplum.com/fhir/SearchParameter/SmartHealthLink-subject",
1981
+ "resource": {
1982
+ "resourceType": "SearchParameter",
1983
+ "id": "SmartHealthLink-subject",
1984
+ "url": "https://medplum.com/fhir/SearchParameter/SmartHealthLink-subject",
1985
+ "version": "4.0.1",
1986
+ "name": "subject",
1987
+ "status": "draft",
1988
+ "publisher": "Medplum",
1989
+ "description": "The subject whose records are shared by the SMART Health Link",
1990
+ "code": "subject",
1991
+ "base": ["SmartHealthLink"],
1992
+ "type": "reference",
1993
+ "expression": "SmartHealthLink.subject",
1994
+ "target": ["Group", "Patient"]
1995
+ }
1996
+ },
1945
1997
  {
1946
1998
  "fullUrl": "https://medplum.com/fhir/SearchParameter/HealthcareService-offered-in",
1947
1999
  "resource": {
@@ -1958,6 +2010,23 @@
1958
2010
  "type": "reference",
1959
2011
  "expression": "HealthcareService.offeredIn"
1960
2012
  }
2013
+ },
2014
+ {
2015
+ "fullUrl" : "https://medplum.com/fhir/SearchParameter/Provenance-activity",
2016
+ "resource" : {
2017
+ "resourceType" : "SearchParameter",
2018
+ "id" : "Provenance-activity",
2019
+ "url" : "https://medplum.com/fhir/SearchParameter/Provenance-activity",
2020
+ "version" : "4.0.1",
2021
+ "name" : "activity",
2022
+ "status" : "draft",
2023
+ "publisher": "Medplum",
2024
+ "description" : "Activity that occurred",
2025
+ "code" : "activity",
2026
+ "base" : ["Provenance"],
2027
+ "type" : "token",
2028
+ "expression" : "Provenance.activity"
2029
+ }
1961
2030
  }
1962
2031
  ]
1963
2032
  }
@@ -77,6 +77,11 @@
77
77
  "display": "ProjectMembership",
78
78
  "definition": "Medplum project membership. A project membership grants a user access to a project."
79
79
  },
80
+ {
81
+ "code": "SmartHealthLink",
82
+ "display": "SmartHealthLink",
83
+ "definition": "A SMART Health Link generated by Medplum."
84
+ },
80
85
  {
81
86
  "code": "SmartAppLaunch",
82
87
  "display": "SmartAppLaunch",
@@ -218,6 +223,55 @@
218
223
  }
219
224
  }
220
225
  },
226
+ {
227
+ "fullUrl": "https://medplum.com/fhir/CodeSystem/project-membership-profile-type",
228
+ "resource": {
229
+ "resourceType": "CodeSystem",
230
+ "id": "project-membership-profile-type",
231
+ "url": "https://medplum.com/fhir/CodeSystem/project-membership-profile-type",
232
+ "status": "active",
233
+ "valueSet": "https://medplum.com/fhir/ValueSet/project-membership-profile-type",
234
+ "content": "complete",
235
+ "concept": [
236
+ {
237
+ "code": "Patient",
238
+ "display": "Patient",
239
+ "definition": "Patient"
240
+ },
241
+ {
242
+ "code": "Practitioner",
243
+ "display": "Practitioner",
244
+ "definition": "Practitioner"
245
+ },
246
+ {
247
+ "code": "RelatedPerson",
248
+ "display": "RelatedPerson",
249
+ "definition": "RelatedPerson"
250
+ },
251
+ {
252
+ "code": "Admin",
253
+ "display": "Admin",
254
+ "definition": "Project administrator"
255
+ }
256
+ ]
257
+ }
258
+ },
259
+ {
260
+ "fullUrl": "https://medplum.com/fhir/ValueSet/project-membership-profile-type",
261
+ "resource": {
262
+ "resourceType": "ValueSet",
263
+ "id": "project-membership-profile-type",
264
+ "url": "https://medplum.com/fhir/ValueSet/project-membership-profile-type",
265
+ "status": "active",
266
+ "compose": {
267
+ "include": [
268
+ {
269
+ "system": "https://medplum.com/fhir/CodeSystem/project-membership-profile-type"
270
+ }
271
+ ]
272
+ }
273
+ }
274
+ },
221
275
  {
222
276
  "fullUrl": "https://medplum.com/fhir/CodeSystem/bot-runtime-version",
223
277
  "resource": {
@@ -453,6 +507,45 @@
453
507
  }
454
508
  }
455
509
  },
510
+ {
511
+ "fullUrl": "https://medplum.com/fhir/CodeSystem/user-mfa-method",
512
+ "resource": {
513
+ "resourceType": "CodeSystem",
514
+ "id": "user-mfa-method",
515
+ "url": "https://medplum.com/fhir/CodeSystem/user-mfa-method",
516
+ "status": "active",
517
+ "valueSet": "https://medplum.com/fhir/ValueSet/user-mfa-method",
518
+ "content": "complete",
519
+ "concept": [
520
+ {
521
+ "code": "totp",
522
+ "display": "TOTP",
523
+ "definition": "Time-based one-time password using an authenticator application."
524
+ },
525
+ {
526
+ "code": "email",
527
+ "display": "Email",
528
+ "definition": "Magic link sent to the user's email address on login."
529
+ }
530
+ ]
531
+ }
532
+ },
533
+ {
534
+ "fullUrl": "https://medplum.com/fhir/ValueSet/user-mfa-method",
535
+ "resource": {
536
+ "resourceType": "ValueSet",
537
+ "id": "user-mfa-method",
538
+ "url": "https://medplum.com/fhir/ValueSet/user-mfa-method",
539
+ "status": "active",
540
+ "compose": {
541
+ "include": [
542
+ {
543
+ "system": "https://medplum.com/fhir/CodeSystem/user-mfa-method"
544
+ }
545
+ ]
546
+ }
547
+ }
548
+ },
456
549
  {
457
550
  "fullUrl": "https://medplum.com/fhir/CodeSystem/ip-access-rule-action",
458
551
  "resource": {
@@ -3914,6 +4007,106 @@
3914
4007
  ]
3915
4008
  }
3916
4009
  }
4010
+ },
4011
+ {
4012
+ "fullUrl": "https://medplum.com/fhir/ValueSet/base-definition-types",
4013
+ "resource": {
4014
+ "resourceType": "ValueSet",
4015
+ "url": "https://medplum.com/fhir/ValueSet/base-definition-types",
4016
+ "status": "active",
4017
+ "compose": {
4018
+ "include": [
4019
+ {
4020
+ "system": "http://hl7.org/fhir/ValueSet/resource-types",
4021
+ "concept": [
4022
+ { "code": "StructureDefinition" },
4023
+ { "code": "SearchParameter" },
4024
+ { "code": "ValueSet" },
4025
+ { "code": "CodeSystem" },
4026
+ { "code": "OperationDefinition" }
4027
+ ]
4028
+ }
4029
+ ]
4030
+ }
4031
+ }
4032
+ },
4033
+ {
4034
+ "fullUrl": "https://medplum.com/fhir/CodeSystem/smart-health-link-status",
4035
+ "resource": {
4036
+ "resourceType": "CodeSystem",
4037
+ "id": "smart-health-link-status",
4038
+ "url": "https://medplum.com/fhir/CodeSystem/smart-health-link-status",
4039
+ "status": "active",
4040
+ "valueSet": "https://medplum.com/fhir/ValueSet/smart-health-link-status",
4041
+ "content": "complete",
4042
+ "concept": [
4043
+ {
4044
+ "code": "active",
4045
+ "display": "Active",
4046
+ "definition": "The SMART Health Link is active."
4047
+ },
4048
+ {
4049
+ "code": "revoked",
4050
+ "display": "Revoked",
4051
+ "definition": "The SMART Health Link has been revoked."
4052
+ }
4053
+ ]
4054
+ }
4055
+ },
4056
+ {
4057
+ "fullUrl": "https://medplum.com/fhir/ValueSet/smart-health-link-status",
4058
+ "resource": {
4059
+ "resourceType": "ValueSet",
4060
+ "id": "smart-health-link-status",
4061
+ "url": "https://medplum.com/fhir/ValueSet/smart-health-link-status",
4062
+ "status": "active",
4063
+ "compose": {
4064
+ "include": [
4065
+ {
4066
+ "system": "https://medplum.com/fhir/CodeSystem/smart-health-link-status"
4067
+ }
4068
+ ]
4069
+ }
4070
+ }
4071
+ },
4072
+ {
4073
+ "fullUrl": "https://medplum.com/fhir/CodeSystem/smart-health-link-mode",
4074
+ "resource": {
4075
+ "resourceType": "CodeSystem",
4076
+ "id": "smart-health-link-mode",
4077
+ "url": "https://medplum.com/fhir/CodeSystem/smart-health-link-mode",
4078
+ "status": "active",
4079
+ "valueSet": "https://medplum.com/fhir/ValueSet/smart-health-link-mode",
4080
+ "content": "complete",
4081
+ "concept": [
4082
+ {
4083
+ "code": "manifest",
4084
+ "display": "Manifest",
4085
+ "definition": "The SMART Health Link resolves to a manifest of encrypted files."
4086
+ },
4087
+ {
4088
+ "code": "direct",
4089
+ "display": "Direct",
4090
+ "definition": "The SMART Health Link resolves directly to an encrypted payload."
4091
+ }
4092
+ ]
4093
+ }
4094
+ },
4095
+ {
4096
+ "fullUrl": "https://medplum.com/fhir/ValueSet/smart-health-link-mode",
4097
+ "resource": {
4098
+ "resourceType": "ValueSet",
4099
+ "id": "smart-health-link-mode",
4100
+ "url": "https://medplum.com/fhir/ValueSet/smart-health-link-mode",
4101
+ "status": "active",
4102
+ "compose": {
4103
+ "include": [
4104
+ {
4105
+ "system": "https://medplum.com/fhir/CodeSystem/smart-health-link-mode"
4106
+ }
4107
+ ]
4108
+ }
4109
+ }
3917
4110
  }
3918
4111
  ]
3919
4112
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medplum/definitions",
3
- "version": "5.1.22",
3
+ "version": "5.1.24",
4
4
  "description": "Medplum Data Definitions",
5
5
  "keywords": [
6
6
  "medplum",
@@ -58,5 +58,8 @@
58
58
  },
59
59
  "engines": {
60
60
  "node": "^22.18.0 || >=24.2.0"
61
+ },
62
+ "devDependencies": {
63
+ "@medplum/fhirtypes": "5.1.24"
61
64
  }
62
65
  }