Patients
74 endpoints
Patients
59 endpoints
/api/v1/{org_id}/patientsList patients
List patients with pagination and optional filters. Returns a paginated list of patients with full detail including resolved provider, location, and billing references. Supports filtering by patient status, free-text search across name, phone, email, chart number, and DOB fields, as well as provider, location, DOB range, and tag filters. Error conditions: - 404: Referenced provider, location, or tag definition not found.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of records per page.
Default: 50
sort_by"chart_number" | "created_at" | "date_of_birth" | "first_name" | "last_name" | "status"Sort field. One of: last_name, first_name, date_of_birth, chart_number, created_at, status.
chart_numbercreated_atdate_of_birthfirst_namelast_namestatusDefault: "last_name"
sort_dir"asc" | "desc"Sort direction. One of: asc, desc.
ascdescDefault: "asc"
statusstringFilter by patient lifecycle status (e.g. 'active', 'inactive').
searchstringFree-text search across name, phone, email, chart number, and DOB fields.
primary_provider_uuidstringFilter by primary provider UUID.
location_uuidstringFilter by location UUID.
dob_fromstringFilter patients born on or after this date (YYYY-MM-DD).
dob_tostringFilter patients born on or before this date (YYYY-MM-DD).
tag_definition_uuidstringFilter patients with this tag assigned.
Responses
itemsobject[]requiredList of patient records matching the query.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of records per page.
totalintegerrequiredTotal number of patients matching the query.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}Get patient by ID
Retrieve a single patient by UUID. Staff callers receive the full ``PatientOut`` shape with all resolved references (providers, location, fee schedule, guarantor, billing type, employer). Error conditions: - 404: Patient not found.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredResponses
address_line1stringaddress_line2stringaddress_notestringallergy_review_statusenumAllergy review status. One of: not_reviewed, nkda, reviewed. 'not_reviewed' means allergies have not been assessed.
nkdanot_reviewedreviewedappointment_module_notestringask_to_arrive_early_minsintegerNumber of minutes to ask the patient to arrive before their appointment (0-120).
balance_0_30stringbalance_31_60stringbalance_61_90stringbalance_over_90stringbalance_totalstringbilling_cycle_dayintegerbilling_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
chart_numberstringcitystringconsent_flagsintegerBitmask of consent flags (HIPAA, treatment consent, etc.).
countrystringcreated_atstring (date-time)requiredTimestamp when the patient record was created.
date_first_visitstring (date)date_of_birthstring (date)date_time_deceasedstring (date-time)deleted_atstring (date-time)emailstringemergency_contact_namestringemergency_contact_phonestringemployerobjectLightweight reference to a related entity — exposes UUID and optional name.
estimated_balancestringfee_scheduleobjectLightweight reference to a related entity — exposes UUID and optional name.
first_namestringrequiredPatient's legal first name.
genderenumAdministrative gender for clinical records. One of: male, female, non_binary, other, unknown, prefer_not_to_say.
femalemalenon_binaryotherprefer_not_to_sayunknownhome_phonestringidstring (uuid)requiredUnique identifier of the patient.
insurance_estimatestringlast_namestringrequiredPatient's legal last name (surname).
latest_vitals_datestring (date)locationobjectLightweight reference to a related entity — exposes UUID and optional name.
marital_statusenumdivorceddomestic_partnermarriedotherseparatedsinglewidowedmedicaid_idstringmedical_summarystringmedical_urgent_notestringmiddle_namestringmobile_phonestringpayment_plan_duestringpostal_codestringpotential_duplicatesobject[]preferred_confirmation_methodenumemailmailnonephonetextpreferred_contact_methodenumemailmailnonephonetextpreferred_languagestringpreferred_namestringpremedication_requiredbooleanWhether the patient requires antibiotic premedication before dental procedures.
primary_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
pronounenumhe_himnot_specifiedothershe_herthey_themreceives_emailbooleanWhether the patient has opted in to receive email communications.
receives_smsbooleanWhether the patient has opted in to receive SMS messages.
responsible_partyobjectLightweight reference to a related entity — exposes UUID and optional name.
salutationstringscheduling_restrictedbooleanWhether this patient has a scheduling hold (outstanding balance, missing forms, etc.). Derived from patient status and balance: true when status is 'inactive' or balance exceeds $500.
secondary_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
smoking_snomedstringsocial_security_numberstringstatestringstatusenumPatient lifecycle status. One of: active, inactive, prospective, deceased, archived. Defaults to 'active'.
activearchiveddeceasedinactiveprospectivetitlestringtreatment_notesstringupdated_atstring (date-time)requiredTimestamp when the patient record was last updated.
versionintegerrequiredOptimistic concurrency version number.
work_phonestringdetailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/alertsList patient alerts
List alerts for a patient. Returns paginated alert records with resolved alert definition references. Supports filtering by alert status. When ``include_family=true``, also returns family-scoped alerts from family members sharing the same guarantor. Staff callers receive the full ``PatientAlertListOut`` shape. Error conditions: - 404: Patient not found.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredQuery Parameters
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of records per page.
Default: 50
statusstringFilter by alert status (e.g. 'active', 'disabled', 'archived').
include_familybooleanInclude family-scoped alerts from family members sharing the same guarantor.
Default: false
Responses
itemsobject[]requiredList of patient alert records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of records per page.
totalintegerrequiredTotal number of records matching the query.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/alerts" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/alerts" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/allergiesList patient allergies
List all allergies recorded for a patient. Returns paginated allergy records with resolved allergy definition references. Filterable by active status. Error conditions: - 404: Patient not found.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredQuery Parameters
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of records per page.
Default: 50
is_activebooleanFilter by active status. True=active only, False=inactive only, None=all.
Responses
itemsobject[]requiredList of patient allergy records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of records per page.
totalintegerrequiredTotal number of records matching the query.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/allergies" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/allergies" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/communication-logsList communication logs
List communication log entries for a patient. Returns paginated log entries ordered by communication datetime. Supports date range filtering. Entries are append-only and include manual, automated, and integration-sourced communications. Staff callers receive the full ``PatientCommunicationLogListOut`` shape (with resolved ``created_by`` user references). Error conditions: - 404: Patient not found.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredQuery Parameters
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of records per page.
Default: 50
date_fromstringFilter to communications on or after this datetime.
date_tostringFilter to communications on or before this datetime.
modestringFilter by communication mode. One of: phone, email, mail, in_person, text, fax.
directionstringFilter by direction. One of: sent, received, neither.
communication_sourcestringFilter by source. One of: user, automated, integration.
qstringFree-text search through note content (case-insensitive substring match).
Responses
itemsobject[]requiredList of patient communication log entries.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of records per page.
totalintegerrequiredTotal number of records matching the query.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/communication-logs" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/communication-logs" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/dependentsList dependents
List patients this person is guardian of. Returns relationships where this patient is the legal guardian (is_guardian=true) of other patients. Error conditions: - 404: Patient not found.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/dependents" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/dependents" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/diseasesList patient diseases/problems
List all diseases and problems recorded for a patient. Returns paginated records with resolved disease definition references. Filterable by problem status. Error conditions: - 404: Patient not found.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredQuery Parameters
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of records per page.
Default: 50
problem_statusstringFilter by problem status. One of: active, resolved, inactive.
Responses
itemsobject[]requiredList of patient disease/problem records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of records per page.
totalintegerrequiredTotal number of records matching the query.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/diseases" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/diseases" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/familyList family members
List family members sharing the same guarantor. Returns all patients who share the same guarantor as the specified patient. This provides a financial family view based on billing responsibility. Error conditions: - 404: Patient not found.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/family" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/family" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/field-valuesList custom field values
List custom field values for a patient. Returns paginated values for all custom fields that have been set on the patient. Fields without values are not included. Error conditions: - 404: Patient not found.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredQuery Parameters
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of records per page.
Default: 100
Responses
itemsobject[]requiredList of patient custom field values.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of records per page.
totalintegerrequiredTotal number of records matching the query.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/field-values" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/field-values" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/field-values/formGet field form view
Get all custom field definitions with current values for a patient. Returns every active field definition merged with the patient's current value (or null if unset). Designed for rendering a complete custom fields form without a separate definitions fetch. Error conditions: - 404: Patient not found.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredResponses
itemsobject[]requiredAll active field definitions with values.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/field-values/form" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/field-values/form" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/guardiansList guardians
List guardian relationships for a patient. Returns relationships where another patient is the legal guardian of this patient (is_guardian=true). Error conditions: - 404: Patient not found.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredResponses
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/guardians" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/guardians" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/medical-summaryGet medical summary
Get aggregated medical summary for a patient. Combines all medical sub-resources into a single response: - Active allergies with reaction details - Current and past medications - Active diseases/problems only (problem_status='active') - Most recent vital signs reading - Social history entries (one per category) - Active patient alerts with urgency and scope - Urgent medical note and premedication flag Designed for clinical chart header display where a quick overview of the patient's medical profile is needed. Error conditions: - 404: Patient not found.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredResponses
active_problemsobject[]requiredActive disease/problem records only (problem_status='active').
alertsobject[]Active patient alerts (non-archived). Includes urgency flag and scope.
allergiesobject[]requiredAll allergy records for the patient.
allergy_review_statusenumrequiredAllergy review status. One of: not_reviewed, nkda, reviewed.
nkdanot_reviewedreviewedcurrent_medicationsobject[]requiredMedications the patient is currently taking (status='active').
latest_vitalsobjectMost recent vital signs reading within the patient medical summary.
medical_urgent_notestringpast_medicationsobject[]requiredMedications the patient has stopped or discontinued.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
premedication_requiredbooleanWhether antibiotic premedication is needed before procedures.
social_historyobject[]requiredAll social history entries (one per category).
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/medical-summary" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/medical-summary" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/medicationsList patient medications
List all medications recorded for a patient. Returns paginated medication records with resolved definition and provider references. Filterable by active status (status='active'). Error conditions: - 404: Patient not found.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredQuery Parameters
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of records per page.
Default: 50
is_activebooleanFilter by medication status. True=status is 'active', False=non-active statuses, None=all.
Responses
itemsobject[]requiredList of patient medication records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of records per page.
totalintegerrequiredTotal number of records matching the query.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/medications" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/medications" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/referral-attributionsList patient attributions
List referral attributions for a patient with pagination. Returns attribution records showing how this patient was acquired. Each record links to exactly one source: a marketing referral source, referral partner, in-house provider, or referring patient. Error conditions: - 404: Patient not found.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredQuery Parameters
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of records per page.
Default: 50
Responses
itemsobject[]requiredList of referral attributions for the patient.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of records per page.
totalintegerrequiredTotal number of attributions.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/referral-attributions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/referral-attributions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/relationshipsList patient relationships
List all relationships for a patient. Returns relationships where this patient is the source (from_patient). Includes both family and data relationship types with resolved patient name references. Error conditions: - 404: Patient not found.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredQuery Parameters
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of records per page.
Default: 50
Responses
itemsobject[]requiredList of patient relationship records.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of records per page.
totalintegerrequiredTotal number of records matching the query.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/relationships" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/relationships" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/vital-signsList vital signs history
List vital signs recordings for a patient. Returns paginated vital signs records ordered by date. Supports date range filtering for trend analysis. Error conditions: - 404: Patient not found.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredQuery Parameters
pageintegerPage number (1-based).
Default: 1
page_sizeintegerNumber of records per page.
Default: 50
date_fromstringFilter to vital signs taken on or after this date.
date_tostringFilter to vital signs taken on or before this date.
Responses
itemsobject[]requiredList of patient vital signs readings.
pageintegerrequiredCurrent page number (1-based).
page_sizeintegerrequiredNumber of records per page.
totalintegerrequiredTotal number of records matching the query.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/vital-signs" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/vital-signs" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/vital-signs/{vitals_uuid}Get vital signs by ID
Retrieve a single vital signs recording by UUID. Error conditions: - 404: Patient or vital signs record not found.
Parameters
Path Parameters
patient_uuidstringrequiredvitals_uuidstringrequiredorg_idstringrequiredResponses
abnormal_flagsobject[]Clinical flags for out-of-range vital sign values. Each flag includes the vital name, message, and severity (warning/critical).
bmistringbmi_percentileintegerbp_diastolicintegerbp_systolicintegercreated_atstring (date-time)requiredTimestamp when the record was created.
created_byintegerdate_takenstring (date)requiredDate when the vital signs were measured.
deleted_atstring (date-time)has_followup_planbooleanrequiredWhether an abnormal vital signs follow-up plan has been created.
height_inchesstringidstring (uuid)requiredUnique identifier of the patient vital signs record.
is_procedure_blockingbooleanTrue if any vital sign is in a critical range that should block dental procedures until provider review (e.g., BP >180/120, SpO2 <94%).
notestringoxygen_saturationintegerpatientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
pulseintegerrespiration_rateintegertemperature_fstringtime_takenstring (time)updated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
weight_codestringweight_lbsstringdetailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/vital-signs/{vitals_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/vital-signs/{vitals_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/counts/by-locationCount patients by location
Return location-level patient counts without exposing patient rows.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
date_fromstringInclusive first-visit start date, YYYY-MM-DD.
date_tostringExclusive first-visit end date, YYYY-MM-DD.
status_setstring[]Patient statuses to include. Repeat the query param for multiple values. Defaults to active.
Responses
date_fromstring (date)date_tostring (date)excluded_countintegerPatients matching the filters but not grouped under an active location.
group_bystringitemsobject[]requiredstatus_setstring[]requiredtotalintegerrequireddetailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/counts/by-location" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/counts/by-location" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/cursorList patients (cursor-paginated)
List patients with cursor-based pagination and optional filters. Returns a cursor-paginated list of patients. Use the ``after`` parameter with the ``end_cursor`` value from the previous response to fetch the next page. This endpoint uses keyset pagination for stable, performant traversal of large result sets. Error conditions: - 404: Referenced provider, location, or tag definition not found. - 422: Invalid or malformed cursor value.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
firstintegerMaximum number of records to return per page.
Default: 50
afterstringOpaque cursor from a previous page_info.end_cursor.
sort_by"chart_number" | "created_at" | "date_of_birth" | "first_name" | "last_name" | "status" | "updated_at"Sort field. One of: last_name, first_name, date_of_birth, chart_number, created_at, updated_at, status. Defaults to first_name when not specified.
sort_dir"asc" | "desc"Sort direction. One of: asc, desc.
ascdescDefault: "asc"
statusstringFilter by patient lifecycle status (e.g. 'active', 'inactive').
searchstringFree-text search across name, phone, email, chart number, and DOB fields.
primary_provider_uuidstringFilter by primary provider UUID.
location_uuidstringFilter by location UUID.
dob_fromstringFilter patients born on or after this date (YYYY-MM-DD).
dob_tostringFilter patients born on or before this date (YYYY-MM-DD).
tag_definition_uuidstringFilter patients with this tag assigned.
Responses
dataobject[]requiredPage of records.
page_infoobjectrequiredPagination metadata.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/cursor" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/cursor" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/searchSearch patients
Search patients by name or chart number for typeahead. Performs a lightweight search across patient name fields and chart number. Returns a compact result set suitable for dropdown selectors and autocomplete fields. Empty query returns no results. Results include only core identification fields (name, DOB, status, phone, email, chart number) for fast rendering.
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
qstringSearch query — matches against first name, last name, preferred name, and chart number.
Default: ""
limitintegerMaximum number of results to return.
Default: 20
Responses
itemsobject[]requiredList of matching patients with lightweight fields.
totalintegerrequiredTotal number of matches.
detailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patients/search" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patients/search" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patientsCreate patient
Create a new patient record. Staff callers send the full ``CreatePatientIn`` payload and receive ``PatientOut``. Returns 201 with the created patient including resolved references. Error conditions: - 404: Referenced provider, location, fee schedule, or guarantor not found. - 409: Idempotency conflict (duplicate Idempotency-Key) or duplicate chart number. - 422: Validation error (invalid gender, email, etc.).
Parameters
Path Parameters
org_idstringrequiredRequest Body
address_line1stringaddress_line2stringaddress_notestringallergy_review_statusenumAllergy review status. One of: not_reviewed, nkda, reviewed. Defaults to 'not_reviewed'.
nkdanot_reviewedreviewedappointment_module_notestringask_to_arrive_early_minsintegerbilling_accountobjectBilling-account assignment decision supplied during patient registration.
billing_cycle_dayintegerbilling_type_uuidstring (uuid)chart_numberstringcitystringconsent_flagsintegercountrystringdate_first_visitstring (date)date_of_birthstring (date)date_time_deceasedstring (date-time)emailstringemergency_contact_namestringemergency_contact_phonestringemployer_uuidstring (uuid)fee_schedule_uuidstring (uuid)first_namestringrequiredPatient's legal first name.
genderenumfemalemalenon_binaryotherprefer_not_to_sayunknownhome_phonestringlast_namestringrequiredPatient's legal last name (surname).
location_uuidstring (uuid)marital_statusenumdivorceddomestic_partnermarriedotherseparatedsinglewidowedmedicaid_idstringmedical_summarystringmedical_urgent_notestringmiddle_namestringmobile_phonestringpostal_codestringpreferred_confirmation_methodenumemailmailnonephonetextpreferred_contact_methodenumemailmailnonephonetextpreferred_languagestringpreferred_namestringpremedication_requiredbooleanprimary_provider_uuidstring (uuid)pronounenumhe_himnot_specifiedothershe_herthey_themreceives_emailbooleanreceives_smsbooleanresponsible_party_uuidstring (uuid)salutationstringsecondary_provider_uuidstring (uuid)social_security_numberstringstatestringstatusenumactivearchiveddeceasedinactiveprospectivetitlestringtreatment_notesstringwork_phonestringResponses
address_line1stringaddress_line2stringaddress_notestringallergy_review_statusenumAllergy review status. One of: not_reviewed, nkda, reviewed. 'not_reviewed' means allergies have not been assessed.
nkdanot_reviewedreviewedappointment_module_notestringask_to_arrive_early_minsintegerNumber of minutes to ask the patient to arrive before their appointment (0-120).
balance_0_30stringbalance_31_60stringbalance_61_90stringbalance_over_90stringbalance_totalstringbilling_cycle_dayintegerbilling_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
chart_numberstringcitystringconsent_flagsintegerBitmask of consent flags (HIPAA, treatment consent, etc.).
countrystringcreated_atstring (date-time)requiredTimestamp when the patient record was created.
date_first_visitstring (date)date_of_birthstring (date)date_time_deceasedstring (date-time)deleted_atstring (date-time)emailstringemergency_contact_namestringemergency_contact_phonestringemployerobjectLightweight reference to a related entity — exposes UUID and optional name.
estimated_balancestringfee_scheduleobjectLightweight reference to a related entity — exposes UUID and optional name.
first_namestringrequiredPatient's legal first name.
genderenumAdministrative gender for clinical records. One of: male, female, non_binary, other, unknown, prefer_not_to_say.
femalemalenon_binaryotherprefer_not_to_sayunknownhome_phonestringidstring (uuid)requiredUnique identifier of the patient.
insurance_estimatestringlast_namestringrequiredPatient's legal last name (surname).
latest_vitals_datestring (date)locationobjectLightweight reference to a related entity — exposes UUID and optional name.
marital_statusenumdivorceddomestic_partnermarriedotherseparatedsinglewidowedmedicaid_idstringmedical_summarystringmedical_urgent_notestringmiddle_namestringmobile_phonestringpayment_plan_duestringpostal_codestringpotential_duplicatesobject[]preferred_confirmation_methodenumemailmailnonephonetextpreferred_contact_methodenumemailmailnonephonetextpreferred_languagestringpreferred_namestringpremedication_requiredbooleanWhether the patient requires antibiotic premedication before dental procedures.
primary_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
pronounenumhe_himnot_specifiedothershe_herthey_themreceives_emailbooleanWhether the patient has opted in to receive email communications.
receives_smsbooleanWhether the patient has opted in to receive SMS messages.
responsible_partyobjectLightweight reference to a related entity — exposes UUID and optional name.
salutationstringscheduling_restrictedbooleanWhether this patient has a scheduling hold (outstanding balance, missing forms, etc.). Derived from patient status and balance: true when status is 'inactive' or balance exceeds $500.
secondary_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
smoking_snomedstringsocial_security_numberstringstatestringstatusenumPatient lifecycle status. One of: active, inactive, prospective, deceased, archived. Defaults to 'active'.
activearchiveddeceasedinactiveprospectivetitlestringtreatment_notesstringupdated_atstring (date-time)requiredTimestamp when the patient record was last updated.
versionintegerrequiredOptimistic concurrency version number.
work_phonestringdetailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"address_line1": "string",
"address_line2": "string",
"address_note": "string",
"allergy_review_status": "nkda",
"appointment_module_note": "string",
"first_name": "string",
"last_name": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patients" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"address_line1": "string",
"address_line2": "string",
"address_note": "string",
"allergy_review_status": "nkda",
"appointment_module_note": "string",
"first_name": "string",
"last_name": "string"
}'/api/v1/{org_id}/patients/{patient_uuid}/alertsCreate patient alert
Create a new alert for a patient. Links the patient to an alert definition with scope and urgency settings. Alerts with scope 'family' are shown on all family members' charts. Error conditions: - 404: Patient or alert definition not found. - 409: Idempotency conflict. - 422: Invalid alert_scope value.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredRequest Body
alert_definition_uuidstring (uuid)requiredUUID of the alert definition from the org settings catalog.
alert_scopestringVisibility scope. One of: patient (this chart only), family (all family members' charts). Defaults to 'patient'.
disable_onstring (date)is_urgentbooleanWhether this alert should be displayed prominently as an urgent warning.
notestringResponses
alert_definitionobjectLightweight reference to a related entity — exposes UUID and optional name.
alert_scopestringrequiredVisibility scope. One of: patient (this chart only), family (all family members' charts).
created_atstring (date-time)requiredTimestamp when the record was created.
created_byintegerdate_disabledstring (date-time)disable_onstring (date)idstring (uuid)requiredUnique identifier of the patient alert record.
is_urgentbooleanrequiredWhether this alert should be displayed prominently as an urgent warning.
notestringpatientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
statusstringrequiredAlert lifecycle status. One of: active, disabled, archived.
updated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/alerts" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"alert_definition_uuid": "00000000-0000-0000-0000-000000000000",
"alert_scope": "patient",
"disable_on": "string",
"is_urgent": false,
"note": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/alerts" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"alert_definition_uuid": "00000000-0000-0000-0000-000000000000",
"alert_scope": "patient",
"disable_on": "string",
"is_urgent": false,
"note": "string"
}'/api/v1/{org_id}/patients/{patient_uuid}/alerts/{alert_uuid}/archiveArchive patient alert (status-based)
Archive a patient alert by setting status to 'archived'. The alert is excluded from default listings but can still be retrieved by explicitly filtering with ``status=archived``. Error conditions: - 404: Patient or alert not found.
Parameters
Path Parameters
patient_uuidstringrequiredalert_uuidstringrequiredorg_idstringrequiredResponses
alert_definitionobjectLightweight reference to a related entity — exposes UUID and optional name.
alert_scopestringrequiredVisibility scope. One of: patient (this chart only), family (all family members' charts).
created_atstring (date-time)requiredTimestamp when the record was created.
created_byintegerdate_disabledstring (date-time)disable_onstring (date)idstring (uuid)requiredUnique identifier of the patient alert record.
is_urgentbooleanrequiredWhether this alert should be displayed prominently as an urgent warning.
notestringpatientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
statusstringrequiredAlert lifecycle status. One of: active, disabled, archived.
updated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/alerts/{alert_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/alerts/{alert_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/alerts/{alert_uuid}/disableDisable patient alert
Disable an active alert. Sets the alert status to 'disabled' and records the current date as date_disabled. The alert is hidden from the chart but not deleted. Error conditions: - 404: Patient or alert not found. - 409: Version conflict.
Parameters
Path Parameters
patient_uuidstringrequiredalert_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version for optimistic concurrency control.
Responses
alert_definitionobjectLightweight reference to a related entity — exposes UUID and optional name.
alert_scopestringrequiredVisibility scope. One of: patient (this chart only), family (all family members' charts).
created_atstring (date-time)requiredTimestamp when the record was created.
created_byintegerdate_disabledstring (date-time)disable_onstring (date)idstring (uuid)requiredUnique identifier of the patient alert record.
is_urgentbooleanrequiredWhether this alert should be displayed prominently as an urgent warning.
notestringpatientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
statusstringrequiredAlert lifecycle status. One of: active, disabled, archived.
updated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/alerts/{alert_uuid}/disable" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/alerts/{alert_uuid}/disable" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1
}'/api/v1/{org_id}/patients/{patient_uuid}/alerts/bulk-dismissBulk dismiss alerts
Archive multiple patient alerts in a single call. Already-archived alerts are skipped without error. Useful for bulk-dismiss workflows where 5 or more alerts need to be archived at once. Error conditions: - 404: Patient not found, or any alert UUID not found or belongs to a different patient. - 422: More than 50 alert UUIDs supplied.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredRequest Body
alert_uuidsstring (uuid)[]requiredUUIDs of alerts to archive. Maximum 50 per call.
Responses
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/alerts/bulk-dismiss" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"alert_uuids": []
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/alerts/bulk-dismiss" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"alert_uuids": []
}'/api/v1/{org_id}/patients/{patient_uuid}/allergiesRecord patient allergy
Record a new allergy for a patient. Links the patient to an allergy definition from the catalog with optional reaction details and SNOMED coding. Error conditions: - 404: Patient or allergy definition not found. - 409: Idempotency conflict.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredRequest Body
allergy_definition_uuidstring (uuid)requiredUUID of the allergy definition from the org settings catalog.
date_adverse_reactionstring (date)reactionstringseveritystringsnomed_reactionstringstatus_is_activebooleanWhether this allergy is currently active. Defaults to true.
Responses
allergy_definitionobjectLightweight reference to a related entity — exposes UUID and optional name.
created_atstring (date-time)requiredTimestamp when the record was created.
date_adverse_reactionstring (date)deleted_atstring (date-time)idstring (uuid)requiredUnique identifier of the patient allergy record.
interaction_warningsobject[]Drug-allergy interaction warnings detected on create. Empty on subsequent reads.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
reactionstringseveritystringsnomed_reactionstringstatus_is_activebooleanrequiredWhether this allergy is currently active.
updated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/allergies" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allergy_definition_uuid": "00000000-0000-0000-0000-000000000000",
"date_adverse_reaction": "string",
"reaction": "string",
"severity": "string",
"snomed_reaction": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/allergies" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allergy_definition_uuid": "00000000-0000-0000-0000-000000000000",
"date_adverse_reaction": "string",
"reaction": "string",
"severity": "string",
"snomed_reaction": "string"
}'/api/v1/{org_id}/patients/{patient_uuid}/allergies/{allergy_uuid}/archiveArchive patient allergy
Soft-delete a patient allergy record. Error conditions: - 404: Patient or allergy not found.
Parameters
Path Parameters
patient_uuidstringrequiredallergy_uuidstringrequiredorg_idstringrequiredResponses
allergy_definitionobjectLightweight reference to a related entity — exposes UUID and optional name.
created_atstring (date-time)requiredTimestamp when the record was created.
date_adverse_reactionstring (date)deleted_atstring (date-time)idstring (uuid)requiredUnique identifier of the patient allergy record.
interaction_warningsobject[]Drug-allergy interaction warnings detected on create. Empty on subsequent reads.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
reactionstringseveritystringsnomed_reactionstringstatus_is_activebooleanrequiredWhether this allergy is currently active.
updated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/allergies/{allergy_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/allergies/{allergy_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/archiveArchive patient
Soft-delete a patient record. Sets deleted_at timestamp. The patient is excluded from normal queries but can be restored via the restore endpoint. Returns the archived patient record. Error conditions: - 404: Patient not found. - 422: Patient is guarantor for active dependents (reassign first).
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredResponses
address_line1stringaddress_line2stringaddress_notestringallergy_review_statusenumAllergy review status. One of: not_reviewed, nkda, reviewed. 'not_reviewed' means allergies have not been assessed.
nkdanot_reviewedreviewedappointment_module_notestringask_to_arrive_early_minsintegerNumber of minutes to ask the patient to arrive before their appointment (0-120).
balance_0_30stringbalance_31_60stringbalance_61_90stringbalance_over_90stringbalance_totalstringbilling_cycle_dayintegerbilling_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
chart_numberstringcitystringconsent_flagsintegerBitmask of consent flags (HIPAA, treatment consent, etc.).
countrystringcreated_atstring (date-time)requiredTimestamp when the patient record was created.
date_first_visitstring (date)date_of_birthstring (date)date_time_deceasedstring (date-time)deleted_atstring (date-time)emailstringemergency_contact_namestringemergency_contact_phonestringemployerobjectLightweight reference to a related entity — exposes UUID and optional name.
estimated_balancestringfee_scheduleobjectLightweight reference to a related entity — exposes UUID and optional name.
first_namestringrequiredPatient's legal first name.
genderenumAdministrative gender for clinical records. One of: male, female, non_binary, other, unknown, prefer_not_to_say.
femalemalenon_binaryotherprefer_not_to_sayunknownhome_phonestringidstring (uuid)requiredUnique identifier of the patient.
insurance_estimatestringlast_namestringrequiredPatient's legal last name (surname).
latest_vitals_datestring (date)locationobjectLightweight reference to a related entity — exposes UUID and optional name.
marital_statusenumdivorceddomestic_partnermarriedotherseparatedsinglewidowedmedicaid_idstringmedical_summarystringmedical_urgent_notestringmiddle_namestringmobile_phonestringpayment_plan_duestringpostal_codestringpotential_duplicatesobject[]preferred_confirmation_methodenumemailmailnonephonetextpreferred_contact_methodenumemailmailnonephonetextpreferred_languagestringpreferred_namestringpremedication_requiredbooleanWhether the patient requires antibiotic premedication before dental procedures.
primary_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
pronounenumhe_himnot_specifiedothershe_herthey_themreceives_emailbooleanWhether the patient has opted in to receive email communications.
receives_smsbooleanWhether the patient has opted in to receive SMS messages.
responsible_partyobjectLightweight reference to a related entity — exposes UUID and optional name.
salutationstringscheduling_restrictedbooleanWhether this patient has a scheduling hold (outstanding balance, missing forms, etc.). Derived from patient status and balance: true when status is 'inactive' or balance exceeds $500.
secondary_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
smoking_snomedstringsocial_security_numberstringstatestringstatusenumPatient lifecycle status. One of: active, inactive, prospective, deceased, archived. Defaults to 'active'.
activearchiveddeceasedinactiveprospectivetitlestringtreatment_notesstringupdated_atstring (date-time)requiredTimestamp when the patient record was last updated.
versionintegerrequiredOptimistic concurrency version number.
work_phonestringdetailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/communication-logsLog patient communication
Log a communication event for a patient. Communication logs are append-only — entries cannot be edited or deleted after creation. Staff callers send the full ``CreateCommunicationLogIn`` payload and receive ``PatientCommunicationLogOut``. The ``communication_source`` is set to ``user`` for these entries. Error conditions: - 404: Patient or communication type definition not found. - 409: Idempotency conflict. - 422: Invalid mode or direction value.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredRequest Body
appointment_uuidstring (uuid)communication_datetimestring (date-time)requiredDate and time when the communication occurred.
communication_type_uuidstring (uuid)directionstringmodestringnotestringResponses
appointmentobjectLightweight reference to a related entity — exposes UUID and optional name.
communication_datetimestring (date-time)requiredWhen the communication occurred.
communication_sourcestringrequiredOrigin of this log entry. One of: user (manual), automated (system-generated), integration (external API).
communication_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
created_atstring (date-time)requiredWhen this log entry was created.
created_byobjectLightweight reference to a related entity — exposes UUID and optional name.
directionstringidstring (uuid)requiredUnique identifier of the communication log entry.
modestringnotestringpatientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/communication-logs" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"appointment_uuid": "string",
"communication_datetime": "2025-01-15T09:00:00Z",
"communication_type_uuid": "string",
"direction": "string",
"mode": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/communication-logs" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"appointment_uuid": "string",
"communication_datetime": "2025-01-15T09:00:00Z",
"communication_type_uuid": "string",
"direction": "string",
"mode": "string"
}'/api/v1/{org_id}/patients/{patient_uuid}/diseasesRecord patient disease/problem
Record a new disease or problem for a patient. Links the patient to a disease definition from the catalog with problem status tracking and optional SNOMED/ICD-10 coding. Problem status follows the lifecycle: active -> resolved -> inactive. Error conditions: - 404: Patient or disease definition not found. - 409: Idempotency conflict. - 422: Invalid problem_status or function_status value.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredRequest Body
date_startstring (date)date_stopstring (date)disease_definition_uuidstring (uuid)requiredUUID of the disease/problem definition from the org settings catalog.
function_statusstringClinical function classification per Meaningful Use. One of: problem, cognitive_result, cognitive_problem, functional_result, functional_problem. Defaults to 'problem'.
patient_notestringproblem_statusstringLifecycle status of the problem. One of: active, resolved, inactive. Defaults to 'active'.
snomed_problem_typestringResponses
created_atstring (date-time)requiredTimestamp when the record was created.
date_startstring (date)date_stopstring (date)deleted_atstring (date-time)disease_definitionobjectLightweight reference to a related entity — exposes UUID and optional name.
function_statusstringrequiredClinical function classification per Meaningful Use. One of: problem, cognitive_result, cognitive_problem, functional_result, functional_problem.
idstring (uuid)requiredUnique identifier of the patient disease/problem record.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
patient_notestringproblem_statusstringrequiredLifecycle status of the problem. One of: active, resolved, inactive.
snomed_problem_typestringupdated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/diseases" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"date_start": "string",
"date_stop": "string",
"disease_definition_uuid": "00000000-0000-0000-0000-000000000000",
"function_status": "problem",
"patient_note": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/diseases" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"date_start": "string",
"date_stop": "string",
"disease_definition_uuid": "00000000-0000-0000-0000-000000000000",
"function_status": "problem",
"patient_note": "string"
}'/api/v1/{org_id}/patients/{patient_uuid}/diseases/{disease_uuid}/archiveArchive patient disease/problem
Soft-delete a patient disease/problem record. Error conditions: - 404: Patient or disease not found.
Parameters
Path Parameters
patient_uuidstringrequireddisease_uuidstringrequiredorg_idstringrequiredResponses
created_atstring (date-time)requiredTimestamp when the record was created.
date_startstring (date)date_stopstring (date)deleted_atstring (date-time)disease_definitionobjectLightweight reference to a related entity — exposes UUID and optional name.
function_statusstringrequiredClinical function classification per Meaningful Use. One of: problem, cognitive_result, cognitive_problem, functional_result, functional_problem.
idstring (uuid)requiredUnique identifier of the patient disease/problem record.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
patient_notestringproblem_statusstringrequiredLifecycle status of the problem. One of: active, resolved, inactive.
snomed_problem_typestringupdated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/diseases/{disease_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/diseases/{disease_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/medicationsRecord patient medication
Record a new medication for a patient. Links the patient to a medication definition from the catalog. Supports free-text fallback via med_descript when no catalog entry exists. Optionally tracks prescribing provider and RxNorm CUI. Error conditions: - 404: Patient, medication definition, or provider not found. - 409: Idempotency conflict.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredRequest Body
date_startstring (date)date_stopstring (date)dosagestringfrequencystringis_cpoebooleanWhether this medication was entered via Computerized Provider Order Entry.
med_descriptstringmedication_definition_uuidstring (uuid)patient_notestringprovider_uuidstring (uuid)routestringrx_cuistringResponses
created_atstring (date-time)requiredTimestamp when the record was created.
date_startstring (date)date_stopstring (date)deleted_atstring (date-time)discontinuation_reasonstringdosagestringfrequencystringidstring (uuid)requiredUnique identifier of the patient medication record.
interaction_warningsobject[]Drug-allergy interaction warnings detected on create. Empty on subsequent reads.
is_cpoebooleanrequiredWhether entered via Computerized Provider Order Entry.
med_descriptstringmedication_definitionobjectLightweight reference to a related entity — exposes UUID and optional name.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
patient_notestringproviderobjectLightweight reference to a related entity — exposes UUID and optional name.
routestringrx_cuistringstatusenumMedication lifecycle status. One of: active, discontinued, on_hold, completed.
activecompleteddiscontinuedon_holdupdated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/medications" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"date_start": "string",
"date_stop": "string",
"dosage": "string",
"frequency": "string",
"is_cpoe": false
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/medications" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"date_start": "string",
"date_stop": "string",
"dosage": "string",
"frequency": "string",
"is_cpoe": false
}'/api/v1/{org_id}/patients/{patient_uuid}/medications/{medication_uuid}/archiveArchive patient medication
Soft-delete a patient medication record. Error conditions: - 404: Patient or medication not found.
Parameters
Path Parameters
patient_uuidstringrequiredmedication_uuidstringrequiredorg_idstringrequiredResponses
created_atstring (date-time)requiredTimestamp when the record was created.
date_startstring (date)date_stopstring (date)deleted_atstring (date-time)discontinuation_reasonstringdosagestringfrequencystringidstring (uuid)requiredUnique identifier of the patient medication record.
interaction_warningsobject[]Drug-allergy interaction warnings detected on create. Empty on subsequent reads.
is_cpoebooleanrequiredWhether entered via Computerized Provider Order Entry.
med_descriptstringmedication_definitionobjectLightweight reference to a related entity — exposes UUID and optional name.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
patient_notestringproviderobjectLightweight reference to a related entity — exposes UUID and optional name.
routestringrx_cuistringstatusenumMedication lifecycle status. One of: active, discontinued, on_hold, completed.
activecompleteddiscontinuedon_holdupdated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/medications/{medication_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/medications/{medication_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/referral-attributionsCreate patient attribution
Record a referral attribution for a patient. Tracks how this patient was acquired. Exactly one source reference must be provided (referral_source_uuid, referral_partner_uuid, provider_uuid, or referring_patient_uuid). Only one active 'primary' attribution is allowed per patient. Error conditions: - 404: Patient or referenced source/partner/provider not found. - 409: Patient already has a primary attribution. - 422: No source provided, or multiple sources provided.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredRequest Body
attribution_roleenumRole of this attribution in the patient's acquisition. One of: primary (first-touch attribution set at intake), secondary (additional touchpoint), assist (contributing factor).
assistprimarysecondaryprovider_uuidstring (uuid)referral_partner_uuidstring (uuid)referral_source_uuidstring (uuid)referring_patient_uuidstring (uuid)source_notestringResponses
attributed_atstring (date-time)requiredTimestamp when the attribution was recorded.
attribution_roleenumRole of this attribution in the patient's acquisition. One of: primary (first-touch attribution set at intake), secondary (additional touchpoint), assist (contributing factor).
assistprimarysecondarycreated_atstring (date-time)requiredTimestamp when the record was created.
idstring (uuid)requiredUnique identifier of the attribution record.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
referral_partnerobjectLightweight reference to a related entity — exposes UUID and optional name.
referral_sourceobjectLightweight reference to a related entity — exposes UUID and optional name.
referring_patientobjectLightweight reference to a related entity — exposes UUID and optional name.
source_notestringupdated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/referral-attributions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"attribution_role": "assist",
"provider_uuid": "string",
"referral_partner_uuid": "string",
"referral_source_uuid": "string",
"referring_patient_uuid": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/referral-attributions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"attribution_role": "assist",
"provider_uuid": "string",
"referral_partner_uuid": "string",
"referral_source_uuid": "string",
"referring_patient_uuid": "string"
}'/api/v1/{org_id}/patients/{patient_uuid}/referral-attributions/{attribution_uuid}/archiveArchive patient attribution
Soft-delete a referral attribution. Verifies ownership before archiving. Error conditions: - 404: Patient or attribution not found, or attribution does not belong to this patient. - 409: Version conflict — the attribution was modified since last read.
Parameters
Path Parameters
patient_uuidstringrequiredattribution_uuidstringrequiredorg_idstringrequiredQuery Parameters
base_versionintegerrequiredCurrent version for optimistic concurrency. Rejected with 409 if stale.
Responses
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/referral-attributions/{attribution_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/referral-attributions/{attribution_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/relationshipsCreate patient relationship
Create a relationship between two patients. Records a directional relationship from the source patient (path parameter) to a target patient. Relationship types include family relationships (parent, child, spouse, etc.) and data operations (merge, clone). Currently one-directional — the inverse relationship is not automatically created. Error conditions: - 404: Source or target patient not found. - 409: Idempotency conflict. - 422: Invalid relationship_type value.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredRequest Body
is_guardianbooleannotestringrelationship_typeenumrequiredType of relationship from the source patient to the target. One of: spouse, life_partner, parent, child, sibling, guardian, grandparent, grandchild, stepparent, stepchild, foster_child, caregiver, other_family, merge, clone.
caregiverchildclonefoster_childgrandchildgrandparentguardianlife_partnermergeother_familyparentsiblingspousestepchildstepparentto_patient_uuidstring (uuid)requiredUUID of the related patient (the 'other' patient in the relationship).
Responses
created_atstring (date-time)requiredTimestamp when the record was created.
deleted_atstring (date-time)from_patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
from_patient_namestringidstring (uuid)requiredUnique identifier of the patient relationship record.
is_guardianbooleanWhether the source patient is the legal guardian of the target.
notestringrelationship_typeenumrequiredType of relationship from source to target.
caregiverchildclonefoster_childgrandchildgrandparentguardianlife_partnermergeother_familyparentsiblingspousestepchildstepparentto_patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
to_patient_namestringupdated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/relationships" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"is_guardian": null,
"note": "string",
"relationship_type": "caregiver",
"to_patient_uuid": "00000000-0000-0000-0000-000000000000"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/relationships" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"is_guardian": null,
"note": "string",
"relationship_type": "caregiver",
"to_patient_uuid": "00000000-0000-0000-0000-000000000000"
}'/api/v1/{org_id}/patients/{patient_uuid}/relationships/{relationship_uuid}/archiveArchive patient relationship
Soft-delete a patient relationship. Error conditions: - 404: Patient or relationship not found.
Parameters
Path Parameters
patient_uuidstringrequiredrelationship_uuidstringrequiredorg_idstringrequiredResponses
created_atstring (date-time)requiredTimestamp when the record was created.
deleted_atstring (date-time)from_patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
from_patient_namestringidstring (uuid)requiredUnique identifier of the patient relationship record.
is_guardianbooleanWhether the source patient is the legal guardian of the target.
notestringrelationship_typeenumrequiredType of relationship from source to target.
caregiverchildclonefoster_childgrandchildgrandparentguardianlife_partnermergeother_familyparentsiblingspousestepchildstepparentto_patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
to_patient_namestringupdated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/relationships/{relationship_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/relationships/{relationship_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/restoreRestore archived patient
Restore a previously archived patient. Clears the deleted_at timestamp and sets status to 'inactive'. The patient must be explicitly re-activated via the transition-status endpoint after restoration. Error conditions: - 404: Patient not found. - 422: Patient is not archived (deleted_at is already None).
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredResponses
address_line1stringaddress_line2stringaddress_notestringallergy_review_statusenumAllergy review status. One of: not_reviewed, nkda, reviewed. 'not_reviewed' means allergies have not been assessed.
nkdanot_reviewedreviewedappointment_module_notestringask_to_arrive_early_minsintegerNumber of minutes to ask the patient to arrive before their appointment (0-120).
balance_0_30stringbalance_31_60stringbalance_61_90stringbalance_over_90stringbalance_totalstringbilling_cycle_dayintegerbilling_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
chart_numberstringcitystringconsent_flagsintegerBitmask of consent flags (HIPAA, treatment consent, etc.).
countrystringcreated_atstring (date-time)requiredTimestamp when the patient record was created.
date_first_visitstring (date)date_of_birthstring (date)date_time_deceasedstring (date-time)deleted_atstring (date-time)emailstringemergency_contact_namestringemergency_contact_phonestringemployerobjectLightweight reference to a related entity — exposes UUID and optional name.
estimated_balancestringfee_scheduleobjectLightweight reference to a related entity — exposes UUID and optional name.
first_namestringrequiredPatient's legal first name.
genderenumAdministrative gender for clinical records. One of: male, female, non_binary, other, unknown, prefer_not_to_say.
femalemalenon_binaryotherprefer_not_to_sayunknownhome_phonestringidstring (uuid)requiredUnique identifier of the patient.
insurance_estimatestringlast_namestringrequiredPatient's legal last name (surname).
latest_vitals_datestring (date)locationobjectLightweight reference to a related entity — exposes UUID and optional name.
marital_statusenumdivorceddomestic_partnermarriedotherseparatedsinglewidowedmedicaid_idstringmedical_summarystringmedical_urgent_notestringmiddle_namestringmobile_phonestringpayment_plan_duestringpostal_codestringpotential_duplicatesobject[]preferred_confirmation_methodenumemailmailnonephonetextpreferred_contact_methodenumemailmailnonephonetextpreferred_languagestringpreferred_namestringpremedication_requiredbooleanWhether the patient requires antibiotic premedication before dental procedures.
primary_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
pronounenumhe_himnot_specifiedothershe_herthey_themreceives_emailbooleanWhether the patient has opted in to receive email communications.
receives_smsbooleanWhether the patient has opted in to receive SMS messages.
responsible_partyobjectLightweight reference to a related entity — exposes UUID and optional name.
salutationstringscheduling_restrictedbooleanWhether this patient has a scheduling hold (outstanding balance, missing forms, etc.). Derived from patient status and balance: true when status is 'inactive' or balance exceeds $500.
secondary_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
smoking_snomedstringsocial_security_numberstringstatestringstatusenumPatient lifecycle status. One of: active, inactive, prospective, deceased, archived. Defaults to 'active'.
activearchiveddeceasedinactiveprospectivetitlestringtreatment_notesstringupdated_atstring (date-time)requiredTimestamp when the patient record was last updated.
versionintegerrequiredOptimistic concurrency version number.
work_phonestringdetailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/restore" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/restore" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/{patient_uuid}/transition-statusTransition patient status
Transition a patient's lifecycle status. Validates the transition against allowed status transitions: - prospective -> active - active -> inactive, deceased - inactive -> active - deceased -> (none — terminal status, use archive endpoint) Emits a status-specific event (e.g. patient.inactive, patient.deceased). Error conditions: - 404: Patient not found. - 409: Version conflict (base_version does not match current). - 422: Invalid status transition or patient already in target status.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version of the patient record for optimistic concurrency control.
new_statusenumrequiredTarget lifecycle status. Valid transitions: prospective->active, active->inactive, active->deceased, inactive->active. Archived status requires the archive endpoint.
activearchiveddeceasedinactiveprospectiveResponses
address_line1stringaddress_line2stringaddress_notestringallergy_review_statusenumAllergy review status. One of: not_reviewed, nkda, reviewed. 'not_reviewed' means allergies have not been assessed.
nkdanot_reviewedreviewedappointment_module_notestringask_to_arrive_early_minsintegerNumber of minutes to ask the patient to arrive before their appointment (0-120).
balance_0_30stringbalance_31_60stringbalance_61_90stringbalance_over_90stringbalance_totalstringbilling_cycle_dayintegerbilling_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
chart_numberstringcitystringconsent_flagsintegerBitmask of consent flags (HIPAA, treatment consent, etc.).
countrystringcreated_atstring (date-time)requiredTimestamp when the patient record was created.
date_first_visitstring (date)date_of_birthstring (date)date_time_deceasedstring (date-time)deleted_atstring (date-time)emailstringemergency_contact_namestringemergency_contact_phonestringemployerobjectLightweight reference to a related entity — exposes UUID and optional name.
estimated_balancestringfee_scheduleobjectLightweight reference to a related entity — exposes UUID and optional name.
first_namestringrequiredPatient's legal first name.
genderenumAdministrative gender for clinical records. One of: male, female, non_binary, other, unknown, prefer_not_to_say.
femalemalenon_binaryotherprefer_not_to_sayunknownhome_phonestringidstring (uuid)requiredUnique identifier of the patient.
insurance_estimatestringlast_namestringrequiredPatient's legal last name (surname).
latest_vitals_datestring (date)locationobjectLightweight reference to a related entity — exposes UUID and optional name.
marital_statusenumdivorceddomestic_partnermarriedotherseparatedsinglewidowedmedicaid_idstringmedical_summarystringmedical_urgent_notestringmiddle_namestringmobile_phonestringpayment_plan_duestringpostal_codestringpotential_duplicatesobject[]preferred_confirmation_methodenumemailmailnonephonetextpreferred_contact_methodenumemailmailnonephonetextpreferred_languagestringpreferred_namestringpremedication_requiredbooleanWhether the patient requires antibiotic premedication before dental procedures.
primary_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
pronounenumhe_himnot_specifiedothershe_herthey_themreceives_emailbooleanWhether the patient has opted in to receive email communications.
receives_smsbooleanWhether the patient has opted in to receive SMS messages.
responsible_partyobjectLightweight reference to a related entity — exposes UUID and optional name.
salutationstringscheduling_restrictedbooleanWhether this patient has a scheduling hold (outstanding balance, missing forms, etc.). Derived from patient status and balance: true when status is 'inactive' or balance exceeds $500.
secondary_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
smoking_snomedstringsocial_security_numberstringstatestringstatusenumPatient lifecycle status. One of: active, inactive, prospective, deceased, archived. Defaults to 'active'.
activearchiveddeceasedinactiveprospectivetitlestringtreatment_notesstringupdated_atstring (date-time)requiredTimestamp when the patient record was last updated.
versionintegerrequiredOptimistic concurrency version number.
work_phonestringdetailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/transition-status" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"new_status": "active"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/transition-status" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"new_status": "active"
}'/api/v1/{org_id}/patients/{patient_uuid}/vital-signsRecord vital signs
Record a new set of vital signs for a patient. Captures blood pressure, pulse, oxygen saturation, temperature, respiration rate, height, weight, and BMI. Optionally tracks the measuring provider. Error conditions: - 404: Patient or provider not found. - 409: Idempotency conflict.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredRequest Body
bminumberbmi_percentileintegerbp_diastolicintegerbp_systolicintegerdate_takenstring (date)requiredDate when the vital signs were measured.
has_followup_planbooleanWhether an abnormal vital signs follow-up plan has been created.
height_inchesnumbernotestringoxygen_saturationintegerprovider_uuidstring (uuid)pulseintegerrespiration_rateintegertemperature_fnumbertime_takenstring (time)weight_codestringweight_lbsnumberResponses
abnormal_flagsobject[]Clinical flags for out-of-range vital sign values. Each flag includes the vital name, message, and severity (warning/critical).
bmistringbmi_percentileintegerbp_diastolicintegerbp_systolicintegercreated_atstring (date-time)requiredTimestamp when the record was created.
created_byintegerdate_takenstring (date)requiredDate when the vital signs were measured.
deleted_atstring (date-time)has_followup_planbooleanrequiredWhether an abnormal vital signs follow-up plan has been created.
height_inchesstringidstring (uuid)requiredUnique identifier of the patient vital signs record.
is_procedure_blockingbooleanTrue if any vital sign is in a critical range that should block dental procedures until provider review (e.g., BP >180/120, SpO2 <94%).
notestringoxygen_saturationintegerpatientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
pulseintegerrespiration_rateintegertemperature_fstringtime_takenstring (time)updated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
weight_codestringweight_lbsstringdetailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/vital-signs" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"bmi": null,
"bmi_percentile": 1,
"bp_diastolic": 1,
"bp_systolic": 1,
"date_taken": "2025-01-15"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/vital-signs" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"bmi": null,
"bmi_percentile": 1,
"bp_diastolic": 1,
"bp_systolic": 1,
"date_taken": "2025-01-15"
}'/api/v1/{org_id}/patients/{patient_uuid}/vital-signs/{vitals_uuid}/archiveArchive vital signs
Soft-delete a vital signs recording. Error conditions: - 404: Patient or vital signs record not found.
Parameters
Path Parameters
patient_uuidstringrequiredvitals_uuidstringrequiredorg_idstringrequiredResponses
abnormal_flagsobject[]Clinical flags for out-of-range vital sign values. Each flag includes the vital name, message, and severity (warning/critical).
bmistringbmi_percentileintegerbp_diastolicintegerbp_systolicintegercreated_atstring (date-time)requiredTimestamp when the record was created.
created_byintegerdate_takenstring (date)requiredDate when the vital signs were measured.
deleted_atstring (date-time)has_followup_planbooleanrequiredWhether an abnormal vital signs follow-up plan has been created.
height_inchesstringidstring (uuid)requiredUnique identifier of the patient vital signs record.
is_procedure_blockingbooleanTrue if any vital sign is in a critical range that should block dental procedures until provider review (e.g., BP >180/120, SpO2 <94%).
notestringoxygen_saturationintegerpatientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
pulseintegerrespiration_rateintegertemperature_fstringtime_takenstring (time)updated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
weight_codestringweight_lbsstringdetailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/vital-signs/{vitals_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X POST "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/vital-signs/{vitals_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patients/bulkBulk import patients
Parameters
Path Parameters
org_idstringrequiredRequest Body
metaobjectTop-level execution options for a bulk request.
rowsobject[]requiredResponses
createdintegerfailedintegerresultsobject[]requiredskippedintegertotalintegerrequiredupdatedintegervalidatedintegerdetailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/bulk" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"meta": {},
"rows": []
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patients/bulk" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"meta": {},
"rows": []
}'/api/v1/{org_id}/patients/check-duplicatesCheck for duplicate patients
Check for duplicate patients before creating a new record. Searches for existing patients matching any duplicate signal: last_name + date_of_birth, email, mobile_phone, or SSN. Any single match flags a potential duplicate. Use this endpoint before creating a patient to avoid duplicate records. Returns matching patients with lightweight identification fields.
Parameters
Path Parameters
org_idstringrequiredRequest Body
date_of_birthstring (date)emailstringlast_namestringrequiredLast name to check for duplicates.
mobile_phonestringsocial_security_numberstringResponses
itemsobject[]requiredList of potential duplicate patients found.
totalintegerrequiredNumber of potential duplicates found.
detailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patients/check-duplicates" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"date_of_birth": "string",
"email": "string",
"last_name": "string",
"mobile_phone": "string",
"social_security_number": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patients/check-duplicates" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"date_of_birth": "string",
"email": "string",
"last_name": "string",
"mobile_phone": "string",
"social_security_number": "string"
}'/api/v1/{org_id}/patients/{patient_uuid}/field-valuesBulk upsert custom field values
Create or update multiple custom field values for a patient. Uses upsert semantics — existing values are updated, new values are created. Send a null value to clear a field. Returns the list of upserted field value records. Error conditions: - 404: Patient or field definition not found.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredRequest Body
fieldsobject[]requiredList of custom field values to create or update for the patient.
Responses
detailobject[]curl -X PUT "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/field-values" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"fields": []
}'curl -X PUT "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/field-values" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"fields": []
}'/api/v1/{org_id}/patients/{patient_uuid}Update patient
Partially update a patient record. Uses PATCH semantics — only provided fields are modified. Requires base_version for optimistic concurrency control. FK references (provider, location, guarantor, etc.) are resolved from UUIDs to internal IDs. Error conditions: - 404: Patient or referenced entity not found. - 409: Version conflict (base_version does not match current). - 422: Validation error.
Parameters
Path Parameters
patient_uuidstringrequiredorg_idstringrequiredRequest Body
address_line1stringaddress_line2stringaddress_notestringallergy_review_statusenumnkdanot_reviewedreviewedappointment_module_notestringask_to_arrive_early_minsintegerbase_versionintegerrequiredCurrent version of the patient record for optimistic concurrency control.
billing_cycle_dayintegerbilling_type_uuidstring (uuid)chart_numberstringcitystringconsent_flagsintegercountrystringdate_first_visitstring (date)date_of_birthstring (date)date_time_deceasedstring (date-time)emailstringemergency_contact_namestringemergency_contact_phonestringemployer_uuidstring (uuid)fee_schedule_uuidstring (uuid)first_namestringgenderenumfemalemalenon_binaryotherprefer_not_to_sayunknownhome_phonestringlast_namestringlocation_uuidstring (uuid)marital_statusenumdivorceddomestic_partnermarriedotherseparatedsinglewidowedmedicaid_idstringmedical_summarystringmedical_urgent_notestringmiddle_namestringmobile_phonestringpostal_codestringpreferred_confirmation_methodenumemailmailnonephonetextpreferred_contact_methodenumemailmailnonephonetextpreferred_languagestringpreferred_namestringpremedication_requiredbooleanprimary_provider_uuidstring (uuid)pronounenumhe_himnot_specifiedothershe_herthey_themreceives_emailbooleanreceives_smsbooleanresponsible_party_uuidstring (uuid)salutationstringsecondary_provider_uuidstring (uuid)social_security_numberstringstatestringtitlestringtreatment_notesstringwork_phonestringResponses
address_line1stringaddress_line2stringaddress_notestringallergy_review_statusenumAllergy review status. One of: not_reviewed, nkda, reviewed. 'not_reviewed' means allergies have not been assessed.
nkdanot_reviewedreviewedappointment_module_notestringask_to_arrive_early_minsintegerNumber of minutes to ask the patient to arrive before their appointment (0-120).
balance_0_30stringbalance_31_60stringbalance_61_90stringbalance_over_90stringbalance_totalstringbilling_cycle_dayintegerbilling_typeobjectLightweight reference to a related entity — exposes UUID and optional name.
chart_numberstringcitystringconsent_flagsintegerBitmask of consent flags (HIPAA, treatment consent, etc.).
countrystringcreated_atstring (date-time)requiredTimestamp when the patient record was created.
date_first_visitstring (date)date_of_birthstring (date)date_time_deceasedstring (date-time)deleted_atstring (date-time)emailstringemergency_contact_namestringemergency_contact_phonestringemployerobjectLightweight reference to a related entity — exposes UUID and optional name.
estimated_balancestringfee_scheduleobjectLightweight reference to a related entity — exposes UUID and optional name.
first_namestringrequiredPatient's legal first name.
genderenumAdministrative gender for clinical records. One of: male, female, non_binary, other, unknown, prefer_not_to_say.
femalemalenon_binaryotherprefer_not_to_sayunknownhome_phonestringidstring (uuid)requiredUnique identifier of the patient.
insurance_estimatestringlast_namestringrequiredPatient's legal last name (surname).
latest_vitals_datestring (date)locationobjectLightweight reference to a related entity — exposes UUID and optional name.
marital_statusenumdivorceddomestic_partnermarriedotherseparatedsinglewidowedmedicaid_idstringmedical_summarystringmedical_urgent_notestringmiddle_namestringmobile_phonestringpayment_plan_duestringpostal_codestringpotential_duplicatesobject[]preferred_confirmation_methodenumemailmailnonephonetextpreferred_contact_methodenumemailmailnonephonetextpreferred_languagestringpreferred_namestringpremedication_requiredbooleanWhether the patient requires antibiotic premedication before dental procedures.
primary_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
pronounenumhe_himnot_specifiedothershe_herthey_themreceives_emailbooleanWhether the patient has opted in to receive email communications.
receives_smsbooleanWhether the patient has opted in to receive SMS messages.
responsible_partyobjectLightweight reference to a related entity — exposes UUID and optional name.
salutationstringscheduling_restrictedbooleanWhether this patient has a scheduling hold (outstanding balance, missing forms, etc.). Derived from patient status and balance: true when status is 'inactive' or balance exceeds $500.
secondary_providerobjectLightweight reference to a related entity — exposes UUID and optional name.
smoking_snomedstringsocial_security_numberstringstatestringstatusenumPatient lifecycle status. One of: active, inactive, prospective, deceased, archived. Defaults to 'active'.
activearchiveddeceasedinactiveprospectivetitlestringtreatment_notesstringupdated_atstring (date-time)requiredTimestamp when the patient record was last updated.
versionintegerrequiredOptimistic concurrency version number.
work_phonestringdetailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"address_line1": "string",
"address_line2": "string",
"address_note": "string",
"allergy_review_status": "string",
"appointment_module_note": "string",
"base_version": 1
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"address_line1": "string",
"address_line2": "string",
"address_note": "string",
"allergy_review_status": "string",
"appointment_module_note": "string",
"base_version": 1
}'/api/v1/{org_id}/patients/{patient_uuid}/alerts/{alert_uuid}Update patient alert
Update a patient alert. Can modify scope, urgency, status, note, and disable date. Error conditions: - 404: Patient or alert not found. - 409: Version conflict. - 422: Invalid alert_scope or status value.
Parameters
Path Parameters
patient_uuidstringrequiredalert_uuidstringrequiredorg_idstringrequiredRequest Body
alert_scopestringbase_versionintegerrequiredCurrent version for optimistic concurrency control.
date_disabledstring (date-time)disable_onstring (date)is_urgentbooleannotestringstatusstringResponses
alert_definitionobjectLightweight reference to a related entity — exposes UUID and optional name.
alert_scopestringrequiredVisibility scope. One of: patient (this chart only), family (all family members' charts).
created_atstring (date-time)requiredTimestamp when the record was created.
created_byintegerdate_disabledstring (date-time)disable_onstring (date)idstring (uuid)requiredUnique identifier of the patient alert record.
is_urgentbooleanrequiredWhether this alert should be displayed prominently as an urgent warning.
notestringpatientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
statusstringrequiredAlert lifecycle status. One of: active, disabled, archived.
updated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/alerts/{alert_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"alert_scope": "string",
"base_version": 1,
"date_disabled": "string",
"disable_on": "string",
"is_urgent": null
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/alerts/{alert_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"alert_scope": "string",
"base_version": 1,
"date_disabled": "string",
"disable_on": "string",
"is_urgent": null
}'/api/v1/{org_id}/patients/{patient_uuid}/allergies/{allergy_uuid}Update patient allergy
Update a patient allergy record. Uses PATCH semantics with optimistic concurrency control. Error conditions: - 404: Patient, allergy, or allergy definition not found. - 409: Version conflict.
Parameters
Path Parameters
patient_uuidstringrequiredallergy_uuidstringrequiredorg_idstringrequiredRequest Body
allergy_definition_uuidstring (uuid)base_versionintegerrequiredCurrent version for optimistic concurrency control.
date_adverse_reactionstring (date)reactionstringseveritystringsnomed_reactionstringstatus_is_activebooleanResponses
allergy_definitionobjectLightweight reference to a related entity — exposes UUID and optional name.
created_atstring (date-time)requiredTimestamp when the record was created.
date_adverse_reactionstring (date)deleted_atstring (date-time)idstring (uuid)requiredUnique identifier of the patient allergy record.
interaction_warningsobject[]Drug-allergy interaction warnings detected on create. Empty on subsequent reads.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
reactionstringseveritystringsnomed_reactionstringstatus_is_activebooleanrequiredWhether this allergy is currently active.
updated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/allergies/{allergy_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allergy_definition_uuid": "string",
"base_version": 1,
"date_adverse_reaction": "string",
"reaction": "string",
"severity": "string"
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/allergies/{allergy_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"allergy_definition_uuid": "string",
"base_version": 1,
"date_adverse_reaction": "string",
"reaction": "string",
"severity": "string"
}'/api/v1/{org_id}/patients/{patient_uuid}/diseases/{disease_uuid}Update patient disease/problem
Update a patient disease/problem record. Commonly used to transition problem_status (e.g. active -> resolved) or update clinical notes. Error conditions: - 404: Patient, disease, or disease definition not found. - 409: Version conflict. - 422: Invalid problem_status or function_status value.
Parameters
Path Parameters
patient_uuidstringrequireddisease_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version for optimistic concurrency control.
date_startstring (date)date_stopstring (date)disease_definition_uuidstring (uuid)function_statusstringpatient_notestringproblem_statusstringsnomed_problem_typestringResponses
created_atstring (date-time)requiredTimestamp when the record was created.
date_startstring (date)date_stopstring (date)deleted_atstring (date-time)disease_definitionobjectLightweight reference to a related entity — exposes UUID and optional name.
function_statusstringrequiredClinical function classification per Meaningful Use. One of: problem, cognitive_result, cognitive_problem, functional_result, functional_problem.
idstring (uuid)requiredUnique identifier of the patient disease/problem record.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
patient_notestringproblem_statusstringrequiredLifecycle status of the problem. One of: active, resolved, inactive.
snomed_problem_typestringupdated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/diseases/{disease_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"date_start": "string",
"date_stop": "string",
"disease_definition_uuid": "string",
"function_status": "string"
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/diseases/{disease_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"date_start": "string",
"date_stop": "string",
"disease_definition_uuid": "string",
"function_status": "string"
}'/api/v1/{org_id}/patients/{patient_uuid}/medications/{medication_uuid}Update patient medication
Update a patient medication record. Error conditions: - 404: Patient, medication, definition, or provider not found. - 409: Version conflict.
Parameters
Path Parameters
patient_uuidstringrequiredmedication_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version for optimistic concurrency control.
date_startstring (date)date_stopstring (date)discontinuation_reasonstringdosagestringfrequencystringis_cpoebooleanmed_descriptstringmedication_definition_uuidstring (uuid)patient_notestringprovider_uuidstring (uuid)routestringrx_cuistringstatusenumactivecompleteddiscontinuedon_holdResponses
created_atstring (date-time)requiredTimestamp when the record was created.
date_startstring (date)date_stopstring (date)deleted_atstring (date-time)discontinuation_reasonstringdosagestringfrequencystringidstring (uuid)requiredUnique identifier of the patient medication record.
interaction_warningsobject[]Drug-allergy interaction warnings detected on create. Empty on subsequent reads.
is_cpoebooleanrequiredWhether entered via Computerized Provider Order Entry.
med_descriptstringmedication_definitionobjectLightweight reference to a related entity — exposes UUID and optional name.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
patient_notestringproviderobjectLightweight reference to a related entity — exposes UUID and optional name.
routestringrx_cuistringstatusenumMedication lifecycle status. One of: active, discontinued, on_hold, completed.
activecompleteddiscontinuedon_holdupdated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/medications/{medication_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"date_start": "string",
"date_stop": "string",
"discontinuation_reason": "string",
"dosage": "string"
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/medications/{medication_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"date_start": "string",
"date_stop": "string",
"discontinuation_reason": "string",
"dosage": "string"
}'/api/v1/{org_id}/patients/{patient_uuid}/referral-attributions/{attribution_uuid}Update patient attribution
Update a referral attribution. Only attribution_role and source_note can be modified. Source references (referral_source, referral_partner, provider, referring_patient) are immutable after creation. Requires base_version for optimistic concurrency control. Verifies that the attribution belongs to the specified patient. Error conditions: - 404: Patient or attribution not found, or attribution does not belong to this patient. - 409: Version conflict — the attribution was modified since last read.
Parameters
Path Parameters
patient_uuidstringrequiredattribution_uuidstringrequiredorg_idstringrequiredRequest Body
attribution_roleenumassistprimarysecondarybase_versionintegerrequiredCurrent version for optimistic concurrency. Rejected with 409 if stale.
source_notestringResponses
attributed_atstring (date-time)requiredTimestamp when the attribution was recorded.
attribution_roleenumRole of this attribution in the patient's acquisition. One of: primary (first-touch attribution set at intake), secondary (additional touchpoint), assist (contributing factor).
assistprimarysecondarycreated_atstring (date-time)requiredTimestamp when the record was created.
idstring (uuid)requiredUnique identifier of the attribution record.
patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
referral_partnerobjectLightweight reference to a related entity — exposes UUID and optional name.
referral_sourceobjectLightweight reference to a related entity — exposes UUID and optional name.
referring_patientobjectLightweight reference to a related entity — exposes UUID and optional name.
source_notestringupdated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/referral-attributions/{attribution_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"attribution_role": "string",
"base_version": 1,
"source_note": "string"
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/referral-attributions/{attribution_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"attribution_role": "string",
"base_version": 1,
"source_note": "string"
}'/api/v1/{org_id}/patients/{patient_uuid}/relationships/{relationship_uuid}Update patient relationship
Update a patient relationship. Can modify relationship_type, is_guardian flag, and note. Error conditions: - 404: Patient or relationship not found. - 409: Version conflict. - 422: Invalid relationship_type value.
Parameters
Path Parameters
patient_uuidstringrequiredrelationship_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version for optimistic concurrency control.
is_guardianbooleannotestringrelationship_typeenumcaregiverchildclonefoster_childgrandchildgrandparentguardianlife_partnermergeother_familyparentsiblingspousestepchildstepparentResponses
created_atstring (date-time)requiredTimestamp when the record was created.
deleted_atstring (date-time)from_patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
from_patient_namestringidstring (uuid)requiredUnique identifier of the patient relationship record.
is_guardianbooleanWhether the source patient is the legal guardian of the target.
notestringrelationship_typeenumrequiredType of relationship from source to target.
caregiverchildclonefoster_childgrandchildgrandparentguardianlife_partnermergeother_familyparentsiblingspousestepchildstepparentto_patientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
to_patient_namestringupdated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
detailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/relationships/{relationship_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"is_guardian": null,
"note": "string",
"relationship_type": "string"
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/relationships/{relationship_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"is_guardian": null,
"note": "string",
"relationship_type": "string"
}'/api/v1/{org_id}/patients/{patient_uuid}/vital-signs/{vitals_uuid}Update vital signs
Update a vital signs recording. Error conditions: - 404: Patient, vital signs, or provider not found. - 409: Version conflict.
Parameters
Path Parameters
patient_uuidstringrequiredvitals_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredCurrent version for optimistic concurrency control.
bminumberbmi_percentileintegerbp_diastolicintegerbp_systolicintegerdate_takenstring (date)has_followup_planbooleanheight_inchesnumbernotestringoxygen_saturationintegerprovider_uuidstring (uuid)pulseintegerrespiration_rateintegertemperature_fnumbertime_takenstring (time)weight_codestringweight_lbsnumberResponses
abnormal_flagsobject[]Clinical flags for out-of-range vital sign values. Each flag includes the vital name, message, and severity (warning/critical).
bmistringbmi_percentileintegerbp_diastolicintegerbp_systolicintegercreated_atstring (date-time)requiredTimestamp when the record was created.
created_byintegerdate_takenstring (date)requiredDate when the vital signs were measured.
deleted_atstring (date-time)has_followup_planbooleanrequiredWhether an abnormal vital signs follow-up plan has been created.
height_inchesstringidstring (uuid)requiredUnique identifier of the patient vital signs record.
is_procedure_blockingbooleanTrue if any vital sign is in a critical range that should block dental procedures until provider review (e.g., BP >180/120, SpO2 <94%).
notestringoxygen_saturationintegerpatientobjectrequiredLightweight reference to a related entity — exposes UUID and optional name.
providerobjectLightweight reference to a related entity — exposes UUID and optional name.
pulseintegerrespiration_rateintegertemperature_fstringtime_takenstring (time)updated_atstring (date-time)requiredTimestamp when the record was last updated.
versionintegerrequiredOptimistic concurrency version number.
weight_codestringweight_lbsstringdetailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/vital-signs/{vitals_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"bmi": null,
"bmi_percentile": 1,
"bp_diastolic": 1,
"bp_systolic": 1
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/patients/{patient_uuid}/vital-signs/{vitals_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"bmi": null,
"bmi_percentile": 1,
"bp_diastolic": 1,
"bp_systolic": 1
}'Alert Definitions
5 endpoints
/api/v1/{org_id}/patient-alert-definitionsList Patient Alert Definitions
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
pageintegerDefault: 1
page_sizeintegerDefault: 50
searchstringcategorystringResponses
itemsobject[]requiredpageintegerrequiredpage_sizeintegerrequiredtotalintegerrequireddetailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patient-alert-definitions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patient-alert-definitions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patient-alert-definitions/{definition_uuid}Get Patient Alert Definition
Parameters
Path Parameters
definition_uuidstringrequiredorg_idstringrequiredResponses
categorystringcreated_atstring (date-time)requireddefault_is_urgentbooleanrequireddefault_scopestringrequireddeleted_atstring (date-time)descriptionstringidstring (uuid)requireditem_orderintegerrequirednamestringrequiredupdated_atstring (date-time)requiredversionintegerrequireddetailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patient-alert-definitions/{definition_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patient-alert-definitions/{definition_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patient-alert-definitionsCreate Patient Alert Definition
Parameters
Path Parameters
org_idstringrequiredRequest Body
categorystringdefault_is_urgentbooleandefault_scopestringdescriptionstringitem_orderintegernamestringrequiredResponses
categorystringcreated_atstring (date-time)requireddefault_is_urgentbooleanrequireddefault_scopestringrequireddeleted_atstring (date-time)descriptionstringidstring (uuid)requireditem_orderintegerrequirednamestringrequiredupdated_atstring (date-time)requiredversionintegerrequireddetailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patient-alert-definitions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"category": "string",
"default_is_urgent": false,
"default_scope": "patient",
"description": "string",
"item_order": 1,
"name": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patient-alert-definitions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"category": "string",
"default_is_urgent": false,
"default_scope": "patient",
"description": "string",
"item_order": 1,
"name": "string"
}'/api/v1/{org_id}/patient-alert-definitions/{definition_uuid}/archiveArchive Patient Alert Definition
Parameters
Path Parameters
definition_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredResponses
categorystringcreated_atstring (date-time)requireddefault_is_urgentbooleanrequireddefault_scopestringrequireddeleted_atstring (date-time)descriptionstringidstring (uuid)requireditem_orderintegerrequirednamestringrequiredupdated_atstring (date-time)requiredversionintegerrequireddetailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patient-alert-definitions/{definition_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patient-alert-definitions/{definition_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1
}'/api/v1/{org_id}/patient-alert-definitions/{definition_uuid}Update Patient Alert Definition
Parameters
Path Parameters
definition_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredcategorystringdefault_is_urgentbooleandefault_scopestringdescriptionstringitem_orderintegernamestringResponses
categorystringcreated_atstring (date-time)requireddefault_is_urgentbooleanrequireddefault_scopestringrequireddeleted_atstring (date-time)descriptionstringidstring (uuid)requireditem_orderintegerrequirednamestringrequiredupdated_atstring (date-time)requiredversionintegerrequireddetailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/patient-alert-definitions/{definition_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"category": "string",
"default_is_urgent": null,
"default_scope": "string",
"description": "string"
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/patient-alert-definitions/{definition_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"category": "string",
"default_is_urgent": null,
"default_scope": "string",
"description": "string"
}'Field Definitions
5 endpoints
/api/v1/{org_id}/patient-field-definitionsList Patient Field Definitions
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
pageintegerDefault: 1
page_sizeintegerDefault: 50
searchstringResponses
itemsobject[]requiredpageintegerrequiredpage_sizeintegerrequiredtotalintegerrequireddetailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patient-field-definitions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patient-field-definitions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patient-field-definitions/{definition_uuid}Get Patient Field Definition
Parameters
Path Parameters
definition_uuidstringrequiredorg_idstringrequiredResponses
created_atstring (date-time)requireddeleted_atstring (date-time)descriptionstringdropdown_optionsstring[]field_typestringrequiredidstring (uuid)requiredis_requiredbooleanrequireditem_orderintegerrequirednamestringrequiredupdated_atstring (date-time)requiredversionintegerrequireddetailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patient-field-definitions/{definition_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patient-field-definitions/{definition_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patient-field-definitionsCreate Patient Field Definition
Parameters
Path Parameters
org_idstringrequiredRequest Body
descriptionstringdropdown_optionsstring[]field_typestringrequiredis_requiredbooleanitem_orderintegernamestringrequiredResponses
created_atstring (date-time)requireddeleted_atstring (date-time)descriptionstringdropdown_optionsstring[]field_typestringrequiredidstring (uuid)requiredis_requiredbooleanrequireditem_orderintegerrequirednamestringrequiredupdated_atstring (date-time)requiredversionintegerrequireddetailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patient-field-definitions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"description": "string",
"dropdown_options": null,
"field_type": "string",
"is_required": false,
"item_order": 0,
"name": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patient-field-definitions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"description": "string",
"dropdown_options": null,
"field_type": "string",
"is_required": false,
"item_order": 0,
"name": "string"
}'/api/v1/{org_id}/patient-field-definitions/{definition_uuid}/archiveArchive Patient Field Definition
Parameters
Path Parameters
definition_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredResponses
created_atstring (date-time)requireddeleted_atstring (date-time)descriptionstringdropdown_optionsstring[]field_typestringrequiredidstring (uuid)requiredis_requiredbooleanrequireditem_orderintegerrequirednamestringrequiredupdated_atstring (date-time)requiredversionintegerrequireddetailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patient-field-definitions/{definition_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patient-field-definitions/{definition_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1
}'/api/v1/{org_id}/patient-field-definitions/{definition_uuid}Update Patient Field Definition
Parameters
Path Parameters
definition_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequireddescriptionstringdropdown_optionsstring[]field_typestringis_requiredbooleanitem_orderintegernamestringResponses
created_atstring (date-time)requireddeleted_atstring (date-time)descriptionstringdropdown_optionsstring[]field_typestringrequiredidstring (uuid)requiredis_requiredbooleanrequireditem_orderintegerrequirednamestringrequiredupdated_atstring (date-time)requiredversionintegerrequireddetailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/patient-field-definitions/{definition_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"description": "string",
"dropdown_options": null,
"field_type": "string",
"is_required": null
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/patient-field-definitions/{definition_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"description": "string",
"dropdown_options": null,
"field_type": "string",
"is_required": null
}'Tag Definitions
5 endpoints
/api/v1/{org_id}/patient-tag-definitionsList Patient Tag Definitions
Parameters
Path Parameters
org_idstringrequiredQuery Parameters
pageintegerDefault: 1
page_sizeintegerDefault: 50
searchstringcategorystringResponses
itemsobject[]requiredpageintegerrequiredpage_sizeintegerrequiredtotalintegerrequireddetailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patient-tag-definitions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patient-tag-definitions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patient-tag-definitions/{definition_uuid}Get Patient Tag Definition
Parameters
Path Parameters
definition_uuidstringrequiredorg_idstringrequiredResponses
categorystringcolorstringcreated_atstring (date-time)requireddeleted_atstring (date-time)descriptionstringidstring (uuid)requireditem_orderintegerrequirednamestringrequiredupdated_atstring (date-time)requiredversionintegerrequireddetailobject[]curl -X GET "https://api.example.com/api/v1/{org_id}/patient-tag-definitions/{definition_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"curl -X GET "https://api.example.com/api/v1/{org_id}/patient-tag-definitions/{definition_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"/api/v1/{org_id}/patient-tag-definitionsCreate Patient Tag Definition
Parameters
Path Parameters
org_idstringrequiredRequest Body
categorystringcolorstringdescriptionstringitem_orderintegernamestringrequiredResponses
categorystringcolorstringcreated_atstring (date-time)requireddeleted_atstring (date-time)descriptionstringidstring (uuid)requireditem_orderintegerrequirednamestringrequiredupdated_atstring (date-time)requiredversionintegerrequireddetailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patient-tag-definitions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"category": "string",
"color": "string",
"description": "string",
"item_order": 1,
"name": "string"
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patient-tag-definitions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"category": "string",
"color": "string",
"description": "string",
"item_order": 1,
"name": "string"
}'/api/v1/{org_id}/patient-tag-definitions/{definition_uuid}/archiveArchive Patient Tag Definition
Parameters
Path Parameters
definition_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredResponses
categorystringcolorstringcreated_atstring (date-time)requireddeleted_atstring (date-time)descriptionstringidstring (uuid)requireditem_orderintegerrequirednamestringrequiredupdated_atstring (date-time)requiredversionintegerrequireddetailobject[]curl -X POST "https://api.example.com/api/v1/{org_id}/patient-tag-definitions/{definition_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1
}'curl -X POST "https://api.example.com/api/v1/{org_id}/patient-tag-definitions/{definition_uuid}/archive" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1
}'/api/v1/{org_id}/patient-tag-definitions/{definition_uuid}Update Patient Tag Definition
Parameters
Path Parameters
definition_uuidstringrequiredorg_idstringrequiredRequest Body
base_versionintegerrequiredcategorystringcolorstringdescriptionstringitem_orderintegernamestringResponses
categorystringcolorstringcreated_atstring (date-time)requireddeleted_atstring (date-time)descriptionstringidstring (uuid)requireditem_orderintegerrequirednamestringrequiredupdated_atstring (date-time)requiredversionintegerrequireddetailobject[]curl -X PATCH "https://api.example.com/api/v1/{org_id}/patient-tag-definitions/{definition_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"category": "string",
"color": "string",
"description": "string",
"item_order": 1
}'curl -X PATCH "https://api.example.com/api/v1/{org_id}/patient-tag-definitions/{definition_uuid}" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"base_version": 1,
"category": "string",
"color": "string",
"description": "string",
"item_order": 1
}'