Skip to content

Commit eb4e269

Browse files
committed
feat(readme): add webhook integration and usage examples
Include documentation for parsing webhook payloads, accessing event data, and utilizing `WebhookPayloadDTO`. Add examples for enroll and appeal events. Signed-off-by: Ryan Yannelli <ryanyannelli@gmail.com>
1 parent 11ca204 commit eb4e269

1 file changed

Lines changed: 85 additions & 0 deletions

File tree

README.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ This library provides a range of features to interact with the CLAIM.MD API:
6161
- [**Realtime Eligibility JSON**](#realtime-parameter-eligibility-check): Validate and check the eligibility of a claim
6262
via parameters. Receiving the response in JSON format.
6363

64+
### [Webhook](#webhook)
65+
66+
- [**Parse Webhook Payload**](#parse-webhook-payload): Parse inbound webhook events for provider enrollment updates and appeal form creation/updates.
67+
6468
### [Payer](#payers)
6569

6670
- [**Fetch Payers**](#list-payers): Retrieve a list of payers or a specific payer.
@@ -75,6 +79,7 @@ This library provides a range of features to interact with the CLAIM.MD API:
7579
- [**ProviderEnrollmentDTO**](#providerenrollmentdto)
7680
- [**EligibilityDTO**](#eligibilitydto)
7781
- [**ERADTO**](#eradto)
82+
- [**WebhookPayloadDTO**](#webhookpayloaddto)
7883

7984
### Utility Features
8085

@@ -327,6 +332,51 @@ $eligDto = new EligibilityDTO(
327332
$response = $eligibilityRequest->checkEligibilityJSON($eligDto);
328333
```
329334

335+
### Webhook
336+
337+
#### Parse Webhook Payload
338+
339+
```php
340+
use Nextvisit\ClaimMD\DTO\WebhookPayloadDTO;
341+
342+
// Parse directly from the raw JSON request body
343+
$json = file_get_contents('php://input');
344+
$webhook = WebhookPayloadDTO::fromJsonString($json);
345+
346+
// Or from a decoded array
347+
$webhook = WebhookPayloadDTO::fromArray($decodedData);
348+
349+
// Access top-level fields
350+
$webhook->utcTime; // UTC current time
351+
$webhook->acctNumber; // Claim.MD Account Number
352+
$webhook->remoteAcctNumber; // Customer assigned account number
353+
354+
// Iterate over events
355+
foreach ($webhook->events as $event) {
356+
$event->eventId; // Unique event identifier
357+
$event->eventType; // "enroll" or "appeal"
358+
$event->eventTime; // UTC time of event
359+
360+
if ($event->eventType === 'enroll') {
361+
$event->enroll->enrollId; // Enrollment ID
362+
$event->enroll->event; // "enrolled", "received", "completed", "rejected"
363+
$event->enroll->enrollType; // "era", "1500", "ub", "elig", "attach"
364+
$event->enroll->provNpi; // Provider NPI
365+
$event->enroll->payerId; // Payer ID
366+
}
367+
368+
if ($event->eventType === 'appeal') {
369+
$event->appeal->appealId; // Appeal ID
370+
$event->appeal->event; // "created", "mailed", "update", "faxed", "transmitted", "failure"
371+
$event->appeal->appealType; // "electronic", "mail", "fax", "download"
372+
$event->appeal->claimId; // Associated Claim.MD claim ID
373+
$event->appeal->remoteClaimId; // User-assigned claim ID
374+
$event->appeal->serviceFee; // Service fees
375+
$event->appeal->pages; // Number of pages
376+
}
377+
}
378+
```
379+
330380
### Payers
331381

332382
#### List Payers
@@ -544,6 +594,41 @@ $data = [
544594
$eraDto = ERADTO::fromArray($data);
545595
```
546596

597+
#### WebhookPayloadDTO
598+
599+
```php
600+
use Nextvisit\ClaimMD\DTO\WebhookPayloadDTO;
601+
602+
// Parse from a raw JSON string (e.g., webhook request body)
603+
$json = file_get_contents('php://input');
604+
$webhookPayload = WebhookPayloadDTO::fromJsonString($json);
605+
606+
// Or from a decoded array
607+
$data = [
608+
'UTCTime' => '2026-03-13T12:00:00Z',
609+
'acct_number' => 'ACCT-001',
610+
'remote_acct_number' => 'REMOTE-001',
611+
'events' => [
612+
[
613+
'eventid' => 'EVT-001',
614+
'event_type' => 'enroll',
615+
'event_time' => '2026-03-13T11:00:00Z',
616+
'event_data' => [
617+
'enroll' => [
618+
'enrollid' => 'ENR-001',
619+
'event' => 'enrolled',
620+
'enroll_type' => 'era',
621+
'prov_npi' => '1234567890',
622+
'payerid' => 'PAYER-001',
623+
],
624+
],
625+
],
626+
],
627+
];
628+
629+
$webhookPayload = WebhookPayloadDTO::fromArray($data);
630+
```
631+
547632
## 🤝 Contributing
548633

549634
Contributions are welcome! If you find any issues or have suggestions for improvements, feel free to open an issue or

0 commit comments

Comments
 (0)