Skip to main content
Glama
CodingInput.tsx1.89 kB
// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors // SPDX-License-Identifier: Apache-2.0 import type { Coding, QuestionnaireResponseItem, ValueSetExpansionContains } from '@medplum/fhirtypes'; import type { JSX } from 'react'; import { useState } from 'react'; import type { ComplexTypeInputProps } from '../ResourcePropertyInput/ResourcePropertyInput.utils'; import type { ValueSetAutocompleteProps } from '../ValueSetAutocomplete/ValueSetAutocomplete'; import { ValueSetAutocomplete } from '../ValueSetAutocomplete/ValueSetAutocomplete'; export interface CodingInputProps extends Omit<ValueSetAutocompleteProps, 'defaultValue' | 'onChange' | 'disabled' | 'name'>, ComplexTypeInputProps<Coding> { readonly response?: QuestionnaireResponseItem; } export function CodingInput(props: CodingInputProps): JSX.Element { const { defaultValue, onChange, withHelpText, response, ...rest } = props; const [value, setValue] = useState<Coding | undefined>(response?.answer?.[0]?.valueCoding ?? defaultValue); function handleChange(newValues: ValueSetExpansionContains[]): void { const newValue = newValues[0]; const newConcept = newValue && valueSetElementToCoding(newValue); setValue(newConcept); if (onChange) { onChange(newConcept); } } return ( <ValueSetAutocomplete defaultValue={value ? codingToValueSetElement(value) : undefined} maxValues={1} onChange={handleChange} withHelpText={withHelpText ?? true} {...rest} /> ); } function codingToValueSetElement(coding: Coding): ValueSetExpansionContains { return { system: coding.system, code: coding.code, display: coding.display, }; } function valueSetElementToCoding(element: ValueSetExpansionContains): Coding { return { system: element.system, code: element.code, display: element.display, }; }

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