diff --git a/src/App.jsx b/src/App.jsx
index 6e32783..9b1b245 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -60,6 +60,7 @@ const SCREEN_OPTIONS = [
{ id: 'appt:a1', lb: 'Детали приёма' },
{ id: 'results', lb: 'Результаты' },
{ id: 'result-audio', lb: 'Аудиограмма' },
+ { id: 'result:r2', lb: 'Эндоскопия носоглотки' },
{ id: 'recovery', lb: 'Восстановление' },
{ id: 'audiotest', lb: 'Тест слуха' },
{ id: 'chat', lb: 'Чат' },
diff --git a/src/PhoneApp.jsx b/src/PhoneApp.jsx
index 26d418e..2c7495f 100644
--- a/src/PhoneApp.jsx
+++ b/src/PhoneApp.jsx
@@ -8,7 +8,7 @@ import {
} from './screens/screens-booking.jsx';
import {
ApptsTabScreen, ApptDetailScreen,
- ResultsScreen, ResultAudioScreen,
+ ResultsScreen, ResultAudioScreen, ResultEndoscopyScreen,
RecoveryScreen, AudioTestScreen,
ChatTabScreen, ProfileTabScreen, QRScreen,
TelemedScreen, MedcardScreen, NotificationsScreen,
@@ -31,6 +31,7 @@ function renderScreen(screenId, nav, ctx) {
case 'appt': return ;
case 'results': return ;
case 'result-audio': return ;
+ case 'result': return ;
case 'recovery': return ;
case 'audiotest': return ;
case 'chat': return ;
diff --git a/src/screens/screens-misc.jsx b/src/screens/screens-misc.jsx
index 702f06a..042a50a 100644
--- a/src/screens/screens-misc.jsx
+++ b/src/screens/screens-misc.jsx
@@ -115,6 +115,182 @@ export function ApptDetailScreen({ nav, apptId }) {
);
}
+function EndoscopyTile({ label, time, seed = 0, big = false }) {
+ const variants = [
+ 'radial-gradient(circle at 45% 40%, #FCE1DD 0%, #E9A29B 35%, #B36962 65%, #5A2624 100%)',
+ 'radial-gradient(circle at 55% 50%, #FBD5D0 0%, #DC8981 40%, #9B4640 75%, #3F1B19 100%)',
+ 'radial-gradient(circle at 40% 35%, #FFE4DE 0%, #E7988F 40%, #A55651 70%, #4A1E1B 100%)',
+ 'radial-gradient(circle at 50% 55%, #FCDAD4 0%, #E5968C 35%, #A8544E 75%, #442220 100%)',
+ ];
+ const insetPad = big ? 14 : 8;
+ return (
+
+
+
+ {/* subtle highlight spot (specular) */}
+
+
+ {label}
+ {time}
+
+
+ );
+}
+
+export function ResultEndoscopyScreen({ nav, resultId = 'r2' }) {
+ const r = CLINIC_DATA.results.find(x => x.id === resultId) || CLINIC_DATA.results.find(x => x.kind === 'image');
+ const doctor = CLINIC_DATA.doctors.find(d => d.id === r.doctor);
+ const [selected, setSelected] = useState(null);
+
+ const images = [
+ { label: 'Носоглотка', time: '10:32' },
+ { label: 'Аденоиды', time: '10:33' },
+ { label: 'Хоана лев.', time: '10:34' },
+ { label: 'Хоана прав.', time: '10:35' },
+ ];
+ const diagnoses = ['Гипертрофия аденоидов III ст.'];
+ const conclusion = 'Слизистая носоглотки умеренно гиперемирована, отёчна. Глоточная миндалина (аденоиды) III степени, заполняет просвет хоан на 2/3 с обеих сторон. Отделяемое слизистое. Устья слуховых труб обозримы, без особенностей.';
+ const recommendations = [
+ 'Консультация ЛОР-хирурга в течение 2 недель',
+ 'Курс промываний «Кукушка» (5 процедур)',
+ 'Контрольная эндоскопия через 1 месяц',
+ 'Обсудить показания к аденотомии',
+ ];
+
+ return (
+
+
nav.pop()} rightIcon={I.doc} />
+
+
+
+
+
+
Исследование провёл
+
{doctor.name.split(' ').slice(0,2).join(' ')}
+
+
Готово
+
+
+
+ {images.map((img, i) => (
+
+ ))}
+
+
+
+
Диагноз
+
+ {diagnoses.map(d => {d})}
+
+
+
+
+
Заключение
+
{conclusion}
+
+
+
+
Рекомендации
+ {recommendations.map((rec, i, a) => (
+
+
+ {i < a.length - 1 &&
}
+
+ ))}
+
+
+
+
+
+
+
+
+
+
+
+ {selected !== null && (
+ setSelected(null)}
+ style={{
+ position: 'absolute', inset: 0, background: 'rgba(0,0,0,0.95)', zIndex: 200,
+ display: 'flex', flexDirection: 'column',
+ }}
+ >
+
+
+
{images[selected].label}
+
+
+
e.stopPropagation()}
+ style={{ flex: 1, display: 'flex', alignItems: 'center', justifyContent: 'center', padding: '0 20px' }}
+ >
+
+
+
+
+
+ {images.map((_, i) => (
+
+
+ )}
+
+ );
+}
+
export function ResultsScreen({ nav }) {
const { results, doctors } = CLINIC_DATA;
return (