Genograma
Sobre genogramas
Um genograma é um diagrama familiar que vai além dos nomes e datas de uma árvore genealógica tradicional: ele registra a textura emocional e médica de uma família ao longo de três ou mais gerações. Terapeutas, assistentes sociais e conselheiros genéticos os utilizam para identificar padrões — cortes de relacionamento, superenvolvimento, doenças recorrentes — que são difíceis de perceber em notas de caso escritas.
O Schematex segue o padrão McGoldrick, Gerson & Petry (2020) usado no treinamento clínico, além da taxonomia de relacionamentos emocionais de 32 tipos do GenoPro, amplamente adotada. Para teoria e histórico, veja Wikipedia: Genogram. Esta página documenta o que o parser aceita atualmente.
1. Seu primeiro genograma
O menor genograma clinicamente útil: dois pais, um filho.
Quatro regras cobrem 80% do uso:
- Comece com a palavra-chave
genogram, opcionalmente seguida de um título entre aspas. - Declare cada pessoa em sua própria linha:
id [atributos]. Os atributos ficam entre colchetes, separados por vírgula. - Conecte duas pessoas com um operador de casal —
--(casamento) aqui; veja §4.1 para todos os seis. Uma string entre aspas no final é o rótulo do relacionamento. - Recue abaixo da linha do casal para adicionar filhos.
Comentários devem estar em sua própria linha, começando com
#,//ou Mermaid-style%%. Comentários inline ao final de linha (bob [male, 1978] # ...) não são suportados e vão quebrar o parser — veja §8.
2. Indivíduos
Uma linha de indivíduo é id [attr1, attr2, …]. Os atributos são separados por vírgula, independentes de ordem e todos opcionais.
Regras de ID. Deve corresponder a [a-zA-Z][a-zA-Z0-9_-]*. IDs são insensíveis a maiúsculas internamente, mas preservam seu caso original como rótulo de exibição (substitua com label:"…").
Atributos aceitos pelo parser hoje:
| Atributo | Valores | Efeito |
|---|---|---|
| Sexo | male, female, unknown, other | Forma: quadrado, círculo, losango, losango |
| Status | deceased, stillborn, miscarriage, abortion | Modificador visual (X sobreposto, forma redimensionada, etc.) |
| Ano de nascimento | Número de 4 dígitos, ex.: 1980 | Primeiro token de 4 dígitos = ano de nascimento |
| Ano de falecimento | Número de 4 dígitos após o nascimento, ex.: 1980, 2055 | Segundo token de 4 dígitos = ano de falecimento |
index | flag | Forma concêntrica = paciente identificado |
unknown-siblings | flag | Losango com ? — marcador para ≥1 irmãos de número desconhecido |
age:N | ex.: age:42 | Idade mostrada dentro da forma |
death:YYYY | ex.: death:2020 | Ano de falecimento explícito |
label:"…" | ex.: label:"Dr. Smith" | Substituição do rótulo de exibição |
sibling-of:<id> | ex.: sibling-of:monica | Fixa na mesma geração do irmão referenciado, desenha um colchete tracejado — para parentes conhecidos com ancestralidade desconhecida. |
conditions:… | veja §5 | Condições médicas/psicológicas |
key:value | qualquer personalizado | Armazenado como metadado |
3. Formas
| Visual | Valor de sexo | Significado |
|---|---|---|
| ☐ Quadrado | male | Masculino |
| ○ Círculo | female | Feminino |
| ◇ Losango | unknown, other, ou atributo omitido | Desconhecido / não especificado |
Modificadores de status se sobrepõem à forma base:
4. Conexões
4.1 Operadores de casal
O parser testa esses em ordem. O primeiro que corresponder vence — portanto -x- tem precedência sobre --.
| Operador | Tipo | Exemplo | Significado |
|---|---|---|---|
-x- | divorciado | a -x- b | Divórcio |
-/- | separado | a -/- b | Separação (casado) |
-// | separado | a -// b | Separação (alias para -/-) |
-o- | noivado | a -o- b | Noivado |
== | consanguíneo | a == b | Casal com parentesco sanguíneo |
-- | casado | a -- b | Casamento |
~ | coabitação | a ~ b | Coabitação / relacionamento de longa data (atual) |
~/~ | coabitação encerrada | a ~/~ b | Coabitação encerrada (nunca se casaram). Comum em casos de proteção à infância na América Latina onde os pais biológicos viveram juntos sem se casar e o relacionamento terminou — distinto de -x- divórcio (sem casamento) e -/- separação (ainda casados). |
Uma string entre aspas ao final se torna o rótulo do relacionamento (a -- b "m. 2005").
4.2 Indivíduo inline no lado direito
Se a pessoa do lado direito ainda não foi declarada, você pode declará-la no lugar:
4.3 Filhos (recuados abaixo de um casal)
Recuo abaixo de uma linha de casal = "esses são os filhos deste casal." Qualquer recuo maior que o do casal funciona; por convenção use 2 espaços a mais. Os filhos são renderizados na ordem de declaração (a renderização também ordena por ano de nascimento quando presente).
Atributos especiais de filhos:
| Atributo | Efeito |
|---|---|
adopted | Estilo de linha de adoção |
foster | Relacionamento de acolhimento familiar |
guardian | Tutela por parente não-progenitor (ex.: guarda por avós). Mesmo primitivo que foster — desenhado como link secundário de "cuidador atual" quando os pais biológicos também são declarados. |
twin-identical | Agrupado com outros filhos twin-identical do mesmo casal |
twin-fraternal | Agrupado com outros filhos twin-fraternal |
unknown-siblings | Losango único com glifo ? — "≥1 irmãos, número e identidades desconhecidos" (convenção de pedigree). |
4.3.1 Famílias com dois conjuntos de pais (acolhimento, adoção, tutela)
Filhos colocados com um cuidador não biológico enquanto os pais biológicos ainda fazem parte do caso podem ser declarados sob ambos os casais. Declare o filho com todos os atributos na primeira vez (sob o casal biológico) e, em seguida, redeclare apenas com [foster] / [adopted] / [guardian] sob o cuidador atual. A primeira declaração vence no layout; a segunda é desenhada como um link tracejado secundário de "cuidador atual" que não remove o filho de sua posição biológica.
O mesmo primitivo serve para adoção (fechada/aberta), acolhimento familiar e tutela por parente — apenas a palavra-chave difere. A redeclaração mescla atributos não conflitantes (sexo, ano de nascimento, rótulo, marcador index) com o original; declarar um male conflitante vs. female gera um erro de parse em vez de sobrescrever silenciosamente.
4.3.2 Irmãos de número desconhecido
Quando um arquivo de caso menciona "a criança tem irmãos" sem nomeá-los, use o atalho ? em sua própria linha, ou [unknown-siblings] em um id regular. Ambos são renderizados como um único losango com glifo "?" — o marcador de pedigree padrão para "um ou mais irmãos, identidades desconhecidas."
4.3.3 Sibling-of (parente conhecido, ancestralidade desconhecida)
Para expressar "X é irmão de Y" sem inventar pais, use a propriedade sibling-of: <id>. O renderizador fixa X na geração de Y e desenha um colchete tracejado acima dos dois — a convenção de pedigree padrão para um parente conhecido cuja ancestralidade não faz parte do caso.
4.4 Relacionamentos emocionais
Linha separada, padrão do parser A -TIPO- B (não direcional) ou A -TIPO-> B (direcional). Um rótulo entre aspas opcional vai no final. Ambos os indivíduos já devem ter sido declarados antes da linha emocional.
harry -cutoff- petunia # não direcional
harry -hostile- dudley "since 1991"
uncle -abuse-> nephew # direcional (seta)Todos os 32 tipos que o parser aceita hoje:
| Categoria | Tipos |
|---|---|
| Positivo / próximo | harmony, close, bestfriends, love, inlove, friendship |
| Negativo / hostil | hostile, conflict, enmity, distant-hostile, cutoff |
| Ambivalente | close-hostile, fused, fused-hostile |
| Distância | distant, normal, nevermet |
| Abuso (direcional) | abuse, physical-abuse, emotional-abuse, sexual-abuse, neglect |
| Controle (direcional) | manipulative, controlling, jealous |
| Especial | focused, focused-neg, distrust, admirer, limerence |
5. Condições médicas
Sintaxe: conditions: name(fill) [+ name(fill, #color)]…
father [male, 1945, conditions: heart(full, #E53935)]
mother [female, 1948, conditions: diabetes(half-left) + anxiety(half-right, #26A69A)]name— qualquer identificador de sua escolha (exibido na legenda/tooltip).fill— obrigatório, controla qual região da forma é colorida. Veja a tabela abaixo.color— hex opcional. O padrão depende do tema do renderizador.- Múltiplas condições são unidas com
+. Cada uma precisa de seu próprio(fill).
Posições de preenchimento:
Valor de fill | Região |
|---|---|
full | Forma inteira |
half-left / half-right | Metade esquerda / direita |
half-top / half-bottom | Metade superior / inferior |
quad-tl / quad-tr / quad-bl / quad-br | Um quadrante |
striped | Padrão de listras diagonais (portador assintomático) |
dotted | Padrão de pontos |
6. Rótulos e comentários
- Título:
genogram "Smith Family"— apenas na primeira linha. - Substituição de rótulo de pessoa:
alice [female, label:"Dr. Alice Smith"]. - Rótulo de relacionamento: string entre aspas ao final de uma linha de casal ou emocional —
alice -- bob "m. 2005". - Comentários:
#,//ou%%no início de uma linha (após espaços em branco iniciais). Comentários inline não são suportados.
genogram "Smith Family"
# esta linha é um comentário — ok
%% comentário estilo Mermaid — também ok
alice [female, 1980] # ← ESTE comentário inline quebra o parser7. Palavras reservadas e escape
Reservadas no início de linha: genogram (palavra-chave de cabeçalho).
Tokens de operador reservados dentro de uma linha — evite usar essas sequências em IDs:
--, ~, ~/~, ==, -x-, -/-, -//, -o-, e qualquer -<type>- / -<type>-> que corresponda a um tipo de relacionamento emocional.
ID reservado ? — ? isolado em uma linha de filho gera automaticamente um marcador sintético com o atributo unknown-siblings. Não use ? como id real.
Strings com espaços devem ser colocadas entre aspas duplas: títulos, rótulos, label:"…". Aspas simples e backticks não são reconhecidos.
8. Erros comuns
Erros reais do parser, o que os provoca e como corrigi-los.
| Você escreveu | O parser diz | Correção |
|---|---|---|
alex [nonbinary, 1995] | Unknown property 'nonbinary' | Use unknown ou other (nonbinary está no §13 Roadmap) |
alice [female, transgender] | Unknown property 'transgender' | Ainda não parseável (§13 Roadmap) |
dad -- mom ← seguido de child [male, 2010] no mesmo recuo | Filho interpretado como novo indivíduo de nível superior, não como filho do casal | Recue a linha do filho mais do que a linha do casal (2 espaços são suficientes) |
A -- B onde A nunca foi declarado | Unknown individual 'A' | Declare A [sexo, ano] em uma linha acima |
father -- mother "married" na linha 1 (sem cabeçalho genogram) | Expected "genogram" header | Comece o arquivo com genogram ou genogram "Title" |
conditions: diabetes + cancer (sem parênteses) | Invalid condition format 'diabetes' | Adicione fill: conditions: diabetes(half-left) + cancer(half-right) |
[triplet-identical] | Unknown property 'triplet-identical' | Trigêmeos ainda não são parseáveis (§13 Roadmap) |
dad -- mom # first marriage | Comentário # inline ao final é tratado como parte do rótulo / gera erros | Mova o comentário para sua própria linha |
Mesmo id declarado duas vezes com sexos diferentes (x [male] e depois x [female]) | Conflicting sex for 'x': previously 'male', now 'female' | Escolha um ou renomeie um dos ids |
child [foster] redeclarado mas pais biológicos nunca declarados | child torna-se o filho regular do casal de acolhimento (sem link secundário desenhado) | Isso é intencional — links secundários requerem um relacionamento primário de pais-filho existente de uma declaração anterior |
9. Gramática (EBNF)
document = header (blank | comment | individual | couple-block | emotional)*
header = "genogram" ( WS quoted-string )? NEWLINE
quoted-string = '"' any-char-but-quote* '"'
individual = INDENT id ( "[" attrs "]" )? NEWLINE
couple-block = INDENT id WS coupleOp WS right-side ( WS quoted-string )? NEWLINE
( deeper-indent child )*
child = INDENT id ( "[" attrs "]" )? NEWLINE
| INDENT "?" NEWLINE // atalho para irmãos de número desconhecido
right-side = id ( "[" attrs "]" )?
emotional = INDENT id WS "-" type "-" id ( WS quoted-string )? NEWLINE
| INDENT id WS "-" type "->" id ( WS quoted-string )? NEWLINE
coupleOp = "~/~" | "-//" | "-x-" | "-/-" | "-o-" | "==" | "--" | "~"
type = "harmony" | "close" | "bestfriends" | "love" | "inlove"
| "friendship" | "hostile" | "conflict" | "enmity"
| "distant-hostile" | "cutoff" | "close-hostile" | "fused"
| "fused-hostile" | "distant" | "normal" | "nevermet"
| "abuse" | "physical-abuse" | "emotional-abuse"
| "sexual-abuse" | "neglect" | "manipulative" | "controlling"
| "jealous" | "focused" | "focused-neg" | "distrust"
| "admirer" | "limerence"
id = [a-zA-Z] [a-zA-Z0-9_-]*
attrs = attr ("," attr)*
attr = "male" | "female" | "unknown" | "other"
| "deceased" | "stillborn" | "miscarriage" | "abortion"
| "adopted" | "foster" | "guardian"
| "twin-identical" | "twin-fraternal"
| "index" | "unknown-siblings"
| digit digit digit digit // ano
| "age" ":" digits
| "death" ":" digit digit digit digit
| "label" ":" quoted-string
| "sibling-of" ":" id
| "conditions" ":" condition ("+" condition)*
| key ":" value // personalizado
condition = name "(" fill ("," "#" hex)? ")"
fill = "full" | "half-left" | "half-right" | "half-top" | "half-bottom"
| "quad-tl" | "quad-tr" | "quad-bl" | "quad-br"
| "striped" | "dotted"
comment = INDENT ( "#" | "//" | "%%" ) any NEWLINEFonte autoritativa: src/diagrams/genogram/parser.ts. Se houver divergência com o parser, o parser prevalece — abra uma issue.
10. Conformidade com o padrão
Os genogramas do Schematex seguem McGoldrick, Gerson & Petry (2020), Genograms: Assessment and Treatment, 4ª ed. para símbolos estruturais, operadores de casal e alinhamento de geração. A taxonomia de relacionamentos emocionais segue a classificação de 32 tipos do GenoPro (não implementamos o conjunto completo de 34 tipos do GenoPro; focused-admirer e uma duplicata são agrupados em focused e admirer).
O que está implementado hoje vs. o padrão:
- ✅ Símbolos estruturais centrais (male/female/unknown, deceased, stillborn, miscarriage, abortion)
- ✅ Sistema de 6 operadores de casal do McGoldrick
- ✅ 32 tipos emocionais do GenoPro, direcionais onde clinicamente especificado
- ✅ Sistema de preenchimento por quadrante para condições médicas (posição em 4 quadrantes + padrões de listras/pontos)
- ✅ Pessoa índice (forma concêntrica)
- ✅ Agrupamento de gêmeos (idênticos / fraternos)
- ⏳ Adições de inclusividade de gênero Bennett 2022 — veja §13
- ⏳ Tipos de conexão para doador / substituta / filho adotivo — veja §13
Referências:
- McGoldrick, M., Gerson, R., & Petry, S. (2020). Genograms: Assessment and Treatment (4ª ed.).
- Hardy, K.V. & Laszloffy, T.A. (1995). The cultural genogram. J Marital Fam Ther, 21(3), 227–237.
- Referência de símbolos GenoPro — https://genopro.com/genogram/
11. Exemplos relacionados
Cenários prontos para uso da galeria de exemplos:
13. Roadmap
Planejado — ainda não parseável. Não use esses recursos em DSL gerado hoje; o parser irá rejeitá-los.
- Inclusividade de gênero Bennett 2022 —
nonbinary,intersexcomo valores de sexo;transgendercomo marcador. Atualmente digitados emsrc/core/types.ts, mas o conjuntoVALID_SEXdo parser ainda não os inclui. - Trigêmeos e nascimentos de ordem superior —
triplet-identical,triplet-fraternal. - Estruturas familiares modernas —
surrogate,donor,stepcomo atributos de tipo de filho. - Atalho de categoria para condições —
conditions: cardiovascular + depressionsem(fill), atribuindo automaticamente quadrantes e cores padrão. - Operador de união estável —
~dp~/ rótulo DP explícito. - Anotações de herança — identificadores de herança cultural de genograma cultural em indivíduos.
- Caixas de limite de domicílio — agrupa nós que compartilham uma residência (acolhimento familiar, domicílio multigeracional).
Acompanhe as issues do GitHub se precisar de algum desses recursos mais cedo.
Found this useful?
Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.