Skip to main content
Glama
subsumes.test.ts5.66 kB
// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors // SPDX-License-Identifier: Apache-2.0 import { ContentType } from '@medplum/core'; import type { Bundle, Parameters } from '@medplum/fhirtypes'; import express from 'express'; import request from 'supertest'; import { initApp, shutdownApp } from '../../app'; import { loadTestConfig } from '../../config/loader'; import { initTestAuth } from '../../test.setup'; const app = express(); const system = 'http://terminology.hl7.org/CodeSystem/v3-RoleCode'; describe('CodeSystem subsumes', () => { let accessToken: string; beforeAll(async () => { const config = await loadTestConfig(); await initApp(app, config); accessToken = await initTestAuth({ superAdmin: true }); expect(accessToken).toBeDefined(); }); afterAll(async () => { await shutdownApp(); }); test('Subsumes', async () => { const res2 = await request(app) .post(`/fhir/R4/CodeSystem/$subsumes`) .set('Authorization', 'Bearer ' + accessToken) .set('Content-Type', ContentType.FHIR_JSON) .send({ resourceType: 'Parameters', parameter: [ { name: 'system', valueUri: system }, { name: 'codeA', valueCode: 'SIB' }, { name: 'codeB', valueCode: 'ITWINBRO' }, ], } as Parameters); expect(res2.status).toBe(200); expect(res2.body.resourceType).toStrictEqual('Parameters'); const output = res2.body as Parameters; expect(output.parameter?.find((p) => p.name === 'outcome')?.valueCode).toBe('subsumes'); }); test('Subsumed by', async () => { const res2 = await request(app) .post(`/fhir/R4/CodeSystem/$subsumes`) .set('Authorization', 'Bearer ' + accessToken) .set('Content-Type', ContentType.FHIR_JSON) .send({ resourceType: 'Parameters', parameter: [ { name: 'system', valueUri: system }, { name: 'codeA', valueCode: 'WIFE' }, { name: 'codeB', valueCode: 'SIGOTHR' }, ], } as Parameters); expect(res2.status).toBe(200); expect(res2.body.resourceType).toStrictEqual('Parameters'); const output = res2.body as Parameters; expect(output.parameter?.find((p) => p.name === 'outcome')?.valueCode).toBe('subsumed-by'); }); test('Equivalent', async () => { const res2 = await request(app) .post(`/fhir/R4/CodeSystem/$subsumes`) .set('Authorization', 'Bearer ' + accessToken) .set('Content-Type', ContentType.FHIR_JSON) .send({ resourceType: 'Parameters', parameter: [ { name: 'system', valueUri: system }, { name: 'codeA', valueCode: 'INLAW' }, { name: 'codeB', valueCode: 'INLAW' }, ], } as Parameters); expect(res2.status).toBe(200); expect(res2.body.resourceType).toStrictEqual('Parameters'); const output = res2.body as Parameters; expect(output.parameter?.find((p) => p.name === 'outcome')?.valueCode).toBe('equivalent'); }); test('Not subsumed', async () => { const res2 = await request(app) .post(`/fhir/R4/CodeSystem/$subsumes`) .set('Authorization', 'Bearer ' + accessToken) .set('Content-Type', ContentType.FHIR_JSON) .send({ resourceType: 'Parameters', parameter: [ { name: 'system', valueUri: system }, { name: 'codeA', valueCode: 'BRO' }, { name: 'codeB', valueCode: 'VET' }, ], } as Parameters); expect(res2.status).toBe(200); expect(res2.body.resourceType).toStrictEqual('Parameters'); const output = res2.body as Parameters; expect(output.parameter?.find((p) => p.name === 'outcome')?.valueCode).toBe('not-subsumed'); }); test('Returns error on incomplete input', async () => { const res2 = await request(app) .post(`/fhir/R4/CodeSystem/$subsumes`) .set('Authorization', 'Bearer ' + accessToken) .set('Content-Type', ContentType.FHIR_JSON) .send({ resourceType: 'Parameters', parameter: [ { name: 'system', valueUri: system }, { name: 'codeA', valueCode: 'SIB' }, ], } as Parameters); expect(res2.status).toBe(400); expect(res2.body.resourceType).toStrictEqual('OperationOutcome'); }); test('GET endpoint', async () => { const res2 = await request(app) .get(`/fhir/R4/CodeSystem/$subsumes?system=${system}&codeA=SIB&codeB=ITWINBRO`) .set('Authorization', 'Bearer ' + accessToken) .set('Content-Type', ContentType.FHIR_JSON); expect(res2.status).toBe(200); expect(res2.body.resourceType).toStrictEqual('Parameters'); const output = res2.body as Parameters; expect(output.parameter?.find((p) => p.name === 'outcome')?.valueCode).toBe('subsumes'); }); test('GET instance endpoint', async () => { const res = await request(app) .get(`/fhir/R4/CodeSystem?url=${system}`) .set('Authorization', 'Bearer ' + accessToken) .set('Content-Type', ContentType.FHIR_JSON); expect(res.status).toBe(200); expect(res.body.resourceType).toStrictEqual('Bundle'); const codeSystem = (res.body as Bundle).entry?.[0]?.resource; const res2 = await request(app) .get(`/fhir/R4/CodeSystem/${codeSystem?.id}/$subsumes?codeA=SIB&codeB=ITWINBRO`) .set('Authorization', 'Bearer ' + accessToken) .set('Content-Type', ContentType.FHIR_JSON); expect(res2.status).toBe(200); expect(res2.body.resourceType).toStrictEqual('Parameters'); const output = res2.body as Parameters; expect(output.parameter?.find((p) => p.name === 'outcome')?.valueCode).toBe('subsumes'); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/medplum/medplum'

If you have feedback or need assistance with the MCP directory API, please join our Discord server