import { CodeableConcept } from 'fhir/r4'; interface FHIRCodeableConceptDisplayProps { code: CodeableConcept | CodeableConcept[] | undefined | null; className?: string; emptyText?: string; multiple?: boolean; } export const formatFhirCodeableConcept = (value: CodeableConcept | CodeableConcept[] | undefined | null): string => { if (!value) { return ''; } if (Array.isArray(value)) { if (value.length === 0) { return ''; } const texts = value .map(concept => concept?.text ?? '') .filter(text => text); return texts.join(', '); } return value.text ?? ''; }; export const useFhirCodeableConcept = ( value: CodeableConcept | CodeableConcept[] | undefined | null ): string => { return formatFhirCodeableConcept(value); }; export const getCodeableConceptDisplay = ( value: CodeableConcept | undefined | null ): string => { if (!value || !value.coding || value.coding.length === 0) { return ''; } return value.coding[0].display ?? ''; }; export const getCodeableConceptCode = ( value: CodeableConcept | undefined | null ): string => { if (!value || !value.coding || value.coding.length === 0) { return ''; } return value.coding[0].code ?? ''; }; export const FhirCodeableConceptDisplay: React.FC = ({ code, className, emptyText = '', multiple = false }) => { if (!code || (Array.isArray(code) && code.length === 0)) { return {emptyText || 'Qualifications not provided'}; } if (multiple && Array.isArray(code)) { return (
{code.map((concept, index) => { const formattedConcept = formatFhirCodeableConcept(concept); return (
{formattedConcept || emptyText || '-'}
); })}
); } const formattedConcept = formatFhirCodeableConcept(code); return ( {formattedConcept || emptyText || '-'} ); };