care.emr.resources.questionnaire.spec module¶
- class EnableOperator(*values)¶
-
- exists = 'exists'¶
- equals = 'equals'¶
- not_equals = 'not_equals'¶
- greater = 'greater'¶
- less = 'less'¶
- greater_or_equals = 'greater_or_equals'¶
- less_or_equals = 'less_or_equals'¶
- class QuestionType(*values)¶
-
- group = 'group'¶
- boolean = 'boolean'¶
- decimal = 'decimal'¶
- integer = 'integer'¶
- string = 'string'¶
- text = 'text'¶
- display = 'display'¶
- date = 'date'¶
- datetime = 'dateTime'¶
- time = 'time'¶
- choice = 'choice'¶
- url = 'url'¶
- quantity = 'quantity'¶
- structured = 'structured'¶
- class QuestionnaireBaseSpec(*, meta: dict = {})¶
Bases:
EMRResource
- 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].
- class Performer(*, meta: dict = {}, performer_type: str, performer_id: str | None, text: str | None)¶
Bases:
QuestionnaireBaseSpec
- 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]] = {'meta': FieldInfo(annotation=dict, required=False, default={}), 'performer_id': FieldInfo(annotation=Union[str, NoneType], required=True, description='ID of the reference'), 'performer_type': FieldInfo(annotation=str, required=True, description='Type of performer from FHIR specification'), 'text': FieldInfo(annotation=Union[str, NoneType], required=True, description='Text description when no hard reference exists')}¶
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 EnableWhen(*, meta: dict = {}, question: str, operator: EnableOperator, answer: Any)¶
Bases:
QuestionnaireBaseSpec
- operator: EnableOperator¶
- 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]] = {'answer': FieldInfo(annotation=Any, required=True, description='Value for operator, based on question type'), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'operator': FieldInfo(annotation=EnableOperator, required=True), 'question': FieldInfo(annotation=str, required=True, description='Link ID of the question to check against')}¶
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 AnswerOption(*, meta: dict = {}, value: Any, initial_selected: bool = False)¶
Bases:
QuestionnaireBaseSpec
- 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]] = {'initial_selected': FieldInfo(annotation=bool, required=False, default=False, description='Whether option is initially selected'), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'value': FieldInfo(annotation=Any, required=True, description='Value based on question type')}¶
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 Question(*, meta: dict = {}, link_id: str, id: ~typing.Annotated[~uuid.UUID, ~pydantic.types.UuidVersion(uuid_version=4)] | ~typing.Annotated[~uuid.UUID, ~pydantic.types.UuidVersion(uuid_version=5)] = None, code: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding | None = None, collect_time: bool = False, collect_performer: bool = False, text: str, description: str | None = None, type: ~care.emr.resources.questionnaire.spec.QuestionType, structured_type: str | None = None, enable_when: list[~care.emr.resources.questionnaire.spec.EnableWhen] | None = None, enable_behavior: ~care.emr.resources.questionnaire.spec.EnableBehavior | None = None, disabled_display: ~care.emr.resources.questionnaire.spec.DisabledDisplay | None = None, collect_body_site: bool | None = None, collect_method: bool | None = None, required: bool | None = None, repeats: bool | None = None, read_only: bool | None = None, max_length: int | None = None, answerConstraint: ~care.emr.resources.questionnaire.spec.AnswerConstraint | None = None, answer_option: list[~care.emr.resources.questionnaire.spec.AnswerOption] | None = None, answer_value_set: str | None = None, is_observation: bool | None = None, unit: ~care.emr.utils.valueset_coding_type.ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding | None = None, questions: list[~care.emr.resources.questionnaire.spec.Question] = [], formula: str | None = None, styling_metadata: dict = {}, is_component: bool = False)¶
Bases:
QuestionnaireBaseSpec
- model_config: ClassVar[ConfigDict] = {'populate_by_name': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- code: BoundCoding | None¶
- type: QuestionType¶
- enable_when: list[EnableWhen] | None¶
- enable_behavior: EnableBehavior | None¶
- disabled_display: DisabledDisplay | None¶
- answer_constraint: AnswerConstraint | None¶
- answer_option: list[AnswerOption] | None¶
- unit: BoundCoding | None¶
- classmethod validate_value_set(slug)¶
- get_all_ids()¶
- validate_choice_and_group_questions()¶
- model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}¶
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_fields: ClassVar[Dict[str, FieldInfo]] = {'answer_constraint': FieldInfo(annotation=Union[AnswerConstraint, NoneType], required=False, default=None, alias='answerConstraint', alias_priority=2), 'answer_option': FieldInfo(annotation=Union[list[AnswerOption], NoneType], required=False, default=None), 'answer_value_set': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'code': FieldInfo(annotation=Union[ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, NoneType], required=False, default=None), 'collect_body_site': FieldInfo(annotation=Union[bool, NoneType], required=False, default=None), 'collect_method': FieldInfo(annotation=Union[bool, NoneType], required=False, default=None), 'collect_performer': FieldInfo(annotation=bool, required=False, default=False, description='Whether to collect performer'), 'collect_time': FieldInfo(annotation=bool, required=False, default=False, description='Whether to collect timestamp'), 'description': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, description='Question description'), 'disabled_display': FieldInfo(annotation=Union[DisabledDisplay, NoneType], required=False, default=None), 'enable_behavior': FieldInfo(annotation=Union[EnableBehavior, NoneType], required=False, default=None), 'enable_when': FieldInfo(annotation=Union[list[EnableWhen], NoneType], required=False, default=None), 'formula': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'id': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], Annotated[UUID, UuidVersion]], required=False, default_factory=uuid4, description='Unique machine provided UUID'), 'is_component': FieldInfo(annotation=bool, required=False, default=False), 'is_observation': FieldInfo(annotation=Union[bool, NoneType], required=False, default=None), 'link_id': FieldInfo(annotation=str, required=True, description='Unique human readable ID for linking'), 'max_length': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'questions': FieldInfo(annotation=list[Question], required=False, default=[]), 'read_only': FieldInfo(annotation=Union[bool, NoneType], required=False, default=None), 'repeats': FieldInfo(annotation=Union[bool, NoneType], required=False, default=None), 'required': FieldInfo(annotation=Union[bool, NoneType], required=False, default=None), 'structured_type': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'styling_metadata': FieldInfo(annotation=dict, required=False, default={}), 'text': FieldInfo(annotation=str, required=True, description='Question text'), 'type': FieldInfo(annotation=QuestionType, required=True), 'unit': FieldInfo(annotation=Union[ValueSetBoundCoding.__class_getitem__.<locals>.BoundCoding, 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 QuestionnaireWriteSpec(*, meta: dict = {}, version: str = '1.0', slug: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=5), MaxLen(max_length=25)]), AfterValidator(func=slug_validator)] | None = None, title: str, description: str | None = None, type: str = 'custom', status: QuestionnaireStatus, subject_type: SubjectType, styling_metadata: dict = {}, questions: list[Question])¶
Bases:
QuestionnaireBaseSpec
- slug: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=5), MaxLen(max_length=25)]), AfterValidator(func=slug_validator)] | None¶
- status: QuestionnaireStatus¶
- subject_type: SubjectType¶
- get_all_ids()¶
- validate_unique_id()¶
- 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]] = {'description': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'questions': FieldInfo(annotation=list[Question], required=True), 'slug': FieldInfo(annotation=Union[Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=5), MaxLen(max_length=25)]), AfterValidator], NoneType], required=False, default=None), 'status': FieldInfo(annotation=QuestionnaireStatus, required=True), 'styling_metadata': FieldInfo(annotation=dict, required=False, default={}, description='Styling requirements without validation'), 'subject_type': FieldInfo(annotation=SubjectType, required=True), 'title': FieldInfo(annotation=str, required=True), 'type': FieldInfo(annotation=str, required=False, default='custom'), 'version': FieldInfo(annotation=str, required=False, default='1.0', description='Version of the questionnaire', frozen=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 QuestionnaireSpec(*, meta: dict = {}, version: str = '1.0', slug: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=5), MaxLen(max_length=25)]), AfterValidator(func=slug_validator)] | None = None, title: str, description: str | None = None, type: str = 'custom', status: QuestionnaireStatus, subject_type: SubjectType, styling_metadata: dict = {}, questions: list[Question], organizations: Annotated[list[Annotated[UUID, UuidVersion(uuid_version=4)]], MinLen(min_length=1)], tags: list[Annotated[UUID, UuidVersion(uuid_version=4)]] = [])¶
Bases:
QuestionnaireWriteSpec
- classmethod validate_tags(tags)¶
- 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]] = {'description': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'organizations': FieldInfo(annotation=list[Annotated[UUID, UuidVersion]], required=True, metadata=[MinLen(min_length=1)]), 'questions': FieldInfo(annotation=list[Question], required=True), 'slug': FieldInfo(annotation=Union[Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=5), MaxLen(max_length=25)]), AfterValidator], NoneType], required=False, default=None), 'status': FieldInfo(annotation=QuestionnaireStatus, required=True), 'styling_metadata': FieldInfo(annotation=dict, required=False, default={}, description='Styling requirements without validation'), 'subject_type': FieldInfo(annotation=SubjectType, required=True), 'tags': FieldInfo(annotation=list[Annotated[UUID, UuidVersion]], required=False, default=[]), 'title': FieldInfo(annotation=str, required=True), 'type': FieldInfo(annotation=str, required=False, default='custom'), 'version': FieldInfo(annotation=str, required=False, default='1.0', description='Version of the questionnaire', frozen=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 QuestionnaireUpdateSpec(*, meta: dict = {}, version: str = '1.0', slug: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=5), MaxLen(max_length=25)]), AfterValidator(func=slug_validator)] | None = None, title: str, description: str | None = None, type: str = 'custom', status: QuestionnaireStatus, subject_type: SubjectType, styling_metadata: dict = {}, questions: list[Question])¶
Bases:
QuestionnaireWriteSpec
- 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]] = {'description': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'questions': FieldInfo(annotation=list[Question], required=True), 'slug': FieldInfo(annotation=Union[Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=5), MaxLen(max_length=25)]), AfterValidator], NoneType], required=False, default=None), 'status': FieldInfo(annotation=QuestionnaireStatus, required=True), 'styling_metadata': FieldInfo(annotation=dict, required=False, default={}, description='Styling requirements without validation'), 'subject_type': FieldInfo(annotation=SubjectType, required=True), 'title': FieldInfo(annotation=str, required=True), 'type': FieldInfo(annotation=str, required=False, default='custom'), 'version': FieldInfo(annotation=str, required=False, default='1.0', description='Version of the questionnaire', frozen=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 QuestionnaireReadSpec(*, meta: dict = {}, id: str, slug: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=5), MaxLen(max_length=25)]), AfterValidator(func=slug_validator)] | None = None, version: str, title: str, description: str | None = None, status: QuestionnaireStatus, subject_type: SubjectType, styling_metadata: dict, questions: list, created_by: UserSpec = {}, updated_by: UserSpec = {}, tags: list[dict] = [])¶
Bases:
QuestionnaireBaseSpec
- slug: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=5), MaxLen(max_length=25)]), AfterValidator(func=slug_validator)] | None¶
- status: QuestionnaireStatus¶
- subject_type: SubjectType¶
- 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]] = {'created_by': FieldInfo(annotation=UserSpec, required=False, default={}), 'description': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'id': FieldInfo(annotation=str, required=True), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'questions': FieldInfo(annotation=list, required=True), 'slug': FieldInfo(annotation=Union[Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=5), MaxLen(max_length=25)]), AfterValidator], NoneType], required=False, default=None), 'status': FieldInfo(annotation=QuestionnaireStatus, required=True), 'styling_metadata': FieldInfo(annotation=dict, required=True), 'subject_type': FieldInfo(annotation=SubjectType, required=True), 'tags': FieldInfo(annotation=list[dict], required=False, default=[]), 'title': FieldInfo(annotation=str, required=True), 'updated_by': FieldInfo(annotation=UserSpec, required=False, default={}), 'version': 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 QuestionnaireTagSpec(*, meta: dict = {}, id: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None, name: str, slug: Annotated[str, MinLen(min_length=5), MaxLen(max_length=25), AfterValidator(func=slug_validator)])¶
Bases:
EMRResource
- slug: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=5), MaxLen(max_length=25)]), AfterValidator(func=slug_validator)]¶
- 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]] = {'id': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'name': FieldInfo(annotation=str, required=True), 'slug': FieldInfo(annotation=str, required=True, metadata=[MinLen(min_length=5), MaxLen(max_length=25), AfterValidator(func=<function slug_validator>)])}¶
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.