Recent Submissions
Payer Configurations
Manage your payer endpoint connections and OAuth2 credentials
CDex - Clinical Data Exchange
Da Vinci CDex Task-based data requests and attachment submissions
Provider Profile
Change Password
Two-Factor Authentication (2FA)
Scan this QR code with your authenticator app (Google Authenticator, Authy, etc.):
Or enter this key manually:
Team Members
| Name | Role | NPI | Joined | Actions | |
|---|---|---|---|---|---|
| Loading... | |||||
Organizations
| Organization | Members | Created | Actions |
|---|---|---|---|
| Loading... | |||
Organization Members
| Name | Role | NPI | Joined | Actions | |
|---|---|---|---|---|---|
| Loading... | |||||
Coverage Requirements Discovery Rules
When a provider orders a procedure matching one of these codes, FhirPlug will return a "Documentation Required" CDS card with a link to the DTR questionnaire.
Add New Rule
| Code | System | Display | Questionnaire | Auth Required | Actions |
|---|---|---|---|---|---|
| Loading... | |||||
CDS Hooks Endpoint
Configure your EHR to call these endpoints:
GET https://fhirplug.com/cds-servicesPOST https://fhirplug.com/cds-services/fhirplug-crdPOST https://fhirplug.com/cds-services/fhirplug-crd-selectAccount Requests
| Date | Name | Phone | Organization | Type | Status | Actions | |
|---|---|---|---|---|---|---|---|
| Loading... | |||||||
Demo Leads
| Date | Name | Company | Phone | Role | |
|---|---|---|---|---|---|
| Loading... | |||||
API Documentation
FhirPlug REST API reference - all endpoints require authentication unless noted
Base URL: https://fhirplug.com
Transform Endpoints Public
/transformTransform custom claims JSON into a FHIR R4 Prior Authorization Bundle (Da Vinci PAS).
{ "requestHeader": { "senderID": "...", "receiverID": "..." }, "memberInfo": { "firstName": "...", "lastName": "...", "dateOfBirth": "...", "memberID": "..." }, "providerInfo": { ... }, "authorizationDetails": { "procedureCodes": [...], "diagnosisCodes": [...] } }
{ "status": "success", "fhir_bundle": { ... }, "resource_count": 10 }
/transform-umTransform input data into a UM-compatible FHIR PAS request bundle.
/transform-resource/{resource_type}Find a specific resource type in a bundle, render it as PDF, and add as DocumentReference. Defaults to QuestionnaireResponse.
POST /transform-resource/QuestionnaireResponse
Content-Type: application/json
{ "resourceType": "Bundle", "type": "collection", "entry": [ ... ] }
{ "status": "transformed", "resource_type": "QuestionnaireResponse", "document_reference_id": "uuid", "bundle": { ... } }
/transform-and-sendTransform claims JSON and POST individual resources to the OpenEMR FHIR server.
PA Submission Public
/submit-paBuild a Payer PAS bundle and submit to a payer endpoint. Includes OAuth2 token exchange.
{ "payer_endpoint": "https://...", "payer_token_url": "https://...", "payer_client_id": "...", "payer_client_secret": "...", "patient": { ... }, "procedures": [...], "diagnoses": [...] }
/process-responseProcess a FHIR ClaimResponse bundle. Generates PA determination letter (PDF), optionally faxes, sends Direct message, notifies patient portal. Auto-creates CDex tasks from any embedded CommunicationRequest resources.
{ "bundle": { "resourceType": "Bundle", ... }, "fax_number": "optional", "direct_address": "[email protected]", "notify_patient": false }
{ "status": "success", "extracted_data": { "decision": "...", "pre_auth_ref": "...", ... }, "letter_pdf_base64": "...", "cdex_tasks_created": [...] }
/pa-callbackReceive a ClaimResponse from a payer, process it, generate letter, notify patient portal, and push to OpenEMR.
CDex - Clinical Data Exchange Mixed
/api/cdex/communication-request PublicReceive a standalone FHIR CommunicationRequest (or Bundle containing one) from a payer. Auto-creates a CDex task, auto-creates patient in OpenEMR if needed.
{ "resourceType": "CommunicationRequest", "status": "active", "priority": "urgent", "subject": { "display": "Patient Name" }, "requester": { "display": "Insurance Co" }, "payload": [{ "contentString": "Please provide operative notes" }], "occurrenceDateTime": "2026-05-20" }
{ "status": "success", "tasks_created": 1, "results": [{ "task_id": "...", "openemr": { "patient": { "id": "...", "created": true } } }] }
/api/cdex/tasks AuthList all CDex tasks for the authenticated user.
/api/cdex/tasks AuthCreate a new CDex task.
{ "direction": "outbound|inbound", "priority": "routine|urgent|stat", "patient_first": "...", "patient_last": "...", "patient_dob": "...", "member_id": "...", "requester_org": "...", "owner_org": "...", "description": "...", "due_date": "YYYY-MM-DD", "pa_submission_id": "optional" }
/api/cdex/tasks/{task_id} AuthGet full details of a CDex task including FHIR resource JSON.
/api/cdex/tasks/{task_id} AuthUpdate a task (status, description, priority). Setting task_status to "completed" auto-sets completed_at.
/api/cdex/tasks/{task_id} AuthDelete a task and its associated attachments.
/api/cdex/attachments AuthList attachments. Optional query param: ?task_id=xxx to filter by task.
/api/cdex/attachments AuthSubmit a CDex attachment (clinical document).
{ "task_id": "optional", "attachment_type": "solicited|unsolicited", "patient_first": "...", "patient_last": "...", "member_id": "...", "doc_type": "Clinical Note|Lab Result|...", "doc_type_code": "LOINC code", "description": "...", "content_type": "application/pdf", "content_b64": "base64 file data", "filename": "report.pdf" }
/api/cdex/submit-to-emr AuthPush a CDex task and/or attachment to OpenEMR. Searches for patient (creates if not found), writes DocumentReference and patient note.
{ "task_id": "optional", "attachment_id": "optional" }
Portal API Auth
/api/auth/registerRegister a new portal account. Returns JWT token.
{ "email": "...", "password": "...", "first_name": "...", "last_name": "...", "org_name": "...", "npi": "..." }
/api/auth/loginLogin and get JWT token. Token expires in 24 hours.
{ "email": "...", "password": "..." }
{ "token": "eyJ...", "user": { "id": "...", "email": "...", ... } }
/api/meGet current user profile.
/api/meUpdate profile (first_name, last_name, org_name, npi, phone).
/api/payer-configsList payer configurations.
/api/payer-configsCreate a payer configuration (name, endpoint, token URL, client credentials).
/api/pa-submissionsList PA submissions for the authenticated user.
/api/pa-submitSubmit a PA request through the portal. Builds Payer bundle, saves submission, and optionally sends to payer.
Messaging & Notifications Public
/send-directSend a Direct message via EMR Direct (phiMail) with optional PDF attachment.
{ "recipient": "[email protected]", "subject": "...", "body": "...", "attachment_base64": "optional", "attachment_name": "file.pdf" }
/demo-to-emrWrite demo patient and PA data to OpenEMR via FHIR API and PA webhook.
Authentication Notes
Endpoints marked Auth require a Bearer token in the Authorization header:
Authorization: Bearer eyJhbGciOiJIUzI1NiI...
Obtain a token via POST /api/auth/login. Tokens expire after 24 hours.
All endpoints also support GET-based fallback for environments where POST/PUT/DELETE are blocked (e.g. Zscaler). Query parameters replace the JSON body, and the URL path has /create, /update, or /delete appended.