Source code for pydelfini.delfini_core.models.data_element_concept
from typing import Any
from typing import Dict
from typing import Type
from typing import TypeVar
from attrs import define as _attrs_define
from ..models.data_element_concept_applies_to import DataElementConceptAppliesTo
T = TypeVar("T", bound="DataElementConcept")
[docs]
@_attrs_define
class DataElementConcept:
"""Reference to an entry in a concept repository.
Attributes:
applies_to (DataElementConceptAppliesTo):
name (str): The human-readable definition of the concept.
origin (str): The repository where this concept can be found, either as a commonly known name, or as a URL.
origin_id (str): The ID of the concept in the concept repository.
"""
applies_to: DataElementConceptAppliesTo
name: str
origin: str
origin_id: str
[docs]
def to_dict(self) -> Dict[str, Any]:
"""Convert to a dict"""
applies_to = self.applies_to.value
name = self.name
origin = self.origin
origin_id = self.origin_id
field_dict: Dict[str, Any] = {}
field_dict.update(
{
"appliesTo": applies_to,
"name": name,
"origin": origin,
"originId": origin_id,
}
)
return field_dict
[docs]
@classmethod
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
"""Create an instance of :py:class:`DataElementConcept` from a dict"""
d = src_dict.copy()
applies_to = DataElementConceptAppliesTo(d.pop("appliesTo"))
name = d.pop("name")
origin = d.pop("origin")
origin_id = d.pop("originId")
data_element_concept = cls(
applies_to=applies_to,
name=name,
origin=origin,
origin_id=origin_id,
)
return data_element_concept