/**
  * Handle event
  *
  * @param CHL7v2Acknowledgment $ack        Acknowledgement
  * @param CPatient             $newPatient Person
  * @param array                $data       Nodes data
  *
  * @return null|string
  */
 function handle(CHL7v2Acknowledgment $ack, CPatient $newPatient, $data)
 {
     $event_temp = $ack->event;
     $exchange_hl7v2 = $this->_ref_exchange_hl7v2;
     $sender = $exchange_hl7v2->_ref_sender;
     $sender->loadConfigValues();
     $this->_ref_sender = $sender;
     // Acquittement d'erreur : identifiants RI et NA, VN non fournis
     if (!$data['admitIdentifiers'] && !$this->getVenueAN($sender, $data)) {
         return $exchange_hl7v2->setAckAR($ack, "E200", null, $newPatient);
     }
     // Traitement du patient
     $hl7v2_record_person = new CHL7v2RecordPerson();
     $hl7v2_record_person->_ref_exchange_hl7v2 = $exchange_hl7v2;
     $msg_ack = $hl7v2_record_person->handle($ack, $newPatient, $data);
     // Retour de l'acquittement si erreur sur le traitement du patient
     if ($exchange_hl7v2->statut_acquittement == "AR") {
         return $msg_ack;
     }
     // Traitement du séjour
     $ack = new CHL7v2Acknowledgment($event_temp);
     $ack->message_control_id = $data['identifiantMessage'];
     $ack->_ref_exchange_hl7v2 = $exchange_hl7v2;
     $newVenue = new CSejour();
     // Affectation du patient
     $newVenue->patient_id = $newPatient->_id;
     $newVenue->loadRefPatient();
     // Affectation de l'établissement
     $newVenue->group_id = $sender->group_id;
     $function_handle = "handle{$exchange_hl7v2->code}";
     if (!method_exists($this, $function_handle)) {
         return $exchange_hl7v2->setAckAR($ack, "E006", null, $newVenue);
     }
     return $this->{$function_handle}($ack, $newVenue, $data);
 }