29 rows are stored for this page
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Identity & profile |
| Field | String | external_id |
| FieldType | String | UUIDField |
| Notes | Text | Unique, indexed; stable public identifier. Surfaced as <code>id</code> in every read spec |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Identity & profile |
| Field | String | username |
| FieldType | String | CharField(150) |
| Notes | Text | Unique; model-validated by <code>UsernameValidator</code>. On create, the API additionally enforces <code>^[a-zA-Z0-9_-]{3,}$</code> and global uniqueness, including deleted users |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Identity & profile |
| Field | String | user_type |
| FieldType | String | CharField(100) |
| Notes | Text | Nullable; free-text role label (e.g. <code>administrator</code>). No user spec exposes it — set internally or by <code>create_superuser</code> |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Identity & profile |
| Field | String | prefix |
| FieldType | String | CharField(10) |
| Notes | Text | Name prefix (e.g. Dr.); spec caps length at 10. Optional in specs |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Identity & profile |
| Field | String | suffix |
| FieldType | String | CharField(50) |
| Notes | Text | Name suffix; spec caps length at 50. Optional in specs |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Identity & profile |
| Field | String | old_gender |
| FieldType | String | IntegerField |
| Notes | Text | Legacy <code>GENDER_CHOICES</code> (<code>1</code> Male, <code>2</code> Female, <code>3</code> Non-binary); nullable. No user spec exposes it |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Identity & profile |
| Field | String | date_of_birth |
| FieldType | String | DateField |
| Notes | Text | Nullable. Read-only (nullable string) in <code>CurrentUserRetrieveSpec</code> |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Identity & profile |
| Field | String | profile_picture_url |
| FieldType | String | CharField(500) |
| Notes | Text | Storage key, not a URL. Read specs return the resolved URL via <code>read_profile_picture_url()</code>, not the raw key |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Identity & profile |
| Field | String | created_by |
| FieldType | String | FK → User (self, SET_NULL) |
| Notes | Text | Account creator; <code>related_name="users_created"</code>. Serialized in <code>UserRetrieveSpec</code> as a cached nested <code>UserSpec</code> dict (nullable) |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Identity & profile |
| Field | String | deleted |
| FieldType | String | BooleanField |
| Notes | Text | Soft-delete flag (default <code>False</code>); read-only in <code>UserSpec</code> |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Identity & profile |
| Field | String | verified |
| FieldType | String | BooleanField |
| Notes | Text | Default <code>False</code>; read-only in <code>CurrentUserRetrieveSpec</code> |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Identity & profile |
| Field | String | is_service_account |
| FieldType | String | BooleanField |
| Notes | Text | Default <code>False</code>; marks machine/integration accounts. Settable on create, read in <code>UserRetrieveSpec</code> |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Contact |
| Field | String | phone_number |
| FieldType | String | CharField(14) |
| Notes | Text | Model: <code>mobile_or_landline_number_validator</code>. Required in specs, capped at 14 chars; must be globally unique on create |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Contact |
| Field | String | alt_phone_number |
| FieldType | String | CharField(14) |
| Notes | Text | Nullable; model <code>mobile_validator</code>. Read-only string in <code>CurrentUserRetrieveSpec</code> |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Contact |
| Field | String | video_connect_link |
| FieldType | String | URLField |
| Notes | Text | Nullable; tele-consult link. No user spec exposes it |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Clinician credentials |
| Field | String | qualification |
| FieldType | String | TextField |
| Notes | Text | Nullable. Read-only (nullable string) in <code>CurrentUserRetrieveSpec</code> |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Clinician credentials |
| Field | String | doctor_experience_commenced_on |
| FieldType | String | DateField |
| Notes | Text | Nullable; experience is derived from this. Read-only (nullable string) in <code>CurrentUserRetrieveSpec</code> |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Clinician credentials |
| Field | String | doctor_medical_council_registration |
| FieldType | String | CharField(255) |
| Notes | Text | Nullable; council registration number. Read-only (nullable string) in <code>CurrentUserRetrieveSpec</code> |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Clinician credentials |
| Field | String | weekly_working_hours |
| FieldType | String | IntegerField |
| Notes | Text | Nullable; model-validated <code>0</code>–<code>168</code>. Read-only (nullable string) in <code>CurrentUserRetrieveSpec</code> |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Organization & facility |
| Field | String | geo_organization |
| FieldType | String | FK → emr.Organization (SET_NULL) |
| Notes | Text | Geographic/administrative org. Write specs accept a <code>UUID4</code> and resolve it to an <code>Organization</code> with <code>org_type="govt"</code> (404 otherwise). Read in <code>UserRetrieveSpec</code> as a nested <code>OrganizationReadSpec</code> dict. Listed in <code>UserBaseSpec.__exclude__</code>, so it never round-trips through the generic field copy |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Organization & facility |
| Field | String | home_facility |
| FieldType | String | FK → facility.Facility (PROTECT) |
| Notes | Text | Primary facility. No user spec exposes it |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Organization & facility |
| Field | String | skills |
| FieldType | String | ManyToManyField → Skill |
| Notes | Text | Through <code>UserSkill</code> |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Organization & facility |
| Field | String | cached_role_orgs |
| FieldType | String | JSONField |
| Notes | Text | Nullable; cached role/organization map. Lazily populated by <code>get_cached_role_orgs()</code> and surfaced as <code>role_orgs</code> in read specs. Platform-maintained — do not write directly |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Notifications, MFA & preferences |
| Field | String | pf_endpoint |
| FieldType | String | TextField |
| Notes | Text | Web-push endpoint; nullable. Read-only in <code>CurrentUserRetrieveSpec</code> |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Notifications, MFA & preferences |
| Field | String | pf_p256dh |
| FieldType | String | TextField |
| Notes | Text | Web-push key; nullable. Read-only in <code>CurrentUserRetrieveSpec</code> |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Notifications, MFA & preferences |
| Field | String | pf_auth |
| FieldType | String | TextField |
| Notes | Text | Web-push auth secret; nullable. Read-only in <code>CurrentUserRetrieveSpec</code> |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Notifications, MFA & preferences |
| Field | String | totp_secret |
| FieldType | String | TextField |
| Notes | Text | Nullable; TOTP seed. Never serialized; written only via the MFA setup/verify flow |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Notifications, MFA & preferences |
| Field | String | mfa_settings |
| FieldType | String | JSONField |
| Notes | Text | Default <code>{}</code>. Shape: <code>{ "totp": { "enabled": bool, ... } }</code>. <code>is_mfa_enabled()</code> reads <code>mfa_settings["totp"]["enabled"]</code>; surfaced as the boolean <code>mfa_enabled</code> in <code>UserSpec</code>. Clients never write it directly |
| Field | Field type | Value |
|---|
| Model | String | User&Skills |
| Section | String | Notifications, MFA & preferences |
| Field | String | preferences |
| FieldType | String | JSONField |
| Notes | Text | Default <code>{}</code>; open per-user UI/app preferences bag. Read-only <code>dict</code> in <code>CurrentUserRetrieveSpec</code> |
"Docs" values
1 row is stored for this page
| Field | Field type | Value |
|---|
| Title | String | User & Skills |
| DocType | String | reference |
| Domain | String | access-governance |
| Summary | Text | |
| SidebarOrder | Integer | 2 |
| IntroducedIn | String | 3.0 |
| DeprecatedIn | String | |
| FHIRResource | String | |
| Model | String | User&Skills |
| SourceFile | String | |
| Status | String | current |