Overview
The goal is to automate the exchange of patient demographic data, practitioner information, and site location details, while maintaining synchronization accuracy between both platforms.
When to Use / Why It Matters
Integrating Dazos CRM with eClinicalWorks allows healthcare organizations to:
Streamline data flow between intake and clinical systems.
Reduce redundant data entry and manual processing.
Ensure real-time patient demographic updates.
Enable secure, compliant synchronization between CRM and EMR.
This integration is essential for maintaining data consistency, improving coordination between intake and clinical teams, and reducing administrative workload.
Integration Summary
Integration Direction | Description | Status |
CRM → EMR (Push) | Sends patient demographic information from Dazos CRM to ECW. | ✅ Active |
EMR → CRM (Pull / Cron) | Retrieves patient, insurance, and encounter information from ECW into Dazos CRM. | ✅ Active (Partial) |
Manual Pull (On-Demand) | Admins can manually trigger synchronization. | ✅ Active |
Note: Currently, bidirectional synchronization is available for patient demographics, while insurance and encounter data are limited to EMR → CRM direction only.
Integration Data Flow: eClinicalWorks
Data Type | CRM → EMR | EMR → CRM | Status / Comments |
Patient Demographic | ✅ Supported | ✅ Supported | Full bidirectional flow |
Encounter | ❌ Not Supported | ✅ Supported | API limitation for push |
Pre-Assessment | ❌ Not Supported | ❌ Not Supported | API unavailable |
Insurance | ❌ Not Supported | ✅ Supported | Read-only from EMR |
Not Implemented Features
Not Implemented Feature | Reason / Blocker |
Sync Encounter Data (CRM → EMR upon creation/update) | API access is not available for creating or updating encounter records. |
Pre-Assessment Data | No API access for creation or update operations. |
Insurance Data (CRM → EMR upon creation/update) | No API access for creation or update; currently read-only from EMR to CRM. |
Once eClinicalWorks provides the necessary API endpoints, these features will be prioritized for development in future integration updates.
Detailed Summary: ECW Integration in CRM Workflow
User Story
As a CRM Administrator, I want to integrate ECW with Dazos CRM so that patient data automatically synchronizes between systems. This integration will:
Automatically create and update Patient Demographics in both systems.
Trigger Verification of Benefits (VOB) or clinical workflows after updates.
Maintain data consistency without duplicate data entry.
How to Configure the Integration
Step 1: Access EMR Settings
Log into Dazos CRM as an Administrator.
Navigate to Settings → CRM Settings → Integration → EMR Settings.
From the EMR list, select eClinicalWorks (ECW).
Click Add Account to begin setup.
Step 2: Obtain and Enter ECW Credentials
To connect Dazos CRM to eClinicalWorks, you must have:
Client ID: Provided by ECW to uniquely identify your integration instance.
Client Secret / Token: Generated by ECW for authentication.
Base URL / API Endpoint: The ECW API endpoint (staging or production).
JWKS URL: Used for JWT token validation and must be whitelisted by ECW.
Once you have these credentials:
Enter the Client ID and Client Secret in the designated CRM fields.
Add the API Base URL (e.g.,
https://staging-fhir.ecwcloud.com/fhir/r4/FFBJCD).Save the configuration.
Click Test Connection — a success message should confirm connectivity.
Tip: If the test fails, verify that the JWKS URL is whitelisted on the ECW side and credentials are accurate.
Step 3: Configure Data Push (CRM → EMR)
Purpose:
To automatically send new or updated patient demographic information from Dazos CRM into eClinicalWorks.
Actions:
Sync Practitioner Data - Ensure all practitioner lists are accurately transferred from the eClinicalWorks (ECW) EMR to the CRM system
Sync Location Data - Synchronize all Location details from the ECW EMR to the CRM to ensure accurate data.
Verify that each CRM field maps to the corresponding ECW field.
Example:
CRM Field:
First Name→ ECW Field:givenCRM Field:
DOB→ ECW Field:birthDateCRM Field:
Phone→ ECW Field:telecom.value
Click Save Configuration.
Practitioner and location data, once synchronized, will be available for selection in a dropdown menu.
Step 4: Configure Data Pull (EMR → CRM) Verification purposes only.
Purpose:
To retrieve up-to-date patient, practitioner, and insurance data from ECW into Dazos CRM.
Actions:
Enable the “Pull from EMR” option in the same EMR Settings page.
Select the following modules for synchronization:
Patient Demographics
Practitioner Data
Locations
Insurance (Read-Only)
Set up cron frequency (e.g., every 2 hours) for automated pulls.
Optionally, perform a manual sync by clicking “Pull Now” to test connectivity.
Please check and validate with a technical services representative before moving forward with the previous.
Mapping Notes:
Each incoming record will be linked by Unique Patient Identifier (ECW ID).
Practitioner and location data will populate related dropdowns in CRM.
Insurance data will appear in read-only mode under the patient profile.
Step 5: Map Treatment Programs and Locations
To ensure correct data association:
Navigate to Integration → EMR Settings → Treatment Programs.
Click Add and map each ECW treatment program to its CRM equivalent.
Repeat for Locations, ensuring that CRM location names match ECW’s.
Note: Incorrect or missing mappings may cause sync failures or data mismatches.
Step 6: Verify the Integration
How to Verify:
Create or update a patient record in Dazos CRM.
Observe whether the record automatically appears in ECW.
In CRM, check the Integration Logs when pushing a patient to ECW:
Successful pushes will display a “200 OK” response.
Failed pushes will list error details for troubleshooting.
Run a manual data pull to confirm ECW → CRM functionality.
Validate that demographic data, practitioner, and location details appear correctly in CRM.
Step 7: Review Example API Requests
A. CRM → ECW (POST – Create Patient)
Endpoint:
https://staging-fhir.ecwcloud.com/fhir/r4/FFBJCD
Payload Example:
"resourceType": "Bundle",
"type": "transaction",
"entry": [
{
"resource": {
"resourceType": "Patient",
"meta": {
"profile": [
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
]
},
"active": true,
"name": [
{
"text": "DazEcccw",
"family": "LaliTest",
"given": [
"DazEcccw"
]
}
],
"maritalStatus": {
"coding": [
{
"system":
"http://terminology.hl7.org/CodeSystem/v3-MaritalStatus",
"code": "M",
"display": "Married"
}
],
"text": "Married"
},
"telecom": [
{
"system": "phone",
"value": "9135552003",
"use": "home"
},
{
"system": "email",
"value": "[email protected]",
"use": "home"
}
],
"address": [
{
"use": "home",
"line": [
"2222 HOME STREET",
"Gordon Street"
],
"city": "LAWRENCE",
"state": "open",
"postalCode": "KS"
}
],
"deceasedBoolean": false,
"identifier": [
{
"use": "usual",
"system":
"urn:oid:2.16.840.1.113883.4.391.326070",
"value": "Lt2IFR5Ah76n4d8TFP5g"
}
],
"communication": [
{
"language": {
"coding": [
{
"system": "urn:ietf:bcp:47",
"code": "ENG",
"display": "English"
}
],
"text": "English"
},
"preferred": true
}
],
"gender": "male",
"birthDate": "2001-05-27",
"extension": [
{
"url":
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
"extension": [
{
"url": "detailed",
"valueCoding": {
"system":
"urn:oid:2.16.840.1.113883.6.238",
"code": "2184-0",
"display": "Dominican"
}
},
{
"url": "ombCategory",
"valueCoding": {
"system":
"urn:oid:2.16.840.1.113883.6.238",
"code": "2135-2",
"display": "Hispanic or Latino"
}
},
{
"url": "text",
"valueString": "Hispanic or Latino"
}
]
},
{
"url":
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-race",
"extension": [
{
"url": "ombCategory",
"valueCoding": {
"system":
"http://terminology.hl7.org/CodeSystem/v3-NullFlavor",
"code": "ASKU",
"display": "Declined to Specify"
}
},
{
"url": "text",
"valueString": "Declined to Specify"
}
]
},
{
"url":
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex",
"valueCode": "M"
},
{
"url":
"http://eclinicalworks.com/supportingInfo/defaultFacility",
"valueReference": {
"reference":
"Location/Lt2IFR5Ah76n4d8TFP5gBCYrEVzcfmSY9rj1Q7MpBZg"
}
}
]
},
"request": {
"method": "POST",
"url": "Patient"
}
}
]
}B. ECW → CRM (GET – Retrieve Patient)
Endpoint:
https://staging-fhir.ecwcloud.com/fhir/r4/FFBJCD/Location/
This request retrieves stored patient demographic data in FHIR R4 format, including name, contact, gender, and address.
"resourceType": "Bundle",
"type": "transaction",
"entry": [
{
"resource": {
"resourceType": "Patient",
"meta": {
"profile": [
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
]
},
"active": true,
"name": [
{
"text": "DazEcccw",
"family": "LaliTest",
"given": [
"DazEcccw"
]
}
],
"maritalStatus": {
"coding": [
{
"system":
"http://terminology.hl7.org/CodeSystem/v3-MaritalStatus",
"code": "M",
"display": "Married"
}
],
"text": "Married"
},
"telecom": [
{
"system": "phone",
"value": "9135552003",
"use": "home"
},
{
"system": "email",
"value": "[email protected]",
"use": "home"
}
],
"address": [
{
"use": "home",
"line": [
"2222 HOME STREET",
"Gordon Street"
],
"city": "LAWRENCE",
"state": "open",
"postalCode": "KS"
}
],
"deceasedBoolean": false,
"identifier": [
{
"use": "usual",
"system":
"urn:oid:2.16.840.1.113883.4.391.326070",
"value": "Lt2IFR5Ah76n4d8TFP5g"
}
],
"communication": [
{
"language": {
"coding": [
{
"system": "urn:ietf:bcp:47",
"code": "ENG",
"display": "English"
}
],
"text": "English"
},
"preferred": true
}
],
"gender": "male",
"birthDate": "2001-05-27",
"extension": [
{
"url":
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
"extension": [
{
"url": "detailed",
"valueCoding": {
"system":
"urn:oid:2.16.840.1.113883.6.238",
"code": "2184-0",
"display": "Dominican"
}
},
{
"url": "ombCategory",
"valueCoding": {
"system":
"urn:oid:2.16.840.1.113883.6.238",
"code": "2135-2",
"display": "Hispanic or Latino"
}
},
{
"url": "text",
"valueString": "Hispanic or Latino"
}
]
},
{
"url":
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-race",
"extension": [
{
"url": "ombCategory",
"valueCoding": {
"system":
"http://terminology.hl7.org/CodeSystem/v3-NullFlavor",
"code": "ASKU",
"display": "Declined to Specify"
}
},
{
"url": "text",
"valueString": "Declined to Specify"
}
]
},
{
"url":
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex",
"valueCode": "M"
},
{
"url":
"http://eclinicalworks.com/supportingInfo/defaultFacility",
"valueReference": {
"reference":
"Location/Lt2IFR5Ah76n4d8TFP5gBCYrEVzcfmSY9rj1Q7MpBZg"
}
}
]
},
"request": {
"method": "POST",
"url": "Patient"
}
}
]
}Expected Results
After successful configuration:
Demographic data flows bidirectionally.
Encounters and insurance sync automatically from ECW into CRM.
Practitioner and location lists stay updated in CRM.
Admins can perform manual syncs or view automated sync logs.
Integration logs show success confirmations or detailed error feedback.
Known Limitations
Feature | Direction | Current Status / Reason |
Encounters | CRM → EMR | Not supported – API unavailable |
Insurance | CRM → EMR | Read-only from EMR only |
Pre-Assessment | Both | No API access available |
Only Patient Demographics currently support bidirectional flow.
Other data types remain limited due to ECW API restrictions.
Troubleshooting Tips
Issue | Possible Cause | Recommended Action |
API connection fails | Incorrect Client ID or JWKS not whitelisted | Confirm credentials with ECW |
Data not syncing | Field mappings incomplete | Review mapping configuration |
Partial updates | Duplicate or outdated patient IDs | Check for duplicate records |
Insurance data missing | Read-only limitation | Confirm data source; manual verification required |
Best Practices
Regularly review Integration Logs to ensure all pushes/pulls are successful.
Periodically validate field mappings after CRM or ECW updates.
Ensure only authorized admins have access to EMR credentials.
Maintain a test patient in ECW to validate integration after updates.