Skip to content

Healthcare · Beta

Oracle Health
API integration

Ship Healthcare features without building the integration. Full Oracle Health API access via Proxy and 120+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Built for specific customer use cases. Issues are resolved quickly.

Talk to us
Oracle Health

Use Cases

Why integrate with Oracle Health

Common scenarios for SaaS companies building Oracle Health integrations for their customers.

01

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.

02

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.

03

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.

04

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.

05

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

Ship these features with Truto + Oracle Health

Concrete product features your team can ship faster by leveraging Truto’s Oracle Health integration instead of building from scratch.

01

Clinical note write-back

Create DocumentReferences on an active Encounter to push AI-generated or structured clinical notes back into Oracle Health.

02

Appointment and slot management

List bookable Slots, create Appointments, and update appointment status to power patient-facing scheduling and self-rescheduling flows.

03

Longitudinal patient chart sync

Pull Conditions, Medications, AllergyIntolerances, Observations, and Procedures to build a complete pre-visit summary or ongoing clinical timeline.

04

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.

05

Charge capture and ledger posting

Create ChargeItems, ChargeItem modifications, credits, and FinancialTransactions to automate billing events tied to completed Encounters.

06

Bulk cohort extraction

Trigger Patient or Group $export jobs, monitor job status, and retrieve bulk export files for analytics, risk stratification, or data warehousing.

SuperAI

Oracle Health AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

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.

Why Truto

Why use Truto’s MCP server for Oracle Health

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 850+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Oracle Health in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Oracle Health account

Use Truto’s frontend SDK to connect your customer’s Oracle Health account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Oracle Health

Truto’s Proxy API is a 1-to-1 mapping of the Oracle Health API. You call us, we call Oracle Health, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Oracle Health’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Oracle Health on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

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.

Oracle Health

Get Oracle Health integrated into your app

Our team understands what it takes to make a Oracle Health integration successful. A short, crisp 30 minute call with folks who understand the problem.