Signal Alerts

Receive alerts when your patient has a new clinical encounter

Background

When Particle identifies a critical new clinical event for a patient that a customer has enrolled in Signal , we will send the customer an alert via webhook notification. The alert will include key details on the event (e.g., which facility the event occurred at) and information to pull the additional, critical clinical context (e.g., the fileID to retrieve the relevant discharge summary file).

Customers will integrate Signal Alerts into their existing clinical workflows and queues to inform when to take action to prevent costly complications for a patient, and what actions to take.

Receive Signal Alerts

You will need to set up your callback endpoint(s) in order to receive Signal Notifications for the patients whom you are monitoring. Refer to the Event Notifications documentation on how to set up your endpoint(s).

There are two general categories of alerts that Particle will send to a customer for any patients enrolled in Signal, which will typically trigger different customer workflows:

1. Event Detected

Alerts that fall under this category will notify a customer when any new activity is occurring for their patients on the networks - for example, an ADT alert indicating that a patient has been admitted, discharged, or transferred to a inpatient facility. Timeliness is a critical aspect of these alerts. While the alerts will not necessarily include the full clinical context on the patient encounter, they will inform the customer as soon as possible that new activity has occurred. This gives customers the option to outreach the patient and/or the facility to capture any additional information. "Data Available" alerts include ADTs and Network Alerts.

ADTs

These alerts will be triggered when Particle receives an ADT for a patient the customer is monitoring from one of our ADT partners.

Note a customer must be contracted with the ADT partner in order to receive ADT notifications. Contact your Particle representative for more information on how to set up ADTs.

{
  "specversion": "1.0,
  "type": "com.particlehealth.api.v2.healthix.adt",
  "subject": "ADT-A08",
  "source": "api/notifications",
  "id": "d2c1fd46-8d3e-484b-9d0f-f4651c6d45e2"
  "time": "2024-07-22T10:10:10Z"
  "datacontenttype": application/json"
	"data": {
    "message_id": "4eca404f-51fb-4d9a-a723-459fad24c09c",
    "particle_patient_id": "test-particle-patient-id"
    "event_type": "AO1",
  }
}
{
  "specversion": "1.0,
  "type": "com.particlehealth.api.v2.bamboo.adt",
  "subject": "ADT-A04",
  "source": "api/notifications",
  "id": "d2c1fd46-8d3e-484b-9d0f-f4651c6d45e2"
  "time": "2024-07-22T10:10:10Z"
  "datacontenttype": application/json"
	"data": {
    "message_id": "4eca404f-51fb-4d9a-a723-459fad24c09c",
    "particle_patient_id": "test-particle-patient-id"
  }
}

The subject in the ADT notification will indicate what type of ADT that has been received for the patient (e.g., an ADT-A03 for a discharge). See FAQs for more details.

Customers can choose to retrieve the full, raw ADT message in HL7v2 format by placing a GET request to our HL7v2 API with the message_id provided in the webhook notification. Note that the HL7 message will be embedded inside a JSON structure, which is encoded in Base64.

PATH/hl7v2/{message_id}
METHODGET

Sample Response

Here is a sample base64 encoded HL7v2 API response:

eyJobDdNZXNzYWdlIjoiTVNIfF5+XFwmfFBhcnRpY2xlIEhlYWx0aF9BRFR8MTEyMl5TdC4gTWFyeSBIb3NwaXRhbF5IT1N8UkVDRUlWSU5HX0FQUHwxMjM0XlNhbXBsZSBIZWFsdGh8MjAxOTAzMDYwODE5NDl8fEFEVF5BMDh8NzUyZjNlYWItMmQxMS00MTFhLWI1OTctMmIwODMyNWQxZjIwfFB8Mi41XHJFVk58QTA4fDIwMTkwMzA1MjE0MzAwfHxFRElUX0VOQ09VTlRFUlxyUElEfDF8MzU3NzQ0MTBeXl5QUF5QUHxhNTc4MmEwNi05NWI1LTQ3YjMtYmUxOS0xMGVhNjA2OTNmM2NeXl5zYW1ec2FtfHxXZWFzbGV5XkZyZWRefHwxOTc4MDQwMXxNfHx8MTE0MDAgTGFuc2Rvd25lIFN0Xl5Cb3N0b25eTUFeMDIyMTV8fHx8fHx8NDM5NjgyMzg5MDY0fFxyUEQxfHx8fDEwNjM0ODQwNTNeSGFxdWVeTW9oYW1tZWReXl5eXHJQVjF8MXxFfHx8fHwxNjAxMjM0NTY3XlJ1YmV1c15IYWdyaWReXl5efHx8fHx8fEhvbWV8fHx8fDQ1NDEyMzQ1Njc4OXx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHwyMDE5MDMwNTIxNDMwMHx8fHx8fDMxMzc3NTczXHJJTjF8MXx8fFNlbGYgUGF5ICBKfHx8fHx8fHx8fHxTZWxmIFBheXx8fHx8fHx8fHx8fHx8fHx8fHx8fFVOS05PV05cclpNRHw1MTYwM2M2NS04MzliLTQ4YTAtOWU5Zi1iM2I3ZmEwYzEzZDBcclpQUHxQUk9HUkFNU1xyWlBQfC0tLS0tLS0tXHJaUFB8MS4gU2FtcGxlIEhlYWx0aFxyWlBQfDIuIEFDTUUgSGVhbHRoXHJaUFB8XHJaUFB8XHJaUFB8UFJBQ1RJQ0VTXHJaUFB8LS0tLS0tLS1cclpQUHwxLiBQcmFjdGljZSBVbmtub3duXHJaUFB8XHJaUFB8XHJaUFB8Q0FSRSBDT09SRElOQVRPUlNcclpQUHwtLS0tLS0tLS0tLS0tLS0tLVxyWlBQfE5hbWUuICAgOiBUcmFuc2l0aW9ucyBvZiBDYXJlIFRlYW1cclpQUHxQaG9uZS4gIDogODU1LTY3Ny04Nzg3XHJaUFB8RW1haWwuICA6IFxyWlBQfEZheC4gICAgOiA4NjYtNTY3LTEwMTBcclpQUHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJaUFB8TmFtZS4gICA6IFV0aWxpemF0aW9uIE1hbmFnZW1lbnRcclpQUHxQaG9uZS4gIDogODc3LTMzMy02MTYxXHJaUFB8RW1haWwuICA6IFxyWlBQfEZheC4gICAgOiBcclpQUHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJaUFB8XHJaUFB8XHJaUFB8QURNSVQgQ0FSRSBJTlNUUlVDVElPTlNcclpQUHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyWlBQfDEuIEFsbCBvdGhlciBoZWFsdGggcGxhbnMgY2FsbCAoMjEyKSA1NTUtODY5NyBhbmQgYXNrIHRvIHNwZWFrIHdpdGggdGhlIEV4dGVuc2l2aXN0IG9uIGNhbGwuXHJaUFB8Mi4gRmlkZWxpcyBNTVAgY2FsbCAoODc3KSAzMzMtNjE2MSBmb3IgYW4gYXV0aG9yaXphdGlvbi5cclpQUHxcclpQUHxcclpQUHxESVNDSEFSR0UgQ0FSRSBJTlNUUlVDVElPTlNcclpQUHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclpQUHwxLiBDYWxsICg4NTUpIDI1NS04MjgyIHRvIHJlYWNoIG9yIGdldCBhIG1lc3NhZ2UgdG8gYSBUcmFuc2l0aW9uIENvb3JkaW5hdG9yLlxyWlBQfFxyWlBQfFxyWlBQfE9USEVSIENBUkUgUFJPVklERVJTXHJaUFB8LS0tLS0tLS0tLS0tLS0tLS0tLS1cclpQUHxOYW1lLiAgIDogTHVuYSBMb3ZlZ29vZCBcclpQUHxQaG9uZS4gIDogXHJaUFB8RW1haWwuICA6IFxyWlBQfEZheC4gICAgOiBcclpQUHxDb2hvcnQgTmFtZSAgICA6IFByYWN0aWNlIFVua25vd25cclpQUHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJaUFB8XHJaUFB8XHIifQ==

Which corresponds to the following decoded JSON HL7v2 message:

{"hl7Message":"MSH|^~\\&|Particle Health_ADT|1122^St. Mary Hospital^HOS|RECEIVING_APP|1234^Sample Health|20190306081949||ADT^A08|752f3eab-2d11-411a-b597-2b08325d1f20|P|2.5\rEVN|A08|20190305214300||EDIT_ENCOUNTER\rPID|1|35774410^^^PP^PP|a5782a06-95b5-47b3-be19-10ea60693f3c^^^sam^sam||Weasley^Fred^||19780401|M|||11400 Lansdowne St^^Boston^MA^02215|||||||439682389064|\rPD1||||1063484053^Haque^Mohammed^^^^\rPV1|1|E|||||1601234567^Rubeus^Hagrid^^^^|||||||Home|||||454123456789|||||||||||||||||||||||||20190305214300||||||31377573\rIN1|1|||Self Pay  J|||||||||||Self Pay|||||||||||||||||||||UNKNOWN\rZMD|51603c65-839b-48a0-9e9f-b3b7fa0c13d0\rZPP|PROGRAMS\rZPP|--------\rZPP|1. Sample Health\rZPP|2. ACME Health\rZPP|\rZPP|\rZPP|PRACTICES\rZPP|--------\rZPP|1. Practice Unknown\rZPP|\rZPP|\rZPP|CARE COORDINATORS\rZPP|-----------------\rZPP|Name.   : Transitions of Care Team\rZPP|Phone.  : 855-677-8787\rZPP|Email.  : \rZPP|Fax.    : 866-567-1010\rZPP|-------------------------------------\rZPP|Name.   : Utilization Management\rZPP|Phone.  : 877-333-6161\rZPP|Email.  : \rZPP|Fax.    : \rZPP|-------------------------------------\rZPP|\rZPP|\rZPP|ADMIT CARE INSTRUCTIONS\rZPP|-----------------------\rZPP|1. All other health plans call (212) 555-8697 and ask to speak with the Extensivist on call.\rZPP|2. Fidelis MMP call (877) 333-6161 for an authorization.\rZPP|\rZPP|\rZPP|DISCHARGE CARE INSTRUCTIONS\rZPP|---------------------------\rZPP|1. Call (855) 255-8282 to reach or get a message to a Transition Coordinator.\rZPP|\rZPP|\rZPP|OTHER CARE PROVIDERS\rZPP|--------------------\rZPP|Name.   : Luna Lovegood \rZPP|Phone.  : \rZPP|Email.  : \rZPP|Fax.    : \rZPP|Cohort Name    : Practice Unknown\rZPP|-------------------------------------\rZPP|\rZPP|\r"}

Network Alerts

These alerts will be triggered when Particle detects activity for one of your patients at another organization connected to Carequality or eHealthExchange.

Network Alert Payloads

{
  "specversion": "1.0,
  "type": "com.particlehealth.api.v2.networkalert",
  "subject": "Network Alert",
  "source": "api/notifications",
  "id": "0fc6f787-0f28-4dc2-a224-7c23e19c0e60"
  "time": "2024-07-22T10:10:10Z"
  "datacontenttype": application/json"
	"data": {
    "network_alert_id": "4eca404f-51fb-4d9a-a723-459fad24c09c",
    "particle_patient_id": "test-particle-patient-id",
    "network_organizations": [
	    {
		    "name": "Rochester Hospital",
		    "oid": "2.16.840.1.113883.3.8391.5.710576",
	    }
    ],
    "alert_time": "2024-07-22T10:10:10Z",
  }
}

All relevant information for the Network Alert will be included in the webhook notification payload; there is no additional information to retrieve.

2. Data Available

Alerts that fall under this category will notify a customer when critical new clinical data is available for to review for their patients. These alerts provide the critical clinical context on any patient encounters that have occurred, to inform the customer of what type(s) of patient follow needs to be conducted to prevent costly complications (e.g., readmissions). In addition, these alerts will highlight the key documents and resources relevant to the clinical event, so that the customer has the full context readily available without needing to sift through irrelevant documents.

"Data Available" alerts include New Encounter Alerts, Referral Alerts, and Discharge Summary Alerts. These alerts are triggered when Particle identifies a new encounter, new referral /specialist encounter, and new discharge summary respectively. All of these alerts follow the same struct:

{
  "specversion": "1.0,
  "type": "com.particlehealth.api.v2.dischargesummary",
  "subject": "Discharge Summary",
  "source": "api/notifications",
  "id": "ea77d12d-bb97-438e-82eb-1b0d10a7e3ee",
  "time": "2024-07-22T10:10:10Z",
  "datacontenttype": "application/json",
	"data": {
    "network_organization": {
      "name": "Rochester Hospital",
      "oid": "2.16.840.1.113883.3.8391.5.710576"
    },
    "particle_patient_id": "d939196d-0c80-4e82-b0e1-19f9ee271085",
    "query_id" : "e040207e-1d91-5f93-b0e1-19f9ee271085",
    "network_alert_ids": [
	    "1cac1ea7-f3a9-43b3-bca3-04d3ec4362c5",
    ],
    "adt_message_ids": [
	    "6e7303bd-2c1a-49f2-add0-820babbdb95a",
    ],
    "resources": [
      {
	      "file_id": "d6a96f73-eb18-4faa-b021-143e7777fe8b",
        "resource_ids": [
          "Encounter/b10fe2ef-47f9-4507-97c8-1a8c2215478e",
          "DocumentReference/b10fe2ef-47f9-4507-97d8-1a8c2215478f",
        ]
      }
    ]
  }
}
{
  "specversion": "1.0",
  "type": "com.particlehealth.api.v2.encounter",
  "subject": "New Encounter",
  "source": "api/notifications",
  "id": "ea77d12d-bb97-438e-82eb-1b0d10a7e3ee",
  "time": "2024-07-22T10:10:10Z",
  "datacontenttype": "application/json",
	"data": {
    "network_organization": {
      "name": "Rochester Hospital",
      "oid": "2.16.840.1.113883.3.8391.5.710576"
    },
    "particle_patient_id": "d939196d-0c80-4e82-b0e1-19f9ee271085",
    "query_id" : "e040207e-1d91-5f93-b0e1-19f9ee271085",
    "network_alert_ids": [
	    "1cac1ea7-f3a9-43b3-bca3-04d3ec4362c5",
    ],
    "adt_message_ids": [
	    "6e7303bd-2c1a-49f2-add0-820babbdb95a",
    ],
    "resources": [
      {
	      "file_id": "d6a96f73-eb18-4faa-b021-143e7777fe8b",
        "resource_ids": [
          "Encounter/b10fe2ef-47f9-4507-97c8-1a8c2215478e"
        ]
      }
    ]
  }
}
{
  "specversion": "1.0",
  "type": "com.particlehealth.api.v2.referralalert",
  "subject": "Referral Complete",
  "source": "api/notifications",
  "id": "ea77d12d-bb97-438e-82eb-1b0d10a7e3ee",
  "time": "2024-07-22T10:10:10Z",
  "datacontenttype": "application/json",
	"data": {
    "network_organization": {
      "name": "Rochester Hospital",
      "oid": "2.16.840.1.113883.3.8391.5.710576"
    },
    "particle_patient_id": "d939196d-0c80-4e82-b0e1-19f9ee271085",
    "query_id" : "e040207e-1d91-5f93-b0e1-19f9ee271085",
    "network_alert_ids": [
	    "1cac1ea7-f3a9-43b3-bca3-04d3ec4362c5",
    ],
    "adt_message_ids": [
	    "6e7303bd-2c1a-49f2-add0-820babbdb95a",
    ],
    "referral_id": "a17846c4-4270-427b-b191-bd5e76cf8f30",
    "referral_status": "COMPLETE",
    "resources": [
      {
	      "file_id": "d6a96f73-eb18-4faa-b021-143e7777fe8b",
        "resource_ids": [
          "Encounter/b10fe2ef-47f9-4507-97c8-1a8c2215478e"
        ]
      }
    ]
  }
}

Note: The file_ids and resource_ids may be an array, if Particle identifies multiple files and resources associated with the encounter that triggered the alert.

Retrieve Clinical Context

When you receive a "Data Available" alert, you can retrieve the corresponding clinical context in FLAT or FHIR format using the Deltas API. You have the option to choose how much clinical context you want to retrieve, including:

  1. Full patient history. You can retrieve the complete patient history in FLAT or FHIR.
  2. Data delta. Alternatively, you can retrieve any net-new clinical data identified since the last query (or another specified date), in FLAT or FHIR, by passing in the since parameter to the Deltas API.
  3. File that includes a new encounter. You can also retrieve all data within the same file as the new encounter that triggered the alerts, by passing the file_id provided in the notifications. Typically we see that any additional new data associated with an encounter will be captured from the networks in the same file as the encounter, so we recommend retrieving the all data within the same file as the new encounter, if you want to ensure you are capturing all data associated with the new encounter.
  4. Individual encounter. You can choose to retrieve only the data from the new encounter(s) that triggered the alerts, by passing the resource_ids provided in the notifications.

ℹ️

Discharge summaries

There are some nuances to be aware of when retrieving discharge summaries via these workflows, in particular when it comes to retrieving unstructured (i.e., non-CCDA) discharge summary files. Check out Discharge Summaries for details and examples.

Examples

See below for examples of how to request the data associated with the sample New Encounter Alert provided above. For further examples, more detailed instructions, and additional options (e.g., only retrieving data deltas for specific FHIR resources or FLAT datasets), check our Deltas Implementation.

Full patient history

  1. Retrieve full patient history in FLAT: GET /deltas/flat/{particle_patient_id}
    1. GET /deltas/flat/d939196d-0c80-4e82-b0e1-19f9ee271085
  2. Retrieve full patient history in FHIR:
    1. GET /deltas/R4/Patient/d939196d-0c80-4e82-b0e1-19f9ee271085/$everything

Data delta

  1. Retrieve data delta in FLAT: GET /deltas/flat/{particle_patient_id}?since="lastQuery"
    1. Since the last query: GET /deltas/flat/d939196d-0c80-4e82-b0e1-19f9ee271085?since="lastQuery"
    2. Since a specific date: GET /deltas/flat/d939196d-0c80-4e82-b0e1-19f9ee271085?since=2023-12-31
  2. Retrieve data delta in FHIR: GET /deltas/R4/Patient/{particle_patient_id}/$everything?since="lastQuery"
    1. Since the last query: GET /deltas/R4/Patient/ea77d12d-bb97-438e-82eb-1b0d10a7e3ee/$everything?since="lastQuery"
    2. Since a specific date: GET /deltas/R4/Patient/ea77d12d-bb97-438e-82eb-1b0d10a7e3ee/$everything?since=2023-12-31

File

  1. Retrieve the file where the encounter was identified in FLAT: GET /deltas/flat/File/{file_id}
    1. GET /deltas/flat/File/d6a96f73-eb18-4faa-b021-143e7777fe8b
  2. Retrieve the file where the encounter was identified in FHIR GET /deltas/R4/File/{file_id}
    1. GET /deltas/R4/File/d6a96f73-eb18-4faa-b021-143e7777fe8b

Encounter

  1. Retrieve the encounter in FLAT: GET /deltas/flat/Encounter/{resource_id}
    1. GET /deltas/flat/Encounter/b10fe2ef-47f9-4507-97c8-1a8c2215478e
  2. Retrieve the encounter in FHIR: GET /deltas/R4/Encounter/{resource_id}
    1. GET /deltas/R4/Encounter/b10fe2ef-47f9-4507-97c8-1a8c2215478e

Non-CCDA Discharge Summary Files

See full details on this workflow in the Discharge Summaries documentation.

Example of how to pull down a non-CCDA discharge summary file associated with the sample Discharge Summary Alert webhook notification above. Note that the DocumentReferenceId will need to be passed in the file_id parameter.

Retrieve the raw source data for discharge summaries captured in non-CCDA format: GET v1/files/{query_id}/{file_id}

GET v1/files/e040207e-1d91-5f93-b0e1-19f9ee271085/b10fe2ef-47f9-4507-97d8-1a8c2215478f


What’s Next