import React, { useState, useEffect } from 'react'; import { TextareaControl } from "../ui/textarea-control"; import { CustomSelectControl } from "../ui/custom-select-control"; import type { CustomSelectOption } from "../ui/custom-select-control"; import { Card, CardHeader, CardBody, CardDivider } from '../ui/wp-card'; import { Elevation } from '../ui/elevation'; import { InputControl } from '../ui/input-control'; import { Divider } from '../ui/divider'; import { DismissibleAlert } from '../ui/dismissible-alert'; import { Heading } from '../ui/heading'; import { Flex, FlexItem } from '../ui/flex'; import { Spacer } from '../ui/spacer'; import { TabPanel } from '../ui/tab-panel'; import { Disabled } from '../ui/disabled'; import { DropdownMenu, DropdownMenuGroup, DropdownMenuItem } from '../ui/dropdown-menu'; import { useFormContext, Controller, useFieldArray } from 'react-hook-form'; import { IValueSet, useValueSetServiceContext } from '../../services'; import { unitIsMutableFor } from '../../utils/observations/unitIsMutableFor'; import { categoryIsMutableFor } from '../../utils/observations/categoryIsMutableFor'; import { FhirAnnotation, FhirCode, FhirCodeableConcept, FhirPeriod, FhirQuantity, FhirRange, FhirRatio, FhirReference, FhirReferenceCollection, FhirTiming, FhirValueSetSearch, TypeSelector } from '../../components'; import { useFhirCarePlans, useFhirCareTeams, useFhirDeviceRequests, useFhirDevices, useFhirEncounters, useFhirImmunizationRecommendations, useFhirImmunizations, useFhirMedicationAdministrations, useFhirMedicationDispenses, useFhirMedicationRequests, useFhirMedicationStatements, useFhirNutritionOrders, useFhirObservationBroadcast, useFhirObservations, useFhirPractitioners, useFhirProcedures, useFhirRelatedPersons } from '../../hooks'; import { PlusCircle, Trash2 } from 'lucide-react'; import { ChartBar } from 'lucide-react'; import { FhirResource } from 'fhir/r4'; // - WordPress's ToggleControl, swapped for the ui/* adapter. Same props, same JSX; // only `__nextHasNoMarginBottom` is dropped, which means nothing outside WordPress. import { ToggleControl } from '../ui/toggle-control'; interface FhirObservationProps { isNew: boolean; observationProfile: string | undefined; onObservationProfileSelect: (observationProfile: string) => void; elevated?: boolean; disabled?: boolean; enableInlineActions?: boolean; } export const FhirObservation: React.FC = ({ isNew, observationProfile, onObservationProfileSelect, elevated = true, disabled = false, enableInlineActions = true }) => { const { control, watch, getValues } = useFormContext(); const { fetchValueSet, valueSetUrls } = useValueSetServiceContext(); const [loading, setLoading] = useState(false); const [showValue, setShowValue] = useState(true); const [showComponents, setShowComponents] = useState(true); const [initialTabName, setInitialTabName] = useState<'value' | 'components'>('value'); const [showObservationCode, setShowObservationCode] = useState(false); const [isCategoryMutable, setIsCategoryMutable] = useState(false); const [isQuantityMutable, setIsQuantityMutable] = useState(false); const [isQuantityRequired, setIsQuantityRequired] = useState(false); const [observationCodes, setObservationCodes] = useState([]); const [showComponentCode, setShowComponentCode] = useState(false); const [componentCodes, setComponentCodes] = useState([]); const [quantityUnits, setQuantityUnits] = useState([]); const [valueLabel, setValueLabel] = useState('Value'); const [valueOptions, setValueOptions] = useState([]); const [componentOptions, setComponentOptions] = useState([]); // value sets const [observationStatus, setObservationStatus] = useState([]); const [observationCategory, setObservationCategory] = useState([]); const [dataAbsentReason, setDataAbsentReason] = useState([]); const [observationInterpretation, setObservationInterpretation] = useState([]); const [referencerangeMeaning, setReferencerangeMeaning] = useState([]); const [ucumVitalsCommon, setUcumVitalsCommon] = useState([]); const [ucumBodylength, setUcumBodylength] = useState([]); const [ucumBodytemp, setUcumBodytemp] = useState([]); const [ucumBodyweight, setUcumBodyweight] = useState([]); const [usCoreObservationAdiDocumentationOptions, setUsCoreObservationAdiDocumentationOptions] = useState([]); const [usCoreClinicalResultObservationCategory, setUsCoreClinicalResultObservationCategory] = useState([]); const [usCoreLaboratoryTestCodes, setUsCoreLaboratoryTestCodes] = useState([]); const [usCoreObservationOccupationOptions, setUsCoreObservationOccupationOptions] = useState([]); const [usCoreObservationPregnancyintentOptions, setUsCoreObservationPregnancyintentOptions] = useState([]); const [usCoreObservationPregnancystatusOptions, setUsCoreObservationPregnancystatusOptions] = useState([]); const [usCoreScreeningAssessmentObservationCategory, setUsCoreScreeningAssessmentObservationCategory] = useState([]); const [usCoreObservationScreeningAssessmentCodes, setUsCoreObservationScreeningAssessmentCodes] = useState([]); const [usCoreObservationSexualOrientationOptions, setUsCoreObservationSexualOrientationOptions] = useState([]); const [usCoreSimpleObservationCategory, setUsCoreSimpleObservationCategory] = useState([]); const [usCoreSmokingstatusCodes, setUsCoreSmokingstatusCodes] = useState([]); const [unitsOfMeasureCaseSensitive, setUnitsOfMeasureCaseSensitive] = useState([]); const [usCoreSmokingstatusOptions, setUsCoreSmokingstatusOptions] = useState([]); const [usCoreVitalSignsCodes, setUsCoreVitalSignsCodes] = useState([]); const spacerMargin = '24px'; useFhirObservations(); useFhirObservationBroadcast(); const { practitionersList } = useFhirPractitioners(); const { devicesList } = useFhirDevices(); const { encountersList } = useFhirEncounters(); const { careTeamsList } = useFhirCareTeams(); const { relatedPersonsList } = useFhirRelatedPersons(); const { medicationAdministrationsList } = useFhirMedicationAdministrations(); const { medicationDispensesList } = useFhirMedicationDispenses(); const { medicationStatementsList } = useFhirMedicationStatements(); const { proceduresList } = useFhirProcedures(); const { immunizationsList } = useFhirImmunizations(); const { carePlansList } = useFhirCarePlans(); const { deviceRequestsList } = useFhirDeviceRequests(); const { immunizationRecommendationsList } = useFhirImmunizationRecommendations(); const { medicationRequestsList } = useFhirMedicationRequests(); const { nutritionOrdersList } = useFhirNutritionOrders(); const effectiveType = watch('effectiveType'); const valueType = watch('valueType'); const referenceRangeFieldArray = useFieldArray({ control, name: 'referenceRange' }); const componentFieldArray = useFieldArray({ control, name: 'component' }); const performerFieldArray = useFieldArray({ control, name: 'performer' }); const basedOnFieldArray = useFieldArray({ control, name: 'basedOn' }); const partOfFieldArray = useFieldArray({ control, name: 'partOf' }); useEffect(() => { const loadValueSets = async () => { setLoading(true); try { const [ observationStatusValueSet, observationCategoryValueSet, dataAbsentReasonValueSet, observationInterpretationValueSet, referencerangeMeaningValueSet, ucumVitalsCommonValueSet, ucumBodylengthValueSet, ucumBodytempValueSet, ucumBodyweightValueSet, usCoreObservationAdiDocumentationOptionsValueSet, usCoreClinicalResultObservationCategoryValueSet, // usCoreLaboratoryTestCodesValueSet, // usCoreObservationOccupationOptionsValueSet, usCoreObservationPregnancyintentOptionsValueSet, usCoreObservationPregnancystatusOptionsValueSet, // usCoreScreeningAssessmentObservationCategoryValueSet, usCoreObservationScreeningAssessmentCodesValueSet, usCoreObservationSexualOrientationOptionsValueSet, usCoreSimpleObservationCategoryValueSet, usCoreSmokingstatusCodesValueSet, // unitsOfMeasureCaseSensitiveValueSet, usCoreSmokingstatusOptionsValueSet, usCoreVitalSignsCodesValueSet ] = await Promise.all([ fetchValueSet(valueSetUrls.observationStatus), fetchValueSet(valueSetUrls.observationCategory), fetchValueSet(valueSetUrls.dataAbsentReason), fetchValueSet(valueSetUrls.observationInterpretation), fetchValueSet(valueSetUrls.referencerangeMeaning), fetchValueSet(valueSetUrls.ucumVitalsCommon), fetchValueSet(valueSetUrls.ucumBodylength), fetchValueSet(valueSetUrls.ucumBodytemp), fetchValueSet(valueSetUrls.ucumBodyweight), fetchValueSet(valueSetUrls.usCoreObservationAdiDocumentationOptions), fetchValueSet(valueSetUrls.usCoreClinicalResultObservationCategory), // fetchValueSet(valueSetUrls.usCoreLaboratoryTestCodes), // fetchValueSet(valueSetUrls.usCoreObservationOccupationOptions2), fetchValueSet(valueSetUrls.usCoreObservationPregnancyintentOptions), fetchValueSet(valueSetUrls.usCoreObservationPregnancystatusOptions), // fetchValueSet(valueSetUrls.usCoreScreeningAssessmentObservationCategory), fetchValueSet(valueSetUrls.usCoreObservationScreeningAssessmentCodes), fetchValueSet(valueSetUrls.usCoreObservationSexualOrientationOptions), fetchValueSet(valueSetUrls.usCoreSimpleObservationCategory), fetchValueSet(valueSetUrls.usCoreSmokingstatusCodes), // fetchValueSet(valueSetUrls.unitsOfMeasureCaseSensitive), fetchValueSet(valueSetUrls.usCoreSmokingstatusOptions), fetchValueSet(valueSetUrls.usCoreVitalSignsCodes) ]); setObservationStatus(observationStatusValueSet); setObservationCategory(observationCategoryValueSet); setDataAbsentReason(dataAbsentReasonValueSet); setObservationInterpretation(observationInterpretationValueSet); setReferencerangeMeaning(referencerangeMeaningValueSet); setUcumVitalsCommon(ucumVitalsCommonValueSet); setUcumBodylength(ucumBodylengthValueSet); setUcumBodytemp(ucumBodytempValueSet); setUcumBodyweight(ucumBodyweightValueSet); setUsCoreObservationAdiDocumentationOptions(usCoreObservationAdiDocumentationOptionsValueSet); setUsCoreClinicalResultObservationCategory(usCoreClinicalResultObservationCategoryValueSet); // setUsCoreLaboratoryTestCodes(usCoreLaboratoryTestCodesValueSet); // setUsCoreObservationOccupationOptions(usCoreObservationOccupationOptionsValueSet); setUsCoreObservationPregnancyintentOptions(usCoreObservationPregnancyintentOptionsValueSet); setUsCoreObservationPregnancystatusOptions(usCoreObservationPregnancystatusOptionsValueSet); // setUsCoreScreeningAssessmentObservationCategory(usCoreScreeningAssessmentObservationCategoryValueSet); setUsCoreObservationScreeningAssessmentCodes(usCoreObservationScreeningAssessmentCodesValueSet); setUsCoreObservationSexualOrientationOptions(usCoreObservationSexualOrientationOptionsValueSet); setUsCoreSimpleObservationCategory(usCoreSimpleObservationCategoryValueSet); setUsCoreSmokingstatusCodes(usCoreSmokingstatusCodesValueSet); // setUnitsOfMeasureCaseSensitive(unitsOfMeasureCaseSensitiveValueSet); setUsCoreSmokingstatusOptions(usCoreSmokingstatusOptionsValueSet); setUsCoreVitalSignsCodes(usCoreVitalSignsCodesValueSet); } catch (err) { console.error('Error loading value sets:', err); } finally { setLoading(false); } }; loadValueSets(); }, [fetchValueSet, valueSetUrls]); useEffect(() => { // One statement rather than a setter in each of twenty-four branches, which is how the // chain lost it twice. The rule is a table now, and it has a test. setIsQuantityMutable(unitIsMutableFor(observationProfile)); setIsCategoryMutable(categoryIsMutableFor(observationProfile)); // Every flag below is set back to the value it was declared with, so a branch only has to name // what it changes. Without this a branch that sets three of the eight keeps the other five from // whichever profile rendered last, and a profile with no branch at all keeps all eight. setInitialTabName('value'); setValueLabel('Value'); setShowValue(true); setShowComponents(true); setShowObservationCode(false); setIsQuantityRequired(false); setQuantityUnits([]); setShowComponentCode(false); setObservationCodes([]); setValueOptions([]); setComponentOptions([]); if (observationProfile === 'us-core-average-blood-pressure') { // us-core-average-blood-pressure setInitialTabName('components'); setShowValue(false); setShowComponents(true); setIsQuantityRequired(true); setShowObservationCode(false); setQuantityUnits(undefined); setShowComponentCode(false); } else if (observationProfile === 'us-core-care-experience-preference') { // us-core-care-experience-preference setInitialTabName('value'); setValueLabel('Care experience preference'); setShowValue(true); setShowComponents(false); setIsQuantityRequired(true); setShowObservationCode(false); setQuantityUnits(undefined); setShowComponentCode(false); } else if (observationProfile === 'us-core-observation-adi-documentation') { // us-core-observation-adi-documentation setInitialTabName('value'); setValueLabel('Advance healthcare directive completed'); setShowValue(true); setShowComponents(false); setIsQuantityRequired(true); setShowObservationCode(false); setQuantityUnits(undefined); setShowComponentCode(false); setValueOptions(usCoreObservationAdiDocumentationOptions); } else if (observationProfile === 'us-core-observation-lab') { // us-core-observation-lab setInitialTabName('value'); setValueLabel('Result Value'); setShowValue(true); setShowComponents(false); setIsQuantityRequired(true); setShowObservationCode(true); setQuantityUnits(undefined); setShowComponentCode(true); setValueOptions(undefined); } else if (observationProfile === 'us-core-observation-occupation') { // us-core-observation-occupation setInitialTabName('components'); setValueLabel('History of Occupation') setShowValue(true); setShowComponents(true); setIsQuantityRequired(false); setShowObservationCode(false); setQuantityUnits(undefined); setShowComponentCode(false); setValueOptions(undefined); setComponentOptions(undefined); } else if (observationProfile === 'us-core-observation-pregnancyintent') { // us-core-observation-pregnancyintent setInitialTabName('value'); setValueLabel('Pregnancy intention in the next year - Reported'); setShowValue(true); setShowComponents(false); setIsQuantityRequired(false); setShowObservationCode(false); setQuantityUnits(undefined); setShowComponentCode(false); setValueOptions(usCoreObservationPregnancyintentOptions); } else if (observationProfile === 'us-core-observation-pregnancystatus') { // us-core-observation-pregnancystatus setInitialTabName('value'); setValueLabel('Pregnancy status'); setShowValue(true); setShowComponents(false); setIsQuantityRequired(false); setShowObservationCode(false); setQuantityUnits(undefined); setShowComponentCode(false); setValueOptions(usCoreObservationPregnancystatusOptions); } else if (observationProfile === 'us-core-observation-screening-assessment') { // us-core-observation-screening-assessment setInitialTabName('value'); setValueLabel('Actual result'); setShowValue(true); setShowComponents(false); setIsQuantityRequired(true); setShowObservationCode(true); setObservationCodes(undefined); setQuantityUnits(undefined); setShowComponentCode(false); setValueOptions(undefined); } else if (observationProfile === 'us-core-observation-sexual-orientation') { // us-core-observation-sexual-orientation setInitialTabName('value'); setValueLabel('Sexual orientation'); setShowValue(true); setShowComponents(false); setShowObservationCode(false); setIsQuantityRequired(false); setQuantityUnits(undefined); setShowComponentCode(false); setValueOptions(usCoreObservationSexualOrientationOptions); } else if (observationProfile === 'us-core-smokingstatus') { // us-core-smokingstatus setInitialTabName('value'); setValueLabel('Smoking Status'); setShowValue(true); setShowComponents(false); setIsQuantityRequired(false); setShowObservationCode(true); setObservationCodes(usCoreSmokingstatusCodes); setQuantityUnits(undefined); setShowComponentCode(false); setValueOptions(usCoreSmokingstatusOptions); } else if (observationProfile === 'us-core-treatment-intervention-preference') { // us-core-treatment-intervention-preference setInitialTabName('value'); setValueLabel('Actual result'); setShowValue(true); setShowComponents(false); setIsQuantityRequired(true); setShowObservationCode(false); setObservationCodes(undefined); setQuantityUnits(undefined); setShowComponentCode(false); setValueOptions(undefined); } else if (observationProfile === 'us-core-vital-signs') { // us-core-vital-signs setInitialTabName('value'); setShowValue(true); setShowComponents(true); setShowObservationCode(true); setQuantityUnits(ucumVitalsCommon); setShowComponentCode(true); } else if (observationProfile === 'pediatric-bmi-for-age') { // pediatric-bmi-for-age setInitialTabName('value'); setValueLabel('Body mass index (BMI) [Percentile] Per age and sex'); setShowValue(true); setShowComponents(false); setShowObservationCode(false); setIsQuantityRequired(true); setQuantityUnits(undefined); setShowComponentCode(false); } else if (observationProfile === 'pediatric-weight-for-height') { // pediatric-weight-for-height setInitialTabName('value'); setValueLabel('Weight-for-length Per age and sex'); setShowValue(true); setShowComponents(false); setShowObservationCode(false); setIsQuantityRequired(true); setQuantityUnits(undefined); setShowComponentCode(false); } else if (observationProfile === 'us-core-blood-pressure') { // us-core-blood-pressure setInitialTabName('components'); setShowValue(false); setShowComponents(true); setShowObservationCode(false); setIsQuantityRequired(true); setQuantityUnits(undefined); setShowComponentCode(false); } else if (observationProfile === 'us-core-bmi') { // us-core-bmi setInitialTabName('value'); setValueLabel('Body mass index (BMI) [Ratio]'); setShowValue(true); setShowComponents(false); setShowObservationCode(false); setIsQuantityRequired(true); setQuantityUnits(undefined); setShowComponentCode(false); } else if (observationProfile === 'us-core-body-height') { // us-core-body-height setInitialTabName('value'); setValueLabel('Body height'); setShowValue(true); setShowComponents(false); setShowObservationCode(false); setIsQuantityRequired(true); setQuantityUnits(ucumBodylength); setShowComponentCode(false); } else if (observationProfile === 'us-core-body-temperature') { // us-core-body-temperature setInitialTabName('value'); setValueLabel('Body temperature'); setShowValue(true); setShowComponents(false); setShowObservationCode(false); setIsQuantityRequired(true); setQuantityUnits(ucumBodytemp); setShowComponentCode(false); } else if (observationProfile === 'us-core-body-weight') { // us-core-body-weight setInitialTabName('value'); setValueLabel('Body weight'); setShowValue(true); setShowComponents(false); setShowObservationCode(false); setIsQuantityRequired(true); setQuantityUnits(ucumBodyweight); setShowComponentCode(false); } else if (observationProfile === 'us-core-head-circumference') { // us-core-head-circumference setInitialTabName('value'); setValueLabel('Head Occipital-frontal circumference'); setShowValue(true); setShowComponents(false); setShowObservationCode(false); setIsQuantityRequired(true); setQuantityUnits(ucumBodylength); setShowComponentCode(false); } else if (observationProfile === 'us-core-heart-rate') { // us-core-heart-rate setInitialTabName('value'); setValueLabel('Heart rate'); setShowValue(true); setShowComponents(false); setShowObservationCode(false); setIsQuantityRequired(true); setQuantityUnits(undefined); setShowComponentCode(false); } else if (observationProfile === 'us-core-pulse-oximetry') { // us-core-pulse-oximetry setInitialTabName('value'); setShowValue(true); setShowComponents(true); } else if (observationProfile === 'us-core-respiratory-rate') { // us-core-respiratory-rate setInitialTabName('value'); setValueLabel('Respiratory rate'); setShowValue(true); setShowComponents(false); setShowObservationCode(false); setIsQuantityRequired(true); setQuantityUnits(undefined); setShowComponentCode(false); } else if (observationProfile === 'head-occipital-frontal-circumference-percentile') { // head-occipital-frontal-circumference-percentile setInitialTabName('value'); setValueLabel('Head Occipital-frontal circumference Percentile'); setShowValue(true); setShowComponents(false); setIsQuantityRequired(true); setShowObservationCode(false); setIsQuantityRequired(true); setQuantityUnits(undefined); setShowComponentCode(false); } else { // NO PROFILE, AND THAT IS THE ORDINARY CASE: 19 of 4,160 stored observations carry one. // Without this branch the chain above simply does not run, isQuantityMutable keeps its // initial false, and the Unit box renders disabled and empty - so a result stored with // no unit could never be given one. The profile picker is isNew-only, so there is no // other way in either. Units stay undefined, which is what makes FhirQuantity offer the // UCUM search rather than a published list. setQuantityUnits(undefined); } }, [ observationProfile, usCoreObservationAdiDocumentationOptions, usCoreObservationPregnancyintentOptions, usCoreObservationPregnancystatusOptions, usCoreObservationSexualOrientationOptions, usCoreSmokingstatusCodes, usCoreSmokingstatusOptions, ucumVitalsCommon, ucumBodylength, ucumBodytemp, ucumBodyweight ]); const addReferenceRange = () => { referenceRangeFieldArray.append({ low: { value: 0, unit: '', system: '', code: '' }, high: { value: 0, unit: '', system: '', code: '' }, type: null, appliesTo: [], age: null, text: '' }); }; const removeReferenceRange = (index: number) => { referenceRangeFieldArray.remove(index); }; const addComponent = () => { componentFieldArray.append({ code: null, valueType: '', valueQuantity: { value: null, unit: '', system: '', code: '' }, valueCodeableConcept: null, valueString: '', valueBoolean: false, valueInteger: 0, valueRange: { low: { value: 0 }, high: { value: 0 } }, valueRatio: { numerator: { value: 0 }, denominator: { value: 0 } }, valueSampledData: null, valueTime: '', valueDateTime: '', valuePeriod: { start: '', end: '' }, dataAbsentReason: null, interpretation: [], referenceRange: [] }); }; const removeComponent = (index: number) => { componentFieldArray.remove(index); }; const getSelectedObservationProfile = () => { switch (observationProfile) { case 'us-core-average-blood-pressure': return 'Average Blood Pressure'; case 'us-core-care-experience-preference': return 'Care Experience Preference'; case 'us-core-observation-adi-documentation': return 'Observation ADI Documentation'; case 'us-core-observation-pregnancyintent': return 'Observation Pregnancy Intent'; case 'us-core-observation-pregnancystatus': return 'Observation Pregnancy Status'; case 'us-core-observation-screening-assessment': return 'Observation Screening Assessment'; case 'us-core-observation-sexual-orientation': return 'Observation Sexual Orientation'; case 'us-core-smokingstatus': return 'Smoking Status Observation'; case 'us-core-treatment-intervention-preference': return 'Treatment Intervention Preference'; case 'pediatric-bmi-for-age': return 'Pediatric BMI for Age Observation'; case 'pediatric-weight-for-height': return 'Pediatric Weight for Height Observation'; case 'us-core-blood-pressure': return 'Blood Pressure'; case 'us-core-bmi': return 'BMI'; case 'us-core-body-height': return 'Body Height'; case 'us-core-body-temperature': return 'Body Temperature'; case 'us-core-body-weight': return 'Body Weight'; case 'us-core-head-circumference': return 'Head Circumference'; case 'us-core-heart-rate': return 'Heart Rate'; case 'us-core-respiratory-rate': return 'Respiratory Rate'; case 'head-occipital-frontal-circumference-percentile': return 'Pediatric Head Occipital Frontal Circumference Percentile'; } return ''; }; return ( {elevated && } Details {observationProfile && (`: ${getSelectedObservationProfile()}`)} {isNew && ( )} {!observationProfile && ( No observation profile selected. )} {(isNew && observationProfile || !isNew) && ( <> {/* status */} {/* code */} {showObservationCode && ( <> {observationProfile === 'us-core-observation-lab' ? ( ) : observationProfile === 'us-core-observation-screening-assessment' ? ( ) : ( )} )} {/* category */} {/* doseType */} {effectiveType === 'dateTime' && ( <> {/* effectiveDateTime */} ( )}/> )} {effectiveType === 'period' && ( <> {/* effectivePeriod */} )} {effectiveType === 'timing' && ( <> {/* effectiveTiming */} )} {effectiveType === 'instant' && ( <> {/* effectiveInstant */} ( )}/> )} {/* issued */} ( )}/> {/* encounter */} {(tab) => { // value if (tab.name === 'value') { return (
{/*Observation Value*/} {/**/} {/**/} {/* valueType */} {!valueType && ( <> ( { field.onChange(newValue.selectedItem.key); }}/> )}/> )} {valueType === 'quantity' && ( <> {/* valueQuantity */} )} {valueType === 'codeableConcept' && ( <> {/* valueCodeableConcept */} {/**/} )} {valueType === 'string' && ( <> ( )}/> )} {valueType === 'boolean' && ( <> ( )}/> )} {valueType === 'integer' && ( <> ( field.onChange(parseInt(value))}/> )}/> )} {valueType === 'range' && ( <> )} {valueType === 'ratio' && ( <> )} {valueType === 'time' && ( <> ( )}/> )} {valueType === 'dateTime' && ( <> ( )}/> )} {valueType === 'period' && ( <> )} {/* dataAbsentReason */} {/* interpretation */}
); } // components if (tab.name === 'components') { return (
{/**/} {/*Component results*/} {/**/} {componentFieldArray.fields.length === 0 && ( <> No components added yet. )} {componentFieldArray.fields.map((field, index) => ( {/*

Component {index + 1}

*/}

{getValues(`component.${index}.code`)?.display}

{false && ( )}
{/**/} {/* */} {/* */} {/* */} {/* Code:*/} {/* */} {/* */} {/* {getValues(`component.${index}.code`).display}*/} {/* */} {/* */} {/* */} {/**/} {/**/} {/* code */} {showComponentCode && ( <> )} {/* valueType */} {false && ( <> ( { field.onChange(newValue.selectedItem.key); }}/> )}/> )} {watch(`component.${index}.valueType`) === 'quantity' && ( <> {/* valueQuantity */} )} {watch(`component.${index}.valueType`) === 'codeableConcept' && ( <> )} {watch(`component.${index}.valueType`) === 'string' && ( <> ( )}/> )} {watch(`component.${index}.valueType`) === 'boolean' && ( <> ( )}/> )} {watch(`component.${index}.valueType`) === 'integer' && ( <> ( field.onChange(parseInt(value))}/> )}/> )} {watch(`component.${index}.valueType`) === 'range' && ( <> )} {watch(`component.${index}.valueType`) === 'ratio' && ( <> )} {/* component.dataAbsentReason */} {/* component.interpretation */}
))} {false && componentFieldArray.fields.length > 0 && ( )}
); } // referenceRanges if (tab.name === 'referenceRanges') { return (
Reference Ranges {referenceRangeFieldArray.fields.length === 0 && ( <> No reference ranges added yet. )} {referenceRangeFieldArray.fields.map((field, index) => (

Reference Range {index + 1}

{/* low */} {/* high */} {/* type */} {/* appliesTo */} {/* text */} ( )}/>
))} {referenceRangeFieldArray.fields.length > 0 && ( )}
); } // details if (tab.name === 'details') { return (
{/* bodySite */} {/* method */} {/* device */}
); } // performers if (tab.name === 'performers') { return (
{/* performer */} { switch (referenceType) { case 'Practitioner': return practitionersList.map(p => p.practitioner); case 'CareTeam': return careTeamsList; case 'RelatedPerson': return relatedPersonsList; default: return []; } }} required={false} disabled={disabled} multiple={true} enableInlineActions={enableInlineActions}/>
); } // basedOn if (tab.name === 'basedOn') { return (
{/* basedOn */} { switch (referenceType) { case 'CarePlan': return carePlansList; case 'DeviceRequest': return deviceRequestsList; case 'ImmunizationRecommendation': return immunizationRecommendationsList; case 'MedicationRequest': return medicationRequestsList; case 'NutritionOrder': return nutritionOrdersList; default: return []; } }} required={false} disabled={disabled} enableInlineActions={enableInlineActions}/>
); } // partOf if (tab.name === 'partOf') { return (
{/* partOf */} { switch (referenceType) { case 'MedicationAdministration': return medicationAdministrationsList; case 'MedicationDispense': return medicationDispensesList; case 'MedicationStatement': return medicationStatementsList; case 'Procedure': return proceduresList; case 'Immunization': return immunizationsList; default: return []; } }} required={false} disabled={disabled} enableInlineActions={enableInlineActions}/>
); } // notes if (tab.name === 'notes') { return (
{/* note */}
); } }}
)}
); }; export default FhirObservation;