care.emr.resources.user.spec module

is_valid_username(username)
class UserTypeOptions(*values)

Bases: str, Enum

doctor = 'doctor'
nurse = 'nurse'
staff = 'staff'
volunteer = 'volunteer'
administrator = 'administrator'
class UserTypeRoleMapping(*values)

Bases: Enum

doctor = Role(name='Doctor', description='Doctor at some facility')
nurse = Role(name='Nurse', description='Nurse at some facility')
staff = Role(name='Staff', description='Staff at some facility')
volunteer = Role(name='Volunteer', description='Volunteer at some facility')
administrator = Role(name='Administrator', description='Administrator at a given boundary')
class UserBaseSpec(*, meta: dict = {}, id: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None, first_name: str, last_name: str, phone_number: Annotated[str, MaxLen(max_length=14)], prefix: Annotated[str | None, MaxLen(max_length=10)] = None, suffix: Annotated[str | None, MaxLen(max_length=50)] = None)

Bases: EMRResource

id: Annotated[UUID, UuidVersion(uuid_version=4)] | None
first_name: str
last_name: str
phone_number: str
prefix: str | None
suffix: 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]] = {'first_name': FieldInfo(annotation=str, required=True), 'id': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'last_name': FieldInfo(annotation=str, required=True), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'phone_number': FieldInfo(annotation=str, required=True, metadata=[MaxLen(max_length=14)]), 'prefix': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, metadata=[MaxLen(max_length=10)]), 'suffix': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, metadata=[MaxLen(max_length=50)])}

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 UserUpdateSpec(*, meta: dict = {}, id: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None, first_name: str, last_name: str, phone_number: Annotated[str, MaxLen(max_length=14)], prefix: Annotated[str | None, MaxLen(max_length=10)] = None, suffix: Annotated[str | None, MaxLen(max_length=50)] = None, user_type: UserTypeOptions, gender: GenderChoices, geo_organization: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None)

Bases: UserBaseSpec

user_type: UserTypeOptions
gender: GenderChoices
phone_number: str
geo_organization: Annotated[UUID, UuidVersion(uuid_version=4)] | None
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]] = {'first_name': FieldInfo(annotation=str, required=True), 'gender': FieldInfo(annotation=GenderChoices, required=True), 'geo_organization': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'id': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'last_name': FieldInfo(annotation=str, required=True), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'phone_number': FieldInfo(annotation=str, required=True, metadata=[MaxLen(max_length=14)]), 'prefix': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, metadata=[MaxLen(max_length=10)]), 'suffix': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, metadata=[MaxLen(max_length=50)]), 'user_type': FieldInfo(annotation=UserTypeOptions, 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 UserCreateSpec(*, meta: dict = {}, id: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None, first_name: str, last_name: str, phone_number: Annotated[str, MaxLen(max_length=14)], prefix: Annotated[str | None, MaxLen(max_length=10)] = None, suffix: Annotated[str | None, MaxLen(max_length=50)] = None, user_type: UserTypeOptions, gender: GenderChoices, geo_organization: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None, password: str | None = None, username: str, email: str)

Bases: UserUpdateSpec

password: str | None
username: str
email: str
classmethod validate_username(username)
classmethod validate_phone_number(phone_number)
classmethod validate_user_email(email)
classmethod validate_password(password)
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]] = {'email': FieldInfo(annotation=str, required=True), 'first_name': FieldInfo(annotation=str, required=True), 'gender': FieldInfo(annotation=GenderChoices, required=True), 'geo_organization': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'id': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'last_name': FieldInfo(annotation=str, required=True), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'password': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'phone_number': FieldInfo(annotation=str, required=True, metadata=[MaxLen(max_length=14)]), 'prefix': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, metadata=[MaxLen(max_length=10)]), 'suffix': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, metadata=[MaxLen(max_length=50)]), 'user_type': FieldInfo(annotation=UserTypeOptions, required=True), 'username': 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 UserSpec(*, meta: dict = {}, id: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None, first_name: str, last_name: str, phone_number: Annotated[str, MaxLen(max_length=14)], prefix: Annotated[str | None, MaxLen(max_length=10)] = None, suffix: Annotated[str | None, MaxLen(max_length=50)] = None, last_login: str, profile_picture_url: str, user_type: str, gender: str, username: str, mfa_enabled: bool = False, deleted: bool = False)

Bases: UserBaseSpec

last_login: str
profile_picture_url: str
user_type: str
gender: str
username: str
mfa_enabled: bool
phone_number: str
deleted: bool
classmethod perform_extra_serialization(mapping, obj: User)
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]] = {'deleted': FieldInfo(annotation=bool, required=False, default=False), 'first_name': FieldInfo(annotation=str, required=True), 'gender': FieldInfo(annotation=str, required=True), 'id': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'last_login': FieldInfo(annotation=str, required=True), 'last_name': FieldInfo(annotation=str, required=True), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'mfa_enabled': FieldInfo(annotation=bool, required=False, default=False), 'phone_number': FieldInfo(annotation=str, required=True, metadata=[MaxLen(max_length=14)]), 'prefix': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, metadata=[MaxLen(max_length=10)]), 'profile_picture_url': FieldInfo(annotation=str, required=True), 'suffix': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, metadata=[MaxLen(max_length=50)]), 'user_type': FieldInfo(annotation=str, required=True), 'username': 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 UserRetrieveSpec(*, meta: dict = {}, id: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None, first_name: str, last_name: str, phone_number: Annotated[str, MaxLen(max_length=14)], prefix: Annotated[str | None, MaxLen(max_length=10)] = None, suffix: Annotated[str | None, MaxLen(max_length=50)] = None, last_login: str, profile_picture_url: str, user_type: str, gender: str, username: str, mfa_enabled: bool = False, deleted: bool = False, geo_organization: dict, created_by: UserSpec, email: str, flags: list[str] = [])

Bases: UserSpec

geo_organization: dict
created_by: UserSpec
email: str
flags: list[str]
classmethod perform_extra_serialization(mapping, obj: User)
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=True), 'deleted': FieldInfo(annotation=bool, required=False, default=False), 'email': FieldInfo(annotation=str, required=True), 'first_name': FieldInfo(annotation=str, required=True), 'flags': FieldInfo(annotation=list[str], required=False, default=[]), 'gender': FieldInfo(annotation=str, required=True), 'geo_organization': FieldInfo(annotation=dict, required=True), 'id': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'last_login': FieldInfo(annotation=str, required=True), 'last_name': FieldInfo(annotation=str, required=True), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'mfa_enabled': FieldInfo(annotation=bool, required=False, default=False), 'phone_number': FieldInfo(annotation=str, required=True, metadata=[MaxLen(max_length=14)]), 'prefix': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, metadata=[MaxLen(max_length=10)]), 'profile_picture_url': FieldInfo(annotation=str, required=True), 'suffix': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, metadata=[MaxLen(max_length=50)]), 'user_type': FieldInfo(annotation=str, required=True), 'username': 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 CurrentUserRetrieveSpec(*, meta: dict = {}, id: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None, first_name: str, last_name: str, phone_number: Annotated[str, MaxLen(max_length=14)], prefix: Annotated[str | None, MaxLen(max_length=10)] = None, suffix: Annotated[str | None, MaxLen(max_length=50)] = None, last_login: str, profile_picture_url: str, user_type: str, gender: str, username: str, mfa_enabled: bool = False, deleted: bool = False, geo_organization: dict, created_by: UserSpec, email: str, flags: list[str] = [], is_superuser: bool, qualification: str | None, doctor_experience_commenced_on: str | None, doctor_medical_council_registration: str | None, weekly_working_hours: str | None, alt_phone_number: str | None, date_of_birth: str | None, verified: bool, pf_endpoint: str | None, pf_p256dh: str | None, pf_auth: str | None, organizations: list[dict], facilities: list[dict], permissions: list[str])

Bases: UserRetrieveSpec

is_superuser: bool
qualification: str | None
doctor_experience_commenced_on: str | None
doctor_medical_council_registration: str | None
weekly_working_hours: str | None
alt_phone_number: str | None
date_of_birth: str | None
verified: bool
pf_endpoint: str | None
pf_p256dh: str | None
pf_auth: str | None
organizations: list[dict]
facilities: list[dict]
permissions: list[str]
classmethod perform_extra_serialization(mapping, obj: User) 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]] = {'alt_phone_number': FieldInfo(annotation=Union[str, NoneType], required=True), 'created_by': FieldInfo(annotation=UserSpec, required=True), 'date_of_birth': FieldInfo(annotation=Union[str, NoneType], required=True), 'deleted': FieldInfo(annotation=bool, required=False, default=False), 'doctor_experience_commenced_on': FieldInfo(annotation=Union[str, NoneType], required=True), 'doctor_medical_council_registration': FieldInfo(annotation=Union[str, NoneType], required=True), 'email': FieldInfo(annotation=str, required=True), 'facilities': FieldInfo(annotation=list[dict], required=True), 'first_name': FieldInfo(annotation=str, required=True), 'flags': FieldInfo(annotation=list[str], required=False, default=[]), 'gender': FieldInfo(annotation=str, required=True), 'geo_organization': FieldInfo(annotation=dict, required=True), 'id': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'is_superuser': FieldInfo(annotation=bool, required=True), 'last_login': FieldInfo(annotation=str, required=True), 'last_name': FieldInfo(annotation=str, required=True), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'mfa_enabled': FieldInfo(annotation=bool, required=False, default=False), 'organizations': FieldInfo(annotation=list[dict], required=True), 'permissions': FieldInfo(annotation=list[str], required=True), 'pf_auth': FieldInfo(annotation=Union[str, NoneType], required=True), 'pf_endpoint': FieldInfo(annotation=Union[str, NoneType], required=True), 'pf_p256dh': FieldInfo(annotation=Union[str, NoneType], required=True), 'phone_number': FieldInfo(annotation=str, required=True, metadata=[MaxLen(max_length=14)]), 'prefix': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, metadata=[MaxLen(max_length=10)]), 'profile_picture_url': FieldInfo(annotation=str, required=True), 'qualification': FieldInfo(annotation=Union[str, NoneType], required=True), 'suffix': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, metadata=[MaxLen(max_length=50)]), 'user_type': FieldInfo(annotation=str, required=True), 'username': FieldInfo(annotation=str, required=True), 'verified': FieldInfo(annotation=bool, required=True), 'weekly_working_hours': FieldInfo(annotation=Union[str, NoneType], 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 PublicUserReadSpec(*, meta: dict = {}, id: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None, first_name: str, last_name: str, phone_number: Annotated[str, MaxLen(max_length=14)], prefix: Annotated[str | None, MaxLen(max_length=10)] = None, suffix: Annotated[str | None, MaxLen(max_length=50)] = None, last_login: str, profile_picture_url: str, user_type: str, gender: str, username: str)

Bases: UserBaseSpec

last_login: str
profile_picture_url: str
user_type: str
gender: str
username: str
classmethod perform_extra_serialization(mapping, obj: User)
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]] = {'first_name': FieldInfo(annotation=str, required=True), 'gender': FieldInfo(annotation=str, required=True), 'id': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'last_login': FieldInfo(annotation=str, required=True), 'last_name': FieldInfo(annotation=str, required=True), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'phone_number': FieldInfo(annotation=str, required=True, metadata=[MaxLen(max_length=14)]), 'prefix': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, metadata=[MaxLen(max_length=10)]), 'profile_picture_url': FieldInfo(annotation=str, required=True), 'suffix': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, metadata=[MaxLen(max_length=50)]), 'user_type': FieldInfo(annotation=str, required=True), 'username': 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.