Skip to main content
Glama
chargeitems.ts2.03 kB
// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors // SPDX-License-Identifier: Apache-2.0 import { getReferenceString } from '@medplum/core'; import type { MedplumClient } from '@medplum/core'; import type { ChargeItem, Encounter } from '@medplum/fhirtypes'; export const CPT = 'http://www.ama-assn.org/go/cpt'; /** * Standalone function to fetch and apply ChargeItemDefinition to charge item * @param medplum - Medplum client instance * @param chargeItem - Current charge item * @returns Promise with updated charge items */ export async function applyChargeItemDefinition(medplum: MedplumClient, chargeItem: ChargeItem): Promise<ChargeItem> { if (!chargeItem.definitionCanonical || chargeItem.definitionCanonical.length === 0) { return chargeItem; } const searchResult = await medplum.searchResources( 'ChargeItemDefinition', `url=${chargeItem.definitionCanonical[0]}` ); if (searchResult.length === 0) { return chargeItem; } const chargeItemDefinition = searchResult[0]; const applyResult = await medplum.post( medplum.fhirUrl('ChargeItemDefinition', chargeItemDefinition.id as string, '$apply'), { resourceType: 'Parameters', parameter: [ { name: 'chargeItem', valueReference: { reference: getReferenceString(chargeItem), }, }, ], } ); return applyResult as ChargeItem; } export async function getChargeItemsForEncounter(medplum: MedplumClient, encounter: Encounter): Promise<ChargeItem[]> { if (!encounter) { return []; } const chargeItems = await medplum.searchResources('ChargeItem', `context=${getReferenceString(encounter)}`); const updatedChargeItems = await Promise.all( chargeItems.map((chargeItem) => applyChargeItemDefinition(medplum, chargeItem)) ); return updatedChargeItems; } export function calculateTotalPrice(items: ChargeItem[]): number { return items.reduce((sum, item) => sum + (item.priceOverride?.value || 0), 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