Skip to content

Commit

Permalink
Merge pull request #183 from BIH-CEI/179-read-hierarchical-data
Browse files Browse the repository at this point in the history
179 read hierarchical data
  • Loading branch information
frehburg authored Oct 17, 2024
2 parents b14ef3e + 716159a commit 72d1fe6
Show file tree
Hide file tree
Showing 21 changed files with 1,139 additions and 312 deletions.
380 changes: 326 additions & 54 deletions notebooks/hierarchical_data_model.ipynb

Large diffs are not rendered by default.

2 changes: 0 additions & 2 deletions src/phenopacket_mapper/data_standards/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@
from .code_system import CodeSystem, SNOMED_CT, HPO, MONDO, OMIM, ORDO, LOINC
from .code import Coding, CodeableConcept
from .data_model import DataModel, DataField, DataModelInstance, DataFieldValue, DataSet, DataSection, OrGroup
from . import data_models
from .value_set import ValueSet

__all__ = [
"Cardinality",
"Coding", "CodeableConcept",
"DataModel", "DataField", "DataModelInstance", "DataFieldValue", "DataSet", "DataSection", "OrGroup",
"data_models",
"CodeSystem",
"SNOMED_CT", "HPO", "MONDO", "OMIM", "ORDO", "LOINC",
"Date",
Expand Down
34 changes: 33 additions & 1 deletion src/phenopacket_mapper/data_standards/cardinality.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,36 @@ def __post_init__(self):
raise ValueError(f"Parameter max must be a positive integer. (Not: {self.min})")

def __str__(self):
return f"{self.min}..{self.max}"
return f"{self.min}..{self.max}"

# Singleton instances
_instances = {}

@classmethod
@property
def ZERO_TO_ONE(cls) -> 'Cardinality':
if 'ZERO_TO_ONE' not in cls._instances:
cls._instances['ZERO_TO_ONE'] = cls(0, 1)
return cls._instances['ZERO_TO_ONE']

@classmethod
@property
def ZERO_TO_N(cls) -> 'Cardinality':
if 'ZERO_TO_N' not in cls._instances:
cls._instances['ZERO_TO_N'] = cls(0, 'n')
return cls._instances['ZERO_TO_N']

@classmethod
@property
def ONE(cls) -> 'Cardinality':
if 'OPTIONAL' not in cls._instances:
cls._instances['ONE'] = cls(1, 1)
return cls._instances['ONE']

@classmethod
@property
def ONE_TO_N(cls) -> 'Cardinality':
if 'ONE_TO_N' not in cls._instances:
cls._instances['ONE_TO_N'] = cls(1, 'n')
return cls._instances['ONE_TO_N']

Loading

0 comments on commit 72d1fe6

Please sign in to comment.