{"schemaVersion":"1.0","sourceCommit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca","sourceVisibility":"private","article":{"id":"api-mansoq-core-patientviewset-fd58cc28","title":"Patient API reference · mansoq-core","summary":"Static source contract for Patient: 19 declared or inherited operation mappings, schema/field evidence and authorization/refusal references. Deployment and behavioral review remain explicit.","module":"IT & integrations","roles":["IT administrator","Developer","Integration engineer"],"facilities":["All configured facility types"],"kind":"reference","minutes":25,"prerequisites":["Use the API contract from the installed deployment and an authorized synthetic test environment.","Confirm facility/organization scope, action permissions and optional app enablement.","This reference is static source evidence; complete payload, authorization, failure and end-to-end review remains recorded as pending."],"steps":[],"sections":[{"title":"Declared route and availability","body":"This resource is declared in **mansoq-core** at `/api/v1/patient/`. verified core mount in config/urls.py A registered path and an indexed handler do not prove deployment availability, user permission or production readiness."},{"title":"Operation map","body":"| Method | Path | Action | Evidence |\n| --- | --- | --- | --- |\n| GET | `/api/v1/patient/` | list | declared/inherited method |\n| POST | `/api/v1/patient/` | create | declared/inherited method |\n| GET | `/api/v1/patient/{external_id}/` | retrieve | declared/inherited method |\n| PUT | `/api/v1/patient/{external_id}/` | update | declared/inherited method |\n| PATCH | `/api/v1/patient/{external_id}/` | partial_update | declared/inherited method |\n| DELETE | `/api/v1/patient/{external_id}/` | destroy | declared/inherited method |\n| POST | `/api/v1/patient/upsert/` | upsert | @action declaration |\n| POST | `/api/v1/patient/search/` | search | @action declaration |\n| POST | `/api/v1/patient/search_retrieve/` | search_retrieve | @action declaration |\n| GET | `/api/v1/patient/{external_id}/get_users/` | get_users | @action declaration |\n| POST | `/api/v1/patient/{external_id}/add_user/` | add_user | @action declaration |\n| POST | `/api/v1/patient/{external_id}/delete_user/` | delete_user | @action declaration |\n| GET | `/api/v1/patient/{external_id}/get_appointments/` | get_appointments | @action declaration |\n| GET | `/api/v1/patient/{external_id}/get_tokens/` | get_tokens | @action declaration |\n| POST | `/api/v1/patient/{external_id}/update_identifier/` | update_identifier | @action declaration |\n| POST | `/api/v1/patient/{external_id}/set_instance_tags/` | set_instance_tags | @action declaration |\n| POST | `/api/v1/patient/{external_id}/remove_instance_tags/` | remove_instance_tags | @action declaration |\n| POST | `/api/v1/patient/{external_id}/set_facility_tags/` | set_facility_tags | @action declaration |\n| POST | `/api/v1/patient/{external_id}/remove_facility_tags/` | remove_facility_tags | @action declaration |"},{"title":"list · GET","body":"**GET /api/v1/patient/** — action `list`. static contract extracted; runtime/permission/payload behavior review pending.\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**response: PatientListSpec**. Declared fields below; inherited fields are retained in the schema inventory.\n\n| Field | Type | Required | Constraints |\n| --- | --- | --- | --- |\n| meta | dict | false | No extra constraint extracted |\n| id | UUID4 \\| None | false | No extra constraint extracted |\n| name | str | true | No extra constraint extracted |\n| gender | GenderChoices | true | No extra constraint extracted |\n| phone_number | PhoneNumber | true | max_length: 14 |\n| emergency_phone_number | PhoneNumber \\| None | false | max_length: 14 |\n| address | str \\| None | false | No extra constraint extracted |\n| permanent_address | str \\| None | false | No extra constraint extracted |\n| pincode | int \\| None | false | No extra constraint extracted |\n| deceased_datetime | StrictTZAwareDateTime \\| None | false | No extra constraint extracted |\n| blood_group | BloodGroupChoices \\| None | false | No extra constraint extracted |\n| extensions | dict | false | No extra constraint extracted |\n| date_of_birth | datetime.date \\| None | false | No extra constraint extracted |\n| year_of_birth | datetime.date \\| None | false | No extra constraint extracted |\n| created_date | datetime.datetime | true | No extra constraint extracted |\n| modified_date | datetime.datetime | true | No extra constraint extracted |\n| instance_tags | list[dict] | false | No extra constraint extracted |\n| facility_tags | list[dict] | false | No extra constraint extracted |\n\n**Observed authorization checks:** `get_filtered_patients`, `can_view_clinical_data`, `can_list_facility_tag_config`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Declared refusal/error evidence:** PermissionDenied: Cannot view facility tags.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"create · POST","body":"**POST /api/v1/patient/** — action `create`. static contract extracted; runtime/permission/payload behavior review pending.\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**request: PatientCreateSpec**. Declared fields below; inherited fields are retained in the schema inventory.\n\n| Field | Type | Required | Constraints |\n| --- | --- | --- | --- |\n| meta | dict | false | No extra constraint extracted |\n| id | UUID4 \\| None | false | No extra constraint extracted |\n| name | str | true | No extra constraint extracted |\n| gender | GenderChoices | true | No extra constraint extracted |\n| phone_number | PhoneNumber | true | max_length: 14 |\n| emergency_phone_number | PhoneNumber \\| None | false | max_length: 14 |\n| address | str \\| None | false | No extra constraint extracted |\n| permanent_address | str \\| None | false | No extra constraint extracted |\n| pincode | int \\| None | false | No extra constraint extracted |\n| deceased_datetime | StrictTZAwareDateTime \\| None | false | No extra constraint extracted |\n| blood_group | BloodGroupChoices \\| None | false | No extra constraint extracted |\n| extensions | dict | false | No extra constraint extracted |\n| geo_organization | UUID4 | true | No extra constraint extracted |\n| date_of_birth | datetime.date \\| None | false | No extra constraint extracted |\n| age | int \\| None | false | No extra constraint extracted |\n| identifiers | list[PatientIdentifierConfigRequest] | false | No extra constraint extracted |\n| tags | list[UUID4] | false | No extra constraint extracted |\n\n**response: PatientRetrieveSpec**. Declared fields below; inherited fields are retained in the schema inventory.\n\n| Field | Type | Required | Constraints |\n| --- | --- | --- | --- |\n| meta | dict | false | No extra constraint extracted |\n| permissions | list[str] | false | No extra constraint extracted |\n| id | UUID4 \\| None | false | No extra constraint extracted |\n| name | str | true | No extra constraint extracted |\n| gender | GenderChoices | true | No extra constraint extracted |\n| phone_number | PhoneNumber | true | max_length: 14 |\n| emergency_phone_number | PhoneNumber \\| None | false | max_length: 14 |\n| address | str \\| None | false | No extra constraint extracted |\n| permanent_address | str \\| None | false | No extra constraint extracted |\n| pincode | int \\| None | false | No extra constraint extracted |\n| deceased_datetime | StrictTZAwareDateTime \\| None | false | No extra constraint extracted |\n| blood_group | BloodGroupChoices \\| None | false | No extra constraint extracted |\n| extensions | dict | true | No extra constraint extracted |\n| date_of_birth | datetime.date \\| None | false | No extra constraint extracted |\n| year_of_birth | datetime.date \\| None | false | No extra constraint extracted |\n| created_date | datetime.datetime | true | No extra constraint extracted |\n| modified_date | datetime.datetime | true | No extra constraint extracted |\n| instance_tags | list[dict] | false | No extra constraint extracted |\n| facility_tags | list[dict] | false | No extra constraint extracted |\n| geo_organization | dict | false | No extra constraint extracted |\n| created_by | dict \\| None | false | No extra constraint extracted |\n| updated_by | dict \\| None | false | No extra constraint extracted |\n| instance_identifiers | list[PatientIdentifierResponse] | false | No extra constraint extracted |\n| facility_identifiers | list[PatientIdentifierResponse] | false | No extra constraint extracted |\n\n**Observed authorization checks:** `get_filtered_patients`, `can_view_clinical_data`, `can_create_patient`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Declared refusal/error evidence:** PermissionDenied: Cannot Create Patient; ValidationError: Date of birth cannot be after the date of death; ValidationError: Year of birth cannot be after the year of death; ValidationError: Patient creation failed, try again after a while.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"retrieve · GET","body":"**GET /api/v1/patient/{external_id}/** — action `retrieve`. static contract extracted; runtime/permission/payload behavior review pending.\n\nPath and deployment-context parameters:\n\n| Location | Parameter | Type | Required |\n| --- | --- | --- | --- |\n| path | external_id | router lookup string; semantic ID validation requires handler/schema review | true |\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**response: PatientRetrieveSpec**. Declared fields below; inherited fields are retained in the schema inventory.\n\nThe declared field table is shown at its first occurrence in this reference; this operation links the same schema.\n\n**Observed authorization checks:** `get_filtered_patients`, `can_view_clinical_data`, `can_list_facility_tag_config`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Declared refusal/error evidence:** PermissionDenied: Cannot view facility tags.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"update · PUT","body":"**PUT /api/v1/patient/{external_id}/** — action `update`. static contract extracted; runtime/permission/payload behavior review pending.\n\nPath and deployment-context parameters:\n\n| Location | Parameter | Type | Required |\n| --- | --- | --- | --- |\n| path | external_id | router lookup string; semantic ID validation requires handler/schema review | true |\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**request: PatientUpdateSpec**. Declared fields below; inherited fields are retained in the schema inventory.\n\n| Field | Type | Required | Constraints |\n| --- | --- | --- | --- |\n| meta | dict | false | No extra constraint extracted |\n| id | UUID4 \\| None | false | No extra constraint extracted |\n| name | str \\| None | false | No extra constraint extracted |\n| gender | GenderChoices \\| None | false | No extra constraint extracted |\n| phone_number | PhoneNumber \\| None | false | max_length: 14 |\n| emergency_phone_number | PhoneNumber \\| None | false | max_length: 14 |\n| address | str \\| None | false | No extra constraint extracted |\n| permanent_address | str \\| None | false | No extra constraint extracted |\n| pincode | int \\| None | false | No extra constraint extracted |\n| deceased_datetime | StrictTZAwareDateTime \\| None | false | No extra constraint extracted |\n| blood_group | BloodGroupChoices \\| None | false | No extra constraint extracted |\n| extensions | dict | false | No extra constraint extracted |\n| date_of_birth | datetime.date \\| None | false | No extra constraint extracted |\n| age | int \\| None | false | No extra constraint extracted |\n| geo_organization | UUID4 \\| None | false | No extra constraint extracted |\n| identifiers | list[PatientIdentifierConfigRequest] | false | No extra constraint extracted |\n\n**response: PatientRetrieveSpec**. Declared fields below; inherited fields are retained in the schema inventory.\n\nThe declared field table is shown at its first occurrence in this reference; this operation links the same schema.\n\n**Observed authorization checks:** `get_filtered_patients`, `can_view_clinical_data`, `can_write_patient_obj`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Declared refusal/error evidence:** PermissionDenied: Cannot Update Patient; ValidationError: Date of birth cannot be after the date of death; ValidationError: Year of birth cannot be after the year of death.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"partial_update · PATCH","body":"**PATCH /api/v1/patient/{external_id}/** — action `partial_update`. static contract extracted; runtime/permission/payload behavior review pending.\n\nPath and deployment-context parameters:\n\n| Location | Parameter | Type | Required |\n| --- | --- | --- | --- |\n| path | external_id | router lookup string; semantic ID validation requires handler/schema review | true |\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**request: PatientUpdateSpec**. Declared fields below; inherited fields are retained in the schema inventory.\n\nThe declared field table is shown at its first occurrence in this reference; this operation links the same schema.\n\n**response: PatientRetrieveSpec**. Declared fields below; inherited fields are retained in the schema inventory.\n\nThe declared field table is shown at its first occurrence in this reference; this operation links the same schema.\n\n**Observed authorization checks:** `get_filtered_patients`, `can_view_clinical_data`, `can_write_patient_obj`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Declared refusal/error evidence:** ValidationError: Date of birth cannot be after the date of death; ValidationError: Year of birth cannot be after the year of death; PermissionDenied: Cannot Update Patient.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"destroy · DELETE","body":"**DELETE /api/v1/patient/{external_id}/** — action `destroy`. static contract extracted; runtime/permission/payload behavior review pending.\n\nPath and deployment-context parameters:\n\n| Location | Parameter | Type | Required |\n| --- | --- | --- | --- |\n| path | external_id | router lookup string; semantic ID validation requires handler/schema review | true |\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**Observed authorization checks:** `get_filtered_patients`, `can_view_clinical_data`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Explicit response statuses in observed code:** status.HTTP_204_NO_CONTENT. Other branches/framework exception handling may differ.\n\n**Declared refusal/error evidence:** PermissionDenied: Cannot delete patient.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"upsert · POST","body":"**POST /api/v1/patient/upsert/** — action `upsert`. static contract extracted; runtime/permission/payload behavior review pending.\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| body | `datapoints` | not declared at read site | not established |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**Observed authorization checks:** `get_filtered_patients`, `can_view_clinical_data`, `can_write_patient_obj`, `can_create_patient`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Explicit response statuses in observed code:** 400. Other branches/framework exception handling may differ.\n\n**Declared refusal/error evidence:** RestFrameworkValidationError: Invalid request data; RestFrameworkValidationError: No datapoints provided; RestFrameworkValidationError: Too many datapoints provided; ValidationError: Date of birth cannot be after the date of death; ValidationError: Year of birth cannot be after the year of death; PermissionDenied: Cannot Update Patient; PermissionDenied: Cannot Create Patient; ValidationError: Patient creation failed, try again after a while.\n\n**Conditional gates:** conditional/computed expression; inspect pinned declaration comparison settings.MAX_DATAPOINTS_PER_UPSERT; settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"search · POST","body":"**POST /api/v1/patient/search/** — action `search`. static contract extracted; runtime/permission/payload behavior review pending.\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**Observed authorization checks:** `can_list_facility_patient_identifier_config`, `get_filtered_patients`, `can_view_clinical_data`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Declared refusal/error evidence:** ValidationError: Either phone number or config is required; ValidationError: Config not found; PermissionDenied: Cannot search for patient identifier configs in this facility; ValidationError: Value is required.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"search_retrieve · POST","body":"**POST /api/v1/patient/search_retrieve/** — action `search_retrieve`. static contract extracted; runtime/permission/payload behavior review pending.\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**decorator responses: PatientRetrieveSpec**. Declared fields below; inherited fields are retained in the schema inventory.\n\nThe declared field table is shown at its first occurrence in this reference; this operation links the same schema.\n\n**Observed authorization checks:** `get_filtered_patients`, `can_view_clinical_data`, `can_list_facility_tag_config`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Declared refusal/error evidence:** PermissionDenied: No valid patients found; PermissionDenied: Cannot view facility tags.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED.\n\n**Direct refusal present:** the handler/helper contains a top-level raise. Review whether the operation is intentionally disabled or only performs validation before relying on it."},{"title":"get_users · GET","body":"**GET /api/v1/patient/{external_id}/get_users/** — action `get_users`. static contract extracted; runtime/permission/payload behavior review pending.\n\nPath and deployment-context parameters:\n\n| Location | Parameter | Type | Required |\n| --- | --- | --- | --- |\n| path | external_id | router lookup string; semantic ID validation requires handler/schema review | true |\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**Observed authorization checks:** `get_filtered_patients`, `can_view_clinical_data`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"add_user · POST","body":"**POST /api/v1/patient/{external_id}/add_user/** — action `add_user`. static contract extracted; runtime/permission/payload behavior review pending.\n\nPath and deployment-context parameters:\n\n| Location | Parameter | Type | Required |\n| --- | --- | --- | --- |\n| path | external_id | router lookup string; semantic ID validation requires handler/schema review | true |\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**decorator responses: UserSpec**. Declared fields below; inherited fields are retained in the schema inventory.\n\n| Field | Type | Required | Constraints |\n| --- | --- | --- | --- |\n| meta | dict | false | No extra constraint extracted |\n| id | UUID4 \\| None | false | No extra constraint extracted |\n| first_name | str | true | No extra constraint extracted |\n| last_name | str | true | No extra constraint extracted |\n| phone_number | str | true | max_length: 14 |\n| prefix | str \\| None | false | max_length: 10 |\n| suffix | str \\| None | false | max_length: 50 |\n| last_login | str | true | No extra constraint extracted |\n| profile_picture_url | str | true | No extra constraint extracted |\n| gender | str | true | No extra constraint extracted |\n| username | str | true | No extra constraint extracted |\n| mfa_enabled | bool | false | No extra constraint extracted |\n| deleted | bool | false | No extra constraint extracted |\n| role_orgs | dict | true | No extra constraint extracted |\n\n**Observed authorization checks:** `get_filtered_patients`, `can_view_clinical_data`, `can_write_patient_obj`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Declared refusal/error evidence:** ValidationError: User already exists; PermissionDenied: Cannot Update Patient.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"delete_user · POST","body":"**POST /api/v1/patient/{external_id}/delete_user/** — action `delete_user`. static contract extracted; runtime/permission/payload behavior review pending.\n\nPath and deployment-context parameters:\n\n| Location | Parameter | Type | Required |\n| --- | --- | --- | --- |\n| path | external_id | router lookup string; semantic ID validation requires handler/schema review | true |\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**Observed authorization checks:** `get_filtered_patients`, `can_view_clinical_data`, `can_write_patient_obj`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Declared refusal/error evidence:** ValidationError: User does not exist; PermissionDenied: Cannot Update Patient.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"get_appointments · GET","body":"**GET /api/v1/patient/{external_id}/get_appointments/** — action `get_appointments`. static contract extracted; runtime/permission/payload behavior review pending.\n\nPath and deployment-context parameters:\n\n| Location | Parameter | Type | Required |\n| --- | --- | --- | --- |\n| path | external_id | router lookup string; semantic ID validation requires handler/schema review | true |\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `facility` | not declared at read site | not established |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**Observed authorization checks:** `can_list_booking_on_facility`, `get_filtered_patients`, `can_view_clinical_data`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Declared refusal/error evidence:** PermissionDenied: Cannot list bookings.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"get_tokens · GET","body":"**GET /api/v1/patient/{external_id}/get_tokens/** — action `get_tokens`. static contract extracted; runtime/permission/payload behavior review pending.\n\nPath and deployment-context parameters:\n\n| Location | Parameter | Type | Required |\n| --- | --- | --- | --- |\n| path | external_id | router lookup string; semantic ID validation requires handler/schema review | true |\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `facility` | not declared at read site | not established |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**Observed authorization checks:** `can_list_token_on_facility`, `get_filtered_patients`, `can_view_clinical_data`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Declared refusal/error evidence:** PermissionDenied: Cannot list tokens.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"update_identifier · POST","body":"**POST /api/v1/patient/{external_id}/update_identifier/** — action `update_identifier`. static contract extracted; runtime/permission/payload behavior review pending.\n\nPath and deployment-context parameters:\n\n| Location | Parameter | Type | Required |\n| --- | --- | --- | --- |\n| path | external_id | router lookup string; semantic ID validation requires handler/schema review | true |\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**decorator request: PatientIdentifierConfigRequest**. Declared fields below; inherited fields are retained in the schema inventory.\n\n| Field | Type | Required | Constraints |\n| --- | --- | --- | --- |\n| config | UUID4 | true | No extra constraint extracted |\n| value | str | true | No extra constraint extracted |\n\n**decorator responses: PatientRetrieveSpec**. Declared fields below; inherited fields are retained in the schema inventory.\n\nThe declared field table is shown at its first occurrence in this reference; this operation links the same schema.\n\n**Observed authorization checks:** `get_filtered_patients`, `can_view_clinical_data`, `can_write_patient_obj`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Declared refusal/error evidence:** ValidationError: Cannot update auto maintained identifier; ValidationError: Value is required; PermissionDenied: Cannot Update Patient.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"set_instance_tags · POST","body":"**POST /api/v1/patient/{external_id}/set_instance_tags/** — action `set_instance_tags`. static contract extracted; runtime/permission/payload behavior review pending.\n\nPath and deployment-context parameters:\n\n| Location | Parameter | Type | Required |\n| --- | --- | --- | --- |\n| path | external_id | router lookup string; semantic ID validation requires handler/schema review | true |\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**Observed authorization checks:** `get_filtered_patients`, `can_view_clinical_data`, `can_write_patient_obj`, `can_list_facility_tag_config`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Declared refusal/error evidence:** PermissionDenied: Cannot Update Patient; PermissionDenied: Cannot view facility tags.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"remove_instance_tags · POST","body":"**POST /api/v1/patient/{external_id}/remove_instance_tags/** — action `remove_instance_tags`. static contract extracted; runtime/permission/payload behavior review pending.\n\nPath and deployment-context parameters:\n\n| Location | Parameter | Type | Required |\n| --- | --- | --- | --- |\n| path | external_id | router lookup string; semantic ID validation requires handler/schema review | true |\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**Observed authorization checks:** `get_filtered_patients`, `can_view_clinical_data`, `can_write_patient_obj`, `can_list_facility_tag_config`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Declared refusal/error evidence:** PermissionDenied: Cannot Update Patient; PermissionDenied: Cannot view facility tags.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"set_facility_tags · POST","body":"**POST /api/v1/patient/{external_id}/set_facility_tags/** — action `set_facility_tags`. static contract extracted; runtime/permission/payload behavior review pending.\n\nPath and deployment-context parameters:\n\n| Location | Parameter | Type | Required |\n| --- | --- | --- | --- |\n| path | external_id | router lookup string; semantic ID validation requires handler/schema review | true |\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**Observed authorization checks:** `get_filtered_patients`, `can_view_clinical_data`, `can_write_patient_obj`, `can_list_facility_tag_config`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Declared refusal/error evidence:** PermissionDenied: Cannot Update Patient; PermissionDenied: Cannot view facility tags.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"remove_facility_tags · POST","body":"**POST /api/v1/patient/{external_id}/remove_facility_tags/** — action `remove_facility_tags`. static contract extracted; runtime/permission/payload behavior review pending.\n\nPath and deployment-context parameters:\n\n| Location | Parameter | Type | Required |\n| --- | --- | --- | --- |\n| path | external_id | router lookup string; semantic ID validation requires handler/schema review | true |\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `organization` | not declared at read site | direct indexing; validation may be upstream |\n\n**Observed authorization checks:** `get_filtered_patients`, `can_view_clinical_data`, `can_write_patient_obj`, `can_list_facility_tag_config`. Helper/queryset evidence is included; this is not proof of complete security review.\n\n**Declared refusal/error evidence:** PermissionDenied: Cannot Update Patient; PermissionDenied: Cannot view facility tags.\n\n**Conditional gates:** settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED."},{"title":"Integration review checklist","body":"Confirm the installed route and full schema; review authentication, organization/facility scoping, all accepted fields, value-state and date/time semantics, idempotency, pagination, response/exception branches and the allowed correction/reversal workflow. Test positive and negative cases with synthetic data. This source reference does not establish external certification or replace an illustrated user procedure."}],"troubleshooting":[{"problem":"A declared route is unavailable or a request is rejected","solution":"Compare the installed revision, actual API schema, optional plugin mount, HTTP-method restrictions and recorded validation/permission evidence. Do not bypass a refusal or send a production transaction to test documentation."}],"sources":[{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":49,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":168,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":93,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":161,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":330,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":508,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":211,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":136,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":65,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":142,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":130,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":73,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":120,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":139,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":325,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":104,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":252,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":83,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":80,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":505,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":214,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":59,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":228,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":201,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":335,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":161,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":222,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":153,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":218,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":261,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":69,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":258,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":253,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":271,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":204,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":278,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":293,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":308,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/user/spec.py","line":108,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":324,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":336,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":369,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":403,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":99,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":449,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":464,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":478,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":493,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}],"related":["it-api-contract","it-api-auth","security-rcm-roles"],"verification":"Static API contract — behavior review pending","version":"f6e9f05f76d4","apiReferenceIds":["backend-resource-58be9382fd58cc28","backend-resource-58be9382fd58cc28:GET:list","backend-resource-58be9382fd58cc28:POST:create","backend-resource-58be9382fd58cc28:GET:retrieve","backend-resource-58be9382fd58cc28:PUT:update","backend-resource-58be9382fd58cc28:PATCH:partial_update","backend-resource-58be9382fd58cc28:DELETE:destroy","backend-resource-58be9382fd58cc28:POST:upsert","backend-resource-58be9382fd58cc28:POST:search","backend-resource-58be9382fd58cc28:POST:search_retrieve","backend-resource-58be9382fd58cc28:GET:get_users","backend-resource-58be9382fd58cc28:POST:add_user","backend-resource-58be9382fd58cc28:POST:delete_user","backend-resource-58be9382fd58cc28:GET:get_appointments","backend-resource-58be9382fd58cc28:GET:get_tokens","backend-resource-58be9382fd58cc28:POST:update_identifier","backend-resource-58be9382fd58cc28:POST:set_instance_tags","backend-resource-58be9382fd58cc28:POST:remove_instance_tags","backend-resource-58be9382fd58cc28:POST:set_facility_tags","backend-resource-58be9382fd58cc28:POST:remove_facility_tags"]},"backend":{"resources":[{"id":"backend-resource-58be9382fd58cc28","localPrefix":"patient","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","basename":"patient","source":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"conditions":[],"repository":"repositories/platform/mansoq-core","classSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":49,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"description":"","path":"/api/v1/patient/","mountStatus":"verified core mount in config/urls.py","operationIds":["backend-resource-58be9382fd58cc28:GET:list","backend-resource-58be9382fd58cc28:POST:create","backend-resource-58be9382fd58cc28:GET:retrieve","backend-resource-58be9382fd58cc28:PUT:update","backend-resource-58be9382fd58cc28:PATCH:partial_update","backend-resource-58be9382fd58cc28:DELETE:destroy","backend-resource-58be9382fd58cc28:POST:upsert","backend-resource-58be9382fd58cc28:POST:search","backend-resource-58be9382fd58cc28:POST:search_retrieve","backend-resource-58be9382fd58cc28:GET:get_users","backend-resource-58be9382fd58cc28:POST:add_user","backend-resource-58be9382fd58cc28:POST:delete_user","backend-resource-58be9382fd58cc28:GET:get_appointments","backend-resource-58be9382fd58cc28:GET:get_tokens","backend-resource-58be9382fd58cc28:POST:update_identifier","backend-resource-58be9382fd58cc28:POST:set_instance_tags","backend-resource-58be9382fd58cc28:POST:remove_instance_tags","backend-resource-58be9382fd58cc28:POST:set_facility_tags","backend-resource-58be9382fd58cc28:POST:remove_facility_tags"],"unresolvedViewset":false,"reviewStatus":"registered resource enumerated; behavioral review pending"}],"operations":[{"id":"backend-resource-58be9382fd58cc28:GET:list","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"GET","path":"/api/v1/patient/","declaredPattern":"/api/v1/patient/","action":"list","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":false,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":168,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"declared/inherited method","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:168:list","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:161:serialize_list","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:330:get_read_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:508:get_serializer_list_context"],"schemaIds":{"response":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientListSpec"},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[]},{"id":"backend-resource-58be9382fd58cc28:POST:create","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"POST","path":"/api/v1/patient/","declaredPattern":"/api/v1/patient/","action":"create","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":false,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":136,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"declared/inherited method","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:136:create","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:65:authorize_create","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:142:handle_create","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:130:clean_create_data","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:73:validate_data","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:120:perform_create","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:139:get_serializer_create_context","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:325:get_retrieve_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:330:get_read_pydantic_model"],"schemaIds":{"request":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientCreateSpec","response":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientRetrieveSpec"},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[]},{"id":"backend-resource-58be9382fd58cc28:GET:retrieve","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"GET","path":"/api/v1/patient/{external_id}/","declaredPattern":"/api/v1/patient/{external_id}/","action":"retrieve","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":true,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":83,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"declared/inherited method","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:83:retrieve","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:80:authorize_retrieve","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:325:get_retrieve_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:505:get_serializer_retrieve_context","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:330:get_read_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:508:get_serializer_list_context"],"schemaIds":{"response":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientRetrieveSpec"},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[{"name":"external_id","in":"path","type":"router lookup string; semantic ID validation requires handler/schema review","required":true,"source":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}]},{"id":"backend-resource-58be9382fd58cc28:PUT:update","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"PUT","path":"/api/v1/patient/{external_id}/","declaredPattern":"/api/v1/patient/{external_id}/","action":"update","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":true,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":214,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"declared/inherited method","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:214:update","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:59:authorize_update","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:228:handle_update","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:201:clean_update_data","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:335:get_update_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:73:validate_data","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:161:perform_update","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:222:get_serializer_update_context","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:325:get_retrieve_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:330:get_read_pydantic_model"],"schemaIds":{"request":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientUpdateSpec","response":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientRetrieveSpec"},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[{"name":"external_id","in":"path","type":"router lookup string; semantic ID validation requires handler/schema review","required":true,"source":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}]},{"id":"backend-resource-58be9382fd58cc28:PATCH:partial_update","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"PATCH","path":"/api/v1/patient/{external_id}/","declaredPattern":"/api/v1/patient/{external_id}/","action":"partial_update","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":true,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":218,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"declared/inherited method","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:218:partial_update","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:214:update","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:228:handle_update","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:201:clean_update_data","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:335:get_update_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:73:validate_data","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:59:authorize_update","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:161:perform_update","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:222:get_serializer_update_context","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:325:get_retrieve_pydantic_model"],"schemaIds":{"request":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientUpdateSpec","response":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientRetrieveSpec"},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[{"name":"external_id","in":"path","type":"router lookup string; semantic ID validation requires handler/schema review","required":true,"source":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}]},{"id":"backend-resource-58be9382fd58cc28:DELETE:destroy","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"DELETE","path":"/api/v1/patient/{external_id}/","declaredPattern":"/api/v1/patient/{external_id}/","action":"destroy","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":true,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":261,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"declared/inherited method","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:261:destroy","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:69:authorize_destroy","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:258:validate_destroy","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:253:perform_destroy"],"schemaIds":{},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[{"name":"external_id","in":"path","type":"router lookup string; semantic ID validation requires handler/schema review","required":true,"source":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}]},{"id":"backend-resource-58be9382fd58cc28:POST:upsert","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"POST","path":"/api/v1/patient/upsert/","declaredPattern":"/api/v1/patient/upsert/","action":"upsert","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":false,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":271,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"@action declaration","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:271:upsert","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:228:handle_update","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:142:handle_create","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:201:clean_update_data","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:335:get_update_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:73:validate_data","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:59:authorize_update","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:161:perform_update","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:222:get_serializer_update_context","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:325:get_retrieve_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:130:clean_create_data","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:65:authorize_create","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:120:perform_create","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:139:get_serializer_create_context","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:330:get_read_pydantic_model"],"schemaIds":{},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[]},{"id":"backend-resource-58be9382fd58cc28:POST:search","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"POST","path":"/api/v1/patient/search/","declaredPattern":"/api/v1/patient/search/","action":"search","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":false,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":204,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"@action declaration","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:204:search","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset"],"schemaIds":{},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[]},{"id":"backend-resource-58be9382fd58cc28:POST:search_retrieve","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"POST","path":"/api/v1/patient/search_retrieve/","declaredPattern":"/api/v1/patient/search_retrieve/","action":"search_retrieve","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":false,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":278,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"@action declaration","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:278:search_retrieve","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:505:get_serializer_retrieve_context","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:508:get_serializer_list_context"],"schemaIds":{"decorator responses":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientRetrieveSpec"},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[]},{"id":"backend-resource-58be9382fd58cc28:GET:get_users","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"GET","path":"/api/v1/patient/{external_id}/get_users/","declaredPattern":"/api/v1/patient/{external_id}/get_users/","action":"get_users","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":true,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":293,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"@action declaration","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:293:get_users","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset"],"schemaIds":{},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[{"name":"external_id","in":"path","type":"router lookup string; semantic ID validation requires handler/schema review","required":true,"source":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}]},{"id":"backend-resource-58be9382fd58cc28:POST:add_user","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"POST","path":"/api/v1/patient/{external_id}/add_user/","declaredPattern":"/api/v1/patient/{external_id}/add_user/","action":"add_user","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":true,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":308,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"@action declaration","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:308:add_user","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:59:authorize_update"],"schemaIds":{"decorator responses":"repositories/platform/mansoq-core:mansoq.emr.resources.user.spec.UserSpec"},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[{"name":"external_id","in":"path","type":"router lookup string; semantic ID validation requires handler/schema review","required":true,"source":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}]},{"id":"backend-resource-58be9382fd58cc28:POST:delete_user","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"POST","path":"/api/v1/patient/{external_id}/delete_user/","declaredPattern":"/api/v1/patient/{external_id}/delete_user/","action":"delete_user","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":true,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":324,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"@action declaration","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:324:delete_user","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:59:authorize_update"],"schemaIds":{},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[{"name":"external_id","in":"path","type":"router lookup string; semantic ID validation requires handler/schema review","required":true,"source":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}]},{"id":"backend-resource-58be9382fd58cc28:GET:get_appointments","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"GET","path":"/api/v1/patient/{external_id}/get_appointments/","declaredPattern":"/api/v1/patient/{external_id}/get_appointments/","action":"get_appointments","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":true,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":336,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"@action declaration","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:336:get_appointments","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset"],"schemaIds":{},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[{"name":"external_id","in":"path","type":"router lookup string; semantic ID validation requires handler/schema review","required":true,"source":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}]},{"id":"backend-resource-58be9382fd58cc28:GET:get_tokens","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"GET","path":"/api/v1/patient/{external_id}/get_tokens/","declaredPattern":"/api/v1/patient/{external_id}/get_tokens/","action":"get_tokens","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":true,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":369,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"@action declaration","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:369:get_tokens","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset"],"schemaIds":{},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[{"name":"external_id","in":"path","type":"router lookup string; semantic ID validation requires handler/schema review","required":true,"source":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}]},{"id":"backend-resource-58be9382fd58cc28:POST:update_identifier","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"POST","path":"/api/v1/patient/{external_id}/update_identifier/","declaredPattern":"/api/v1/patient/{external_id}/update_identifier/","action":"update_identifier","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":true,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":403,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"@action declaration","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:403:update_identifier","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:59:authorize_update"],"schemaIds":{"decorator request":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientIdentifierConfigRequest","decorator responses":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientRetrieveSpec"},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[{"name":"external_id","in":"path","type":"router lookup string; semantic ID validation requires handler/schema review","required":true,"source":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}]},{"id":"backend-resource-58be9382fd58cc28:POST:set_instance_tags","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"POST","path":"/api/v1/patient/{external_id}/set_instance_tags/","declaredPattern":"/api/v1/patient/{external_id}/set_instance_tags/","action":"set_instance_tags","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":true,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":449,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"@action declaration","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:449:set_instance_tags","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:59:authorize_update","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:83:retrieve","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:80:authorize_retrieve","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:325:get_retrieve_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:505:get_serializer_retrieve_context","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:330:get_read_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:508:get_serializer_list_context"],"schemaIds":{},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[{"name":"external_id","in":"path","type":"router lookup string; semantic ID validation requires handler/schema review","required":true,"source":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}]},{"id":"backend-resource-58be9382fd58cc28:POST:remove_instance_tags","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"POST","path":"/api/v1/patient/{external_id}/remove_instance_tags/","declaredPattern":"/api/v1/patient/{external_id}/remove_instance_tags/","action":"remove_instance_tags","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":true,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":464,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"@action declaration","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:464:remove_instance_tags","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:59:authorize_update","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:83:retrieve","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:80:authorize_retrieve","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:325:get_retrieve_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:505:get_serializer_retrieve_context","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:330:get_read_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:508:get_serializer_list_context"],"schemaIds":{},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[{"name":"external_id","in":"path","type":"router lookup string; semantic ID validation requires handler/schema review","required":true,"source":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}]},{"id":"backend-resource-58be9382fd58cc28:POST:set_facility_tags","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"POST","path":"/api/v1/patient/{external_id}/set_facility_tags/","declaredPattern":"/api/v1/patient/{external_id}/set_facility_tags/","action":"set_facility_tags","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":true,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":478,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"@action declaration","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:478:set_facility_tags","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:59:authorize_update","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:83:retrieve","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:80:authorize_retrieve","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:325:get_retrieve_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:505:get_serializer_retrieve_context","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:330:get_read_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:508:get_serializer_list_context"],"schemaIds":{},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[{"name":"external_id","in":"path","type":"router lookup string; semantic ID validation requires handler/schema review","required":true,"source":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}]},{"id":"backend-resource-58be9382fd58cc28:POST:remove_facility_tags","resourceId":"backend-resource-58be9382fd58cc28","repository":"repositories/platform/mansoq-core","boundary":"primary-core","method":"POST","path":"/api/v1/patient/{external_id}/remove_facility_tags/","declaredPattern":"/api/v1/patient/{external_id}/remove_facility_tags/","action":"remove_facility_tags","viewset":"PatientViewSet","classId":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","detail":true,"allowedByDeclaredHttpMethods":true,"mountStatus":"verified core mount in config/urls.py","routeEvidence":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":493,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"@action declaration","methodEvidenceIds":["repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:493:remove_facility_tags","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:59:authorize_update","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:83:retrieve","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:80:authorize_retrieve","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:325:get_retrieve_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:505:get_serializer_retrieve_context","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:330:get_read_pydantic_model","repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:508:get_serializer_list_context"],"schemaIds":{},"classPermissionEvidence":[],"filterEvidence":[{"name":"ordering_fields","value":["created_date","modified_date"],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"filter_backends","value":[null,null],"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":56,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"name","type":"CharFilter","lookup":"icontains","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"phone_number","type":"CharFilter","lookup":"iexact","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[{"name":"external_id","in":"path","type":"router lookup string; semantic ID validation requires handler/schema review","required":true,"source":{"path":"repositories/platform/mansoq-core/config/api_router.py","line":532,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}]}],"methodEvidence":[{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:168:list","name":"list","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRListMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":168,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:93:get_queryset","name":"get_queryset","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":93,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[{"name":"organization","in":"query","type":"not declared at read site","required":"direct indexing; validation may be upstream","readStyle":"indexed","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":113,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"permissionChecks":[{"permission":"get_filtered_patients","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":116,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"permission":"can_view_clinical_data","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":105,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[{"condition":"settings.PATIENT_GLOBAL_EDIT_ACCESS_ENABLED","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":100,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:161:serialize_list","name":"serialize_list","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRListMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":161,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[{"name":"obj","type":"unspecified","required":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":161,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:330:get_read_pydantic_model","name":"get_read_pydantic_model","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRBaseViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":330,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:508:get_serializer_list_context","name":"get_serializer_list_context","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":508,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[{"permission":"can_list_facility_tag_config","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":514,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"declaredErrors":[{"exception":"PermissionDenied","message":"Cannot view facility tags","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":517,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:136:create","name":"create","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRCreateMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":136,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:65:authorize_create","name":"authorize_create","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":65,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[{"name":"request_obj","type":"unspecified","required":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":65,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"parametersRead":[],"permissionChecks":[{"permission":"can_create_patient","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":66,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"declaredErrors":[{"exception":"PermissionDenied","message":"Cannot Create Patient","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":67,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:142:handle_create","name":"handle_create","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRCreateMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":142,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[{"name":"request_data","type":"unspecified","required":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":142,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:130:clean_create_data","name":"clean_create_data","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRCreateMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":130,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[{"name":"request_data","type":"unspecified","required":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":130,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:73:validate_data","name":"validate_data","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":73,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[{"name":"instance","type":"unspecified","required":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":73,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"model_obj","type":"unspecified","required":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":73,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"parametersRead":[],"permissionChecks":[],"declaredErrors":[{"exception":"ValidationError","message":"Date of birth cannot be after the date of death","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":80,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"exception":"ValidationError","message":"Year of birth cannot be after the year of death","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":91,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:120:perform_create","name":"perform_create","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":120,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[{"name":"instance","type":"unspecified","required":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":120,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"parametersRead":[],"permissionChecks":[],"declaredErrors":[{"exception":"ValidationError","message":"Patient creation failed, try again after a while","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":126,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:139:get_serializer_create_context","name":"get_serializer_create_context","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRCreateMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":139,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:325:get_retrieve_pydantic_model","name":"get_retrieve_pydantic_model","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRBaseViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":325,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:83:retrieve","name":"retrieve","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRRetrieveMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":83,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:80:authorize_retrieve","name":"authorize_retrieve","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRRetrieveMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":80,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[{"name":"model_instance","type":"unspecified","required":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":80,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:505:get_serializer_retrieve_context","name":"get_serializer_retrieve_context","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":505,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:214:update","name":"update","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRUpdateMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":214,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:59:authorize_update","name":"authorize_update","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":59,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[{"name":"request_obj","type":"unspecified","required":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":59,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"model_instance","type":"unspecified","required":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":59,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"parametersRead":[],"permissionChecks":[{"permission":"can_write_patient_obj","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":60,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"declaredErrors":[{"exception":"PermissionDenied","message":"Cannot Update Patient","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":63,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:228:handle_update","name":"handle_update","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRUpdateMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":228,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[{"name":"instance","type":"unspecified","required":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":228,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"request_data","type":"unspecified","required":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":228,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:201:clean_update_data","name":"clean_update_data","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRUpdateMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":201,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[{"name":"request_data","type":"unspecified","required":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":201,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"keep_fields","type":"set | None","required":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":201,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:335:get_update_pydantic_model","name":"get_update_pydantic_model","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRBaseViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":335,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:161:perform_update","name":"perform_update","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":161,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[{"name":"instance","type":"unspecified","required":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":161,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:222:get_serializer_update_context","name":"get_serializer_update_context","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRUpdateMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":222,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:218:partial_update","name":"partial_update","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRUpdateMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":218,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:261:destroy","name":"destroy","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRDestroyMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":261,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[{"value":null,"symbol":"status.HTTP_204_NO_CONTENT","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":266,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:69:authorize_destroy","name":"authorize_destroy","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":69,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[{"name":"instance","type":"unspecified","required":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":69,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"parametersRead":[],"permissionChecks":[],"declaredErrors":[{"exception":"PermissionDenied","message":"Cannot delete patient","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":71,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:258:validate_destroy","name":"validate_destroy","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRDestroyMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":258,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[{"name":"instance","type":"unspecified","required":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":258,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:253:perform_destroy","name":"perform_destroy","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRDestroyMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":253,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[{"name":"instance","type":"unspecified","required":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":253,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py:271:upsert","name":"upsert","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.base.EMRUpsertMixin","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":271,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[{"name":"datapoints","in":"body","type":"not declared at read site","required":"not established","readStyle":"get","dynamicName":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":274,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"permissionChecks":[],"declaredErrors":[{"exception":"RestFrameworkValidationError","message":"Invalid request data","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":273,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"exception":"RestFrameworkValidationError","message":"No datapoints provided","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":276,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"exception":"RestFrameworkValidationError","message":"Too many datapoints provided","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":278,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"explicitResponseStatuses":[{"value":400,"symbol":null,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":307,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"conditions":[{"condition":"conditional/computed expression; inspect pinned declaration comparison settings.MAX_DATAPOINTS_PER_UPSERT","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/base.py","line":277,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:204:search","name":"search","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":204,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[{"permission":"can_list_facility_patient_identifier_config","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":224,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"declaredErrors":[{"exception":"ValidationError","message":"Either phone number or config is required","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":210,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"exception":"ValidationError","message":"Config not found","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":221,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"exception":"PermissionDenied","message":"Cannot search for patient identifier configs in this facility","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":229,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"exception":"ValidationError","message":"Value is required","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":237,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:278:search_retrieve","name":"search_retrieve","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":278,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[{"exception":"PermissionDenied","message":"No valid patients found","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":290,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"explicitResponseStatuses":[],"conditions":[],"schemaIds":["repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientRetrieveSpec"],"schemaUsages":[{"purpose":"decorator responses","schemaId":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientRetrieveSpec","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":274,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"unconditionalRaise":true,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:293:get_users","name":"get_users","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":293,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:308:add_user","name":"add_user","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":308,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[{"exception":"ValidationError","message":"User already exists","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":315,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"explicitResponseStatuses":[],"conditions":[],"schemaIds":["repositories/platform/mansoq-core:mansoq.emr.resources.user.spec.UserSpec"],"schemaUsages":[{"purpose":"decorator responses","schemaId":"repositories/platform/mansoq-core:mansoq.emr.resources.user.spec.UserSpec","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":306,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:324:delete_user","name":"delete_user","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":324,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[{"exception":"ValidationError","message":"User does not exist","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":330,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:336:get_appointments","name":"get_appointments","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":336,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[{"name":"facility","in":"query","type":"not declared at read site","required":"not established","readStyle":"get","dynamicName":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":339,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"permissionChecks":[{"permission":"can_list_booking_on_facility","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":347,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"declaredErrors":[{"exception":"PermissionDenied","message":"Cannot list bookings","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":350,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:369:get_tokens","name":"get_tokens","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":369,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[{"name":"facility","in":"query","type":"not declared at read site","required":"not established","readStyle":"get","dynamicName":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":372,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"permissionChecks":[{"permission":"can_list_token_on_facility","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":380,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"declaredErrors":[{"exception":"PermissionDenied","message":"Cannot list tokens","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":383,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:403:update_identifier","name":"update_identifier","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":403,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[{"exception":"ValidationError","message":"Cannot update auto maintained identifier","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":411,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"exception":"ValidationError","message":"Value is required","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":415,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"explicitResponseStatuses":[],"conditions":[],"schemaIds":["repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientIdentifierConfigRequest","repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientRetrieveSpec"],"schemaUsages":[{"purpose":"decorator request","schemaId":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientIdentifierConfigRequest","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":399,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"purpose":"decorator responses","schemaId":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientRetrieveSpec","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":399,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:449:set_instance_tags","name":"set_instance_tags","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":449,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:464:remove_instance_tags","name":"remove_instance_tags","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":464,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:478:set_facility_tags","name":"set_facility_tags","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":478,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py:493:remove_facility_tags","name":"remove_facility_tags","owner":"repositories/platform/mansoq-core:mansoq.emr.api.viewsets.patient.PatientViewSet","summary":"","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/api/viewsets/patient.py","line":493,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"}],"schemas":[{"id":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientListSpec","name":"PatientListSpec","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":211,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"kind":"Python declared schema/model evidence","fields":[{"name":"meta","type":"dict","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/base.py","line":16,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"id","type":"UUID4 | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":61,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"name","type":"str","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":62,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"gender","type":"GenderChoices","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":63,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"phone_number","type":"PhoneNumber","required":true,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":64,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{"max_length":14}},{"name":"emergency_phone_number","type":"PhoneNumber | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":65,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{"max_length":14}},{"name":"address","type":"str | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":66,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"permanent_address","type":"str | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":67,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"pincode","type":"int | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":68,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"deceased_datetime","type":"StrictTZAwareDateTime | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":69,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"blood_group","type":"BloodGroupChoices | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":70,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"extensions","type":"dict","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/extensions/validator.py","line":38,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"date_of_birth","type":"datetime.date | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":212,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"year_of_birth","type":"datetime.date | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":213,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"created_date","type":"datetime.datetime","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":215,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"modified_date","type":"datetime.datetime","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":216,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"instance_tags","type":"list[dict]","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":218,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"facility_tags","type":"list[dict]","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":219,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}}],"validation":[{"methodId":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py:74:validate_deceased_datetime","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":74,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"baseTypes":["ExtensionListRenderer","PatientBaseSpec"],"reviewStatus":"declared fields extracted; runtime validation review pending","referencedSchemaIds":["repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.GenderChoices","repositories/platform/mansoq-core:mansoq.emr.resources.base.PhoneNumber","repositories/platform/mansoq-core:mansoq.emr.utils.datetime_type.StrictTZAwareDateTime","repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.BloodGroupChoices"]},{"id":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.GenderChoices","name":"GenderChoices","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":42,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"kind":"Python enum/choice declaration","fields":[],"validation":[],"baseTypes":["str","Enum"],"reviewStatus":"declared fields extracted; runtime validation review pending","members":[{"name":"male","value":"male","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":43,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"female","value":"female","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":44,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"non_binary","value":"non_binary","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":45,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"transgender","value":"transgender","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"referencedSchemaIds":[]},{"id":"repositories/platform/mansoq-core:mansoq.emr.resources.base.PhoneNumber","name":"PhoneNumber","kind":"Python type alias declaration","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/base.py","line":171,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"fields":[],"validation":[],"baseTypes":[],"expression":"Annotated[Union[str, phonenumbers.PhoneNumber()], PhoneNumberValidator()]","referencedSchemaIds":[],"reviewStatus":"alias/type/validator names extracted; runtime validation review pending"},{"id":"repositories/platform/mansoq-core:mansoq.emr.utils.datetime_type.StrictTZAwareDateTime","name":"StrictTZAwareDateTime","kind":"Python type alias declaration","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/utils/datetime_type.py","line":22,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"fields":[],"validation":[{"methodId":"repositories/platform/mansoq-core/mansoq/emr/utils/datetime_type.py:7:validate_timezone_aware","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/utils/datetime_type.py","line":7,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"baseTypes":[],"expression":"Annotated[datetime, AfterValidator(validate_timezone_aware)]","referencedSchemaIds":[],"reviewStatus":"alias/type/validator names extracted; runtime validation review pending"},{"id":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.BloodGroupChoices","name":"BloodGroupChoices","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":30,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"kind":"Python enum/choice declaration","fields":[],"validation":[],"baseTypes":["str","Enum"],"reviewStatus":"declared fields extracted; runtime validation review pending","members":[{"name":"A_negative","value":"A_negative","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":31,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"A_positive","value":"A_positive","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":32,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"B_negative","value":"B_negative","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":33,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"B_positive","value":"B_positive","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":34,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"AB_negative","value":"AB_negative","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":35,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"AB_positive","value":"AB_positive","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":36,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"O_negative","value":"O_negative","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":37,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"O_positive","value":"O_positive","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":38,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"unknown","value":"unknown","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":39,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"referencedSchemaIds":[]},{"id":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientCreateSpec","name":"PatientCreateSpec","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":104,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"kind":"Python declared schema/model evidence","fields":[{"name":"meta","type":"dict","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/base.py","line":16,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"id","type":"UUID4 | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":61,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"name","type":"str","required":true,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":105,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"gender","type":"GenderChoices","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":63,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"phone_number","type":"PhoneNumber","required":true,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":64,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{"max_length":14}},{"name":"emergency_phone_number","type":"PhoneNumber | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":65,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{"max_length":14}},{"name":"address","type":"str | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":66,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"permanent_address","type":"str | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":67,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"pincode","type":"int | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":68,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"deceased_datetime","type":"StrictTZAwareDateTime | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":69,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"blood_group","type":"BloodGroupChoices | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":70,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"extensions","type":"dict","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/extensions/validator.py","line":25,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"geo_organization","type":"UUID4","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":106,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"date_of_birth","type":"datetime.date | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":107,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"age","type":"int | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":109,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"identifiers","type":"list[PatientIdentifierConfigRequest]","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":111,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"tags","type":"list[UUID4]","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":113,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}}],"validation":[{"methodId":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py:74:validate_deceased_datetime","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":74,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"methodId":"repositories/platform/mansoq-core/mansoq/emr/extensions/validator.py:29:validate_extensions","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/extensions/validator.py","line":29,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"methodId":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py:117:validate_geo_organization","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":117,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"methodId":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py:125:validate_identifiers","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":125,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"baseTypes":["ExtensionValidator","PatientBaseSpec"],"reviewStatus":"declared fields extracted; runtime validation review pending","referencedSchemaIds":["repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.GenderChoices","repositories/platform/mansoq-core:mansoq.emr.resources.base.PhoneNumber","repositories/platform/mansoq-core:mansoq.emr.utils.datetime_type.StrictTZAwareDateTime","repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.BloodGroupChoices","repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientIdentifierConfigRequest"]},{"id":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientIdentifierConfigRequest","name":"PatientIdentifierConfigRequest","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":99,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"kind":"Python declared schema/model evidence","fields":[{"name":"config","type":"UUID4","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":100,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"value","type":"str","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":101,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}}],"validation":[],"baseTypes":["BaseModel"],"reviewStatus":"declared fields extracted; runtime validation review pending","referencedSchemaIds":[]},{"id":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientRetrieveSpec","name":"PatientRetrieveSpec","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":252,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"kind":"Python declared schema/model evidence","fields":[{"name":"meta","type":"dict","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/base.py","line":16,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"permissions","type":"list[str]","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/permissions.py","line":9,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"id","type":"UUID4 | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":61,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"name","type":"str","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":62,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"gender","type":"GenderChoices","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":63,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"phone_number","type":"PhoneNumber","required":true,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":64,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{"max_length":14}},{"name":"emergency_phone_number","type":"PhoneNumber | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":65,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{"max_length":14}},{"name":"address","type":"str | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":66,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"permanent_address","type":"str | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":67,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"pincode","type":"int | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":68,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"deceased_datetime","type":"StrictTZAwareDateTime | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":69,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"blood_group","type":"BloodGroupChoices | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":70,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"extensions","type":"dict","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":263,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"date_of_birth","type":"datetime.date | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":212,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"year_of_birth","type":"datetime.date | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":213,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"created_date","type":"datetime.datetime","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":215,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"modified_date","type":"datetime.datetime","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":216,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"instance_tags","type":"list[dict]","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":218,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"facility_tags","type":"list[dict]","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":219,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"geo_organization","type":"dict","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":255,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"created_by","type":"dict | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":257,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"updated_by","type":"dict | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":258,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"instance_identifiers","type":"list[PatientIdentifierResponse]","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":260,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"facility_identifiers","type":"list[PatientIdentifierResponse]","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":261,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}}],"validation":[{"methodId":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py:74:validate_deceased_datetime","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":74,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"baseTypes":["ExtensionRetrieveRenderer","PatientListSpec","PatientPermissionsMixin"],"reviewStatus":"declared fields extracted; runtime validation review pending","referencedSchemaIds":["repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.GenderChoices","repositories/platform/mansoq-core:mansoq.emr.resources.base.PhoneNumber","repositories/platform/mansoq-core:mansoq.emr.utils.datetime_type.StrictTZAwareDateTime","repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.BloodGroupChoices","repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientIdentifierResponse"]},{"id":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientIdentifierResponse","name":"PatientIdentifierResponse","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":247,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"kind":"Python declared schema/model evidence","fields":[{"name":"config","type":"PatientIdentifierListSpec","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":248,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"value","type":"str","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":249,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}}],"validation":[],"baseTypes":["BaseModel"],"reviewStatus":"declared fields extracted; runtime validation review pending","referencedSchemaIds":["repositories/platform/mansoq-core:mansoq.emr.resources.patient_identifier.spec.PatientIdentifierListSpec"]},{"id":"repositories/platform/mansoq-core:mansoq.emr.resources.patient_identifier.spec.PatientIdentifierListSpec","name":"PatientIdentifierListSpec","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":79,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"kind":"Python declared schema/model evidence","fields":[{"name":"meta","type":"dict","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/base.py","line":16,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"id","type":"UUID4 | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":62,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"config","type":"IdentifierConfig","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":63,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"status","type":"PatientIdentifierStatus","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":64,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}}],"validation":[],"baseTypes":["BasePatientIdentifierSpec"],"reviewStatus":"declared fields extracted; runtime validation review pending","referencedSchemaIds":["repositories/platform/mansoq-core:mansoq.emr.resources.patient_identifier.spec.IdentifierConfig","repositories/platform/mansoq-core:mansoq.emr.resources.patient_identifier.spec.PatientIdentifierStatus"]},{"id":"repositories/platform/mansoq-core:mansoq.emr.resources.patient_identifier.spec.IdentifierConfig","name":"IdentifierConfig","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":34,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"kind":"Python declared schema/model evidence","fields":[{"name":"use","type":"PatientIdentifierUse","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":35,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"description","type":"str","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":36,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"system","type":"str","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":37,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"required","type":"bool","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":38,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"unique","type":"bool","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":39,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"regex","type":"str","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":40,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"display","type":"str","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":41,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"retrieve_config","type":"PatientIdentifierRetrieveConfig","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":42,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"default_value","type":"str | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":43,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"auto_maintained","type":"bool","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":44,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}}],"validation":[{"methodId":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py:48:validate_default_value","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":48,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"baseTypes":["BaseModel"],"reviewStatus":"declared fields extracted; runtime validation review pending","referencedSchemaIds":["repositories/platform/mansoq-core:mansoq.emr.resources.patient_identifier.spec.PatientIdentifierUse","repositories/platform/mansoq-core:mansoq.emr.resources.patient_identifier.spec.PatientIdentifierRetrieveConfig"]},{"id":"repositories/platform/mansoq-core:mansoq.emr.resources.patient_identifier.spec.PatientIdentifierUse","name":"PatientIdentifierUse","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":13,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"kind":"Python enum/choice declaration","fields":[],"validation":[],"baseTypes":["str","Enum"],"reviewStatus":"declared fields extracted; runtime validation review pending","members":[{"name":"usual","value":"usual","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":14,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"official","value":"official","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":15,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"temp","value":"temp","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":16,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"secondary","value":"secondary","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":17,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"old","value":"old","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":18,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"referencedSchemaIds":[]},{"id":"repositories/platform/mansoq-core:mansoq.emr.resources.patient_identifier.spec.PatientIdentifierRetrieveConfig","name":"PatientIdentifierRetrieveConfig","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":27,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"kind":"Python declared schema/model evidence","fields":[{"name":"retrieve_with_dob","type":"bool","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":28,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"retrieve_with_year_of_birth","type":"bool","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":29,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"retrieve_with_otp","type":"bool","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":30,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"retrieve_partial_search","type":"bool","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":31,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}}],"validation":[],"baseTypes":["BaseModel"],"reviewStatus":"declared fields extracted; runtime validation review pending","referencedSchemaIds":[]},{"id":"repositories/platform/mansoq-core:mansoq.emr.resources.patient_identifier.spec.PatientIdentifierStatus","name":"PatientIdentifierStatus","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":21,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"kind":"Python enum/choice declaration","fields":[],"validation":[],"baseTypes":["str","Enum"],"reviewStatus":"declared fields extracted; runtime validation review pending","members":[{"name":"draft","value":"draft","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":22,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"active","value":"active","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":23,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"inactive","value":"inactive","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient_identifier/spec.py","line":24,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"referencedSchemaIds":[]},{"id":"repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientUpdateSpec","name":"PatientUpdateSpec","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":153,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"kind":"Python declared schema/model evidence","fields":[{"name":"meta","type":"dict","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/base.py","line":16,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"id","type":"UUID4 | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":61,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"name","type":"str | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":154,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"gender","type":"GenderChoices | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":155,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"phone_number","type":"PhoneNumber | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":156,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{"max_length":14}},{"name":"emergency_phone_number","type":"PhoneNumber | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":157,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{"max_length":14}},{"name":"address","type":"str | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":158,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"permanent_address","type":"str | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":159,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"pincode","type":"int | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":160,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"deceased_datetime","type":"StrictTZAwareDateTime | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":69,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"blood_group","type":"BloodGroupChoices | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":161,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"extensions","type":"dict","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/extensions/validator.py","line":25,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"date_of_birth","type":"datetime.date | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":162,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"age","type":"int | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":163,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"geo_organization","type":"UUID4 | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":164,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"identifiers","type":"list[PatientIdentifierConfigRequest]","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":166,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}}],"validation":[{"methodId":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py:74:validate_deceased_datetime","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":74,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"methodId":"repositories/platform/mansoq-core/mansoq/emr/extensions/validator.py:29:validate_extensions","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/extensions/validator.py","line":29,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"methodId":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py:170:validate_geo_organization","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":170,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"methodId":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py:196:validate_identifiers","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/patient/spec.py","line":196,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"baseTypes":["ExtensionValidator","PatientBaseSpec"],"reviewStatus":"declared fields extracted; runtime validation review pending","referencedSchemaIds":["repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.GenderChoices","repositories/platform/mansoq-core:mansoq.emr.resources.base.PhoneNumber","repositories/platform/mansoq-core:mansoq.emr.utils.datetime_type.StrictTZAwareDateTime","repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.BloodGroupChoices","repositories/platform/mansoq-core:mansoq.emr.resources.patient.spec.PatientIdentifierConfigRequest"]},{"id":"repositories/platform/mansoq-core:mansoq.emr.resources.user.spec.UserSpec","name":"UserSpec","source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/user/spec.py","line":108,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"kind":"Python declared schema/model evidence","fields":[{"name":"meta","type":"dict","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/base.py","line":16,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"id","type":"UUID4 | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/user/spec.py","line":27,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"first_name","type":"str","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/user/spec.py","line":29,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"last_name","type":"str","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/user/spec.py","line":30,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"phone_number","type":"str","required":true,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/user/spec.py","line":114,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{"max_length":14}},{"name":"prefix","type":"str | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/user/spec.py","line":33,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{"max_length":10}},{"name":"suffix","type":"str | None","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/user/spec.py","line":34,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{"max_length":50}},{"name":"last_login","type":"str","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/user/spec.py","line":109,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"profile_picture_url","type":"str","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/user/spec.py","line":110,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"gender","type":"str","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/user/spec.py","line":111,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"username","type":"str","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/user/spec.py","line":112,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"mfa_enabled","type":"bool","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/user/spec.py","line":113,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"deleted","type":"bool","required":false,"hasDefault":true,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/user/spec.py","line":115,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}},{"name":"role_orgs","type":"dict","required":true,"hasDefault":false,"source":{"path":"repositories/platform/mansoq-core/mansoq/emr/resources/user/spec.py","line":116,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"constraints":{}}],"validation":[],"baseTypes":["UserBaseSpec"],"reviewStatus":"declared fields extracted; runtime validation review pending","referencedSchemaIds":[]}],"frameworkSettings":[{"name":"DEFAULT_AUTHENTICATION_CLASSES","value":["config.authentication.CustomJWTAuthentication","config.authentication.CustomBasicAuthentication","rest_framework.authentication.SessionAuthentication","rest_framework.authentication.TokenAuthentication"],"source":{"path":"repositories/platform/mansoq-core/config/settings/base.py","line":372,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"scope":"source default; deployment overrides and action-level policies may differ"},{"name":"DEFAULT_PERMISSION_CLASSES","value":["rest_framework.permissions.IsAuthenticated","mansoq.security.utils.permission_class.MansoqAuthentication"],"source":{"path":"repositories/platform/mansoq-core/config/settings/base.py","line":372,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"scope":"source default; deployment overrides and action-level policies may differ"},{"name":"DEFAULT_PAGINATION_CLASS","value":"mansoq.utils.pagination.mansoq_pagination.MansoqLimitOffsetPagination","source":{"path":"repositories/platform/mansoq-core/config/settings/base.py","line":372,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"scope":"source default; deployment overrides and action-level policies may differ"},{"name":"PAGE_SIZE","value":14,"source":{"path":"repositories/platform/mansoq-core/config/settings/base.py","line":372,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"scope":"source default; deployment overrides and action-level policies may differ"}]},"frontend":{"operations":[],"schemas":[]},"services":{"operations":[]},"boundaries":[]}