tebra-mcp-server 0.2.1 → 0.2.2

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 (60) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +21 -1
  3. package/dist/index.js +40 -8
  4. package/dist/index.js.map +1 -1
  5. package/dist/soap-client.d.ts.map +1 -1
  6. package/dist/soap-client.js +42 -9
  7. package/dist/soap-client.js.map +1 -1
  8. package/dist/tools/fhir/allergies.d.ts +24 -0
  9. package/dist/tools/fhir/allergies.d.ts.map +1 -0
  10. package/dist/tools/fhir/allergies.js +52 -0
  11. package/dist/tools/fhir/allergies.js.map +1 -0
  12. package/dist/tools/fhir/care-plans.d.ts +29 -0
  13. package/dist/tools/fhir/care-plans.d.ts.map +1 -0
  14. package/dist/tools/fhir/care-plans.js +61 -0
  15. package/dist/tools/fhir/care-plans.js.map +1 -0
  16. package/dist/tools/fhir/care-team.d.ts +24 -0
  17. package/dist/tools/fhir/care-team.d.ts.map +1 -0
  18. package/dist/tools/fhir/care-team.js +47 -0
  19. package/dist/tools/fhir/care-team.js.map +1 -0
  20. package/dist/tools/fhir/conditions.d.ts +29 -0
  21. package/dist/tools/fhir/conditions.d.ts.map +1 -0
  22. package/dist/tools/fhir/conditions.js +57 -0
  23. package/dist/tools/fhir/conditions.js.map +1 -0
  24. package/dist/tools/fhir/devices.d.ts +24 -0
  25. package/dist/tools/fhir/devices.d.ts.map +1 -0
  26. package/dist/tools/fhir/devices.js +48 -0
  27. package/dist/tools/fhir/devices.js.map +1 -0
  28. package/dist/tools/fhir/diagnostic-reports.d.ts +29 -0
  29. package/dist/tools/fhir/diagnostic-reports.d.ts.map +1 -0
  30. package/dist/tools/fhir/diagnostic-reports.js +58 -0
  31. package/dist/tools/fhir/diagnostic-reports.js.map +1 -0
  32. package/dist/tools/fhir/documents.d.ts +30 -0
  33. package/dist/tools/fhir/documents.d.ts.map +1 -0
  34. package/dist/tools/fhir/documents.js +61 -0
  35. package/dist/tools/fhir/documents.js.map +1 -0
  36. package/dist/tools/fhir/helpers.d.ts +37 -0
  37. package/dist/tools/fhir/helpers.d.ts.map +1 -0
  38. package/dist/tools/fhir/helpers.js +113 -0
  39. package/dist/tools/fhir/helpers.js.map +1 -0
  40. package/dist/tools/fhir/immunizations.d.ts +24 -0
  41. package/dist/tools/fhir/immunizations.d.ts.map +1 -0
  42. package/dist/tools/fhir/immunizations.js +46 -0
  43. package/dist/tools/fhir/immunizations.js.map +1 -0
  44. package/dist/tools/fhir/lab-results.d.ts +36 -0
  45. package/dist/tools/fhir/lab-results.d.ts.map +1 -0
  46. package/dist/tools/fhir/lab-results.js +53 -0
  47. package/dist/tools/fhir/lab-results.js.map +1 -0
  48. package/dist/tools/fhir/medications.d.ts +29 -0
  49. package/dist/tools/fhir/medications.d.ts.map +1 -0
  50. package/dist/tools/fhir/medications.js +55 -0
  51. package/dist/tools/fhir/medications.js.map +1 -0
  52. package/dist/tools/fhir/procedures.d.ts +32 -0
  53. package/dist/tools/fhir/procedures.d.ts.map +1 -0
  54. package/dist/tools/fhir/procedures.js +60 -0
  55. package/dist/tools/fhir/procedures.js.map +1 -0
  56. package/dist/tools/fhir/vitals.d.ts +32 -0
  57. package/dist/tools/fhir/vitals.d.ts.map +1 -0
  58. package/dist/tools/fhir/vitals.js +47 -0
  59. package/dist/tools/fhir/vitals.js.map +1 -0
  60. package/package.json +61 -61
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /**
3
+ * FHIR Condition — patient diagnoses / problem list.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fhirConditionTools = void 0;
7
+ exports.handleFhirConditionTool = handleFhirConditionTool;
8
+ const helpers_js_1 = require("./helpers.js");
9
+ exports.fhirConditionTools = [
10
+ {
11
+ name: 'tebra_fhir_get_conditions',
12
+ description: 'Get patient conditions/diagnoses from Tebra FHIR API. Returns condition name, ICD code, clinical status, and onset date.',
13
+ inputSchema: {
14
+ type: 'object',
15
+ properties: {
16
+ patientId: {
17
+ type: 'string',
18
+ description: 'Tebra FHIR patient ID',
19
+ },
20
+ clinicalStatus: {
21
+ type: 'string',
22
+ enum: ['active', 'resolved', 'inactive'],
23
+ description: 'Filter by clinical status',
24
+ },
25
+ },
26
+ required: ['patientId'],
27
+ },
28
+ },
29
+ ];
30
+ function summarize(r) {
31
+ return {
32
+ id: r.id,
33
+ condition: (0, helpers_js_1.codeDisplay)(r.code),
34
+ code: (0, helpers_js_1.codeValue)(r.code),
35
+ clinicalStatus: (0, helpers_js_1.codeDisplay)(r.clinicalStatus),
36
+ verificationStatus: (0, helpers_js_1.codeDisplay)(r.verificationStatus),
37
+ category: Array.isArray(r.category)
38
+ ? r.category.map((c) => (0, helpers_js_1.codeDisplay)(c))
39
+ : [],
40
+ onsetDateTime: r.onsetDateTime,
41
+ abatementDateTime: r.abatementDateTime,
42
+ recordedDate: r.recordedDate,
43
+ };
44
+ }
45
+ async function handleFhirConditionTool(_name, args) {
46
+ const config = (0, helpers_js_1.getFhirConfig)();
47
+ const patientId = String(args.patientId ?? '');
48
+ if (!patientId)
49
+ return { content: [{ type: 'text', text: 'patientId is required.' }] };
50
+ const params = { patient: patientId };
51
+ if (args.clinicalStatus)
52
+ params['clinical-status'] = String(args.clinicalStatus);
53
+ const data = await (0, helpers_js_1.fhirRequest)(config, 'Condition', params);
54
+ const resources = (0, helpers_js_1.extractBundleResources)(data);
55
+ return (0, helpers_js_1.formatFhirResult)(resources, 'conditions', summarize);
56
+ }
57
+ //# sourceMappingURL=conditions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../../src/tools/fhir/conditions.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAmDH,0DAcC;AA/DD,6CAQsB;AAET,QAAA,kBAAkB,GAAG;IAChC;QACE,IAAI,EAAE,2BAA2B;QACjC,WAAW,EACT,0HAA0H;QAC5H,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uBAAuB;iBACrC;gBACD,cAAc,EAAE;oBACd,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;oBACxC,WAAW,EAAE,2BAA2B;iBACzC;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;CACF,CAAC;AAEF,SAAS,SAAS,CAAC,CAAe;IAChC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,SAAS,EAAE,IAAA,wBAAW,EAAC,CAAC,CAAC,IAAI,CAAC;QAC9B,IAAI,EAAE,IAAA,sBAAS,EAAC,CAAC,CAAC,IAAI,CAAC;QACvB,cAAc,EAAE,IAAA,wBAAW,EAAC,CAAC,CAAC,cAAc,CAAC;QAC7C,kBAAkB,EAAE,IAAA,wBAAW,EAAC,CAAC,CAAC,kBAAkB,CAAC;QACrD,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;YACjC,CAAC,CAAE,CAAC,CAAC,QAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,wBAAW,EAAC,CAAC,CAAC,CAAC;YACtD,CAAC,CAAC,EAAE;QACN,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;QACtC,YAAY,EAAE,CAAC,CAAC,YAAY;KAC7B,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAC3C,KAAa,EACb,IAA6B;IAE7B,MAAM,MAAM,GAAG,IAAA,0BAAa,GAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,EAAE,CAAC;IAEvF,MAAM,MAAM,GAA2B,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAC9D,IAAI,IAAI,CAAC,cAAc;QAAE,MAAM,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAEjF,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAW,EAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,IAAA,mCAAsB,EAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,IAAA,6BAAgB,EAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * FHIR Device — patient-associated implantable / wearable devices.
3
+ */
4
+ export declare const fhirDeviceTools: {
5
+ name: string;
6
+ description: string;
7
+ inputSchema: {
8
+ type: "object";
9
+ properties: {
10
+ patientId: {
11
+ type: string;
12
+ description: string;
13
+ };
14
+ };
15
+ required: string[];
16
+ };
17
+ }[];
18
+ export declare function handleFhirDeviceTool(_name: string, args: Record<string, unknown>): Promise<{
19
+ content: Array<{
20
+ type: string;
21
+ text: string;
22
+ }>;
23
+ }>;
24
+ //# sourceMappingURL=devices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices.d.ts","sourceRoot":"","sources":["../../../src/tools/fhir/devices.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,eAAO,MAAM,eAAe;;;;;;;;;;;;;GAgB3B,CAAC;AAiBF,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAQ7D"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ /**
3
+ * FHIR Device — patient-associated implantable / wearable devices.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fhirDeviceTools = void 0;
7
+ exports.handleFhirDeviceTool = handleFhirDeviceTool;
8
+ const helpers_js_1 = require("./helpers.js");
9
+ exports.fhirDeviceTools = [
10
+ {
11
+ name: 'tebra_fhir_get_devices',
12
+ description: 'Get patient-associated devices from Tebra FHIR API. Returns device type, manufacturer, model, and UDI.',
13
+ inputSchema: {
14
+ type: 'object',
15
+ properties: {
16
+ patientId: {
17
+ type: 'string',
18
+ description: 'Tebra FHIR patient ID',
19
+ },
20
+ },
21
+ required: ['patientId'],
22
+ },
23
+ },
24
+ ];
25
+ function summarize(r) {
26
+ return {
27
+ id: r.id,
28
+ type: (0, helpers_js_1.codeDisplay)(r.type),
29
+ status: r.status,
30
+ manufacturer: r.manufacturer,
31
+ model: r.modelNumber,
32
+ serialNumber: r.serialNumber,
33
+ patient: (0, helpers_js_1.refDisplay)(r.patient),
34
+ udiCarrier: Array.isArray(r.udiCarrier)
35
+ ? r.udiCarrier.map((u) => u.deviceIdentifier)
36
+ : [],
37
+ };
38
+ }
39
+ async function handleFhirDeviceTool(_name, args) {
40
+ const config = (0, helpers_js_1.getFhirConfig)();
41
+ const patientId = String(args.patientId ?? '');
42
+ if (!patientId)
43
+ return { content: [{ type: 'text', text: 'patientId is required.' }] };
44
+ const data = await (0, helpers_js_1.fhirRequest)(config, 'Device', { patient: patientId });
45
+ const resources = (0, helpers_js_1.extractBundleResources)(data);
46
+ return (0, helpers_js_1.formatFhirResult)(resources, 'devices', summarize);
47
+ }
48
+ //# sourceMappingURL=devices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices.js","sourceRoot":"","sources":["../../../src/tools/fhir/devices.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA6CH,oDAWC;AAtDD,6CAQsB;AAET,QAAA,eAAe,GAAG;IAC7B;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,wGAAwG;QAC1G,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uBAAuB;iBACrC;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;CACF,CAAC;AAEF,SAAS,SAAS,CAAC,CAAe;IAChC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,IAAA,wBAAW,EAAC,CAAC,CAAC,IAAI,CAAC;QACzB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,KAAK,EAAE,CAAC,CAAC,WAAW;QACpB,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,OAAO,EAAE,IAAA,uBAAU,EAAC,CAAC,CAAC,OAAO,CAAC;QAC9B,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;YACrC,CAAC,CAAE,CAAC,CAAC,UAAmD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;YACvF,CAAC,CAAC,EAAE;KACP,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,oBAAoB,CACxC,KAAa,EACb,IAA6B;IAE7B,MAAM,MAAM,GAAG,IAAA,0BAAa,GAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,EAAE,CAAC;IAEvF,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAW,EAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,IAAA,mCAAsB,EAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,IAAA,6BAAgB,EAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * FHIR DiagnosticReport — patient diagnostic reports (LAB / RAD / PATH).
3
+ */
4
+ export declare const fhirDiagnosticReportTools: {
5
+ name: string;
6
+ description: string;
7
+ inputSchema: {
8
+ type: "object";
9
+ properties: {
10
+ patientId: {
11
+ type: string;
12
+ description: string;
13
+ };
14
+ category: {
15
+ type: string;
16
+ enum: string[];
17
+ description: string;
18
+ };
19
+ };
20
+ required: string[];
21
+ };
22
+ }[];
23
+ export declare function handleFhirDiagnosticReportTool(_name: string, args: Record<string, unknown>): Promise<{
24
+ content: Array<{
25
+ type: string;
26
+ text: string;
27
+ }>;
28
+ }>;
29
+ //# sourceMappingURL=diagnostic-reports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic-reports.d.ts","sourceRoot":"","sources":["../../../src/tools/fhir/diagnostic-reports.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;GAqBrC,CAAC;AAmBF,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAW7D"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ /**
3
+ * FHIR DiagnosticReport — patient diagnostic reports (LAB / RAD / PATH).
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fhirDiagnosticReportTools = void 0;
7
+ exports.handleFhirDiagnosticReportTool = handleFhirDiagnosticReportTool;
8
+ const helpers_js_1 = require("./helpers.js");
9
+ exports.fhirDiagnosticReportTools = [
10
+ {
11
+ name: 'tebra_fhir_get_diagnostic_reports',
12
+ description: 'Get patient diagnostic reports from Tebra FHIR API. Returns report type, status, conclusion, and linked results.',
13
+ inputSchema: {
14
+ type: 'object',
15
+ properties: {
16
+ patientId: {
17
+ type: 'string',
18
+ description: 'Tebra FHIR patient ID',
19
+ },
20
+ category: {
21
+ type: 'string',
22
+ enum: ['LAB', 'RAD', 'PATH'],
23
+ description: 'Filter by category: LAB=Laboratory, RAD=Radiology, PATH=Pathology',
24
+ },
25
+ },
26
+ required: ['patientId'],
27
+ },
28
+ },
29
+ ];
30
+ function summarize(r) {
31
+ return {
32
+ id: r.id,
33
+ type: (0, helpers_js_1.codeDisplay)(r.code),
34
+ status: r.status,
35
+ category: Array.isArray(r.category)
36
+ ? r.category.map((c) => (0, helpers_js_1.codeDisplay)(c))
37
+ : [],
38
+ effectiveDateTime: r.effectiveDateTime,
39
+ issued: r.issued,
40
+ conclusion: r.conclusion,
41
+ results: Array.isArray(r.result)
42
+ ? r.result.map((res) => (0, helpers_js_1.refDisplay)(res))
43
+ : [],
44
+ };
45
+ }
46
+ async function handleFhirDiagnosticReportTool(_name, args) {
47
+ const config = (0, helpers_js_1.getFhirConfig)();
48
+ const patientId = String(args.patientId ?? '');
49
+ if (!patientId)
50
+ return { content: [{ type: 'text', text: 'patientId is required.' }] };
51
+ const params = { patient: patientId };
52
+ if (args.category)
53
+ params.category = String(args.category);
54
+ const data = await (0, helpers_js_1.fhirRequest)(config, 'DiagnosticReport', params);
55
+ const resources = (0, helpers_js_1.extractBundleResources)(data);
56
+ return (0, helpers_js_1.formatFhirResult)(resources, 'diagnostic reports', summarize);
57
+ }
58
+ //# sourceMappingURL=diagnostic-reports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic-reports.js","sourceRoot":"","sources":["../../../src/tools/fhir/diagnostic-reports.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAoDH,wEAcC;AAhED,6CAQsB;AAET,QAAA,yBAAyB,GAAG;IACvC;QACE,IAAI,EAAE,mCAAmC;QACzC,WAAW,EACT,kHAAkH;QACpH,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uBAAuB;iBACrC;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;oBAC5B,WAAW,EAAE,mEAAmE;iBACjF;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;CACF,CAAC;AAEF,SAAS,SAAS,CAAC,CAAe;IAChC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,IAAA,wBAAW,EAAC,CAAC,CAAC,IAAI,CAAC;QACzB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;YACjC,CAAC,CAAE,CAAC,CAAC,QAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,wBAAW,EAAC,CAAC,CAAC,CAAC;YACtD,CAAC,CAAC,EAAE;QACN,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;QACtC,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9B,CAAC,CAAE,CAAC,CAAC,MAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,uBAAU,EAAC,GAAG,CAAC,CAAC;YACvD,CAAC,CAAC,EAAE;KACP,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,8BAA8B,CAClD,KAAa,EACb,IAA6B;IAE7B,MAAM,MAAM,GAAG,IAAA,0BAAa,GAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,EAAE,CAAC;IAEvF,MAAM,MAAM,GAA2B,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAC9D,IAAI,IAAI,CAAC,QAAQ;QAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE3D,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAW,EAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,IAAA,mCAAsB,EAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,IAAA,6BAAgB,EAAC,SAAS,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * FHIR DocumentReference — clinical documents (notes, reports, scanned items).
3
+ *
4
+ * Distinct from src/tools/documents.ts (SOAP create/delete document attachments).
5
+ */
6
+ export declare const fhirDocumentTools: {
7
+ name: string;
8
+ description: string;
9
+ inputSchema: {
10
+ type: "object";
11
+ properties: {
12
+ patientId: {
13
+ type: string;
14
+ description: string;
15
+ };
16
+ type: {
17
+ type: string;
18
+ description: string;
19
+ };
20
+ };
21
+ required: string[];
22
+ };
23
+ }[];
24
+ export declare function handleFhirDocumentTool(_name: string, args: Record<string, unknown>): Promise<{
25
+ content: Array<{
26
+ type: string;
27
+ text: string;
28
+ }>;
29
+ }>;
30
+ //# sourceMappingURL=documents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../../src/tools/fhir/documents.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;GAoB7B,CAAC;AAqBF,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAW7D"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /**
3
+ * FHIR DocumentReference — clinical documents (notes, reports, scanned items).
4
+ *
5
+ * Distinct from src/tools/documents.ts (SOAP create/delete document attachments).
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.fhirDocumentTools = void 0;
9
+ exports.handleFhirDocumentTool = handleFhirDocumentTool;
10
+ const helpers_js_1 = require("./helpers.js");
11
+ exports.fhirDocumentTools = [
12
+ {
13
+ name: 'tebra_fhir_get_documents',
14
+ description: 'Get patient document references from Tebra FHIR API. Returns document type, author, date, and content metadata.',
15
+ inputSchema: {
16
+ type: 'object',
17
+ properties: {
18
+ patientId: {
19
+ type: 'string',
20
+ description: 'Tebra FHIR patient ID',
21
+ },
22
+ type: {
23
+ type: 'string',
24
+ description: 'Document type code filter',
25
+ },
26
+ },
27
+ required: ['patientId'],
28
+ },
29
+ },
30
+ ];
31
+ function summarize(r) {
32
+ return {
33
+ id: r.id,
34
+ type: (0, helpers_js_1.codeDisplay)(r.type),
35
+ status: r.status,
36
+ date: r.date,
37
+ description: r.description,
38
+ author: Array.isArray(r.author)
39
+ ? r.author.map((a) => (0, helpers_js_1.refDisplay)(a))
40
+ : [],
41
+ contentTypes: Array.isArray(r.content)
42
+ ? r.content.map((c) => ({
43
+ contentType: c.attachment?.contentType,
44
+ title: c.attachment?.title,
45
+ }))
46
+ : [],
47
+ };
48
+ }
49
+ async function handleFhirDocumentTool(_name, args) {
50
+ const config = (0, helpers_js_1.getFhirConfig)();
51
+ const patientId = String(args.patientId ?? '');
52
+ if (!patientId)
53
+ return { content: [{ type: 'text', text: 'patientId is required.' }] };
54
+ const params = { patient: patientId };
55
+ if (args.type)
56
+ params.type = String(args.type);
57
+ const data = await (0, helpers_js_1.fhirRequest)(config, 'DocumentReference', params);
58
+ const resources = (0, helpers_js_1.extractBundleResources)(data);
59
+ return (0, helpers_js_1.formatFhirResult)(resources, 'documents', summarize);
60
+ }
61
+ //# sourceMappingURL=documents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.js","sourceRoot":"","sources":["../../../src/tools/fhir/documents.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAqDH,wDAcC;AAjED,6CAQsB;AAET,QAAA,iBAAiB,GAAG;IAC/B;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACT,iHAAiH;QACnH,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uBAAuB;iBACrC;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2BAA2B;iBACzC;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;CACF,CAAC;AAEF,SAAS,SAAS,CAAC,CAAe;IAChC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,IAAA,wBAAW,EAAC,CAAC,CAAC,IAAI,CAAC;QACzB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YAC7B,CAAC,CAAE,CAAC,CAAC,MAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAU,EAAC,CAAC,CAAC,CAAC;YACnD,CAAC,CAAC,EAAE;QACN,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YACpC,CAAC,CAAE,CAAC,CAAC,OAA4E,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1F,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,WAAW;gBACtC,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK;aAC3B,CAAC,CAAC;YACL,CAAC,CAAC,EAAE;KACP,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,KAAa,EACb,IAA6B;IAE7B,MAAM,MAAM,GAAG,IAAA,0BAAa,GAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,EAAE,CAAC;IAEvF,MAAM,MAAM,GAA2B,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAC9D,IAAI,IAAI,CAAC,IAAI;QAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE/C,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAW,EAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,IAAA,mCAAsB,EAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,IAAA,6BAAgB,EAAC,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Shared FHIR primitives used by every per-resource tool module.
3
+ *
4
+ * Per-resource files (allergies.ts, medications.ts, ...) import from here
5
+ * for Bundle parsing, code/reference extraction, date-range params, the
6
+ * MCP result formatter, and the Observation summarizer (shared by vitals
7
+ * and lab-results).
8
+ */
9
+ import { fhirRequest, getFhirConfig } from '../../fhir-client.js';
10
+ export interface FhirResource {
11
+ resourceType: string;
12
+ [key: string]: unknown;
13
+ }
14
+ export interface FhirBundleEntry {
15
+ resource?: FhirResource;
16
+ [key: string]: unknown;
17
+ }
18
+ export interface FhirBundle {
19
+ resourceType: string;
20
+ total?: number;
21
+ entry?: FhirBundleEntry[];
22
+ [key: string]: unknown;
23
+ }
24
+ export declare function extractBundleResources(bundle: unknown): FhirResource[];
25
+ export declare function codeDisplay(concept: unknown): string;
26
+ export declare function codeValue(concept: unknown): string;
27
+ export declare function refDisplay(ref: unknown): string;
28
+ export declare function addDateRange(params: Record<string, string>, args: Record<string, unknown>): void;
29
+ export declare function formatFhirResult(resources: FhirResource[], label: string, summarizer: (r: FhirResource) => Record<string, unknown>): {
30
+ content: Array<{
31
+ type: string;
32
+ text: string;
33
+ }>;
34
+ };
35
+ export declare function summarizeObservation(r: FhirResource): Record<string, unknown>;
36
+ export { fhirRequest, getFhirConfig };
37
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/tools/fhir/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAElE,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,EAAE,CAMtE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAOpD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAIlD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAI/C;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,IAAI,CASN;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,YAAY,EAAE,EACzB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvD;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAWpD;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4C7E;AAED,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ /**
3
+ * Shared FHIR primitives used by every per-resource tool module.
4
+ *
5
+ * Per-resource files (allergies.ts, medications.ts, ...) import from here
6
+ * for Bundle parsing, code/reference extraction, date-range params, the
7
+ * MCP result formatter, and the Observation summarizer (shared by vitals
8
+ * and lab-results).
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.getFhirConfig = exports.fhirRequest = void 0;
12
+ exports.extractBundleResources = extractBundleResources;
13
+ exports.codeDisplay = codeDisplay;
14
+ exports.codeValue = codeValue;
15
+ exports.refDisplay = refDisplay;
16
+ exports.addDateRange = addDateRange;
17
+ exports.formatFhirResult = formatFhirResult;
18
+ exports.summarizeObservation = summarizeObservation;
19
+ const fhir_client_js_1 = require("../../fhir-client.js");
20
+ Object.defineProperty(exports, "fhirRequest", { enumerable: true, get: function () { return fhir_client_js_1.fhirRequest; } });
21
+ Object.defineProperty(exports, "getFhirConfig", { enumerable: true, get: function () { return fhir_client_js_1.getFhirConfig; } });
22
+ function extractBundleResources(bundle) {
23
+ const b = bundle;
24
+ if (!b?.entry || !Array.isArray(b.entry))
25
+ return [];
26
+ return b.entry
27
+ .filter((e) => e.resource)
28
+ .map((e) => e.resource);
29
+ }
30
+ function codeDisplay(concept) {
31
+ if (!concept || typeof concept !== 'object')
32
+ return '';
33
+ const c = concept;
34
+ if (c.text)
35
+ return c.text;
36
+ if (c.coding?.[0]?.display)
37
+ return c.coding[0].display;
38
+ if (c.coding?.[0]?.code)
39
+ return c.coding[0].code;
40
+ return '';
41
+ }
42
+ function codeValue(concept) {
43
+ if (!concept || typeof concept !== 'object')
44
+ return '';
45
+ const c = concept;
46
+ return c.coding?.[0]?.code ?? '';
47
+ }
48
+ function refDisplay(ref) {
49
+ if (!ref || typeof ref !== 'object')
50
+ return '';
51
+ const r = ref;
52
+ return r.display ?? r.reference ?? '';
53
+ }
54
+ function addDateRange(params, args) {
55
+ if (args.fromDate)
56
+ params.date = `ge${String(args.fromDate)}`;
57
+ if (args.toDate) {
58
+ if (params.date) {
59
+ params.date = `${params.date}&date=le${String(args.toDate)}`;
60
+ }
61
+ else {
62
+ params.date = `le${String(args.toDate)}`;
63
+ }
64
+ }
65
+ }
66
+ function formatFhirResult(resources, label, summarizer) {
67
+ if (resources.length === 0) {
68
+ return {
69
+ content: [{ type: 'text', text: `No ${label} found for this patient.` }],
70
+ };
71
+ }
72
+ const summarized = resources.map(summarizer);
73
+ return {
74
+ content: [{ type: 'text', text: JSON.stringify(summarized, null, 2) }],
75
+ };
76
+ }
77
+ function summarizeObservation(r) {
78
+ const result = {
79
+ id: r.id,
80
+ type: codeDisplay(r.code),
81
+ code: codeValue(r.code),
82
+ status: r.status,
83
+ effectiveDateTime: r.effectiveDateTime,
84
+ issued: r.issued,
85
+ };
86
+ if (r.valueQuantity) {
87
+ const vq = r.valueQuantity;
88
+ result.value = vq.value;
89
+ result.unit = vq.unit;
90
+ }
91
+ else if (r.valueCodeableConcept) {
92
+ result.value = codeDisplay(r.valueCodeableConcept);
93
+ }
94
+ else if (r.valueString) {
95
+ result.value = r.valueString;
96
+ }
97
+ if (Array.isArray(r.referenceRange)) {
98
+ result.referenceRange = r.referenceRange.map((rr) => ({
99
+ low: rr.low ? `${rr.low.value} ${rr.low.unit ?? ''}`.trim() : undefined,
100
+ high: rr.high ? `${rr.high.value} ${rr.high.unit ?? ''}`.trim() : undefined,
101
+ text: rr.text,
102
+ }));
103
+ }
104
+ if (Array.isArray(r.component)) {
105
+ result.components = r.component.map((comp) => ({
106
+ type: codeDisplay(comp.code),
107
+ value: comp.valueQuantity?.value,
108
+ unit: comp.valueQuantity?.unit,
109
+ }));
110
+ }
111
+ return result;
112
+ }
113
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/tools/fhir/helpers.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAqBH,wDAMC;AAED,kCAOC;AAED,8BAIC;AAED,gCAIC;AAED,oCAYC;AAED,4CAeC;AAED,oDA4CC;AA3HD,yDAAkE;AA6HzD,4FA7HA,4BAAW,OA6HA;AAAE,8FA7HA,8BAAa,OA6HA;AA1GnC,SAAgB,sBAAsB,CAAC,MAAe;IACpD,MAAM,CAAC,GAAG,MAAoB,CAAC;IAC/B,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpD,OAAO,CAAC,CAAC,KAAK;SACX,MAAM,CAAC,CAAC,CAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;SAC1C,GAAG,CAAC,CAAC,CAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,QAAwB,CAAC,CAAC;AAC7D,CAAC;AAED,SAAgB,WAAW,CAAC,OAAgB;IAC1C,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,CAAC,GAAG,OAAiF,CAAC;IAC5F,IAAI,CAAC,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACvD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,SAAS,CAAC,OAAgB;IACxC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,CAAC,GAAG,OAAgD,CAAC;IAC3D,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,SAAgB,UAAU,CAAC,GAAY;IACrC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAC/C,MAAM,CAAC,GAAG,GAA+C,CAAC;IAC1D,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,SAAgB,YAAY,CAC1B,MAA8B,EAC9B,IAA6B;IAE7B,IAAI,IAAI,CAAC,QAAQ;QAAE,MAAM,CAAC,IAAI,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC9D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAC9B,SAAyB,EACzB,KAAa,EACb,UAAwD;IAExD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,0BAA0B,EAAE,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KACvE,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAAC,CAAe;IAClD,MAAM,MAAM,GAA4B;QACtC,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;QACzB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QACvB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;QACtC,MAAM,EAAE,CAAC,CAAC,MAAM;KACjB,CAAC;IAEF,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;QACpB,MAAM,EAAE,GAAG,CAAC,CAAC,aAAkD,CAAC;QAChE,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;QACxB,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;IACxB,CAAC;SAAM,IAAI,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACrD,CAAC;SAAM,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,cAAc,GAAI,CAAC,CAAC,cAIxB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACf,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;YACvE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;YAC3E,IAAI,EAAE,EAAE,CAAC,IAAI;SACd,CAAC,CAAC,CAAC;IACN,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,UAAU,GAAI,CAAC,CAAC,SAGpB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjB,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK;YAChC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI;SAC/B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * FHIR Immunization — patient immunization history.
3
+ */
4
+ export declare const fhirImmunizationTools: {
5
+ name: string;
6
+ description: string;
7
+ inputSchema: {
8
+ type: "object";
9
+ properties: {
10
+ patientId: {
11
+ type: string;
12
+ description: string;
13
+ };
14
+ };
15
+ required: string[];
16
+ };
17
+ }[];
18
+ export declare function handleFhirImmunizationTool(_name: string, args: Record<string, unknown>): Promise<{
19
+ content: Array<{
20
+ type: string;
21
+ text: string;
22
+ }>;
23
+ }>;
24
+ //# sourceMappingURL=immunizations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"immunizations.d.ts","sourceRoot":"","sources":["../../../src/tools/fhir/immunizations.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;GAgBjC,CAAC;AAeF,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAQ7D"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /**
3
+ * FHIR Immunization — patient immunization history.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fhirImmunizationTools = void 0;
7
+ exports.handleFhirImmunizationTool = handleFhirImmunizationTool;
8
+ const helpers_js_1 = require("./helpers.js");
9
+ exports.fhirImmunizationTools = [
10
+ {
11
+ name: 'tebra_fhir_get_immunizations',
12
+ description: 'Get patient immunization history from Tebra FHIR API. Returns vaccine name, date administered, and status.',
13
+ inputSchema: {
14
+ type: 'object',
15
+ properties: {
16
+ patientId: {
17
+ type: 'string',
18
+ description: 'Tebra FHIR patient ID',
19
+ },
20
+ },
21
+ required: ['patientId'],
22
+ },
23
+ },
24
+ ];
25
+ function summarize(r) {
26
+ return {
27
+ id: r.id,
28
+ vaccine: (0, helpers_js_1.codeDisplay)(r.vaccineCode),
29
+ status: r.status,
30
+ occurrenceDateTime: r.occurrenceDateTime,
31
+ primarySource: r.primarySource,
32
+ performer: Array.isArray(r.performer)
33
+ ? r.performer.map((p) => (0, helpers_js_1.refDisplay)(p.actor))
34
+ : [],
35
+ };
36
+ }
37
+ async function handleFhirImmunizationTool(_name, args) {
38
+ const config = (0, helpers_js_1.getFhirConfig)();
39
+ const patientId = String(args.patientId ?? '');
40
+ if (!patientId)
41
+ return { content: [{ type: 'text', text: 'patientId is required.' }] };
42
+ const data = await (0, helpers_js_1.fhirRequest)(config, 'Immunization', { patient: patientId });
43
+ const resources = (0, helpers_js_1.extractBundleResources)(data);
44
+ return (0, helpers_js_1.formatFhirResult)(resources, 'immunizations', summarize);
45
+ }
46
+ //# sourceMappingURL=immunizations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"immunizations.js","sourceRoot":"","sources":["../../../src/tools/fhir/immunizations.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA2CH,gEAWC;AApDD,6CAQsB;AAET,QAAA,qBAAqB,GAAG;IACnC;QACE,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACT,4GAA4G;QAC9G,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uBAAuB;iBACrC;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;CACF,CAAC;AAEF,SAAS,SAAS,CAAC,CAAe;IAChC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,OAAO,EAAE,IAAA,wBAAW,EAAC,CAAC,CAAC,WAAW,CAAC;QACnC,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;QACxC,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YACnC,CAAC,CAAE,CAAC,CAAC,SAAwC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAU,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC7E,CAAC,CAAC,EAAE;KACP,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,0BAA0B,CAC9C,KAAa,EACb,IAA6B;IAE7B,MAAM,MAAM,GAAG,IAAA,0BAAa,GAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,EAAE,CAAC;IAEvF,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAW,EAAC,MAAM,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/E,MAAM,SAAS,GAAG,IAAA,mCAAsB,EAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,IAAA,6BAAgB,EAAC,SAAS,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * FHIR Observation (laboratory category) — lab results with reference ranges.
3
+ */
4
+ export declare const fhirLabResultsTools: {
5
+ name: string;
6
+ description: string;
7
+ inputSchema: {
8
+ type: "object";
9
+ properties: {
10
+ patientId: {
11
+ type: string;
12
+ description: string;
13
+ };
14
+ fromDate: {
15
+ type: string;
16
+ description: string;
17
+ };
18
+ toDate: {
19
+ type: string;
20
+ description: string;
21
+ };
22
+ code: {
23
+ type: string;
24
+ description: string;
25
+ };
26
+ };
27
+ required: string[];
28
+ };
29
+ }[];
30
+ export declare function handleFhirLabResultsTool(_name: string, args: Record<string, unknown>): Promise<{
31
+ content: Array<{
32
+ type: string;
33
+ text: string;
34
+ }>;
35
+ }>;
36
+ //# sourceMappingURL=lab-results.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lab-results.d.ts","sourceRoot":"","sources":["../../../src/tools/fhir/lab-results.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;GA4B/B,CAAC;AAEF,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAe7D"}