|
from enum import Enum |
|
from typing import List, Dict |
|
|
|
class ICFComponent(Enum): |
|
""" |
|
Representa os componentes da Classifica莽茫o Internacional de Funcionalidade (CIF) |
|
com seus respectivos c贸digos, r贸tulos e cores. |
|
""" |
|
|
|
BODY_FUNCTIONS = ('b', 'Fun莽玫es Corporais (b)', '#3E7CB1') |
|
ACTIVITIES_PARTICIPATION = ('d', 'Atividades e Participa莽茫o (d)', '#D41A80') |
|
ENVIRONMENT = ('e', 'Ambiente (e)', '#1AD41A') |
|
BODY_STRUCTURES = ('s', 'Estruturas Corporais (s)', '#FFBF00') |
|
NOT_COVERED = ('nc', 'N茫o Coberto (n.c.)', '#B33F31') |
|
NOT_DEFINED = ('nd', 'N茫o Definido (n.d.)', '#E88C80') |
|
|
|
def __init__(self, short_code: str, label: str, color: str): |
|
self._short_code = short_code |
|
self._label = label |
|
self._color = color |
|
|
|
@property |
|
def short_code(self) -> str: |
|
"""C贸digo curto do componente CIF (ex: 'b', 'd', 'nc').""" |
|
return self._short_code |
|
|
|
@property |
|
def label(self) -> str: |
|
"""R贸tulo completo e descritivo do componente CIF.""" |
|
return self._label |
|
|
|
@property |
|
def color(self) -> str: |
|
"""Cor hexadecimal associada ao componente para gr谩ficos.""" |
|
return self._color |
|
|
|
@classmethod |
|
def from_short_code(cls, code: str) -> 'ICFComponent': |
|
""" |
|
Retorna o membro ICFComponent correspondente ao c贸digo curto fornecido. |
|
Levanta um ValueError se o c贸digo n茫o for encontrado. |
|
""" |
|
for member in cls: |
|
if member.short_code == code.lower(): |
|
return member |
|
raise ValueError(f"Nenhum componente CIF encontrado para o c贸digo curto: '{code}'") |
|
|
|
@classmethod |
|
def from_label(cls, label_to_find: str) -> 'ICFComponent': |
|
""" |
|
Retorna o membro ICFComponent correspondente ao r贸tulo completo fornecido. |
|
Levanta um ValueError se o r贸tulo n茫o for encontrado. |
|
""" |
|
for member in cls: |
|
if member.label == label_to_find: |
|
return member |
|
raise ValueError(f"Nenhum componente CIF encontrado para o r贸tulo: '{label_to_find}'") |
|
|
|
|
|
@classmethod |
|
def get_ordered_labels(cls) -> List[str]: |
|
"""Retorna uma lista ordenada dos r贸tulos dos componentes CIF.""" |
|
return [member.label for member in cls] |
|
|
|
@classmethod |
|
def get_color_map(cls) -> Dict[str, str]: |
|
"""Retorna um dicion谩rio mapeando r贸tulos de componentes CIF para suas cores.""" |
|
return {member.label: member.color for member in cls} |
|
|
|
@classmethod |
|
def get_short_code_to_label_map(cls) -> Dict[str, str]: |
|
"""Retorna um dicion谩rio mapeando c贸digos curtos para r贸tulos completos.""" |
|
return {member.short_code: member.label for member in cls} |
|
|
|
@classmethod |
|
def get_short_code_to_component_map(cls) -> Dict[str, 'ICFComponent']: |
|
"""Retorna um dicion谩rio mapeando c贸digos curtos para os membros ICFComponent.""" |
|
return {member.short_code: member for member in cls} |