import React, { useState, useEffect } from 'react'; import { TextareaControl } from "../ui/textarea-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 { Heading } from '../ui/heading'; import { Spacer } from '../ui/spacer'; import { Disabled } from '../ui/disabled'; import { useFormContext, Controller } from 'react-hook-form'; import { IValueSet, useAuthServiceContext, useValueSetServiceContext } from '../../services'; import { FhirCode, FhirCodeableConcept, FhirReference } from '../../components'; import { useFhirImmunizationEvaluationBroadcast, useFhirImmunizationEvaluations, useFhirImmunizations } from '../../hooks'; interface FhirImmunizationEvaluationProps { elevated?: boolean; disabled?: boolean; enableInlineActions?: boolean; } export const FhirImmunizationEvaluation: React.FC = ({ elevated = true, disabled = false }) => { const { control } = useFormContext(); const { userRole, USER_ROLES } = useAuthServiceContext(); const { fetchValueSet, valueSetUrls } = useValueSetServiceContext(); const [loading, setLoading] = useState(false); // value sets const [immunizationEvaluationStatus, setImmunizationEvaluationStatus] = useState([]); const [immunizationEvaluationTargetDisease, setImmunizationEvaluationTargetDisease] = useState([]); const [immunizationEvaluationDoseStatus, setImmunizationEvaluationDoseStatus] = useState([]); const [immunizationEvaluationDoseStatusReason, setImmunizationEvaluationDoseStatusReason] = useState([]); const isPatient = [USER_ROLES.PATIENT, USER_ROLES.RELATED_PERSON].includes(userRole as string); const spacerMargin = '24px'; useFhirImmunizationEvaluations(); useFhirImmunizationEvaluationBroadcast(); const { immunizationsList } = useFhirImmunizations(); useEffect(() => { const loadValueSets = async () => { setLoading(true); try { const [ immunizationEvaluationStatusValueSet, immunizationEvaluationTargetDiseaseValueSet, immunizationEvaluationDoseStatusValueSet, immunizationEvaluationDoseStatusReasonValueSet ] = await Promise.all([ fetchValueSet(valueSetUrls.immunizationEvaluationStatus), fetchValueSet(valueSetUrls.immunizationEvaluationTargetDisease), fetchValueSet(valueSetUrls.immunizationEvaluationDoseStatus), fetchValueSet(valueSetUrls.immunizationEvaluationDoseStatusReason) ]); setImmunizationEvaluationStatus(immunizationEvaluationStatusValueSet); setImmunizationEvaluationTargetDisease(immunizationEvaluationTargetDiseaseValueSet); setImmunizationEvaluationDoseStatus(immunizationEvaluationDoseStatusValueSet); setImmunizationEvaluationDoseStatusReason(immunizationEvaluationDoseStatusReasonValueSet); } catch (err) { console.error('Error loading value sets:', err); } finally { setLoading(false); } }; loadValueSets(); }, [fetchValueSet, valueSetUrls]); return ( {elevated && } Details {/* immunizationEvent */} {/* targetDisease */} {/* status */} {/* doseStatus */} {/* doseStatusReason */} {/* date */} ( )}/> Details {/* description */} ( )}/> {/* series */} ( )}/> {/* doseNumberPositiveInt */} ( )}/> {/* seriesDosesPositiveInt */} ( )}/> ); }; export default FhirImmunizationEvaluation;