# Create Patient Endpoint: POST /patient Version: v1 Security: x-api-key, A-api-key ## Request fields (application/json): - `first_name` (string, required) - `surname` (string, required) - `date_of_birth` (string) - `address_1` (string) - `suburb` (string) - `address_state` (string) - `postcode` (string) - `country` (string) - `email` (string) - `gender` (string) - `home_phone` (string) - `mobile` (string) - `preferred_phone` (integer) Home Phone = 1 Mobile = 3 Enum: 1, 3 - `fee_cat_id` (integer) - `default_practitioner_business_id` (integer) - `default_sms_reminder` (boolean) - `default_email_reminder` (boolean) - `default_sms_confirmation` (boolean) - `default_email_confirmation` (boolean) - `default_sms_follow_up` (boolean) - `default_email_follow_up` (boolean) - `sms_marketing_type` (integer) Soft Opt-In = 1, Opt-In = 2, Soft Opt-Out = 3, Opt-Out = 4 Enum: 1, 2, 3, 4 - `email_marketing_type` (integer) Soft Opt-In = 1, Opt-In = 2, Soft Opt-Out = 3, Opt-Out = 4 Enum: 1, 2, 3, 4 - `timezone` (string) see: [timezones](/guides/timezones) Example: "Australia/Adelaide" - `sex_id` (integer) - `pronoun_id` (integer) ## Response 201 fields (application/json): - `links` (object) - `links.self` (string, required) Example: "https://api.pracsuite.com/v1/patient/1" - `links.accounts` (string) Example: "https://api.pracsuite.com/v1/patient/1/account" - `links.appointments` (string) Example: "https://api.pracsuite.com/v1/patient/1/appointment" - `client_id` (integer) Example: 1 - `first_name` (string) - `tenant_id` (integer) - `title` (string) - `middle_name` (string) - `surname` (string) - `preferred_name` (string) - `date_of_birth` (string) - `email` (string) - `gender` (string) - `address_1` (string) - `address_2` (string) - `address_3` (string) - `address_4` (string) - `suburb` (string) - `address_state` (string) - `postcode` (string) - `country` (string) - `home_phone` (string) - `work_phone` (string) - `mobile` (string) - `fax` (string) - `file_no` (string) - `patient_notes` (string) - `patient_warnings` (string) - `fee_category` (string) - `health_fund` (string) - `health_fund_member_no` (string) - `pension_no` (string) - `pension_expiry` (string) - `worksafe_claim_no` (string) - `archive` (boolean) - `occupation` (string) - `default_account_id` (integer) - `medicare_no` (string) - `medicare_irn` (string) - `medicare_expiry` (string) - `medicare_claimant` (boolean) - `dva_no` (string) - `dva_type` (string) - `health_fund_patient_id` (integer) - `file_created` (string) - `medicare_claimants` (string) Raw JSON string of claimant objects - `default_business` (string) - `default_practitioner` (string) - `referrer` (string) - `referrer_email` (string) - `referrer_organisation` (string) - `referrer_source` (string) - `referral_date` (string) - `medical_warnings` (string) HTML content - `reminders_notifications` (string) HTML content - `gp_name` (string) - `deceased` (boolean) - `family_notes` (string) - `health_fund_card_issue_no` (string) - `covid_vaccination_status` (string) - `covid_vaccination_date` (string) - `ndis_number` (string) - `email_marketing` (string) Enum: "Soft Opt-In", "Opt-In", "Soft Opt-Out", "Opt-Out" - `sms_marketing` (string) Enum: "Soft Opt-In", "Opt-In", "Soft Opt-Out", "Opt-Out" - `sex` (string) - `pronouns` (string) - `default_phone_reminder` (boolean) - `default_sms_reminder` (boolean) - `default_email_reminder` (boolean) - `default_sms_confirmation` (boolean) - `default_email_confirmation` (boolean) - `default_sms_follow_up` (boolean) - `default_email_follow_up` (boolean) ## Response 401 fields (application/json): - `error` (object, required) - `error.status` (integer, required) Example: 403 - `error.code` (string, required) Example: "UNAUTHORIZED" - `error.title` (string, required) Example: "Unauthorised" - `error.detail` (string) Human readable explanation of the error Example: "Access could not be verified for this request." - `request_id` (string, required) Example: "00000000-0000-0000-0000-000000000000" ## Response 403 fields (application/json): - `error` (object, required) - `error.status` (integer, required) Example: 403 - `error.code` (string, required) Example: "MISSING_AUTHENTICATION_TOKEN" - `error.title` (string, required) Example: "Unauthorised" - `error.detail` (string) Human readable explanation of the error Example: "Authentication token is missing or the requested endpoint does not exist" - `request_id` (string, required) Example: "00000000-0000-0000-0000-000000000000" ## Response 422 fields (application/json): - `error` (object, required) - `error.status` (integer, required) Example: 422 - `error.code` (string, required) Example: "INVALID_BODY" - `error.title` (string, required) Example: "Invalid Body" - `error.detail` (string, required) Human readable explanation of the error Example: "There are some issues with the request body." - `error.validation` (array, required) List of validation errors for specific fields - `error.validation.field` (string, required) Example: "surname" - `error.validation.message` (string, required) Example: "The surname field is required." - `request_id` (string, required) Example: "00000000-0000-0000-0000-000000000000" ## Response 500 fields (application/json): - `error` (object, required) - `error.status` (integer, required) Example: 500 - `error.code` (string, required) Example: "SERVER_ERROR" - `error.title` (string, required) Example: "Server Error" - `error.detail` (string) Human readable explanation of the error Example: "An unexpected error occurred while processing your request. Please try again in a few minutes. If it keeps happening, contact support with Request ID: 00000000-0000-0000-0000-000000000000." - `request_id` (string, required) Example: "00000000-0000-0000-0000-000000000000"