/**
  * Fill other identifiers
  *
  * @param array         &$identifiers Identifiers
  * @param CPatient      $patient      Person
  * @param CInteropActor $actor        Interop actor
  *
  * @return null
  */
 function fillOtherIdentifiers(&$identifiers, CPatient $patient, CInteropActor $actor = null)
 {
     $ins = $patient->loadLastINS();
     if ($ins) {
         $identifiers[] = array($ins->ins, null, null, $this->getAssigningAuthority("INS-{$ins->type}"), "INS-{$ins->type}", null, CMbDT::date($ins->date));
     }
     if ($patient->matricule) {
         $identifiers[] = array($patient->matricule, null, null, $this->getAssigningAuthority("INSEE"), "SS");
     }
     if ($actor->_configs["send_own_identifier"]) {
         $identifiers[] = array($patient->_id, null, null, $this->getAssigningAuthority("mediboard"), $actor->_configs["build_identifier_authority"] == "PI_AN" ? "PI" : "RI");
     }
 }
 /**
  * Create INSC
  *
  * @param CPatient $patient patient
  *
  * @return null|string
  */
 static function createINSC(CPatient $patient)
 {
     if (!$patient->_vitale_nir_certifie) {
         return "Ce patient ne possède pas de numéro de sécurité sociale qui lui est propre";
     }
     list($nir_carte, $nir_carte_key) = explode(" ", $patient->_vitale_nir_certifie);
     $name_carte = mb_strtoupper(CMbString::removeAccents($patient->_vitale_lastname));
     $prenom_carte = mb_strtoupper(CMbString::removeAccents($patient->_vitale_firstname));
     $name_patient = mb_strtoupper(CMbString::removeAccents($patient->nom));
     $prenom_patient = mb_strtoupper(CMbString::removeAccents($patient->prenom));
     if ($name_carte !== $name_patient || $prenom_carte !== $prenom_patient) {
         return "Le bénéficiaire de la carte vitale ne correspond pas au patient en cours";
     }
     $firstName = self::formatString($patient->_vitale_firstname);
     $insc = self::calculInsc($nir_carte, $nir_carte_key, $firstName, $patient->_vitale_birthdate);
     if (strlen($insc) !== 22) {
         return "Problème lors du calcul de l'INSC";
     }
     if (!$insc) {
         return "Impossible de calculer l'INSC";
     }
     $last_ins = $patient->loadLastINS();
     if ($last_ins && $last_ins->ins === $insc) {
         return null;
     }
     $ins = new CINSPatient();
     $ins->patient_id = $patient->_id;
     $ins->ins = $insc;
     $ins->type = "C";
     $ins->date = "now";
     $ins->provider = "Mediboard";
     if ($msg = $ins->store()) {
         return $msg;
     }
     return null;
 }