/** * 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; }