Al solicitar el servicio de notificaciones de NUBIX API es posible realizar la configuración de dicho servicio de la siguiente forma:

Recibir el contenido.

<?php
$postBody = file_get_contents('php://input');

Esto se ubicará en el archivo de ejemplo.php y recibirá la información de la solicitud POST que se hará a la ruta indicada (https://dominio.ext/ruta/ejemplo.php).

Convertir el contenido a JSON.

$message = json_decode($postBody, true);
if ($message) {
...
} else {
http_response_code(400);
}

Convertimos el contenido a JSON para su posterior uso y revisamos que no reciba contenido vacío.

Se obtiene tipo.

$type = $message['Type'];
if (strcmp($type, 'SubscriptionConfirmation') == 0) {
...
} elseif (strcmp($type, 'Notification') == 0) {
...
} else {
http_response_code(400);
}

Se verifican tres opciones la primera será la confirmación de la suscripción, de no ser esta la opción que se solicita se verifica si es una notificación o bien de no ser ninguna de las dos se envía un código de error 400.

Confirmar suscripción.

if (strcmp($type, 'SubscriptionConfirmation') == 0) {
file_get_contents($message['SubscribeURL']);
}

Se realiza la comparación de la cadena de tipo ($type) con la cadena de confirmación de la suscripción ('SubscriptionConfirmation'), si esta es igual a 0, se obtiene la información del GET REQUEST a la URL que recibe de la ruta indicada (https://dominio.ext/ruta/ejemplo.php) a través de la cadena 'SubscribeURL'.

Notificación.

elseif (strcmp($type, 'Notification') == 0) {
$subject = $message['Subject'];
if (strcmp($subject, 'New Study') == 0) {
...
} elseif (strcmp($subject, 'New Interpretation') == 0) {
...
} else {
http_response_code(400);
}

Se realiza la comparación del texto tipo ($type) con el texto de notificación ('Notification'), si el resultado es igual a 0, entonces se obtiene la información de la cadena de texto, almacenándola en la variable $subject la cual debe ser revisada, ya que en NUBIX se cuenta con dos tipos de notificaciones; una para indicar un estudio nuevo('New Study') y otra que informa acerca de una interpretación('New Interpretation'), de no contar con información en dicha variable entonces se devolverá el código 400.

Notificación de nuevo estudio.

if (strcmp($subject, 'New Study') == 0) {
echo $message['Message'];
// ...
}

Una vez que contamos con la información correspondiente de $subject se debe verificar el tipo de notificación, por lo que se realizará una primera comparación donde se validará si la notificación corresponde a un nuevo estudio en la plataforma.

Notificación de nueva interpretación.

} elseif (strcmp($subject, 'New Interpretation') == 0) {
echo $message['Message'];
// ...
}

O si corresponde a una nueva interpretación.

En ambos casos aquí podrá usted manejar la lógica de su aplicación.

A continuación se muestra el código completo del archivo ejemplo.php en la ruta dominio.ext/ruta/ejemplo.php, le recomendamos utilizar Ultrahoook durante la fase de desarrollo:

<?php
$postBody = file_get_contents('php://input');

$message = json_decode($postBody, true);
if ($message) {
$type = $message['Type'];
if (strcmp($type, 'SubscriptionConfirmation') == 0) {
file_get_contents($message['SubscribeURL']);
} elseif (strcmp($type, 'Notification') == 0) {
$subject = $message['Subject'];
if (strcmp($subject, 'New Study') == 0) {
echo $message['Message'];
// ...
} elseif (strcmp($subject, 'New Interpretation') == 0) {
echo $message['Message'];
// ...
} else {
http_response_code(400);
}
} else {
http_response_code(400);
}
} else {
http_response_code(400);
}
?>

Ver en GitHub Gist