animal; if (!$animal instanceof Animal) { return; } $medicalVisit = $entry->medicalVisit; $progressUpdate = $entry->progressUpdate; $isMedical = (string)$entry->entry_type === AnimalStreamEntry::TYPE_MEDICAL && $medicalVisit instanceof AnimalMedicalVisit; $isProgress = (string)$entry->entry_type === AnimalStreamEntry::TYPE_PROGRESS && $progressUpdate instanceof AnimalProgressUpdate; if (!$isMedical && !$isProgress) { return; } $animalName = $animal->getDisplayName(); $mediaReference = ''; $chipRows = []; $dateText = ''; $detailRows = []; if ($isProgress) { $customValues = $progressUpdate->getCustomFieldDisplayValues(true); $additionalFields = []; foreach ($customValues as $customField) { if ((string)($customField['field_key'] ?? '') === 'media_reference') { $mediaReference = trim((string)$customField['value']); continue; } $additionalFields[] = [ 'label' => (string)$customField['label'], 'value' => (string)$customField['value'], ]; } $dateText = DateDisplayHelper::format((string)$progressUpdate->update_at); if (trim((string)$progressUpdate->weight) !== '') { $chipRows[] = Yii::t('AnimalManagementModule.base', 'Weight') . ': ' . trim((string)$progressUpdate->weight); } if (trim((string)$progressUpdate->vitals) !== '') { $chipRows[] = Yii::t('AnimalManagementModule.base', 'Vitals'); } $detailRows[] = ['label' => Yii::t('AnimalManagementModule.base', 'Animal'), 'value' => $animalName]; if (!empty($progressUpdate->vitals)) { $detailRows[] = ['label' => Yii::t('AnimalManagementModule.base', 'Vitals'), 'value' => (string)$progressUpdate->vitals]; } if (!empty($progressUpdate->behavior_notes)) { $detailRows[] = ['label' => Yii::t('AnimalManagementModule.base', 'Behavior'), 'value' => (string)$progressUpdate->behavior_notes]; } if (!empty($progressUpdate->meal_plan_changes)) { $detailRows[] = ['label' => Yii::t('AnimalManagementModule.base', 'Meal Plan'), 'value' => (string)$progressUpdate->meal_plan_changes]; } if (!empty($progressUpdate->housing_changes)) { $detailRows[] = ['label' => Yii::t('AnimalManagementModule.base', 'Housing'), 'value' => (string)$progressUpdate->housing_changes]; } if (!empty($progressUpdate->medical_concerns)) { $detailRows[] = ['label' => Yii::t('AnimalManagementModule.base', 'Medical Concerns'), 'value' => (string)$progressUpdate->medical_concerns]; } if (!empty($additionalFields)) { $text = ''; foreach ($additionalFields as $field) { $text .= $field['label'] . ': ' . $field['value'] . "\n"; } $detailRows[] = ['label' => Yii::t('AnimalManagementModule.base', 'Additional Fields'), 'value' => trim($text)]; } } elseif ($isMedical) { $hiddenMedicalKeys = [ 'second_physician_name', 'second_physician_business_name', 'second_physician_street_address', 'second_physician_city', 'second_physician_state', 'second_physician_zip', 'second_physician_cell_phone', 'second_physician_business_phone', 'second_physician_license_number', 'previous_physicians', ]; $knownMedicalKeys = [ 'weight', 'pulse', 'blood_pressure', 'oxygen', 'chronic_conditions', 'acute_conditions', 'special_needs', 'date_of_most_recent_medical_visit', 'physician_name', 'physician_business_name', 'physician_street_address', 'physician_city', 'physician_state', 'physician_zip', 'physician_cell_phone', 'physician_business_phone', 'physician_license_number', 'medical_media_reference', 'media_reference', ]; $vitalLabelOverrides = [ 'blood_pressure' => 'BP', 'oxygen' => 'O₂', ]; $fieldsByKey = []; $additionalFields = []; foreach ($medicalVisit->getCustomFieldDisplayValues(true) as $customField) { $fieldKey = (string)($customField['field_key'] ?? ''); if (in_array($fieldKey, $hiddenMedicalKeys, true)) { continue; } $fieldValue = trim((string)($customField['value'] ?? '')); if ($fieldValue === '') { continue; } if ($fieldKey === 'medical_media_reference' || $fieldKey === 'media_reference') { $mediaReference = $fieldValue; continue; } if (in_array($fieldKey, $knownMedicalKeys, true)) { $fieldsByKey[$fieldKey] = [ 'label' => (string)($vitalLabelOverrides[$fieldKey] ?? ($customField['label'] ?? $fieldKey)), 'value' => $fieldValue, ]; continue; } $additionalFields[] = [ 'label' => (string)($customField['label'] ?? $fieldKey), 'value' => $fieldValue, ]; } $dateText = DateDisplayHelper::format((string)$medicalVisit->visit_at); foreach (['weight', 'pulse', 'blood_pressure', 'oxygen'] as $vitalKey) { if (!empty($fieldsByKey[$vitalKey]['value'])) { $chipRows[] = $fieldsByKey[$vitalKey]['label'] . ': ' . $fieldsByKey[$vitalKey]['value']; } } $detailRows[] = ['label' => Yii::t('AnimalManagementModule.base', 'Animal'), 'value' => $animalName]; if (!empty($medicalVisit->provider_name)) { $detailRows[] = ['label' => Yii::t('AnimalManagementModule.base', 'Provider'), 'value' => (string)$medicalVisit->provider_name]; } if (!empty($medicalVisit->notes)) { $detailRows[] = ['label' => Yii::t('AnimalManagementModule.base', 'Clinical Notes'), 'value' => (string)$medicalVisit->notes]; } if (!empty($medicalVisit->recommendations)) { $detailRows[] = ['label' => Yii::t('AnimalManagementModule.base', 'Recommendations'), 'value' => (string)$medicalVisit->recommendations]; } foreach (['chronic_conditions', 'acute_conditions', 'special_needs'] as $conditionKey) { if (empty($fieldsByKey[$conditionKey]['value'])) { continue; } $detailRows[] = [ 'label' => (string)$fieldsByKey[$conditionKey]['label'], 'value' => (string)$fieldsByKey[$conditionKey]['value'], ]; } if (!empty($fieldsByKey['date_of_most_recent_medical_visit']['value'])) { $detailRows[] = [ 'label' => (string)$fieldsByKey['date_of_most_recent_medical_visit']['label'], 'value' => DateDisplayHelper::format((string)$fieldsByKey['date_of_most_recent_medical_visit']['value']), ]; } if (!empty($additionalFields)) { $text = ''; foreach ($additionalFields as $field) { $text .= $field['label'] . ': ' . $field['value'] . "\n"; } $detailRows[] = ['label' => Yii::t('AnimalManagementModule.base', 'Additional Fields'), 'value' => trim($text)]; } } $hasMediaImage = $mediaReference !== '' && (preg_match('/^https?:\/\//i', $mediaReference) || substr($mediaReference, 0, 1) === '/'); ?>
<?= Yii::t('AnimalManagementModule.base', 'Animal stream media') ?>