'BP', 'oxygen' => 'O₂', ]; $label = (string)($vitalLabelOverrides[$fieldKey] ?? $definition['label']); if ((int)$definition['required'] === 1) { $label .= ' *'; } $fieldName = "AnimalMedicalVisitForm[customFields][$fieldKey]"; $fieldValue = $model->customFields[$fieldKey] ?? ''; ob_start(); ?>
'form-control', 'rows' => 3, 'id' => "animalmedicalvisitform-customfields-$fieldKey"]) ?>
getCustomFieldSelectOptions($fieldKey), ['class' => 'form-control', 'prompt' => Yii::t('AnimalManagementModule.base', 'Select...'), 'id' => "animalmedicalvisitform-customfields-$fieldKey"] ) ?>
'form-control', 'step' => 'any', 'id' => "animalmedicalvisitform-customfields-$fieldKey"]) ?>
'form-control', 'id' => "animalmedicalvisitform-customfields-$fieldKey"]) ?>
'form-control', 'id' => "animalmedicalvisitform-customfields-$fieldKey"]) ?>
'form-control', 'id' => "animalmedicalvisitform-customfields-$fieldKey"]) ?>
getCustomFieldDefinitions(); $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', ]; $remainingMedicalDefinitions = []; foreach ($medicalCustomDefinitions as $fieldKey => $definition) { if (in_array($fieldKey, $knownMedicalKeys, true) || in_array($fieldKey, $hiddenMedicalKeys, true)) { continue; } $remainingMedicalDefinitions[$fieldKey] = $definition; } $newMedicalMediaPath = trim((string)($medicalVisitForm->customFields['medical_media_reference'] ?? $medicalVisitForm->customFields['media_reference'] ?? '')); $hasNewMedicalMedia = $newMedicalMediaPath !== '' && (preg_match('/^https?:\/\//i', $newMedicalMediaPath) || substr($newMedicalMediaPath, 0, 1) === '/'); $medicalGalleryModalId = 'medical-media-gallery-modal'; $medicalAddModalId = 'add-medical-visit-modal'; $medicalFormId = 'add-medical-visit-form'; $openMedicalEditId = (int)Yii::$app->request->get('inlineMedicalEdit', 0); $openMedicalAdd = (int)Yii::$app->request->get('inlineMedicalAdd', 0) === 1; $medicalVitalLabelOverrides = [ 'blood_pressure' => 'BP', 'oxygen' => 'O₂', ]; ?>
Medical Visits') ?>
getDisplayName()), $space->createUrl('/animal_management/animals/view', ['id' => $animal->id]), ['style' => 'font-size:20px;font-weight:700;line-height:1.2;'] ) ?> createUrl('/animal_management/animals/index'), ['style' => 'font-size:16px;line-height:1.2;'] ) ?> ' . Yii::t('AnimalManagementModule.base', 'Add Medical Visit'), '#medical-add-inline', [ 'class' => 'btn btn-success btn-sm', 'title' => Yii::t('AnimalManagementModule.base', 'Add Medical Visit'), 'aria-label' => Yii::t('AnimalManagementModule.base', 'Add Medical Visit'), 'data-toggle' => 'collapse', ]) ?>
getCustomFieldDisplayValues($canManage); $visitFieldsByKey = []; $additionalVisitFields = []; $medicalMedia = ''; foreach ($visitCustomValues 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') { $medicalMedia = $fieldValue; continue; } if (in_array($fieldKey, $knownMedicalKeys, true)) { $visitFieldsByKey[$fieldKey] = [ 'label' => (string)($medicalVitalLabelOverrides[$fieldKey] ?? ($customField['label'] ?? $fieldKey)), 'value' => $fieldValue, ]; continue; } $additionalVisitFields[] = [ 'label' => (string)($customField['label'] ?? $fieldKey), 'value' => $fieldValue, ]; } $hasMedicalMedia = $medicalMedia !== '' && (preg_match('/^https?:\/\//i', $medicalMedia) || substr($medicalMedia, 0, 1) === '/'); $visitDateDisplay = DateDisplayHelper::format((string)$visit->visit_at); $vitalKeys = ['weight', 'pulse', 'blood_pressure', 'oxygen']; $hasVitals = false; foreach ($vitalKeys as $vitalKey) { if (!empty($visitFieldsByKey[$vitalKey]['value'])) { $hasVitals = true; break; } } ?>
<?= Yii::t('AnimalManagementModule.base', 'Medical media') ?>
visit_at) ?>
:
provider_name)): ?>
: provider_name) ?>
', '#medical-edit-inline-' . (int)$visit->id, [ 'class' => 'btn btn-xs btn-default', 'data-toggle' => 'collapse', 'title' => Yii::t('AnimalManagementModule.base', 'Edit'), 'aria-label' => Yii::t('AnimalManagementModule.base', 'Edit'), ] ) ?>
notes)): ?>
notes)) ?>
recommendations)): ?>
recommendations)) ?>
:
registerJs(<< 0)) { sideSpacing = parseFloat(editorNode.closest('.panel-body').css('padding-left')); } if (!(sideSpacing > 0)) { sideSpacing = 14; } var fixedHeaderHeight = 0; $('.navbar-fixed-top:visible, #topbar:visible, .topbar:visible, .layout-top-container:visible').each(function() { var h = $(this).outerHeight() || 0; if (h > fixedHeaderHeight) { fixedHeaderHeight = h; } }); var topReserve = Math.max(sideSpacing, 14) + Math.max(fixedHeaderHeight, 64) + 28; var top = Math.max(0, editorNode.offset().top - topReserve); $('html, body').stop(true).animate({scrollTop: top}, 220); } function refreshMedicalVisitsPageRoot() { return $.get(window.location.href).done(function(html) { var doc = $('
').append($.parseHTML(html, document, true)); var nextRoot = doc.find(pageRootSelector).first(); if (!nextRoot.length) { return; } $(pageRootSelector).replaceWith(nextRoot); if (typeof window.initMedicalVisitsPage === 'function') { window.initMedicalVisitsPage(); } }); } if (!window.__animalMedicalVisitsInlineListenerBound) { window.__animalMedicalVisitsInlineListenerBound = true; window.addEventListener('message', function(event) { var data = event.data || {}; if (!data || typeof data !== 'object' || data.source !== 'animal-inline-editor') { return; } if (data.type === 'cancel') { if (data.collapseId) { $('#' + data.collapseId).collapse('hide'); } return; } if (data.type === 'saved') { if (data.collapseId) { $('#' + data.collapseId).collapse('hide'); } refreshMedicalVisitsPageRoot(); } }); } window.initMedicalVisitsPage = function() { $(document) .off('shown.bs.collapse.medicalInlineScroll', pageRootSelector + ' .medical-feed-inline-editor') .on('shown.bs.collapse.medicalInlineScroll', pageRootSelector + ' .medical-feed-inline-editor', function() { scrollInlineEditorIntoView(this); }); $(document) .off('click.medicalInlineScroll', pageRootSelector + ' a[href^="#medical-edit-inline-"], ' + pageRootSelector + ' a[href="#medical-add-inline"]') .on('click.medicalInlineScroll', pageRootSelector + ' a[href^="#medical-edit-inline-"], ' + pageRootSelector + ' a[href="#medical-add-inline"]', function() { var target = $(this).attr('href'); if (!target || target.charAt(0) !== '#') { return; } window.setTimeout(function() { scrollInlineEditorIntoView($(target)); }, 260); }); var preopenedEditor = $(pageRootSelector + ' .medical-feed-inline-editor.in').first(); if (preopenedEditor.length) { window.setTimeout(function() { scrollInlineEditorIntoView(preopenedEditor); }, 260); } function renderMedicalPreview(source) { var preview = $('#medical-media-preview'); if (!preview.length) { return; } if (source) { preview.html('Selected medical media'); } else { preview.html(''); } } function markSelectedMedicalThumb(value) { $('.medical-media-select-thumb').removeClass('is-selected'); if (!value) { return; } $('.medical-media-select-thumb').each(function() { if (($(this).attr('data-media-url') || '') === value) { $(this).addClass('is-selected'); } }); } $(document).off('click.medicalMediaSelect', pageRootSelector + ' .medical-media-select-thumb').on('click.medicalMediaSelect', pageRootSelector + ' .medical-media-select-thumb', function() { var mediaUrl = $(this).attr('data-media-url') || ''; $('#medical-media-gallery-path').val(mediaUrl); markSelectedMedicalThumb(mediaUrl); $('#medicalMediaUpload').val(''); $('input[name="removeMedicalMedia"]').prop('checked', false); if (mediaUrl) { renderMedicalPreview(mediaUrl); } $('#{$medicalGalleryModalId}').modal('hide'); }); $(document).off('change.medicalMediaUpload', '#medicalMediaUpload').on('change.medicalMediaUpload', '#medicalMediaUpload', function() { var file = this.files && this.files[0] ? this.files[0] : null; if (!file) { return; } $('#medical-media-gallery-path').val(''); markSelectedMedicalThumb(''); $('input[name="removeMedicalMedia"]').prop('checked', false); var reader = new FileReader(); reader.onload = function(e) { renderMedicalPreview(e.target.result); $('#{$medicalGalleryModalId}').modal('hide'); }; reader.readAsDataURL(file); }); $(document).off('shown.bs.modal.medicalMediaModal', '#{$medicalGalleryModalId}').on('shown.bs.modal.medicalMediaModal', '#{$medicalGalleryModalId}', function() { markSelectedMedicalThumb($('#medical-media-gallery-path').val()); }); $(document).off('submit.medicalVisitAjax', formSelector).on('submit.medicalVisitAjax', formSelector, function(event) { event.preventDefault(); var form = this; var formData = new FormData(form); var submitButtons = $(form).find('button[type="submit"], input[type="submit"]'); submitButtons.prop('disabled', true); $.ajax({ url: form.action, type: 'POST', data: formData, processData: false, contentType: false }).always(function() { submitButtons.prop('disabled', false); }).done(function() { $('#{$medicalAddModalId}').modal('hide'); refreshMedicalVisitsPageRoot(); }); }); }; window.initMedicalVisitsPage(); })(); JS , \yii\web\View::POS_END); ?>