156 lines
7.5 KiB
JavaScript
156 lines
7.5 KiB
JavaScript
// Gera manifest-tegumentar.json.
|
|
//
|
|
// HISTÓRICO: tentamos duas vezes um bloco 3D esquemático (geometria
|
|
// procedural — caixas/esferas/cilindros) pro sistema tegumentar, já que o
|
|
// Z-Anatomy-Sample não tem nenhum dado de pele (confirmado consultando a
|
|
// listagem completa de Assets/Models/1.0 Models: só Skeletal, Muscular,
|
|
// Nervous, CardioVascular, Visceral, Joints, LymphoidOrgans, Regions e
|
|
// Reference lines). Nenhuma das duas ficou boa o suficiente pra estudo.
|
|
//
|
|
// DECISÃO ATUAL: em vez de insistir num modelo 3D (que exigiria ou uma
|
|
// malha real licenciada — ex: Sketchfab, mas isso pede conta/token de API,
|
|
// uma dependência externa nova — ou continuar no procedural, já reprovado),
|
|
// o tegumentar agora é um DIAGRAMA 2D com pontos clicáveis (hotspots), como
|
|
// a ilustração clássica de corte de pele. A imagem usada é de domínio
|
|
// público (obra do governo dos EUA — National Cancer Institute / SEER
|
|
// Training Modules, https://training.seer.cancer.gov/melanoma/anatomy/),
|
|
// salva em frontend/public/tegumentar/skin-cross-section.jpg. Sem
|
|
// restrição de uso — não precisa nem de atribuição, mas mantemos por boa
|
|
// prática (ver frontend/src/components/SkinDiagram.tsx).
|
|
//
|
|
// As posições dos hotspots (x/y em % da imagem) ficam em
|
|
// frontend/src/data/skinHotspots.ts, não aqui — são um detalhe de
|
|
// apresentação (onde desenhar o marcador em cima da figura), enquanto este
|
|
// arquivo só gera os DADOS da estrutura (nome, descrição) que entram no
|
|
// banco, do mesmo jeito que qualquer outra estrutura do atlas.
|
|
import { writeFileSync } from "node:fs";
|
|
import { fileURLToPath } from "node:url";
|
|
import path from "node:path";
|
|
|
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
|
|
const structures = [];
|
|
|
|
// modelFile/meshName são NOT NULL no schema mas não fazem sentido pro
|
|
// tegumentar (não há malha 3D) — o frontend nunca tenta carregar um glb
|
|
// pra esse sistema (ver o filtro em Scene.tsx), então usamos um valor-
|
|
// sentinela só pra satisfazer o schema.
|
|
function add(slug, namePt, nameEn, description, region = []) {
|
|
structures.push({
|
|
system: "tegumentar",
|
|
slug,
|
|
namePt,
|
|
nameEn,
|
|
synonyms: [],
|
|
description,
|
|
regionPath: ["Sistema Tegumentar", "Corte Transversal da Pele", ...region],
|
|
modelFile: "n/a",
|
|
meshName: slug,
|
|
});
|
|
}
|
|
|
|
add(
|
|
"epiderme", "Epiderme", "Epidermis",
|
|
"Camada mais externa e avascular da pele, formada por epitélio pavimentoso estratificado queratinizado; principal barreira contra perda de água, atrito, micro-organismos e raios UV.",
|
|
);
|
|
add(
|
|
"derme", "Derme", "Dermis",
|
|
"Camada de tecido conjuntivo abaixo da epiderme, rica em colágeno e elastina, vasos sanguíneos, nervos e os anexos cutâneos (folículos pilosos, glândulas); dá à pele resistência e elasticidade.",
|
|
);
|
|
add(
|
|
"hipoderme", "Hipoderme (Subcútis)", "Subcutis (Hypodermis)",
|
|
"Camada mais profunda, rica em tecido adiposo; isola termicamente, absorve impactos e serve de reserva de energia — não é tecnicamente parte da pele, mas a conecta aos músculos e ossos subjacentes.",
|
|
);
|
|
add(
|
|
"estrato-corneo", "Estrato Córneo", "Stratum Corneum",
|
|
"Camada mais superficial da epiderme, formada por células mortas cheias de queratina que se descamam continuamente; é a barreira física final contra o ambiente.",
|
|
["Epiderme"],
|
|
);
|
|
add(
|
|
"camada-pigmentar", "Camada Pigmentar", "Pigment Layer",
|
|
"Região da epiderme onde os melanócitos depositam melanina nas células vizinhas, dando à pele sua cor e protegendo o DNA celular da radiação UV.",
|
|
["Epiderme"],
|
|
);
|
|
add(
|
|
"estrato-germinativo", "Estrato Germinativo (Basal + Espinhoso)", "Stratum Germinativum (Basale + Spinosum)",
|
|
"Camadas mais profundas da epiderme (estrato basal + estrato espinhoso), onde as células-tronco se dividem continuamente para repor as células que se perdem na superfície.",
|
|
["Epiderme"],
|
|
);
|
|
add(
|
|
"papila-dermica", "Papila Dérmica", "Dermal Papilla",
|
|
"Projeção da derme para dentro da epiderme, aumentando a área de contato entre as duas camadas e alojando as alças capilares que nutrem a epiderme (que não tem vasos próprios).",
|
|
["Derme"],
|
|
);
|
|
add(
|
|
"pelo", "Pelo (Haste Capilar)", "Hair Shaft",
|
|
"Porção do pelo visível acima da superfície da pele, formada por células queratinizadas mortas; sua cor vem da melanina produzida na papila do pelo.",
|
|
["Complexo Pilossebáceo"],
|
|
);
|
|
add(
|
|
"foliculo-piloso", "Folículo Piloso", "Hair Follicle",
|
|
"Invaginação da epiderme para dentro da derme/hipoderme que envolve e forma a raiz do pelo; suas células-tronco também participam da regeneração da epiderme após lesões.",
|
|
["Complexo Pilossebáceo"],
|
|
);
|
|
add(
|
|
"papila-do-pelo", "Papila do Pelo", "Papilla of Hair",
|
|
"Estrutura na base do folículo, rica em vasos sanguíneos, que nutre a matriz germinativa responsável por produzir o pelo.",
|
|
["Complexo Pilossebáceo"],
|
|
);
|
|
add(
|
|
"musculo-eretor-do-pelo", "Músculo Eretor do Pelo", "Arrector Pili Muscle",
|
|
"Pequeno músculo liso ligado obliquamente ao folículo; ao se contrair (frio, medo), eleva o pelo e comprime a glândula sebácea — é o responsável pela pele arrepiada (piloereção).",
|
|
["Complexo Pilossebáceo"],
|
|
);
|
|
add(
|
|
"glandula-sebacea", "Glândula Sebácea", "Sebaceous Gland",
|
|
"Glândula anexa ao folículo piloso que secreta sebo — mistura oleosa que lubrifica o pelo e a pele e ajuda a impermeabilizá-la; sua obstrução está por trás da acne.",
|
|
["Complexo Pilossebáceo"],
|
|
);
|
|
add(
|
|
"glandula-sudoripara", "Glândula Sudorípara (Écrina)", "Eccrine Sweat Gland",
|
|
"Porção secretora enovelada, na derme profunda/hipoderme; produz o suor (água + eletrólitos), principal mecanismo de termorregulação do corpo por evaporação.",
|
|
["Glândula Sudorípara"],
|
|
);
|
|
add(
|
|
"poro-sudoriparo", "Poro Sudoríparo", "Sweat Pore",
|
|
"Abertura do ducto da glândula sudorípara na superfície da epiderme, por onde o suor é liberado.",
|
|
["Glândula Sudorípara"],
|
|
);
|
|
add(
|
|
"fibra-nervosa", "Fibra Nervosa", "Nerve Fiber",
|
|
"Prolongamento de neurônio que percorre a derme levando informação sensorial (toque, dor, temperatura) captada na pele até o sistema nervoso central.",
|
|
["Inervação da Pele"],
|
|
);
|
|
add(
|
|
"terminacao-nervosa-tato", "Terminação Nervosa Sensorial (Tato)", "Sensory Nerve Ending for Touch",
|
|
"Receptor sensorial na junção derme-epiderme que detecta toque leve — muito numeroso na ponta dos dedos e nos lábios (tipo Meissner).",
|
|
["Inervação da Pele"],
|
|
);
|
|
add(
|
|
"corpusculo-de-pacini", "Corpúsculo de Pacini", "Pacinian Corpuscle",
|
|
"Grande receptor sensorial encapsulado em camadas (como uma cebola), na hipoderme; detecta pressão profunda e vibrações de alta frequência.",
|
|
["Inervação da Pele"],
|
|
);
|
|
add(
|
|
"vasos-sanguineos-linfaticos", "Vasos Sanguíneos e Linfáticos", "Blood and Lymph Vessels",
|
|
"Rede de vasos na derme que nutre a pele (a epiderme em si não tem vasos), participa da termorregulação e drena o excesso de líquido tecidual.",
|
|
["Vascularização da Pele"],
|
|
);
|
|
add(
|
|
"arteria", "Artéria (Ramo Cutâneo)", "Artery (Cutaneous Branch)",
|
|
"Ramo arterial que entra na derme profunda e alimenta o plexo de vasos que nutre a pele.",
|
|
["Vascularização da Pele"],
|
|
);
|
|
add(
|
|
"veia", "Veia (Ramo Cutâneo)", "Vein (Cutaneous Branch)",
|
|
"Ramo venoso que drena o sangue do plexo vascular da pele de volta à circulação.",
|
|
["Vascularização da Pele"],
|
|
);
|
|
|
|
writeFileSync(
|
|
path.resolve(__dirname, "manifest-tegumentar.json"),
|
|
JSON.stringify({ structures }, null, 2),
|
|
);
|
|
|
|
console.log(`manifest-tegumentar.json gerado com ${structures.length} estruturas.`);
|