Skip to main content
Glama
conceptmapping.test.ts3.03 kB
// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors // SPDX-License-Identifier: Apache-2.0 import { LOINC, SNOMED } from '@medplum/core'; import type { ConceptMap } from '@medplum/fhirtypes'; import { initAppServices, shutdownApp } from '../../app'; import { loadTestConfig } from '../../config/loader'; import { DatabaseMode, getDatabasePool } from '../../database'; import { withTestContext } from '../../test.setup'; import { getSystemRepo } from '../repo'; describe('ConceptMapping lookup table', () => { const systemRepo = getSystemRepo(); const conceptMap: ConceptMap = { resourceType: 'ConceptMap', status: 'active', group: [ { source: SNOMED, target: LOINC, element: [ { code: '271649006', target: [ { code: '8480-6', equivalence: 'equivalent', }, ], }, { code: '271650006', target: [ { code: '8462-4', equivalence: 'equivalent', }, ], }, ], }, ], }; beforeAll(async () => { const config = await loadTestConfig(); await initAppServices(config); }); afterAll(async () => { await shutdownApp(); }); test('Indexes mappings from ConceptMap resource', () => withTestContext(async () => { const systemResource = await systemRepo.createResource(conceptMap); const db = getDatabasePool(DatabaseMode.READER); const results = await db.query( 'SELECT "sourceCode", "targetCode" FROM "ConceptMapping" WHERE "conceptMap" = $1', [systemResource.id] ); expect(results.rows.map((r) => `${r.sourceCode} => ${r.targetCode}`).sort()).toStrictEqual([ `271649006 => 8480-6`, `271650006 => 8462-4`, ]); })); test('Retains existing mappings when none in resource', () => withTestContext(async () => { const systemResource = await systemRepo.createResource(conceptMap); await systemRepo.updateResource({ ...systemResource, group: undefined }); const db = getDatabasePool(DatabaseMode.READER); const results = await db.query( 'SELECT "sourceCode", "targetCode" FROM "ConceptMapping" WHERE "conceptMap" = $1', [systemResource.id] ); expect(results.rows.map((r) => `${r.sourceCode} => ${r.targetCode}`).sort()).toStrictEqual([ `271649006 => 8480-6`, `271650006 => 8462-4`, ]); })); test('Deletes lookup table rows with resource', async () => { const resource = await systemRepo.createResource(conceptMap); await systemRepo.deleteResource(resource.resourceType, resource.id); const db = getDatabasePool(DatabaseMode.READER); const results = await db.query('SELECT "sourceCode", "targetCode" FROM "ConceptMapping" WHERE "conceptMap" = $1', [ resource.id, ]); expect(results.rows).toHaveLength(0); }); });

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