Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
48 changes: 21 additions & 27 deletions fhircraft/fhir/resources/datatypes/R4/complex/address.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import List, Optional, TYPE_CHECKING

from pydantic import Field, field_validator, model_validator
from pydantic import Field, model_validator

import fhircraft.fhir.resources.validators as fhir_validators
from fhircraft.fhir.resources.datatypes.primitives import *
Expand Down Expand Up @@ -99,40 +99,34 @@ class Address(Element):
default=None,
)

@field_validator(
*(
"period",
"country",
"postalCode",
"state",
"district",
"city",
"line",
"text",
"type",
"use",
"extension",
),
mode="after",
check_fields=None,
)
@classmethod
def FHIR_ele_1_constraint_validator(cls, value):
@model_validator(mode="after")
def FHIR_ele_1_constraint_validator(self):
return fhir_validators.validate_element_constraint(
cls,
value,
self,
elements=(
"period",
"country",
"postalCode",
"state",
"district",
"city",
"line",
"text",
"type",
"use",
"extension",
),
expression="hasValue() or (children().count() > id.count())",
human="All FHIR elements must have a @value or children",
key="ele-1",
severity="error",
)

@field_validator(*("extension",), mode="after", check_fields=None)
@classmethod
def FHIR_ext_1_constraint_validator(cls, value):
@model_validator(mode="after")
def FHIR_ext_1_constraint_validator(self):
return fhir_validators.validate_element_constraint(
cls,
value,
self,
elements=("extension",),
expression="extension.exists() != value.exists()",
human="Must have either extensions or value[x], not both",
key="ext-1",
Expand Down
27 changes: 14 additions & 13 deletions fhircraft/fhir/resources/datatypes/R4/complex/annotation.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import List, Optional, TYPE_CHECKING

from pydantic import Field, field_validator, model_validator
from pydantic import Field, model_validator

import fhircraft.fhir.resources.validators as fhir_validators
from fhircraft.fhir.resources.base import FHIRBaseModel
Expand Down Expand Up @@ -40,26 +40,27 @@ class Annotation(Element):
alias="_text",
)

@field_validator(
*("text", "time", "extension", "extension"), mode="after", check_fields=None
)
@classmethod
def FHIR_ele_1_constraint_validator(cls, value):
@model_validator(mode="after")
def FHIR_ele_1_constraint_validator(self):
return fhir_validators.validate_element_constraint(
cls,
value,
self,
elements=(
"text",
"time",
"extension",
"extension",
),
expression="hasValue() or (children().count() > id.count())",
human="All FHIR elements must have a @value or children",
key="ele-1",
severity="error",
)

@field_validator(*("extension",), mode="after", check_fields=None)
@classmethod
def FHIR_ext_1_constraint_validator(cls, value):
@model_validator(mode="after")
def FHIR_ext_1_constraint_validator(self):
return fhir_validators.validate_element_constraint(
cls,
value,
self,
elements=("extension",),
expression="extension.exists() != value.exists()",
human="Must have either extensions or value[x], not both",
key="ext-1",
Expand Down
44 changes: 19 additions & 25 deletions fhircraft/fhir/resources/datatypes/R4/complex/attachment.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import List, Optional, TYPE_CHECKING

from pydantic import Field, field_validator, model_validator
from pydantic import Field, model_validator

import fhircraft.fhir.resources.validators as fhir_validators
from fhircraft.fhir.resources.datatypes.primitives import *
Expand Down Expand Up @@ -85,38 +85,32 @@ class Attachment(Element):
alias="_creation",
)

@field_validator(
*(
"creation",
"title",
"hash",
"size",
"url",
"data",
"language",
"contentType",
"extension",
),
mode="after",
check_fields=None,
)
@classmethod
def FHIR_ele_1_constraint_validator(cls, value):
@model_validator(mode="after")
def FHIR_ele_1_constraint_validator(self):
return fhir_validators.validate_element_constraint(
cls,
value,
self,
elements=(
"creation",
"title",
"hash",
"size",
"url",
"data",
"language",
"contentType",
"extension",
),
expression="hasValue() or (children().count() > id.count())",
human="All FHIR elements must have a @value or children",
key="ele-1",
severity="error",
)

@field_validator(*("extension",), mode="after", check_fields=None)
@classmethod
def FHIR_ext_1_constraint_validator(cls, value):
@model_validator(mode="after")
def FHIR_ext_1_constraint_validator(self):
return fhir_validators.validate_element_constraint(
cls,
value,
self,
elements=("extension",),
expression="extension.exists() != value.exists()",
human="Must have either extensions or value[x], not both",
key="ext-1",
Expand Down
31 changes: 16 additions & 15 deletions fhircraft/fhir/resources/datatypes/R4/complex/backbone_element.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import List, Optional

from pydantic import Field, field_validator, model_validator
from pydantic import Field, model_validator

import fhircraft.fhir.resources.validators as fhir_validators
from fhircraft.fhir.resources.datatypes.primitives import *
Expand All @@ -13,35 +13,36 @@ class BackboneElement(Element):
"""
Base for elements defined inside a resource
"""

_fhir_release = "R4"

modifierExtension: Optional[List[Extension]] = Field(
description="Extensions that cannot be ignored even if unrecognized",
default=None,
)

@field_validator(
*("modifierExtension", "extension"), mode="after", check_fields=None
)
@classmethod
def FHIR_ele_1_constraint_validator(cls, value):
@model_validator(mode="after")
def FHIR_ele_1_constraint_validator(self):
return fhir_validators.validate_element_constraint(
cls,
value,
self,
elements=(
"modifierExtension",
"extension",
),
expression="hasValue() or (children().count() > id.count())",
human="All FHIR elements must have a @value or children",
key="ele-1",
severity="error",
)

@field_validator(
*("modifierExtension", "extension"), mode="after", check_fields=None
)
@classmethod
def FHIR_ext_1_constraint_validator(cls, value):
@model_validator(mode="after")
def FHIR_ext_1_constraint_validator(self):
return fhir_validators.validate_element_constraint(
cls,
value,
self,
elements=(
"modifierExtension",
"extension",
),
expression="extension.exists() != value.exists()",
human="Must have either extensions or value[x], not both",
key="ext-1",
Expand Down
27 changes: 14 additions & 13 deletions fhircraft/fhir/resources/datatypes/R4/complex/codeable_concept.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import List, Optional

from pydantic import Field, field_validator, model_validator
from pydantic import Field, model_validator

import fhircraft.fhir.resources.validators as fhir_validators
from fhircraft.fhir.resources.datatypes.primitives import *
Expand All @@ -26,26 +26,27 @@ class CodeableConcept(Element):
alias="_text",
)

@field_validator(
*("text", "coding", "extension", "extension"), mode="after", check_fields=None
)
@classmethod
def FHIR_ele_1_constraint_validator(cls, value):
@model_validator(mode="after")
def FHIR_ele_1_constraint_validator(self):
return fhir_validators.validate_element_constraint(
cls,
value,
self,
elements=(
"text",
"coding",
"extension",
"extension",
),
expression="hasValue() or (children().count() > id.count())",
human="All FHIR elements must have a @value or children",
key="ele-1",
severity="error",
)

@field_validator(*("extension",), mode="after", check_fields=None)
@classmethod
def FHIR_ext_1_constraint_validator(cls, value):
@model_validator(mode="after")
def FHIR_ext_1_constraint_validator(self):
return fhir_validators.validate_element_constraint(
cls,
value,
self,
elements=("extension",),
expression="extension.exists() != value.exists()",
human="Must have either extensions or value[x], not both",
key="ext-1",
Expand Down
38 changes: 16 additions & 22 deletions fhircraft/fhir/resources/datatypes/R4/complex/coding.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import Optional

from pydantic import Field, field_validator, model_validator
from pydantic import Field, model_validator

import fhircraft.fhir.resources.validators as fhir_validators
from fhircraft.fhir.resources.datatypes.primitives import *
Expand Down Expand Up @@ -58,35 +58,29 @@ class Coding(Element):
alias="_userSelected",
)

@field_validator(
*(
"userSelected",
"display",
"code",
"version",
"system",
"extension",
),
mode="after",
check_fields=None,
)
@classmethod
def FHIR_ele_1_constraint_validator(cls, value):
@model_validator(mode="after")
def FHIR_ele_1_constraint_validator(self):
return fhir_validators.validate_element_constraint(
cls,
value,
self,
elements=(
"userSelected",
"display",
"code",
"version",
"system",
"extension",
),
expression="hasValue() or (children().count() > id.count())",
human="All FHIR elements must have a @value or children",
key="ele-1",
severity="error",
)

@field_validator(*("extension",), mode="after", check_fields=None)
@classmethod
def FHIR_ext_1_constraint_validator(cls, value):
@model_validator(mode="after")
def FHIR_ext_1_constraint_validator(self):
return fhir_validators.validate_element_constraint(
cls,
value,
self,
elements=("extension",),
expression="extension.exists() != value.exists()",
human="Must have either extensions or value[x], not both",
key="ext-1",
Expand Down
27 changes: 14 additions & 13 deletions fhircraft/fhir/resources/datatypes/R4/complex/contact_detail.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import List, Optional

from pydantic import Field, field_validator, model_validator
from pydantic import Field, model_validator

import fhircraft.fhir.resources.validators as fhir_validators
from fhircraft.fhir.resources.datatypes.primitives import *
Expand All @@ -26,26 +26,27 @@ class ContactDetail(Element):
default=None,
)

@field_validator(
*("telecom", "name", "extension", "extension"), mode="after", check_fields=None
)
@classmethod
def FHIR_ele_1_constraint_validator(cls, value):
@model_validator(mode="after")
def FHIR_ele_1_constraint_validator(self):
return fhir_validators.validate_element_constraint(
cls,
value,
self,
elements=(
"telecom",
"name",
"extension",
"extension",
),
expression="hasValue() or (children().count() > id.count())",
human="All FHIR elements must have a @value or children",
key="ele-1",
severity="error",
)

@field_validator(*("extension",), mode="after", check_fields=None)
@classmethod
def FHIR_ext_1_constraint_validator(cls, value):
@model_validator(mode="after")
def FHIR_ext_1_constraint_validator(self):
return fhir_validators.validate_element_constraint(
cls,
value,
self,
elements=("extension",),
expression="extension.exists() != value.exists()",
human="Must have either extensions or value[x], not both",
key="ext-1",
Expand Down
Loading