care.emr.resources.observation_definition.spec module

class ObservationCategoryChoices(*values)

Bases: str, Enum

social_history = 'social_history'
vital_signs = 'vital_signs'
imaging = 'imaging'
laboratory = 'laboratory'
procedure = 'procedure'
survey = 'survey'
exam = 'exam'
therapy = 'therapy'
activity = 'activity'
class ObservationStatusChoices(*values)

Bases: str, Enum

draft = 'draft'
active = 'active'
retired = 'retired'
unknown = 'unknown'
validate_question_type(question_type)
class InterpretationSpec(*, display: str, icon: str | None = '', color: str | None = '')

Bases: BaseModel

display: str
icon: str | None
color: str | None
model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[Dict[str, FieldInfo]] = {'color': FieldInfo(annotation=Union[str, NoneType], required=False, default=''), 'display': FieldInfo(annotation=str, required=True), 'icon': FieldInfo(annotation=Union[str, NoneType], required=False, default='')}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.

This replaces Model.__fields__ from Pydantic V1.

class NumericRangeSpec(*, interpretation: InterpretationSpec, min: float | None = None, max: float | None = None)

Bases: BaseModel

interpretation: InterpretationSpec
min: float | None
max: float | None
validate_range()
model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[Dict[str, FieldInfo]] = {'interpretation': FieldInfo(annotation=InterpretationSpec, required=True), 'max': FieldInfo(annotation=Union[float, NoneType], required=False, default=None), 'min': FieldInfo(annotation=Union[float, NoneType], required=False, default=None)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.

This replaces Model.__fields__ from Pydantic V1.

class ValueSetInterpretationSpec(*, interpretation: InterpretationSpec, valuset: str)

Bases: BaseModel

interpretation: InterpretationSpec
valuset: str
model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[Dict[str, FieldInfo]] = {'interpretation': FieldInfo(annotation=InterpretationSpec, required=True), 'valuset': FieldInfo(annotation=str, required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.

This replaces Model.__fields__ from Pydantic V1.

class QualifiedRangeSpec(*, conditions: list[EvaluatorConditionSpec] = [], ranges: list[NumericRangeSpec] = [], normal_coded_value_set: str | None = '', critical_coded_value_set: str | None = '', abnormal_coded_value_set: str | None = '', valueset_interpretation: list[ValueSetInterpretationSpec] = [])

Bases: BaseModel

conditions: list[EvaluatorConditionSpec]
ranges: list[NumericRangeSpec]
normal_coded_value_set: str | None
critical_coded_value_set: str | None
abnormal_coded_value_set: str | None
valueset_interpretation: list[ValueSetInterpretationSpec]
validate_categorical_or_numeric()
model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[Dict[str, FieldInfo]] = {'abnormal_coded_value_set': FieldInfo(annotation=Union[str, NoneType], required=False, default=''), 'conditions': FieldInfo(annotation=list[EvaluatorConditionSpec], required=False, default=[]), 'critical_coded_value_set': FieldInfo(annotation=Union[str, NoneType], required=False, default=''), 'normal_coded_value_set': FieldInfo(annotation=Union[str, NoneType], required=False, default=''), 'ranges': FieldInfo(annotation=list[NumericRangeSpec], required=False, default=[]), 'valueset_interpretation': FieldInfo(annotation=list[ValueSetInterpretationSpec], required=False, default=[])}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.

This replaces Model.__fields__ from Pydantic V1.

class ObservationDefinitionComponentSpec(*, code: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, permitted_data_type: ~care.emr.resources.questionnaire.spec.QuestionType, permitted_unit: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding | None = None, qualified_ranges: list[~care.emr.resources.observation_definition.spec.QualifiedRangeSpec])

Bases: BaseModel

code: BoundCoding
permitted_data_type: QuestionType
permitted_unit: BoundCoding | None
qualified_ranges: list[QualifiedRangeSpec]
classmethod validate_data_type(permitted_data_type)
model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[Dict[str, FieldInfo]] = {'code': FieldInfo(annotation=ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, required=True), 'permitted_data_type': FieldInfo(annotation=QuestionType, required=True), 'permitted_unit': FieldInfo(annotation=Union[ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, NoneType], required=False, default=None), 'qualified_ranges': FieldInfo(annotation=list[QualifiedRangeSpec], required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.

This replaces Model.__fields__ from Pydantic V1.

class BaseObservationDefinitionSpec(*, meta: dict = {}, id: ~typing.Annotated[~uuid.UUID, ~pydantic.types.UuidVersion(uuid_version=4)] | None = None, title: str, status: ~care.emr.resources.observation_definition.spec.ObservationStatusChoices, description: str, category: ~care.emr.resources.observation_definition.spec.ObservationCategoryChoices, code: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, permitted_data_type: ~care.emr.resources.questionnaire.spec.QuestionType, component: list[~care.emr.resources.observation_definition.spec.ObservationDefinitionComponentSpec] = [], body_site: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding | None = None, method: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding | None = None, permitted_unit: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding | None = None, derived_from_uri: str | None = None, qualified_ranges: list[~care.emr.resources.observation_definition.spec.QualifiedRangeSpec])

Bases: EMRResource

id: Annotated[UUID, UuidVersion(uuid_version=4)] | None
title: str
status: ObservationStatusChoices
description: str
category: ObservationCategoryChoices
code: BoundCoding
permitted_data_type: QuestionType
component: list[ObservationDefinitionComponentSpec]
body_site: BoundCoding | None
method: BoundCoding | None
permitted_unit: BoundCoding | None
derived_from_uri: str | None
qualified_ranges: list[QualifiedRangeSpec]
classmethod validate_data_type(permitted_data_type)
validate_qualified_ranges_consistency()
model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[Dict[str, FieldInfo]] = {'body_site': FieldInfo(annotation=Union[ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, NoneType], required=False, default=None), 'category': FieldInfo(annotation=ObservationCategoryChoices, required=True), 'code': FieldInfo(annotation=ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, required=True), 'component': FieldInfo(annotation=list[ObservationDefinitionComponentSpec], required=False, default=[]), 'derived_from_uri': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'description': FieldInfo(annotation=str, required=True), 'id': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'method': FieldInfo(annotation=Union[ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, NoneType], required=False, default=None), 'permitted_data_type': FieldInfo(annotation=QuestionType, required=True), 'permitted_unit': FieldInfo(annotation=Union[ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, NoneType], required=False, default=None), 'qualified_ranges': FieldInfo(annotation=list[QualifiedRangeSpec], required=True), 'status': FieldInfo(annotation=ObservationStatusChoices, required=True), 'title': FieldInfo(annotation=str, required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.

This replaces Model.__fields__ from Pydantic V1.

class ObservationDefinitionCreateSpec(*, meta: dict = {}, id: ~typing.Annotated[~uuid.UUID, ~pydantic.types.UuidVersion(uuid_version=4)] | None = None, title: str, status: ~care.emr.resources.observation_definition.spec.ObservationStatusChoices, description: str, category: ~care.emr.resources.observation_definition.spec.ObservationCategoryChoices, code: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, permitted_data_type: ~care.emr.resources.questionnaire.spec.QuestionType, component: list[~care.emr.resources.observation_definition.spec.ObservationDefinitionComponentSpec] = [], body_site: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding | None = None, method: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding | None = None, permitted_unit: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding | None = None, derived_from_uri: str | None = None, qualified_ranges: list[~care.emr.resources.observation_definition.spec.QualifiedRangeSpec], facility: ~typing.Annotated[~uuid.UUID, ~pydantic.types.UuidVersion(uuid_version=4)] | None = None, slug_value: ~typing.Annotated[str, ~annotated_types.MinLen(min_length=5), ~annotated_types.MaxLen(max_length=25), ~pydantic.functional_validators.AfterValidator(func=~care.emr.utils.slug_type.slug_validator)])

Bases: BaseObservationDefinitionSpec

facility: Annotated[UUID, UuidVersion(uuid_version=4)] | None
slug_value: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=5), MaxLen(max_length=25)]), AfterValidator(func=slug_validator)]
classmethod validate_facility_exists(facility)
perform_extra_deserialization(is_update, obj)
model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[Dict[str, FieldInfo]] = {'body_site': FieldInfo(annotation=Union[ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, NoneType], required=False, default=None), 'category': FieldInfo(annotation=ObservationCategoryChoices, required=True), 'code': FieldInfo(annotation=ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, required=True), 'component': FieldInfo(annotation=list[ObservationDefinitionComponentSpec], required=False, default=[]), 'derived_from_uri': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'description': FieldInfo(annotation=str, required=True), 'facility': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'id': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'method': FieldInfo(annotation=Union[ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, NoneType], required=False, default=None), 'permitted_data_type': FieldInfo(annotation=QuestionType, required=True), 'permitted_unit': FieldInfo(annotation=Union[ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, NoneType], required=False, default=None), 'qualified_ranges': FieldInfo(annotation=list[QualifiedRangeSpec], required=True), 'slug_value': FieldInfo(annotation=str, required=True, metadata=[MinLen(min_length=5), MaxLen(max_length=25), AfterValidator(func=<function slug_validator>)]), 'status': FieldInfo(annotation=ObservationStatusChoices, required=True), 'title': FieldInfo(annotation=str, required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.

This replaces Model.__fields__ from Pydantic V1.

class ObservationDefinitionUpdateSpec(*, meta: dict = {}, id: ~typing.Annotated[~uuid.UUID, ~pydantic.types.UuidVersion(uuid_version=4)] | None = None, title: str, status: ~care.emr.resources.observation_definition.spec.ObservationStatusChoices, description: str, category: ~care.emr.resources.observation_definition.spec.ObservationCategoryChoices, code: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, permitted_data_type: ~care.emr.resources.questionnaire.spec.QuestionType, component: list[~care.emr.resources.observation_definition.spec.ObservationDefinitionComponentSpec] = [], body_site: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding | None = None, method: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding | None = None, permitted_unit: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding | None = None, derived_from_uri: str | None = None, qualified_ranges: list[~care.emr.resources.observation_definition.spec.QualifiedRangeSpec], slug_value: ~typing.Annotated[str, ~annotated_types.MinLen(min_length=5), ~annotated_types.MaxLen(max_length=25), ~pydantic.functional_validators.AfterValidator(func=~care.emr.utils.slug_type.slug_validator)])

Bases: BaseObservationDefinitionSpec

slug_value: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=5), MaxLen(max_length=25)]), AfterValidator(func=slug_validator)]
perform_extra_deserialization(is_update, obj)
model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[Dict[str, FieldInfo]] = {'body_site': FieldInfo(annotation=Union[ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, NoneType], required=False, default=None), 'category': FieldInfo(annotation=ObservationCategoryChoices, required=True), 'code': FieldInfo(annotation=ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, required=True), 'component': FieldInfo(annotation=list[ObservationDefinitionComponentSpec], required=False, default=[]), 'derived_from_uri': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'description': FieldInfo(annotation=str, required=True), 'id': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'method': FieldInfo(annotation=Union[ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, NoneType], required=False, default=None), 'permitted_data_type': FieldInfo(annotation=QuestionType, required=True), 'permitted_unit': FieldInfo(annotation=Union[ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, NoneType], required=False, default=None), 'qualified_ranges': FieldInfo(annotation=list[QualifiedRangeSpec], required=True), 'slug_value': FieldInfo(annotation=str, required=True, metadata=[MinLen(min_length=5), MaxLen(max_length=25), AfterValidator(func=<function slug_validator>)]), 'status': FieldInfo(annotation=ObservationStatusChoices, required=True), 'title': FieldInfo(annotation=str, required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.

This replaces Model.__fields__ from Pydantic V1.

class ObservationDefinitionReadSpec(*, meta: dict = {}, id: ~typing.Annotated[~uuid.UUID, ~pydantic.types.UuidVersion(uuid_version=4)] | None = None, title: str, status: ~care.emr.resources.observation_definition.spec.ObservationStatusChoices, description: str, category: ~care.emr.resources.observation_definition.spec.ObservationCategoryChoices, code: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, permitted_data_type: ~care.emr.resources.questionnaire.spec.QuestionType, component: list[~care.emr.resources.observation_definition.spec.ObservationDefinitionComponentSpec] = [], body_site: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding | None = None, method: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding | None = None, permitted_unit: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding | None = None, derived_from_uri: str | None = None, qualified_ranges: list[~care.emr.resources.observation_definition.spec.QualifiedRangeSpec], version: int | None = None, facility: dict | None = None, slug_config: dict, slug: str)

Bases: BaseObservationDefinitionSpec

version: int | None
facility: dict | None
slug_config: dict
slug: str
classmethod perform_extra_serialization(mapping, obj)
model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[Dict[str, FieldInfo]] = {'body_site': FieldInfo(annotation=Union[ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, NoneType], required=False, default=None), 'category': FieldInfo(annotation=ObservationCategoryChoices, required=True), 'code': FieldInfo(annotation=ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, required=True), 'component': FieldInfo(annotation=list[ObservationDefinitionComponentSpec], required=False, default=[]), 'derived_from_uri': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'description': FieldInfo(annotation=str, required=True), 'facility': FieldInfo(annotation=Union[dict, NoneType], required=False, default=None), 'id': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'method': FieldInfo(annotation=Union[ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, NoneType], required=False, default=None), 'permitted_data_type': FieldInfo(annotation=QuestionType, required=True), 'permitted_unit': FieldInfo(annotation=Union[ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, NoneType], required=False, default=None), 'qualified_ranges': FieldInfo(annotation=list[QualifiedRangeSpec], required=True), 'slug': FieldInfo(annotation=str, required=True), 'slug_config': FieldInfo(annotation=dict, required=True), 'status': FieldInfo(annotation=ObservationStatusChoices, required=True), 'title': FieldInfo(annotation=str, required=True), 'version': FieldInfo(annotation=Union[int, NoneType], required=False, default=None)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.

This replaces Model.__fields__ from Pydantic V1.