In this guide we will go over the steps necessary for your app to streamline ED patient access. We will also go over what this workflow will enable your application to do and how you’ll need to configure your application to support it.
Prior to getting started, you’ll want to:
- Sign Up for a Redox developer account
- Configure your API key and Destination Endpoint to send and receive data (Quick Start: Connecting to Redox)
What is Streamlining ED Patient Access?
When a patient is having an urgent medical event, it can be helpful for them to be able to identify what local ED wait times look like to determine where they should go and to notify the ED that they are on their way. This means your app must be capable of three things:
- Receiving and persisting PatientAdmin data from a healthcare organization to track how many patients have already been checked into the ED.
- Querying through a PatientSearch message to determine whether a patient has been seen before and obtain details.
- Sending PatientAdmin data to a healthcare organization in order to create a new patient or update existing patients.
Receiving Check-In Data
To receive PatientAdmin data from a healthcare organization using Redox, you’ll need to have and endpoint for your application set up as a Destination. Your destination should be able to receive and handle JSON in our PatientAdmin data model. Below is an example of the sort of message you will be receiving. You test sending data to your Destination using DevTools in your Redox Dashboard.
{
"Meta": {
"DataModel": "PatientAdmin",
"EventType": "Arrival",
"EventDateTime": "2020-11-05T19:32:15.691Z",
"Test": true,
"Source": {
"ID": "7ce6f387-c33c-417d-8682-81e83628cbd9",
"Name": "Redox Dev Tools"
},
"Destinations": [
{
"ID": "af394f14-b34a-464f-8d24-895f370af4c9",
"Name": "Redox EMR"
}
],
"Message": {
"ID": 5565
},
"Transmission": {
"ID": 12414
},
"FacilityCode": null
},
"Patient": {
"Identifiers": [
{
"ID": "0000000001",
"IDType": "MR"
},
{
"ID": "e167267c-16c9-4fe3-96ae-9cff5703e90a",
"IDType": "EHRID"
},
{
"ID": "a1d4ee8aba494ca",
"IDType": "NIST"
}
],
"Demographics": {
"FirstName": "Timothy",
"MiddleName": "Paul",
"LastName": "Bixby",
"DOB": "2008-01-06",
"SSN": "101-01-0001",
"Sex": "Male",
"Race": "White",
"IsHispanic": null,
"MaritalStatus": "Married",
"IsDeceased": null,
"DeathDateTime": null,
"PhoneNumber": {
"Home": "+18088675301",
"Office": null,
"Mobile": null
},
"EmailAddresses": [],
"Language": "en",
"Citizenship": [],
"Address": {
"StreetAddress": "4762 Hickory Street",
"City": "Monroe",
"State": "WI",
"ZIP": "53566",
"County": "Green",
"Country": "US"
}
},
"Notes": [],
"Contacts": [
{
"FirstName": "Barbara",
"MiddleName": null,
"LastName": "Bixby",
"Address": {
"StreetAddress": "4762 Hickory Street",
"City": "Monroe",
"State": "WI",
"ZIP": "53566",
"County": "Green",
"Country": "US"
},
"PhoneNumber": {
"Home": "+18088675303",
"Office": "+17077543758",
"Mobile": "+19189368865"
},
"RelationToPatient": "Mother",
"EmailAddresses": [
"[email protected]"
],
"Roles": [
"Emergency Contact"
]
}
],
"Diagnoses": [
{
"Code": "R07.0",
"Codeset": "ICD-10",
"Name": "Pain in throat",
"Type": null,
"DocumentedDateTime": null
}
],
"Allergies": [
{
"Code": "7982",
"Codeset": "RxNorm",
"Name": "Penicillin",
"Type": {
"Code": null,
"Codeset": null,
"Name": null
},
"OnsetDateTime": null,
"Reaction": [
{
"Code": "28926001",
"Codeset": "SNOMED CT",
"Name": "Rash"
},
{
"Code": "247472004",
"Codeset": "SNOMED CT",
"Name": "Hives"
}
],
"Severity": {
"Code": null,
"Codeset": null,
"Name": null
},
"Status": null
}
],
"PCP": {
"NPI": "4356789876",
"ID": "4356789876",
"IDType": "NPI",
"FirstName": "Pat",
"LastName": "Granite",
"Credentials": [
"MD"
],
"Address": {
"StreetAddress": "123 Main St.",
"City": "Madison",
"State": "WI",
"ZIP": "53703",
"County": "Dane",
"Country": "USA"
},
"EmailAddresses": [],
"PhoneNumber": {
"Office": "+16085551234"
},
"Location": {
"Type": null,
"Facility": null,
"Department": null,
"Room": null
}
}
},
"Visit": {
"VisitNumber": "1234",
"AccountNumber": null,
"PatientClass": "Inpatient",
"VisitDateTime": "2020-11-05T19:32:16.621Z",
"Duration": 15,
"Reason": "Check up",
"Instructions": [],
"Balance": null,
"DiagnosisRelatedGroup": null,
"DiagnosisRelatedGroupType": null,
"AttendingProvider": {
"ID": "4356789876",
"IDType": "NPI",
"FirstName": "Pat",
"LastName": "Granite",
"Credentials": [
"MD"
],
"Address": {
"StreetAddress": "123 Main St.",
"City": "Madison",
"State": "WI",
"ZIP": "53703",
"County": "Dane",
"Country": "USA"
},
"EmailAddresses": [],
"PhoneNumber": {
"Office": "+16085551234"
},
"Location": {
"Type": null,
"Facility": null,
"Department": null,
"Room": null
}
},
"ConsultingProvider": {
"ID": null,
"IDType": null,
"FirstName": null,
"LastName": null,
"Credentials": [],
"Address": {
"StreetAddress": null,
"City": null,
"State": null,
"ZIP": null,
"County": null,
"Country": null
},
"EmailAddresses": [],
"PhoneNumber": {
"Office": null
},
"Location": {
"Type": null,
"Facility": null,
"Department": null,
"Room": null
}
},
"ReferringProvider": {
"ID": null,
"IDType": null,
"FirstName": null,
"LastName": null,
"Credentials": [],
"Address": {
"StreetAddress": null,
"City": null,
"State": null,
"ZIP": null,
"County": null,
"Country": null
},
"EmailAddresses": [],
"PhoneNumber": {
"Office": null
},
"Location": {
"Type": null,
"Facility": null,
"Department": null,
"Room": null
}
},
"AdmittingProvider": {
"ID": null,
"IDType": null,
"FirstName": null,
"LastName": null,
"Credentials": [],
"Address": {
"StreetAddress": null,
"City": null,
"State": null,
"ZIP": null,
"County": null,
"Country": null
},
"EmailAddresses": [],
"PhoneNumber": {
"Office": null
},
"Location": {
"Type": null,
"Facility": null,
"Department": null,
"Room": null
}
},
"Location": {
"Type": "Inpatient",
"Facility": "RES General Hospital",
"Department": "3N",
"Room": "136",
"Bed": "B",
"Address": {
"StreetAddress": "9509 Integration Ln",
"City": "Madison",
"State": "WI",
"ZIP": "53719",
"County": "Dane",
"Country": "US"
}
},
"Guarantor": {
"Number": "10001910",
"FirstName": "Kent",
"MiddleName": null,
"LastName": "Bixby",
"SSN": null,
"DOB": null,
"Sex": null,
"Spouse": {
"FirstName": "Barbara",
"LastName": "Bixby"
},
"Address": {
"StreetAddress": "4762 Hickory Street",
"City": "Monroe",
"State": "WI",
"ZIP": "53566",
"County": "Green",
"Country": "USA"
},
"PhoneNumber": {
"Home": null,
"Business": null,
"Mobile": null
},
"EmailAddresses": [],
"Type": null,
"RelationToPatient": "Father",
"Employer": {
"Name": "Accelerator Labs",
"Address": {
"StreetAddress": "1456 Old Sauk Road",
"City": "Madison",
"State": "WI",
"ZIP": "53719",
"County": "Dane",
"Country": "USA"
},
"PhoneNumber": "+18083451121"
}
},
"Insurances": [
{
"Plan": {
"ID": "31572",
"IDType": "Payor ID",
"Name": "HMO Deductable Plan",
"Type": null
},
"MemberNumber": null,
"Company": {
"ID": "60054",
"IDType": null,
"Name": "aetna (60054 0131)",
"Address": {
"StreetAddress": "PO Box 14080",
"City": "Lexington",
"State": "KY",
"ZIP": "40512-4079",
"County": "Fayette",
"Country": "US"
},
"PhoneNumber": "+18089541123"
},
"GroupNumber": "847025-024-0009",
"GroupName": "Accelerator Labs",
"EffectiveDate": "2015-01-01",
"ExpirationDate": "2020-12-31",
"PolicyNumber": "9140860055",
"AgreementType": null,
"CoverageType": null,
"Insured": {
"Identifiers": [],
"LastName": null,
"MiddleName": null,
"FirstName": null,
"SSN": null,
"Relationship": null,
"DOB": null,
"Sex": null,
"Address": {
"StreetAddress": null,
"City": null,
"State": null,
"ZIP": null,
"County": null,
"Country": null
}
}
}
]
}
}
With these data, your app can work on determining ED wait times for patients.
Querying for Existing Patient Information
To search for data at a healthcare organization, you’ll send a query through Redox using your Source. This is how you’ll be able to find whether that patient exists and information on them. The following is an example of a PatientSearch query that your app could send to the healthcare organization via the Redox API. You can also download a Postman collection from the Redox Dashboard.
curl \
-X POST https://api.redoxengine.com/endpoint \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {{access token from auth process}}" \
-d '{
"Meta": {
"DataModel": "PatientSearch",
"EventType": "Query",
"EventDateTime": "2020-11-05T19:32:15.691Z",
"Test": true,
"Destinations": [
{
"ID": "0f4bd1d1-451d-4351-8cfd-b767d1b488d6",
"Name": "Patient Search Endpoint"
}
],
"FacilityCode": null
},
"Patient": {
"Identifiers": [
{
"ID": "0000000001",
"IDType": "MR"
},
{
"ID": "e167267c-16c9-4fe3-96ae-9cff5703e90a",
"IDType": "EHRID"
},
{
"ID": "a1d4ee8aba494ca",
"IDType": "NIST"
}
],
"Demographics": {
"FirstName": "Timothy",
"MiddleName": "Paul",
"LastName": "Bixby",
"DOB": "2008-01-06",
"SSN": "101-01-0001",
"Sex": "Male",
"Race": "White",
"IsHispanic": null,
"MaritalStatus": "Married",
"IsDeceased": null,
"DeathDateTime": null,
"PhoneNumber": {
"Home": "+18088675301",
"Office": null,
"Mobile": null
},
"EmailAddresses": [],
"Language": "en",
"Citizenship": [],
"Address": {
"StreetAddress": "4762 Hickory Street",
"City": "Monroe",
"State": "WI",
"ZIP": "53566",
"County": "Green",
"Country": "US"
}
},
"Notes": []
}
}'
Below is a sample response for this query:
{
"Meta": {
"DataModel": "PatientSearch",
"EventType": "Response",
"EventDateTime": "2020-11-05T19:32:15.691Z",
"Test": true,
"Source": {
"ID": "7ce6f387-c33c-417d-8682-81e83628cbd9",
"Name": "Redox Dev Tools"
},
"Destinations": [
{
"ID": "0f4bd1d1-451d-4351-8cfd-b767d1b488d6",
"Name": "Patient Search Endpoint"
}
],
"Message": {
"ID": 5565
},
"Transmission": {
"ID": 12414
},
"FacilityCode": null,
"IsIncomplete": false
},
"Patient": {
"Identifiers": [
{
"ID": "0000000001",
"IDType": "MR"
},
{
"ID": "e167267c-16c9-4fe3-96ae-9cff5703e90a",
"IDType": "EHRID"
},
{
"ID": "a1d4ee8aba494ca",
"IDType": "NIST"
}
],
"Demographics": {
"FirstName": "Timothy",
"MiddleName": "Paul",
"LastName": "Bixby",
"DOB": "2008-01-06",
"SSN": "101-01-0001",
"Sex": "Male",
"Race": "White",
"IsHispanic": null,
"MaritalStatus": "Married",
"IsDeceased": null,
"DeathDateTime": null,
"PhoneNumber": {
"Home": "+18088675301",
"Office": null,
"Mobile": null
},
"EmailAddresses": [],
"Language": "en",
"Citizenship": [],
"Address": {
"StreetAddress": "4762 Hickory Street",
"City": "Monroe",
"State": "WI",
"ZIP": "53566",
"County": "Green",
"Country": "US"
}
},
"Notes": [],
"Contacts": [
{
"FirstName": "Barbara",
"MiddleName": null,
"LastName": "Bixby",
"Address": {
"StreetAddress": "4762 Hickory Street",
"City": "Monroe",
"State": "WI",
"ZIP": "53566",
"County": "Green",
"Country": "US"
},
"PhoneNumber": {
"Home": "+18088675303",
"Office": "+17077543758",
"Mobile": "+19189368865"
},
"RelationToPatient": "Mother",
"EmailAddresses": [
"[email protected]"
],
"Roles": [
"Emergency Contact"
]
}
],
"PCP": {
"NPI": "4356789876",
"ID": "4356789876",
"IDType": "NPI",
"FirstName": "Pat",
"LastName": "Granite",
"Credentials": [
"MD"
],
"Address": {
"StreetAddress": "123 Main St.",
"City": "Madison",
"State": "WI",
"ZIP": "53703",
"County": "Dane",
"Country": "USA"
},
"EmailAddresses": [],
"PhoneNumber": {
"Office": "+16085551234"
},
"Location": {
"Type": null,
"Facility": null,
"Department": null,
"Room": null
}
},
"Guarantor": {
"Number": "10001910",
"FirstName": "Kent",
"MiddleName": null,
"LastName": "Bixby",
"SSN": null,
"DOB": null,
"Sex": null,
"Spouse": {
"FirstName": "Barbara",
"LastName": "Bixby"
},
"Address": {
"StreetAddress": "4762 Hickory Street",
"City": "Monroe",
"State": "WI",
"ZIP": "53566",
"County": "Green",
"Country": "USA"
},
"PhoneNumber": {
"Home": null,
"Business": null,
"Mobile": null
},
"EmailAddresses": [],
"Type": null,
"RelationToPatient": "Father",
"Employer": {
"Name": "Accelerator Labs",
"Address": {
"StreetAddress": "1456 Old Sauk Road",
"City": "Madison",
"State": "WI",
"ZIP": "53719",
"County": "Dane",
"Country": "USA"
},
"PhoneNumber": "+18083451121"
}
},
"Insurances": [
{
"Plan": {
"ID": "31572",
"IDType": "Payor ID",
"Name": "HMO Deductable Plan",
"Type": null
},
"MemberNumber": null,
"Company": {
"ID": "60054",
"IDType": null,
"Name": "aetna (60054 0131)",
"Address": {
"StreetAddress": "PO Box 14080",
"City": "Lexington",
"State": "KY",
"ZIP": "40512-4079",
"County": "Fayette",
"Country": "US"
},
"PhoneNumber": "+18089541123"
},
"GroupNumber": "847025-024-0009",
"GroupName": "Accelerator Labs",
"EffectiveDate": "2015-01-01",
"ExpirationDate": "2020-12-31",
"PolicyNumber": "9140860055",
"AgreementType": null,
"CoverageType": null,
"Insured": {
"Identifiers": [],
"LastName": null,
"MiddleName": null,
"FirstName": null,
"SSN": null,
"Relationship": null,
"DOB": null,
"Sex": null,
"Address": {
"StreetAddress": null,
"City": null,
"State": null,
"ZIP": null,
"County": null,
"Country": null
}
}
}
]
},
"PotentialMatches": []
}
Sending New Patients for ED Access
To send data to a healthcare organization, you’ll need to set up your Redox Source. This will be the gateway through which you push out the new patient creation data. The following is an example of a PatientAdmin message that your app could send to the healthcare organization via the Redox API. You can also download a Postman collection from the Redox Dashboard.
curl \
-X POST https://api.redoxengine.com/endpoint \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {{access token from auth process}}" \
-d '{
"Meta": {
"DataModel": "PatientAdmin",
"EventType": "NewPatient",
"EventDateTime": "2020-11-05T19:32:15.691Z",
"Test": true,
"Source": {
"ID": "7ce6f387-c33c-417d-8682-81e83628cbd9",
"Name": "Redox Dev Tools"
},
"Destinations": [
{
"ID": "af394f14-b34a-464f-8d24-895f370af4c9",
"Name": "Redox EMR"
}
],
"Message": {
"ID": 5565
},
"Transmission": {
"ID": 12414
},
"FacilityCode": null
},
"Patient": {
"Identifiers": [
{
"ID": "0000000001",
"IDType": "MR"
},
{
"ID": "e167267c-16c9-4fe3-96ae-9cff5703e90a",
"IDType": "EHRID"
},
{
"ID": "a1d4ee8aba494ca",
"IDType": "NIST"
}
],
"Demographics": {
"FirstName": "Timothy",
"MiddleName": "Paul",
"LastName": "Bixby",
"DOB": "2008-01-06",
"SSN": "101-01-0001",
"Sex": "Male",
"Race": "White",
"IsHispanic": null,
"MaritalStatus": "Married",
"IsDeceased": null,
"DeathDateTime": null,
"PhoneNumber": {
"Home": "+18088675301",
"Office": null,
"Mobile": null
},
"EmailAddresses": [],
"Language": "en",
"Citizenship": [],
"Address": {
"StreetAddress": "4762 Hickory Street",
"City": "Monroe",
"State": "WI",
"ZIP": "53566",
"County": "Green",
"Country": "US"
}
},
"Notes": [],
"Contacts": [
{
"FirstName": "Barbara",
"MiddleName": null,
"LastName": "Bixby",
"Address": {
"StreetAddress": "4762 Hickory Street",
"City": "Monroe",
"State": "WI",
"ZIP": "53566",
"County": "Green",
"Country": "US"
},
"PhoneNumber": {
"Home": "+18088675303",
"Office": "+17077543758",
"Mobile": "+19189368865"
},
"RelationToPatient": "Mother",
"EmailAddresses": [
"[email protected]"
],
"Roles": [
"Emergency Contact"
]
}
],
"Allergies": [
{
"Code": "7982",
"Codeset": "RxNorm",
"Name": "Penicillin",
"Type": {
"Code": null,
"Codeset": null,
"Name": null
},
"OnsetDateTime": null,
"Reaction": [
{
"Code": "28926001",
"Codeset": "SNOMED CT",
"Name": "Rash"
},
{
"Code": "247472004",
"Codeset": "SNOMED CT",
"Name": "Hives"
}
],
"Severity": {
"Code": null,
"Codeset": null,
"Name": null
},
"Status": null
}
],
"PCP": {
"NPI": "4356789876",
"ID": "4356789876",
"IDType": "NPI",
"FirstName": "Pat",
"LastName": "Granite",
"Credentials": [
"MD"
],
"Address": {
"StreetAddress": "123 Main St.",
"City": "Madison",
"State": "WI",
"ZIP": "53703",
"County": "Dane",
"Country": "USA"
},
"EmailAddresses": [],
"PhoneNumber": {
"Office": "+16085551234"
},
"Location": {
"Type": null,
"Facility": null,
"Department": null,
"Room": null
}
},
"Guarantor": {
"Number": "10001910",
"FirstName": "Kent",
"MiddleName": null,
"LastName": "Bixby",
"SSN": null,
"DOB": null,
"Sex": null,
"Spouse": {
"FirstName": "Barbara",
"LastName": "Bixby"
},
"Address": {
"StreetAddress": "4762 Hickory Street",
"City": "Monroe",
"State": "WI",
"ZIP": "53566",
"County": "Green",
"Country": "USA"
},
"PhoneNumber": {
"Home": null,
"Business": null,
"Mobile": null
},
"EmailAddresses": [],
"Type": null,
"RelationToPatient": "Father",
"Employer": {
"Name": "Accelerator Labs",
"Address": {
"StreetAddress": "1456 Old Sauk Road",
"City": "Madison",
"State": "WI",
"ZIP": "53719",
"County": "Dane",
"Country": "USA"
},
"PhoneNumber": "+18083451121"
}
},
"Insurances": [
{
"Plan": {
"ID": "31572",
"IDType": "Payor ID",
"Name": "HMO Deductable Plan",
"Type": null
},
"MemberNumber": null,
"Company": {
"ID": "60054",
"IDType": null,
"Name": "aetna (60054 0131)",
"Address": {
"StreetAddress": "PO Box 14080",
"City": "Lexington",
"State": "KY",
"ZIP": "40512-4079",
"County": "Fayette",
"Country": "US"
},
"PhoneNumber": "+18089541123"
},
"GroupNumber": "847025-024-0009",
"GroupName": "Accelerator Labs",
"EffectiveDate": "2015-01-01",
"ExpirationDate": "2020-12-31",
"PolicyNumber": "9140860055",
"AgreementType": null,
"CoverageType": null,
"Insured": {
"Identifiers": [],
"LastName": null,
"MiddleName": null,
"FirstName": null,
"SSN": null,
"Relationship": null,
"DOB": null,
"Sex": null,
"Address": {
"StreetAddress": null,
"City": null,
"State": null,
"ZIP": null,
"County": null,
"Country": null
}
}
}
]
}
}'
Wrapping Up
In this guide, we’ve walked through example messages for each step required to [accomplish job-to-be-done].
Sign in with your Redox account to access our custom Postman collection, DevTools, and other helpful options to test this workflow out for yourself!