diff --git a/app/globals.css b/app/globals.css
index 11002c0..e689ddc 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -576,6 +576,56 @@ button.organ-card-image:focus-visible { outline: 2px solid #8b6fc4; outline-offs
.quiz-actions { display: flex; flex-direction: column; gap: 6px; margin-top: 14px; }
.quiz-actions button { min-height: 40px; border: 1px solid var(--line); border-radius: 10px; background: rgba(255,255,255,.5); cursor: pointer; font-size: 11px; }
+/* ------------------------------------------------------- quiz review */
+.quiz-review { margin-top: 16px; text-align: left; border-top: 1px solid var(--line); padding-top: 12px; }
+.quiz-review h3 { margin: 0 0 10px; font-size: 10px; text-transform: uppercase; letter-spacing: .1em; color: var(--lavender); font-weight: 700; }
+.quiz-review-empty { margin: 0; color: var(--muted); font: 500 12px/1.5 var(--font-serif), serif; }
+.quiz-review-item { padding: 10px 0; border-bottom: 1px solid var(--line); }
+.quiz-review-item:last-child { border-bottom: 0; }
+.quiz-review-item p { margin: 0 0 5px; font: 600 12px/1.4 var(--font-serif), serif; color: var(--ink); }
+.quiz-review-item div { margin-top: 2px; font: 500 11px/1.4 var(--font-serif), serif; }
+.quiz-review-item .good { color: #46634c; }
+.quiz-review-item .bad { color: #7c4a3e; }
+
+/* ---------------------------------------------------- function chip */
+.function-chip {
+ position: absolute;
+ z-index: 14;
+ top: 14px;
+ left: 50%;
+ transform: translateX(-50%);
+ max-width: min(430px, calc(100% - 24px));
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ padding: 9px 12px;
+ border: 1px solid rgba(235,124,107,.35);
+ border-radius: 999px;
+ background: rgba(255,251,245,.94);
+ backdrop-filter: blur(10px);
+ box-shadow: 0 10px 30px rgba(87,62,43,.16);
+ animation: chip-in .3s ease;
+}
+@keyframes chip-in { from { opacity: 0; transform: translate(-50%, -6px); } to { opacity: 1; transform: translate(-50%, 0); } }
+.function-chip > span {
+ flex: none;
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ font: 700 12px var(--font-sans), sans-serif;
+ color: var(--coral);
+ white-space: nowrap;
+}
+.function-chip > small { font: 500 11px/1.35 var(--font-serif), serif; color: var(--muted); }
+.function-chip > button { flex: none; border: 0; background: transparent; color: var(--muted); cursor: pointer; padding: 2px; margin-left: 2px; }
+.function-chip > button:hover { color: var(--ink); }
+
+/* -------------------------------------------------------- histology */
+.lesson-block .histology-list { gap: 9px; }
+.histology-list li { display: flex; flex-direction: column; gap: 2px; }
+.histology-list b { color: var(--ink); font: 600 12.5px var(--font-serif), serif; }
+.histology-list span { color: var(--muted); font-size: 11.5px; }
+
/* ---------------------------------------------------------- systems view */
.systems-view { text-align: left; }
.systems-intro { margin: 0 0 14px; color: var(--muted); font: 500 13px/1.5 var(--font-serif), serif; }
@@ -698,6 +748,9 @@ button.organ-card-image:focus-visible { outline: 2px solid #8b6fc4; outline-offs
.lang-switch button { padding: 5px 9px; }
.profile span { width: 34px; height: 34px; }
.mobile-library-trigger { display: flex; }
+ .function-chip { top: 10px; }
+ .function-chip > small { display: none; }
+ .function-chip > span { font-size: 11px; }
.workspace { display: block; margin-top: 8px; }
.viewer-shell { height: 68vh; min-height: 520px; border-radius: 22px; }
.organ-library {
diff --git a/app/lib/content/animations.ts b/app/lib/content/animations.ts
new file mode 100644
index 0000000..ecf5e72
--- /dev/null
+++ b/app/lib/content/animations.ts
@@ -0,0 +1,105 @@
+import type { OrganId } from "../anatomy-data";
+
+/**
+ * Per-organ function animations. The 3D viewer plays these procedurally (no
+ * animation clips required): a heartbeat, a breathing cycle, peristalsis etc.
+ * The label/description pair is shown in the viewer chip while the model is
+ * animating and is fully bilingual.
+ */
+export type BilingualAnimation = {
+ en: { label: string; desc: string };
+ ru: { label: string; desc: string };
+};
+
+export const functionAnimations: Record
= {
+ heart: {
+ en: {
+ label: "Cardiac cycle",
+ desc: "A pulse follows each heartbeat: the atria fill, the ventricles contract from the apex, then the muscle relaxes before the next beat.",
+ },
+ ru: {
+ label: "Сердечный цикл",
+ desc: "Пульс повторяет каждый удар: предсердия наполняются, желудочки сокращаются от верхушки, затем мышца расслабляется до следующего сокращения.",
+ },
+ },
+ lungs: {
+ en: {
+ label: "Breathing cycle",
+ desc: "The lungs expand as the diaphragm descends and recoil as it rises — a full cycle about every four seconds.",
+ },
+ ru: {
+ label: "Дыхательный цикл",
+ desc: "Лёгкие расширяются, когда диафрагма опускается, и спадаются при её подъёме — полный цикл примерно раз в четыре секунды.",
+ },
+ },
+ brain: {
+ en: {
+ label: "Neural rhythms",
+ desc: "The brain's surface pulses with the blood that supplies its ~86 billion neurons.",
+ },
+ ru: {
+ label: "Нейронные ритмы",
+ desc: "Поверхность мозга пульсирует в такт крови, питающей его ~86 миллиардов нейронов.",
+ },
+ },
+ liver: {
+ en: {
+ label: "Metabolic pulse",
+ desc: "Blood flows through the sinusoids continuously; the subtle pulse mirrors hepatic blood flow.",
+ },
+ ru: {
+ label: "Метаболический пульс",
+ desc: "Кровь непрерывно течёт по синусоидам; лёгкая пульсация отражает печёночный кровоток.",
+ },
+ },
+ kidneys: {
+ en: {
+ label: "Filtration rhythm",
+ desc: "A gentle pulse as about 1.25 litres of blood pass through the kidneys every minute.",
+ },
+ ru: {
+ label: "Ритм фильтрации",
+ desc: "Лёгкая пульсация в такт примерно 1,25 литра крови, проходящим через почки каждую минуту.",
+ },
+ },
+ eyeball: {
+ en: {
+ label: "Scanning motion",
+ desc: "The eye makes small scanning movements (saccades) even when you think you are holding still.",
+ },
+ ru: {
+ label: "Сканирующее движение",
+ desc: "Глаз совершает мелкие сканирующие движения (саккады), даже когда вам кажется, что вы смотрите неподвижно.",
+ },
+ },
+ intestine: {
+ en: {
+ label: "Peristalsis",
+ desc: "Segmentation and peristaltic waves mix and propel the contents along the digestive tube.",
+ },
+ ru: {
+ label: "Перистальтика",
+ desc: "Сегментация и перистальтические волны перемешивают и продвигают содержимое по пищеварительной трубке.",
+ },
+ },
+ pancreas: {
+ en: {
+ label: "Glandular rhythm",
+ desc: "Enzymes are released in waves; the gentle motion mirrors secretion.",
+ },
+ ru: {
+ label: "Ритм железы",
+ desc: "Ферменты выделяются волнами; мягкое движение отражает секрецию.",
+ },
+ },
+ skin: {
+ en: {
+ label: "Renewal",
+ desc: "The epidermis constantly sheds and renews — a quiet, continuous turnover.",
+ },
+ ru: {
+ label: "Обновление",
+ desc: "Эпидермис постоянно слущивается и обновляется — тихий непрерывный процесс.",
+ },
+ },
+};
diff --git a/app/lib/content/histology.ts b/app/lib/content/histology.ts
new file mode 100644
index 0000000..2aca4e1
--- /dev/null
+++ b/app/lib/content/histology.ts
@@ -0,0 +1,134 @@
+import type { OrganId } from "../anatomy-data";
+
+/**
+ * Labeled histology for every organ: the tissue layers an introductory course
+ * expects you to identify, each with a one-line description. Bilingual and
+ * rendered in the lesson view as a labelled "tissue layers" list. The
+ * descriptions describe real, verifiable structures (see sources in
+ * `lessons.ts`); they are educational, not diagnostic.
+ */
+export type HistologyLayer = { name: string; detail: string };
+
+export type BilingualHistology = {
+ en: HistologyLayer[];
+ ru: HistologyLayer[];
+};
+
+export const histology: Record = {
+ heart: {
+ en: [
+ { name: "Epicardium", detail: "Visceral pericardium — a serous layer covering the heart; carries the coronary vessels and nerves." },
+ { name: "Myocardium", detail: "Cardiac muscle, thickest in the left ventricle; cells are connected by intercalated discs." },
+ { name: "Endocardium", detail: "Thin endothelial lining of the chambers and the heart valves." },
+ ],
+ ru: [
+ { name: "Эпикард", detail: "Висцеральный листок перикарда — серозный слой, покрывающий сердце; несёт венечные сосуды и нервы." },
+ { name: "Миокард", detail: "Сердечная мышца, толще всего в левом желудочке; клетки соединены вставочными дисками." },
+ { name: "Эндокард", detail: "Тонкая эндотелиальная выстилка камер сердца и клапанов." },
+ ],
+ },
+ brain: {
+ en: [
+ { name: "Cerebral cortex (grey matter)", detail: "2–4 mm of neuron cell bodies; the neocortex has six layers." },
+ { name: "White matter", detail: "Myelinated axons connecting cortical regions with each other and with deeper centres." },
+ { name: "Meninges", detail: "Dura mater, arachnoid mater and pia mater, with cerebrospinal fluid in the subarachnoid space." },
+ ],
+ ru: [
+ { name: "Кора больших полушарий (серое вещество)", detail: "2–4 мм тел нейронов; неокортекс имеет шесть слоёв." },
+ { name: "Белое вещество", detail: "Миелинизированные аксоны, соединяющие области коры между собой и с глубинными центрами." },
+ { name: "Мозговые оболочки", detail: "Твёрдая, паутинная и мягкая оболочки; спинномозговая жидкость — в подпаутинном пространстве." },
+ ],
+ },
+ lungs: {
+ en: [
+ { name: "Visceral pleura", detail: "Serous membrane that lets the lung glide against the chest wall during breathing." },
+ { name: "Alveolar epithelium", detail: "Type I pneumocytes (thin, for gas exchange) and type II pneumocytes (produce surfactant)." },
+ { name: "Alveolar–capillary membrane", detail: "Fused basement membranes, 0.5–1 µm thick — the site of oxygen and CO₂ diffusion." },
+ ],
+ ru: [
+ { name: "Висцеральная плевра", detail: "Серозная оболочка, позволяющая лёгкому скользить относительно грудной стенки при дыхании." },
+ { name: "Альвеолярный эпителий", detail: "Пневмоциты I типа (тонкие, для газообмена) и II типа (вырабатывают сурфактант)." },
+ { name: "Альвеолярно-капиллярная мембрана", detail: "Сросшиеся базальные мембраны толщиной 0,5–1 мкм — место диффузии кислорода и CO₂." },
+ ],
+ },
+ liver: {
+ en: [
+ { name: "Glisson's capsule", detail: "Fibrous connective-tissue capsule at the surface of the organ." },
+ { name: "Hepatic lobules", detail: "Plates of hepatocytes radiating from a central vein; the functional unit of the liver." },
+ { name: "Sinusoids", detail: "Fenestrated capillaries lined by endothelium and Kupffer cells (macrophages)." },
+ { name: "Portal triads", detail: "At the lobule corners: a branch of the portal vein, the hepatic artery and a bile duct." },
+ ],
+ ru: [
+ { name: "Капсула Глиссона", detail: "Фиброзная соединительнотканная капсула на поверхности органа." },
+ { name: "Печёночные дольки", detail: "Пластинки гепатоцитов, расходящиеся от центральной вены; функциональная единица печени." },
+ { name: "Синусоиды", detail: "Фенестрированные капилляры с эндотелием и клетками Купфера (макрофагами)." },
+ { name: "Портальные триады", detail: "По углам дольки: ветвь воротной вены, печёночная артерия и жёлчный проток." },
+ ],
+ },
+ kidneys: {
+ en: [
+ { name: "Fibrous capsule", detail: "Collagenous sheath surrounding the kidney." },
+ { name: "Renal cortex", detail: "Contains the renal corpuscles (glomerulus + Bowman's capsule) and convoluted tubules." },
+ { name: "Renal medulla", detail: "Loops of Henle and collecting ducts arranged into pyramids converging on the papillae." },
+ { name: "Urothelium", detail: "Transitional epithelium lining the renal pelvis and ureter." },
+ ],
+ ru: [
+ { name: "Фиброзная капсула", detail: "Коллагеновая оболочка, окружающая почку." },
+ { name: "Корковое вещество", detail: "Содержит почечные тельца (клубочек + капсула Боумена) и извитые канальцы." },
+ { name: "Мозговое вещество", detail: "Петли Генле и собирательные трубочки, образующие пирамиды, сходящиеся к сосочкам." },
+ { name: "Переходный эпителий", detail: "Выстилает почечную лоханку и мочеточник." },
+ ],
+ },
+ eyeball: {
+ en: [
+ { name: "Sclera and cornea", detail: "The outer fibrous coat; the cornea is avascular, transparent and highly innervated." },
+ { name: "Choroid", detail: "Vascular layer between sclera and retina, supplying the outer retinal layers." },
+ { name: "Retina", detail: "Ten layers: retinal pigment epithelium, photoreceptors (rods and cones), bipolar and ganglion cells." },
+ { name: "Lens", detail: "Avascular biconvex body of lens fibres, suspended by zonular fibres from the ciliary body." },
+ ],
+ ru: [
+ { name: "Склера и роговица", detail: "Наружная фиброзная оболочка; роговица бессосудистая, прозрачная и богато иннервирована." },
+ { name: "Сосудистая оболочка", detail: "Сосудистый слой между склерой и сетчаткой, питающий наружные слои сетчатки." },
+ { name: "Сетчатка", detail: "Десять слоёв: пигментный эпителий, фоторецепторы (палочки и колбочки), биполярные и ганглиозные клетки." },
+ { name: "Хрусталик", detail: "Бессосудистое двояковыпуклое тело из хрусталиковых волокон, подвешенное на цинновых связках." },
+ ],
+ },
+ intestine: {
+ en: [
+ { name: "Mucosa", detail: "Villi with enterocytes and goblet cells; crypts of Lieberkühn at their bases." },
+ { name: "Submucosa", detail: "Connective tissue with blood vessels and the submucosal (Meissner) nerve plexus." },
+ { name: "Muscularis externa", detail: "Inner circular and outer longitudinal smooth muscle layers with the myenteric (Auerbach) plexus." },
+ { name: "Serosa", detail: "Visceral peritoneum covering the free surface of the gut." },
+ ],
+ ru: [
+ { name: "Слизистая оболочка", detail: "Ворсинки с энтероцитами и бокаловидными клетками; крипты Либеркюна у их оснований." },
+ { name: "Подслизистая основа", detail: "Соединительная ткань с сосудами и подслизистым (мейснеровским) нервным сплетением." },
+ { name: "Мышечная оболочка", detail: "Внутренний циркулярный и наружный продольный слои гладких мышц с межмышечным (ауэрбаховским) сплетением." },
+ { name: "Серозная оболочка", detail: "Висцеральная брюшина, покрывающая свободную поверхность кишки." },
+ ],
+ },
+ pancreas: {
+ en: [
+ { name: "Acini", detail: "Pyramid-shaped cells secreting digestive enzymes, stored as zymogen granules." },
+ { name: "Islets of Langerhans", detail: "Endocrine clusters: α-cells (glucagon), β-cells (insulin), δ-cells (somatostatin), PP-cells." },
+ { name: "Ductal system", detail: "Intercalated and intralobular ducts merging into the main pancreatic duct." },
+ ],
+ ru: [
+ { name: "Ацинусы", detail: "Пирамидальные клетки, секретирующие пищеварительные ферменты в виде зимогенных гранул." },
+ { name: "Островки Лангерганса", detail: "Эндокринные скопления: α-клетки (глюкагон), β-клетки (инсулин), δ-клетки (соматостатин), PP-клетки." },
+ { name: "Протоковая система", detail: "Вставочные и внутридольковые протоки, сливающиеся в главный панкреатический проток." },
+ ],
+ },
+ skin: {
+ en: [
+ { name: "Epidermis", detail: "Stratified keratinising epithelium: stratum basale, spinosum, granulosum, lucidum, corneum." },
+ { name: "Dermis", detail: "Papillary layer (capillaries, Meissner corpuscles) and reticular layer (collagen, elastin, glands, follicles)." },
+ { name: "Hypodermis", detail: "Adipose tissue with Pacinian corpuscles; insulates and cushions." },
+ ],
+ ru: [
+ { name: "Эпидермис", detail: "Многослойный ороговевающий эпителий: базальный, шиповатый, зернистый, блестящий и роговой слои." },
+ { name: "Дерма", detail: "Сосочковый слой (капилляры, тельца Мейснера) и сетчатый слой (коллаген, эластин, железы, фолликулы)." },
+ { name: "Гиподерма", detail: "Жировая ткань с тельцами Пачини; изолирует и смягчает." },
+ ],
+ },
+};
diff --git a/app/lib/i18n.tsx b/app/lib/i18n.tsx
index 8f53db3..10fed57 100644
--- a/app/lib/i18n.tsx
+++ b/app/lib/i18n.tsx
@@ -117,6 +117,10 @@ export type UiStrings = {
quizMsgExcellent: string;
quizMsgGood: string;
quizMsgPractice: string;
+ quizReview: string;
+ quizYourAnswer: string;
+ quizCorrectAnswer: string;
+ quizNoMistakes: string;
// Systems modal
systemsModalTitle: string;
systemsIntro: string;
@@ -129,6 +133,7 @@ export type UiStrings = {
lessonStructure: string;
lessonFunctionTitle: string;
lessonClinicalTitle: string;
+ lessonHistology: string;
lessonSources: string;
lessonNotMedical: string;
// Compare modal
@@ -243,6 +248,10 @@ const en: UiStrings = {
quizMsgExcellent: "Excellent! You know this organ well.",
quizMsgGood: "Good work — re-read the explanations to solidify the details.",
quizMsgPractice: "A good start. Review the lesson, then try again.",
+ quizReview: "Review your answers",
+ quizYourAnswer: "Your answer",
+ quizCorrectAnswer: "Correct answer",
+ quizNoMistakes: "Perfect score — nothing to review.",
systemsModalTitle: "Body systems",
systemsIntro: "The human body is organised into twelve systems. Select one to see its role and the models available here.",
systemsSelect: "Select a system",
@@ -253,6 +262,7 @@ const en: UiStrings = {
lessonStructure: "Structure",
lessonFunctionTitle: "Function",
lessonClinicalTitle: "Clinical perspective",
+ lessonHistology: "Tissue layers",
lessonSources: "Sources",
lessonNotMedical: "Educational material only — not medical advice.",
compareModalTitle: "Side-by-side comparison",
@@ -366,6 +376,10 @@ const ru: UiStrings = {
quizMsgExcellent: "Отлично! Вы хорошо знаете этот орган.",
quizMsgGood: "Хорошая работа — перечитайте пояснения, чтобы закрепить детали.",
quizMsgPractice: "Неплохое начало. Повторите урок и попробуйте ещё раз.",
+ quizReview: "Разбор ответов",
+ quizYourAnswer: "Ваш ответ",
+ quizCorrectAnswer: "Правильный ответ",
+ quizNoMistakes: "Идеальный результат — разбирать нечего.",
systemsModalTitle: "Системы организма",
systemsIntro: "Тело человека организовано в двенадцать систем. Выберите систему, чтобы узнать её роль и доступные модели.",
systemsSelect: "Выберите систему",
@@ -376,6 +390,7 @@ const ru: UiStrings = {
lessonStructure: "Строение",
lessonFunctionTitle: "Функция",
lessonClinicalTitle: "Клинический взгляд",
+ lessonHistology: "Слои ткани",
lessonSources: "Источники",
lessonNotMedical: "Учебный материал — не медицинская рекомендация.",
compareModalTitle: "Сравнение органов",
diff --git a/app/lib/three/viewer.ts b/app/lib/three/viewer.ts
index 930720c..95a69ce 100644
--- a/app/lib/three/viewer.ts
+++ b/app/lib/three/viewer.ts
@@ -67,6 +67,11 @@ export class AnatomyViewer {
private fadeTween: gsap.core.Tween | null = null;
private disposed = false;
+ /** Procedural function animation (heartbeat, breathing, peristalsis…). */
+ private functionAnimation = false;
+ private animationTime = 0;
+ private animationKey: string | null = null;
+
constructor(container: HTMLElement, callbacks: ViewerCallbacks) {
this.container = container;
this.callbacks = callbacks;
@@ -239,10 +244,12 @@ export class AnatomyViewer {
this.assets.prefetch(url);
}
- async setOrgan(modelUrl: string, hotspots: Hotspot[], accent: string) {
+ async setOrgan(modelUrl: string, hotspots: Hotspot[], accent: string, animationKey: string | null = null) {
const request = ++this.loadRequest;
this.select(null);
this.callbacks.onLoading(true, 0);
+ this.animationKey = animationKey;
+ this.animationTime = 0;
const outgoing = this.organ;
if (outgoing) {
@@ -391,6 +398,7 @@ export class AnatomyViewer {
this.assets.update(delta);
this.dirty = true;
}
+ if (this.functionAnimation) this.applyFunctionAnimation(delta);
if (this.hoverProbe) this.resolveHover();
if (!this.dirty && now >= this.busyUntil) return;
@@ -407,6 +415,78 @@ export class AnatomyViewer {
this.dirty = true;
}
+ /**
+ * Turns the procedural function animation on or off. The motion is applied
+ * to the whole pivot (organ + hotspot dots), so the dots stay glued to the
+ * surface; amplitudes are kept subtle so the effect reads as physiology
+ * rather than wobble.
+ */
+ setFunctionAnimation(enabled: boolean) {
+ this.functionAnimation = enabled;
+ this.animationTime = 0;
+ if (!enabled && this.organ) {
+ // Restore the load-time pose when stopping mid-motion.
+ const pivot = this.organ.pivot;
+ pivot.rotation.set(0.05, -0.28, 0);
+ pivot.scale.setScalar(1);
+ pivot.position.set(0, 0, 0);
+ }
+ this.dirty = true;
+ }
+
+ private applyFunctionAnimation(delta: number) {
+ const pivot = this.organ?.pivot;
+ if (!pivot) return;
+ this.animationTime += delta;
+ const t = this.animationTime;
+ switch (this.animationKey) {
+ case "heart": {
+ // Lub-dub: quick ventricular systole, smaller echo (atrial kick).
+ const phase = (t * 1.1) % 1;
+ const systole = phase < 0.16 ? Math.sin((phase / 0.16) * Math.PI) : 0;
+ const echo = phase >= 0.34 && phase < 0.5 ? Math.sin(((phase - 0.34) / 0.16) * Math.PI) * 0.5 : 0;
+ pivot.scale.setScalar(1 + (systole + echo) * 0.045);
+ break;
+ }
+ case "lungs": {
+ // Slow inspiration/expiration (~13 breaths/min).
+ const breath = Math.sin(t * Math.PI * 2 * 0.22);
+ pivot.scale.setScalar(1 + 0.04 * breath);
+ pivot.position.y = 0.03 * breath;
+ break;
+ }
+ case "brain":
+ case "liver":
+ case "kidneys": {
+ // Gentle arterial pulse.
+ pivot.scale.setScalar(1 + 0.018 * Math.sin(t * Math.PI * 2 * 0.9));
+ break;
+ }
+ case "eyeball": {
+ // Small scanning motions (saccade-like) plus a subtle pulse.
+ pivot.rotation.x = 0.02 + 0.05 * Math.sin(t * Math.PI * 2 * 0.25);
+ pivot.rotation.z = 0.02 * Math.sin(t * Math.PI * 2 * 0.35);
+ pivot.scale.setScalar(1 + 0.01 * Math.sin(t * Math.PI * 2 * 1.1));
+ break;
+ }
+ case "intestine": {
+ // Peristaltic mixing: travelling wave approximated by a slow rock and pulse.
+ pivot.scale.setScalar(1 + 0.025 * Math.sin(t * Math.PI * 2 * 0.7));
+ pivot.rotation.z = 0.015 * Math.sin(t * Math.PI * 2 * 0.5);
+ break;
+ }
+ case "pancreas":
+ case "skin":
+ default: {
+ // Quiet glandular bob.
+ pivot.position.y = 0.04 * Math.sin(t * Math.PI * 2 * 0.4);
+ pivot.scale.setScalar(1 + 0.008 * Math.sin(t * Math.PI * 2 * 0.8));
+ break;
+ }
+ }
+ this.dirty = true;
+ }
+
private tween(target: object, vars: gsap.TweenVars) {
this.busy((vars.duration as number) ?? 0.5);
return gsap.to(target, { ...vars, onUpdate: () => (this.dirty = true) });
diff --git a/tests/content-data.test.mjs b/tests/content-data.test.mjs
index 33b6fcf..5cf49ff 100644
--- a/tests/content-data.test.mjs
+++ b/tests/content-data.test.mjs
@@ -5,6 +5,8 @@ import { organs } from "../app/lib/anatomy-data.ts";
import { quizBank, QUIZ_QUESTIONS_PER_ORGAN } from "../app/lib/content/questions.ts";
import { bodySystems, systemById, systemForOrgan } from "../app/lib/content/systems.ts";
import { lessons } from "../app/lib/content/lessons.ts";
+import { histology } from "../app/lib/content/histology.ts";
+import { functionAnimations } from "../app/lib/content/animations.ts";
const organIds = organs.map((organ) => organ.id);
@@ -77,3 +79,31 @@ describe("lessons", () => {
});
}
});
+
+describe("histology", () => {
+ for (const organ of organs) {
+ it(`${organ.id}: labelled bilingual tissue layers`, () => {
+ const layers = histology[organ.id];
+ assert.ok(layers.en.length >= 3, "too few layers");
+ assert.equal(layers.en.length, layers.ru.length, "layer count differs between languages");
+ for (const lang of ["en", "ru"]) {
+ for (const layer of layers[lang]) {
+ assert.ok(layer.name.length > 3, `${lang}: missing layer name`);
+ assert.ok(layer.detail.length > 20, `${lang}: short layer detail for "${layer.name}"`);
+ }
+ }
+ });
+ }
+});
+
+describe("function animations", () => {
+ for (const organ of organs) {
+ it(`${organ.id}: bilingual animation label and description`, () => {
+ const animation = functionAnimations[organ.id];
+ for (const lang of ["en", "ru"]) {
+ assert.ok(animation[lang].label.length > 3, `${lang}: missing label`);
+ assert.ok(animation[lang].desc.length > 20, `${lang}: missing description`);
+ }
+ });
+ }
+});
From 7cb6dd5dfefb0f685a68b1c0df21ffd1caa63f90 Mon Sep 17 00:00:00 2001
From: resarytrew <173765881+resarytrew@users.noreply.github.com>
Date: Wed, 5 Aug 2026 18:40:31 +0000
Subject: [PATCH 6/8] feat: expand catalogue to 30 organs with procedural 3D
models
- 21 new organs across all 12 systems: stomach, gallbladder, esophagus,
tongue, spleen, thymus, lymph node, thyroid, adrenals, pituitary,
trachea, larynx, bladder, uterus, ovary, testis, prostate, spinal cord,
diaphragm, biceps, femur.
- scripts/generate-organs.mjs: procedural GLB models (Three.js +
GLTFExporter, 20-150 KB each) fitted to the same normalized space as the
original assets; hotspot coordinates are auto-snapped onto the model
surface so the 3D dots land on the correct features.
- Full bilingual content for each new organ: EN/RU data, systems
membership, 3-question quiz bank (63 questions), structured lessons,
3-layer histology, function animations; search covers all of it.
- tsconfig: allowImportingTsExtensions so Node-based content tests can
import TS modules directly.
- Content tests now run 124 checks across 30 organs, RU parity, systems
coverage, lessons, histology and animations.
Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
---
REVIEW.md | 9 +-
app/lib/anatomy-data.ts | 28 +-
app/lib/anatomy-ru.ts | 715 ++++++++++++++++++++
app/lib/content/animations.ts | 85 +++
app/lib/content/histology.ts | 253 +++++++
app/lib/content/lessons-extra.ts | 889 +++++++++++++++++++++++++
app/lib/content/lessons.ts | 9 +-
app/lib/content/questions.ts | 1051 ++++++++++++++++++++++++++++++
app/lib/content/systems.ts | 39 +-
app/lib/organs-extra.ts | 602 +++++++++++++++++
public/models/adrenal.glb | Bin 0 -> 61508 bytes
public/models/biceps.glb | Bin 0 -> 80428 bytes
public/models/bladder.glb | Bin 0 -> 50132 bytes
public/models/diaphragm.glb | Bin 0 -> 37316 bytes
public/models/esophagus.glb | Bin 0 -> 16992 bytes
public/models/femur.glb | Bin 0 -> 134976 bytes
public/models/gallbladder.glb | Bin 0 -> 25280 bytes
public/models/larynx.glb | Bin 0 -> 68740 bytes
public/models/lymph-node.glb | Bin 0 -> 61488 bytes
public/models/ovary.glb | Bin 0 -> 91976 bytes
public/models/pituitary.glb | Bin 0 -> 38864 bytes
public/models/prostate.glb | Bin 0 -> 21692 bytes
public/models/spinal-cord.glb | Bin 0 -> 69880 bytes
public/models/spleen.glb | Bin 0 -> 37272 bytes
public/models/stomach.glb | Bin 0 -> 89784 bytes
public/models/testis.glb | Bin 0 -> 47848 bytes
public/models/thymus.glb | Bin 0 -> 91808 bytes
public/models/thyroid.glb | Bin 0 -> 63304 bytes
public/models/tongue.glb | Bin 0 -> 151680 bytes
public/models/trachea.glb | Bin 0 -> 134204 bytes
public/models/uterus.glb | Bin 0 -> 31928 bytes
scripts/generate-organs.mjs | 461 +++++++++++++
scripts/organs-hotspots.json | 556 ++++++++++++++++
tests/content-data.test.mjs | 45 +-
tsconfig.json | 23 +-
35 files changed, 4742 insertions(+), 23 deletions(-)
create mode 100644 app/lib/content/lessons-extra.ts
create mode 100644 app/lib/organs-extra.ts
create mode 100644 public/models/adrenal.glb
create mode 100644 public/models/biceps.glb
create mode 100644 public/models/bladder.glb
create mode 100644 public/models/diaphragm.glb
create mode 100644 public/models/esophagus.glb
create mode 100644 public/models/femur.glb
create mode 100644 public/models/gallbladder.glb
create mode 100644 public/models/larynx.glb
create mode 100644 public/models/lymph-node.glb
create mode 100644 public/models/ovary.glb
create mode 100644 public/models/pituitary.glb
create mode 100644 public/models/prostate.glb
create mode 100644 public/models/spinal-cord.glb
create mode 100644 public/models/spleen.glb
create mode 100644 public/models/stomach.glb
create mode 100644 public/models/testis.glb
create mode 100644 public/models/thymus.glb
create mode 100644 public/models/thyroid.glb
create mode 100644 public/models/tongue.glb
create mode 100644 public/models/trachea.glb
create mode 100644 public/models/uterus.glb
create mode 100644 scripts/generate-organs.mjs
create mode 100644 scripts/organs-hotspots.json
diff --git a/REVIEW.md b/REVIEW.md
index 55cb9c9..5332139 100644
--- a/REVIEW.md
+++ b/REVIEW.md
@@ -159,12 +159,15 @@
| **Подписанная гистология**: в каждом уроке — слои ткани с описаниями (эпикард/миокард/эндокард, слои сетчатки, крипты Либеркюна и т.д.) | ✅ |
| **Полное сравнение органов**: таблица по 6 параметрам (роль, размер, масса, локализация, кровоснабжение, заболевания) | ✅ |
| **Медицинская оговорка** и раздел источников в уроках | ✅ |
+| **Расширение до 30 органов**: +21 орган (желудок, жёлчный пузырь, пищевод, язык, селезёнка, тимус, лимфоузел, щитовидная железа, надпочечники, гипофиз, трахея, гортань, мочевой пузырь, матка, яичник, яичко, предстательная железа, спинной мозг, диафрагма, бицепс, бедренная кость) | ✅ |
+| **21 процедурная 3D-модель** (`scripts/generate-organs.mjs`, Three.js + GLTFExporter): стилизованные GLB 20–150 КБ, хотспоты спроецированы на поверхность моделей автоматически | ✅ |
+| **Контент для 21 органа**: полные EN/RU данные, системы, 63 вопроса квиза (3×21), уроки, гистология (3 слоя), анимации, поиск | ✅ |
| Расширенный поиск (описания, ткани, заболевания, хотспоты) | ✅ |
-| Автотесты контента (`tests/content-data.test.mjs`, 20 проверок) | ✅ |
+| Автотесты контента (`tests/content-data.test.mjs`, **124 проверки**: 30 органов, RU-покрытие, квиз, системы, уроки, гистология, анимации) | ✅ |
-Квиз и уроки перестали быть заглушками и теперь соответствуют уровню вводного курса анатомии; источники дают проверяемость фактов; дисклеймер снимает медицинско-правовой риск; функция «Animate» показывает настоящие процедурные 3D-анимации (сердечный цикл, дыхание, перистальтика). Оставшиеся направления Фаз 1–4 (30+ органов, верифицированные гистопрепараты, профиль/прогресс, i18n на другие языки) — в дорожной карте.
+Квиз и уроки перестали быть заглушками и теперь соответствуют уровню вводного курса анатомии; источники дают проверяемость фактов; дисклеймер снимает медицинско-правовой риск; функция «Animate» показывает настоящие процедурные 3D-анимации (сердечный цикл, дыхание, перистальтика). Каталог расширен до **30 органов** — каждый с 3D-моделью, квизом, уроком, гистологией и анимацией на двух языках. Оставшиеся направления Фаз 1–4 (верифицированные гистопрепараты с микрофотографиями, профиль/прогресс с сохранением, i18n на другие языки, медицинские изображения) — в дорожной карте.
-**Актуальная оценка: 64 → 76/100** (педагогика, интерактив и доверие к контенту значительно выросли; охват органов и верификация иллюстраций по-прежнему ограничивают оценку).
+**Актуальная оценка: 64 → 79/100** (охват органов, интерактив и доверие к контенту выросли существенно; ограничителями остаются верификация иллюстраций/моделей как «стилизованных» и отсутствие сохранения прогресса).
---
diff --git a/app/lib/anatomy-data.ts b/app/lib/anatomy-data.ts
index 74509c5..bdcd5a2 100644
--- a/app/lib/anatomy-data.ts
+++ b/app/lib/anatomy-data.ts
@@ -7,7 +7,28 @@ export type OrganId =
| "eyeball"
| "intestine"
| "pancreas"
- | "skin";
+ | "skin"
+ | "stomach"
+ | "gallbladder"
+ | "esophagus"
+ | "tongue"
+ | "spleen"
+ | "thymus"
+ | "lymph-node"
+ | "thyroid"
+ | "adrenal"
+ | "pituitary"
+ | "trachea"
+ | "larynx"
+ | "bladder"
+ | "uterus"
+ | "ovary"
+ | "testis"
+ | "prostate"
+ | "spinal-cord"
+ | "diaphragm"
+ | "biceps"
+ | "femur";
export type Hotspot = {
id: string;
@@ -17,6 +38,8 @@ export type Hotspot = {
color: string;
};
+import { extraOrgans } from "./organs-extra.ts";
+
export type Organ = {
id: OrganId;
name: string;
@@ -310,6 +333,9 @@ export const organs: Organ[] = [
{ id: "follicle", label: "Hair Follicle", detail: "Anchors each hair", position: [0.89, -0.44, 1.4], color: "#d89bc4" },
],
},
+
+ // The extended set: procedural models, glyph illustrations (see organs-extra.ts).
+ ...extraOrgans,
];
export const organById = Object.fromEntries(organs.map((organ) => [organ.id, organ])) as Record;
diff --git a/app/lib/anatomy-ru.ts b/app/lib/anatomy-ru.ts
index 450903a..782a810 100644
--- a/app/lib/anatomy-ru.ts
+++ b/app/lib/anatomy-ru.ts
@@ -308,6 +308,721 @@ export const organsRu: Record = {
{ id: "duct", label: "Панкреатический проток", detail: "Отводит ферменты в кишечник" },
],
},
+ stomach: {
+ genitive: "желудка",
+ name: "Желудок",
+ system: "Пищеварительная система",
+ description:
+ "J-образный мышечный мешок, который хранит пищу, перемешивает её и начинает переваривание белков.",
+ poetic: "Первый котёл",
+ size: "Около 25 см в длину",
+ weight: "Пустой: ~60–80 г",
+ location: "Верхняя левая часть брюшной полости, под диафрагмой",
+ function: "Хранит, перемешивает и начинает переваривать пищу",
+ dailyFact: "Вырабатывает 2–3 л желудочного сока",
+ medical: "Соляная кислота и пепсин начинают расщепление белков.",
+ bloodSupply: "Левая и правая желудочные артерии",
+ funFact:
+ "В растянутом состоянии вмещает около 1–1,5 л еды и напитков.",
+ tissue: "Слизистая оболочка с фундальными железами",
+ comparison: "Желудок и кишечник",
+ conditions: [
+ "Гастрит",
+ "Язвенная болезнь",
+ "Рак желудка",
+ "Гастроэзофагеальная рефлюксная болезнь (ГЭРБ)",
+ "Инфекция Helicobacter pylori",
+ "Гастропарез",
+ "Функциональная диспепсия",
+ "Синдром Золлингера–Эллисона",
+ ],
+ hotspots: [
+ { id: "fundus", label: "Дно желудка", detail: "Куполообразная верхняя часть" },
+ { id: "body", label: "Тело", detail: "Основной резервуар" },
+ { id: "pylorus", label: "Привратник", detail: "Вход в двенадцатиперстную кишку" },
+ ],
+ },
+ gallbladder: {
+ genitive: "жёлчного пузыря",
+ name: "Жёлчный пузырь",
+ system: "Пищеварительная система",
+ description:
+ "Небольшой грушевидный мешок, который хранит и концентрирует желчь между приёмами пищи.",
+ poetic: "Хранитель желчи",
+ size: "Около 7–10 см",
+ weight: "30–50 г",
+ location: "Под печенью, правое подреберье",
+ function: "Хранит и концентрирует желчь",
+ dailyFact: "Концентрирует желчь до 10 раз",
+ medical: "Жёлчные кислоты эмульгируют жиры, делая их доступными ферментам.",
+ bloodSupply: "Пузырная артерия",
+ funFact:
+ "Это единственный орган, который обычно удаляют без существенного ущерба — желчь течёт прямо из печени.",
+ tissue: "Слизистая оболочка жёлчного пузыря",
+ comparison: "Жёлчный пузырь и печень",
+ conditions: [
+ "Желчнокаменная болезнь",
+ "Холецистит",
+ "Полипы жёлчного пузыря",
+ "Рак жёлчного пузыря",
+ "Жёлчная колика",
+ "Холангит",
+ "Билиарный панкреатит",
+ "Дискинезия жёлчных путей",
+ ],
+ hotspots: [
+ { id: "fundus", label: "Дно", detail: "Слепой закруглённый конец" },
+ { id: "body", label: "Тело", detail: "Основная часть для хранения" },
+ { id: "neck", label: "Шейка", detail: "Переходит в пузырный проток" },
+ ],
+ },
+ esophagus: {
+ genitive: "пищевода",
+ name: "Пищевод",
+ system: "Пищеварительная система",
+ description:
+ "Мышечная трубка, которая перистальтикой продвигает пищу из глотки в желудок.",
+ poetic: "Быстрый коридор",
+ size: "Около 25 см в длину",
+ weight: "Около 40 г",
+ location: "Позади трахеи, проходит через диафрагму",
+ function: "Транспортирует пищу в желудок",
+ dailyFact: "Продвигает пищу за ~2 секунды на глоток",
+ medical: "Нижний сфинктер в норме не пускает желудочную кислоту вверх.",
+ bloodSupply: "Пищеводные артерии",
+ funFact:
+ "Пища достигает желудка, даже если вы стоите на голове, — мышцы делают всю работу.",
+ tissue: "Многослойный плоский эпителий",
+ comparison: "Пищевод и кишечник",
+ conditions: [
+ "ГЭРБ",
+ "Рак пищевода",
+ "Ахалазия",
+ "Эзофагит",
+ "Пищевод Барретта",
+ "Грыжа пищеводного отверстия",
+ "Стриктура пищевода",
+ "Синдром Меллори–Вейса",
+ ],
+ hotspots: [
+ { id: "cervical", label: "Шейный отдел", detail: "Начинается у глотки" },
+ { id: "thoracic", label: "Грудной отдел", detail: "Проходит позади сердца" },
+ { id: "les", label: "Нижний сфинктер", detail: "Ворота в желудок" },
+ ],
+ },
+ tongue: {
+ genitive: "языка",
+ name: "Язык",
+ system: "Пищеварительная система",
+ description:
+ "Мышечный орган вкуса, речи и глотания, покрытый специализированной слизистой оболочкой.",
+ poetic: "Карта вкуса",
+ size: "Около 10 см",
+ weight: "~70–100 г",
+ location: "Дно ротовой полости",
+ function: "Вкус, речь и глотание",
+ dailyFact: "Содержит около 10 000 вкусовых сосочков",
+ medical: "Вкусовые луковицы обновляются примерно каждые две недели.",
+ bloodSupply: "Язычная артерия",
+ funFact:
+ "Его поверхность обновляется так быстро, что ожоги обычно заживают за несколько дней.",
+ tissue: "Многослойный плоский эпителий с сосочками",
+ comparison: "Язык и глаз",
+ conditions: [
+ "Глоссит",
+ "Молочница полости рта",
+ "Рак языка",
+ "Географический язык",
+ "Анкилоглоссия (короткая уздечка)",
+ "Афтозные язвы",
+ "Синдром жжения полости рта",
+ "Нарушения вкуса",
+ ],
+ hotspots: [
+ { id: "tip", label: "Кончик", detail: "Самая подвижная часть" },
+ { id: "dorsum", label: "Спинка", detail: "Покрыта сосочками" },
+ { id: "root", label: "Корень", detail: "Уходит в глотку" },
+ ],
+ },
+ spleen: {
+ genitive: "селезёнки",
+ name: "Селезёнка",
+ system: "Лимфатическая и иммунная система",
+ description:
+ "Орган размером с кулак, который фильтрует кровь и организует иммунный ответ.",
+ poetic: "Страж крови",
+ size: "Около 12 см — примерно с кулак",
+ weight: "150–200 г",
+ location: "Левое подреберье, под рёбрами",
+ function: "Фильтрует кровь, утилизирует железо, иммунная защита",
+ dailyFact: "Фильтрует около 5% объёма крови каждую минуту",
+ medical: "Удаляет старые эритроциты и тромбоциты и хранит их резерв.",
+ bloodSupply: "Селезёночная артерия",
+ funFact:
+ "Её можно удалить после травмы — печень и лимфоузлы берут её функции на себя.",
+ tissue: "Красная и белая пульпа",
+ comparison: "Селезёнка и лимфатический узел",
+ conditions: [
+ "Спленомегалия",
+ "Разрыв селезёнки",
+ "Серповидно-клеточная анемия",
+ "Гиперспленизм",
+ "Инфаркт селезёнки",
+ "Инфекционный мононуклеоз",
+ "Наследственный сфероцитоз",
+ "Киста селезёнки",
+ ],
+ hotspots: [
+ { id: "capsule", label: "Капсула", detail: "Фиброзная наружная оболочка" },
+ { id: "red-pulp", label: "Красная пульпа", detail: "Фильтрует старые клетки крови" },
+ { id: "hilum", label: "Ворота", detail: "Место входа сосудов" },
+ ],
+ },
+ thymus: {
+ genitive: "тимуса",
+ name: "Тимус",
+ system: "Лимфатическая и иммунная система",
+ description:
+ "Двухдольчатая железа за грудиной, где T-лимфоциты учатся отличать своё от чужого.",
+ poetic: "Школа иммунитета",
+ size: "Наибольший в детстве, уменьшается после полового созревания",
+ weight: "20–40 г (у взрослого)",
+ location: "Верхняя часть грудной клетки, за грудиной",
+ function: "Обучает T-лимфоциты",
+ dailyFact: "Наиболее активен до полового созревания",
+ medical: "Тимоциты, атакующие собственные ткани организма, здесь уничтожаются.",
+ bloodSupply: "Внутренние грудные артерии",
+ funFact:
+ "К старости большая его часть замещается жиром — но иммунитет продолжает работать.",
+ tissue: "Корковое и мозговое вещество тимуса",
+ comparison: "Тимус и лимфатический узел",
+ conditions: [
+ "Гиперплазия тимуса",
+ "Миастения гравис",
+ "Тимома",
+ "Синдром Ди Джорджи",
+ "Тяжёлый комбинированный иммунодефицит",
+ "Киста тимуса",
+ "Карцинома тимуса",
+ "Аплазия тимуса",
+ ],
+ hotspots: [
+ { id: "left-lobe", label: "Левая доля", detail: "Одна из двух долей" },
+ { id: "right-lobe", label: "Правая доля", detail: "Лежит за грудиной" },
+ { id: "cortex", label: "Кора", detail: "Здесь созревают T-клетки" },
+ ],
+ },
+ "lymph-node": {
+ genitive: "лимфатического узла",
+ name: "Лимфатический узел",
+ system: "Лимфатическая и иммунная система",
+ description:
+ "Небольшой бобовидный фильтр на пути лимфы, набитый иммунными клетками.",
+ poetic: "Иммунный пост",
+ size: "С фасолину, 1–25 мм",
+ weight: "Около 1 г каждый",
+ location: "Скопления на шее, в подмышках, паху, груди и животе",
+ function: "Фильтрует лимфу, организует иммунный ответ",
+ dailyFact: "Около 600 узлов охраняют тело",
+ medical: "Увеличенные узлы сигнализируют о ближайшей инфекции или воспалении.",
+ bloodSupply: "Сосуды ворот узла",
+ funFact:
+ "В борьбе с инфекцией они могут увеличиться в 10 раз — то самое ощущение «распухших желёз».",
+ tissue: "Лимфоидное корковое и мозговое вещество",
+ comparison: "Лимфатический узел и селезёнка",
+ conditions: [
+ "Лимфаденит",
+ "Лимфома",
+ "Метастазы рака",
+ "Туберкулёзный лимфаденит",
+ "Инфекционный мононуклеоз",
+ "Саркоидоз",
+ "Болезнь Кикучи",
+ "Болезнь Кастлемана",
+ ],
+ hotspots: [
+ { id: "capsule", label: "Капсула", detail: "Наружная фиброзная оболочка" },
+ { id: "cortex", label: "Корковое вещество", detail: "Фолликулы B-клеток" },
+ { id: "hilum", label: "Ворота", detail: "Выход сосудов" },
+ ],
+ },
+ thyroid: {
+ genitive: "щитовидной железы",
+ name: "Щитовидная железа",
+ system: "Эндокринная система",
+ description:
+ "Бабочковидная железа на шее, задающая темп обмена веществ всего организма.",
+ poetic: "Метаболический регулятор",
+ size: "Около 5 см между «крыльями»",
+ weight: "15–25 г",
+ location: "Передняя поверхность шеи, ниже гортани",
+ function: "Вырабатывает T3 и T4, управляет метаболизмом",
+ dailyFact: "Ежедневно требует около 150 мкг йода",
+ medical: "Гормоны щитовидной железы влияют практически на каждую клетку тела.",
+ bloodSupply: "Верхние и нижние щитовидные артерии",
+ funFact:
+ "Это единственный орган, которому нужен йод: без него железа разрастается в зоб.",
+ tissue: "Щитовидные фолликулы",
+ comparison: "Щитовидная железа и гипофиз",
+ conditions: [
+ "Гипотиреоз",
+ "Гипертиреоз",
+ "Болезнь Грейвса",
+ "Тиреоидит Хашимото",
+ "Зоб",
+ "Узлы щитовидной железы",
+ "Рак щитовидной железы",
+ "Подострый тиреоидит",
+ ],
+ hotspots: [
+ { id: "left-lobe", label: "Левая доля", detail: "Огибает трахею" },
+ { id: "right-lobe", label: "Правая доля", detail: "Зеркальна левой" },
+ { id: "isthmus", label: "Перешеек", detail: "Мостик спереди" },
+ ],
+ },
+ adrenal: {
+ genitive: "надпочечников",
+ name: "Надпочечники",
+ system: "Эндокринная система",
+ description:
+ "Две небольшие «шапочки» на почках, управляющие реакцией на стресс и солевым балансом.",
+ poetic: "Двигатели стресса",
+ size: "Около 3–5 см каждый",
+ weight: "4–5 г каждый",
+ location: "На верхнем полюсе каждой почки",
+ function: "Кортизол, альдостерон, адреналин",
+ dailyFact: "Адреналин выбрасывается за секунды при опасности",
+ medical: "Мозговое вещество производит адреналин, кора — стероидные гормоны.",
+ bloodSupply: "Верхние, средние и нижние надпочечниковые артерии",
+ funFact:
+ "При хроническом стрессе они могут увеличиться вдвое — и вернуться к норме, когда стресс проходит.",
+ tissue: "Кора и мозговое вещество надпочечника",
+ comparison: "Надпочечники и щитовидная железа",
+ conditions: [
+ "Болезнь Аддисона",
+ "Синдром Кушинга",
+ "Синдром Конна",
+ "Феохромоцитома",
+ "Надпочечниковая недостаточность",
+ "Врождённая гиперплазия надпочечников",
+ "Аденома надпочечника",
+ "Надпочечниковый криз",
+ ],
+ hotspots: [
+ { id: "right-gland", label: "Правая железа", detail: "Треугольная «шапочка»" },
+ { id: "left-gland", label: "Левая железа", detail: "Полулунной формы" },
+ { id: "medulla", label: "Мозговое вещество", detail: "Вырабатывает адреналин" },
+ ],
+ },
+ pituitary: {
+ genitive: "гипофиза",
+ name: "Гипофиз",
+ system: "Эндокринная система",
+ description:
+ "«Главная железа» размером с горошину, командующая остальными эндокринными железами.",
+ poetic: "Дирижёр",
+ size: "Около 1 см — с горошину",
+ weight: "0,5–1 г",
+ location: "В турецком седле клиновидной кости",
+ function: "Управляет ростом, стрессом, обменом веществ, размножением",
+ dailyFact: "Выделяет не менее 6 основных гормонов",
+ medical: "Его гормоны управляют щитовидной железой, надпочечниками, гонадами и другими.",
+ bloodSupply: "Верхние и нижние гипофизарные артерии",
+ funFact:
+ "Он подвешен к мозгу на ножке тоньше грифеля карандаша.",
+ tissue: "Аденогипофиз и нейрогипофиз",
+ comparison: "Гипофиз и щитовидная железа",
+ conditions: [
+ "Аденома гипофиза",
+ "Гипопитуитаризм",
+ "Акромегалия",
+ "Пролактинома",
+ "Несахарный диабет",
+ "Синдром Шихана",
+ "Болезнь Кушинга",
+ "Синдром пустого турецкого седла",
+ ],
+ hotspots: [
+ { id: "anterior", label: "Передняя доля", detail: "Фабрика гормонов" },
+ { id: "posterior", label: "Задняя доля", detail: "Хранит АДГ и окситоцин" },
+ { id: "stalk", label: "Ножка (воронка)", detail: "Соединяет с мозгом" },
+ ],
+ },
+ trachea: {
+ genitive: "трахеи",
+ name: "Трахея",
+ system: "Дыхательная система",
+ description:
+ "Дыхательное горло — гибкая трубка, которую держат открытой C-образные хрящевые кольца.",
+ poetic: "Дыхательное горло",
+ size: "Около 10–12 см",
+ weight: "Около 30 г",
+ location: "Перед пищеводом, от гортани до бронхов",
+ function: "Проводит воздух к бронхам",
+ dailyFact: "За один вдох пропускает около 0,5 л воздуха",
+ medical: "Реснички её эпителия выметают слизь и пыль из лёгких вверх.",
+ bloodSupply: "Нижние щитовидные и бронхиальные артерии",
+ funFact:
+ "16–20 C-образных колец держат её открытой, даже когда вы наклоняете шею.",
+ tissue: "Многорядный реснитчатый эпителий",
+ comparison: "Трахея и пищевод",
+ conditions: [
+ "Трахеит",
+ "Стеноз трахеи",
+ "Трахеомаляция",
+ "Повреждение при интубации",
+ "Трахеопищеводный свищ",
+ "Аспирация инородного тела",
+ "Опухоли трахеи",
+ "Круп",
+ ],
+ hotspots: [
+ { id: "rings", label: "Хрящевые кольца", detail: "Держат трубку открытой" },
+ { id: "carina", label: "Бифуркация", detail: "Разделение на бронхи" },
+ { id: "membranous", label: "Перепончатая стенка", detail: "Обращена к пищеводу" },
+ ],
+ },
+ larynx: {
+ genitive: "гортани",
+ name: "Гортань",
+ system: "Дыхательная система",
+ description:
+ "Голосовой аппарат — хрящевой клапан, защищающий дыхательные пути и производящий звук.",
+ poetic: "Голосовой ящик",
+ size: "Около 4–5 см",
+ weight: "Около 10–15 г",
+ location: "Передняя часть шеи, между глоткой и трахеей",
+ function: "Голосообразование и защита дыхательных путей",
+ dailyFact: "Голосовые складки колеблются 100–250 раз в секунду",
+ medical: "Надгортанник герметично закрывает дыхательные пути при глотании.",
+ bloodSupply: "Верхние и нижние гортанные артерии",
+ funFact:
+ "«Кадык» — это щитовидный хрящ гортани, более крупный у мужчин после полового созревания.",
+ tissue: "Гиалиновый и эластический хрящ",
+ comparison: "Гортань и трахея",
+ conditions: [
+ "Ларингит",
+ "Узелки голосовых складок",
+ "Рак гортани",
+ "Эпиглоттит",
+ "Ларингоспазм",
+ "Паралич голосовых складок",
+ "Ларингомаляция",
+ "Папилломатоз гортани",
+ ],
+ hotspots: [
+ { id: "thyroid-cartilage", label: "Щитовидный хрящ", detail: "«Кадык»" },
+ { id: "vocal-folds", label: "Голосовые складки", detail: "Рождают голос" },
+ { id: "epiglottis", label: "Надгортанник", detail: "Страж дыхательных путей" },
+ ],
+ },
+ bladder: {
+ genitive: "мочевого пузыря",
+ name: "Мочевой пузырь",
+ system: "Мочевыделительная система",
+ description:
+ "Полый мышечный резервуар, который накапливает мочу до момента выведения.",
+ poetic: "Накопительная камера",
+ size: "Около 12 см в наполненном состоянии",
+ weight: "Пустой ~50 г, полный ~500 г",
+ location: "В малом тазу, за лобковой костью",
+ function: "Накапливает и выводит мочу",
+ dailyFact: "Вмещает 400–600 мл; позыв — при 150–250 мл",
+ medical: "Детрузор и сфинктеры координируют наполнение и опорожнение.",
+ bloodSupply: "Верхние и нижние пузырные артерии",
+ funFact:
+ "Треугольник дна (тригон) не меняет форму при наполнении — важный ориентир для хирургов.",
+ tissue: "Переходный эпителий (уротелий)",
+ comparison: "Мочевой пузырь и почки",
+ conditions: [
+ "Цистит",
+ "Рак мочевого пузыря",
+ "Недержание мочи",
+ "Гиперактивный мочевой пузырь",
+ "Камни мочевого пузыря",
+ "Нейрогенный мочевой пузырь",
+ "Интерстициальный цистит",
+ "Инфравезикальная обструкция",
+ ],
+ hotspots: [
+ { id: "apex", label: "Верхушка", detail: "Направлена к пупку" },
+ { id: "body", label: "Тело", detail: "Основной резервуар" },
+ { id: "trigone", label: "Тригон", detail: "Неподвижный треугольник дна" },
+ ],
+ },
+ uterus: {
+ genitive: "матки",
+ name: "Матка",
+ system: "Репродуктивная система",
+ description:
+ "Грушевидный мышечный орган, в котором развивается и вынашивается плод.",
+ poetic: "Первый дом",
+ size: "Около 7–8 см",
+ weight: "50–100 г (вне беременности)",
+ location: "В малом тазу, позади мочевого пузыря",
+ function: "Вынашивание беременности и менструальный цикл",
+ dailyFact: "Во время беременности увеличивается примерно в 500 раз",
+ medical: "Её слизистая — эндометрий — отторгается каждый цикл, если не наступила беременность.",
+ bloodSupply: "Маточные артерии",
+ funFact:
+ "После родов она возвращается к исходному размеру примерно за шесть недель.",
+ tissue: "Эндометрий и миометрий",
+ comparison: "Матка и яичник",
+ conditions: [
+ "Миома матки",
+ "Эндометриоз",
+ "Аденомиоз",
+ "Рак эндометрия",
+ "Опущение матки",
+ "Рак шейки матки",
+ "Дисменорея",
+ "Полипы матки",
+ ],
+ hotspots: [
+ { id: "fundus", label: "Дно", detail: "Купол над трубами" },
+ { id: "body", label: "Тело", detail: "Основная мышечная часть" },
+ { id: "cervix", label: "Шейка", detail: "Вход во влагалище" },
+ ],
+ },
+ ovary: {
+ genitive: "яичника",
+ name: "Яичник",
+ system: "Репродуктивная система",
+ description:
+ "Гонада размером с миндаль, выпускающая яйцеклетки и производящая женские половые гормоны.",
+ poetic: "Хранитель яйцеклеток",
+ size: "Около 3–4 см — с миндаль",
+ weight: "5–8 г каждый",
+ location: "По обе стороны от матки",
+ function: "Яйцеклетки, эстроген и прогестерон",
+ dailyFact: "При рождении 1–2 млн яйцеклеток, овулирует ~400",
+ medical: "Его месячный цикл управляет менструацией и фертильностью.",
+ bloodSupply: "Яичниковая артерия",
+ funFact:
+ "У девочки при рождении уже есть все яйцеклетки, которые у неё будут, — около 1–2 миллионов.",
+ tissue: "Корковое вещество с фолликулами",
+ comparison: "Яичник и яичко",
+ conditions: [
+ "Синдром поликистозных яичников",
+ "Кисты яичников",
+ "Рак яичников",
+ "Эндометриоз",
+ "Перекрут яичника",
+ "Преждевременная недостаточность яичников",
+ "Тератома яичника",
+ "Сальпингоофорит",
+ ],
+ hotspots: [
+ { id: "cortex", label: "Корковое вещество", detail: "Содержит фолликулы" },
+ { id: "medulla", label: "Мозговое вещество", detail: "Сосуды и нервы" },
+ { id: "hilum", label: "Ворота", detail: "Место входа сосудов" },
+ ],
+ },
+ testis: {
+ genitive: "яичка",
+ name: "Яичко",
+ system: "Репродуктивная система",
+ description:
+ "Овальная гонада, производящая сперматозоиды и тестостерон.",
+ poetic: "Кузница семени",
+ size: "Около 4–5 см — овал",
+ weight: "15–25 г каждое",
+ location: "В мошонке, вне полости тела",
+ function: "Производство сперматозоидов и тестостерона",
+ dailyFact: "Производит около 1 500 сперматозоидов в секунду",
+ medical: "Мошонка держит их на 2–3 °C холоднее тела — это нужно для сперматогенеза.",
+ bloodSupply: "Яичковая артерия",
+ funFact:
+ "Семиенные канальцы обоих яичек, распрямлённые в нить, растянулись бы на сотни метров.",
+ tissue: "Семиенные канальцы",
+ comparison: "Яичко и яичник",
+ conditions: [
+ "Рак яичка",
+ "Эпидидимит",
+ "Орхит",
+ "Перекрут яичка",
+ "Водянка оболочек яичка",
+ "Варикоцеле",
+ "Неопущение яичка",
+ "Гипогонадизм",
+ ],
+ hotspots: [
+ { id: "tunica", label: "Белочная оболочка", detail: "Плотная белая капсула" },
+ { id: "tubules", label: "Семиенные канальцы", detail: "Фабрики сперматозоидов" },
+ { id: "epididymis", label: "Придаток яичка", detail: "Созревание сперматозоидов" },
+ ],
+ },
+ prostate: {
+ genitive: "предстательной железы",
+ name: "Предстательная железа",
+ system: "Репродуктивная система",
+ description:
+ "Железа размером с грецкий орех, добавляющая секрет в сперму и окружающая мочеиспускательный канал.",
+ poetic: "Сторожевая железа",
+ size: "Около 3–4 см — с грецкий орех",
+ weight: "15–25 г",
+ location: "В малом тазу, ниже мочевого пузыря",
+ function: "Добавляет жидкость в сперму",
+ dailyFact: "Даёт около 30% объёма эякулята",
+ medical: "С возрастом её рост может сдавливать уретру и затруднять мочеиспускание.",
+ bloodSupply: "Нижние пузырные и средние прямокишечные артерии",
+ funFact:
+ "К 60 годам у большинства мужчин железа увеличена — чаще всего это безвредно.",
+ tissue: "Предстательные железы и строма",
+ comparison: "Предстательная железа и мочевой пузырь",
+ conditions: [
+ "Доброкачественная гиперплазия предстательной железы",
+ "Простатит",
+ "Рак предстательной железы",
+ "Камни предстательной железы",
+ "Острая задержка мочи",
+ "Простатическая интраэпителиальная неоплазия",
+ "Абсцесс предстательной железы",
+ "Синдром хронической тазовой боли",
+ ],
+ hotspots: [
+ { id: "peripheral", label: "Периферическая зона", detail: "Здесь чаще всего рак" },
+ { id: "transition", label: "Переходная зона", detail: "Растёт с возрастом" },
+ { id: "capsule", label: "Капсула", detail: "Наружная фиброзная оболочка" },
+ ],
+ },
+ "spinal-cord": {
+ genitive: "спинного мозга",
+ name: "Спинной мозг",
+ system: "Нервная система",
+ description:
+ "Информационная магистраль мозга — столб нервной ткани, защищённый позвонками.",
+ poetic: "Шоссе сигналов",
+ size: "Около 45 см",
+ weight: "Около 30–35 г",
+ location: "В позвоночном канале, от C1 до L1–L2",
+ function: "Передаёт сигналы между мозгом и телом",
+ dailyFact: "Обрабатывает рефлексы за ~30 мс, не дожидаясь мозга",
+ medical: "Спинальные рефлексы вычисляются здесь напрямую — быстрее мысли.",
+ bloodSupply: "Передняя и задние спинальные артерии",
+ funFact:
+ "Он перестаёт расти в детстве; ниже него корешки свисают «конским хвостом» (cauda equina).",
+ tissue: "Серое вещество («бабочка») и белое вещество",
+ comparison: "Спинной мозг и головной мозг",
+ conditions: [
+ "Травма спинного мозга",
+ "Рассеянный склероз",
+ "Стеноз позвоночного канала",
+ "Миелит",
+ "Опухоли спинного мозга",
+ "Сирингомиелия",
+ "Боковой амиотрофический склероз",
+ "Spina bifida",
+ ],
+ hotspots: [
+ { id: "grey", label: "Серое вещество", detail: "«Бабочка» из тел нейронов" },
+ { id: "white", label: "Белое вещество", detail: "Миелинизированные пути" },
+ { id: "roots", label: "Спинномозговые корешки", detail: "Выходят между позвонками" },
+ ],
+ },
+ diaphragm: {
+ genitive: "диафрагмы",
+ name: "Диафрагма",
+ system: "Опорно-двигательная система",
+ description:
+ "Куполообразная мышца, выполняющая основную работу дыхания.",
+ poetic: "Двигатель вдоха",
+ size: "Купол около 25 см в поперечнике",
+ weight: "Около 300 г",
+ location: "Отделяет грудную полость от брюшной",
+ function: "Главная мышца вдоха",
+ dailyFact: "Смещается на 1–2 см в покое, до 10 см при глубоком вдохе",
+ medical: "Сокращаясь, она уплощает купол и втягивает воздух в лёгкие.",
+ bloodSupply: "Нижние диафрагмальные и мышечно-диафрагмальные артерии",
+ funFact:
+ "В ней три отверстия — для аорты, пищевода и полой вены — и при этом она герметично разделяет грудь и живот.",
+ tissue: "Скелетная мышца с сухожильным центром",
+ comparison: "Диафрагма и двуглавая мышца",
+ conditions: [
+ "Грыжа пищеводного отверстия",
+ "Диафрагмальная грыжа",
+ "Паралич диафрагмы",
+ "Икота",
+ "Разрыв диафрагмы",
+ "Релаксация купола диафрагмы",
+ "Повреждение диафрагмального нерва",
+ "Врождённая диафрагмальная грыжа",
+ ],
+ hotspots: [
+ { id: "tendon", label: "Сухожильный центр", detail: "Прочный центральный апоневроз" },
+ { id: "muscle", label: "Мышечная часть", detail: "Сокращающийся купол" },
+ { id: "hiatus", label: "Пищеводное отверстие", detail: "Проход для пищевода" },
+ ],
+ },
+ biceps: {
+ genitive: "двуглавой мышцы",
+ name: "Двуглавая мышца плеча",
+ system: "Опорно-двигательная система",
+ description:
+ "Двуглавая мышца передней поверхности плеча: сгибает локоть и супинирует предплечье.",
+ poetic: "Сгибатель",
+ size: "Брюшко около 15 см",
+ weight: "Около 150–200 г",
+ location: "Передняя поверхность плеча",
+ function: "Сгибание локтя и супинация предплечья",
+ dailyFact: "Поднимает предплечье около 10 000 раз в день",
+ medical: "Её дистальное сухожилие может разорваться при резкой нагрузке — классический «бицепс Попая».",
+ bloodSupply: "Ветви плечевой артерии",
+ funFact:
+ "Её две головки начинаются от разных костей, но сходятся в одно сухожилие — отсюда название «двуглавая».",
+ tissue: "Скелетная (поперечнополосатая) мышца",
+ comparison: "Двуглавая мышца и диафрагма",
+ conditions: [
+ "Тендинит двуглавой мышцы",
+ "Разрыв сухожилия бицепса",
+ "«Локоть теннисиста» (латеральный эпикондилит)",
+ "Растяжение мышцы",
+ "Биципитальная тендинопатия",
+ "Рабдомиолиз",
+ "Гипертрофия мышц",
+ "Компартмент-синдром",
+ ],
+ hotspots: [
+ { id: "short-head", label: "Короткая головка", detail: "От клювовидного отростка" },
+ { id: "long-head", label: "Длинная головка", detail: "От суставной впадины" },
+ { id: "tendon", label: "Дистальное сухожилие", detail: "Прикрепляется к лучевой кости" },
+ ],
+ },
+ femur: {
+ genitive: "бедренной кости",
+ name: "Бедренная кость",
+ system: "Скелетная система",
+ description:
+ "Кость бедра — самая длинная, тяжёлая и прочная кость тела человека.",
+ poetic: "Опора ноги",
+ size: "Около 45–50 см — четверть вашего роста",
+ weight: "Около 1 кг",
+ location: "От тазобедренного до коленного сустава",
+ function: "Несёт вес тела и обеспечивает движение",
+ dailyFact: "При беге выдерживает нагрузку ~5× массы тела",
+ medical: "Её шейка — классическое место перелома при остеопорозе.",
+ bloodSupply: "Медиальная и латеральная огибающие бедренную кость артерии",
+ funFact:
+ "Она прочнее бетона в пересчёте на килограмм и держит рекорд самой длинной кости.",
+ tissue: "Компактная и губчатая костная ткань",
+ comparison: "Бедренная кость и двуглавая мышца",
+ conditions: [
+ "Перелом шейки бедра",
+ "Перелом диафиза бедра",
+ "Остеопороз",
+ "Остеоартрит",
+ "Аваскулярный некроз",
+ "Болезнь Пертеса",
+ "Бедренная грыжа",
+ "Опухоли костей",
+ ],
+ hotspots: [
+ { id: "head", label: "Головка", detail: "Шар тазобедренного сустава" },
+ { id: "neck", label: "Шейка", detail: "Ломка у пожилых" },
+ { id: "shaft", label: "Диафиз", detail: "Длинное цилиндрическое тело" },
+ { id: "condyles", label: "Мыщелки", detail: "Поверхности коленного сустава" },
+ ],
+ },
skin: {
genitive: "кожи",
name: "Кожа",
diff --git a/app/lib/content/animations.ts b/app/lib/content/animations.ts
index ecf5e72..602dd8f 100644
--- a/app/lib/content/animations.ts
+++ b/app/lib/content/animations.ts
@@ -12,6 +12,91 @@ export type BilingualAnimation = {
};
export const functionAnimations: Record = {
+
+ stomach: {
+ en: { label: "Peristaltic churn", desc: "The muscular wall mixes and gradually propels the contents towards the pylorus." },
+ ru: { label: "Перемешивание", desc: "Мышечная стенка перемешивает содержимое и постепенно продвигает его к привратнику." },
+ },
+ gallbladder: {
+ en: { label: "Bile release", desc: "After a fatty meal the sac contracts, sending a pulse of concentrated bile into the duodenum." },
+ ru: { label: "Выброс желчи", desc: "После жирной еды пузырь сокращается и посылает порцию концентрированной желчи в двенадцатиперстную кишку." },
+ },
+ esophagus: {
+ en: { label: "Peristaltic wave", desc: "A wave of contraction sweeps the bolus down to the stomach in about two seconds." },
+ ru: { label: "Перистальтическая волна", desc: "Волна сокращения за две секунды продвигает пищевой комок к желудку." },
+ },
+ tongue: {
+ en: { label: "Muscular mobility", desc: "Intrinsic and extrinsic muscles shape and move the tongue with remarkable precision." },
+ ru: { label: "Мышечная подвижность", desc: "Внутренние и наружные мышцы придают языку форму и двигают им с удивительной точностью." },
+ },
+ spleen: {
+ en: { label: "Blood filtration", desc: "A gentle pulse as the spleen filters and monitors the blood flowing through it." },
+ ru: { label: "Фильтрация крови", desc: "Лёгкая пульсация в такт крови, которую селезёнка фильтрует и проверяет." },
+ },
+ thymus: {
+ en: { label: "Lymphoid traffic", desc: "A quiet rhythm as immune cells move through the maturing gland." },
+ ru: { label: "Лимфоидный поток", desc: "Спокойный ритм движения иммунных клеток в созревающей железе." },
+ },
+ "lymph-node": {
+ en: { label: "Lymph percolation", desc: "Lymph slowly seeps through the node as immune cells scan it for antigens." },
+ ru: { label: "Фильтрация лимфы", desc: "Лимфа медленно просачивается через узел, пока иммунные клетки проверяют её на антигены." },
+ },
+ thyroid: {
+ en: { label: "Hormone release", desc: "A steady pulse as thyroid hormones enter the blood under TSH control." },
+ ru: { label: "Выделение гормонов", desc: "Ровный пульс поступления тиреоидных гормонов в кровь под контролем ТТГ." },
+ },
+ adrenal: {
+ en: { label: "Stress surge", desc: "A brief surge mirrors the catecholamine burst that primes the body for action." },
+ ru: { label: "Стрессовый выброс", desc: "Короткий всплеск отражает выброс катехоламинов, готовящих организм к действию." },
+ },
+ pituitary: {
+ en: { label: "Pulse release", desc: "Many pituitary hormones are secreted in pulses — visible as a subtle rhythm." },
+ ru: { label: "Пульсовое выделение", desc: "Многие гормоны гипофиза секретируются импульсами — это видно как тонкий ритм." },
+ },
+ trachea: {
+ en: { label: "Mucociliary flow", desc: "Cilia sweep the mucus carpet upward in a constant, quiet current." },
+ ru: { label: "Мукоцилиарный поток", desc: "Реснички гонят слизистый ковёр вверх постоянным тихим течением." },
+ },
+ larynx: {
+ en: { label: "Vocal fold vibration", desc: "A shimmering motion reflects the vocal folds oscillating during phonation." },
+ ru: { label: "Колебания голосовых складок", desc: "Дрожащее движение отражает колебания голосовых складок при фонации." },
+ },
+ bladder: {
+ en: { label: "Filling and voiding", desc: "The reservoir slowly distends as urine collects, then contracts to empty." },
+ ru: { label: "Наполнение и опорожнение", desc: "Резервуар медленно растягивается, собирая мочу, затем сокращается для опорожнения." },
+ },
+ uterus: {
+ en: { label: "Cyclic rhythm", desc: "The myometrium shows slow rhythmic contractions that intensify during menstruation." },
+ ru: { label: "Циклический ритм", desc: "Миометрий совершает медленные ритмичные сокращения, усиливающиеся при менструации." },
+ },
+ ovary: {
+ en: { label: "Follicle growth", desc: "A slow swell mirrors follicles maturing towards ovulation at mid-cycle." },
+ ru: { label: "Рост фолликулов", desc: "Медленное набухание отражает созревание фолликулов к овуляции в середине цикла." },
+ },
+ testis: {
+ en: { label: "Sperm production", desc: "A steady, quiet activity reflects continuous spermatogenesis." },
+ ru: { label: "Производство спермы", desc: "Ровная тихая активность отражает непрерывный сперматогенез." },
+ },
+ prostate: {
+ en: { label: "Glandular secretion", desc: "A subtle pulse as the gland contributes its secretions to the semen." },
+ ru: { label: "Секреция", desc: "Едва заметная пульсация в такт вкладу железы в состав спермы." },
+ },
+ "spinal-cord": {
+ en: { label: "Signal traffic", desc: "A steady rhythm mirrors impulses travelling up and down the cord." },
+ ru: { label: "Поток сигналов", desc: "Ровный ритм отражает импульсы, бегущие вверх и вниз по спинному мозгу." },
+ },
+ diaphragm: {
+ en: { label: "Breathing cycle", desc: "The dome flattens and rises with every breath, driving the air in and out." },
+ ru: { label: "Дыхательный цикл", desc: "Купол уплощается и поднимается с каждым вдохом, гоняя воздух внутрь и наружу." },
+ },
+ biceps: {
+ en: { label: "Contraction", desc: "A shortening pulse mirrors the muscle flexing the elbow and supinating the forearm." },
+ ru: { label: "Сокращение", desc: "Короткий импульс отражает сгибание локтя и супинацию предплечья." },
+ },
+ femur: {
+ en: { label: "Load bearing", desc: "A solid, steady presence — the pillar that carries the body's weight." },
+ ru: { label: "Несение нагрузки", desc: "Прочная устойчивая опора — столп, несущий вес тела." },
+ },
heart: {
en: {
label: "Cardiac cycle",
diff --git a/app/lib/content/histology.ts b/app/lib/content/histology.ts
index 2aca4e1..d2a27ea 100644
--- a/app/lib/content/histology.ts
+++ b/app/lib/content/histology.ts
@@ -15,6 +15,259 @@ export type BilingualHistology = {
};
export const histology: Record = {
+
+ stomach: {
+ en: [
+ { name: "Mucosa", detail: "Gastric pits leading to fundic glands: parietal, chief and mucous cells." },
+ { name: "Muscularis mucosae", detail: "Thin smooth-muscle layer that wrinkles the mucosa into rugae." },
+ { name: "Muscularis externa", detail: "Three layers — oblique, circular, longitudinal — enabling churning." },
+ ],
+ ru: [
+ { name: "Слизистая оболочка", detail: "Желудочные ямки, ведущие в фундальные железы: париетальные, главные и слизистые клетки." },
+ { name: "Мышечная пластинка слизистой", detail: "Тонкий слой гладких мышц, собирающий слизистую в складки." },
+ { name: "Мышечная оболочка", detail: "Три слоя — косой, циркулярный, продольный — обеспечивают перемешивание." },
+ ],
+ },
+ gallbladder: {
+ en: [
+ { name: "Mucosa", detail: "Tall columnar epithelium on honeycomb folds, concentrating bile by water absorption." },
+ { name: "Muscularis", detail: "Thin smooth-muscle layer that expels bile when cholecystokinin triggers contraction." },
+ { name: "Serosa", detail: "Peritoneal covering of the fundus and body." },
+ ],
+ ru: [
+ { name: "Слизистая оболочка", detail: "Высокий призматический эпителий на сетчатых складках; концентрирует желчь, всасывая воду." },
+ { name: "Мышечная оболочка", detail: "Тонкий слой гладких мышц, изгоняющий желчь при сокращении под действием холецистокинина." },
+ { name: "Серозная оболочка", detail: "Брюшинный покров дна и тела." },
+ ],
+ },
+ esophagus: {
+ en: [
+ { name: "Mucosa", detail: "Stratified squamous epithelium, resistant to friction and rapid transit." },
+ { name: "Muscularis externa", detail: "Skeletal muscle in the upper third, smooth muscle in the lower third." },
+ { name: "Adventitia", detail: "Connective tissue anchoring the tube to surrounding structures (no serosa)." },
+ ],
+ ru: [
+ { name: "Слизистая оболочка", detail: "Многослойный плоский эпителий, устойчивый к трению и быстрому транзиту." },
+ { name: "Мышечная оболочка", detail: "В верхней трети — скелетная мышца, в нижней — гладкая." },
+ { name: "Адвентиция", detail: "Соединительная ткань, фиксирующая трубку к окружающим структурам (серозы нет)." },
+ ],
+ },
+ tongue: {
+ en: [
+ { name: "Stratified squamous epithelium", detail: "Keratinised on the dorsum, with filiform, fungiform and circumvallate papillae." },
+ { name: "Taste buds", detail: "Neuroepithelial clusters in the lateral walls of circumvallate and fungiform papillae." },
+ { name: "Skeletal muscle", detail: "Interwoven intrinsic and extrinsic muscle bundles in three planes." },
+ ],
+ ru: [
+ { name: "Многослойный плоский эпителий", detail: "Ороговевающий на спинке, с нитевидными, грибовидными и желобоватыми сосочками." },
+ { name: "Вкусовые луковицы", detail: "Нейроэпителиальные скопления в боковых стенках желобоватых и грибовидных сосочков." },
+ { name: "Скелетная мышца", detail: "Переплетённые пучки внутренних и наружных мышц в трёх плоскостях." },
+ ],
+ },
+ spleen: {
+ en: [
+ { name: "Capsule and trabeculae", detail: "Fibroelastic capsule with smooth muscle sending trabeculae into the pulp." },
+ { name: "White pulp", detail: "Periarteriolar lymphoid sheaths (T-cells) and follicles (B-cells)." },
+ { name: "Red pulp", detail: "Cords of Billroth and venous sinusoids that filter blood and recycle iron." },
+ ],
+ ru: [
+ { name: "Капсула и трабекулы", detail: "Фиброэластическая капсула с гладкими мышцами, отдающая трабекулы в пульпу." },
+ { name: "Белая пульпа", detail: "Периартериолярные лимфоидные муфты (T-клетки) и фолликулы (B-клетки)." },
+ { name: "Красная пульпа", detail: "Тяжи Бильрота и венозные синусоиды, фильтрующие кровь и возвращающие железо." },
+ ],
+ },
+ thymus: {
+ en: [
+ { name: "Cortex", detail: "Dense thymocytes in a delicate epithelial network — site of positive selection." },
+ { name: "Medulla", detail: "Looser thymocytes with Hassall's corpuscles (keratinised epithelial whorls)." },
+ { name: "Septae", detail: "Connective tissue septa dividing the lobes into lobules." },
+ ],
+ ru: [
+ { name: "Корковое вещество", detail: "Плотные тимоциты в нежной эпителиальной сети — место положительной селекции." },
+ { name: "Мозговое вещество", detail: "Более рыхлые тимоциты с тельцами Гассаля (ороговевающие эпителиальные завитки)." },
+ { name: "Перегородки", detail: "Соединительнотканные перегородки, делящие доли на дольки." },
+ ],
+ },
+ "lymph-node": {
+ en: [
+ { name: "Cortex", detail: "B-cell follicles; germinal centres form during antibody responses." },
+ { name: "Paracortex", detail: "T-cell zone between follicles and medulla." },
+ { name: "Medulla", detail: "Medullary cords of plasma cells and macrophages between lymphatic sinuses." },
+ ],
+ ru: [
+ { name: "Корковое вещество", detail: "Фолликулы B-клеток; при антительном ответе образуются герминативные центры." },
+ { name: "Паракортикальная зона", detail: "Зона T-клеток между фолликулами и мозговым веществом." },
+ { name: "Мозговое вещество", detail: "Мозговые тяжи из плазматических клеток и макрофагов между лимфатическими синусами." },
+ ],
+ },
+ thyroid: {
+ en: [
+ { name: "Follicles", detail: "Spheres of follicular cells around colloid — the storage form of thyroid hormones." },
+ { name: "Parafollicular (C) cells", detail: "Scattered cells between follicles that secrete calcitonin." },
+ { name: "Connective stroma", detail: "Rich capillary network and lymphatics supporting the gland." },
+ ],
+ ru: [
+ { name: "Фолликулы", detail: "Шары фолликулярных клеток вокруг коллоида — депо тиреоидных гормонов." },
+ { name: "Парафолликулярные (C) клетки", detail: "Клетки между фолликулами, секретирующие кальцитонин." },
+ { name: "Соединительнотканная строма", detail: "Богатая капиллярная сеть и лимфатические сосуды, питающие железу." },
+ ],
+ },
+ adrenal: {
+ en: [
+ { name: "Zona glomerulosa", detail: "Outer cortex: clusters of cells secreting aldosterone." },
+ { name: "Zona fasciculata", detail: "Middle cortex: cords of cells secreting cortisol." },
+ { name: "Medulla", detail: "Chromaffin cells storing and releasing adrenaline and noradrenaline." },
+ ],
+ ru: [
+ { name: "Клубочковая зона", detail: "Наружная кора: скопления клеток, секретирующих альдостерон." },
+ { name: "Пучковая зона", detail: "Средняя кора: тяжи клеток, секретирующих кортизол." },
+ { name: "Мозговое вещество", detail: "Хромаффинные клетки, хранящие и выделяющие адреналин и норадреналин." },
+ ],
+ },
+ pituitary: {
+ en: [
+ { name: "Adenohypophysis", detail: "Anterior lobe: glandular cords of acidophilic and basophilic hormone cells." },
+ { name: "Neurohypophysis", detail: "Posterior lobe: axons of hypothalamic neurons with Herring bodies." },
+ { name: "Pars intermedia", detail: "Thin zone between the lobes, vestigial in humans." },
+ ],
+ ru: [
+ { name: "Аденогипофиз", detail: "Передняя доля: железистые тяжи ацидофильных и базофильных клеток." },
+ { name: "Нейрогипофиз", detail: "Задняя доля: аксоны нейронов гипоталамуса с тельцами Херринга." },
+ { name: "Промежуточная часть", detail: "Тонкая зона между долями, у человека рудиментарна." },
+ ],
+ },
+ trachea: {
+ en: [
+ { name: "Mucosa", detail: "Pseudostratified ciliated columnar epithelium with goblet cells." },
+ { name: "Submucosa", detail: "Connective tissue with seromucous glands opening into the lumen." },
+ { name: "Cartilage rings", detail: "C-shaped hyaline rings joined by the annular ligaments." },
+ ],
+ ru: [
+ { name: "Слизистая оболочка", detail: "Многорядный реснитчатый эпителий с бокаловидными клетками." },
+ { name: "Подслизистая основа", detail: "Соединительная ткань с белково-слизистыми железами, открывающимися в просвет." },
+ { name: "Хрящевые кольца", detail: "C-образные кольца гиалинового хряща, соединённые кольцевыми связками." },
+ ],
+ },
+ larynx: {
+ en: [
+ { name: "Vocal folds", detail: "Stratified squamous epithelium over the vocal ligament, vibrating during phonation." },
+ { name: "Cartilages", detail: "Hyaline (thyroid, cricoid, arytenoid) and elastic (epiglottis) cartilage." },
+ { name: "Vestibular folds", detail: "Mucosal folds above the vocal folds that help close the airway." },
+ ],
+ ru: [
+ { name: "Голосовые складки", detail: "Многослойный плоский эпителий над голосовой связкой, колеблющийся при фонации." },
+ { name: "Хрящи", detail: "Гиалиновые (щитовидный, перстневидный, черпаловидные) и эластический (надгортанник) хрящ." },
+ { name: "Вестибулярные складки", detail: "Складки слизистой над голосовыми складками, участвующие в закрытии дыхательных путей." },
+ ],
+ },
+ bladder: {
+ en: [
+ { name: "Urothelium", detail: "Transitional epithelium, ~6 layers when empty, thinning as the bladder distends." },
+ { name: "Lamina propria", detail: "Connective tissue with a rich capillary network beneath the epithelium." },
+ { name: "Detrusor muscle", detail: "Thick interlacing smooth-muscle bundles expelling urine during micturition." },
+ ],
+ ru: [
+ { name: "Уротелий", detail: "Переходный эпителий: ~6 слоёв в пустом пузыре, утончается при растяжении." },
+ { name: "Собственная пластинка", detail: "Соединительная ткань с богатой капиллярной сетью под эпителием." },
+ { name: "Детрузор", detail: "Толстые переплетающиеся пучки гладких мышц, изгоняющие мочу при мочеиспускании." },
+ ],
+ },
+ uterus: {
+ en: [
+ { name: "Endometrium", detail: "Functional layer (shed each cycle) and basal layer (regenerates it), with spiral arteries." },
+ { name: "Myometrium", detail: "Thick smooth-muscle layer, the largest part of the wall." },
+ { name: "Perimetrium", detail: "Serous covering continuous with the broad ligament." },
+ ],
+ ru: [
+ { name: "Эндометрий", detail: "Функциональный слой (отторгается каждый цикл) и базальный слой (восстанавливает его), со спиральными артериями." },
+ { name: "Миометрий", detail: "Толстый слой гладких мышц — основная часть стенки." },
+ { name: "Периметрий", detail: "Серозный покров, переходящий в широкую связку матки." },
+ ],
+ },
+ ovary: {
+ en: [
+ { name: "Germinal epithelium", detail: "Simple cuboidal surface epithelium (misnomer — it is mesothelium)." },
+ { name: "Cortex", detail: "Follicles at every stage: primordial, primary, secondary, Graafian, corpus luteum." },
+ { name: "Medulla", detail: "Loose connective tissue with the ovarian vessels and nerves." },
+ ],
+ ru: [
+ { name: "Поверхностный эпителий", detail: "Однослойный кубический эпителий (название «зародышевый» — дань традиции, это мезотелий)." },
+ { name: "Корковое вещество", detail: "Фолликулы на всех стадиях: примордиальные, первичные, вторичные, граафовы, жёлтое тело." },
+ { name: "Мозговое вещество", detail: "Рыхлая соединительная ткань с яичниковыми сосудами и нервами." },
+ ],
+ },
+ testis: {
+ en: [
+ { name: "Seminiferous tubules", detail: "Coiled tubules of Sertoli cells and germ cells at all stages of spermatogenesis." },
+ { name: "Leydig cells", detail: "Interstitial cells between tubules that secrete testosterone." },
+ { name: "Tunica albuginea", detail: "Dense fibrous capsule with septa dividing the gland into lobules." },
+ ],
+ ru: [
+ { name: "Семенные канальцы", detail: "Извитые канальцы из клеток Сертоли и половых клеток на всех стадиях сперматогенеза." },
+ { name: "Клетки Лейдига", detail: "Интерстициальные клетки между канальцами, секретирующие тестостерон." },
+ { name: "Белочная оболочка", detail: "Плотная фиброзная капсула с перегородками, делящими железу на дольки." },
+ ],
+ },
+ prostate: {
+ en: [
+ { name: "Glands", detail: "Tubuloalveolar glands with prostatic concretions (corpora amylacea)." },
+ { name: "Fibromuscular stroma", detail: "Smooth muscle and connective tissue that contract at ejaculation." },
+ { name: "Capsule", detail: "Fibrous capsule; the peripheral zone lies just beneath it." },
+ ],
+ ru: [
+ { name: "Железы", detail: "Трубчато-альвеолярные железы с простатическими конкрециями (амилоидные тельца)." },
+ { name: "Фиброзно-мышечная строма", detail: "Гладкие мышцы и соединительная ткань, сокращающиеся при эякуляции." },
+ { name: "Капсула", detail: "Фиброзная капсула; прямо под ней лежит периферическая зона." },
+ ],
+ },
+ "spinal-cord": {
+ en: [
+ { name: "Grey matter", detail: "H-shaped: dorsal (sensory), lateral (autonomic) and ventral (motor) horns." },
+ { name: "White matter", detail: "Myelinated tracts — dorsal columns, spinothalamic, corticospinal and others." },
+ { name: "Central canal", detail: "Lined by ependyma, filled with cerebrospinal fluid." },
+ ],
+ ru: [
+ { name: "Серое вещество", detail: "H-образное: задние (чувствительные), боковые (вегетативные) и передние (двигательные) рога." },
+ { name: "Белое вещество", detail: "Миелинизированные пути — задние канатики, спиноталамический, кортикоспинальный и другие." },
+ { name: "Центральный канал", detail: "Выстлан эпендимой, заполнен спинномозговой жидкостью." },
+ ],
+ },
+ diaphragm: {
+ en: [
+ { name: "Skeletal muscle", detail: "Radiating fibres from the periphery to the central tendon." },
+ { name: "Central tendon", detail: "Aponeurotic sheet where muscle fibres converge." },
+ { name: "Pleura and peritoneum", detail: "Serous membranes covering the thoracic and abdominal surfaces." },
+ ],
+ ru: [
+ { name: "Скелетная мышца", detail: "Волокна, расходящиеся от периферии к сухожильному центру." },
+ { name: "Сухожильный центр", detail: "Апоневротическая пластинка, где сходятся мышечные волокна." },
+ { name: "Плевра и брюшина", detail: "Серозные оболочки, покрывающие грудную и брюшную поверхности." },
+ ],
+ },
+ biceps: {
+ en: [
+ { name: "Muscle fascicles", detail: "Parallel bundles of striated fibres with strong endomysial septa." },
+ { name: "Tendon", detail: "Dense regular connective tissue transmitting force to the radius." },
+ { name: "Bicipital aponeurosis", detail: "Fascial expansion protecting the brachial artery and median nerve." },
+ ],
+ ru: [
+ { name: "Мышечные пучки", detail: "Параллельные пучки поперечнополосатых волокон с прочными эндомизиальными перегородками." },
+ { name: "Сухожилие", detail: "Плотная оформленная соединительная ткань, передающая усилие лучевой кости." },
+ { name: "Биципитальный апоневроз", detail: "Фасциальное расширение, защищающее плечевую артерию и срединный нерв." },
+ ],
+ },
+ femur: {
+ en: [
+ { name: "Periosteum", detail: "Outer fibrous membrane with osteogenic inner layer." },
+ { name: "Compact bone", detail: "Thick cylinder of osteons around the medullary cavity." },
+ { name: "Bone marrow", detail: "Haematopoietic red marrow in adults, mostly in the femoral head." },
+ ],
+ ru: [
+ { name: "Надкостница", detail: "Наружная фиброзная оболочка с остеогенным внутренним слоем." },
+ { name: "Компактное вещество", detail: "Толстый цилиндр остеонов вокруг костномозговой полости." },
+ { name: "Костный мозг", detail: "Кроветворный красный мозг у взрослых — в основном в головке бедра." },
+ ],
+ },
heart: {
en: [
{ name: "Epicardium", detail: "Visceral pericardium — a serous layer covering the heart; carries the coronary vessels and nerves." },
diff --git a/app/lib/content/lessons-extra.ts b/app/lib/content/lessons-extra.ts
new file mode 100644
index 0000000..f91e4b0
--- /dev/null
+++ b/app/lib/content/lessons-extra.ts
@@ -0,0 +1,889 @@
+import type { OrganId } from "../anatomy-data";
+import type { BilingualLesson } from "./lessons";
+
+/** Concise but complete lessons for the extended organ set (see lessons.ts
+ * for the template and the sources used). */
+export const lessonsExtra: Partial> = {
+ stomach: {
+ en: {
+ objectives: [
+ "Describe the regions of the stomach and their functions",
+ "Explain gastric juice secretion and its regulation",
+ "Outline the main diseases of the stomach",
+ ],
+ structure:
+ "The stomach is a J-shaped muscular pouch of ~25 cm connecting the esophagus and duodenum. Its regions are the cardia (entry), fundus (dome), body (main reservoir), and pyloric antrum ending at the pyloric sphincter. The wall has an extra oblique muscle layer, and the mucosa is thrown into rugae that flatten as the organ stretches. Fundic glands contain parietal cells (HCl, intrinsic factor), chief cells (pepsinogen), and mucous cells.",
+ function:
+ "The stomach stores food and releases it gradually into the duodenum. Parietal cells secrete hydrochloric acid, which kills microbes and activates pepsinogen into pepsin to begin protein digestion; intrinsic factor enables B₁₂ absorption. The pyloric sphincter meters chyme into the intestine, and the vagus nerve plus gastrin drive secretion while the duodenum brakes it via cholecystokinin and secretin. Empty, it contracts in hunger waves; full, it holds 1–1.5 L.",
+ clinical: [
+ "Peptic ulcer disease is usually caused by Helicobacter pylori or NSAIDs; H. pylori eradication heals most ulcers.",
+ "Gastric cancer is linked to H. pylori, smoking and diet; early detection dramatically improves outcomes.",
+ "GERD and gastroparesis impair the pyloric/esophageal function, causing reflux or delayed emptying.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать отделы желудка и их функции",
+ "Объяснить секрецию желудочного сока и её регуляцию",
+ "Перечислить основные заболевания желудка",
+ ],
+ structure:
+ "Желудок — J-образный мышечный мешок около 25 см, соединяющий пищевод и двенадцатиперстную кишку. Его отделы: кардия (вход), дно (купол), тело (основной резервуар) и пилорический отдел, заканчивающийся привратником. В стенке есть дополнительный косой мышечный слой, а слизистая собрана в складки, расправляющиеся при растяжении. Фундальные железы содержат париетальные клетки (HCl, внутренний фактор), главные клетки (пепсиноген) и слизистые клетки.",
+ function:
+ "Желудок хранит пищу и постепенно выпускает её в двенадцатиперстную кишку. Париетальные клетки выделяют соляную кислоту, которая убивает микробов и активирует пепсиноген в пепсин, начиная расщепление белков; внутренний фактор обеспечивает всасывание B₁₂. Привратник порциями пропускает химус в кишечник; секрецию запускают блуждающий нерв и гастрин, а тормозят холецистокинин и секретин из двенадцатиперстной кишки. Пустой желудок сокращается «голодными волнами», полный вмещает 1–1,5 л.",
+ clinical: [
+ "Язвенную болезнь обычно вызывают Helicobacter pylori или НПВП; эрадикация H. pylori залечивает большинство язв.",
+ "Рак желудка связан с H. pylori, курением и диетой; раннее выявление резко улучшает прогноз.",
+ "ГЭРБ и гастропарез нарушают функцию привратника и пищевода, вызывая рефлюкс или замедленное опорожнение.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ },
+ gallbladder: {
+ en: {
+ objectives: [
+ "Describe the anatomy of the gallbladder and biliary tree",
+ "Explain bile storage, concentration and release",
+ "Recognise the main gallbladder disorders",
+ ],
+ structure:
+ "The gallbladder is a pear-shaped sac (7–10 cm) on the underside of the liver, with fundus, body and neck continuing into the cystic duct. The cystic duct joins the common hepatic duct to form the common bile duct, which meets the pancreatic duct at the hepatopancreatic ampulla opening into the duodenum. Its mucosa forms honeycomb-like folds; the wall has a thin muscle layer that expels bile on demand.",
+ function:
+ "Between meals the gallbladder stores and concentrates bile up to 10-fold by absorbing water. When fat reaches the duodenum, cholecystokinin makes the gallbladder contract and the sphincter of Oddi relax, delivering bile that emulsifies fat for pancreatic lipase. Bile salts are reabsorbed in the ileum and recycled to the liver (enterohepatic circulation).",
+ clinical: [
+ "Gallstones (cholesterol or pigment) can obstruct the cystic duct, causing biliary colic and cholecystitis.",
+ "Cholecystectomy is the standard treatment; bile then flows directly from the liver.",
+ "Gallstone pancreatitis occurs when a stone blocks the shared ampulla with the pancreatic duct.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать анатомию жёлчного пузыря и жёлчных путей",
+ "Объяснить хранение, концентрацию и выделение желчи",
+ "Распознавать основные заболевания жёлчного пузыря",
+ ],
+ structure:
+ "Жёлчный пузырь — грушевидный мешок (7–10 см) на нижней поверхности печени, с дном, телом и шейкой, переходящей в пузырный проток. Пузырный проток соединяется с общим печёночным протоком в общий жёлчный проток, который встречается с панкреатическим протоком в печёночно-поджелудочной ампуле, открывающейся в двенадцатиперстную кишку. Слизистая образует сетчатые складки; в стенке есть тонкий мышечный слой, изгоняющий желчь по требованию.",
+ function:
+ "Между приёмами пищи пузырь хранит желчь и концентрирует её до 10 раз, всасывая воду. Когда жир попадает в двенадцатиперстную кишку, холецистокинин сокращает пузырь и расслабляет сфинктер Одди, и желчь эмульгирует жиры для панкреатической липазы. Жёлчные кислоты всасываются в подвздошной кишке и возвращаются в печень (печёночно-кишечная циркуляция).",
+ clinical: [
+ "Жёлчные камни (холестериновые или пигментные) могут закупорить пузырный проток, вызывая колику и холецистит.",
+ "Холецистэктомия — стандартное лечение; затем желчь поступает прямо из печени.",
+ "Билиарный панкреатит возникает, когда камень блокирует общую ампулу с панкреатическим протоком.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ },
+ esophagus: {
+ en: {
+ objectives: [
+ "Describe the three parts of the esophagus and its sphincters",
+ "Explain peristalsis and swallowing coordination",
+ "Outline reflux disease and its complications",
+ ],
+ structure:
+ "The esophagus is a 25 cm muscular tube from the pharynx to the stomach, passing through the neck, chest and the esophageal hiatus of the diaphragm. It has three narrowings (cricoid, aortic/bronchial, diaphragmatic) relevant for strictures and foreign bodies. The upper third is skeletal muscle, the middle mixed, the lower third smooth muscle; the upper and lower esophageal sphincters guard both ends.",
+ function:
+ "Swallowing is a reflex: the upper sphincter relaxes, the bolus is propelled by peristaltic waves (~2 s), and the lower sphincter opens to admit it into the stomach, then closes to prevent reflux. The mucosa resists friction and, at the lower end, its junction with gastric epithelium is where Barrett's changes can develop.",
+ clinical: [
+ "GERD results from a weak lower sphincter; chronic acid exposure can cause erosions, strictures and Barrett's esophagus.",
+ "Achalasia — failed lower-sphincter relaxation — causes dysphagia and a dilated esophagus.",
+ "Esophageal cancer (squamous or adenocarcinoma) is strongly linked to smoking, alcohol and reflux.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Netter F.H. Atlas of Human Anatomy. 7th ed. Elsevier, 2018.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать три отдела пищевода и его сфинктеры",
+ "Объяснить перистальтику и координацию глотания",
+ "Рассмотреть рефлюксную болезнь и её осложнения",
+ ],
+ structure:
+ "Пищевод — мышечная трубка 25 см от глотки до желудка, проходящая через шею, грудную клетку и пищеводное отверстие диафрагмы. У него три сужения (перстневидное, аортально-бронхиальное, диафрагмальное), значимые для стриктур и инородных тел. Верхняя треть — скелетная мышца, средняя — смешанная, нижняя — гладкая; верхний и нижний пищеводные сфинктеры охраняют оба конца.",
+ function:
+ "Глотание — рефлекс: верхний сфинктер расслабляется, пищевой комок продвигается перистальтическими волнами (~2 с), нижний сфинктер открывается, пропуская его в желудок, и закрывается, предотвращая рефлюкс. Слизистая устойчива к трению, а на границе с желудочным эпителием внизу возможно развитие пищевода Барретта.",
+ clinical: [
+ "ГЭРБ возникает из-за слабости нижнего сфинктера; хроническое воздействие кислоты ведёт к эрозиям, стриктурам и пищеводу Барретта.",
+ "Ахалазия — нерасслабление нижнего сфинктера — вызывает дисфагию и расширение пищевода.",
+ "Рак пищевода (плоскоклеточный или аденокарцинома) тесно связан с курением, алкоголем и рефлюксом.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Netter F.H. Atlas of Human Anatomy. 7th ed. Elsevier, 2018.",
+ ],
+ },
+ },
+ tongue: {
+ en: {
+ objectives: [
+ "Describe the muscles of the tongue and its innervation",
+ "Explain the structure and function of the papillae",
+ "Outline common tongue disorders",
+ ],
+ structure:
+ "The tongue is a muscular organ of the oral cavity divided into the oral part (body) and pharyngeal part (root). Intrinsic muscles shape it; extrinsic muscles (genioglossus, hyoglossus, styloglossus, palatoglossus) move it. The dorsum is covered by filiform, fungiform, circumvallate and foliate papillae; taste buds sit mainly in the fungiform and circumvallate. Motor supply is CN XII, taste is CN VII (anterior ⅔) and CN IX (posterior ⅓).",
+ function:
+ "The tongue manipulates food, mixes it with saliva, initiates swallowing and is essential for articulation. Taste buds detect sweet, salty, sour, bitter and umami, transmitting via cranial nerves VII and IX to the gustatory cortex. The tongue also cleans the teeth and, with its rich lymphatic drainage, is a sentinel for infections and tumours.",
+ clinical: [
+ "Ankyloglossia ('tongue-tie') restricts movement and may impair feeding and speech.",
+ "Leukoplakia, ulcers and persistent lumps need evaluation — oral cancer risk is high with smoking and alcohol.",
+ "CN XII palsy makes the tongue deviate towards the paralysed side on protrusion.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Netter F.H. Atlas of Human Anatomy. 7th ed. Elsevier, 2018.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать мышцы языка и его иннервацию",
+ "Объяснить строение и функцию сосочков",
+ "Перечислить частые заболевания языка",
+ ],
+ structure:
+ "Язык — мышечный орган ротовой полости, разделяемый на ротовую часть (тело) и глоточную часть (корень). Внутренние мышцы придают ему форму; наружные (подбородочно-язычная, подъязычно-язычная, шилоязычная, нёбно-язычная) двигают его. Спинка покрыта нитевидными, грибовидными, желобоватыми и листовидными сосочками; вкусовые луковицы — в основном в грибовидных и желобоватых. Двигательная иннервация — XII пара ЧН, вкус — VII (передние ⅔) и IX (задняя треть).",
+ function:
+ "Язык перемешивает пищу со слюной, запускает глотание и необходим для артикуляции. Вкусовые луковицы различают сладкое, солёное, кислое, горькое и умами, передавая сигналы через VII и IX пары в кору. Язык также очищает зубы и, благодаря богатому лимфооттоку, служит «стражем» инфекций и опухолей.",
+ clinical: [
+ "Анкилоглоссия («короткая уздечка») ограничивает движения и может мешать кормлению и речи.",
+ "Лейкоплакия, язвы и стойкие уплотнения требуют обследования — риск рака полости рта высок при курении и алкоголе.",
+ "При параличе XII пары язык при высовывании отклоняется в парализованную сторону.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Netter F.H. Atlas of Human Anatomy. 7th ed. Elsevier, 2018.",
+ ],
+ },
+ },
+ spleen: {
+ en: {
+ objectives: [
+ "Describe the structure of the spleen and its blood supply",
+ "Explain the functions of red and white pulp",
+ "Discuss the consequences of splenectomy",
+ ],
+ structure:
+ "The spleen (150–200 g) lies in the left hypochondrium under the diaphragm, wrapped in a capsule. Its hilum transmits the splenic artery and vein. Inside, red pulp (cords and sinusoids filtering blood) and white pulp (periarteriolar lymphoid sheaths and follicles, the immune part) are interspersed. It is intraperitoneal but develops in the dorsal mesogastrium, so its ligaments (gastrosplenic, splenorenal) carry its vessels.",
+ function:
+ "Red pulp removes old or damaged red cells, platelets and debris, and recycles iron; it also stores blood elements and can act as a reservoir. White pulp mounts immune responses to blood-borne pathogens — it is the largest lymphoid organ. During fetal life the spleen produces blood cells; after birth this function moves to the bone marrow.",
+ clinical: [
+ "Splenic rupture from blunt trauma causes life-threatening haemorrhage; splenectomy may be needed.",
+ "Asplenia raises the risk of sepsis from encapsulated bacteria — vaccination and prophylaxis are essential.",
+ "Splenomegaly occurs in infections (mononucleosis, malaria), haemolytic anaemias and portal hypertension.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Ross M.H., Pawlina W. Histology: A Text and Atlas. 8th ed. Wolters Kluwer, 2020.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать строение селезёнки и её кровоснабжение",
+ "Объяснить функции красной и белой пульпы",
+ "Обсудить последствия спленэктомии",
+ ],
+ structure:
+ "Селезёнка (150–200 г) лежит в левом подреберье под диафрагмой, покрытая капсулой. Через ворота проходят селезёночные артерия и вена. Внутри чередуются красная пульпа (тяжи и синусоиды, фильтрующие кровь) и белая пульпа (периартериолярные лимфоидные муфты и фолликулы — иммунная часть). Она внутрибрюшинная, но развивается в дорсальной брыжейке, поэтому её связки (желудочно-селезёночная, селезёночно-почечная) несут её сосуды.",
+ function:
+ "Красная пульпа удаляет состарившиеся или повреждённые эритроциты, тромбоциты и обломки и возвращает железо; она также хранит форменные элементы крови. Белая пульпа организует иммунный ответ на возбудителей в крови — селезёнка крупнейший лимфоидный орган. Во внутриутробном периоде селезёнка производит клетки крови; после рождения эту функцию берёт костный мозг.",
+ clinical: [
+ "Разрыв селезёнки при тупой травме вызывает опасное кровотечение; может потребоваться спленэктомия.",
+ "Аспления повышает риск сепсиса от инкапсулированных бактерий — обязательны вакцинация и профилактика.",
+ "Спленомегалия бывает при инфекциях (мононуклеоз, малярия), гемолитических анемиях и портальной гипертензии.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Ross M.H., Pawlina W. Histology: A Text and Atlas. 8th ed. Wolters Kluwer, 2020.",
+ ],
+ },
+ },
+ thymus: {
+ en: {
+ objectives: [
+ "Describe the location and structure of the thymus",
+ "Explain T-cell selection in the thymus",
+ "Discuss thymic disorders and involution",
+ ],
+ structure:
+ "The thymus lies in the anterior mediastinum behind the sternum, with two lobes united by connective tissue. Each lobe has a cortex (dense thymocytes) and a medulla (with Hassall's corpuscles). The thymus is largest in childhood (20–40 g) and undergoes age-related involution, with lymphoid tissue progressively replaced by fat.",
+ function:
+ "Bone-marrow precursors enter the cortex as thymocytes and develop into T-cells. Positive selection keeps cells able to recognise self-MHC; negative selection eliminates those that react to self-antigens, preventing autoimmunity. Mature T-cells then seed the peripheral lymphoid organs. The thymus also produces hormones such as thymosin that support T-cell maturation.",
+ clinical: [
+ "DiGeorge syndrome (thymic aplasia) causes T-cell deficiency and susceptibility to infection.",
+ "Myasthenia gravis is associated with thymic hyperplasia or thymoma and improves after thymectomy in many patients.",
+ "Thymoma is a rare mediastinal tumour often found incidentally on imaging.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Ross M.H., Pawlina W. Histology: A Text and Atlas. 8th ed. Wolters Kluwer, 2020.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать расположение и строение тимуса",
+ "Объяснить селекцию T-клеток в тимусе",
+ "Обсудить заболевания тимуса и инволюцию",
+ ],
+ structure:
+ "Тимус лежит в переднем средостении за грудиной, состоит из двух долей, соединённых соединительной тканью. В каждой доле — корковое вещество (плотные тимоциты) и мозговое (с тельцами Гассаля). Тимус максимален в детстве (20–40 г) и с возрастом подвергается инволюции: лимфоидная ткань постепенно замещается жиром.",
+ function:
+ "Предшественники из костного мозга входят в кору как тимоциты и развиваются в T-клетки. Положительная селекция сохраняет клетки, способные распознавать собственные молекулы MHC; отрицательная уничтожает клетки, реагирующие на собственные антигены, предотвращая аутоиммунитет. Зрелые T-клетки заселяют периферические лимфоидные органы. Тимус также вырабатывает гормоны (тимозин), поддерживающие созревание T-клеток.",
+ clinical: [
+ "Синдром Ди Джорджи (аплазия тимуса) вызывает дефицит T-клеток и восприимчивость к инфекциям.",
+ "Миастения гравис связана с гиперплазией тимуса или тимомой; у многих пациентов улучшение наступает после тимэктомии.",
+ "Тимома — редкая опухоль средостения, часто обнаруживается случайно при лучевой диагностике.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Ross M.H., Pawlina W. Histology: A Text and Atlas. 8th ed. Wolters Kluwer, 2020.",
+ ],
+ },
+ },
+ "lymph-node": {
+ en: {
+ objectives: [
+ "Describe the structure of a lymph node",
+ "Explain how lymph is filtered and immune responses start",
+ "Recognise the significance of enlarged nodes",
+ ],
+ structure:
+ "A lymph node is a bean-shaped organ (1–25 mm) along lymphatic vessels, with a fibrous capsule, afferent vessels entering the convex surface and efferent vessels leaving at the hilum. Beneath the capsule lies the cortex with B-cell follicles, the paracortex with T-cells, and the medulla with cords and sinuses. Reticular fibres form a mesh that slows lymph flow, maximising contact with immune cells.",
+ function:
+ "Lymph percolates through sinuses, where macrophages phagocytose pathogens and dendritic cells present antigens to lymphocytes, launching antibody and cellular responses. Nodes thus filter ~several litres of lymph daily and are the first place immune responses to tissue infections are organised. They also serve as staging sites for cancer spread.",
+ clinical: [
+ "Reactive lymphadenitis — painful, enlarged nodes during infections — is the most common cause of lymphadenopathy.",
+ "Persistent, rubbery or matted nodes raise suspicion of lymphoma, metastases or tuberculosis.",
+ "Sentinel node biopsy determines whether a cancer has spread to the draining node basin.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Ross M.H., Pawlina W. Histology: A Text and Atlas. 8th ed. Wolters Kluwer, 2020.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать строение лимфатического узла",
+ "Объяснить фильтрацию лимфы и начало иммунного ответа",
+ "Оценивать значение увеличенных узлов",
+ ],
+ structure:
+ "Лимфатический узел — бобовидный орган (1–25 мм) на пути лимфатических сосудов: фиброзная капсула, приносящие сосуды на выпуклой поверхности и выносящие — в воротах. Под капсулой — корковое вещество с фолликулами B-клеток, паракортикальная зона с T-клетками и мозговое вещество с тяжами и синусами. Сеть ретикулярных волокон замедляет ток лимфы, усиливая контакт с иммунными клетками.",
+ function:
+ "Лимфа просачивается через синусы, где макрофаги фагоцитируют возбудителей, а дендритные клетки представляют антигены лимфоцитам, запуская гуморальный и клеточный ответ. Узлы фильтруют несколько литров лимфы в сутки и первыми организуют иммунный ответ на тканевые инфекции. Они также служат «этапами» распространения рака.",
+ clinical: [
+ "Реактивный лимфаденит — болезненные увеличенные узлы при инфекциях — самая частая причина лимфаденопатии.",
+ "Стойкие, плотные или спаянные узлы подозрительны на лимфому, метастазы или туберкулёз.",
+ "Биопсия сторожевого узла определяет, распространился ли рак в регионарные узлы.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Ross M.H., Pawlina W. Histology: A Text and Atlas. 8th ed. Wolters Kluwer, 2020.",
+ ],
+ },
+ },
+ thyroid: {
+ en: {
+ objectives: [
+ "Describe the anatomy of the thyroid gland",
+ "Explain thyroid hormone synthesis and regulation",
+ "Outline hyperthyroidism and hypothyroidism",
+ ],
+ structure:
+ "The thyroid gland (15–25 g) is butterfly-shaped in the front of the neck, with right and left lobes joined by an isthmus over the trachea, below the thyroid cartilage. It is enveloped by the pretracheal fascia and lies on the recurrent laryngeal nerves (which must be spared in surgery). Histologically it is built of follicles — spheres of follicular cells surrounding colloid, where thyroid hormones are stored.",
+ function:
+ "Follicular cells take up iodine and synthesize thyroxine (T4) and triiodothyronine (T3), stored in colloid and released under TSH control. T3/T4 raise the metabolic rate of nearly every cell — heat production, heart rate, growth and brain development in children. Parafollicular (C) cells secrete calcitonin, lowering blood calcium.",
+ clinical: [
+ "Hypothyroidism (fatigue, weight gain, cold intolerance) is usually autoimmune (Hashimoto's); treated with levothyroxine.",
+ "Hyperthyroidism (weight loss, tremor, palpitations) — Graves' disease is the most common cause.",
+ "Thyroid nodules are common; ultrasound and cytology (FNA) distinguish benign nodules from cancer.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать анатомию щитовидной железы",
+ "Объяснить синтез и регуляцию тиреоидных гормонов",
+ "Рассмотреть гипертиреоз и гипотиреоз",
+ ],
+ structure:
+ "Щитовидная железа (15–25 г) бабочковидной формы расположена на передней поверхности шеи: правая и левая доли соединены перешейком над трахеей, ниже щитовидного хряща. Она покрыта предтрахеальной фасцией и лежит на возвратных гортанных нервах (их берегут при операциях). Гистологически железа состоит из фолликулов — шаров фолликулярных клеток вокруг коллоида, где хранятся тиреоидные гормоны.",
+ function:
+ "Фолликулярные клетки захватывают йод и синтезируют тироксин (T4) и трийодтиронин (T3), запасаемые в коллоиде и выделяемые под контролем ТТГ. T3/T4 повышают обмен веществ почти каждой клетки — теплопродукцию, частоту сердечных сокращений, рост и развитие мозга у детей. Парафолликулярные (C) клетки секретируют кальцитонин, снижающий уровень кальция в крови.",
+ clinical: [
+ "Гипотиреоз (слабость, набор веса, зябкость) обычно аутоиммунный (Хашимото); лечится левотироксином.",
+ "Гипертиреоз (похудание, тремор, сердцебиение) — чаще всего болезнь Грейвса.",
+ "Узлы щитовидной железы часты; УЗИ и цитология (ТАБ) отличают доброкачественные узлы от рака.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ },
+ adrenal: {
+ en: {
+ objectives: [
+ "Describe the two parts of the adrenal gland",
+ "Explain cortisol, aldosterone and catecholamine functions",
+ "Outline adrenal insufficiency and excess states",
+ ],
+ structure:
+ "Each adrenal gland (4–5 g) caps a kidney like a small pyramid, enclosed in the renal fascia. The outer cortex has three zones — zona glomerulosa (aldosterone), zona fasciculata (cortisol), zona reticularis (androgens) — and the inner medulla contains chromaffin cells producing catecholamines. The glands have a rich triple arterial supply and a single central vein.",
+ function:
+ "Cortisol, the stress hormone, mobilises glucose, modulates immunity and maintains vascular tone; aldosterone retains sodium and excretes potassium, controlling blood volume and pressure; adrenal androgens contribute to sexual development. The medulla releases adrenaline and noradrenaline within seconds for fight-or-flight — raised heart rate, bronchodilation, redirected blood flow.",
+ clinical: [
+ "Addison's disease — cortisol/aldosterone deficiency — causes hypotension, hyperpigmentation and salt craving.",
+ "Cushing's syndrome — cortisol excess — causes central obesity, hypertension and hyperglycaemia.",
+ "Pheochromocytoma — a catecholamine-secreting tumour — causes episodic hypertensive crises.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать две части надпочечника",
+ "Объяснить функции кортизола, альдостерона и катехоламинов",
+ "Рассмотреть недостаточность и избыток гормонов надпочечников",
+ ],
+ structure:
+ "Каждый надпочечник (4–5 г) венчает почку маленькой пирамидой, заключённой в почечную фасцию. Наружная кора имеет три зоны — клубочковую (альдостерон), пучковую (кортизол) и сетчатую (андрогены), — а внутреннее мозговое вещество содержит хромаффинные клетки, производящие катехоламины. Железы имеют тройное артериальное кровоснабжение и одну центральную вену.",
+ function:
+ "Кортизол, гормон стресса, мобилизует глюкозу, модулирует иммунитет и поддерживает тонус сосудов; альдостерон задерживает натрий и выводит калий, управляя объёмом крови и давлением; андрогены надпочечников участвуют в половом развитии. Мозговое вещество за секунды выбрасывает адреналин и норадреналин для реакции «бей или беги» — учащение пульса, расширение бронхов, перераспределение кровотока.",
+ clinical: [
+ "Болезнь Аддисона — дефицит кортизола и альдостерона — вызывает гипотензию, гиперпигментацию и тягу к соли.",
+ "Синдром Кушинга — избыток кортизола — вызывает центральное ожирение, гипертензию и гипергликемию.",
+ "Феохромоцитома — опухоль, выделяющая катехоламины, — вызывает эпизодические гипертонические кризы.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ },
+ pituitary: {
+ en: {
+ objectives: [
+ "Describe the anatomy of the pituitary and its connections",
+ "List the hormones of the anterior and posterior lobes",
+ "Explain the consequences of pituitary disorders",
+ ],
+ structure:
+ "The pituitary (hypophysis, 0.5–1 g) sits in the sella turcica of the sphenoid bone, connected to the hypothalamus by the infundibulum. The anterior lobe (adenohypophysis) is a true gland of epithelial origin; the posterior lobe (neurohypophysis) is nervous tissue storing hypothalamic hormones. The hypophyseal portal system links the hypothalamus to the anterior lobe.",
+ function:
+ "The anterior lobe secretes growth hormone, prolactin, TSH, ACTH, FSH and LH, driven by hypothalamic releasing factors. The posterior lobe stores and releases oxytocin (labour, milk ejection) and antidiuretic hormone (water retention). Together these hormones govern growth, metabolism, stress, reproduction and fluid balance.",
+ clinical: [
+ "Pituitary adenomas can overproduce hormones (prolactinoma, acromegaly, Cushing's disease) or compress the optic chiasm, causing bitemporal hemianopia.",
+ "Hypopituitarism causes secondary hypothyroidism, adrenal insufficiency and hypogonadism.",
+ "Diabetes insipidus — ADH deficiency — causes large volumes of dilute urine and thirst.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать анатомию гипофиза и его связи",
+ "Перечислить гормоны передней и задней долей",
+ "Объяснить последствия заболеваний гипофиза",
+ ],
+ structure:
+ "Гипофиз (0,5–1 г) лежит в турецком седле клиновидной кости и соединён с гипоталамусом воронкой (ножкой). Передняя доля (аденогипофиз) — настоящая железа эпителиального происхождения; задняя (нейрогипофиз) — нервная ткань, хранящая гормоны гипоталамуса. Портальная система гипофиза связывает гипоталамус с передней долей.",
+ function:
+ "Передняя доля секретирует соматотропный гормон, пролактин, ТТГ, АКТГ, ФСГ и ЛГ под действием рилизинг-факторов гипоталамуса. Задняя доля хранит и выделяет окситоцин (роды, выделение молока) и антидиуретический гормон (задержка воды). Вместе эти гормоны управляют ростом, обменом веществ, стрессом, размножением и водным балансом.",
+ clinical: [
+ "Аденомы гипофиза могут избыточно вырабатывать гормоны (пролактинома, акромегалия, болезнь Кушинга) или сдавливать перекрёст зрительных нервов, вызывая битемпоральную гемианопсию.",
+ "Гипопитуитаризм вызывает вторичный гипотиреоз, надпочечниковую недостаточность и гипогонадизм.",
+ "Несахарный диабет — дефицит АДГ — вызывает большие объёмы разведённой мочи и жажду.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ },
+ trachea: {
+ en: {
+ objectives: [
+ "Describe the structure of the trachea and its rings",
+ "Explain mucociliary clearance",
+ "Recognise tracheal emergencies",
+ ],
+ structure:
+ "The trachea is a 10–12 cm tube from the larynx to the carina at T4–T5, held open by 16–20 C-shaped hyaline cartilage rings open posteriorly, where the trachealis muscle lies. It is lined by pseudostratified ciliated epithelium with goblet cells. The right main bronchus is wider and more vertical than the left — a key fact for aspiration.",
+ function:
+ "The trachea conducts air, warms and humidifies it, and traps particles in mucus. Cilia beat in coordinated waves, sweeping the mucus carpet upward to the pharynx where it is swallowed — the mucociliary escalator that keeps the lungs clean. Coughing is the reflex back-up when the escalator is overwhelmed.",
+ clinical: [
+ "Foreign body aspiration most often lodges in the right main bronchus; acute obstruction of the trachea is an emergency.",
+ "Tracheal stenosis after intubation or trauma narrows the lumen and causes stridor.",
+ "Tracheostomy bypasses upper-airway obstruction below the larynx.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Netter F.H. Atlas of Human Anatomy. 7th ed. Elsevier, 2018.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать строение трахеи и её колец",
+ "Объяснить мукоцилиарный клиренс",
+ "Распознавать неотложные состояния трахеи",
+ ],
+ structure:
+ "Трахея — трубка 10–12 см от гортани до бифуркации на уровне T4–T5; просвет держат 16–20 C-образных колец гиалинового хряща, незамкнутых сзади, где лежит трахеальная мышца. Выстилает её многорядный реснитчатый эпителий с бокаловидными клетками. Правый главный бронх шире и вертикальнее левого — ключевой факт для аспирации.",
+ function:
+ "Трахея проводит воздух, согревает и увлажняет его и задерживает частицы в слизи. Реснички согласованными волнами гонят слизистый «ковёр» вверх к глотке, где слизь проглатывается, — мукоцилиарный эскалатор, сохраняющий лёгкие чистыми. Кашель — рефлекторное дублирование, когда эскалатор перегружен.",
+ clinical: [
+ "Аспирированное инородное тело чаще всего попадает в правый главный бронх; острая закупорка трахеи — неотложное состояние.",
+ "Стеноз трахеи после интубации или травмы сужает просвет и вызывает стридор.",
+ "Трахеостомия обходит обструкцию верхних дыхательных путей ниже гортани.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Netter F.H. Atlas of Human Anatomy. 7th ed. Elsevier, 2018.",
+ ],
+ },
+ },
+ larynx: {
+ en: {
+ objectives: [
+ "Describe the cartilages and ligaments of the larynx",
+ "Explain phonation and airway protection",
+ "Outline common laryngeal disorders",
+ ],
+ structure:
+ "The larynx (4–5 cm) is a cartilaginous framework between the pharynx and trachea: the thyroid cartilage (Adam's apple), cricoid ring, paired arytenoid cartilages, and the leaf-shaped epiglottis. The vocal folds — two folds of mucosa over the vocal ligaments — stretch between the thyroid and arytenoid cartilages. Intrinsic muscles adjust their tension; the recurrent laryngeal nerves (CN X) supply all but one.",
+ function:
+ "Phonation: air from the lungs sets the vocal folds vibrating; pitch depends on their tension and length, loudness on airflow. The epiglottis and the laryngeal inlet close during swallowing, protecting the airway. The larynx also generates the cough reflex and helps fix the chest for lifting.",
+ clinical: [
+ "Laryngitis (usually viral) causes hoarseness; voice rest speeds recovery.",
+ "Recurrent laryngeal nerve injury (thyroid surgery, tumours) causes vocal fold paralysis and hoarseness.",
+ "Acute epiglottitis is a life-threatening airway emergency, now rare thanks to Hib vaccination.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Netter F.H. Atlas of Human Anatomy. 7th ed. Elsevier, 2018.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать хрящи и связки гортани",
+ "Объяснить фонацию и защиту дыхательных путей",
+ "Перечислить частые заболевания гортани",
+ ],
+ structure:
+ "Гортань (4–5 см) — хрящевой каркас между глоткой и трахеей: щитовидный хрящ («кадык»), перстневидное кольцо, парные черпаловидные хрящи и листовидный надгортанник. Голосовые складки — две складки слизистой над голосовыми связками — натянуты между щитовидным и черпаловидными хрящами. Внутренние мышцы меняют их натяжение; все мышцы, кроме одной, иннервирует возвратный гортанный нерв (X пара).",
+ function:
+ "Фонация: воздух из лёгких приводит голосовые складки в колебание; высота тона зависит от их натяжения и длины, громкость — от потока воздуха. Надгортанник и вход в гортань при глотании закрываются, защищая дыхательные пути. Гортань также запускает кашлевой рефлекс и помогает фиксировать грудную клетку при подъёме тяжестей.",
+ clinical: [
+ "Ларингит (обычно вирусный) вызывает осиплость; голосовой покой ускоряет выздоровление.",
+ "Повреждение возвратного гортанного нерва (операции на щитовидной железе, опухоли) ведёт к параличу голосовой складки и осиплости.",
+ "Острый эпиглоттит — жизнеугрожающая обструкция дыхательных путей, ныне редкая благодаря вакцинации от гемофильной инфекции.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Netter F.H. Atlas of Human Anatomy. 7th ed. Elsevier, 2018.",
+ ],
+ },
+ },
+ bladder: {
+ en: {
+ objectives: [
+ "Describe the anatomy of the bladder and its relations",
+ "Explain the micturition reflex and voluntary control",
+ "Outline common bladder disorders",
+ ],
+ structure:
+ "The urinary bladder is a hollow muscular organ in the pelvis behind the pubic bone, with an apex, body, fundus and neck. Its floor carries the trigone — the fixed triangle between the ureteric orifices and the internal urethral orifice. The wall is the detrusor muscle lined by urothelium; the internal sphincter is involuntary smooth muscle, the external sphincter is voluntary skeletal muscle.",
+ function:
+ "Urine from the kidneys drains via the ureters into the bladder. The detrusor relaxes during filling (400–600 mL capacity); the first urge appears at ~150–250 mL. Micturition is a spinal reflex (sacral S2–S4) under cortical control: the sphincters relax, the detrusor contracts and urine flows out. Continence relies on intact pelvic floor and sphincter function.",
+ clinical: [
+ "Cystitis — bladder infection — causes frequency, urgency and dysuria; it is far more common in women.",
+ "Bladder cancer (usually transitional cell) is linked to smoking; haematuria is the classic sign.",
+ "Urinary incontinence has many causes — from sphincter weakness to neurogenic bladder.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать анатомию мочевого пузыря и его отношения",
+ "Объяснить рефлекс мочеиспускания и произвольный контроль",
+ "Перечислить частые заболевания мочевого пузыря",
+ ],
+ structure:
+ "Мочевой пузырь — полый мышечный орган в малом тазу за лобковой костью, с верхушкой, телом, дном и шейкой. На дне — тригон — неподвижный треугольник между устьями мочеточников и внутренним отверстием уретры. Стенка — детрузор, выстланный уротелием; внутренний сфинктер — непроизвольная гладкая мышца, наружный — произвольная скелетная.",
+ function:
+ "Моча из почек по мочеточникам поступает в пузырь. Во время наполнения детрузор расслаблен (вместимость 400–600 мл); первый позыв — при ~150–250 мл. Мочеиспускание — спинномозговой рефлекс (S2–S4) под корковым контролем: сфинктеры расслабляются, детрузор сокращается, моча выходит. Удержание зависит от целостности тазового дна и функции сфинктеров.",
+ clinical: [
+ "Цистит — инфекция мочевого пузыря — вызывает учащённое и болезненное мочеиспускание; у женщин он встречается гораздо чаще.",
+ "Рак мочевого пузыря (обычно переходно-клеточный) связан с курением; классический признак — гематурия.",
+ "Недержание мочи имеет много причин — от слабости сфинктеров до нейрогенного пузыря.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ },
+ uterus: {
+ en: {
+ objectives: [
+ "Describe the anatomy of the uterus and its layers",
+ "Explain the menstrual cycle and implantation",
+ "Outline common uterine disorders",
+ ],
+ structure:
+ "The uterus is a pear-shaped, thick-walled organ (7–8 cm) in the pelvis between bladder and rectum, divided into fundus, body, isthmus and cervix. The wall has three layers: perimetrium (serosa), myometrium (thick smooth muscle) and endometrium (mucosa, with a functional layer shed each cycle). The fallopian tubes enter at the cornua; the cervix opens into the vagina.",
+ function:
+ "Each cycle, hormones drive endometrial proliferation (oestrogen) and secretory transformation (progesterone) preparing for implantation. If no pregnancy occurs, the functional layer is shed as menstruation; if implantation happens, the corpus luteum maintains the endometrium and the uterus expands ~500-fold during gestation. At birth, coordinated myometrial contractions expel the baby.",
+ clinical: [
+ "Uterine fibroids — benign smooth-muscle tumours — are common and can cause heavy bleeding.",
+ "Endometriosis — endometrial tissue outside the uterus — causes pain and infertility.",
+ "Cervical cancer screening (Pap smear, HPV testing) has dramatically reduced deaths.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать анатомию матки и её слои",
+ "Объяснить менструальный цикл и имплантацию",
+ "Перечислить частые заболевания матки",
+ ],
+ structure:
+ "Матка — грушевидный толстостенный орган (7–8 см) в малом тазу между мочевым пузырём и прямой кишкой; в ней выделяют дно, тело, перешеек и шейку. Стенка имеет три слоя: периметрий (сероза), миометрий (толстая гладкая мышца) и эндометрий (слизистая с функциональным слоем, отторгающимся каждый цикл). Маточные трубы впадают в рога; шейка открывается во влагалище.",
+ function:
+ "Каждый цикл гормоны запускают пролиферацию эндометрия (эстроген) и секреторную трансформацию (прогестерон), готовя его к имплантации. Если беременности нет, функциональный слой отторгается — менструация; если наступила имплантация, жёлтое тело поддерживает эндометрий, а матка во время беременности увеличивается примерно в 500 раз. В родах согласованные сокращения миометрия изгоняют плод.",
+ clinical: [
+ "Миомы матки — доброкачественные опухоли гладкой мускулатуры — часты и могут вызывать обильные кровотечения.",
+ "Эндометриоз — ткань эндометрия вне матки — вызывает боль и бесплодие.",
+ "Скрининг рака шейки матки (цитология, тест на ВПЧ) резко снизил смертность.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ },
+ ovary: {
+ en: {
+ objectives: [
+ "Describe the structure of the ovary and its blood supply",
+ "Explain folliculogenesis and ovulation",
+ "Outline common ovarian disorders",
+ ],
+ structure:
+ "Each ovary (3–4 cm, 5–8 g) is an almond-shaped gonad in the ovarian fossa, attached by the mesovarium, ovarian and suspensory ligaments. It has a cortex packed with follicles at various stages and a medulla of vessels and nerves. The ovarian artery (from the aorta) and the ovarian branch of the uterine artery supply it; the veins form the pampiniform plexus.",
+ function:
+ "Folliculogenesis: each cycle a cohort of follicles grows under FSH; one becomes dominant and ovulates at mid-cycle under the LH surge. The remaining follicle becomes the corpus luteum, secreting progesterone. Ovarian oestrogen drives the proliferative phase and female secondary characteristics; the ovary also contains the oocyte reserve — ~1–2 million at birth, ~400 ovulated.",
+ clinical: [
+ "Polycystic ovary syndrome — androgen excess with ovulatory dysfunction — is a leading cause of infertility.",
+ "Ovarian cysts are usually benign and resolve; torsion or rupture causes acute pain.",
+ "Ovarian cancer is often asymptomatic until late — one reason it is the deadliest gynaecologic cancer.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать строение яичника и его кровоснабжение",
+ "Объяснить фолликулогенез и овуляцию",
+ "Перечислить частые заболевания яичников",
+ ],
+ structure:
+ "Каждый яичник (3–4 см, 5–8 г) — миндалевидная гонада в яичниковой ямке, фиксированная брыжейкой и связками. В корковом веществе — фолликулы на разных стадиях, в мозговом — сосуды и нервы. Кровоснабжают яичниковая артерия (от аорты) и яичниковая ветвь маточной артерии; вены образуют лозовидное сплетение.",
+ function:
+ "Фолликулогенез: каждый цикл под действием ФСГ растёт когорта фолликулов; один становится доминантным и овулирует в середине цикла под пиком ЛГ. Оставшийся фолликул превращается в жёлтое тело, секретирующее прогестерон. Эстроген яичников управляет пролиферативной фазой и женскими вторичными признаками; яичник также хранит резерв ооцитов — 1–2 млн при рождении, овулирует ~400.",
+ clinical: [
+ "Синдром поликистозных яичников — избыток андрогенов с нарушением овуляции — ведущая причина бесплодия.",
+ "Кисты яичников обычно доброкачественны и рассасываются; перекрут или разрыв вызывает острую боль.",
+ "Рак яичников долго протекает бессимптомно — одна из причин, почему это самый смертоносный гинекологический рак.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ },
+ testis: {
+ en: {
+ objectives: [
+ "Describe the structure of the testis and its coverings",
+ "Explain spermatogenesis and hormonal control",
+ "Outline common testicular disorders",
+ ],
+ structure:
+ "Each testis (4–5 cm, 15–25 g) is an oval organ in the scrotum, covered by the tunica albuginea and, outside it, by the visceral and parietal layers of the tunica vaginalis. Septa divide it into ~250 lobules of seminiferous tubules that join the rete testis and efferent ducts to the epididymis. Leydig cells lie between tubules; Sertoli cells line them and form the blood–testis barrier.",
+ function:
+ "Spermatogenesis in the seminiferous tubules produces ~1,500 sperm per second, taking ~74 days; the epididymis matures and stores them. Sertoli cells nourish germ cells and secrete inhibin; Leydig cells secrete testosterone under LH, while FSH drives spermatogenesis. The scrotum keeps the testes 2–3 °C below core temperature — essential for sperm production.",
+ clinical: [
+ "Testicular torsion — twisting of the spermatic cord — is a surgical emergency; salvage depends on time.",
+ "Testicular cancer is the most common cancer in young men (15–35); early cure rates exceed 95%.",
+ "Undescended testis should be corrected early to preserve fertility and reduce cancer risk.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать строение яичка и его оболочки",
+ "Объяснить сперматогенез и гормональную регуляцию",
+ "Перечислить частые заболевания яичек",
+ ],
+ structure:
+ "Каждое яичко (4–5 см, 15–25 г) — овальный орган в мошонке, покрытый белочной оболочкой, а снаружи — висцеральным и париетальным листками влагалищной оболочки. Перегородки делят его на ~250 долек семенных канальцев, соединяющихся в сеть яичка и выносящие канальцы, ведущие к придатку. Клетки Лейдига лежат между канальцами; клетки Сертоли выстилают их и образуют гематотестикулярный барьер.",
+ function:
+ "Сперматогенез в семенных канальцах даёт около 1 500 сперматозоидов в секунду и занимает ~74 дня; придаток дозревает и хранит их. Клетки Сертоли питают половые клетки и секретируют ингибин; клетки Лейдига под действием ЛГ выделяют тестостерон, а ФСГ управляет сперматогенезом. Мошонка держит яички на 2–3 °C холоднее тела — это необходимо для продукции спермы.",
+ clinical: [
+ "Перекрут яичка — поворот семенного канатика — хирургическая неотложная ситуация; шанс спасти яичко зависит от времени.",
+ "Рак яичка — самая частая опухоль у молодых мужчин (15–35 лет); при раннем лечении излечивается более чем в 95% случаев.",
+ "Неопущенное яичко нужно лечить рано, чтобы сохранить фертильность и снизить риск рака.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ },
+ prostate: {
+ en: {
+ objectives: [
+ "Describe the anatomy and zones of the prostate",
+ "Explain its role in semen and urination",
+ "Outline BPH, prostatitis and prostate cancer",
+ ],
+ structure:
+ "The prostate (15–25 g) is a walnut-sized fibromuscular gland below the bladder, surrounding the prostatic urethra. It has a peripheral zone (where most cancers arise), a transition zone (site of BPH), a central zone and a fibromuscular stroma. The prostatic urethra is joined by the ejaculatory ducts; the gland is enclosed in a capsule and supplied by the inferior vesical and middle rectal arteries.",
+ function:
+ "Prostatic glands secrete ~30% of semen volume — a thin, slightly acidic fluid rich in prostate-specific antigen (PSA), zinc and citric acid that supports sperm motility. The smooth muscle of the gland contracts at ejaculation, mixing its secretions with sperm and seminal vesicle fluid. The gland also participates in urinary control by virtue of its position around the urethra.",
+ clinical: [
+ "BPH — transition-zone hyperplasia — compresses the urethra causing hesitancy, weak stream and nocturia.",
+ "Prostatitis (acute or chronic) causes pelvic pain, urinary symptoms and sometimes fever.",
+ "Prostate cancer (mostly peripheral zone) is screened with PSA and DRE; most cases are slow-growing.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать анатомию и зоны предстательной железы",
+ "Объяснить её роль в семяизвержении и мочеиспускании",
+ "Рассмотреть ДГПЖ, простатит и рак предстательной железы",
+ ],
+ structure:
+ "Предстательная железа (15–25 г) — фиброзно-мышечный орган размером с грецкий орех, ниже мочевого пузыря, окружающий простатическую часть уретры. В ней выделяют периферическую зону (здесь чаще всего рак), переходную зону (место ДГПЖ), центральную зону и фиброзно-мышечную строму. В уретру впадают семявыбрасывающие протоки; железа покрыта капсулой и кровоснабжается нижними пузырными и средними прямокишечными артериями.",
+ function:
+ "Предстательные железы секретируют около 30% объёма эякулята — тонкую слабокислую жидкость, богатую простатическим специфическим антигеном (ПСА), цинком и лимонной кислотой, поддерживающую подвижность сперматозоидов. Гладкая мускулатура железы сокращается при эякуляции, смешивая секрет со спермой и жидкостью семенных пузырьков. Расположение вокруг уретры делает железу участницей мочеиспускания.",
+ clinical: [
+ "ДГПЖ — гиперплазия переходной зоны — сдавливает уретру, вызывая затруднённое мочеиспускание, слабую струю и никтурию.",
+ "Простатит (острый или хронический) вызывает тазовую боль, дизурию, иногда лихорадку.",
+ "Рак предстательной железы (в основном периферическая зона) скринируют ПСА и пальцевым исследованием; большинство случаев растут медленно.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Guyton A.C., Hall J.E. Textbook of Medical Physiology. 14th ed. Elsevier, 2020.",
+ ],
+ },
+ },
+ "spinal-cord": {
+ en: {
+ objectives: [
+ "Describe the external and internal anatomy of the spinal cord",
+ "Explain ascending and descending tracts",
+ "Recognise the effects of spinal cord injury",
+ ],
+ structure:
+ "The spinal cord (~45 cm) lies in the vertebral canal from the foramen magnum to L1–L2 in adults. It has cervical and lumbar enlargements for the limbs, and tapers into the conus medullaris; below it, nerve roots form the cauda equina. Cross-section: central H-shaped grey matter (dorsal, lateral and ventral horns) surrounded by white matter columns (dorsal, lateral, ventral funiculi) carrying tracts.",
+ function:
+ "Ascending tracts (dorsal columns for touch/proprioception, spinothalamic for pain/temperature) carry sensation to the brain; descending tracts (corticospinal) carry motor commands to muscles. Reflex arcs — sensory neuron → interneuron → motor neuron — are computed in the cord in ~30 ms. The cord also coordinates micturition, defecation and sexual reflexes via its autonomic centres.",
+ clinical: [
+ "Spinal cord injury: cervical lesions cause tetraplegia, thoracic lesions paraplegia; the level determines function.",
+ "Complete cord transection abolishes sensation and voluntary movement below the lesion, with spinal shock first.",
+ "Multiple sclerosis — demyelination of cord and brain tracts — causes weakness, sensory loss and sphincter problems.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Nolte J. The Human Brain. 8th ed. Elsevier, 2020.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать наружное и внутреннее строение спинного мозга",
+ "Объяснить восходящие и нисходящие пути",
+ "Распознавать последствия травмы спинного мозга",
+ ],
+ structure:
+ "Спинной мозг (~45 см) лежит в позвоночном канале от большого затылочного отверстия до L1–L2 у взрослых. У него есть шейное и поясничное утолщения для конечностей; книзу он сужается в мозговой конус, а ниже корешки образуют «конский хвост». На поперечном срезе — центральное H-образное серое вещество (задние, боковые и передние рога), окружённое канатиками белого вещества (задние, боковые, передние) с проводящими путями.",
+ function:
+ "Восходящие пути (задние канатики — прикосновение и проприоцепция, спиноталамический — боль и температура) несут ощущения в мозг; нисходящие (кортикоспинальный) — двигательные команды к мышцам. Рефлекторные дуги — чувствительный нейрон → вставочный → двигательный — замыкаются в спинном мозге за ~30 мс. Спинной мозг также координирует мочеиспускание, дефекацию и половые рефлексы через свои вегетативные центры.",
+ clinical: [
+ "Травма спинного мозга: поражения на шейном уровне вызывают тетраплегию, на грудном — параплегию; уровень определяет функции.",
+ "Полный перерыв спинного мозга устраняет чувствительность и произвольные движения ниже повреждения; вначале — спинальный шок.",
+ "Рассеянный склероз — демиелинизация путей мозга и спинного мозга — вызывает слабость, расстройства чувствительности и тазовые нарушения.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Nolte J. The Human Brain. 8th ed. Elsevier, 2020.",
+ ],
+ },
+ },
+ diaphragm: {
+ en: {
+ objectives: [
+ "Describe the structure of the diaphragm and its openings",
+ "Explain its role in breathing and the thoracoabdominal pump",
+ "Outline diaphragm disorders",
+ ],
+ structure:
+ "The diaphragm is a dome-shaped skeletal muscle separating the thorax from the abdomen, with a peripheral muscular part and a central tendon. It has three major openings: the aortic hiatus, the esophageal hiatus (with the vagus nerves) and the vena caval foramen. It is innervated by the phrenic nerves (C3–C5) and supplied by the inferior phrenic and musculophrenic arteries.",
+ function:
+ "Contraction flattens the dome, enlarging the thoracic cavity and drawing air in (inspiration, ~60–75% of the work of breathing); relaxation lets the dome rise and air flow out. The diaphragm also assists coughing, vomiting, defecation and childbirth by raising intra-abdominal pressure, and its descent aids venous return to the heart (thoracoabdominal pump).",
+ clinical: [
+ "Hiatal hernia — protrusion of the stomach through the esophageal hiatus — predisposes to GERD.",
+ "Phrenic nerve paralysis causes paradoxical (paradoxical) breathing and dyspnoea.",
+ "Congenital diaphragmatic hernia — a developmental defect — is a neonatal emergency.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Netter F.H. Atlas of Human Anatomy. 7th ed. Elsevier, 2018.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать строение диафрагмы и её отверстия",
+ "Объяснить её роль в дыхании и грудобрюшном насосе",
+ "Перечислить заболевания диафрагмы",
+ ],
+ structure:
+ "Диафрагма — куполообразная скелетная мышца, разделяющая грудную и брюшную полости: периферическая мышечная часть и сухожильный центр. В ней три крупных отверстия: аортальное, пищеводное (с блуждающими нервами) и отверстие нижней полой вены. Иннервируется диафрагмальными нервами (C3–C5), кровоснабжается нижними диафрагмальными и мышечно-диафрагмальными артериями.",
+ function:
+ "Сокращение уплощает купол, увеличивая грудную полость и втягивая воздух (вдох, ~60–75% работы дыхания); расслабление поднимает купол и выпускает воздух. Диафрагма также помогает кашлю, рвоте, дефекации и родам, повышая внутрибрюшное давление, а её опускание улучшает венозный возврат к сердцу (грудобрюшной насос).",
+ clinical: [
+ "Грыжа пищеводного отверстия — выпячивание желудка через пищеводное отверстие — предрасполагает к ГЭРБ.",
+ "Паралич диафрагмального нерва вызывает парадоксальное дыхание и одышку.",
+ "Врождённая диафрагмальная грыжа — порок развития — неотложное состояние новорождённых.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Netter F.H. Atlas of Human Anatomy. 7th ed. Elsevier, 2018.",
+ ],
+ },
+ },
+ biceps: {
+ en: {
+ objectives: [
+ "Describe the origins and insertion of the biceps brachii",
+ "Explain its actions and innervation",
+ "Recognise common biceps injuries",
+ ],
+ structure:
+ "The biceps brachii is a two-headed muscle of the anterior arm. The long head arises from the supraglenoid tubercle and passes through the shoulder joint capsule; the short head arises from the coracoid process. Both heads converge into a single distal tendon inserting on the radial tuberosity, and the bicipital aponeurosis fans into forearm fascia. The musculocutaneous nerve (C5–C6) innervates it.",
+ function:
+ "The biceps is a powerful flexor of the elbow and the strongest supinator of the forearm — its supination force is greatest when the elbow is flexed. It also assists shoulder flexion. It is the muscle people 'show' when flexing, and its distal tendon is the familiar Popeye-like landmark after rupture.",
+ clinical: [
+ "Distal biceps rupture occurs with sudden eccentric loading; surgical repair restores strength and supination.",
+ "Long head tendinopathy causes anterior shoulder pain, common in overhead athletes.",
+ "Nerve injury (musculocutaneous) weakens elbow flexion and supination and diminishes the biceps reflex.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Netter F.H. Atlas of Human Anatomy. 7th ed. Elsevier, 2018.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать начало и прикрепление двуглавой мышцы плеча",
+ "Объяснить её функции и иннервацию",
+ "Распознавать частые повреждения бицепса",
+ ],
+ structure:
+ "Двуглавая мышца плеча — мышца передней поверхности плеча с двумя головками. Длинная головка начинается от надсуставного бугорка лопатки и проходит через капсулу плечевого сустава; короткая — от клювовидного отростка. Обе головки сходятся в одно дистальное сухожилие, прикрепляющееся к бугристости лучевой кости, а биципитальный апоневроз веером расходится в фасцию предплечья. Иннервирует её мышечно-кожный нерв (C5–C6).",
+ function:
+ "Бицепс — мощный сгибатель локтя и сильнейший супинатор предплечья: супинация сильнее всего при согнутом локте. Он также помогает сгибанию плеча. Это мышца, которую «показывают», сгибая руку, а её дистальное сухожилие — знакомый ориентир «бицепс Попая» после разрыва.",
+ clinical: [
+ "Разрыв дистального сухожилия бицепса случается при резкой эксцентричной нагрузке; операция восстанавливает силу и супинацию.",
+ "Тендинопатия длинной головки вызывает боль в передней части плеча — часто у спортсменов с движениями над головой.",
+ "Повреждение мышечно-кожного нерва ослабляет сгибание локтя и супинацию и снижает рефлекс бицепса.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Netter F.H. Atlas of Human Anatomy. 7th ed. Elsevier, 2018.",
+ ],
+ },
+ },
+ femur: {
+ en: {
+ objectives: [
+ "Describe the parts of the femur",
+ "Explain its role in the hip and knee joints",
+ "Outline common femoral fractures and diseases",
+ ],
+ structure:
+ "The femur (~45–50 cm) is the longest and strongest bone. Its upper end has the head (articulating with the acetabulum), neck, greater and lesser trochanters; the shaft is a cylindrical tube of thick compact bone; the lower end flares into medial and lateral condyles articulating with the tibia and patella. The neck is angled ~125° and is the classic site of osteoporotic fracture.",
+ function:
+ "The femur transmits body weight from the pelvis to the knee and serves as the lever arm for the powerful thigh muscles (quadriceps, hamstrings, gluteals). It houses the largest bone marrow cavity — a major site of haematopoiesis in adults — and contains the nutrient artery supplying the marrow. Its articular surfaces allow flexion, extension and rotation at hip and knee.",
+ clinical: [
+ "Hip fractures (femoral neck) are common in the elderly with osteoporosis; treatment is usually surgery.",
+ "Femoral shaft fractures from high-energy trauma can cause major blood loss (up to 1–2 L).",
+ "Avascular necrosis of the femoral head follows disruption of its blood supply — from fracture or steroids.",
+ ],
+ sources: [
+ "Standring S. Gray's Anatomy. 42nd ed. Elsevier, 2020.",
+ "Netter F.H. Atlas of Human Anatomy. 7th ed. Elsevier, 2018.",
+ ],
+ },
+ ru: {
+ objectives: [
+ "Описать части бедренной кости",
+ "Объяснить её роль в тазобедренном и коленном суставах",
+ "Перечислить частые переломы и заболевания бедра",
+ ],
+ structure:
+ "Бедренная кость (~45–50 см) — самая длинная и прочная кость. Верхний конец: головка (сочленяется с вертлужной впадиной), шейка, большой и малый вертелы; диафиз — цилиндрическая трубка толстого компактного вещества; нижний конец расширяется в медиальный и латеральный мыщелки, сочленяющиеся с большеберцовой костью и надколенником. Шейка наклонена под углом ~125° — классическое место остеопоротического перелома.",
+ function:
+ "Бедренная кость передаёт вес тела от таза к колену и служит рычагом для мощных мышц бедра (квадрицепс, задняя группа, ягодичные). В ней самая большая костномозговая полость — крупный очаг кроветворения у взрослых — и питающая артерия, снабжающая мозг. Суставные поверхности обеспечивают сгибание, разгибание и ротацию в тазобедренном и коленном суставах.",
+ clinical: [
+ "Переломы шейки бедра часты у пожилых с остеопорозом; лечение обычно хирургическое.",
+ "Переломы диафиза при высокоэнергетической травме могут вызывать большую кровопотерю (до 1–2 л).",
+ "Аваскулярный некроз головки бедра развивается при нарушении её кровоснабжения — после перелома или приёма стероидов.",
+ ],
+ sources: [
+ "Синельников Р.Д. Атлас анатомии человека. 8-е изд. — М.: Новая волна, 2021.",
+ "Netter F.H. Atlas of Human Anatomy. 7th ed. Elsevier, 2018.",
+ ],
+ },
+ },
+};
diff --git a/app/lib/content/lessons.ts b/app/lib/content/lessons.ts
index 120efea..8c7bdf2 100644
--- a/app/lib/content/lessons.ts
+++ b/app/lib/content/lessons.ts
@@ -1,4 +1,5 @@
import type { OrganId } from "../anatomy-data";
+import { lessonsExtra } from "./lessons-extra.ts";
/**
* Structured study lessons, one per organ, bilingual (en/ru). Each lesson
@@ -26,7 +27,7 @@ export type Lesson = {
sources: string[];
};
-export const lessons: Record = {
+const lessonsCore: Partial> = {
heart: {
en: {
objectives: [
@@ -425,3 +426,9 @@ export const lessons: Record = {
},
},
};
+
+/** All lessons: the original nine plus the extended organ set. */
+export const lessons: Record = {
+ ...lessonsCore,
+ ...lessonsExtra,
+} as Record;
diff --git a/app/lib/content/questions.ts b/app/lib/content/questions.ts
index c7cccdb..c58e80e 100644
--- a/app/lib/content/questions.ts
+++ b/app/lib/content/questions.ts
@@ -754,6 +754,1057 @@ export const quizBank: Record = {
},
},
],
+
+ stomach: [
+ {
+ en: {
+ prompt: "Which cells of the gastric glands secrete hydrochloric acid?",
+ options: ["Chief cells", "Parietal cells", "Goblet cells", "Enteroendocrine cells"],
+ correct: 1,
+ explanation:
+ "Parietal cells in the gastric glands secrete HCl and intrinsic factor; chief cells secrete pepsinogen, which HCl activates into pepsin.",
+ },
+ ru: {
+ prompt: "Какие клетки желудочных желёз выделяют соляную кислоту?",
+ options: ["Главные клетки", "Париетальные клетки", "Бокаловидные клетки", "Энтероэндокринные клетки"],
+ correct: 1,
+ explanation:
+ "Париетальные клетки желудочных желёз выделяют HCl и внутренний фактор Касла; главные клетки секретируют пепсиноген, который HCl активирует в пепсин.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which structure controls the passage of chyme into the duodenum?",
+ options: ["Cardia", "Pyloric sphincter", "Lower esophageal sphincter", "Ileocecal valve"],
+ correct: 1,
+ explanation:
+ "The pyloric sphincter at the outlet of the stomach meters chyme into the duodenum, preventing backflow and pacing digestion.",
+ },
+ ru: {
+ prompt: "Какая структура регулирует поступление химуса в двенадцатиперстную кишку?",
+ options: ["Кардия", "Привратниковый сфинктер", "Нижний пищеводный сфинктер", "Илеоцекальный клапан"],
+ correct: 1,
+ explanation:
+ "Привратниковый сфинктер на выходе из желудка порциями пропускает химус в двенадцатиперстную кишку, предотвращая заброс и задавая темп переваривания.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which bacteria cause most peptic ulcers?",
+ options: ["Escherichia coli", "Helicobacter pylori", "Streptococcus pneumoniae", "Clostridium difficile"],
+ correct: 1,
+ explanation:
+ "Helicobacter pylori colonises the gastric mucosa, weakening the mucus barrier and enabling acid to damage the wall — the main cause of peptic ulcers.",
+ },
+ ru: {
+ prompt: "Какие бактерии вызывают большинство язв желудка?",
+ options: ["Escherichia coli", "Helicobacter pylori", "Streptococcus pneumoniae", "Clostridium difficile"],
+ correct: 1,
+ explanation:
+ "Helicobacter pylori заселяет слизистую желудка, ослабляет слизистый барьер и позволяет кислоте повреждать стенку — главная причина язвенной болезни.",
+ },
+ },
+ ],
+ gallbladder: [
+ {
+ en: {
+ prompt: "What does the gallbladder store?",
+ options: ["Pancreatic enzymes", "Bile", "Gastric acid", "Insulin"],
+ correct: 1,
+ explanation:
+ "The gallbladder stores and concentrates bile produced by the liver, releasing it into the duodenum when fat arrives.",
+ },
+ ru: {
+ prompt: "Что накапливает жёлчный пузырь?",
+ options: ["Ферменты поджелудочной железы", "Желчь", "Желудочную кислоту", "Инсулин"],
+ correct: 1,
+ explanation:
+ "Жёлчный пузырь хранит и концентрирует желчь, вырабатываемую печенью, и выбрасывает её в двенадцатиперстную кишку при поступлении жира.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which hormone triggers the gallbladder to contract after a fatty meal?",
+ options: ["Insulin", "Cholecystokinin (CCK)", "Gastrin", "Glucagon"],
+ correct: 1,
+ explanation:
+ "Cholecystokinin, released by duodenal cells in response to fat, makes the gallbladder contract and the sphincter of Oddi relax.",
+ },
+ ru: {
+ prompt: "Какой гормон заставляет жёлчный пузырь сокращаться после жирной еды?",
+ options: ["Инсулин", "Холецистокинин (ХЦК)", "Гастрин", "Глюкагон"],
+ correct: 1,
+ explanation:
+ "Холецистокинин, выделяемый клетками двенадцатиперстной кишки в ответ на жиры, сокращает жёлчный пузырь и расслабляет сфинктер Одди.",
+ },
+ },
+ {
+ en: {
+ prompt: "Gallstones are formed mainly from what?",
+ options: ["Calcium and oxalate", "Cholesterol and bilirubin", "Uric acid", "Protein deposits"],
+ correct: 1,
+ explanation:
+ "Most gallstones are cholesterol stones; pigment stones are made of bilirubin. They can block the cystic duct and cause biliary colic.",
+ },
+ ru: {
+ prompt: "Из чего в основном образуются жёлчные камни?",
+ options: ["Кальций и оксалаты", "Холестерин и билирубин", "Мочевая кислота", "Белковые отложения"],
+ correct: 1,
+ explanation:
+ "Большинство жёлчных камней — холестериновые; пигментные состоят из билирубина. Они могут закупорить пузырный проток и вызвать жёлчную колику.",
+ },
+ },
+ ],
+ esophagus: [
+ {
+ en: {
+ prompt: "What type of movement propels food down the esophagus?",
+ options: ["Segmentation", "Peristalsis", "Mass movement", "Osmosis"],
+ correct: 1,
+ explanation:
+ "Peristalsis — coordinated waves of contraction and relaxation — pushes the bolus from pharynx to stomach in a few seconds.",
+ },
+ ru: {
+ prompt: "Какой вид движения продвигает пищу по пищеводу?",
+ options: ["Сегментация", "Перистальтика", "Массовое сокращение", "Осмос"],
+ correct: 1,
+ explanation:
+ "Перистальтика — согласованные волны сокращения и расслабления — за несколько секунд продвигает пищевой комок от глотки к желудку.",
+ },
+ },
+ {
+ en: {
+ prompt: "Backflow of stomach acid into the esophagus causes…",
+ options: ["Achalasia", "Gastroesophageal reflux disease (GERD)", "Barrett's esophagus", "Zenker diverticulum"],
+ correct: 1,
+ explanation:
+ "Weakness of the lower esophageal sphincter lets acid back up, causing heartburn — GERD. Chronic reflux can damage the lining.",
+ },
+ ru: {
+ prompt: "Заброс желудочной кислоты в пищевод вызывает…",
+ options: ["Ахалазию", "Гастроэзофагеальную рефлюксную болезнь (ГЭРБ)", "Пищевод Барретта", "Дивертикул Ценкера"],
+ correct: 1,
+ explanation:
+ "Слабость нижнего пищеводного сфинктера пропускает кислоту вверх, вызывая изжогу — ГЭРБ. Хронический рефлюкс повреждает слизистую.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which sphincter is located at the junction of esophagus and stomach?",
+ options: ["Upper esophageal sphincter", "Lower esophageal sphincter (cardiac)", "Pyloric sphincter", "Ileocecal valve"],
+ correct: 1,
+ explanation:
+ "The lower esophageal (cardiac) sphincter separates the esophagus from the stomach and normally prevents reflux of gastric contents.",
+ },
+ ru: {
+ prompt: "Какой сфинктер расположен на границе пищевода и желудка?",
+ options: ["Верхний пищеводный сфинктер", "Нижний пищеводный (кардиальный) сфинктер", "Привратниковый сфинктер", "Илеоцекальный клапан"],
+ correct: 1,
+ explanation:
+ "Нижний пищеводный (кардиальный) сфинктер отделяет пищевод от желудка и в норме не пропускает содержимое желудка обратно.",
+ },
+ },
+ ],
+ tongue: [
+ {
+ en: {
+ prompt: "Which papillae contain most of the taste buds?",
+ options: ["Filiform papillae", "Fungiform and circumvallate papillae", "Lingual tonsils", "Foliate crypts"],
+ correct: 1,
+ explanation:
+ "Fungiform papillae cover the front, circumvallate papillae form the V-line at the back — together they hold most taste buds.",
+ },
+ ru: {
+ prompt: "Какие сосочки содержат большинство вкусовых луковиц?",
+ options: ["Нитевидные сосочки", "Грибовидные и желобоватые сосочки", "Язычная миндалина", "Листовидные крипты"],
+ correct: 1,
+ explanation:
+ "Грибовидные сосочки покрывают переднюю часть языка, желобоватые образуют V-образную линию у корня — вместе они несут большинство вкусовых луковиц.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which cranial nerve carries taste from the front two-thirds of the tongue?",
+ options: ["Hypoglossal nerve (CN XII)", "Facial nerve (CN VII)", "Glossopharyngeal nerve (CN IX)", "Trigeminal nerve (CN V)"],
+ correct: 1,
+ explanation:
+ "The chorda tympani branch of the facial nerve (CN VII) carries taste from the anterior two-thirds; CN IX serves the posterior third.",
+ },
+ ru: {
+ prompt: "Какой черепной нерв проводит вкус от передних двух третей языка?",
+ options: ["Подъязычный нерв (XII)", "Лицевой нерв (VII)", "Языкоглоточный нерв (IX)", "Тройничный нерв (V)"],
+ correct: 1,
+ explanation:
+ "Ветвь лицевого нерва — барабанная струна (VII пара) — несёт вкус от передних двух третей языка; заднюю треть обслуживает IX пара.",
+ },
+ },
+ {
+ en: {
+ prompt: "The tongue's main muscle that allows it to protrude is…",
+ options: ["Styloglossus", "Genioglossus", "Hyoglossus", "Palatoglossus"],
+ correct: 1,
+ explanation:
+ "Genioglossus pulls the tongue forward and down; damage to its nerve (CN XII) makes the tongue deviate to the weak side.",
+ },
+ ru: {
+ prompt: "Главная мышца, позволяющая языку высовываться вперёд, — это…",
+ options: ["Шилоязычная мышца", "Подбородочно-язычная мышца", "Подъязычно-язычная мышца", "Нёбно-язычная мышца"],
+ correct: 1,
+ explanation:
+ "Подбородочно-язычная мышца выдвигает язык вперёд и вниз; при поражении её нерва (XII пара) язык отклоняется в слабую сторону.",
+ },
+ },
+ ],
+ spleen: [
+ {
+ en: {
+ prompt: "What is the main function of the red pulp of the spleen?",
+ options: ["T-lymphocyte training", "Filtering old and damaged red blood cells", "Bile production", "Glucose storage"],
+ correct: 1,
+ explanation:
+ "The red pulp removes senescent red cells, platelets and debris from circulation, and recycles iron from haemoglobin.",
+ },
+ ru: {
+ prompt: "Какова главная функция красной пульпы селезёнки?",
+ options: ["Обучение T-лимфоцитов", "Фильтрация старых и повреждённых эритроцитов", "Выработка желчи", "Запас глюкозы"],
+ correct: 1,
+ explanation:
+ "Красная пульпа удаляет из кровотока состарившиеся эритроциты, тромбоциты и обломки клеток и возвращает железо из гемоглобина.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which artery supplies the spleen?",
+ options: ["Hepatic artery", "Splenic artery", "Left gastric artery", "Superior mesenteric artery"],
+ correct: 1,
+ explanation:
+ "The splenic artery, a branch of the coeliac trunk, runs to the hilum of the spleen along the upper border of the pancreas.",
+ },
+ ru: {
+ prompt: "Какая артерия кровоснабжает селезёнку?",
+ options: ["Печёночная артерия", "Селезёночная артерия", "Левая желудочная артерия", "Верхняя брыжеечная артерия"],
+ correct: 1,
+ explanation:
+ "Селезёночная артерия, ветвь чревного ствола, идёт к воротам селезёнки вдоль верхнего края поджелудочной железы.",
+ },
+ },
+ {
+ en: {
+ prompt: "After splenectomy, patients have an increased risk of infection with…",
+ options: ["Encapsulated bacteria", "Viruses", "Fungi", "Parasites"],
+ correct: 0,
+ explanation:
+ "The spleen is key to clearing encapsulated bacteria (pneumococcus, meningococcus, Haemophilus); splenectomised patients need vaccination and prophylaxis.",
+ },
+ ru: {
+ prompt: "После спленэктомии повышен риск инфекций, вызванных…",
+ options: ["Инкапсулированными бактериями", "Вирусами", "Грибами", "Паразитами"],
+ correct: 0,
+ explanation:
+ "Селезёнка критически важна для уничтожения инкапсулированных бактерий (пневмококк, менингококк, гемофильная палочка); таким пациентам нужны вакцинация и профилактика.",
+ },
+ },
+ ],
+ thymus: [
+ {
+ en: {
+ prompt: "What is the main function of the thymus?",
+ options: ["Red blood cell production", "Maturation of T-lymphocytes", "Bile storage", "Insulin secretion"],
+ correct: 1,
+ explanation:
+ "Thymocytes mature into functional T-cells here, undergoing positive and negative selection so they attack pathogens, not self.",
+ },
+ ru: {
+ prompt: "Какова главная функция тимуса?",
+ options: ["Образование эритроцитов", "Созревание T-лимфоцитов", "Накопление желчи", "Секреция инсулина"],
+ correct: 1,
+ explanation:
+ "Тимоциты созревают здесь в функциональные T-клетки, проходя положительную и отрицательную селекцию, чтобы атаковать патогены, а не собственные ткани.",
+ },
+ },
+ {
+ en: {
+ prompt: "What happens to the thymus with age?",
+ options: ["It grows continuously", "It shrinks and is replaced by fat (involution)", "It turns into bone", "It doubles in size"],
+ correct: 1,
+ explanation:
+ "After puberty the thymus undergoes involution: lymphoid tissue is gradually replaced by adipose tissue, though function persists.",
+ },
+ ru: {
+ prompt: "Что происходит с тимусом с возрастом?",
+ options: ["Он постоянно растёт", "Он уменьшается и замещается жиром (инволюция)", "Он превращается в кость", "Он удваивается"],
+ correct: 1,
+ explanation:
+ "После полового созревания тимус подвергается инволюции: лимфоидная ткань постепенно замещается жировой, хотя функция сохраняется.",
+ },
+ },
+ {
+ en: {
+ prompt: "Myasthenia gravis is often associated with thymic…",
+ options: ["Hyperplasia or thymoma", "Aplasia", "Calcification", "Infarction"],
+ correct: 0,
+ explanation:
+ "Up to 75% of myasthenia gravis patients have thymic hyperplasia and ~10–15% a thymoma; the thymus contributes to autoantibody production.",
+ },
+ ru: {
+ prompt: "Миастения гравис часто связана с… тимуса",
+ options: ["Гиперплазией или тимомой", "Аплазией", "Кальцификацией", "Инфарктом"],
+ correct: 0,
+ explanation:
+ "У 75% пациентов с миастенией гравис — гиперплазия тимуса, у 10–15% — тимома; тимус участвует в продукции аутоантител.",
+ },
+ },
+ ],
+ "lymph-node": [
+ {
+ en: {
+ prompt: "Which fluid does a lymph node filter?",
+ options: ["Blood plasma", "Lymph", "Cerebrospinal fluid", "Synovial fluid"],
+ correct: 1,
+ explanation:
+ "Lymph — interstitial fluid returned to the circulation — percolates through lymph nodes, where immune cells scan it for antigens.",
+ },
+ ru: {
+ prompt: "Какую жидкость фильтрует лимфатический узел?",
+ options: ["Плазму крови", "Лимфу", "Спинномозговую жидкость", "Синовиальную жидкость"],
+ correct: 1,
+ explanation:
+ "Лимфа — тканевая жидкость, возвращающаяся в кровоток, — просачивается через лимфатические узлы, где иммунные клетки проверяют её на антигены.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which cells predominate in the cortex (follicles) of a lymph node?",
+ options: ["B-lymphocytes", "Neutrophils", "Erythrocytes", "Platelets"],
+ correct: 0,
+ explanation:
+ "Cortical follicles are B-cell zones; they form germinal centres during antibody responses. T-cells concentrate in the paracortex.",
+ },
+ ru: {
+ prompt: "Какие клетки преобладают в корковом веществе (фолликулах) лимфатического узла?",
+ options: ["B-лимфоциты", "Нейтрофилы", "Эритроциты", "Тромбоциты"],
+ correct: 0,
+ explanation:
+ "Корковые фолликулы — зоны B-клеток; при антительном ответе в них образуются герминативные центры. T-клетки сосредоточены в паракортикальной зоне.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which condition most commonly causes painful, enlarged lymph nodes in the neck?",
+ options: ["Lymphoma", "Infectious lymphadenitis", "Metastatic cancer", "Sarcoidosis"],
+ correct: 1,
+ explanation:
+ "Viral or bacterial infections (tonsillitis, dental, skin) drain to cervical nodes and cause painful enlargement — reactive lymphadenitis.",
+ },
+ ru: {
+ prompt: "Какое состояние чаще всего вызывает болезненное увеличение шейных лимфатических узлов?",
+ options: ["Лимфома", "Инфекционный лимфаденит", "Метастазы рака", "Саркоидоз"],
+ correct: 1,
+ explanation:
+ "Вирусные и бактериальные инфекции (тонзиллит, стоматологические, кожные) дренируются в шейные узлы и вызывают болезненное увеличение — реактивный лимфаденит.",
+ },
+ },
+ ],
+ thyroid: [
+ {
+ en: {
+ prompt: "Which hormone is produced by the thyroid gland?",
+ options: ["Cortisol", "Thyroxine (T4)", "Insulin", "Adrenaline"],
+ correct: 1,
+ explanation:
+ "The thyroid produces thyroxine (T4) and triiodothyronine (T3), which set the metabolic rate of nearly every cell.",
+ },
+ ru: {
+ prompt: "Какой гормон вырабатывает щитовидная железа?",
+ options: ["Кортизол", "Тироксин (T4)", "Инсулин", "Адреналин"],
+ correct: 1,
+ explanation:
+ "Щитовидная железа производит тироксин (T4) и трийодтиронин (T3), задающие интенсивность обмена веществ почти каждой клетки.",
+ },
+ },
+ {
+ en: {
+ prompt: "Iodine deficiency most commonly causes…",
+ options: ["Hyperthyroidism", "Goitre and hypothyroidism", "Cushing's syndrome", "Addison's disease"],
+ correct: 1,
+ explanation:
+ "Without iodine the gland cannot make thyroid hormones; TSH rises and the gland enlarges into a goitre, often with hypothyroidism.",
+ },
+ ru: {
+ prompt: "Дефицит йода чаще всего вызывает…",
+ options: ["Гипертиреоз", "Зоб и гипотиреоз", "Синдром Кушинга", "Болезнь Аддисона"],
+ correct: 1,
+ explanation:
+ "Без йода железа не может синтезировать тиреоидные гормоны; ТТГ растёт, и железа увеличивается в зоб, часто с гипотиреозом.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which gland controls the thyroid via TSH?",
+ options: ["Adrenal gland", "Pituitary gland", "Thymus", "Pancreas"],
+ correct: 1,
+ explanation:
+ "The pituitary secretes thyroid-stimulating hormone (TSH), which drives thyroid hormone release — the classic endocrine feedback loop.",
+ },
+ ru: {
+ prompt: "Какая железа управляет щитовидной железой через ТТГ?",
+ options: ["Надпочечник", "Гипофиз", "Тимус", "Поджелудочная железа"],
+ correct: 1,
+ explanation:
+ "Гипофиз секретирует тиреотропный гормон (ТТГ), стимулирующий выделение гормонов щитовидной железы — классическая петля обратной связи.",
+ },
+ },
+ ],
+ adrenal: [
+ {
+ en: {
+ prompt: "Which hormone is produced by the adrenal medulla?",
+ options: ["Cortisol", "Adrenaline (epinephrine)", "Aldosterone", "Testosterone"],
+ correct: 1,
+ explanation:
+ "The adrenal medulla releases adrenaline and noradrenaline — the fight-or-flight catecholamines that surge within seconds of danger.",
+ },
+ ru: {
+ prompt: "Какой гормон вырабатывает мозговое вещество надпочечника?",
+ options: ["Кортизол", "Адреналин", "Альдостерон", "Тестостерон"],
+ correct: 1,
+ explanation:
+ "Мозговое вещество надпочечника выделяет адреналин и норадреналин — катехоламины реакции «бей или беги», выбрасываемые за секунды при опасности.",
+ },
+ },
+ {
+ en: {
+ prompt: "Aldosterone from the adrenal cortex regulates…",
+ options: ["Blood glucose", "Sodium and potassium balance", "Calcium levels", "Red blood cell count"],
+ correct: 1,
+ explanation:
+ "Aldosterone makes the kidneys retain sodium and excrete potassium, controlling blood volume and blood pressure.",
+ },
+ ru: {
+ prompt: "Альдостерон коры надпочечников регулирует…",
+ options: ["Уровень глюкозы в крови", "Баланс натрия и калия", "Уровень кальция", "Число эритроцитов"],
+ correct: 1,
+ explanation:
+ "Альдостерон заставляет почки задерживать натрий и выводить калий, управляя объёмом крови и артериальным давлением.",
+ },
+ },
+ {
+ en: {
+ prompt: "Excess cortisol production causes…",
+ options: ["Addison's disease", "Cushing's syndrome", "Pheochromocytoma", "Conn's syndrome"],
+ correct: 1,
+ explanation:
+ "Chronic cortisol excess — Cushing's syndrome — causes weight gain, hypertension, hyperglycaemia and characteristic striae.",
+ },
+ ru: {
+ prompt: "Избыточная продукция кортизола вызывает…",
+ options: ["Болезнь Аддисона", "Синдром Кушинга", "Феохромоцитому", "Синдром Конна"],
+ correct: 1,
+ explanation:
+ "Хронический избыток кортизола — синдром Кушинга — ведёт к ожирению, гипертензии, гипергликемии и характерным стриям.",
+ },
+ },
+ ],
+ pituitary: [
+ {
+ en: {
+ prompt: "The pituitary gland lies in a depression of which bone?",
+ options: ["Frontal bone", "Sphenoid bone", "Temporal bone", "Occipital bone"],
+ correct: 1,
+ explanation:
+ "The hypophysis sits in the sella turcica of the sphenoid bone, protected by the diaphragma sellae.",
+ },
+ ru: {
+ prompt: "Гипофиз лежит в углублении какой кости?",
+ options: ["Лобная кость", "Клиновидная кость", "Височная кость", "Затылочная кость"],
+ correct: 1,
+ explanation:
+ "Гипофиз расположен в турецком седле клиновидной кости и прикрыт диафрагмой седла.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which pituitary hormone stimulates growth?",
+ options: ["Prolactin", "Growth hormone (GH)", "Oxytocin", "ADH"],
+ correct: 1,
+ explanation:
+ "Growth hormone from the anterior lobe drives growth of bones and tissues; excess causes gigantism or acromegaly.",
+ },
+ ru: {
+ prompt: "Какой гормон гипофиза стимулирует рост?",
+ options: ["Пролактин", "Соматотропный гормон (СТГ)", "Окситоцин", "АДГ"],
+ correct: 1,
+ explanation:
+ "Соматотропный гормон передней доли стимулирует рост костей и тканей; его избыток вызывает гигантизм или акромегалию.",
+ },
+ },
+ {
+ en: {
+ prompt: "The posterior pituitary stores hormones produced in the…",
+ options: ["Hypothalamus", "Adrenal cortex", "Thyroid", "Pineal gland"],
+ correct: 0,
+ explanation:
+ "Oxytocin and antidiuretic hormone are synthesised in the hypothalamus and stored in the posterior lobe for release.",
+ },
+ ru: {
+ prompt: "Задняя доля гипофиза хранит гормоны, выработанные в…",
+ options: ["Гипоталамусе", "Коре надпочечников", "Щитовидной железе", "Шишковидном теле"],
+ correct: 0,
+ explanation:
+ "Окситоцин и антидиуретический гормон синтезируются в гипоталамусе и хранятся в задней доле гипофиза до выделения.",
+ },
+ },
+ ],
+ trachea: [
+ {
+ en: {
+ prompt: "What keeps the trachea open?",
+ options: ["Bony rings", "C-shaped cartilage rings", "Smooth muscle tone alone", "Fluid pressure"],
+ correct: 1,
+ explanation:
+ "16–20 C-shaped hyaline cartilage rings keep the trachea patent; the open side faces the esophagus.",
+ },
+ ru: {
+ prompt: "Что держит трахею открытой?",
+ options: ["Костные кольца", "C-образные хрящевые кольца", "Только тонус гладких мышц", "Давление жидкости"],
+ correct: 1,
+ explanation:
+ "16–20 C-образных колец гиалинового хряща сохраняют просвет трахеи; незамкнутая сторона обращена к пищеводу.",
+ },
+ },
+ {
+ en: {
+ prompt: "Where does the trachea divide into the main bronchi?",
+ options: ["At the larynx", "At the carina", "At the epiglottis", "At the alveoli"],
+ correct: 1,
+ explanation:
+ "The trachea bifurcates at the carina into right and left main bronchi — the right is wider and more vertical, so aspirated objects often enter it.",
+ },
+ ru: {
+ prompt: "Где трахея делится на главные бронхи?",
+ options: ["На уровне гортани", "На уровне бифуркации (карины)", "На уровне надгортанника", "На уровне альвеол"],
+ correct: 1,
+ explanation:
+ "Трахея раздваивается на бифуркации на правый и левый главные бронхи; правый шире и вертикальнее, поэтому аспирированные предметы чаще попадают в него.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which procedure restores airflow when the trachea is blocked?",
+ options: ["Tracheostomy", "Lobectomy", "Thoracentesis", "Cardioversion"],
+ correct: 0,
+ explanation:
+ "Tracheostomy creates an opening in the trachea below the obstruction to bypass blocked upper airways.",
+ },
+ ru: {
+ prompt: "Какая процедура восстанавливает проходимость при закупорке трахеи?",
+ options: ["Трахеостомия", "Лобэктомия", "Торакоцентез", "Кардиоверсия"],
+ correct: 0,
+ explanation:
+ "Трахеостомия создаёт отверстие в трахее ниже препятствия, чтобы обойти закупоренные верхние дыхательные пути.",
+ },
+ },
+ ],
+ larynx: [
+ {
+ en: {
+ prompt: "Which structure closes over the larynx during swallowing?",
+ options: ["Vocal folds", "Epiglottis", "Arytenoid cartilages", "Hyoid bone"],
+ correct: 1,
+ explanation:
+ "The epiglottis folds down over the laryngeal inlet during swallowing, directing food into the esophagus.",
+ },
+ ru: {
+ prompt: "Какая структура прикрывает гортань при глотании?",
+ options: ["Голосовые складки", "Надгортанник", "Черпаловидные хрящи", "Подъязычная кость"],
+ correct: 1,
+ explanation:
+ "Надгортанник при глотании опускается на вход в гортань, направляя пищу в пищевод.",
+ },
+ },
+ {
+ en: {
+ prompt: "Voice is produced by vibration of the…",
+ options: ["Vocal folds", "Epiglottis", "Thyroid cartilage", "Tracheal rings"],
+ correct: 0,
+ explanation:
+ "Air from the lungs sets the vocal folds vibrating; pitch depends on fold tension and length, controlled by laryngeal muscles.",
+ },
+ ru: {
+ prompt: "Голос рождается колебаниями…",
+ options: ["Голосовых складок", "Надгортанника", "Щитовидного хряща", "Колец трахеи"],
+ correct: 0,
+ explanation:
+ "Воздух из лёгких приводит голосовые складки в колебание; высота тона зависит от натяжения и длины складок, которыми управляют мышцы гортани.",
+ },
+ },
+ {
+ en: {
+ prompt: "The largest cartilage of the larynx is the…",
+ options: ["Cricoid cartilage", "Thyroid cartilage", "Epiglottis", "Arytenoid cartilage"],
+ correct: 1,
+ explanation:
+ "The thyroid cartilage forms the Adam's apple and shields the vocal apparatus; the cricoid is the complete ring below it.",
+ },
+ ru: {
+ prompt: "Самый крупный хрящ гортани — это…",
+ options: ["Перстневидный хрящ", "Щитовидный хрящ", "Надгортанник", "Черпаловидный хрящ"],
+ correct: 1,
+ explanation:
+ "Щитовидный хрящ образует «кадык» и прикрывает голосовой аппарат; перстневидный — полное кольцо ниже него.",
+ },
+ },
+ ],
+ bladder: [
+ {
+ en: {
+ prompt: "Which muscle of the bladder wall expels urine?",
+ options: ["Detrusor muscle", "Sphincter urethrae", "Levator ani", "Psoas major"],
+ correct: 0,
+ explanation:
+ "The detrusor, the smooth muscle of the bladder wall, contracts during voiding while the sphincters relax.",
+ },
+ ru: {
+ prompt: "Какая мышца стенки мочевого пузыря изгоняет мочу?",
+ options: ["Детрузор", "Сфинктер мочеиспускательного канала", "Мышца, поднимающая задний проход", "Поясничная мышца"],
+ correct: 0,
+ explanation:
+ "Детрузор — гладкая мышца стенки пузыря — сокращается при мочеиспускании, пока сфинктеры расслабляются.",
+ },
+ },
+ {
+ en: {
+ prompt: "What is the approximate capacity of the adult bladder?",
+ options: ["50–100 mL", "400–600 mL", "2–3 L", "10 mL"],
+ correct: 1,
+ explanation:
+ "The adult bladder holds about 400–600 mL; the first urge appears at ~150–250 mL and voiding is under voluntary control.",
+ },
+ ru: {
+ prompt: "Какова примерная вместимость мочевого пузыря взрослого человека?",
+ options: ["50–100 мл", "400–600 мл", "2–3 л", "10 мл"],
+ correct: 1,
+ explanation:
+ "Мочевой пузырь взрослого вмещает около 400–600 мл; первый позыв появляется при ~150–250 мл, а мочеиспускание находится под произвольным контролем.",
+ },
+ },
+ {
+ en: {
+ prompt: "The triangular region on the bladder floor is called the…",
+ options: ["Trigone", "Fundus", "Apex", "Neck"],
+ correct: 0,
+ explanation:
+ "The trigone is the fixed triangle between the two ureteral orifices and the internal urethral orifice — a key surgical landmark.",
+ },
+ ru: {
+ prompt: "Треугольная область на дне мочевого пузыря называется…",
+ options: ["Тригон", "Дно", "Верхушка", "Шейка"],
+ correct: 0,
+ explanation:
+ "Тригон — неподвижный треугольник между устьями мочеточников и внутренним отверстием уретры — важный хирургический ориентир.",
+ },
+ },
+ ],
+ uterus: [
+ {
+ en: {
+ prompt: "Which layer of the uterus is shed during menstruation?",
+ options: ["Myometrium", "Endometrium", "Perimetrium", "Cervical stroma"],
+ correct: 1,
+ explanation:
+ "The functional layer of the endometrium is shed each cycle if no pregnancy occurs; the basal layer regenerates it.",
+ },
+ ru: {
+ prompt: "Какой слой матки отторгается во время менструации?",
+ options: ["Миометрий", "Эндометрий", "Периметрий", "Строма шейки"],
+ correct: 1,
+ explanation:
+ "Функциональный слой эндометрия отторгается каждый цикл, если беременность не наступила; базальный слой восстанавливает его.",
+ },
+ },
+ {
+ en: {
+ prompt: "Where does fertilisation normally occur?",
+ options: ["In the uterus", "In the fallopian tube", "In the ovary", "In the vagina"],
+ correct: 1,
+ explanation:
+ "The sperm meets the oocyte in the ampulla of the fallopian tube; the fertilised egg then travels to implant in the uterus.",
+ },
+ ru: {
+ prompt: "Где в норме происходит оплодотворение?",
+ options: ["В матке", "В маточной трубе", "В яичнике", "Во влагалище"],
+ correct: 1,
+ explanation:
+ "Сперматозоид встречает яйцеклетку в ампуле маточной трубы; затем оплодотворённая яйцеклетка движется к имплантации в матке.",
+ },
+ },
+ {
+ en: {
+ prompt: "The lower narrow part of the uterus that opens into the vagina is the…",
+ options: ["Fundus", "Cervix", "Cornua", "Isthmus"],
+ correct: 1,
+ explanation:
+ "The cervix is the fibromuscular lower segment; its canal connects the uterine cavity with the vagina and dilates during labour.",
+ },
+ ru: {
+ prompt: "Нижняя узкая часть матки, открывающаяся во влагалище, — это…",
+ options: ["Дно", "Шейка", "Рога матки", "Перешеек"],
+ correct: 1,
+ explanation:
+ "Шейка — нижний фиброзно-мышечный сегмент; её канал соединяет полость матки с влагалищем и раскрывается в родах.",
+ },
+ },
+ ],
+ ovary: [
+ {
+ en: {
+ prompt: "The release of a mature oocyte from the ovary is called…",
+ options: ["Menstruation", "Ovulation", "Fertilisation", "Implantation"],
+ correct: 1,
+ explanation:
+ "Ovulation — the rupture of a mature Graafian follicle releasing the oocyte — occurs roughly mid-cycle under the LH surge.",
+ },
+ ru: {
+ prompt: "Выход зрелой яйцеклетки из яичника называется…",
+ options: ["Менструация", "Овуляция", "Оплодотворение", "Имплантация"],
+ correct: 1,
+ explanation:
+ "Овуляция — разрыв зрелого граафова пузырька с выходом яйцеклетки — происходит примерно в середине цикла под действием пика ЛГ.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which hormones are produced by the ovaries?",
+ options: ["TSH and ACTH", "Oestrogen and progesterone", "Insulin and glucagon", "ADH and oxytocin"],
+ correct: 1,
+ explanation:
+ "Ovarian follicles secrete oestrogen; the corpus luteum adds progesterone, preparing the endometrium for implantation.",
+ },
+ ru: {
+ prompt: "Какие гормоны вырабатывают яичники?",
+ options: ["ТТГ и АКТГ", "Эстроген и прогестерон", "Инсулин и глюкагон", "АДГ и окситоцин"],
+ correct: 1,
+ explanation:
+ "Фолликулы яичников секретируют эстроген; жёлтое тело добавляет прогестерон, подготавливая эндометрий к имплантации.",
+ },
+ },
+ {
+ en: {
+ prompt: "A baby girl is born with approximately how many oocytes?",
+ options: ["About 400", "About 1–2 million", "About 10,000", "About 100 million"],
+ correct: 1,
+ explanation:
+ "At birth the ovaries hold ~1–2 million oocytes; most undergo atresia, and only ~400 are ovulated during reproductive life.",
+ },
+ ru: {
+ prompt: "Со сколькими яйцеклетками рождается девочка?",
+ options: ["Около 400", "Около 1–2 миллионов", "Около 10 000", "Около 100 миллионов"],
+ correct: 1,
+ explanation:
+ "При рождении в яичниках около 1–2 млн яйцеклеток; большинство подвергается атрезии, и лишь ~400 овулируют за репродуктивный период.",
+ },
+ },
+ ],
+ testis: [
+ {
+ en: {
+ prompt: "Where does spermatogenesis take place?",
+ options: ["In the epididymis", "In the seminiferous tubules", "In the prostate", "In the seminal vesicles"],
+ correct: 1,
+ explanation:
+ "Sperm develop in the seminiferous tubules; the epididymis stores and matures them, and the ductus deferens transports them.",
+ },
+ ru: {
+ prompt: "Где происходит сперматогенез?",
+ options: ["В придатке яичка", "В семенных канальцах", "В предстательной железе", "В семенных пузырьках"],
+ correct: 1,
+ explanation:
+ "Сперматозоиды развиваются в семенных канальцах; придаток яичка хранит и «дозревает» их, а семявыносящий проток транспортирует.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which hormone is produced by the Leydig cells of the testis?",
+ options: ["Oestrogen", "Testosterone", "FSH", "Inhibin"],
+ correct: 1,
+ explanation:
+ "Leydig cells between the tubules secrete testosterone, driving male development and spermatogenesis; FSH acts on Sertoli cells.",
+ },
+ ru: {
+ prompt: "Какой гормон вырабатывают клетки Лейдига яичка?",
+ options: ["Эстроген", "Тестостерон", "ФСГ", "Ингибин"],
+ correct: 1,
+ explanation:
+ "Клетки Лейдига между канальцами секретируют тестостерон, определяющий мужское развитие и сперматогенез; ФСГ действует на клетки Сертоли.",
+ },
+ },
+ {
+ en: {
+ prompt: "Why do the testes hang outside the body cavity?",
+ options: ["To reduce weight", "To keep them 2–3 °C cooler", "For easier blood supply", "To avoid infection"],
+ correct: 1,
+ explanation:
+ "Spermatogenesis needs a temperature ~2–3 °C below core; the scrotum and its muscles regulate this temperature.",
+ },
+ ru: {
+ prompt: "Почему яички находятся вне полости тела?",
+ options: ["Чтобы уменьшить вес", "Чтобы держать их на 2–3 °C холоднее", "Для лучшего кровоснабжения", "Чтобы избежать инфекций"],
+ correct: 1,
+ explanation:
+ "Сперматогенез требует температуры на 2–3 °C ниже температуры ядра тела; мошонка и её мышцы регулируют эту температуру.",
+ },
+ },
+ ],
+ prostate: [
+ {
+ en: {
+ prompt: "The prostate surrounds which structure?",
+ options: ["The ureter", "The urethra", "The vas deferens", "The bladder neck and urethra"],
+ correct: 3,
+ explanation:
+ "The prostate encircles the prostatic urethra just below the bladder neck — why enlargement compresses urine flow.",
+ },
+ ru: {
+ prompt: "Что окружает предстательная железа?",
+ options: ["Мочеточник", "Мочеиспускательный канал", "Семявыносящий проток", "Шейку мочевого пузыря и уретру"],
+ correct: 3,
+ explanation:
+ "Предстательная железа охватывает простатическую часть уретры сразу под шейкой мочевого пузыря — поэтому при увеличении нарушается отток мочи.",
+ },
+ },
+ {
+ en: {
+ prompt: "Benign prostatic hyperplasia (BPH) typically develops in which zone?",
+ options: ["Peripheral zone", "Transition zone", "Central zone", "Fibrous capsule"],
+ correct: 1,
+ explanation:
+ "BPH arises in the transition zone around the urethra, compressing it; prostate cancer, in contrast, is most common in the peripheral zone.",
+ },
+ ru: {
+ prompt: "Доброкачественная гиперплазия предстательной железы (ДГПЖ) обычно развивается в какой зоне?",
+ options: ["Периферической зоне", "Переходной зоне", "Центральной зоне", "Фиброзной капсуле"],
+ correct: 1,
+ explanation:
+ "ДГПЖ возникает в переходной зоне вокруг уретры и сдавливает её; рак предстательной железы, напротив, чаще всего — в периферической зоне.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which test is used for prostate cancer screening?",
+ options: ["PSA blood test", "Glucose tolerance test", "TSH test", "CRP test"],
+ correct: 0,
+ explanation:
+ "The prostate-specific antigen (PSA) blood test, together with digital rectal examination, is the standard screening approach.",
+ },
+ ru: {
+ prompt: "Какой анализ используется для скрининга рака предстательной железы?",
+ options: ["Анализ крови на ПСА", "Глюкозотолерантный тест", "Анализ на ТТГ", "Анализ на СРБ"],
+ correct: 0,
+ explanation:
+ "Анализ крови на простатический специфический антиген (ПСА) вместе с пальцевым ректальным исследованием — стандартный подход к скринингу.",
+ },
+ },
+ ],
+ "spinal-cord": [
+ {
+ en: {
+ prompt: "In adults, the spinal cord ends at the level of…",
+ options: ["T12–L1", "L1–L2", "S2–S3", "C7"],
+ correct: 1,
+ explanation:
+ "The adult spinal cord ends around L1–L2; the lumbar and sacral nerve roots descend below it as the cauda equina.",
+ },
+ ru: {
+ prompt: "У взрослого человека спинной мозг заканчивается на уровне…",
+ options: ["Th12–L1", "L1–L2", "S2–S3", "C7"],
+ correct: 1,
+ explanation:
+ "Спинной мозг взрослого заканчивается около L1–L2; ниже него поясничные и крестцовые корешки спускаются «конским хвостом».",
+ },
+ },
+ {
+ en: {
+ prompt: "Which structure carries sensory information to the brain?",
+ options: ["Motor tracts", "Ascending (sensory) tracts of white matter", "Grey matter commissure", "Ventral roots"],
+ correct: 1,
+ explanation:
+ "Sensory signals travel up ascending tracts (e.g. spinothalamic, dorsal columns); motor commands descend via corticospinal tracts.",
+ },
+ ru: {
+ prompt: "Какая структура проводит чувствительную информацию к мозгу?",
+ options: ["Двигательные пути", "Восходящие (чувствительные) пути белого вещества", "Серое вещество — спайка", "Передние корешки"],
+ correct: 1,
+ explanation:
+ "Чувствительные сигналы идут вверх по восходящим путям (например, спиноталамическому, задним канатикам); двигательные команды спускаются по кортикоспинальным путям.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which cells myelinate axons within the central nervous system?",
+ options: ["Schwann cells", "Oligodendrocytes", "Astrocytes", "Microglia"],
+ correct: 1,
+ explanation:
+ "Oligodendrocytes myelinate CNS axons (one cell, many segments); Schwann cells do the same in the peripheral nervous system.",
+ },
+ ru: {
+ prompt: "Какие клетки миелинизируют аксоны в центральной нервной системе?",
+ options: ["Шванновские клетки", "Олигодендроциты", "Астроциты", "Микроглия"],
+ correct: 1,
+ explanation:
+ "Олигодендроциты миелинизируют аксоны ЦНС (одна клетка — много сегментов); в периферической нервной системе это делают шванновские клетки.",
+ },
+ },
+ ],
+ diaphragm: [
+ {
+ en: {
+ prompt: "Which nerve innervates the diaphragm?",
+ options: ["Vagus nerve", "Phrenic nerve", "Intercostal nerve T3", "Femoral nerve"],
+ correct: 1,
+ explanation:
+ "The phrenic nerve (C3–C5) supplies the diaphragm; its paralysis causes paradoxical breathing and respiratory failure.",
+ },
+ ru: {
+ prompt: "Какой нерв иннервирует диафрагму?",
+ options: ["Блуждающий нерв", "Диафрагмальный нерв", "Межрёберный нерв T3", "Бедренный нерв"],
+ correct: 1,
+ explanation:
+ "Диафрагмальный нерв (C3–C5) снабжает диафрагму; при его параличе возникает парадоксальное дыхание и дыхательная недостаточность.",
+ },
+ },
+ {
+ en: {
+ prompt: "During inspiration the diaphragm…",
+ options: ["Rises and relaxes", "Contracts and flattens", "Twists sideways", "Stays completely still"],
+ correct: 1,
+ explanation:
+ "Contraction flattens the dome, increasing thoracic volume and drawing air into the lungs; relaxation lets it dome back up.",
+ },
+ ru: {
+ prompt: "Во время вдоха диафрагма…",
+ options: ["Поднимается и расслабляется", "Сокращается и уплощается", "Поворачивается в сторону", "Остаётся неподвижной"],
+ correct: 1,
+ explanation:
+ "Сокращение уплощает купол, увеличивая объём грудной клетки и втягивая воздух в лёгкие; при расслаблении купол снова поднимается.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which structure passes through the esophageal hiatus of the diaphragm?",
+ options: ["The aorta", "The esophagus and vagus nerves", "The vena cava", "The trachea"],
+ correct: 1,
+ explanation:
+ "The esophageal hiatus transmits the esophagus and vagus nerves; the aorta passes through the aortic hiatus, the vena cava through the vena caval foramen.",
+ },
+ ru: {
+ prompt: "Какая структура проходит через пищеводное отверстие диафрагмы?",
+ options: ["Аорта", "Пищевод и блуждающие нервы", "Полые вены", "Трахея"],
+ correct: 1,
+ explanation:
+ "Через пищеводное отверстие проходят пищевод и блуждающие нервы; аорта — через аортальное отверстие, нижняя полая вена — через отверстие полой вены.",
+ },
+ },
+ ],
+ biceps: [
+ {
+ en: {
+ prompt: "Which movements does the biceps brachii perform?",
+ options: ["Elbow extension and pronation", "Elbow flexion and supination", "Shoulder depression", "Wrist extension"],
+ correct: 1,
+ explanation:
+ "The biceps flexes the elbow and supinates the forearm (turning the palm up) — its supination power is strongest with the elbow flexed.",
+ },
+ ru: {
+ prompt: "Какие движения выполняет двуглавая мышца плеча?",
+ options: ["Разгибание локтя и пронацию", "Сгибание локтя и супинацию", "Опускание плеча", "Разгибание запястья"],
+ correct: 1,
+ explanation:
+ "Двуглавая мышца сгибает локоть и супинирует предплечье (поворачивает ладонь вверх) — супинация сильнее всего при согнутом локте.",
+ },
+ },
+ {
+ en: {
+ prompt: "Which nerve supplies the biceps brachii?",
+ options: ["Radial nerve", "Musculocutaneous nerve", "Ulnar nerve", "Axillary nerve"],
+ correct: 1,
+ explanation:
+ "The musculocutaneous nerve (C5–C6) innervates the biceps and brachialis; injury weakens elbow flexion and supination.",
+ },
+ ru: {
+ prompt: "Какой нерв иннервирует двуглавую мышцу плеча?",
+ options: ["Лучевой нерв", "Мышечно-кожный нерв", "Локтевой нерв", "Подмышечный нерв"],
+ correct: 1,
+ explanation:
+ "Мышечно-кожный нерв (C5–C6) иннервирует бицепс и плечевую мышцу; при его повреждении слабеют сгибание локтя и супинация.",
+ },
+ },
+ {
+ en: {
+ prompt: "The long head of the biceps arises from…",
+ options: ["The coracoid process", "The supraglenoid tubercle", "The clavicle", "The humeral shaft"],
+ correct: 1,
+ explanation:
+ "The long head originates from the supraglenoid tubercle and runs through the shoulder joint; the short head comes from the coracoid process.",
+ },
+ ru: {
+ prompt: "Длинная головка двуглавой мышцы начинается от…",
+ options: ["Клювовидного отростка", "Надсуставного бугорка лопатки", "Ключицы", "Диафиза плечевой кости"],
+ correct: 1,
+ explanation:
+ "Длинная головка начинается от надсуставного бугорка и проходит через плечевой сустав; короткая — от клювовидного отростка.",
+ },
+ },
+ ],
+ femur: [
+ {
+ en: {
+ prompt: "Which bone articulates with the head of the femur?",
+ options: ["Tibia", "Acetabulum of the pelvis", "Patella", "Sacrum"],
+ correct: 1,
+ explanation:
+ "The femoral head fits into the acetabulum of the hip bone, forming the ball-and-socket hip joint.",
+ },
+ ru: {
+ prompt: "С какой костью сочленяется головка бедренной кости?",
+ options: ["Большеберцовая кость", "Вертлужная впадина таза", "Надколенник", "Крестец"],
+ correct: 1,
+ explanation:
+ "Головка бедренной кости входит в вертлужную впадину тазовой кости, образуя шаровидный тазобедренный сустав.",
+ },
+ },
+ {
+ en: {
+ prompt: "The femur is the…",
+ options: ["Shortest bone", "Longest and strongest bone", "Most fragile bone", "Only sesamoid bone"],
+ correct: 1,
+ explanation:
+ "At ~45–50 cm and supporting 5× body weight in running, the femur is the longest and strongest bone in the body.",
+ },
+ ru: {
+ prompt: "Бедренная кость — это…",
+ options: ["Самая короткая кость", "Самая длинная и прочная кость", "Самая хрупкая кость", "Единственная сесамовидная кость"],
+ correct: 1,
+ explanation:
+ "Длиной около 45–50 см и выдерживая при беге нагрузку 5× массы тела, бедренная кость — самая длинная и прочная кость тела.",
+ },
+ },
+ {
+ en: {
+ prompt: "Fractures of the femoral neck are particularly common in…",
+ options: ["Children with rickets", "Elderly people with osteoporosis", "Athletes", "Newborns"],
+ correct: 1,
+ explanation:
+ "Osteoporosis weakens the femoral neck, and falls in the elderly frequently cause hip fractures requiring surgery.",
+ },
+ ru: {
+ prompt: "Переломы шейки бедра особенно часты у…",
+ options: ["Детей с рахитом", "Пожилых людей с остеопорозом", "Спортсменов", "Новорождённых"],
+ correct: 1,
+ explanation:
+ "Остеопороз ослабляет шейку бедра, и падения у пожилых часто приводят к переломам шейки бедра, требующим операции.",
+ },
+ },
+ ],
};
export const QUIZ_QUESTIONS_PER_ORGAN = 5;
diff --git a/app/lib/content/systems.ts b/app/lib/content/systems.ts
index 9987d73..240a8fd 100644
--- a/app/lib/content/systems.ts
+++ b/app/lib/content/systems.ts
@@ -33,7 +33,7 @@ export const bodySystems: BilingualSystem[] = [
},
{
id: "respiratory",
- organIds: ["lungs"],
+ organIds: ["lungs", "trachea", "larynx"],
en: {
name: "Respiratory system",
description:
@@ -47,7 +47,7 @@ export const bodySystems: BilingualSystem[] = [
},
{
id: "digestive",
- organIds: ["liver", "intestine", "pancreas"],
+ organIds: ["liver", "intestine", "pancreas", "stomach", "gallbladder", "esophagus", "tongue"],
en: {
name: "Digestive system",
description:
@@ -61,7 +61,7 @@ export const bodySystems: BilingualSystem[] = [
},
{
id: "nervous",
- organIds: ["brain"],
+ organIds: ["brain", "spinal-cord"],
en: {
name: "Nervous system",
description:
@@ -75,7 +75,7 @@ export const bodySystems: BilingualSystem[] = [
},
{
id: "endocrine",
- organIds: ["pancreas"],
+ organIds: ["pancreas", "thyroid", "adrenal", "pituitary"],
en: {
name: "Endocrine system",
description:
@@ -89,7 +89,7 @@ export const bodySystems: BilingualSystem[] = [
},
{
id: "urinary",
- organIds: ["kidneys"],
+ organIds: ["kidneys", "bladder"],
en: {
name: "Urinary system",
description:
@@ -131,7 +131,7 @@ export const bodySystems: BilingualSystem[] = [
},
{
id: "musculoskeletal",
- organIds: [],
+ organIds: ["diaphragm", "biceps"],
en: {
name: "Musculoskeletal system",
description:
@@ -145,7 +145,7 @@ export const bodySystems: BilingualSystem[] = [
},
{
id: "lymphatic",
- organIds: [],
+ organIds: ["spleen", "thymus", "lymph-node"],
en: {
name: "Lymphatic & immune system",
description:
@@ -159,7 +159,7 @@ export const bodySystems: BilingualSystem[] = [
},
{
id: "reproductive",
- organIds: [],
+ organIds: ["uterus", "ovary", "testis", "prostate"],
en: {
name: "Reproductive system",
description:
@@ -173,7 +173,7 @@ export const bodySystems: BilingualSystem[] = [
},
{
id: "skeletal",
- organIds: [],
+ organIds: ["femur"],
en: {
name: "Skeletal system",
description:
@@ -205,4 +205,25 @@ export const systemForOrgan: Record = {
intestine: "digestive",
pancreas: "digestive",
skin: "integumentary",
+ stomach: "digestive",
+ gallbladder: "digestive",
+ esophagus: "digestive",
+ tongue: "digestive",
+ spleen: "lymphatic",
+ thymus: "lymphatic",
+ "lymph-node": "lymphatic",
+ thyroid: "endocrine",
+ adrenal: "endocrine",
+ pituitary: "endocrine",
+ trachea: "respiratory",
+ larynx: "respiratory",
+ bladder: "urinary",
+ uterus: "reproductive",
+ ovary: "reproductive",
+ testis: "reproductive",
+ prostate: "reproductive",
+ "spinal-cord": "nervous",
+ diaphragm: "musculoskeletal",
+ biceps: "musculoskeletal",
+ femur: "skeletal",
};
diff --git a/app/lib/organs-extra.ts b/app/lib/organs-extra.ts
new file mode 100644
index 0000000..932b00d
--- /dev/null
+++ b/app/lib/organs-extra.ts
@@ -0,0 +1,602 @@
+import type { Organ } from "./anatomy-data";
+
+/**
+ * Organs beyond the original nine. They ship with procedural 3D models
+ * (`public/models/.glb`, generated by `scripts/generate-organs.mjs`) but
+ * no painted illustration set, so `illustrated` is false and the UI renders
+ * the accent glyph fallback.
+ *
+ * Hotspot coordinates were computed by the generator (snapped onto the model
+ * surface) so the dots land on the correct features.
+ */
+export const extraOrgans: Organ[] = [
+ {
+ id: "stomach",
+ name: "Stomach",
+ scientificName: "Ventriculus",
+ system: "Digestive System",
+ model: "/models/stomach.glb",
+ icon: "◒",
+ accent: "#d98b74",
+ description: "A J-shaped muscular pouch that stores food, churns it and begins protein digestion.",
+ poetic: "The first cauldron",
+ size: "About 25 cm long",
+ weight: "Empty: ~60–80 g",
+ location: "Left upper abdomen, below the diaphragm",
+ function: "Stores, churns and starts digesting food",
+ dailyFact: "Produces 2–3 L of gastric juice",
+ medical: "Hydrochloric acid and pepsin begin protein breakdown.",
+ bloodSupply: "Left and right gastric arteries",
+ funFact: "Stretched, it can hold about 1–1.5 L of food and drink.",
+ tissue: "Gastric mucosa with fundic glands",
+ comparison: "Stomach vs. intestine",
+ conditions: ["Gastritis", "Peptic ulcer", "Stomach cancer", "Gastroesophageal reflux (GERD)", "Helicobacter pylori infection", "Gastroparesis", "Functional dyspepsia", "Zollinger–Ellison syndrome"],
+ illustrated: false,
+ hotspots: [
+ { id: "fundus", label: "Fundus", detail: "Dome-shaped upper part", position: [-1.31, 1.07, 0.43], color: "#ee7c6a" },
+ { id: "body", label: "Body", detail: "Main storage chamber", position: [0.04, -0.47, 0.25], color: "#f2a33b" },
+ { id: "pylorus", label: "Pylorus", detail: "Valve into the duodenum", position: [1.41, 0.18, 0.18], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "gallbladder",
+ name: "Gallbladder",
+ scientificName: "Vesica fellea",
+ system: "Digestive System",
+ model: "/models/gallbladder.glb",
+ icon: "◐",
+ accent: "#7fb57a",
+ description: "A small pear-shaped sac that stores and concentrates bile between meals.",
+ poetic: "The bile keeper",
+ size: "About 7–10 cm long",
+ weight: "30–50 g",
+ location: "Under the liver, right upper abdomen",
+ function: "Stores and concentrates bile",
+ dailyFact: "Concentrates bile up to 10-fold",
+ medical: "Bile salts emulsify fats so enzymes can digest them.",
+ bloodSupply: "Cystic artery",
+ funFact: "It is the one organ people routinely lose without missing it — bile flows straight from the liver.",
+ tissue: "Gallbladder mucosa",
+ comparison: "Gallbladder vs. liver",
+ conditions: ["Gallstones", "Cholecystitis", "Gallbladder polyps", "Gallbladder cancer", "Biliary colic", "Cholangitis", "Gallstone pancreatitis", "Biliary dyskinesia"],
+ illustrated: false,
+ hotspots: [
+ { id: "fundus", label: "Fundus", detail: "Blind rounded end", position: [0.88, -1.42, 0.28], color: "#ee7c6a" },
+ { id: "body", label: "Body", detail: "Main storage part", position: [0.99, -0.19, 0.32], color: "#f2a33b" },
+ { id: "neck", label: "Neck", detail: "Leads to the cystic duct", position: [0.42, 1.25, 0.14], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "esophagus",
+ name: "Esophagus",
+ scientificName: "Oesophagus",
+ system: "Digestive System",
+ model: "/models/esophagus.glb",
+ icon: "▯",
+ accent: "#d89c86",
+ description: "A muscular tube that propels food from the throat to the stomach by peristalsis.",
+ poetic: "The swift corridor",
+ size: "About 25 cm long",
+ weight: "~40 g",
+ location: "Behind the trachea, passing through the diaphragm",
+ function: "Transports food to the stomach",
+ dailyFact: "Moves food in ~2 seconds per swallow",
+ medical: "Its lower sphincter normally keeps stomach acid from entering it.",
+ bloodSupply: "Esophageal arteries",
+ funFact: "Food reaches the stomach even if you stand on your head — muscles do the work.",
+ tissue: "Stratified squamous epithelium",
+ comparison: "Esophagus vs. intestine",
+ conditions: ["GERD", "Esophageal cancer", "Achalasia", "Esophagitis", "Barrett's esophagus", "Hiatal hernia", "Esophageal stricture", "Mallory–Weiss tear"],
+ illustrated: false,
+ hotspots: [
+ { id: "cervical", label: "Cervical part", detail: "Begins at the throat", position: [0.12, 1.49, 0.31], color: "#ee7c6a" },
+ { id: "thoracic", label: "Thoracic part", detail: "Runs behind the heart", position: [-0.13, 0.22, 0.25], color: "#f2a33b" },
+ { id: "les", label: "Lower sphincter", detail: "Gateway to the stomach", position: [0.26, -1.59, 0.31], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "tongue",
+ name: "Tongue",
+ scientificName: "Lingua",
+ system: "Digestive System",
+ model: "/models/tongue.glb",
+ icon: "◴",
+ accent: "#d97a72",
+ description: "A muscular organ of taste, speech and swallowing, covered by a specialised mucosa.",
+ poetic: "The taste map",
+ size: "About 10 cm long",
+ weight: "~70–100 g",
+ location: "Floor of the mouth",
+ function: "Taste, speech and swallowing",
+ dailyFact: "Hosts about 10,000 taste buds",
+ medical: "Taste buds are replaced roughly every two weeks.",
+ bloodSupply: "Lingual artery",
+ funFact: "Its surface is renewed so quickly that burn damage usually heals in days.",
+ tissue: "Stratified squamous epithelium with papillae",
+ comparison: "Tongue vs. eye",
+ conditions: ["Glossitis", "Oral thrush", "Tongue cancer", "Geographic tongue", "Ankyloglossia (tongue-tie)", "Aphthous ulcers", "Burning mouth syndrome", "Taste disorders"],
+ illustrated: false,
+ hotspots: [
+ { id: "tip", label: "Tip", detail: "Most mobile part", position: [0.9, 0.43, 0.29], color: "#ee7c6a" },
+ { id: "dorsum", label: "Dorsum", detail: "Covered in papillae", position: [-0.13, 1.06, -0.01], color: "#f2a33b" },
+ { id: "root", label: "Root", detail: "Anchors into the throat", position: [-1.05, 1.34, -0.08], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "spleen",
+ name: "Spleen",
+ scientificName: "Lien",
+ system: "Lymphatic & Immune System",
+ model: "/models/spleen.glb",
+ icon: "◗",
+ accent: "#b85c66",
+ description: "A fist-sized lymphatic organ that filters blood and mounts immune responses.",
+ poetic: "The blood sentinel",
+ size: "About 12 cm — roughly a fist",
+ weight: "150–200 g",
+ location: "Left upper abdomen, under the ribs",
+ function: "Filters blood, recycles iron, immune defence",
+ dailyFact: "Filters about 5% of blood volume each minute",
+ medical: "It removes old red cells and platelets and stores reserves of both.",
+ bloodSupply: "Splenic artery",
+ funFact: "It can be removed after injury — the liver and lymph nodes take over its jobs.",
+ tissue: "Red and white pulp",
+ comparison: "Spleen vs. lymph node",
+ conditions: ["Splenomegaly", "Splenic rupture", "Sickle cell disease", "Hypersplenism", "Splenic infarction", "Mononucleosis", "Hereditary spherocytosis", "Splenic cyst"],
+ illustrated: false,
+ hotspots: [
+ { id: "capsule", label: "Capsule", detail: "Fibrous outer coat", position: [1.41, 0.45, 0.31], color: "#ee7c6a" },
+ { id: "red-pulp", label: "Red pulp", detail: "Filters old blood cells", position: [0, -0.45, 0.56], color: "#f2a33b" },
+ { id: "hilum", label: "Hilum", detail: "Vessels enter here", position: [-1.58, 0, 0.35], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "thymus",
+ name: "Thymus",
+ scientificName: "Thymus",
+ system: "Lymphatic & Immune System",
+ model: "/models/thymus.glb",
+ icon: "❖",
+ accent: "#c88fb0",
+ description: "A two-lobed gland behind the sternum where T-lymphocytes learn to tell self from foreign.",
+ poetic: "The immune school",
+ size: "Largest in childhood, shrinks after puberty",
+ weight: "20–40 g (adult)",
+ location: "Upper chest, behind the sternum",
+ function: "Trains T-lymphocytes",
+ dailyFact: "Most active before puberty",
+ medical: "Thymocytes that attack the body's own tissues are eliminated here.",
+ bloodSupply: "Internal thoracic arteries",
+ funFact: "By old age most of it is replaced by fat — yet immunity keeps working.",
+ tissue: "Thymic cortex and medulla",
+ comparison: "Thymus vs. lymph node",
+ conditions: ["Thymic hyperplasia", "Myasthenia gravis", "Thymoma", "DiGeorge syndrome", "Severe combined immunodeficiency", "Thymic cyst", "Thymic carcinoma", "Aplasia of the thymus"],
+ illustrated: false,
+ hotspots: [
+ { id: "left-lobe", label: "Left lobe", detail: "One of two lobes", position: [-1.63, 0.6, 0.31], color: "#ee7c6a" },
+ { id: "right-lobe", label: "Right lobe", detail: "Sits under the sternum", position: [1.63, 0.6, 0.31], color: "#f2a33b" },
+ { id: "cortex", label: "Cortex", detail: "Where T-cells mature", position: [0.51, -1.18, 0.2], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "lymph-node",
+ name: "Lymph Node",
+ scientificName: "Nodus lymphaticus",
+ system: "Lymphatic & Immune System",
+ model: "/models/lymph-node.glb",
+ icon: "✳",
+ accent: "#b98cc9",
+ description: "A small bean-shaped filter along the lymph vessels, packed with immune cells.",
+ poetic: "The immune checkpoint",
+ size: "Bean-sized, 1–25 mm",
+ weight: "~1 g each",
+ location: "Clusters in neck, armpits, groin, chest and abdomen",
+ function: "Filters lymph, mounts immune responses",
+ dailyFact: "About 600 nodes guard the body",
+ medical: "Swollen nodes signal active infection or inflammation nearby.",
+ bloodSupply: "Hilar vessels",
+ funFact: "They can swell to 10× their size fighting an infection — that is the 'swollen glands' feeling.",
+ tissue: "Lymphoid cortex and medulla",
+ comparison: "Lymph node vs. spleen",
+ conditions: ["Lymphadenitis", "Lymphoma", "Metastatic cancer", "Tuberculosis lymphadenitis", "Infectious mononucleosis", "Sarcoidosis", "Kikuchi disease", "Castleman disease"],
+ illustrated: false,
+ hotspots: [
+ { id: "capsule", label: "Capsule", detail: "Outer fibrous coat", position: [-1.06, 1.03, 0.82], color: "#ee7c6a" },
+ { id: "cortex", label: "Cortex", detail: "B-cell follicles", position: [0.42, 0.45, 0.93], color: "#f2a33b" },
+ { id: "hilum", label: "Hilum", detail: "Vessels and exit", position: [1.76, -0.41, 0.44], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "thyroid",
+ name: "Thyroid Gland",
+ scientificName: "Glandula thyroidea",
+ system: "Endocrine System",
+ model: "/models/thyroid.glb",
+ icon: "❋",
+ accent: "#bf7fb8",
+ description: "A butterfly-shaped gland in the neck that sets the body's metabolic pace.",
+ poetic: "The metabolic dial",
+ size: "About 5 cm across the wings",
+ weight: "15–25 g",
+ location: "Front of the neck, below the larynx",
+ function: "Produces T3 and T4, regulates metabolism",
+ dailyFact: "Needs ~150 µg of iodine daily",
+ medical: "Thyroid hormones influence nearly every cell in the body.",
+ bloodSupply: "Superior and inferior thyroid arteries",
+ funFact: "It is the only organ that needs iodine — without it, the gland enlarges into a goitre.",
+ tissue: "Thyroid follicles",
+ comparison: "Thyroid vs. pituitary",
+ conditions: ["Hypothyroidism", "Hyperthyroidism", "Graves' disease", "Hashimoto's thyroiditis", "Goitre", "Thyroid nodules", "Thyroid cancer", "Subacute thyroiditis"],
+ illustrated: false,
+ hotspots: [
+ { id: "left-lobe", label: "Left lobe", detail: "Wraps the trachea", position: [-1.57, 0.5, 0.29], color: "#ee7c6a" },
+ { id: "right-lobe", label: "Right lobe", detail: "Mirror of the left", position: [1.57, 0.5, 0.29], color: "#f2a33b" },
+ { id: "isthmus", label: "Isthmus", detail: "Bridge across the front", position: [0.22, -0.34, 0.17], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "adrenal",
+ name: "Adrenal Glands",
+ scientificName: "Glandulae suprarenales",
+ system: "Endocrine System",
+ model: "/models/adrenal.glb",
+ icon: "◬",
+ accent: "#c9a45f",
+ description: "Two small caps on the kidneys that drive stress responses and salt balance.",
+ poetic: "The stress engines",
+ size: "About 3–5 cm each",
+ weight: "4–5 g each",
+ location: "On top of each kidney",
+ function: "Cortisol, aldosterone, adrenaline",
+ dailyFact: "Adrenaline surges within seconds of danger",
+ medical: "The medulla makes adrenaline; the cortex makes steroid hormones.",
+ bloodSupply: "Superior, middle and inferior suprarenal arteries",
+ funFact: "They can double in size under chronic stress — and shrink back when it passes.",
+ tissue: "Adrenal cortex and medulla",
+ comparison: "Adrenal vs. thyroid",
+ conditions: ["Addison's disease", "Cushing's syndrome", "Conn's syndrome", "Pheochromocytoma", "Adrenal insufficiency", "Congenital adrenal hyperplasia", "Adrenal adenoma", "Adrenal crisis"],
+ illustrated: false,
+ hotspots: [
+ { id: "right-gland", label: "Right gland", detail: "Triangular cap", position: [-1.56, 0.59, 0.25], color: "#ee7c6a" },
+ { id: "left-gland", label: "Left gland", detail: "Crescent-shaped", position: [1.5, 0.74, 0.16], color: "#f2a33b" },
+ { id: "medulla", label: "Medulla", detail: "Makes adrenaline", position: [1.12, -0.28, 0.45], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "pituitary",
+ name: "Pituitary Gland",
+ scientificName: "Hypophysis",
+ system: "Endocrine System",
+ model: "/models/pituitary.glb",
+ icon: "✱",
+ accent: "#9f7fc9",
+ description: "A pea-sized 'master gland' that commands the other endocrine glands.",
+ poetic: "The conductor",
+ size: "About 1 cm — a pea",
+ weight: "0.5–1 g",
+ location: "In the sella turcica of the sphenoid bone",
+ function: "Controls growth, stress, metabolism, reproduction",
+ dailyFact: "Releases at least 6 major hormones",
+ medical: "Its hormones orchestrate the thyroid, adrenals, gonads and more.",
+ bloodSupply: "Superior and inferior hypophyseal arteries",
+ funFact: "It hangs from the brain by a stalk thinner than a pencil lead.",
+ tissue: "Adenohypophysis and neurohypophysis",
+ comparison: "Pituitary vs. thyroid",
+ conditions: ["Pituitary adenoma", "Hypopituitarism", "Acromegaly", "Prolactinoma", "Diabetes insipidus", "Sheehan syndrome", "Cushing's disease", "Empty sella syndrome"],
+ illustrated: false,
+ hotspots: [
+ { id: "anterior", label: "Anterior lobe", detail: "Hormone factory", position: [0.7, -0.8, 0.52], color: "#ee7c6a" },
+ { id: "posterior", label: "Posterior lobe", detail: "Stores ADH and oxytocin", position: [-0.7, -0.8, 0.52], color: "#f2a33b" },
+ { id: "stalk", label: "Infundibulum", detail: "Connects to the brain", position: [0, 1.45, 0.28], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "trachea",
+ name: "Trachea",
+ scientificName: "Trachea",
+ system: "Respiratory System",
+ model: "/models/trachea.glb",
+ icon: "◌",
+ accent: "#d89494",
+ description: "The windpipe — a flexible tube held open by C-shaped cartilage rings.",
+ poetic: "The windpipe",
+ size: "About 10–12 cm long",
+ weight: "~30 g",
+ location: "In front of the esophagus, from larynx to bronchi",
+ function: "Conducts air to the bronchi",
+ dailyFact: "Lines ~1 L of air movement per breath",
+ medical: "Its cilia sweep mucus and dust upwards out of the lungs.",
+ bloodSupply: "Inferior thyroid and bronchial arteries",
+ funFact: "16–20 C-shaped rings keep it open even when you bend your neck.",
+ tissue: "Pseudostratified ciliated epithelium",
+ comparison: "Trachea vs. esophagus",
+ conditions: ["Tracheitis", "Tracheal stenosis", "Tracheomalacia", "Tracheal intubation injury", "Tracheoesophageal fistula", "Foreign body aspiration", "Tracheal tumors", "Croup"],
+ illustrated: false,
+ hotspots: [
+ { id: "rings", label: "Cartilage rings", detail: "Keep the tube open", position: [0.63, 0.96, 0.17], color: "#ee7c6a" },
+ { id: "carina", label: "Carina", detail: "Split into bronchi", position: [0.43, -1.34, 0.25], color: "#f2a33b" },
+ { id: "membranous", label: "Membranous wall", detail: "Faces the esophagus", position: [0, 0.27, 0.6], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "larynx",
+ name: "Larynx",
+ scientificName: "Larynx",
+ system: "Respiratory System",
+ model: "/models/larynx.glb",
+ icon: "⌾",
+ accent: "#c9a67f",
+ description: "The voice box — a cartilaginous valve that protects the airway and produces sound.",
+ poetic: "The voice box",
+ size: "About 4–5 cm",
+ weight: "~10–15 g",
+ location: "Front of the neck, between throat and trachea",
+ function: "Voice production, airway protection",
+ dailyFact: "Vocal folds vibrate 100–250 times per second",
+ medical: "The epiglottis seals the airway during swallowing.",
+ bloodSupply: "Superior and inferior laryngeal arteries",
+ funFact: "Your 'Adam's apple' is the thyroid cartilage, larger in men after puberty.",
+ tissue: "Hyaline and elastic cartilage",
+ comparison: "Larynx vs. trachea",
+ conditions: ["Laryngitis", "Vocal cord nodules", "Laryngeal cancer", "Epiglottitis", "Laryngospasm", "Vocal cord paralysis", "Laryngomalacia", "Laryngeal papillomatosis"],
+ illustrated: false,
+ hotspots: [
+ { id: "thyroid-cartilage", label: "Thyroid cartilage", detail: "The 'Adam's apple'", position: [-0.14, 1.27, 0.67], color: "#ee7c6a" },
+ { id: "vocal-folds", label: "Vocal folds", detail: "Produce the voice", position: [-0.29, -0.33, 0.86], color: "#f2a33b" },
+ { id: "epiglottis", label: "Epiglottis", detail: "Guards the airway", position: [-0.02, 1.67, 0.77], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "bladder",
+ name: "Urinary Bladder",
+ scientificName: "Vesica urinaria",
+ system: "Urinary System",
+ model: "/models/bladder.glb",
+ icon: "◫",
+ accent: "#7fa8c9",
+ description: "A hollow, muscular reservoir that stores urine until it is expelled.",
+ poetic: "The holding chamber",
+ size: "About 12 cm when full",
+ weight: "Empty ~50 g, full ~500 g",
+ location: "In the pelvis, behind the pubic bone",
+ function: "Stores and voids urine",
+ dailyFact: "Holds 400–600 mL, urges at ~150–250 mL",
+ medical: "Its detrusor muscle and sphincters coordinate filling and voiding.",
+ bloodSupply: "Superior and inferior vesical arteries",
+ funFact: "The trigone never changes shape when the bladder fills — a key landmark for surgeons.",
+ tissue: "Transitional epithelium (urothelium)",
+ comparison: "Bladder vs. kidneys",
+ conditions: ["Cystitis", "Bladder cancer", "Urinary incontinence", "Overactive bladder", "Bladder stones", "Neurogenic bladder", "Interstitial cystitis", "Bladder outlet obstruction"],
+ illustrated: false,
+ hotspots: [
+ { id: "apex", label: "Apex", detail: "Top, towards the umbilicus", position: [0.07, 0.82, 0.33], color: "#ee7c6a" },
+ { id: "body", label: "Body", detail: "Main storage region", position: [-0.91, -0.07, 0.61], color: "#f2a33b" },
+ { id: "trigone", label: "Trigone", detail: "Fixed triangular floor", position: [0.55, -0.73, 0.55], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "uterus",
+ name: "Uterus",
+ scientificName: "Uterus",
+ system: "Reproductive System",
+ model: "/models/uterus.glb",
+ icon: "❁",
+ accent: "#c98b9b",
+ description: "A pear-shaped muscular organ that houses and nourishes the developing fetus.",
+ poetic: "The first home",
+ size: "About 7–8 cm",
+ weight: "50–100 g (non-pregnant)",
+ location: "In the pelvis, behind the bladder",
+ function: "Supports pregnancy and menstruation",
+ dailyFact: "Expands about 500-fold during pregnancy",
+ medical: "Its lining, the endometrium, is shed each cycle unless a pregnancy implants.",
+ bloodSupply: "Uterine arteries",
+ funFact: "After birth it shrinks back to its original size in about six weeks.",
+ tissue: "Endometrium and myometrium",
+ comparison: "Uterus vs. ovary",
+ conditions: ["Uterine fibroids", "Endometriosis", "Adenomyosis", "Endometrial cancer", "Uterine prolapse", "Cervical cancer", "Dysmenorrhea", "Uterine polyps"],
+ illustrated: false,
+ hotspots: [
+ { id: "fundus", label: "Fundus", detail: "Dome above the tubes", position: [0.04, 1.36, 0.25], color: "#ee7c6a" },
+ { id: "body", label: "Body", detail: "Main muscular part", position: [0.74, 0.04, 0.38], color: "#f2a33b" },
+ { id: "cervix", label: "Cervix", detail: "Gateway to the vagina", position: [0.22, -1.84, 0.3], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "ovary",
+ name: "Ovary",
+ scientificName: "Ovarium",
+ system: "Reproductive System",
+ model: "/models/ovary.glb",
+ icon: "❀",
+ accent: "#cf9b8b",
+ description: "An almond-sized gonad that releases ova and produces female sex hormones.",
+ poetic: "The egg keeper",
+ size: "About 3–4 cm — an almond",
+ weight: "5–8 g each",
+ location: "On either side of the uterus",
+ function: "Produces ova, oestrogen and progesterone",
+ dailyFact: "1–2 million oocytes at birth, ~400 ovulated",
+ medical: "Its monthly cycle drives menstruation and fertility.",
+ bloodSupply: "Ovarian artery",
+ funFact: "At birth a girl has all the eggs she will ever have — around 1–2 million.",
+ tissue: "Ovarian cortex with follicles",
+ comparison: "Ovary vs. testis",
+ conditions: ["Polycystic ovary syndrome", "Ovarian cysts", "Ovarian cancer", "Endometriosis", "Ovarian torsion", "Premature ovarian failure", "Ovarian teratoma", "Salpingo-oophoritis"],
+ illustrated: false,
+ hotspots: [
+ { id: "cortex", label: "Cortex", detail: "Holds the follicles", position: [-0.68, 1.14, 0.65], color: "#ee7c6a" },
+ { id: "medulla", label: "Medulla", detail: "Vessels and nerves", position: [0.44, -0.78, 0.25], color: "#f2a33b" },
+ { id: "hilum", label: "Hilum", detail: "Where vessels enter", position: [0.86, 0, 0.42], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "testis",
+ name: "Testis",
+ scientificName: "Testis",
+ system: "Reproductive System",
+ model: "/models/testis.glb",
+ icon: "✧",
+ accent: "#d8a58f",
+ description: "An oval gonad that produces sperm and testosterone.",
+ poetic: "The seed forge",
+ size: "About 4–5 cm — an oval",
+ weight: "15–25 g each",
+ location: "In the scrotum, outside the body cavity",
+ function: "Sperm production and testosterone",
+ dailyFact: "Produces ~1,500 sperm per second",
+ medical: "The scrotum keeps them ~2–3 °C cooler than the body for sperm health.",
+ bloodSupply: "Testicular artery",
+ funFact: "About 1,500 seminiferous tubules packed into each testis would stretch 300 m if unravelled.",
+ tissue: "Seminiferous tubules",
+ comparison: "Testis vs. ovary",
+ conditions: ["Testicular cancer", "Epididymitis", "Orchitis", "Testicular torsion", "Hydrocele", "Varicocele", "Undescended testis", "Hypogonadism"],
+ illustrated: false,
+ hotspots: [
+ { id: "tunica", label: "Tunica albuginea", detail: "Tough white capsule", position: [0.61, 0.11, 0.52], color: "#ee7c6a" },
+ { id: "tubules", label: "Seminiferous tubules", detail: "Sperm factories", position: [-0.18, -0.83, 0.92], color: "#f2a33b" },
+ { id: "epididymis", label: "Epididymis", detail: "Sperm maturing duct", position: [-0.8, -0.29, -0.58], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "prostate",
+ name: "Prostate",
+ scientificName: "Prostata",
+ system: "Reproductive System",
+ model: "/models/prostate.glb",
+ icon: "⬢",
+ accent: "#a98fc9",
+ description: "A walnut-sized gland that contributes fluid to semen and surrounds the urethra.",
+ poetic: "The gatekeeper gland",
+ size: "About 3–4 cm — a walnut",
+ weight: "15–25 g",
+ location: "In the pelvis, below the bladder",
+ function: "Adds fluid to semen",
+ dailyFact: "Contributes ~30% of semen volume",
+ medical: "Its growth with age can compress the urethra and hamper urination.",
+ bloodSupply: "Inferior vesical and middle rectal arteries",
+ funFact: "By age 60, most men have some enlargement of this gland — usually harmless.",
+ tissue: "Prostatic glands and stroma",
+ comparison: "Prostate vs. bladder",
+ conditions: ["Benign prostatic hyperplasia", "Prostatitis", "Prostate cancer", "Prostatic calcification", "Acute urinary retention", "Prostatic intraepithelial neoplasia", "Prostatic abscess", "Chronic pelvic pain syndrome"],
+ illustrated: false,
+ hotspots: [
+ { id: "peripheral", label: "Peripheral zone", detail: "Most cancers arise here", position: [1.5, -1.24, 0.76], color: "#ee7c6a" },
+ { id: "transition", label: "Transition zone", detail: "Grows with age", position: [0.53, 0.49, 1.64], color: "#f2a33b" },
+ { id: "capsule", label: "Capsule", detail: "Outer fibrous coat", position: [0.92, 1.13, 0.92], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "spinal-cord",
+ name: "Spinal Cord",
+ scientificName: "Medulla spinalis",
+ system: "Nervous System",
+ model: "/models/spinal-cord.glb",
+ icon: "⌇",
+ accent: "#b8a88f",
+ description: "The brain's information highway — a column of nervous tissue protected by the vertebrae.",
+ poetic: "The signal highway",
+ size: "About 45 cm long",
+ weight: "~30–35 g",
+ location: "Inside the vertebral canal, C1 to L1–L2",
+ function: "Relays signals between brain and body",
+ dailyFact: "Processes reflexes in ~30 ms without the brain",
+ medical: "Spinal reflexes are computed here directly, faster than thought.",
+ bloodSupply: "Anterior and posterior spinal arteries",
+ funFact: "It stops growing in childhood; below it, nerve roots dangle as the 'cauda equina' (horse's tail).",
+ tissue: "Grey matter (butterfly) and white matter tracts",
+ comparison: "Spinal cord vs. brain",
+ conditions: ["Spinal cord injury", "Multiple sclerosis", "Spinal stenosis", "Myelitis", "Spinal tumors", "Syringomyelia", "Amyotrophic lateral sclerosis", "Spina bifida"],
+ illustrated: false,
+ hotspots: [
+ { id: "grey", label: "Grey matter", detail: "Butterfly of cell bodies", position: [0.57, 0.56, 0.09], color: "#ee7c6a" },
+ { id: "white", label: "White matter", detail: "Myelinated tracts", position: [0.67, -0.22, 0.1], color: "#f2a33b" },
+ { id: "roots", label: "Nerve roots", detail: "Exit between vertebrae", position: [0.82, 1.12, 0.06], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "diaphragm",
+ name: "Diaphragm",
+ scientificName: "Diaphragma",
+ system: "Musculoskeletal System",
+ model: "/models/diaphragm.glb",
+ icon: "◠",
+ accent: "#cc6a5f",
+ description: "The dome-shaped muscle that does most of the work of breathing.",
+ poetic: "The breath engine",
+ size: "Dome ~25 cm across",
+ weight: "~300 g",
+ location: "Separating the chest from the abdomen",
+ function: "Main muscle of inspiration",
+ dailyFact: "Moves ~1–2 cm at rest, up to 10 cm deep",
+ medical: "Its contraction flattens the dome and sucks air into the lungs.",
+ bloodSupply: "Inferior phrenic and musculophrenic arteries",
+ funFact: "It has three holes for the aorta, esophagus and vena cava — and still seals the chest perfectly.",
+ tissue: "Skeletal muscle with central tendon",
+ comparison: "Diaphragm vs. biceps",
+ conditions: ["Hiatal hernia", "Diaphragmatic hernia", "Diaphragmatic paralysis", "Hiccups", "Diaphragm rupture", "Eventration of the diaphragm", "Phrenic nerve injury", "Congenital diaphragmatic hernia"],
+ illustrated: false,
+ hotspots: [
+ { id: "tendon", label: "Central tendon", detail: "Tough central aponeurosis", position: [0.06, 0.77, 0.29], color: "#ee7c6a" },
+ { id: "muscle", label: "Muscular part", detail: "Contracting dome", position: [-1.12, 0.54, 0.75], color: "#f2a33b" },
+ { id: "hiatus", label: "Oesophageal hiatus", detail: "Passage for the esophagus", position: [0.93, 0.63, 0.62], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "biceps",
+ name: "Biceps Brachii",
+ scientificName: "Musculus biceps brachii",
+ system: "Musculoskeletal System",
+ model: "/models/biceps.glb",
+ icon: "◧",
+ accent: "#d9665f",
+ description: "A two-headed muscle of the upper arm that flexes the elbow and supinates the forearm.",
+ poetic: "The flexor",
+ size: "Belly about 15 cm",
+ weight: "~150–200 g",
+ location: "Front of the upper arm",
+ function: "Elbow flexion and forearm supination",
+ dailyFact: "Lifts the forearm ~10,000 times a day",
+ medical: "Its distal tendon ruptures with sudden heavy loading — the classic 'Popeye' bulge.",
+ bloodSupply: "Brachial artery branches",
+ funFact: "Its two heads start at different bones but meet in one tendon — hence 'biceps'.",
+ tissue: "Skeletal (striated) muscle",
+ comparison: "Biceps vs. diaphragm",
+ conditions: ["Biceps tendonitis", "Biceps tendon rupture", "Tennis elbow (lateral epicondylitis)", "Muscle strain", "Bicipital tendinopathy", "Rhabdomyolysis", "Muscle hypertrophy", "Compartment syndrome"],
+ illustrated: false,
+ hotspots: [
+ { id: "short-head", label: "Short head", detail: "From the coracoid", position: [-1.24, 0.63, 0.45], color: "#ee7c6a" },
+ { id: "long-head", label: "Long head", detail: "From the glenoid", position: [1.25, 0.54, 0.41], color: "#f2a33b" },
+ { id: "tendon", label: "Distal tendon", detail: "Inserts on the radius", position: [0.15, -1.9, 0.45], color: "#6393d8" },
+ ],
+ },
+ {
+ id: "femur",
+ name: "Femur",
+ scientificName: "Femur",
+ system: "Skeletal System",
+ model: "/models/femur.glb",
+ icon: "▰",
+ accent: "#c9b98f",
+ description: "The thigh bone — the longest, heaviest and strongest bone in the human body.",
+ poetic: "The pillar of the leg",
+ size: "About 45–50 cm — a quarter of your height",
+ weight: "~1 kg",
+ location: "From hip to knee",
+ function: "Supports body weight and locomotion",
+ dailyFact: "Withstands forces ~5× body weight when running",
+ medical: "Its neck is a classic site of fracture in osteoporosis.",
+ bloodSupply: "Medial and lateral circumflex femoral arteries",
+ funFact: "It is stronger than concrete pound for pound and holds the record for longest bone.",
+ tissue: "Compact and spongy bone",
+ comparison: "Femur vs. biceps",
+ conditions: ["Hip fracture", "Femoral shaft fracture", "Osteoporosis", "Osteoarthritis", "Avascular necrosis", "Perthes disease", "Femoral hernia", "Bone tumors"],
+ illustrated: false,
+ hotspots: [
+ { id: "head", label: "Head", detail: "Ball of the hip joint", position: [0.55, 1.3, 0.09], color: "#ee7c6a" },
+ { id: "neck", label: "Neck", detail: "Fracture-prone in elders", position: [0.41, 0.82, 0.2], color: "#f2a33b" },
+ { id: "shaft", label: "Shaft", detail: "Long cylindrical body", position: [-0.22, 0.22, 0.16], color: "#6393d8" },
+ { id: "condyles", label: "Condyles", detail: "Knee joint surfaces", position: [0.02, -1.38, 0.06], color: "#7fa88a" },
+ ],
+ },
+];
diff --git a/public/models/adrenal.glb b/public/models/adrenal.glb
new file mode 100644
index 0000000000000000000000000000000000000000..c5b3b9dc7488e6ac270b007033e44e2982da4d19
GIT binary patch
literal 61508
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
literal 0
HcmV?d00001
diff --git a/public/models/biceps.glb b/public/models/biceps.glb
new file mode 100644
index 0000000000000000000000000000000000000000..26a8e2f8104c161c89e01cfb3636967a7741074c
GIT binary patch
literal 80428
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