---
title: Oracle Health API Integration on Truto
slug: oraclehealth
category: Healthcare
canonical: "https://truto.one/integrations/detail/oraclehealth/"
---

# Oracle Health API Integration on Truto



**Category:** Healthcare  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 128 tools for Oracle Health that AI agents can call directly.

- **get_single_oracle_health_goal_by_id** — Get a single goal by its logical resource ID in Oracle Health.
Returns: resourceType, id, meta, text, lifecycleStatus, achievementStatus, category, and more. Required: id.
- **list_all_oracle_health_goals** — List Oracle Health goals that match supplied filters. Requires either _id or patient; _id may not be combined with patient or target-date.
Returns: resourceType, id, meta, text, lifecycleStatus, achievementStatus, category, and more. Required: none strictly; see the search rules above.
- **list_all_oracle_health_people** — List Oracle Health Millennium Platform persons matching the supplied query parameters. Requires one of: _id (logical resource ID) or identifier (system|code).
Returns: resourceType, id, meta, text, identifier, name, telecom, and more. Required: none strictly; see the search rules above.
- **get_single_oracle_health_person_by_id** — Get an Oracle Health Millennium Platform person by id (the logical resource ID). If the person record was combined into another record, an inactive entry with a link to the current person entry is returned.
Returns: resourceType, id, meta, text, identifier, name, telecom, and more. Required: id.
- **list_all_oracle_health_appointments** — List Oracle Health appointments matching search filters, sorted by start date ascending. Supply at least one of _id, patient, practitioner, or location; patient, practitioner, and location are mutually exclusive and require date or -date-or-req-period.
Returns: resourceType, id, meta, text, extension, status, cancelationReason, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_appointment** — Create an Oracle Health appointment. Proposed appointments also need serviceType and requestedPeriod; booked ones need slot. Unsupported body fields are ignored.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, status, participant, participant.actor, participant.status.
- **get_single_oracle_health_appointment_by_id** — Get a single Oracle Health appointment by id.
Returns: resourceType, id, meta, text, extension, status, cancelationReason, and more. Required: id.
- **update_a_oracle_health_appointment_by_id** — Patch an existing Oracle Health appointment with RFC 6902 JSON Patch operations on /status, /slot, /reasonCode, /cancelationReason, /comment, /patient-status, /extension, and Video Visit link paths.
Send the current version of the record in truto_if_match (Truto sends it as the If-Match header); a stale version returns 409. Oracle answers with an empty body. The new version of the record is in the ETag response header. Required: id.
- **get_single_oracle_health_communication_by_id** — Get a single communication in Oracle Health by its communication ID.
Returns: resourceType, id, meta, text, extension, inResponseTo, status, and more. Required: id.
- **update_a_oracle_health_communication_by_id** — Update a communication in Oracle Health. Only the replace operation on /extension (the email-status extension) is documented.
Oracle answers with an empty body. The new version of the record is in the ETag response header. Required: id.
- **list_all_oracle_health_communications** — List communications in Oracle Health matching the supplied filters; communication content is returned through the Binary resource via each record's payload. Use _id alone, or category together with recipient, received, and -email-status. At most 1000 elements are returned.
Returns: resourceType, id, meta, text, extension, inResponseTo, status, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_communication** — Create a communication in Oracle Health.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, status, category, recipient, sender, payload.
- **list_all_oracle_health_insurance_plans** — List insurance plans in Oracle Health Millennium that match the supplied filters. Requires exactly one of _id or owned-by; they are mutually exclusive.
Returns: resourceType, id, text, status, type, name, period, and more. Required: none strictly; see the search rules above.
- **get_single_oracle_health_insurance_plan_by_id** — Get a single insurance plan in Oracle Health Millennium by its logical resource id.
Returns: resourceType, id, text, status, type, name, period, and more. Required: id.
- **list_all_oracle_health_patients** — Search patients in Oracle Health. Supply _id, or at least one of identifier, family, given, name, birthdate, address-postalcode, phone or email; gender only works together with another parameter. Searching by given needs family. The name, family and given parameters accept the :exact modifier and match current names only; Oracle advises using :exact and not combining family or given with name. A search that matches more than 1000 patients fails with 422.
Returns: resourceType, id, meta, text, extension, identifier, active, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_patient** — Create a new patient in Oracle Health by posting a FHIR Patient resource as application/fhir+json.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, identifier, name, name.family, name.use.
- **get_single_oracle_health_patient_by_id** — Get one patient by id. The Patient.animal modifier element and direct secure email are not returned.
Returns: resourceType, id, meta, text, extension, identifier, active, and more. Required: id.
- **update_a_oracle_health_patient_by_id** — Patch a patient with an RFC 6902 JSON Patch array.
Send the current version of the record in truto_if_match (Truto sends it as the If-Match header); a stale version returns 409. Oracle answers with an empty body. The new version of the record is in the ETag response header. Required: id.
- **get_single_oracle_health_charge_item_by_id** — Get a single charge item in Oracle Health by id.
Returns: resourceType, id, meta, text, extension, status, code, and more. Required: id.
- **list_all_oracle_health_charge_items** — List charge items in Oracle Health that meet supplied query parameters. Requires exactly one of _id, context, or account; when using context or account, -status must be set to billable.
Returns: resourceType, id, meta, text, extension, status, code, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_charge_item_modification** — Create a modified charge item in Oracle Health by modifying an existing charge item via the FHIR $modify operation.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, parameter, transactionId, chargeItem, status, subject, context, code, replacing.
- **create_a_oracle_health_charge_item_creation** — Create a charge event in Oracle Health that can result in the creation of one or more charge items.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, parameter, transactionId, status, subject, context, occurrenceDateTime, quantity, code.
- **get_single_oracle_health_observation_by_id** — Get one observation by id (laboratory, imaging, vital signs or social history).
Returns: resourceType, id, meta, text, identifier, status, category, and more. Required: id.
- **update_a_oracle_health_observation_by_id** — Update an observation in Oracle Health by id (PUT). Send the current version in the If-Match header. The body must repeat the id. Only laboratory, imaging and vital-signs observations are supported, and the patient and category cannot change. Vital-signs observations also need their identifier, which cannot be modified.
Oracle answers with an empty body. The new version of the record is in the ETag response header. Required: id, resourceType, status, category, code, subject, effectiveDateTime.
- **list_all_oracle_health_observations** — List observations matching the supplied FHIR search filters (laboratory, imaging, vitals, and social history). Requires one of _id, patient, or subject; results are sorted by effective date/time descending and _count caps pages at 200.
Returns: resourceType, id, meta, text, identifier, status, category, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_observation** — Create a new observation in Oracle Health (e.g. a new blood pressure reading). Requires a body with resourceType set to Observation; modifier fields cause the transaction to fail, and components are only honored for blood pressure and pulse oximetry profiles.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, status, category, code, subject, effectiveDateTime.
- **list_all_oracle_health_allergy_intolerances** — List allergy intolerances in Oracle Health that meet the supplied search parameters. Supply one of patient or _id; _id may not be combined with other parameters except _revinclude.
Returns: resourceType, id, meta, text, clinicalStatus, verificationStatus, type, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_allergy_intolerance** — Create a new allergy intolerance in Oracle Health. Only supported body fields are accepted; unsupported fields are ignored.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, clinicalStatus, code, patient.
- **get_single_oracle_health_allergy_intolerance_by_id** — Get an individual allergy intolerance in Oracle Health by its associated ID.
Returns: resourceType, id, meta, text, clinicalStatus, verificationStatus, type, and more. Required: id.
- **update_a_oracle_health_allergy_intolerance_by_id** — Update an allergy intolerance in Oracle Health by id. Missing body fields are interpreted as nulling out or removing data from the resource.
Send the current version of the record in truto_if_match (Truto sends it as the If-Match header); a stale version returns 409. Oracle answers with an empty body. The new version of the record is in the ETag response header. Required: id, resourceType, code, patient.
- **list_all_oracle_health_capability_statements** — Get the FHIR CapabilityStatement of this Oracle Health domain: the resource types and interactions it supports. No parameters are needed, and Oracle needs no authorization for it.
Returns: resourceType, url, name, title, status, date, publisher, and more. Required: none strictly; see the search rules above.
- **list_all_oracle_health_smart_configurations** — Get the well-known SMART configuration of this Oracle Health domain: the authorization, token, revocation, management and introspection endpoints. No parameters are needed, and Oracle needs no authorization for it.
Returns: authorization_endpoint, token_endpoint, revocation_endpoint, management_endpoint, introspection_endpoint. Required: none strictly; see the search rules above.
- **get_single_oracle_health_encounter_by_id** — Get a single Oracle Health encounter by id.
Returns: resourceType, id, meta, text, extension, identifier, status, and more. Required: id.
- **update_a_oracle_health_encounter_by_id** — Patch an Oracle Health encounter by id using JSON Patch operations on /period/start, /period/end, /type, /extension, or /extension/-.
Send the current version of the record in truto_if_match (Truto sends it as the If-Match header); a stale version returns 409. Oracle answers with an empty body. The new version of the record is in the ETag response header. Required: id.
- **list_all_oracle_health_encounters** — List Oracle Health encounters matching the supplied filters, sorted newest-first by period start. One of _id, patient, subject, account, or identifier is required; when using patient, _count and status are also required.
Returns: resourceType, id, meta, text, extension, identifier, status, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_encounter** — Create an encounter in Oracle Health.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, status, serviceProvider, location.
- **get_single_oracle_health_condition_by_id** — Get a single condition in Oracle Health by its id.
Returns: resourceType, id, meta, text, clinicalStatus, verificationStatus, category, and more. Required: id.
- **update_a_oracle_health_condition_by_id** — Update a condition in Oracle Health by id (PUT). The body must repeat the id. A field missing from the body is removed from the record. Only the problem-list-item and encounter-diagnosis categories are supported.
Send the current version of the record in truto_if_match (Truto sends it as the If-Match header); a stale version returns 409. Oracle answers with an empty body. The new version of the record is in the ETag response header. Required: id, resourceType, category, code, subject.
- **list_all_oracle_health_conditions** — Search conditions in Oracle Health. Supply at least one of _id, patient or subject. _revinclude=Provenance:target adds the Provenance entries of the matches (with _id or patient).
Returns: resourceType, id, meta, text, clinicalStatus, verificationStatus, category, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_condition** — Create a new condition in Oracle Health.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, category, code, subject.
- **create_a_oracle_health_financial_transaction** — Create a financial transaction in Oracle Health. Requires a FinancialTransactionCreate FHIR request body; only fields in the vendor's supported list are accepted - unsupported fields are ignored or can cause errors.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, identifier, code.
- **list_all_oracle_health_practitioners** — List practitioners in Oracle Health that match the supplied search parameters. Requires one of _id, identifier, family, name, or active.
Returns: resourceType, id, meta, text, extension, identifier, active, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_practitioner** — Create a practitioner in Oracle Health to be referenced by other resources; not used for user provisioning.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, name, name.family, name.given.
- **get_single_oracle_health_practitioner_by_id** — Get a practitioner in Oracle Health by the logical resource ID.
Returns: resourceType, id, meta, text, extension, identifier, active, and more. Required: id.
- **list_all_oracle_health_slots** — List Oracle Health slots that match the supplied search parameters. At least one of _id, service-type, schedule.actor, or -location must be supplied, and start is required when using the latter three; only free, bookable slots are returned unless _id is used.
Returns: resourceType, id, meta, text, extension, serviceType, schedule, and more. Required: none strictly; see the search rules above.
- **get_single_oracle_health_slot_by_id** — Get a single Oracle Health slot by its id.
Returns: resourceType, id, meta, text, extension, serviceType, schedule, and more. Required: id.
- **update_a_oracle_health_slot_by_id** — Patch an existing Oracle Health slot by id using a JSON Patch (RFC 6902) array; only the replace operation on /status is supported, with value free or busy-tentative.
Send the current version of the record in truto_if_match (Truto sends it as the If-Match header); a stale version returns 409. Oracle answers with an empty body. The new version of the record is in the ETag response header. Required: id.
- **get_single_oracle_health_document_reference_by_id** — Get a document reference by id in Oracle Health Millennium. Read is supported for clinical-note, cardiology, radiology, microbiology, and pathology charted documents and clinical-note staged documents.
Returns: resourceType, id, meta, text, identifier, status, docStatus, and more. Required: id.
- **update_a_oracle_health_document_reference_by_id** — Update a document reference in Oracle Health Millennium by id. All provided dates must have a time component.
Send the current version of the record in truto_if_match (Truto sends it as the If-Match header); a stale version returns 409. Oracle answers with an empty body. The new version of the record is in the ETag response header. Required: id, resourceType, status, docStatus, subject, author, content, content.attachment, context, context.period.
- **list_all_oracle_health_document_references** — List Oracle Health document references matching query filters. Requires either patient or _id; _count defaults to 10 and caps results at 100.
Returns: resourceType, id, meta, text, identifier, status, docStatus, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_document_reference** — Create a document reference in Oracle Health Millennium. All provided dates must have a time component; unsupported body fields are ignored.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, status, docStatus, type, subject, author, content, content.attachment, context, context.period.
- **list_all_oracle_health_document_reference_docrefs** — List a patient's documents with the Argonaut $docref operation. Give patient and type (system|code, comma-separated for several; document type is LOINC). Optional start and end must be dateTimes with a time component.
Returns: resourceType, id, status, type, subject, date, content. Required: patient, type.
- **get_single_oracle_health_structure_definition_by_id** — Get a single StructureDefinition in Oracle Health Millennium Platform by id.
Returns: resourceType, id, url, name, title, status, date, and more. Required: id.
- **list_all_oracle_health_coverages** — Search patient-level or encounter-level coverages in Oracle Health. Supply one of _id, patient or -encounter. Public healthcare coverages have ids prefixed PH or PHP and come back with the private ones.
Returns: resourceType, id, meta, text, identifier, status, type, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_coverage** — Create a new patient-level or encounter-level coverage in Oracle Health. Requires a FHIR Coverage resource payload (application/fhir+json); only Oracle-documented body fields are supported, and unsupported fields are ignored or can result in errors.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, status, subscriber, beneficiary, payor.
- **get_single_oracle_health_coverage_by_id** — Get a single Oracle Health coverage by id.
Returns: resourceType, id, meta, text, identifier, status, type, and more. Required: id.
- **update_a_oracle_health_coverage_by_id** — Patch an Oracle Health encounter-level or patient-level coverage using a JSON Patch (RFC 6902) body of replace operations on the documented paths such as /period, /dependent, /subscriber, /subscriberId, /relationship, and /class.
Send the current version of the record in truto_if_match (Truto sends it as the If-Match header); a stale version returns 409. Oracle answers with an empty body. The new version of the record is in the ETag response header. Required: id.
- **delete_a_oracle_health_coverage_by_id** — Delete an Oracle Health encounter-level or patient-level coverage by id.
Send the current version of the record in truto_if_match (Truto sends it as the If-Match header); a stale version returns 409. Oracle answers with an empty body. Required: id.
- **list_all_oracle_health_medication_administrations** — List medication administrations in Oracle Health that match the supplied filters. Either patient or _id must be supplied; effective-time ranges must use ge/gt/le/lt prefixes with a time component.
Returns: resourceType, id, meta, text, contained, extension, status, and more. Required: none strictly; see the search rules above.
- **get_single_oracle_health_medication_administration_by_id** — Get a single medication administration in Oracle Health by its ID.
Returns: resourceType, id, meta, text, contained, extension, status, and more. Required: id.
- **create_a_oracle_health_bundle** — Run a FHIR batch bundle against the Oracle Health service root: a set of independent operations in one call. Oracle documents only the creation of a Provenance (POST Provenance, needing Provenance.write) as a batch entry. The answer is a batch-response Bundle with one entry per request.
Returns: resourceType, id, type, entry. Required: resourceType, type, entry.
- **list_all_oracle_health_diagnostic_reports** — List diagnostic reports in Oracle Health filtered by patient, encounter, category, code, or date range. Requires either patient or _id; max 100 results per page.
Returns: resourceType, id, meta, text, identifier, status, category, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_diagnostic_report** — Create a diagnostic report in Oracle Health. Only cardiology and anatomic pathology reports are supported. results_interpreter is mandatory for cardiology reports when the domain defines no default user. All dates need a time component.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, status, category, code, subject, performer, identifier, effectivePeriod, effectiveDateTime, presentedForm, presentedForm.contentType, presentedForm.data.
- **get_single_oracle_health_diagnostic_report_by_id** — Get a diagnostic report in Oracle Health by id. General Laboratory, Microbiology, and Cardiology reports populate result.
Returns: resourceType, id, meta, text, identifier, status, category, and more. Required: id.
- **get_single_oracle_health_media_by_id** — Get one media item by id. The media is linked from a DiagnosticReport; use the exact link given there, because changing it has undefined consequences. The answer is the media content itself, in the content type it is stored in (not FHIR JSON).
Required: id.
- **get_single_oracle_health_specimen_by_id** — Get a single specimen from Oracle Health by its logical resource id.
Returns: resourceType, id, meta, text, accessionIdentifier, type, subject, and more. Required: id.
- **list_all_oracle_health_specimens** — Search specimens in Oracle Health, optionally filtered by _id.
Returns: resourceType, id, meta, text, accessionIdentifier, type, subject, and more. Required: none strictly; see the search rules above.
- **list_all_oracle_health_immunizations** — List immunizations in Oracle Health that meet the supplied query parameters. Requires either patient or _id; _id cannot be combined with other parameters except _revinclude.
Returns: resourceType, id, meta, text, status, vaccineCode, patient, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_immunization** — Create a new immunization in Oracle Health. Only the body fields supported by the upstream create operation are honored; unsupported fields are ignored or can result in errors.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, status, vaccineCode, patient, encounter, occurrenceDateTime.
- **get_single_oracle_health_immunization_by_id** — Get a single immunization from Oracle Health Millennium Platform by its id.
Returns: resourceType, id, meta, text, status, vaccineCode, patient, and more. Required: id.
- **update_a_oracle_health_immunization_by_id** — Update an immunization in Oracle Health Millennium Platform by id. Only the body fields supported by the upstream update operation are honored; unsupported fields are ignored or can result in errors.
Send the current version of the record in truto_if_match (Truto sends it as the If-Match header); a stale version returns 409. Oracle answers with an empty body. The new version of the record is in the ETag response header. Required: id, resourceType, status, vaccineCode, patient, encounter, occurrenceDateTime.
- **list_all_oracle_health_organizations** — Search organizations in Oracle Health. A search without filters returns all organizations, page by page.
Returns: resourceType, id, meta, text, identifier, active, type, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_organization** — Create an organization in Oracle Health Millennium. Only the supported body fields are honored; unsupported fields are ignored or can cause errors.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, name.
- **get_single_oracle_health_organization_by_id** — Get an organization in Oracle Health Millennium by its logical id.
Returns: resourceType, id, meta, text, identifier, active, type, and more. Required: id.
- **list_all_oracle_health_caregiver_organizations** — List the caregiver organizations of a care unit in Oracle Health (the $get-cg-for-mrcu operation). Give the care unit organization id as _id; only one _id can be used per request.
Returns: resourceType, id, meta, text, identifier, active, type, and more. Required: _id.
- **list_all_oracle_health_provenances** — List provenances in Oracle Health that meet the supplied query parameters. One of _id or target must be supplied; _id is required if target is not used and must not be combined with other parameters.
Returns: resourceType, id, meta, text, target, recorded, agent, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_provenance** — Create a provenance in Oracle Health. Only the documented body fields are supported; unsupported fields are ignored or can result in errors.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, target, recorded, agent, agent.who.
- **get_single_oracle_health_provenance_by_id** — Get a single provenance in Oracle Health by id.
Returns: resourceType, id, meta, text, target, recorded, agent, and more. Required: id.
- **get_single_oracle_health_location_by_id** — Get a single location in Oracle Health by its logical resource ID.
Returns: resourceType, id, meta, text, extension, identifier, status, and more. Required: id.
- **list_all_oracle_health_locations** — List locations in Oracle Health that meet the supplied search parameters, such as _id, -physicalType, identifier, address, or name. Requires at least one search parameter; name and organization must be paired with another supported parameter.
Returns: resourceType, id, meta, text, extension, identifier, status, and more. Required: none strictly; see the search rules above.
- **list_all_oracle_health_questionnaire_responses** — List Oracle Health questionnaire responses matching the supplied query parameters. One of _id or patient must be supplied; patient is required when _id is omitted.
Returns: resourceType, id, questionnaire, status, subject, authored, item, and more. Required: none strictly; see the search rules above.
- **get_single_oracle_health_questionnaire_response_by_id** — Get a single Oracle Health questionnaire response by id (the logical resource ID).
Returns: resourceType, id, questionnaire, status, subject, authored, item, and more. Required: id.
- **update_a_oracle_health_questionnaire_response_by_id** — Update a questionnaire response in Oracle Health by id (PUT). The body must repeat the id. Item ids returned by the read must be sent back and match; items flagged not modifiable cannot be updated unless they are sent without an id.
Send the current version of the record in truto_if_match (Truto sends it as the If-Match header); a stale version returns 409. Oracle answers with an empty body. The new version of the record is in the ETag response header. Required: id, resourceType, questionnaire, status, subject, item, item.linkId.
- **get_single_oracle_health_binary_by_id** — Get one document by id as a Binary resource. A Binary is usually linked from a DocumentReference, DiagnosticReport or Communication; use the exact link given there. Send Accept: application/fhir+json for the JSON Binary resource, or set Accept to DocumentReference.content.attachment.contentType (or DiagnosticReport.presentedForm.contentType) to get the raw document. Documents with URL sections are not supported as application/pdf. The token needs Binary.read plus Communication.read, DiagnosticReport.read or DocumentReference.read.
Required: id.
- **list_all_oracle_health_ccd_binaries** — Get the Continuity of Care Document (CCD) that Oracle generates for a patient, as a Binary resource. Use start and end (dateTimes with a time component) or encounter to narrow it. The Accept header defaults to application/fhir+json; send application/xml to get the XML instead. A CCD is usually linked from a DocumentReference, DiagnosticReport or Communication; use the exact link given there, because changing it has undefined consequences.
Returns: resourceType, id, meta, contentType, data. Required: patient.
- **list_all_oracle_health_medication_dispenses** — List medication dispenses in Oracle Health that meet supplied query parameters. Supply either patient or _id; date and _lastUpdated are mutually exclusive.
Returns: resourceType, id, meta, text, status, category, medicationCodeableConcept, and more. Required: none strictly; see the search rules above.
- **get_single_oracle_health_medication_dispense_by_id** — Get a single medication dispense in Oracle Health by its logical resource ID.
Returns: resourceType, id, meta, text, status, category, medicationCodeableConcept, and more. Required: id.
- **create_a_oracle_health_patient_health_card** — Issue SMART Health Cards for one patient (the $health-cards-issue operation). The body is a FHIR Parameters resource with one credentialType parameter (valueUri) per card type. The answer is a Parameters resource whose verifiableCredential parameters hold the signed cards. Oracle calls the specification stable but not yet balloted by HL7.
Returns: resourceType, parameter. Required: patient_id, resourceType, parameter.
- **list_all_oracle_health_medication_requests** — List medication requests in Oracle Health Millennium that match the supplied filters. Either patient or _id is required.
Returns: resourceType, id, meta, text, extension, status, intent, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_medication_request** — Create a medication request in Oracle Health Millennium.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, status, intent, reportedBoolean, medicationCodeableConcept, subject.
- **get_single_oracle_health_medication_request_by_id** — Get a single medication request in Oracle Health Millennium by id.
Returns: resourceType, id, meta, text, extension, status, intent, and more. Required: id.
- **update_a_oracle_health_medication_request_by_id** — Patch an existing medication request in Oracle Health Millennium using a JSON Patch (RFC 6902) replace operation. Only /status can be patched, to stopped or cancelled.
Send the current version of the record in truto_if_match (Truto sends it as the If-Match header); a stale version returns 409. Oracle answers with an empty body. The new version of the record is in the ETag response header. Required: id.
- **get_single_oracle_health_operation_definition_by_id** — Get an individual OperationDefinition by its ID in Oracle Health Millennium Platform (FHIR R4).
Returns: resourceType, id, url, name, title, status, kind, and more. Required: id.
- **get_single_oracle_health_procedure_by_id** — Get a single procedure by its logical resource ID in Oracle Health Millennium.
Returns: resourceType, id, meta, text, status, category, code, and more. Required: id.
- **list_all_oracle_health_procedures** — List Oracle Health Millennium procedures that match the supplied filters. Requires one of _id, patient, or subject; date may not be combined with _lastUpdated.
Returns: resourceType, id, meta, text, status, category, code, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_procedure** — Create a procedure in Oracle Health from a FHIR Procedure resource.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, status, code, subject.
- **get_single_oracle_health_care_team_by_id** — Get a single active care team in Oracle Health Millennium by its care team id. Only active care teams are returned.
Returns: resourceType, id, meta, text, status, category, name, and more. Required: id.
- **list_all_oracle_health_care_teams** — Search care teams in Oracle Health. Supply _id, or patient, or encounter; encounter cannot be combined with category or status, and category only supports the longitudinal and encounter codes.
Returns: resourceType, id, meta, text, status, category, name, and more. Required: none strictly; see the search rules above.
- **get_single_oracle_health_care_plan_by_id** — Get a single care plan in Oracle Health by its logical ID.
Returns: resourceType, id, meta, text, status, intent, category, and more. Required: id.
- **list_all_oracle_health_care_plans** — List care plans in Oracle Health matching the supplied query parameters. Requires either _id, or patient with category.
Returns: resourceType, id, meta, text, status, intent, category, and more. Required: none strictly; see the search rules above.
- **get_single_oracle_health_family_member_history_by_id** — Get a single family member history by id in Oracle Health.
Returns: resourceType, id, status, patient, date, name, relationship, and more. Required: id.
- **update_a_oracle_health_family_member_history_by_id** — Update a family member history in Oracle Health by id (PUT). Read the record first and send back the condition ids it returned; remove a condition by marking it entered-in-error. The body must repeat the id.
Oracle answers with an empty body. The new version of the record is in the ETag response header. Required: id, status, patient, relationship.
- **list_all_oracle_health_family_member_histories** — List family member histories in Oracle Health matching the supplied query parameters. Supply one of patient or _id; status applies only together with patient. Records with the FAMMEMB relation are sometimes system generated.
Returns: resourceType, id, status, patient, date, name, relationship, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_family_member_history** — Create a family member history in Oracle Health. Only the documented body fields are supported and the rest are ignored. Conditions cannot be added while creating; add them with an update.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: status, patient, relationship.
- **list_all_oracle_health_questionnaires** — List questionnaires in Oracle Health filtered by logical resource ID.
Returns: resourceType, id, name, title, status, subjectType, item. Required: _id.
- **get_single_oracle_health_questionnaire_by_id** — Get a single questionnaire in Oracle Health by id.
Returns: resourceType, id, name, title, status, subjectType, item. Required: id.
- **list_all_oracle_health_related_persons** — List Oracle Health related person records that match the supplied query parameters. Requires one of _id, identifier, patient, or -encounter; when using patient or identifier, -relationship-level must be set to Patient.
Returns: resourceType, id, meta, text, extension, active, patient, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_related_person** — Create a new encounter-level or patient-level related person record in Oracle Health.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: resourceType, relationship, patient, name.
- **get_single_oracle_health_related_person_by_id** — Get an Oracle Health related person record by id. Duplicate relationships are represented only once.
Returns: resourceType, id, meta, text, extension, active, patient, and more. Required: id.
- **update_a_oracle_health_related_person_by_id** — Patch an existing encounter-level or patient-level related person record in Oracle Health by id using JSON Patch (RFC 6902) operations on identifier, relationship, name, telecom, and address paths.
Send the current version of the record in truto_if_match (Truto sends it as the If-Match header); a stale version returns 409. Oracle answers with an empty body. The new version of the record is in the ETag response header. Required: id.
- **get_single_oracle_health_consent_by_id** — Get a single Consent record in Oracle Health by its logical resource ID.
Returns: resourceType, id, meta, text, status, scope, category, and more. Required: id.
- **list_all_oracle_health_consents** — List Consent records in Oracle Health that match the supplied query parameters. One of _id, patient, patient.identifier, actor, or actor.identifier is required when _id is not used; each may be provided once with a single value.
Returns: resourceType, id, meta, text, status, scope, category, and more. Required: none strictly; see the search rules above.
- **get_single_oracle_health_device_by_id** — Get a single device from Oracle Health by its logical resource ID.
Returns: resourceType, id, meta, text, udiCarrier, status, manufacturer, and more. Required: id.
- **list_all_oracle_health_devices** — List devices in Oracle Health that meet supplied query parameters. Requires either _id or patient.
Returns: resourceType, id, meta, text, udiCarrier, status, manufacturer, and more. Required: none strictly; see the search rules above.
- **list_all_oracle_health_accounts** — List accounts in Oracle Health that meet the supplied search parameters. Searches must use one of: _id; -encounter with type=guarantor-balance; patient with identifier and type=statement; or -guarantor with type=financial-account.
Returns: resourceType, id, text, extension, status, type, servicePeriod, and more. Required: none strictly; see the search rules above.
- **get_single_oracle_health_account_by_id** — Get a single account by id in Oracle Health.
Returns: resourceType, id, text, extension, status, type, servicePeriod, and more. Required: id.
- **list_all_oracle_health_service_requests** — List service requests in Oracle Health. Requires one of patient, _id, or subject. code and category cannot be combined, and neither can _lastUpdated and authored.
Returns: resourceType, id, meta, text, basedOn, status, intent, and more. Required: none strictly; see the search rules above.
- **get_single_oracle_health_service_request_by_id** — Get a single service request in Oracle Health by its logical resource ID.
Returns: resourceType, id, meta, text, basedOn, status, intent, and more. Required: id.
- **list_all_oracle_health_schedules** — List Oracle Health schedules matching the supplied query parameters.
Returns: resourceType, id, meta, text, active, serviceType, actor. Required: _id.
- **get_single_oracle_health_schedule_by_id** — Get a single Oracle Health schedule by its logical resource ID.
Returns: resourceType, id, meta, text, active, serviceType, actor. Required: id.
- **get_single_oracle_health_nutrition_order_by_id** — Get a nutrition order by id in Oracle Health Millennium. Retrieves the individual nutrition order matching the supplied logical resource ID.
Returns: resourceType, id, meta, text, status, intent, patient, and more. Required: id.
- **list_all_oracle_health_nutrition_orders** — List nutrition orders in Oracle Health Millennium that meet the supplied query parameters. Requires patient or _id (one of the two). _lastUpdated must be prefixed with ge or le.
Returns: resourceType, id, meta, text, status, intent, patient, and more. Required: none strictly; see the search rules above.
- **create_a_oracle_health_group_export** — Start a FHIR Bulk Data export of the patients in one Group (Group/$export). The export runs in the background. Oracle answers 202 with an empty body and the status URL in the Content-Location response header; the last segment of that URL is the job id for bulk_export_jobs. Use _type, _typeFilter, _since, includeAssociatedData and _outputFormat to narrow it. Only one export per app and tenant can run at a time; the token needs the system read scope of every type in _type. The experimental _elements and patient parameters are not supported.
Required: group_id.
- **create_a_oracle_health_patient_export** — Start a FHIR Bulk Data export of patients you name (Patient/$export). The body is a FHIR Parameters resource: one patient parameter per patient (valueReference, up to 20,000), plus optional _type, _typeFilter, includeAssociatedData, _since and _outputFormat. Oracle answers 202 with an empty body; the Content-Location response header holds the status URL, whose last segment is the job id for bulk_export_jobs. One export per app and tenant can run at a time.
Required: resourceType, parameter.
- **get_single_oracle_health_bulk_export_job_by_id** — Get the status of a Bulk Data export job. Poll the job id (the last segment of the Content-Location URL from the kick-off) with exponential backoff: while the export runs Oracle answers 202 with an empty body, and once it is complete the body is the manifest of output files. The token must be valid and belong to the client that started the export; scopes are not checked.
Returns: transactionTime, request, requiresAccessToken, output, error. Required: id.
- **delete_a_oracle_health_bulk_export_job_by_id** — Delete a Bulk Data export job, whether it is still running or finished, together with its files. The token must be valid and belong to the client that started the export; scopes are not checked. Oracle answers 202 with an empty body.
Required: id.
- **get_single_oracle_health_bulk_export_file_by_id** — Download one output file of a finished Bulk Data export. The id is the last segment of the file URL in the status manifest. Oracle answers 307 with a Location header that is followed to download the file (the Authorization header is not sent on the redirect). A file is newline-delimited JSON with one resource type and is returned here as text; it is at most 50 MB gzip-compressed and expires after 30 days. Binary resources are not exported: read attachments with the Binary resource.
Required: id.
- **create_a_oracle_health_charge_item_credit** — Create a credit charge item in Oracle Health: posts to the $credit operation of an existing debit charge item to create an offsetting credit.
Oracle answers with an empty body. The id of the new record is the last segment of the Location response header, and the new version is in the ETag header. Required: charge_item_id, resourceType, parameter, versionId, subject, context, transactionId.

## How it works

1. **Link your customer's Oracle Health account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Oracle Health.** The Proxy API is a 1-to-1 mapping of the Oracle Health API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Ship an AI scribe that writes notes back to the chart** — Ambient documentation platforms can pull a clinician's schedule and patient context, then post finalized notes back to the EHR as DocumentReferences tied to the active Encounter — eliminating double documentation.
- **Power digital patient intake and check-in** — Intake and front-office SaaS can read open Slots, update patient demographics, create or update Coverage records, and persist intake forms as QuestionnaireResponses so staff don't manually re-key data.
- **Stream remote monitoring vitals into the EHR** — RPM and connected-device platforms can post blood pressure, glucose, and other readings as Observations in real time, letting clinicians see device data natively in the patient's chart.
- **Automate charge capture and RCM workflows** — Revenue cycle platforms can watch Encounters, pull associated Procedures and Conditions, and write ChargeItems, credits, and FinancialTransactions directly into the hospital ledger.
- **Run population health analytics on hospital cohorts** — Analytics and value-based care platforms can kick off Patient or Group bulk export jobs, poll for completion, and download NDJSON files of Conditions, Medications, and Observations across large populations.

## What you can build

- **Clinical note write-back** — Create DocumentReferences on an active Encounter to push AI-generated or structured clinical notes back into Oracle Health.
- **Appointment and slot management** — List bookable Slots, create Appointments, and update appointment status to power patient-facing scheduling and self-rescheduling flows.
- **Longitudinal patient chart sync** — Pull Conditions, Medications, AllergyIntolerances, Observations, and Procedures to build a complete pre-visit summary or ongoing clinical timeline.
- **Device and vitals ingestion pipeline** — Post Observations from connected devices or at-home kits so vitals and lab results appear directly in the patient record.
- **Charge capture and ledger posting** — Create ChargeItems, ChargeItem modifications, credits, and FinancialTransactions to automate billing events tied to completed Encounters.
- **Bulk cohort extraction** — Trigger Patient or Group $export jobs, monitor job status, and retrieve bulk export files for analytics, risk stratification, or data warehousing.

## FAQs

### What API standard does Oracle Health use?

Oracle Health exposes a FHIR R4 API with SMART on FHIR authentication. Truto's tools wrap these FHIR resources — Patient, Encounter, Observation, DocumentReference, ChargeItem, and more — so you don't have to handle FHIR-specific pagination, bundles, or JSON Patch mechanics directly.

### How does authentication work for end users?

Oracle Health uses SMART on FHIR OAuth 2.0, supporting both provider-facing (EHR launch) and system-to-system (backend services) flows. Truto handles the OAuth handshake, token refresh, and SMART configuration discovery so your users just connect their tenant.

### Can we write data back to the EHR, or is it read-only?

Truto supports both read and write operations. You can create Appointments, Observations, Conditions, AllergyIntolerances, DocumentReferences, DiagnosticReports, Encounters, MedicationRequests, Procedures, Coverages, ChargeItems, and FinancialTransactions, and update many of these resources in place.

### How are updates to resources handled?

Oracle Health's FHIR API typically requires JSON Patch for updates rather than full-resource PUTs. Truto's update tools (for example, update_a_oracle_health_patient_by_id or update_a_oracle_health_condition_by_id) accept patch-style payloads and handle the FHIR-specific formatting.

### Does Truto support bulk data export?

Yes. You can trigger Patient-level or Group-level bulk exports with create_a_oracle_health_patient_export and create_a_oracle_health_group_export, poll job status with get_single_oracle_health_bulk_export_job_by_id, and retrieve the resulting NDJSON files via get_single_oracle_health_bulk_export_file_by_id.

### How do we retrieve clinical documents like CCDs?

Clinical documents and CCDs can be fetched through the DocumentReference and Binary endpoints. Truto exposes list_all_oracle_health_document_references, list_all_oracle_health_ccd_binaries, and get_single_oracle_health_binary_by_id for retrieving raw document content.
