care.emr.resources.patient.spec module

class BloodGroupChoices(*values)

Bases: str, Enum

A_negative = 'A_negative'
A_positive = 'A_positive'
B_negative = 'B_negative'
B_positive = 'B_positive'
AB_negative = 'AB_negative'
AB_positive = 'AB_positive'
O_negative = 'O_negative'
O_positive = 'O_positive'
unknown = 'unknown'
class GenderChoices(*values)

Bases: str, Enum

male = 'male'
female = 'female'
non_binary = 'non_binary'
transgender = 'transgender'
class PatientBaseSpec(*, meta: dict = {}, id: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None, name: Annotated[str, MaxLen(max_length=200)], gender: GenderChoices, phone_number: Annotated[str | PhoneNumber(country_code=None, national_number=None, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=0, preferred_domestic_carrier_code=None), MaxLen(max_length=14), PhoneNumberValidator(default_region=None, number_format=E164, supported_regions=[])], emergency_phone_number: Annotated[Annotated[str | PhoneNumber(country_code=None, national_number=None, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=0, preferred_domestic_carrier_code=None), PhoneNumberValidator(default_region=None, number_format=E164, supported_regions=[])] | None, MaxLen(max_length=14)] = None, address: str | None = None, permanent_address: str | None = None, pincode: int | None = None, deceased_datetime: Annotated[datetime, AfterValidator(func=validate_timezone_aware)] | None = None, blood_group: BloodGroupChoices | None = None)

Bases: EMRResource

id: Annotated[UUID, UuidVersion(uuid_version=4)] | None
name: str
gender: GenderChoices
phone_number: Annotated[str | PhoneNumber(country_code=None, national_number=None, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=0, preferred_domestic_carrier_code=None), PhoneNumberValidator(default_region=None, number_format=E164, supported_regions=[])]
emergency_phone_number: Annotated[str | PhoneNumber(country_code=None, national_number=None, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=0, preferred_domestic_carrier_code=None), PhoneNumberValidator(default_region=None, number_format=E164, supported_regions=[])] | None
address: str | None
permanent_address: str | None
pincode: int | None
deceased_datetime: Annotated[datetime, AfterValidator(func=validate_timezone_aware)] | None
blood_group: BloodGroupChoices | None
classmethod validate_deceased_datetime(deceased_datetime)
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]] = {'address': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'blood_group': FieldInfo(annotation=Union[BloodGroupChoices, NoneType], required=False, default=None), 'deceased_datetime': FieldInfo(annotation=Union[Annotated[datetime, AfterValidator], NoneType], required=False, default=None), 'emergency_phone_number': FieldInfo(annotation=Union[Annotated[Union[str, PhoneNumber], PhoneNumberValidator], NoneType], required=False, default=None, metadata=[MaxLen(max_length=14)]), 'gender': FieldInfo(annotation=GenderChoices, required=True), '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, metadata=[MaxLen(max_length=200)]), 'permanent_address': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'phone_number': FieldInfo(annotation=Union[str, PhoneNumber], required=True, metadata=[MaxLen(max_length=14), PhoneNumberValidator(default_region=None, number_format='E164', supported_regions=[])]), 'pincode': 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.

validate_identifier_config(config, value, obj=None)
class PatientIdentifierConfigRequest(*, config: Annotated[UUID, UuidVersion(uuid_version=4)], value: str)

Bases: BaseModel

config: Annotated[UUID, UuidVersion(uuid_version=4)]
value: 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]] = {'config': FieldInfo(annotation=UUID, required=True, metadata=[UuidVersion(uuid_version=4)]), 'value': 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 PatientCreateSpec(*, meta: dict = {}, id: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None, name: Annotated[str, MaxLen(max_length=200)], gender: GenderChoices, phone_number: Annotated[str | PhoneNumber(country_code=None, national_number=None, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=0, preferred_domestic_carrier_code=None), MaxLen(max_length=14), PhoneNumberValidator(default_region=None, number_format=E164, supported_regions=[])], emergency_phone_number: Annotated[Annotated[str | PhoneNumber(country_code=None, national_number=None, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=0, preferred_domestic_carrier_code=None), PhoneNumberValidator(default_region=None, number_format=E164, supported_regions=[])] | None, MaxLen(max_length=14)] = None, address: str | None = None, permanent_address: str | None = None, pincode: int | None = None, deceased_datetime: Annotated[datetime, AfterValidator(func=validate_timezone_aware)] | None = None, blood_group: BloodGroupChoices | None = None, geo_organization: Annotated[UUID, UuidVersion(uuid_version=4)], date_of_birth: date | None = None, age: int | None = None, identifiers: list[PatientIdentifierConfigRequest] = [], tags: list[Annotated[UUID, UuidVersion(uuid_version=4)]] = [])

Bases: PatientBaseSpec

geo_organization: Annotated[UUID, UuidVersion(uuid_version=4)]
date_of_birth: date | None
age: int | None
identifiers: list[PatientIdentifierConfigRequest]
tags: list[Annotated[UUID, UuidVersion(uuid_version=4)]]
classmethod validate_geo_organization(geo_organization)
validate_identifiers()
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]] = {'address': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'age': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'blood_group': FieldInfo(annotation=Union[BloodGroupChoices, NoneType], required=False, default=None), 'date_of_birth': FieldInfo(annotation=Union[date, NoneType], required=False, default=None), 'deceased_datetime': FieldInfo(annotation=Union[Annotated[datetime, AfterValidator], NoneType], required=False, default=None), 'emergency_phone_number': FieldInfo(annotation=Union[Annotated[Union[str, PhoneNumber], PhoneNumberValidator], NoneType], required=False, default=None, metadata=[MaxLen(max_length=14)]), 'gender': FieldInfo(annotation=GenderChoices, required=True), 'geo_organization': FieldInfo(annotation=UUID, required=True, metadata=[UuidVersion(uuid_version=4)]), 'id': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'identifiers': FieldInfo(annotation=list[PatientIdentifierConfigRequest], required=False, default=[]), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'name': FieldInfo(annotation=str, required=True, metadata=[MaxLen(max_length=200)]), 'permanent_address': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'phone_number': FieldInfo(annotation=Union[str, PhoneNumber], required=True, metadata=[MaxLen(max_length=14), PhoneNumberValidator(default_region=None, number_format='E164', supported_regions=[])]), 'pincode': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'tags': FieldInfo(annotation=list[Annotated[UUID, UuidVersion]], 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 PatientUpdateSpec(*, meta: dict = {}, id: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None, name: Annotated[str | None, MaxLen(max_length=200)] = None, gender: GenderChoices | None = None, phone_number: Annotated[Annotated[str | PhoneNumber(country_code=None, national_number=None, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=0, preferred_domestic_carrier_code=None), PhoneNumberValidator(default_region=None, number_format=E164, supported_regions=[])] | None, MaxLen(max_length=14)] = None, emergency_phone_number: Annotated[Annotated[str | PhoneNumber(country_code=None, national_number=None, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=0, preferred_domestic_carrier_code=None), PhoneNumberValidator(default_region=None, number_format=E164, supported_regions=[])] | None, MaxLen(max_length=14)] = None, address: str | None = None, permanent_address: str | None = None, pincode: int | None = None, deceased_datetime: Annotated[datetime, AfterValidator(func=validate_timezone_aware)] | None = None, blood_group: BloodGroupChoices | None = None, date_of_birth: date | None = None, age: int | None = None, geo_organization: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None, identifiers: list[PatientIdentifierConfigRequest] = [])

Bases: PatientBaseSpec

name: str | None
gender: GenderChoices | None
phone_number: Annotated[str | PhoneNumber(country_code=None, national_number=None, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=0, preferred_domestic_carrier_code=None), PhoneNumberValidator(default_region=None, number_format=E164, supported_regions=[])] | None
emergency_phone_number: Annotated[str | PhoneNumber(country_code=None, national_number=None, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=0, preferred_domestic_carrier_code=None), PhoneNumberValidator(default_region=None, number_format=E164, supported_regions=[])] | None
address: str | None
permanent_address: str | None
pincode: int | None
blood_group: BloodGroupChoices | None
date_of_birth: date | None
age: int | None
geo_organization: Annotated[UUID, UuidVersion(uuid_version=4)] | None
identifiers: list[PatientIdentifierConfigRequest]
classmethod validate_geo_organization(geo_organization)
perform_extra_deserialization(is_update, obj)
classmethod validate_identifiers(identifiers, info)
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]] = {'address': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'age': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'blood_group': FieldInfo(annotation=Union[BloodGroupChoices, NoneType], required=False, default=None), 'date_of_birth': FieldInfo(annotation=Union[date, NoneType], required=False, default=None), 'deceased_datetime': FieldInfo(annotation=Union[Annotated[datetime, AfterValidator], NoneType], required=False, default=None), 'emergency_phone_number': FieldInfo(annotation=Union[Annotated[Union[str, PhoneNumber], PhoneNumberValidator], NoneType], required=False, default=None, metadata=[MaxLen(max_length=14)]), 'gender': FieldInfo(annotation=Union[GenderChoices, NoneType], required=False, default=None), '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), 'identifiers': FieldInfo(annotation=list[PatientIdentifierConfigRequest], required=False, default=[]), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'name': FieldInfo(annotation=Union[str, NoneType], required=False, default=None, metadata=[MaxLen(max_length=200)]), 'permanent_address': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'phone_number': FieldInfo(annotation=Union[Annotated[Union[str, PhoneNumber], PhoneNumberValidator], NoneType], required=False, default=None, metadata=[MaxLen(max_length=14)]), 'pincode': 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.

class PatientListSpec(*, meta: dict = {}, id: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None, name: Annotated[str, MaxLen(max_length=200)], gender: GenderChoices, phone_number: Annotated[str | PhoneNumber(country_code=None, national_number=None, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=0, preferred_domestic_carrier_code=None), MaxLen(max_length=14), PhoneNumberValidator(default_region=None, number_format=E164, supported_regions=[])], emergency_phone_number: Annotated[Annotated[str | PhoneNumber(country_code=None, national_number=None, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=0, preferred_domestic_carrier_code=None), PhoneNumberValidator(default_region=None, number_format=E164, supported_regions=[])] | None, MaxLen(max_length=14)] = None, address: str | None = None, permanent_address: str | None = None, pincode: int | None = None, deceased_datetime: Annotated[datetime, AfterValidator(func=validate_timezone_aware)] | None = None, blood_group: BloodGroupChoices | None = None, date_of_birth: date | None = None, year_of_birth: date | None = None, created_date: datetime, modified_date: datetime, instance_tags: list[dict] = [], facility_tags: list[dict] = [])

Bases: PatientBaseSpec

date_of_birth: date | None
year_of_birth: date | None
created_date: datetime
modified_date: datetime
instance_tags: list[dict]
facility_tags: list[dict]
classmethod perform_extra_serialization(mapping, obj, *args, **kwargs)
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]] = {'address': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'blood_group': FieldInfo(annotation=Union[BloodGroupChoices, NoneType], required=False, default=None), 'created_date': FieldInfo(annotation=datetime, required=True), 'date_of_birth': FieldInfo(annotation=Union[date, NoneType], required=False, default=None), 'deceased_datetime': FieldInfo(annotation=Union[Annotated[datetime, AfterValidator], NoneType], required=False, default=None), 'emergency_phone_number': FieldInfo(annotation=Union[Annotated[Union[str, PhoneNumber], PhoneNumberValidator], NoneType], required=False, default=None, metadata=[MaxLen(max_length=14)]), 'facility_tags': FieldInfo(annotation=list[dict], required=False, default=[]), 'gender': FieldInfo(annotation=GenderChoices, required=True), 'id': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'instance_tags': FieldInfo(annotation=list[dict], required=False, default=[]), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'modified_date': FieldInfo(annotation=datetime, required=True), 'name': FieldInfo(annotation=str, required=True, metadata=[MaxLen(max_length=200)]), 'permanent_address': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'phone_number': FieldInfo(annotation=Union[str, PhoneNumber], required=True, metadata=[MaxLen(max_length=14), PhoneNumberValidator(default_region=None, number_format='E164', supported_regions=[])]), 'pincode': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'year_of_birth': FieldInfo(annotation=Union[date, 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 PatientPartialSpec(*, meta: dict = {}, id: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None, name: str, gender: GenderChoices, phone_number: str, partial_id: str)

Bases: EMRResource

id: Annotated[UUID, UuidVersion(uuid_version=4)] | None
name: str
gender: GenderChoices
phone_number: str
partial_id: 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]] = {'gender': FieldInfo(annotation=GenderChoices, required=True), '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), 'partial_id': FieldInfo(annotation=str, required=True), 'phone_number': 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 PatientIdentifierResponse(*, config: PatientIdentifierListSpec, value: str)

Bases: BaseModel

config: PatientIdentifierListSpec
value: 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]] = {'config': FieldInfo(annotation=PatientIdentifierListSpec, required=True), 'value': 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 PatientRetrieveSpec(*, meta: dict = {}, permissions: list[str] = [], id: Annotated[UUID, UuidVersion(uuid_version=4)] | None = None, name: Annotated[str, MaxLen(max_length=200)], gender: GenderChoices, phone_number: Annotated[str | PhoneNumber(country_code=None, national_number=None, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=0, preferred_domestic_carrier_code=None), MaxLen(max_length=14), PhoneNumberValidator(default_region=None, number_format=E164, supported_regions=[])], emergency_phone_number: Annotated[Annotated[str | PhoneNumber(country_code=None, national_number=None, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=0, preferred_domestic_carrier_code=None), PhoneNumberValidator(default_region=None, number_format=E164, supported_regions=[])] | None, MaxLen(max_length=14)] = None, address: str | None = None, permanent_address: str | None = None, pincode: int | None = None, deceased_datetime: Annotated[datetime, AfterValidator(func=validate_timezone_aware)] | None = None, blood_group: BloodGroupChoices | None = None, date_of_birth: date | None = None, year_of_birth: date | None = None, created_date: datetime, modified_date: datetime, instance_tags: list[dict] = [], facility_tags: list[dict] = [], geo_organization: dict = {}, created_by: dict | None = None, updated_by: dict | None = None, instance_identifiers: list[PatientIdentifierResponse] = [], facility_identifiers: list[PatientIdentifierResponse] = [])

Bases: PatientListSpec, PatientPermissionsMixin

geo_organization: dict
created_by: dict | None
updated_by: dict | None
instance_identifiers: list[PatientIdentifierResponse]
facility_identifiers: list[PatientIdentifierResponse]
classmethod perform_extra_serialization(mapping, obj, *args, **kwargs)
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]] = {'address': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'blood_group': FieldInfo(annotation=Union[BloodGroupChoices, NoneType], required=False, default=None), 'created_by': FieldInfo(annotation=Union[dict, NoneType], required=False, default=None), 'created_date': FieldInfo(annotation=datetime, required=True), 'date_of_birth': FieldInfo(annotation=Union[date, NoneType], required=False, default=None), 'deceased_datetime': FieldInfo(annotation=Union[Annotated[datetime, AfterValidator], NoneType], required=False, default=None), 'emergency_phone_number': FieldInfo(annotation=Union[Annotated[Union[str, PhoneNumber], PhoneNumberValidator], NoneType], required=False, default=None, metadata=[MaxLen(max_length=14)]), 'facility_identifiers': FieldInfo(annotation=list[PatientIdentifierResponse], required=False, default=[]), 'facility_tags': FieldInfo(annotation=list[dict], required=False, default=[]), 'gender': FieldInfo(annotation=GenderChoices, required=True), 'geo_organization': FieldInfo(annotation=dict, required=False, default={}), 'id': FieldInfo(annotation=Union[Annotated[UUID, UuidVersion], NoneType], required=False, default=None), 'instance_identifiers': FieldInfo(annotation=list[PatientIdentifierResponse], required=False, default=[]), 'instance_tags': FieldInfo(annotation=list[dict], required=False, default=[]), 'meta': FieldInfo(annotation=dict, required=False, default={}), 'modified_date': FieldInfo(annotation=datetime, required=True), 'name': FieldInfo(annotation=str, required=True, metadata=[MaxLen(max_length=200)]), 'permanent_address': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'permissions': FieldInfo(annotation=list[str], required=False, default=[]), 'phone_number': FieldInfo(annotation=Union[str, PhoneNumber], required=True, metadata=[MaxLen(max_length=14), PhoneNumberValidator(default_region=None, number_format='E164', supported_regions=[])]), 'pincode': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'updated_by': FieldInfo(annotation=Union[dict, NoneType], required=False, default=None), 'year_of_birth': FieldInfo(annotation=Union[date, 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.