args as $option => $value) { switch ($option) { case "-xe": // option pour ne pas lancer le calcul des essentiels $omitEssentiels = true; break; case "-xx": // option pour ne pas exécuter les contrôles expert $omitExpert = true; break; case "-xc": // option pour ne pas traiter les données complémentaires $omitComplements = true; break; default : break; } } $versions_groupage = array('09', '1B', '1C', '1D', '1E', '1F', '1G', '10', '11', '12', '13', '14', '16', '17', '18', '19', '20', '21', '22', '23', '79', '89', '99', 'V2'); ini_set('memory_limit','2G'); logStartMsg(); // parametres generaux $file = "../../../settings/settings.XML"; $settings_xml = simplexml_load_string(file_get_contents($file)); $ENV_CONSOLIDATION = "0"; $ENV_ADMPROVIDER = ""; $ENV_PMSIPROVIDER = ""; $ENV_PMSIPROVIDER2 = ""; $ENV_FINESS = "999999999"; $ENV_LOCALKEYS = ""; $ENV_OPTIMISATIONS_VUES_MATERIALISEES = ""; foreach ($settings_xml->ENVIRONMENT as $environmentNode) { foreach ($environmentNode->PROPERTY as $propertyNode) { if ($propertyNode['name'] == 'CONSOLIDATION') { $ENV_CONSOLIDATION = trim($propertyNode['value']); } if ($propertyNode['name'] == 'TYPEETS') { $ENV_TYPEETS = trim($propertyNode['value']); } if ($propertyNode['name'] == 'PMSIPROVIDER') { $ENV_PMSIPROVIDER = strtolower($propertyNode['value']); } if ($propertyNode['name'] == 'PMSIPROVIDER2') { $ENV_PMSIPROVIDER2 = strtolower($propertyNode['value']); } if ($propertyNode['name'] == 'ADMPROVIDER') { $ENV_ADMPROVIDER = trim($propertyNode['value']); } if ($propertyNode['name'] == 'FINESS') { $ENV_FINESS = trim($propertyNode['value']); } if ($propertyNode['name'] == 'LOCALKEYS') { $ENV_LOCALKEYS = trim($propertyNode['value']); } if ($propertyNode['name'] == 'OPTPMSI_GHSBB') { $ENV_OPTPMSI_GHSBB = trim($propertyNode['value']); } if ($propertyNode['name'] == 'OPTPMSI_MED_CODOUID') { $ENV_OPTPMSI_MED_CODOUID = trim($propertyNode['value']); } // Option qui permet de traiter les FSD comme des prestations cliniques et non honoraires ('1' cliniques, '0' honoraires) if ($propertyNode['name'] == 'OPTPMSI_FSD_B') { $ENV_OPTPMSI_FSD_B = trim($propertyNode['value']); } } } if (isset($settings_xml->OPTIMISATIONS)) { foreach ($settings_xml->OPTIMISATIONS as $environmentNode) { foreach ($environmentNode->PROPERTY as $propertyNode) { if ($propertyNode['name'] == 'VUES_MATERIALISEES') { $ENV_OPTIMISATIONS_VUES_MATERIALISEES = trim($propertyNode['value']); } } } } if ($ENV_CONSOLIDATION == "1") { logErrorMsg("Cet environnement est un environnement consolidé"); logEndMsg(); return; } if ($ENV_TYPEETS != "2" && $ENV_TYPEETS != "3") { $ENV_TYPEETS = "1"; } $aspirator_host = "inactive"; if (isset($settings_xml->ASPIRATOR)) { foreach ($settings_xml->ASPIRATOR as $aspiratorNode) { foreach ($aspiratorNode->PROPERTY as $propertyNode) { $propertyName = trim($propertyNode['name']); $propertyValue = trim($propertyNode['value']); if ($propertyName == "HOST") { $aspirator_host = $propertyValue; } } } } // Connexion iCTI $iCTI_connexion = Database2Factory::getInstance(Environnement::PROVIDER_CTI); $ret = $iCTI_connexion->connect(); $trans_sqlcmd_array = array(); $trans_sqlcmd_array_index = 0; //start traitement traitements(); $iCTI_connexion->close(); logEndMsg(); // Traitement des imports pointés function traitements() { global $iCTI_connexion; global $import_id; checkImportState(); init_offsets(); begin_trans(); $controles_array = array(); $generations_array = array(); // Contrôles $result = $iCTI_connexion->query("SELECT oid FROM pmsi.p_imports WHERE traitement_a_faire = 'C' "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $oid = $record["oid"]; $controles_array[$oid] = $oid; } } $sqlcmd = "UPDATE pmsi.p_imports SET "; $sqlcmd = $sqlcmd . "traitement_a_faire = '' "; $sqlcmd = $sqlcmd . "WHERE traitement_a_faire = 'C' "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); // générations $result = $iCTI_connexion->query("SELECT oid FROM pmsi.p_imports WHERE traitement_a_faire = 'G' "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $oid = $record["oid"]; $generations_array[$oid] = $oid; } } $sqlcmd = "UPDATE pmsi.p_imports SET "; $sqlcmd = $sqlcmd . "traitement_a_faire = '' "; $sqlcmd = $sqlcmd . "WHERE traitement_a_faire = 'G' "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); foreach ($controles_array as $oid) { $import_id = $oid; controle(); } foreach ($generations_array as $oid) { $import_id = $oid; generation(); } if (count($generations_array)) { generations_fin(); } } function checkImportState(){ global $iCTI_connexion; $imports_avec_pb = array(); // Vérification des flags en BD $result = $iCTI_connexion->query("SELECT oid, texte, date_import FROM pmsi.p_imports WHERE etat_en_cours <> '' "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $imports_avec_pb[$record["oid"]] = "L'import n°" . $record["oid"] . " \"" . $record["texte"] . "\" du " . $record["date_import"] . " est marqué comme étant \"en cours\"."; } } if (OperatingSystem::isLinux()) { //todo: Gérer les jobs différemment return; } // Vérification des fichiers pid batch $activeJobsDirPath = "../../../system/batch/activejobs"; $notFound = true; // PID du programme en cours pas trouvé $cpt = 0; // Pour ne pas boucler indéfiniment while ($notFound && $cpt < 10) { sleep($cpt * 1); $cpt++; $activeJobPresent = array(); $activeJobsDir = opendir($activeJobsDirPath) or die('Erreur'); while ($activeJob = @readdir($activeJobsDir)) { if (is_file($activeJobsDirPath . '/' . $activeJob) && $activeJob != '.' && $activeJob != '..') { $filename = basename(__FILE__, ".php"); $aj = preg_split('/\r\n|\r|\n/', file_get_contents($activeJobsDirPath . '/' . $activeJob)); $ajFilename = str_replace("name=", "", $aj[1]); $ajPID = str_replace("pid=", "", $aj[0]); if ($filename == $ajFilename) { $tmp = csv2array(shell_exec("tasklist /FO CSV /NH /FI \"PID eq $ajPID\" ")); if ($tmp[1] == $ajPID) { // Fichier PID avec un process Windows en cours d'exécution $notFound = false; $activeJobPresent[$activeJob] = array(false, realpath($activeJobsDirPath . '/' . $activeJob)); } else { // Fichier PID sans un process Windows en cours d'exécution => flaggé à déplacer $activeJobPresent[$activeJob] = array(true, realpath($activeJobsDirPath . '/' . $activeJob)); } } } } closedir($activeJobsDir); } if($notFound){ logInfoMsg("Pas de process Windows trouvé pour cet import."); } if (count($imports_avec_pb) > 0 && count($activeJobPresent) == 1) { // CAS n°1 : // Si import signalé en cours mais 1 seul fichier batch correspondant à cet import RSS RSF // => annuler le flag "en cours" foreach ($imports_avec_pb as $key => $value) { $sqlcmd = " UPDATE pmsi.p_imports SET etat_en_cours = '' WHERE oid = $key ; "; $iCTI_connexion->query($sqlcmd); logInfoMsg($value . " Rétablissement de l'état."); } } else if (count($imports_avec_pb) == 0 && count($activeJobPresent) > 1) { // CAS n°2 : // Si aucun import signalé en cours mais + d'1 fichier batch // => deplacer le fichier dans le repertoire "jobs" => NON tant qu'on ne sait pas associer l'import en cours avec le fichier PID foreach ($activeJobPresent as $key => $value) { if($value[0]){ if($notFound){ logInfoMsg("Fichier $key présent dans \"system/batch/activejobs/\" ."); }else{ rename($value[1], str_replace("activejobs", "jobs", $value[1])); logInfoMsg("Le fichier $key a été déplacé de \"system/batch/activejobs/\" vers \"system/batch/jobs/\" ."); } } } } else if (count($imports_avec_pb) > 0 && count($activeJobPresent) > 1) { // CAS n°3 : // Si import signalé ET + d'1 fichier batch // => STOP foreach ($imports_avec_pb as $key => $value) { logInfoMsg($value . " Merci d'attendre la fin de son traitement."); } sleep(10); logEndMsg(); exit(0); } } // controle function controle() { global $import_id; global $ENV_TYPEETS; global $file_exists_RSF; global $file_exists_FCP; global $file_exists_TSP; logInfoMsg("CONTROLE FICHIERS N° $import_id"); controle_initialisation(); restauration_fichiers(); restauration_donnees_complementaires();//SUPPR controle_ium(); controle_rss_medecin(); // SUPPR controle_rss_nom(); // SUPPR controle_acte_med(); // SUPPR controle_rum(); if ($ENV_TYPEETS == "1") { controle_rsf(); } if ($ENV_TYPEETS != "1") { if ($file_exists_RSF) { controle_rsf(); } } //if ($ENV_TYPEETS != "1") { controle_rsa(); //} if ($file_exists_FCP == true) { controle_fichcomp(); } if ($file_exists_TSP == true) { controle_fichsup(); } else { logInfoMsg("Pas de controle des fichsup"); } if ($ENV_TYPEETS != "1") { controle_ano_vidhosp(); } controle_validation(); suppression_fichiers(); logInfoMsg("FIN CONTROLE FICHIERS N° $import_id"); } function controle_initialisation() { global $import_id; logInfoMsg("INITIALISATION CONTROLE"); $nbE = 0; begin_trans(); $sqlcmd = "UPDATE pmsi.p_imports SET "; $sqlcmd = $sqlcmd . "finess = '', "; $sqlcmd = $sqlcmd . "etat_en_cours = 'C', "; $sqlcmd = $sqlcmd . "nb_rss = 0, nb_rum = 0, nb_rsf = 0, "; $sqlcmd = $sqlcmd . "nb_erreurs = 0, nb_avertissements = 0, "; $sqlcmd = $sqlcmd . "date_debut = '2099-12-31', "; $sqlcmd = $sqlcmd . "date_fin = '2099-12-31' "; $sqlcmd = $sqlcmd . "WHERE oid = $import_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); $sqlcmd = "DELETE FROM pmsi.p_imports_controles "; $sqlcmd = $sqlcmd . "WHERE import_id = $import_id "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); logInfoMsg("FIN INITIALISATION CONTROLE. $nbE erreurs."); } function controle_validation() { global $import_id; logInfoMsg("VALIDATION CONTROLE"); begin_trans(); $sqlcmd = "UPDATE pmsi.p_imports SET "; $sqlcmd = $sqlcmd . "etat_en_cours = '' "; $sqlcmd = $sqlcmd . "WHERE oid = $import_id "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); $sqlcmd = "UPDATE pmsi.p_imports SET "; $sqlcmd = $sqlcmd . "etat = 'C' "; $sqlcmd = $sqlcmd . "WHERE oid = $import_id AND etat = 'I'"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); logInfoMsg("FIN VALIDATION CONTROLE. $nbE erreurs."); } function controle_rss_medecin() { global $iCTI_connexion; global $import_id; global $file_RSSMED; global $file_exists_MED; global $file_exists_RSSMED; global $med_array; global $rssmed_array; global $rssmed_deja; global $ENV_PMSIPROVIDER; if ($ENV_PMSIPROVIDER != "" && !$file_exists_RSSMED) { return; } logInfoMsg("CONTROLE ASSOCIATION RSS MEDECIN"); $nb = 0; $nbI = 0; $nbW = 0; $nbE = 0; begin_trans(); if ($file_exists_RSSMED) { $no_ligne = 0; $rssmed_array = array(); $handle = @fopen($file_RSSMED, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 100000000000 ) { $nb++; $okrcd = "OK"; $BUF_record = read_rssmed_line($buffer); if ($BUF_record["is_comite"] != "1") { if (! controle_check_num($BUF_record["no_rss"],0,FALSE,$erreur,$commentaire)) { $commentaire = "Ligne ignorée"; controle_add_error("RSSMED", $no_ligne, "Numéro RSS", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_record["no_rss_offset"], $BUF_record["no_rss_len"]); $okrcd = "KO"; } $code_med = ""; if ($file_exists_MED) { if ($BUF_record["code_medecin"] != "") { $code_med = @$med_array[$BUF_record["code_medecin"]]; if ($code_med == "") { if (! check_medecin($BUF_record["code_medecin"], $gravite, $erreur, $commentaire)) { controle_add_error("RSF", $no_ligne, "Code médecin", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_record["code_medecin_offset"], $BUF_record["code_medecin_len"]); } } } else { $okrcd = "KO"; } } if ($okrcd == "OK") { $no_rss = get_numrss($BUF_record["no_rss"]); $rssmed_array[$no_rss] = $BUF_record["code_medecin"]; } } } } fclose($handle); } } else { controle_add_error("FILE", 0, "", "", "Fichier des association RSS - Médecin absent", 1, "", $nbI, $nbW, $nbE); } $rssmed_deja = ""; $sqlcmd = "SELECT base.cti_group_concat(no_rss) AS deja FROM pmsi.p_imports_rss_mednom WHERE medecin_rss_id > 0 AND annee_sortie = (SELECT max(annee_sortie) FROM pmsi.p_imports_rss_mednom)"; $result = $iCTI_connexion->query($sqlcmd); $record = pg_fetch_array($result); if ($record != FALSE) { $rssmed_deja = ", " . trim($record["deja"]) . ","; } if ($nbE > 0 || $nbW > 0) { $sqlcmd = "UPDATE pmsi.p_imports SET "; $sqlcmd = $sqlcmd . "nb_erreurs = nb_erreurs + $nbE, nb_avertissements = nb_avertissements + $nbW "; $sqlcmd = $sqlcmd . "WHERE oid = $import_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); } commit_trans(); logInfoMsg("FIN CONTROLE ASSOCIATION RSS MEDECIN. $nb lus, $nbI informations, $nbW avertissements, $nbE erreurs graves"); } function controle_rss_nom() { global $iCTI_connexion; global $import_id; global $aspirator_host; global $file_MED; global $file_RSSMED; global $file_RSSNOM; global $file_exists_RSSNOM; global $rssnom_array; global $rssprenom_array; global $rssnom_deja; global $ENV_PMSIPROVIDER; if ($ENV_PMSIPROVIDER != "" && !$file_exists_RSSNOM) { return; } logInfoMsg("CONTROLE ASSOCIATION RSS NOM"); $nb = 0; $nbI = 0; $nbW = 0; $nbE = 0; begin_trans(); if ($file_exists_RSSNOM) { $no_ligne = 0; $rssnom_array = array(); $rssprenom_array = array(); $handle = @fopen($file_RSSNOM, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 100000000000 ) { $nb++; $BUF_record = read_rssnom_line($buffer); $okrcd = "OK"; if (! controle_check_num($BUF_record["no_rss"],0,FALSE,$erreur,$commentaire)) { $commentaire = "Ligne ignorée"; controle_add_error("RSSNOM", $no_ligne, "Numéro RSS", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_record["no_rss_offset"], $BUF_record["no_rss_len"]); $okrcd = "KO"; } if ($BUF_record["nom"] == "") { //$erreur = "Nom non renseigné"; //$commentaire = "Blanc pris par défaut"; //controle_add_error("RSSNOM", $no_ligne, "Nom", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE); $okrcd = "KO"; } if ($okrcd == "OK") { $no_rss = get_numrss($BUF_record["no_rss"]); $rssnom_array[$no_rss] = $BUF_record["nom"]; $rssprenom_array[$no_rss] = $BUF_record["prenom"]; } } } fclose($handle); } } else { controle_add_error("FILE", 0, "", "", "Fichier des association RSS - Noms absent", 1, "", $nbI, $nbW, $nbE); } $rssnom_deja = ""; $sqlcmd = "SELECT base.cti_group_concat(no_rss) AS deja FROM pmsi.p_imports_rss_mednom WHERE nom <> '' AND annee_sortie = (SELECT max(annee_sortie) FROM pmsi.p_imports_rss_mednom)"; $result = $iCTI_connexion->query($sqlcmd); $record = pg_fetch_array($result); if ($record != FALSE) { $rssnom_deja = ", " . trim($record["deja"]) . ","; } if ($nbE > 0 || $nbW > 0) { $sqlcmd = "UPDATE pmsi.p_imports SET "; $sqlcmd = $sqlcmd . "nb_erreurs = nb_erreurs + $nbE, nb_avertissements = nb_avertissements + $nbW "; $sqlcmd = $sqlcmd . "WHERE oid = $import_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); } commit_trans(); logInfoMsg("FIN CONTROLE ASSOCIATION RSS NOM. $nb lus, $nbI informations, $nbW avertissements, $nbE erreurs graves"); } function controle_acte_med() { global $import_id; global $file_ACTMED; global $file_exists_MED; global $file_exists_ACTMED; global $med_array; global $actmed_array; global $ENV_PMSIPROVIDER; if ($ENV_PMSIPROVIDER != "" && !$file_exists_ACTMED) { return; } logInfoMsg("CONTROLE ASSOCIATION ACTES EXECUTANTS"); $nb = 0; $nbI = 0; $nbW = 0; $nbE = 0; begin_trans(); if ($file_exists_ACTMED) { $no_ligne = 0; $actmed_array = array(); $handle = @fopen($file_ACTMED, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 10000000000000 ) { $nb++; $okrcd = "OK"; $BUF_record = read_actmed_line($buffer); if ($BUF_record["type_enregistrement"] == "ACTMED") { if (! controle_check_num($BUF_record["no_rss"],0,FALSE,$erreur,$commentaire)) { $commentaire = "Ligne ignorée"; controle_add_error("ACTMED", $no_ligne, "Numéro RSS", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_record["no_rss_offset"], $BUF_record["no_rss_len"]); $okrcd = "KO"; } if ($file_exists_MED && $okrcd == "OK") { $code_med = isset($med_array[$BUF_record["code_medecin"]]) ? $med_array[$BUF_record["code_medecin"]] : ""; if ($code_med != "") { if (! check_medecin($BUF_record["code_medecin"], $gravite, $erreur, $commentaire)) { if ($gravite == 4) { $gravite = 1; $commentaire = "Ligne ignorée"; $okrcd = "KO"; } controle_add_error("ACTMED", $no_ligne, "Code médecin", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_record["code_medecin_offset"], $BUF_record["code_medecin_len"]); } } else { $okrcd = "KO"; } } // Date acte if ($okrcd == "OK") { if (! controle_check_date($BUF_record["date_acte"],$erreur,$commentaire)) { if ($gravite == 4) { $gravite = 1; $commentaire = "Ligne ignorée"; $okrcd = "KO"; } controle_add_error("ACTMED", $no_ligne, "Date acte", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_record["date_acte_offset"], $BUF_record["date_acte_len"]); $okrcd = "KO"; } } // code CCAM if ($okrcd == "OK") { if (! check_acte($BUF_record["code_acte"], $gravite, $erreur, $commentaire)) { if ($gravite == 4) { $gravite = 1; $commentaire = "Ligne ignorée"; $okrcd = "KO"; } controle_add_error("ACTMED", $no_ligne, "Code acte CCAM", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_record["code_acte_offset"], $BUF_record["code_acte_len"]); } } // activite if ($okrcd == "OK") { if (! controle_check_num($BUF_record["activite_ccam"],1, FALSE,$erreur,$commentaire)) { $commentaire = "Valeur 1 prise par défaut"; $BUF_record["activite_ccam"] = "1"; controle_add_error("ACTMED", $no_ligne, "Activité CCAM", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_record["activite_ccam_offset"], $BUF_record["activite_ccam_len"]); } } if ($okrcd == "OK") { $cle = get_numrss($BUF_record["no_rss"]); $cle = $cle . $BUF_record["code_acte"]; $cle = $cle . get_date_AAAAMMJJ($BUF_record["date_acte"]); $cle = $cle . $BUF_record["activite_ccam"]; $actmed_array[$cle] = $BUF_record["code_medecin"]; $cle = get_numrss($BUF_record["no_rss"]); $cle = $cle . $BUF_record["code_acte"]; $cle = $cle . "00000000"; $cle = $cle . $BUF_record["activite_ccam"]; $actmed_array[$cle] = $BUF_record["code_medecin"]; // cas particulier actes anesthésie en activite 1 if ($BUF_record["activite_ccam"] == "4") { $acte_anesthesie = array("AFLB010", "GELE001", "YYYY003", "YYYY004", "YYYY015", "YYYY020", "YYYY041", "YYYY044", "YYYY108", "YYYY118", "ZZLP008", "ZZLP012", "ZZLP025", "ZZLP030", "ZZLP042", "ZZLP054"); if (in_array($BUF_record["code_acte"], $acte_anesthesie)){ $cle = get_numrss($BUF_record["no_rss"]); $cle = $cle . $BUF_record["code_acte"]; $cle = $cle . get_date_AAAAMMJJ($BUF_record["date_acte"]); $cle = $cle . "1"; $actmed_array[$cle] = $BUF_record["code_medecin"]; $cle = get_numrss($BUF_record["no_rss"]); $cle = $cle . $BUF_record["code_acte"]; $cle = $cle . "00000000"; $cle = $cle . "1"; $actmed_array[$cle] = $BUF_record["code_medecin"]; } } } } } } fclose($handle); } } else { controle_add_error("FILE", 0, "", "", "Fichier des association Actes - Médecin absent", 1, "", $nbI, $nbW, $nbE); } if ($nbE > 0 || $nbW > 0) { $sqlcmd = "UPDATE pmsi.p_imports SET "; $sqlcmd = $sqlcmd . "nb_erreurs = nb_erreurs + $nbE, nb_avertissements = nb_avertissements + $nbW "; $sqlcmd = $sqlcmd . "WHERE oid = $import_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); } commit_trans(); logInfoMsg("FIN CONTROLE ASSOCIATION ACTES EXECUTANTS. $nb lus, $nbI informations, $nbW avertissements, $nbE erreurs graves"); } function controle_ium() { /* * [Position debut - Position fin] * * version 3 _ depuis M03 2013 * * [00-03] Code UM Notation identique à celle du fichier RSS * [04-12] Finess geographique * [13-15] Type autorisation * [16-23] Date d'effet de l'autorisation JJMMAAAA * [24-26] Nombre de lits 3 caractères « espace » si pas d'autorisation, sinon au format « 000 » (par exemple pour un chiffre 2, écrire « 002 ») * [27-27] Mode d'hospitalisation C : Hospitalisation complète | P : Hospitalisation partielle | M : Hospitalisation Mixte * * * version 2 * * [00-03] Code UM Notation identique à celle du fichier RSS * [04-12] Finess geographique Obligatoire à partir de 2012 * [13-14] Type autorisation 2 caractères espace = pas d'autorisation * [15-22] Date d'effet de l'autorisation JJMMAAAA * [23-25] Nombre de lits 3 caractères « espace » si pas d'autorisation, sinon au format « 000 » (par exemple pour un chiffre 2, écrire « 002 ») * * * version 1 * * [00-03] Code UM Notation identique à celle du fichier RSS * [04-05] Type autorisation 2 caractères « espace » : Pas d'autorisation * [06-13] Date d'effet de l'autorisation JJMMAAAA * [14-16] Nombre de lits 3 caractères « espace » si pas d'autorisation, sinon au format « 000 » (par exemple pour un chiffre 2, écrire « 002 ») * */ global $file_exists_IUM; global $file_IUM; global $iCTI_connexion; global $import_id; if (!$file_exists_IUM || !is_readable($file_IUM)) { logInfoMsg("FICHIER DES UNITES MEDICALES ABSENT OU ILLISIBLE"); return; } else { logInfoMsg("CONTROLE DES UNITES MEDICALES"); } $no_ligne = 0; $nbI = 0; $nbW = 0; $nbE = 0; $autStart = 0; $autLength = 0; $dateStart = 0; // Détermine la version du fichiers des IUM en fonction de la longueur max des lignes d'enregistrement $f = file_get_contents($file_IUM); $a = explode(PHP_EOL, $f); $max = 0; foreach($a as $line) { if (strlen($line) > $max) { $max = strlen($line);} } if ($max >= 28) { $version = 3; } else if ($max >= 26) { $version = 2; } else { $version = 1; } $handle = fopen($file_IUM, "r"); if ($handle) { // Récupère les données présentes en base pour les unités médicales, les types d'autorisation et les modes d'hospitalisation $modes_hospitalisation = get_modes_hospitalisation(); $unites_medicales = get_unites_medicales(); $types_autorisation = get_types_autorisation(); while (!feof($handle)) { $buffer = fgets($handle); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 10000000000000 ) { switch ($version) { case 3 : $autStart = 13; $autLength = 3; $dateStart = 16; $umCode = trim(substr($buffer, 0, 4)); $umFiness = trim(substr($buffer, 4, 9)); $umAut = trim(substr($buffer, $autStart, $autLength)); $umDate = trim(substr($buffer, $dateStart, 8)); $umNbLits = trim(substr($buffer, 24, 3)); $umMode = trim(substr($buffer, 27, 1)); if (in_array($umMode, $modes_hospitalisation) === false) { $erreur = " Mode d'hospitalisation inconnu '" . $umMode . "' "; $commentaire = " Le code C (Hospitalisation complète) sera utilisé pour cette unité médicale"; controle_add_error("MOD", $no_ligne, "Mode d'hospitalisation", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, 27, 1); } break; case 2 : $autStart = 13; $autLength = 2; $dateStart = 15; $umCode = trim(substr($buffer, 0, 4)); $umFiness = trim(substr($buffer, 4, 9)); $umAut = trim(substr($buffer, $autStart, $autLength)); $umDate = trim(substr($buffer, $dateStart, 8)); $umNbLits = trim(substr($buffer, 23, 3)); $umMode = ''; break; case 1 : $autStart = 4; $autLength = 2; $dateStart = 6; $umCode = trim(substr($buffer, 0, 4)); $umFiness = ''; $umAut = trim(substr($buffer, $autStart, $autLength)); $umDate = trim(substr($buffer, $dateStart, 8)); $umNbLits = trim(substr($buffer, 14, 3)); $umMode = ''; break; } if (array_key_exists($umCode, $unites_medicales) === false) { $erreur = " Code unité médicale inconnu '" . $umCode . "' "; $commentaire = " Le code sera ajouté en base"; controle_add_error("UM", $no_ligne, "Unité médicale", $buffer, $erreur, 0, $commentaire, $nbI, $nbW, $nbE, 0, 4); } if (in_array($umAut, $types_autorisation) === false) { $erreur = " Type autorisation inconnu '" . $umAut . "' "; $commentaire = " Le code sera ajouté en base"; controle_add_error("AUT", $no_ligne, "Type autorisation", $buffer, $erreur, 0, $commentaire, $nbI, $nbW, $nbE, $autStart, $autLength); } if (! controle_check_date($umDate, $erreur, $commentaire)) { $erreur = " Date erronée '" . $umDate . "' "; $commentaire = " La date 01-01-2012 sera prise en remplacement"; controle_add_error("DDA", $no_ligne, "Date début autorisation", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $dateStart, 8); } } } if ($nbE > 0 || $nbW > 0) { $sqlcmd = " UPDATE pmsi.p_imports SET nb_erreurs = nb_erreurs + $nbE, nb_avertissements = nb_avertissements + $nbW WHERE oid = $import_id "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); } fclose($handle); } else { logWarnMsg("PROBLEME DE LECTURE DU FICHIER DES UNITES MEDICALES"); } logInfoMsg("FIN CONTROLE DES UNITES MEDICALES. Version du fichier $version, $no_ligne lus, $nbI informations, $nbW avertissements, $nbE erreurs graves"); } function generation_ium() { global $file_exists_IUM; global $file_IUM; global $iCTI_connexion; global $import_id; if (!$file_exists_IUM) { logInfoMsg("FICHIER DES UM ABSENT OU ILLISIBLE"); return; } else { logInfoMsg("GENERATION DES UM"); } $no_ligne = 0; $autStart = 0; $autLength = 0; $dateStart = 0; // Détermine la version du fichiers des IUM en fonction de la longueur max des lignes d'enregistrement $f = file_get_contents($file_IUM); $a = explode(PHP_EOL, $f); $max = 0; foreach($a as $line) { if (strlen($line) > $max) { $max = strlen($line);} } if ($max >= 28) { $version = 3; } else if ($max >= 26) { $version = 2; } else { $version = 1; } $handle = fopen($file_IUM, "r"); if ($handle) { // Récupère les données présentes en base pour les unités médicales, les types d'autorisation et les modes d'hospitalisation $modes_hospitalisation = get_modes_hospitalisation(); // Mise en place de la table temporaire où sont stockées les données du fichier des unités médicales $sqlcmd = " DROP TABLE IF EXISTS temp.t_unites_medicales; CREATE TABLE temp.t_unites_medicales ( code text, finess text, type_autorisation text, date_effet date, nb_lits numeric, mode_hospitalisation text); INSERT INTO temp.t_unites_medicales VALUES "; $values = array(); while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 10000000000000 ) { switch ($version) { case 3 : $umCode = trim(substr($buffer, 0, 4)); $umFiness = trim(substr($buffer, 4, 9)); $umAut = trim(substr($buffer, 13, 3)); $umDate = trim(substr($buffer, 16, 8)); $umNbLits = (int)trim(substr($buffer, 24, 3)); $umMode = trim(substr($buffer, 27, 1)); // Force le mode d'hospitalisation sur "complète" si celui lu est inconnu if (in_array($umMode, $modes_hospitalisation) === false) { $umMode = 'C'; } break; case 2 : $umCode = trim(substr($buffer, 0, 4)); $umFiness = trim(substr($buffer, 4, 9)); $umAut = trim(substr($buffer, 13, 2)); $umDate = trim(substr($buffer, 15, 8)); $umNbLits = (int)trim(substr($buffer, 23, 3)); $umMode = ''; break; case 1 : $umCode = trim(substr($buffer, 0, 4)); $umFiness = ''; $umAut = trim(substr($buffer, 4, 2)); $umDate = trim(substr($buffer, 6, 8)); $umNbLits = trim(substr($buffer, 14, 3)) + 0; $umMode = ''; break; } // Force la date au 01 janvier 2012 si la date saisie dans le fichier est incorrecte if (! controle_check_date($umDate, $erreur, $commentaire)) { $umDate = '01012012'; } $values[] = " ('" . $umCode . "'::text, '" . $umFiness . "'::text, '" . $umAut . "'::text, to_date('" . $umDate . "'::text, 'DDMMYYYY'::text), " . $umNbLits . "::bigint, '" . $umMode . "'::text) "; } } if (count($values) > 0) { $sqlcmd .= implode(", ", $values); $result = $iCTI_connexion->query($sqlcmd); if (!is_resource($result)) { logWarnMsg("PROBLEME CREATION DE LA TABLE TEMPORAIRE DES UNITES MEDICALES"); } else { // Ajout des nouveaux types d'autorisation si trouvés dans le fichier $sqlcmd = " INSERT INTO pmsi.t_types_autorisations (code, texte, texte_court) SELECT w_um.type_autorisation, w_um.type_autorisation, w_um.type_autorisation FROM temp.t_unites_medicales w_um LEFT JOIN pmsi.t_types_autorisations ON t_types_autorisations.code = w_um.type_autorisation WHERE t_types_autorisations.code IS NULL; "; $result = $iCTI_connexion->query($sqlcmd); $nb_new_auth = (is_resource($result) == true) ? pg_affected_rows($result) : 0; // Mise à jour des infos des UM $sqlcmd = " UPDATE pmsi.t_unites_medicales SET type_autorisation = w_um.type_autorisation, date_effet_autorisation = w_um.date_effet, nb_lits = w_um.nb_lits, mode_hospitalisation = w_um.mode_hospitalisation, finess_geographique = w_um.finess FROM temp.t_unites_medicales w_um WHERE t_unites_medicales.code = w_um.code AND ( t_unites_medicales.type_autorisation IS DISTINCT FROM w_um.type_autorisation OR t_unites_medicales.date_effet_autorisation IS DISTINCT FROM w_um.date_effet OR t_unites_medicales.nb_lits IS DISTINCT FROM w_um.nb_lits OR t_unites_medicales.mode_hospitalisation IS DISTINCT FROM w_um.mode_hospitalisation OR t_unites_medicales.finess_geographique IS DISTINCT FROM w_um.finess ); "; $result = $iCTI_connexion->query($sqlcmd); $nb_updates = (is_resource($result) == true) ? pg_affected_rows($result) : 0; // Ajout des nouvelles unités médicales $sqlcmd = " INSERT INTO pmsi.t_unites_medicales (code, texte, type_autorisation, date_effet_autorisation, nb_lits, mode_hospitalisation, finess_geographique) SELECT w_um.code, w_um.code, w_um.type_autorisation, w_um.date_effet, w_um.nb_lits, w_um.mode_hospitalisation, w_um.finess FROM temp.t_unites_medicales w_um LEFT JOIN pmsi.t_unites_medicales ON t_unites_medicales.code = w_um.code WHERE t_unites_medicales.code IS NULL; SELECT pmsi.cti_update_schema_classes('UM'); "; $result = $iCTI_connexion->query($sqlcmd); $nb_new_um = (is_resource($result) == true) ? pg_affected_rows($result) : 0; } } else { logWarnMsg("FICHIER DES UNITES MEDICALES VIDE"); } fclose($handle); } else { logWarnMsg("PROBLEME DE LECTURE DU FICHIER DES UNITES MEDICALES"); } logInfoMsg("FIN CONTROLE DES UM. version $version. $no_ligne lus, $nb_new_auth type(s) d'aut. créé(s), $nb_updates um modfiée(s), $nb_new_um um créée(s)"); } function controle_rum() { global $ENV_FINESS; global $ENV_TYPEETS; global $import_id; global $file_RSS; global $file_RSF; global $file_exists_RSSMED; global $file_exists_RSSNOM; global $file_exists_ACTMED; global $file_exists_RSS; global $file_exists_RSF; global $rssmed_array; global $rssnom_array; global $actmed_array; global $rssmed_deja; global $rssnom_deja; global $current_rsfa_index; global $versions_groupage; logInfoMsg("CONTROLE DES RUM"); $nb = 0; $nbI = 0; $nbW = 0; $nbE = 0; begin_trans(); if ($file_exists_RSS) { // recherche des RSS dans les RSF $rsss_array = array(); $rsss_ghs_array = array(); if ($file_exists_RSF && $ENV_TYPEETS == "1") { $handle = @fopen($file_RSF, "r"); $current_rsfa_index = 0; if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); if (trim($buffer) != "" ) { $BUF_record = read_rsf_partial_line($buffer); if ($BUF_record["ok"] == TRUE) { // ENTETE RSF if ($BUF_record["type_enregistrement"] == "A") { // RSS if (controle_check_num($BUF_record["no_rss"],0,FALSE,$erreur,$commentaire)) { $no_rss = get_numrss($BUF_record["no_rss"]); $rsss_array[$no_rss] = "OK"; //$rsss_ghs_array[$no_rss] = ""; } } // prestation principale GHS if ($BUF_record["type_enregistrement"] == "B") { // RSS if ($BUF_record["code_acte"] == "GHS") { $no_rss = get_numrss($BUF_record["no_rss"]); $rsss_ghs_array[$no_rss] = "GHS"; } } } } } } } $no_ligne = 0; $dates_array = array(); $ok_rss_array = array(); $nb_rss = 0; $nb_rum = 0; $finess_error = FALSE; $format_error = FALSE; $finess_first = ""; $nb_errors_rss_med = 0; $nb_errors_rss_nom = 0; $handle = @fopen($file_RSS, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 1000000000000000) { $nb++; $BUF_record = read_rum_line($buffer); if ($BUF_record["type_enregistrement"] == "RUM") { $BUF_offsets = $BUF_record["BUF_offsets"]; $no_rss = get_numrss($BUF_record["no_rss"]); $rss_ok = TRUE; if ($rss_ok == TRUE) { $nb_rum++; $decalage = FALSE; $rss_error = FALSE; if ($BUF_record["fmt_error"] != "" && $format_error == FALSE) { $erreur = $BUF_record["fmt_error"]; $commentaire = "Le fichier est accepté par iCTI mais ne peut être envoyé aux tutelles"; controle_add_error("RSS", $no_ligne, "Format", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["version_format_offset"], $BUF_offsets["version_format_len"]); $format_error = TRUE; } // Finess if (1 == 2) { if ($BUF_record["finess"] != $ENV_FINESS && $finess_error == FALSE) { $erreur = "Valeur " . $BUF_record["finess"] . " différente de $ENV_FINESS"; $commentaire = "Le fichier est erroné"; controle_add_error("RSS", $no_ligne, "Finess", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["finess_offset"], $BUF_offsets["finess_len"]); $finess_error = TRUE; } } if ($finess_first == "") { $finess_first = $BUF_record["finess"]; } // date naissance non numérique(si erreur, décalage) if ($decalage == FALSE) { if (! controle_check_num($BUF_record["date_naissance"],8,FALSE,$erreur,$commentaire)) { $erreur = "Date de naissance non numérique pour RSS " . $BUF_record["no_rss"]; $commentaire = "Il y a peut-être un décalage dans l'enregistrement"; controle_add_error("RSS", $no_ligne, "Date naissance", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_naissance_offset"], $BUF_offsets["date_naissance_len"]); $decalage = TRUE; } } // Code sexe (si erreur, décalage) if ($decalage == FALSE) { $sexe = $BUF_record["sexe"]; if ($sexe != "1" && $sexe != "2" && $sexe != "3" ) { $erreur = "Valeur $sexe incorrecte pour RSS " . $BUF_record["no_rss"]; $commentaire = "Il y a peut-être un décalage dans l'enregistrement"; controle_add_error("RSS", $no_ligne, "Sexe", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["sexe_offset"], $BUF_offsets["sexe_len"]); $decalage = TRUE; } } // date entree non numérique(si erreur, décalage) if ($decalage == FALSE) { if (! controle_check_num($BUF_record["date_entree"],8,FALSE,$erreur,$commentaire)) { $erreur = "Date d'entrée non numérique pour RSS " . $BUF_record["no_rss"]; $commentaire = "Il y a peut-être un décalage dans l'enregistrement"; controle_add_error("RSS", $no_ligne, "Date entree", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_entree_offset"], $BUF_offsets["date_entree_len"]); $decalage = TRUE; } } if ($decalage == FALSE) { $ok_rss_array[$no_rss] = $no_rss; // version groupage $version_groupage = strtoupper($BUF_record["version_groupage"]); if ($BUF_record["ghm"] != "") { if (!in_array($version_groupage, $versions_groupage)) { $erreur = "Valeur $version_groupage incorrecte pour RSS " . $BUF_record["no_rss"]; $commentaire = ""; controle_add_error("RSS", $no_ligne, "Version groupage", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["version_groupage_offset"], $BUF_offsets["version_groupage_len"]); } } // GHM if ($BUF_record["ghm"] != "") { if (! check_ghm($BUF_record["ghm"], $gravite, $erreur, $commentaire)) { $erreur = $erreur . " pour RSS " . $BUF_record["no_rss"]; controle_add_error("RSS", $no_ligne, "GHM", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["ghm_offset"], $BUF_offsets["ghm_len"]); } } else { if ($file_exists_RSF) { $no_rss = get_numrss($BUF_record["no_rss"]); $in_rsf = ""; $in_rsf = @$rsss_array[$no_rss]; if ($in_rsf == "OK") { if (@$rsss_ghs_array[$no_rss] == "GHS") {; $erreur = "Pas de GHM pour RSS " . $BUF_record["no_rss"]; $commentaire = ""; controle_add_error("RSS", $no_ligne, "GHM", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["ghm_offset"], $BUF_offsets["ghm_len"]); } } } } // RSS if (! controle_check_num($BUF_record["no_rss"],0,FALSE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSS", $no_ligne, "Numéro RSS", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_rss_offset"], $BUF_offsets["no_rss_len"]); $rss_error = TRUE; } else { if ($file_exists_RSF && $ENV_TYPEETS == "1") { $no_rss = get_numrss($BUF_record["no_rss"]); $in_rsf = ""; $in_rsf = @$rsss_array[$no_rss]; if ($in_rsf != "OK") { $erreur = "Aucun RSF pour le RSS " . $BUF_record["no_rss"] ; $commentaire = "Ce RSS ne sera pas récupéré"; controle_add_error("RSS", $no_ligne, "Numéro RSS", $buffer, $erreur, 3, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_rss_offset"], $BUF_offsets["no_rss_len"]); } } } // date naissance if (! controle_check_date($BUF_record["date_naissance"],$erreur,$commentaire, true)) { $commentaire = default_birth_date($BUF_record["date_naissance"]) . " prise par défaut"; controle_add_error("RSS", $no_ligne, "Date naissance", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_naissance_offset"], $BUF_offsets["date_naissance_len"]); } // Date entree if (! controle_check_date($BUF_record["date_entree"],$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSS", $no_ligne, "Date entrée", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_entree_offset"], $BUF_offsets["date_entree_len"]); } // mode entrée if (! check_mode_entree($BUF_record["mode_entree"], $gravite, $erreur, $commentaire)) { controle_add_error("RSS", $no_ligne, "Mode entrée", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["mode_entree_offset"], $BUF_offsets["mode_entree_len"]); } // Provenance if (! check_provenance($BUF_record["provenance"], $gravite, $erreur, $commentaire)) { controle_add_error("RSS", $no_ligne, "Provenance", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["provenance_offset"], $BUF_offsets["provenance_len"]); } // Passage Urgences if (! check_passage_urgences($BUF_record["passage_urgences"], $gravite, $erreur, $commentaire)) { controle_add_error("RSS", $no_ligne, "Passage Urgences", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["passage_urgences_offset"], $BUF_offsets["passage_urgences_len"]); } // Date sortie if (! controle_check_date($BUF_record["date_sortie"],$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSS", $no_ligne, "Date sortie", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_sortie_offset"], $BUF_offsets["date_sortie_len"]); } else { $dates_array[$BUF_record["no_rss"]] = sqlDate($BUF_record["date_sortie"]); } // Mode sortie if (! check_mode_sortie($BUF_record["mode_sortie"], $gravite, $erreur, $commentaire)) { controle_add_error("RSS", $no_ligne, "Mode sortie", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["mode_sortie_offset"], $BUF_offsets["mode_sortie_len"]); } // Destination if (! check_destination($BUF_record["destination"], $gravite, $erreur, $commentaire)) { controle_add_error("RSS", $no_ligne, "destination", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["destination_offset"], $BUF_offsets["destination_len"]); } // Code postal if (! controle_check_num($BUF_record["code_postal"],5,FALSE,$erreur,$commentaire)) { $commentaire = ""; if (strlen($BUF_record["code_postal"]) < 5) { $commentaire = "Valeur " . substr($BUF_record["code_postal"] . "00000" , 0, 5) . " prise en remplacement"; } controle_add_error("RSS", $no_ligne, "Code postal", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["code_postal_offset"], $BUF_offsets["code_postal_len"]); } // Poids bébé if (! controle_check_num($BUF_record["poids_bebe"],4, TRUE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSS", $no_ligne, "Poids bebe", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["poids_bebe_offset"], $BUF_offsets["poids_bebe_len"]); } // Nombre séances if (! controle_check_num($BUF_record["nombre_seances"],2, TRUE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSS", $no_ligne, "Nombre séances", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["nombre_seances_offset"], $BUF_offsets["nombre_seances_len"]); } // Nombre diagnostics if (! controle_check_num($BUF_record["nombre_diagnostics"],2, FALSE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSS", $no_ligne, "Nombre diagnostics", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["nombre_diagnostics_offset"], $BUF_offsets["nombre_diagnostics_len"]); } // Nombre actes if (! controle_check_num($BUF_record["nombre_actes"],0, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSS", $no_ligne, "Nombre actes", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["nombre_actes_offset"], $BUF_offsets["nombre_actes_len"]); } // Age gestationnel if (! controle_check_num($BUF_record["age_gestationnel"],2, TRUE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSS", $no_ligne, "Age gestationnel", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["nombre_actes_offset"], $BUF_offsets["nombre_actes_len"]); } // Date dernieres regles /*if (! controle_check_date($BUF_record["date_dernieres_regles"],$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSS", $no_ligne, "Date dernieres regles", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_entree_offset"], $BUF_offsets["date_entree_len"]); }*/ // Confirmation codage //$BUF_record["confirmation_codage"] // Type machine rdth //$BUF_record["type_machine_rdth"] // Type dosimetrie //$BUF_record["type_dosimetrie"] // Numero innovation // désactivé par CLA le 15-05-2017 car le numéro d'innovation peut être alphanumérique (voir format RSS) // if (! controle_check_num($BUF_record["numero_innovation"], 15, TRUE, $erreur, $commentaire)) { // $commentaire = ""; // controle_add_error("RSS", $no_ligne, "Numero innovation", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["nombre_actes_offset"], $BUF_offsets["nombre_actes_len"]); // } // diagnostic principal if (trim($BUF_record["diagnostic_principal"]) == "") { if ($BUF_record["ghm"] != "") { if (@$rsss_ghs_array[$no_rss] == "GHS") {; $erreur = "Pas de diagnostic principal"; $commentaire = ""; controle_add_error("RSS", $no_ligne, "Diagnostic principal", $buffer, $erreur, 3, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["diagnostic_principal_offset"], $BUF_offsets["diagnostic_principal_len"]); } } } else { if (! check_diagnostic($BUF_record["diagnostic_principal"], $gravite, $erreur, $commentaire)) { controle_add_error("RSS", $no_ligne, "Diagnostic principal", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["diagnostic_principal_offset"], $BUF_offsets["diagnostic_principal_len"]); } } // Diagnostic relie if ($BUF_record["diagnostic_relie"] != "") { if (! check_diagnostic($BUF_record["diagnostic_relie"], $gravite, $erreur, $commentaire)) { controle_add_error("RSS", $no_ligne, "Diagnostic relié", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["diagnostic_relie_offset"], $BUF_offsets["diagnostic_relie_len"]); } } // IGS if (! controle_check_num($BUF_record["igs2"],3, TRUE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSS", $no_ligne, "IGS 2", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["igs2_offset"], $BUF_offsets["igs2_len"]); } // Medecin RSS if ($rss_error == FALSE) { if ($file_exists_RSSMED) { $code_med = ""; $code_med = @$rssmed_array[$no_rss]; if ($code_med == "") { if (strpos($rssmed_deja, ", $no_rss,") === FALSE) { $nb_errors_rss_med++; //$erreur = "Association RSS-Médecin inexistante pour RSS " . $BUF_record["no_rss"]; //$commentaire = ""; //controle_add_error("RSS", $no_ligne, "Numéro RSS", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_rss_offset"], $BUF_offsets["no_rss_len"]); } } } } // Nom RSS if ($rss_error == FALSE) { if ($file_exists_RSSNOM) { $nom = ""; $nom = @$rssnom_array[$no_rss]; if ($nom == "") { if (strpos($rssnom_deja, ", $no_rss,") === FALSE) { $nb_errors_rss_nom++; //$erreur = "Association RSS-Nom inexistante pour RSS " . $BUF_record["no_rss"]; //$commentaire = ""; //controle_add_error("RSS", $no_ligne, "Numéro RSS", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_rss_offset"], $BUF_offsets["no_rss_len"]); } } } } // Diagnostics associés $di = 0; foreach ($BUF_record["diags"] as $diagnostic_associe) { $di++; if (! check_diagnostic($diagnostic_associe, $gravite, $erreur, $commentaire)) { controle_add_error("RSS", $no_ligne, "Diagnostic associé $di", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_record["diags_offset"][$di], $BUF_record["diags_len"][$di]); } } // Diagnostics à visé documentaire $dd = 0; foreach ($BUF_record["diagsdoc"] as $diagnostic_documentaire) { $dd++; if (! check_diagnostic($diagnostic_documentaire, $gravite, $erreur, $commentaire)) { controle_add_error("RSS", $no_ligne, "Diagnostic documentaire $dd", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_record["diagsdoc_offset"][$dd], $BUF_record["diagsdoc_len"][$dd]); } } // Actes $ac = 0; foreach ($BUF_record["actes"] as $BUF_acte) { $ac++; $BUF_code_acte = trim(substr($BUF_acte , 8, 7)); $BUF_extension_atih = ((intval($BUF_record["version_format"]) >= 117) && trim(substr($BUF_acte , 15, 3)) != '-00') ? trim(substr($BUF_acte , 15, 3)) : ""; $BUF_code_acte .= $BUF_extension_atih; $BUF_date_acte = trim(substr($BUF_acte , 0, 8)); $BUF_activite_ccam = trim(substr($BUF_acte , 16 + $BUF_record["offset_format"], 1)); $BUF_modificateurs = trim(substr($BUF_acte,18 + $BUF_record["offset_format"],4)); // recuperer les 4 modificateurs lu dans le buffer acte $array_modificateurs = str_split($BUF_modificateurs,1);//transferer la chaine lue de taille 4 à un tableau for ($i=0; $i <4 ; $i++) { if (isset($array_modificateurs[$i]) && !check_modificateur($array_modificateurs[$i],$gravite, $erreur, $commentaire)) { controle_add_error("RSS",$no_ligne,"Acte modificateur $ac", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_record["actes_offset"][$ac], $BUF_record["actes_len"][$ac]); } } if (! check_acte($BUF_code_acte , $gravite, $erreur, $commentaire)) { controle_add_error("RSS", $no_ligne, "Acte $ac", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_record["actes_offset"][$ac], $BUF_record["actes_len"][$ac]); } else { // Medecin acte if ($rss_error == FALSE) { if ($file_exists_ACTMED) { $cle = get_numrss($BUF_record["no_rss"]); $cle = $cle . $BUF_code_acte; $cle = $cle . get_date_AAAAMMJJ($BUF_date_acte); $cle = $cle . $BUF_activite_ccam; $code_med = ""; $code_med = $actmed_array[$cle]; if ($code_med == "") { $cle = get_numrss($BUF_record["no_rss"]); $cle = $cle . $BUF_code_acte; $cle = $cle . "00000000"; $cle = $cle . $BUF_activite_ccam; $code_med = ""; $code_med = $actmed_array[$cle]; } if ($code_med == "" && ($BUF_code_acte == "AFLB010" || $BUF_code_acte == "ZZLP025" || $BUF_code_acte == "ZZLP054")) { $cle = get_numrss($BUF_record["no_rss"]); $cle = $cle . $BUF_code_acte; $cle = $cle . "00000000"; $cle = $cle . "4"; $code_med = ""; $code_med = $actmed_array[$cle]; } if ($code_med == "") { //$erreur = "Association Acte-Exécutant inexistante pour RSS " . $BUF_record["no_rss"] . " acte " . $BUF_code_acte . "-" . $BUF_activite_ccam; //$commentaire = ""; //controle_add_error("RSS", $no_ligne, "Code acte CCAM", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_record["actes_offset"][$ac], $BUF_record["actes_len"][$ac]); } } } } } } } // Date sortie if (controle_check_date($BUF_record["date_sortie"],$erreur,$commentaire)) { $dates_array[$BUF_record["no_rss"]] = sqlDate($BUF_record["date_sortie"]); } } } } fclose($handle); } // comptage RSS foreach ($ok_rss_array as $no_rss) { $nb_rss++; } // période $date_sortie_1 = "2099-12-31"; $date_sortie_9 = "0001-01-01"; foreach ($dates_array as $date_sortie) { if ($date_sortie < $date_sortie_1) { $date_sortie_1 = $date_sortie; } if ($date_sortie > $date_sortie_9) { $date_sortie_9 = $date_sortie; } } logInfoMsg("Période de sortie du $date_sortie_1 au $date_sortie_9"); if (substr($date_sortie_1,0,4) != substr($date_sortie_9,0,4)) { if (substr($date_sortie_9,0,4) != "0001") { controle_add_error("FILE", 0, "", "", "Année de début différente de l'année de fin", 4, "", $nbI, $nbW, $nbE); logWarnMsg("Année de début différente de l'année de fin"); } } if ($nb_errors_rss_nom++ > 0) { controle_add_error("RSS", 0, "", "", "$nb_errors_rss_nom RSS sans nom associé", 1, "", $nbI, $nbW, $nbE); } if ($nb_errors_rss_med++ > 0) { controle_add_error("RSS", 0, "", "", "$nb_errors_rss_med RSS sans médecin associé", 1, "", $nbI, $nbW, $nbE); } $sqlcmd = "UPDATE pmsi.p_imports SET "; $sqlcmd = $sqlcmd . "finess = '$finess_first', "; $sqlcmd = $sqlcmd . "nb_rss = $nb_rss, nb_rum = $nb_rum, "; $sqlcmd = $sqlcmd . "date_debut = '$date_sortie_1', "; $sqlcmd = $sqlcmd . "date_fin = '$date_sortie_9' "; $sqlcmd = $sqlcmd . "WHERE oid = $import_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); // Si pas de RSS (cas de l'autodialyse Parc Monceau), il faut positionner les dates selon le nom du fichier $sqlcmd = "UPDATE pmsi.p_imports SET finess = subview.finess, date_debut = subview.date_debut, date_fin = subview.date_fin FROM ( SELECT p_imports.oid, file_path, split_part(file_path,'.',1) AS finess, (split_part(file_path,'.',2)||'/01/01')::date AS date_debut, date((split_part(file_path,'.',2)||'/'||split_part(file_path,'.',3)||'/01')::date+interval '1 month' - interval '1 day') AS date_fin FROM pmsi.p_imports JOIN pmsi.p_imports_data ON import_id = p_imports.oid JOIN base.t_finess ON split_part(file_path,'.',1) = t_finess.code WHERE p_imports_data.data_type = 'ZIN' AND split_part(file_path,'.',2) LIKE '20%' AND p_imports.oid = $import_id AND p_imports.date_fin = '00010101' ) subview WHERE p_imports.oid = subview.oid"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); } else { controle_add_error("FILE", 0, "", "", "Fichier des RSS absent", 4, "", $nbI, $nbW, $nbE); } if ($nbE > 0 || $nbW > 0) { $sqlcmd = "UPDATE pmsi.p_imports SET "; $sqlcmd = $sqlcmd . "nb_erreurs = nb_erreurs + $nbE, nb_avertissements = nb_avertissements + $nbW "; $sqlcmd = $sqlcmd . "WHERE oid = $import_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); } commit_trans(); logInfoMsg("FIN CONTROLE DES RUM. $nb lus, $nbI informations, $nbW avertissements, $nbE erreurs graves"); } function controle_rsf() { global $ENDSTATUS; global $iCTI_connexion; global $ENV_FINESS; global $ENV_TYPEETS; global $import_id; global $ENV_PMSIPROVIDER; global $ENV_PMSIPROVIDER2; global $file_RSS; global $file_RSF; global $file_exists_ACTMED; global $file_exists_RSS; global $file_exists_RSF; global $actmed_array; global $current_rsfa_index; logInfoMsg("CONTROLE DES RSF"); $w_ENV_PMSIPROVIDER = $ENV_PMSIPROVIDER; $nb = 0; $nbI = 0; $nbW = 0; $nbE = 0; $no_ligne = 0; $nb_rsf = 0; begin_trans(); $finess_error = FALSE; if ($file_exists_RSF) { // recherche des RSF dans les RUM $rsss_array = array(); if ($file_exists_RSS) { $handle = @fopen($file_RSS, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 100000000000) { $nb++; $BUF_record = read_rum_partial_line($buffer); if ($BUF_record["type_enregistrement"] == "RUM") { // RSS if (controle_check_num($BUF_record["no_rss"],0,FALSE,$erreur,$commentaire)) { $no_rss = get_numrss($BUF_record["no_rss"]); $rsss_array[$no_rss] = "OK"; } } } } } } $no_ligne = 0; $type_rss = ""; $rss_ok = TRUE; $current_rsfa_index = 0; $handle = @fopen($file_RSF, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 100000000000) { $nb++; $BUF_record = read_rsf_line($buffer); if ($BUF_record["ok"] == TRUE) { $BUF_offsets = $BUF_record["BUF_offsets"]; // ENTETE RSF if ($BUF_record["type_enregistrement"] == "A") { $type_rss = ""; if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = $BUF_record["no_facture"] + 99000000000; $BUF_record["no_rss"] = '9' . str_pad(ltrim($BUF_record["no_facture"], '0'), 8, '0', STR_PAD_LEFT); } $no_rss = get_numrss($BUF_record["no_rss"]); $rss_ok = TRUE; if ($rss_ok == TRUE) { $nb_rsf++; // Finess if (1 == 2) { if ($BUF_record["finess"] != $ENV_FINESS && $finess_error == FALSE) { $erreur = "Valeur " . $BUF_record["finess"] . " différente de $ENV_FINESS"; $commentaire = "Le fichier est erroné"; controle_add_error("RSF", $no_ligne, "Finess", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["finess_offset"], $BUF_offsets["finess_len"]); $finess_error = TRUE; } } // RSS if (! controle_check_num($BUF_record["no_rss"],0,FALSE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Numéro RSS", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_rss_offset"], $BUF_offsets["no_rss_len"]); } // Code sexe $value = $BUF_record["sexe"]; if ($value != "1" && $value != "2" && $value != "3" && $value != "4" && $value != "5" ) { $erreur = "Valeur $value incorrecte"; $commentaire = "1 (masculin) pris par défaut"; controle_add_error("RSF", $no_ligne, "Sexe", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["sexe_offset"], $BUF_offsets["sexe_len"]); } else { if ($w_ENV_PMSIPROVIDER != "shs") { if ($value != "1" && $value != "2" && $value != "3" ) { $erreur = "Valeur $value incorrecte"; $commentaire = "1 (masculin) pris par défaut"; controle_add_error("RSF", $no_ligne, "Sexe", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["sexe_offset"], $BUF_offsets["sexe_len"]); } } } // Code civilite if ($BUF_record["nature_operation"] != "" && $BUF_record["civilite"] != "" && ($BUF_record["sexe"] == "1" || $BUF_record["sexe"] == "2" || $BUF_record["sexe"] == "3")) { $value = $BUF_record["civilite"]; if ($value != "" && $value != "1" && $value != "2" && $value != "3") { $erreur = "Valeur $value incorrecte"; $commentaire = "3 (SANS) pris par défaut"; controle_add_error("RSF", $no_ligne, "Civilité", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["civilite_offset"], $BUF_offsets["civilite_len"]); } } // Rang bénéficiaire if (! controle_check_num($BUF_record["rang_beneficiaire"],0, TRUE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "rang bénéficiaire", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["rang_beneficiaire_offset"], $BUF_offsets["rang_beneficiaire_len"]); } // Nature opération if ($BUF_record["nature_operation"] != "" && $BUF_record["civilite"] != "") { $value = $BUF_record["nature_operation"]; if ($value != "0" && $value != "1" && $value != "2" && $value != "3" && $value != "4" && $value != "5" && $value != "9" ) { $erreur = "Valeur $value incorrecte"; $commentaire = "1 pris par défaut"; controle_add_error("RSF", $no_ligne, "Nature opération", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["nature_operation_offset"], $BUF_offsets["nature_operation_len"]); } } // Nature assurance if (! check_nature_pec($BUF_record["nature_assurance"], $gravite, $erreur, $commentaire)) { controle_add_error("RSF", $no_ligne, "Nature assurance", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["nature_assurance_offset"], $BUF_offsets["nature_assurance_len"]); } // Code prise en charge $value = $BUF_record["code_pec"]; if ($ENV_TYPEETS == "1") { if ($value != "0" && $value != "1" && $value != "2" && $value != "3" && $value != "4" && $value != "5" && $value != "") { $erreur = "Valeur $value incorrecte"; $commentaire = "1 pris par défaut"; controle_add_error("RSF", $no_ligne, "Code prise en charge", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["code_pec_offset"], $BUF_offsets["code_pec_len"]); } } else { if ($value != "0" && $value != "1" && $value != "2" && $value != "3" && $value != "X" && $value != "") { $erreur = "Valeur $value incorrecte"; $commentaire = "1 pris par défaut"; controle_add_error("RSF", $no_ligne, "Code prise en charge", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["code_pec_offset"], $BUF_offsets["code_pec_len"]); } } // facture if (! controle_check_num($BUF_record["no_facture"],0,TRUE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Numéro facture", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_facture_offset"], $BUF_offsets["no_facture_len"]); } // Grand régime if (! check_regime($BUF_record["grand_regime"], $gravite, $erreur, $commentaire)) { controle_add_error("RSF", $no_ligne, "Grand régime", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["grand_regime_offset"], $BUF_offsets["grand_regime_len"]); } // date naissance if (! controle_check_date($BUF_record["date_naissance"],$erreur,$commentaire, true)) { $commentaire = default_birth_date($BUF_record["date_naissance"]) . " prise par défaut"; controle_add_error("RSF", $no_ligne, "RSS " . $no_rss . ". Date naissance", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_naissance_offset"], $BUF_offsets["date_naissance_len"]); } // Rang naissance if (! controle_check_num($BUF_record["rang_naissance"],1, TRUE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "RSS " . $no_rss . ". Rang naissance", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["rang_naissance_offset"], $BUF_offsets["rang_naissance_len"]); } // Date entree if (! controle_check_date($BUF_record["date_entree"],$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Date entrée", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_entree_offset"], $BUF_offsets["date_entree_len"]); } // Date sortie if (! controle_check_date($BUF_record["date_sortie"],$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Date sortie", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_sortie_offset"], $BUF_offsets["date_sortie_len"]); } // base remboursement if (! controle_check_num($BUF_record["base_remboursement_c"],8, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Base remboursement prestations hospitalières", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["base_remboursement_c_offset"], $BUF_offsets["base_remboursement_c_len"]); } // honoraires facturés if (! controle_check_num($BUF_record["total_honoraires_factures"],8, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Total honoraires facturés", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["total_honoraires_factures_offset"], $BUF_offsets["total_honoraires_factures_len"]); } // honoraires remboursables if (! controle_check_num($BUF_record["total_honoraires_remboursable"],8, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Total honoraires remboursable", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["total_honoraires_remboursable_offset"], $BUF_offsets["total_honoraires_remboursable_len"]); } // participation assuré avant OC if (! controle_check_num($BUF_record["total_assure_avant_oc"],8, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Participation assuré avant OC", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["total_assure_avant_oc_offset"], $BUF_offsets["total_assure_avant_oc_len"]); } // patient bénéficiaire de la CMU (L'absence de valeur n'est pas une erreur $value = $BUF_record["pat_benef_cmu"]; if ($value != "0" && $value != "1" && $value != "O" && $value != "N" && $value != "") { $erreur = "Valeur $value incorrecte"; $commentaire = "Aucune valeur ne sera remontée"; controle_add_error("RSF", $no_ligne, "Patient bénéficaire de la CMU", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["pat_benef_cmu_offset"], $BUF_offsets["pat_benef_cmu_len"]); } if ($ENV_TYPEETS == "2" || $ENV_TYPEETS == "3") { // RSF-ACE $value = $BUF_record["valorise_fides"]; if ($value != "0" && $value != "1" && $value != "O" && $value != "N" && $value != "") { $erreur = "Valeur $value incorrecte"; $commentaire = "Aucune valeur ne sera remontée"; controle_add_error("RSF", $no_ligne, "valorisé par FIDES", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["valorise_fides_offset"], $BUF_offsets["valorise_fides_len"]); } } } } // RSF B if ($BUF_record["type_enregistrement"] == "B" && $rss_ok == TRUE) { // Finess if (1 == 2) { if ($BUF_record["finess"] != $ENV_FINESS && $finess_error == FALSE) { $erreur = "Valeur " . $BUF_record["finess"] . " différente de $ENV_FINESS"; $commentaire = "Le fichier est erroné"; controle_add_error("RSF", $no_ligne, "Finess", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["finess_offset"], $BUF_offsets["finess_len"]); $finess_error = TRUE; } } // RSS if (! controle_check_num($BUF_record["no_rss"],0,FALSE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Numéro RSS", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_rss_offset"], $BUF_offsets["no_rss_len"]); } else { if ($file_exists_RSS) { if ($BUF_record["code_acte"] == 'GHS') { $no_rss = get_numrss($BUF_record["no_rss"]); $in_rsf = ""; $in_rsf = @$rsss_array[$no_rss]; if ($in_rsf != "OK") { $erreur = "Aucun RUM pour le RSS " . $BUF_record["no_rss"] ; $commentaire = ""; controle_add_error("RSF", $no_ligne, "Numéro RSS", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_rss_offset"], $BUF_offsets["no_rss_len"]); } } } } // MT if (! controle_check_num($BUF_record["mode_traitement"],2, TRUE,$erreur,$commentaire)) { $commentaire = "Blanc pris par défaut"; controle_add_error("RSF", $no_ligne, "Mode traitement", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["mode_traitement_offset"], $BUF_offsets["mode_traitement_len"]); } // DMT if (! controle_check_num($BUF_record["discpline_prestation"],3, TRUE,$erreur,$commentaire)) { $commentaire = "Blanc pris par défaut"; controle_add_error("RSF", $no_ligne, "discipline prestation", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["discpline_prestation_offset"], $BUF_offsets["discpline_prestation_len"]); } // Date début if (! controle_check_date($BUF_record["date_debut"],$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Date début", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_debut_offset"], $BUF_offsets["date_debut_len"]); } // Date fin if (! controle_check_date($BUF_record["date_fin"],$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Date fin", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_fin_offset"], $BUF_offsets["date_fin_len"]); } // acte if (! check_prestation($BUF_record["code_acte"], $gravite, $erreur, $commentaire)) { controle_add_error("RSF", $no_ligne, "Code acte", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["code_acte_offset"], $BUF_offsets["code_acte_len"]); } // nombre if (! controle_check_num($BUF_record["nombre"],3, FALSE,$erreur,$commentaire)) { $commentaire = "1 pris par défaut"; controle_add_error("RSF", $no_ligne, "Quantité", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["nombre_offset"], $BUF_offsets["nombre_len"]); } // coefficient if (! controle_check_num($BUF_record["coefficient"],0, FALSE,$erreur,$commentaire)) { $commentaire = "1 pris par défaut"; controle_add_error("RSF", $no_ligne, "Coefficient", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["coefficient_offset"], $BUF_offsets["coefficient_len"]); } // prix unitaire if (! controle_check_num($BUF_record["prix_unitaire"],7, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Prix unitaire", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["prix_unitaire_offset"], $BUF_offsets["prix_unitaire_len"]); } // base remboursement if (! controle_check_num($BUF_record["base_remboursement"],8, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Base remboursement", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["base_remboursement_offset"], $BUF_offsets["base_remboursement_len"]); } // coefficient mco if (! controle_check_num($BUF_record["coefficient_mco"],5, FALSE,$erreur,$commentaire)) { $commentaire = "1 pris par défaut"; controle_add_error("RSF", $no_ligne, "Coefficient mco", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["coefficient_mco_offset"], $BUF_offsets["coefficient_mco_len"]); } // taux remboursement if (! controle_check_num($BUF_record["taux"],3, FALSE,$erreur,$commentaire)) { $commentaire = "100 pris par défaut"; controle_add_error("RSF", $no_ligne, "Taux remboursement", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["taux_offset"], $BUF_offsets["taux_len"]); } // sejour facture if (! controle_check_num($BUF_record["montant_total_depense"],8, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Montant facturé", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["montant_total_depense_offset"], $BUF_offsets["montant_total_depense_len"]); } // Montant remboursable if (! controle_check_num($BUF_record["montant_remboursable"],8, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Montant remboursable", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["montant_remboursable_offset"], $BUF_offsets["montant_remboursable_len"]); } // ghs $ghsError = FALSE; if ($BUF_record["code_acte"] == "GHS" || $BUF_record["code_acte"] == "EXH" || $BUF_record["no_ghs"] != "") { if (! check_ghs($BUF_record["no_ghs"], $gravite, $erreur, $commentaire)) { controle_add_error("RSF", $no_ligne, "Code GHS", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_ghs_offset"], $BUF_offsets["no_ghs_len"]); } } // Montant remboursé noemie if (! controle_check_num($BUF_record["montant_remboursé_noemie"],8, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Montant remboursé NOEMIE", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["montant_remboursé_noemie_offset"], $BUF_offsets["montant_remboursé_noemie_len"]); } // Type RSS if ($BUF_record["code_acte"] == 'GHS') { $type_rss = "GHS"; } if ($type_rss == "") { if ($BUF_record["code_acte"] == 'SE1') { $type_rss = "SE1"; } if ($BUF_record["code_acte"] == 'SE2') { $type_rss = "SE2"; } if ($BUF_record["code_acte"] == 'SE3') { $type_rss = "SE3"; } if ($BUF_record["code_acte"] == 'SE4') { $type_rss = "SE4"; } if ($BUF_record["code_acte"] == 'SE5') { $type_rss = "SE5"; } if ($BUF_record["code_acte"] == 'SE6') { $type_rss = "SE6"; } if ($BUF_record["code_acte"] == 'SE7') { $type_rss = "SE7"; } if ($BUF_record["code_acte"] == 'FFM') { $type_rss = "FFM"; } if ($BUF_record["code_acte"] == 'ATU') { $type_rss = "ATU"; } if ($BUF_record["code_acte"] == 'APE') { $type_rss = "APE"; } if ($BUF_record["code_acte"] == 'AP2') { $type_rss = "AP2"; } if ($BUF_record["code_acte"] == 'FPI') { $type_rss = "FPI"; } } } // RSF C if ($BUF_record["type_enregistrement"] == "C" && $rss_ok == TRUE) { // Finess if (1 == 2) { if ($BUF_record["finess"] != $ENV_FINESS && $finess_error == FALSE) { $erreur = "Valeur " . $BUF_record["finess"] . " différente de $ENV_FINESS"; $commentaire = "Le fichier est erroné"; controle_add_error("RSF", $no_ligne, "Finess", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["finess_offset"], $BUF_offsets["finess_len"]); $finess_error = TRUE; } } // RSS if (! controle_check_num($BUF_record["no_rss"],0,FALSE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Numéro RSS", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_rss_offset"], $BUF_offsets["no_rss_len"]); } // MT if (! controle_check_num($BUF_record["mode_traitement"],2, TRUE,$erreur,$commentaire)) { $commentaire = "Blanc pris par défaut"; controle_add_error("RSF", $no_ligne, "Mode traitement", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["mode_traitement_offset"], $BUF_offsets["mode_traitement_len"]); } // DMT if (! controle_check_num($BUF_record["discpline_prestation"],3, TRUE,$erreur,$commentaire)) { $commentaire = "Blanc pris par défaut"; controle_add_error("RSF", $no_ligne, "discipline prestation", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["discpline_prestation_offset"], $BUF_offsets["discpline_prestation_len"]); } // Date début if (! controle_check_date($BUF_record["date_debut"],$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Date début", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_debut_offset"], $BUF_offsets["date_debut_len"]); } // Date fin if (! controle_check_date($BUF_record["date_fin"],$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Date fin", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_fin_offset"], $BUF_offsets["date_fin_len"]); } // acte if (! check_prestation($BUF_record["code_acte"], $gravite, $erreur, $commentaire)) { controle_add_error("RSF", $no_ligne, "Code acte", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["code_acte_offset"], $BUF_offsets["code_acte_len"]); } // nombre if (! controle_check_num($BUF_record["nombre"],3, FALSE,$erreur,$commentaire)) { $commentaire = "1 pris par défaut"; controle_add_error("RSF", $no_ligne, "Quantité", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["nombre_offset"], $BUF_offsets["nombre_len"]); } // coefficient if (! controle_check_num($BUF_record["coefficient"],0, FALSE,$erreur,$commentaire)) { $commentaire = "1 pris par défaut"; controle_add_error("RSF", $no_ligne, "Coefficient", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["coefficient_offset"], $BUF_offsets["coefficient_len"]); } // prix unitaire if (! controle_check_num($BUF_record["prix_unitaire"],7, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Prix unitaire", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["prix_unitaire_offset"], $BUF_offsets["prix_unitaire_len"]); } // base remboursement if (! controle_check_num($BUF_record["base_remboursement"],8, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Base remboursement", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["base_remboursement_offset"], $BUF_offsets["base_remboursement_len"]); } // coefficient mco if (! controle_check_num($BUF_record["coefficient_mco"],5, FALSE,$erreur,$commentaire)) { $commentaire = "1 pris par défaut"; controle_add_error("RSF", $no_ligne, "Coefficient mco", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["coefficient_mco_offset"], $BUF_offsets["coefficient_mco_len"]); } // taux remboursement if (! controle_check_num($BUF_record["taux"],3, FALSE,$erreur,$commentaire)) { $commentaire = "100 pris par défaut"; controle_add_error("RSF", $no_ligne, "Taux remboursement", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["taux_offset"], $BUF_offsets["taux_len"]); } // sejour facture if (! controle_check_num($BUF_record["montant_total_depense"],8, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Montant facturé", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["montant_total_depense_offset"], $BUF_offsets["montant_total_depense_len"]); } // Montant remboursable if (! controle_check_num($BUF_record["montant_remboursable"],8, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Montant remboursable", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["montant_remboursable_offset"], $BUF_offsets["montant_remboursable_len"]); } } // RSF P (LPP) if ($BUF_record["type_enregistrement"] == "P" && $rss_ok == TRUE) { // Finess if (1 == 2) { if ($BUF_record["finess"] != $ENV_FINESS && $finess_error == FALSE) { $erreur = "Valeur " . $BUF_record["finess"] . " différente de $ENV_FINESS"; $commentaire = "Le fichier est erroné"; controle_add_error("RSF", $no_ligne, "Finess", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["finess_offset"], $BUF_offsets["finess_len"]); $finess_error = TRUE; } } // RSS if (! controle_check_num($BUF_record["no_rss"],0,FALSE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Numéro RSS", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_rss_offset"], $BUF_offsets["no_rss_len"]); } // Date début if (! controle_check_date($BUF_record["date_debut"],$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Date début", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_debut_offset"], $BUF_offsets["date_debut_len"]); } // code LPP if (! check_lpp($BUF_record["code_lpp"], $gravite, $erreur, $commentaire)) { controle_add_error("RSF", $no_ligne, "Code LPP", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["code_lpp_offset"], $BUF_offsets["code_lpp_len"]); } // nombre if (! controle_check_num($BUF_record["nombre"],2, FALSE,$erreur,$commentaire)) { $commentaire = "1 pris par défaut"; controle_add_error("RSF", $no_ligne, "Quantité", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["nombre_offset"], $BUF_offsets["nombre_len"]); } // prix unitaire if (! controle_check_num($BUF_record["prix_unitaire"],7, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Prix unitaire", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["prix_unitaire_offset"], $BUF_offsets["prix_unitaire_len"]); } // montant_facture if (! controle_check_num($BUF_record["montant_facture"],7, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Montant facturé", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["montant_facture_offset"], $BUF_offsets["montant_facture_len"]); } if (get_num($BUF_record["nombre_2"]) > 0) { // code LPP if (! check_lpp($BUF_record["code_lpp_2"], $gravite, $erreur, $commentaire)) { controle_add_error("RSF", $no_ligne, "Code LPP (2)", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["code_lpp_2_offset"], $BUF_offsets["code_lpp_2_len"]); } // nombre if (! controle_check_num($BUF_record["nombre_2"],2, FALSE,$erreur,$commentaire)) { $commentaire = "1 pris par défaut"; controle_add_error("RSF", $no_ligne, "Quantité (2)", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["nombre_2_offset"], $BUF_offsets["nombre_2_len"]); } // prix unitaire if (! controle_check_num($BUF_record["prix_unitaire_2"],7, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Prix unitaire (2)", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["prix_unitaire_2_offset"], $BUF_offsets["prix_unitaire_2_len"]); } // montant_facture if (! controle_check_num($BUF_record["montant_facture_2"],7, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Montant facturé (2)", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["montant_facture_2_offset"], $BUF_offsets["montant_facture_2_len"]); } } } // RSF H (LUCD) if ($BUF_record["type_enregistrement"] == "H" && $rss_ok == TRUE) { // Finess if (1 == 2) { if ($BUF_record["finess"] != $ENV_FINESS && $finess_error == FALSE) { $erreur = "Valeur " . $BUF_record["finess"] . " différente de $ENV_FINESS"; $commentaire = "Le fichier est erroné"; controle_add_error("RSF", $no_ligne, "Finess", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["finess_offset"], $BUF_offsets["finess_len"]); $finess_error = TRUE; } } // RSS if (! controle_check_num($BUF_record["no_rss"],0,FALSE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Numéro RSS", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_rss_offset"], $BUF_offsets["no_rss_len"]); } // Date début if (! controle_check_date($BUF_record["date_debut"],$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Date début", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_debut_offset"], $BUF_offsets["date_debut_len"]); } // code UCD if (! check_ucd($BUF_record["code_ucd"], $gravite, $erreur, $commentaire)) { controle_add_error("RSF", $no_ligne, "Code UCD", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["code_ucd_offset"], $BUF_offsets["code_ucd_len"]); } // nombre if (! controle_check_num($BUF_record["nombre"],3, FALSE,$erreur,$commentaire)) { $commentaire = "1 pris par défaut"; controle_add_error("RSF", $no_ligne, "Quantité", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["nombre_offset"], $BUF_offsets["nombre_len"]); } // prix unitaire achat if (! controle_check_num($BUF_record["prix_unitaire_achat"],7, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Prix unitaire achat", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["prix_unitaire_achat_offset"], $BUF_offsets["prix_unitaire_len"]); } // montant_facture if (! controle_check_num($BUF_record["montant_facture"],7, FALSE,$erreur,$commentaire)) { $commentaire = "0 pris par défaut"; controle_add_error("RSF", $no_ligne, "Montant facturé", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["montant_facture_offset"], $BUF_offsets["montant_facture_len"]); } } // RSF M actes if ($BUF_record["type_enregistrement"] == "M" && $rss_ok == TRUE) { // Finess if (1 == 2) { if ($BUF_record["finess"] != $ENV_FINESS && $finess_error == FALSE) { $erreur = "Valeur " . $BUF_record["finess"] . " différente de $ENV_FINESS"; $commentaire = "Le fichier est erroné"; controle_add_error("RSF", $no_ligne, "Finess", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["finess_offset"], $BUF_offsets["finess_len"]); $finess_error = TRUE; } } // RSS if (! controle_check_num($BUF_record["no_rss"],0,FALSE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Numéro RSS", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_rss_offset"], $BUF_offsets["no_rss_len"]); } // MT if (! controle_check_num($BUF_record["mode_traitement"],2, TRUE,$erreur,$commentaire)) { $commentaire = "Blanc pris par défaut"; controle_add_error("RSF", $no_ligne, "Mode traitement", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["mode_traitement_offset"], $BUF_offsets["mode_traitement_len"]); } // DMT if (! controle_check_num($BUF_record["discpline_prestation"],3, TRUE,$erreur,$commentaire)) { $commentaire = "Blanc pris par défaut"; controle_add_error("RSF", $no_ligne, "discipline prestation", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["discpline_prestation_offset"], $BUF_offsets["discpline_prestation_len"]); } // Date acte if (! controle_check_date($BUF_record["date_acte"],$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Date acte", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_acte_offset"], $BUF_offsets["date_acte_len"]); } // code CCAM if (! check_acte($BUF_record["code_acte"], $gravite, $erreur, $commentaire)) { controle_add_error("RSF", $no_ligne, "Code acte CCAM", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["code_acte_offset"], $BUF_offsets["code_acte_len"]); } // activite if (! controle_check_num($BUF_record["activite_ccam"],1, FALSE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Activité CCAM", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["activite_ccam_offset"], $BUF_offsets["activite_ccam_len"]); } // phase if (! controle_check_num($BUF_record["phase_ccam"],1, FALSE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Phase CCAM", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["phase_ccam_offset"], $BUF_offsets["phase_ccam_len"]); } // Medecin acte if ($file_exists_ACTMED) { $cle = get_numrss($BUF_record["no_rss"]); $cle = $cle . $BUF_record["code_acte"]; $cle = $cle . get_date_AAAAMMJJ($BUF_record["date_acte"]); $cle = $cle . $BUF_record["activite_ccam"]; $code_med = ""; $code_med = $actmed_array[$cle]; if ($code_med == "") { $cle = get_numrss($BUF_record["no_rss"]); $cle = $cle . $BUF_record["code_acte"]; $cle = $cle . "00000000"; $cle = $cle . $BUF_record["activite_ccam"]; $code_med = ""; $code_med = $actmed_array[$cle]; } if ($code_med == "") { if ($type_rss != "SE1" && $type_rss != "SE2" && $type_rss != "SE3" && $type_rss != "SE4" && $type_rss != "SE5" && $type_rss != "SE6" && $type_rss != "SE7" && $type_rss != "FFM" && $type_rss != "ATU" && $type_rss != "APE" && $type_rss != "AP2" && $type_rss != "FPI") { //$erreur = "Association Acte-Exécutant inexistante pour RSS " . $type_rss . " " . $BUF_record["no_rss"] . " acte " . $BUF_offsets["code_acte"] . "-" . $BUF_offsets["activite_ccam"]; //$commentaire = "Blanc pris par défaut"; //controle_add_error("RSF", $no_ligne, "Code acte CCAM", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["code_acte_offset"], $BUF_offsets["code_acte_len"]); } } } } // RSF I if ($BUF_record["type_enregistrement"] == "I" && $rss_ok == TRUE) { // Finess if (1 == 2) { if ($BUF_record["finess"] != $ENV_FINESS && $finess_error == FALSE) { $erreur = "Valeur " . $BUF_record["finess"] . " différente de $ENV_FINESS"; $commentaire = "Le fichier est erroné"; controle_add_error("RSF", $no_ligne, "Finess", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["finess_offset"], $BUF_offsets["finess_len"]); $finess_error = TRUE; } } // RSS if (! controle_check_num($BUF_record["no_rss"],0,FALSE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Numéro RSS", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_rss_offset"], $BUF_offsets["no_rss_len"]); } // Date début if (! controle_check_date($BUF_record["date_debut"],$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Date début", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_debut_offset"], $BUF_offsets["date_debut_len"]); } // Date fin if (! controle_check_date($BUF_record["date_fin"],$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Date fin", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_fin_offset"], $BUF_offsets["date_fin_len"]); } // Finess destination if (! controle_check_num($BUF_record["finess_dest"],0,FALSE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("RSF", $no_ligne, "Finess destination", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["finess_dest_offset"], $BUF_offsets["finess_len"]); $finess_error = TRUE; } } } } } fclose($handle); } } else { controle_add_error("FILE", 0, "", "", "Fichier des RSF absent", 4, "", $nbI, $nbW, $nbE); } $sqlcmd = "UPDATE pmsi.p_imports SET "; $sqlcmd = $sqlcmd . "nb_rsf = $nb_rsf, "; $sqlcmd = $sqlcmd . "nb_erreurs = nb_erreurs + $nbE, nb_avertissements = nb_avertissements + $nbW "; $sqlcmd = $sqlcmd . "WHERE oid = $import_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); logInfoMsg("FIN CONTROLE DES RSF. $nb lus, $nbI informations, $nbW avertissements, $nbE erreurs graves"); } function controle_fichsup() { global $file_TSP; global $file_exists_TSP; global $import_id; logInfoMsg("CONTROLE DE FICHSUP"); $nb = 0; $nbI = 0; $nbW = 0; $nbE = 0; $no_ligne = 0; $nb_tsp = 0; begin_trans(); if ($file_exists_TSP) { $handle = fopen($file_TSP, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 1000000 ) { $nb++; $BUF_record = read_tsp_line($buffer); if ($BUF_record["ok"] === TRUE && $BUF_record["type_fichier"] == "G61") { $BUF_offsets = $BUF_record["BUF_offsets"]; $nb_tsp++; if (! check_prestation($BUF_record["code"], $gravite, $erreur, $commentaire)) { controle_add_error("TSP", $no_ligne, "Code acte", $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["code_offset"], $BUF_offsets["code_len"]); } } } } fclose($handle); } } else { controle_add_error("FILE", 0, "", "", "Fichier FICHSUP transports absent", 1, "", $nbI, $nbW, $nbE); } if ($nbE > 0 || $nbW > 0) { $sqlcmd = " UPDATE pmsi.p_imports SET nb_erreurs = nb_erreurs + $nbE, nb_avertissements = nb_avertissements + $nbW WHERE oid = $import_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW); } commit_trans(); logInfoMsg("FIN CONTROLE CONTROLE DE FICHSUP. $nb lus, $nbI informations, $nbW avertissements, $nbE erreurs graves"); } function controle_fichcomp() { global $import_id; global $file_RSS; global $file_FCP; global $file_exists_RSS; global $file_exists_FCP; $rssadms_array = array(); logInfoMsg("CONTROLE DE FICHCOMP"); $nb = 0; $nbI = 0; $nbW = 0; $nbE = 0; $no_ligne = 0; if ($file_exists_RSS) { $handle = @fopen($file_RSS, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 100000000000) { $nb++; $BUF_record = read_rum_partial_line($buffer); if ($BUF_record["type_enregistrement"] == "RUM") { if (controle_check_num($BUF_record["no_sejour_administratif"],0,FALSE,$erreur,$commentaire)) { $no_rss = get_numrss($BUF_record["no_rss"]); $no_sejour_administratif = get_charAsNum($BUF_record["no_sejour_administratif"]); $rssadms_array[$no_sejour_administratif] = $no_rss; } } } } } } begin_trans(); $no_ligne = 0; $nb_fcp = 0; if ($file_exists_FCP) { $handle = @fopen($file_FCP, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 100000000000 ) { $nb++; $BUF_record = read_fcp_line($buffer); if ($BUF_record["ok"] == TRUE) { $nb_fcp++; $BUF_offsets = $BUF_record["BUF_offsets"]; // Controle si ligne acceptée par GENRSA if (! check_complog_fichcomp($buffer, $gravite, $erreur, $commentaire)) { controle_add_error("FCP", $no_ligne, "Format", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_sejour_administratif_offset"], $BUF_offsets["no_sejour_administratif_len"]); } else { // Autres controles if (! controle_check_num($BUF_record["no_rum"],0,TRUE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("FCP", $no_ligne, "Numéro RUM", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_rum_offset"], $BUF_offsets["no_rum_len"]); } if (! controle_check_date($BUF_record["date_debut"],$erreur,$commentaire)) { $commentaire = ""; controle_add_error("FCP", $no_ligne, "Date debut", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_debut_offset"], $BUF_offsets["date_debut_len"]); } else { if (! controle_check_date($BUF_record["date_fin"],$erreur,$commentaire)) { $commentaire = ""; controle_add_error("FCP", $no_ligne, "Date fin", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["date_fin_offset"], $BUF_offsets["date_fin_len"]); } } if (! controle_check_num($BUF_record["no_sejour_administratif"],0,FALSE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("FCP", $no_ligne, "N° Séjour", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_sejour_administratif_offset"], $BUF_offsets["no_sejour_administratif_len"]); } else { $no_sejour_administratif = get_charAsNum($BUF_record["no_sejour_administratif"]); $no_rss = @$rssadms_array[$no_sejour_administratif]; if (get_numrss($no_rss) == 0) { $erreur = "Pas de RSS trouvé pour le séjour " . $BUF_record["no_sejour_administratif"]; $commentaire = ""; controle_add_error("FCP", $no_ligne, "N° Séjour", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_sejour_administratif_offset"], $BUF_offsets["no_sejour_administratif_len"]); } } if (! controle_check_num($BUF_record["nombre"],0,FALSE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("FCP", $no_ligne, "Nombre", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["nombre_offset"], $BUF_offsets["nombre_len"]); } if (! controle_check_num($BUF_record["montant_paye"],0,FALSE,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("FCP", $no_ligne, "Montant payé", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["montant_paye_offset"], $BUF_offsets["montant_paye_len"]); } if ($BUF_record["type_enregistrement"] == "01"|| $BUF_record["type_enregistrement"] == "06" || $BUF_record["type_enregistrement"] == "09") { if (! check_ucd($BUF_record["code"], $gravite, $erreur, $commentaire)) { controle_add_error("FCP", $no_ligne, "Code UCD" , $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["code_ucd_offset"], $BUF_offsets["code_ucd_len"]); } } if ($BUF_record["type_enregistrement"] == "02") { if (! check_lpp($BUF_record["code"], $gravite, $erreur, $commentaire)) { controle_add_error("FCP", $no_ligne, "Code LPP" , $buffer, $erreur, $gravite, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["code_lpp_offset"], $BUF_offsets["code_lpp_len"]); } } } } } } fclose($handle); } } else { controle_add_error("FILE", 0, "", "", "Fichier FICHCOMP absent", 1, "", $nbI, $nbW, $nbE); } if ($nbE > 0 || $nbW > 0) { $sqlcmd = "UPDATE pmsi.p_imports SET "; $sqlcmd = $sqlcmd . "nb_erreurs = nb_erreurs + $nbE, nb_avertissements = nb_avertissements + $nbW "; $sqlcmd = $sqlcmd . "WHERE oid = $import_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); } commit_trans(); logInfoMsg("FIN CONTROLE CONTROLE DE FICHCOMP. $nb lus, $nbI informations, $nbW avertissements, $nbE erreurs graves"); } /** * Controle du fichier ano dans les OUT * Correspond au vidhosp anonymisé */ function controle_ano_vidhosp() { global $import_id; global $file_ANO; global $file_RSA; global $file_exists_RSA; global $file_exists_ANO; $rsas_array = array(); logInfoMsg("CONTROLE DE ANO (VIDHOSP OUT)"); $nb = 0; $nbI = 0; $nbW = 0; $nbE = 0; begin_trans(); $nb_vidhosp = 0; if (!$file_exists_ANO) { controle_add_error("FILE", 0, "", "", "Fichier ANO (VIDHOSP OUT) absent, génératon ANO impossible", 1, "", $nbI, $nbW, $nbE); } if (!$file_exists_RSA) { controle_add_error("FILE", 0, "", "", "Fichier RSA absent (pour ANO), génératon ANO impossible", 1, "", $nbI, $nbW, $nbE); } if ($file_exists_ANO && $file_exists_RSA) { $handle = @fopen($file_RSA, "r"); if ($handle) { $no_ligne = 0; while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) !== "" && $no_ligne < 100000000000) { $nb++; $BUF_record = read_rsa_line($buffer); if ($BUF_record["type_enregistrement"] === "RSA") { if (controle_check_num($BUF_record["no_rsa"],0,false,$erreur,$commentaire)) { $no_rsa = get_num($BUF_record["no_rsa"]); $rsas_array[$no_rsa] = $no_rsa; } } } } } fclose($handle); $handle = @fopen($file_ANO, "r"); if ($handle) { $no_ligne = 0; while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) !== "" && $no_ligne < 100000000000 ) { $nb++; $BUF_record = read_ano_line($buffer); $BUF_offsets = $BUF_record["BUF_offsets"]; if ($BUF_record["ok"] === true) { $nb_vidhosp++; if ($BUF_record["type_enregistrement"] === "ANO") { if (! controle_check_num($BUF_record["no_rsa"],0,false,$erreur,$commentaire)) { $commentaire = ""; controle_add_error("VID", $no_ligne, "N° RSA", $buffer, $erreur, 4, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_rsa_offset"], $BUF_offsets["no_rsa_len"]); } else { $no_rsa = get_num($BUF_record["no_rsa"]); $no_rsax = @$rsas_array[$no_rsa]; if (get_num($no_rsax) == 0) { $erreur = "Pas de RSA trouvé pour le n° " . $BUF_record["no_rsa"]; $commentaire = ""; controle_add_error("VID", $no_ligne, "N° RSA", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["no_rsa_offset"], $BUF_offsets["no_rsa_len"]); } } $value = $BUF_record["code_pec"]; $valideCodesPec = array("0", "1", "2", "3", "X"); if (!in_array($value, $valideCodesPec)) { $erreur = "Valeur $value incorrecte"; $commentaire = "1 prix par défaut"; controle_add_error("VID", $no_ligne, "Code prise en charge", $buffer, $erreur, 1, $commentaire, $nbI, $nbW, $nbE, $BUF_offsets["code_pec_offset"], $BUF_offsets["code_pec_len"]); } } } } } fclose($handle); } } if ($nbE > 0 || $nbW > 0) { $sqlcmd = << 0 || $nbW > 0) { $sqlcmd = "UPDATE pmsi.p_imports SET "; $sqlcmd = $sqlcmd . "nb_erreurs = nb_erreurs + $nbE, nb_avertissements = nb_avertissements + $nbW "; $sqlcmd = $sqlcmd . "WHERE oid = $import_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rsa ); } commit_trans(); logInfoMsg("FIN CONTROLE DES RSA. $nb lus, $nbI informations, $nbW avertissements, $nbE erreurs graves"); } function controle_check_num($value, $maxLen=0, $facultatif = FALSE, &$error, &$commentaire) { $error = ""; $commentaire = ""; // Trim de la valeur. $valueToCheck = trim($value); // Si valeur facultative et que longueur = 0, pas de contrôle. if ($facultatif == TRUE && strlen($valueToCheck) == 0) { return TRUE; } // Contrôle de la longueur de la chaîne de caractères. if ($maxLen > 0) { // Si longueur max du champ $maxLen > 0 : if (strlen($valueToCheck) == 0 || strlen($valueToCheck) > $maxLen) { // 1 <= longueur du champ <= $maxLen. $error = "Valeur numérique $value incorrecte (longueur $maxLen obligatoire)"; return FALSE; } } // Contrôle de la nature de la chaîne de caractères. if (! is_numeric($valueToCheck) ) { $error = "Valeur $value non numérique"; return FALSE; } return TRUE; } function get_num($value, $defaultValue=0) { if (! is_numeric($value) ) { return $defaultValue; } return $value + 0; } /** Fonction spécifique pour les numéros de RSS afin d'éviter les notations scientifiques générées parfois par la fonction get_num($val, $def) */ function get_numrss($value, $defaultValue=0) { if (! is_numeric($value) ) { return $defaultValue; } $var = ltrim($value, '0'); // vire les leading zeros // retourne 0 si la chaine est vide (= pas de no_rss) if (strlen($var) > 0) { return $var; } else { return 0; } } function get_charAsNum($value, $defaultValue="0") { if (! is_numeric($value) ) { return $defaultValue; } $check = true; while ($check): $check = false; if (strlen($value) > 0) { if (substr($value,0,1) == "0") { $value = trim(substr($value,1)); $check = true; } } endwhile; if ($value == "") { return $defaultValue; } return $value; } function controle_check_date($value, &$error, &$commentaire, $check_possible=false) { $error = ""; $commentaire = ""; $pos = stripos($value, "/"); if ($pos === false) { if (strlen($value) == 7) { $value = "0$value"; } if (strlen($value) != 8) { if (strlen($value) == 6) { // Format AAMMJJ $day = substr($value, 4, 2); $month = substr($value, 2, 2); $year = substr($value, 0, 2);; } else { $error = "Format date $value incorrect"; return FALSE; } } else { $date12 = substr($value, 0, 2); $date34 = substr($value, 2, 2); $date56 = substr($value, 4, 2); $date78 = substr($value, 6, 2); if (get_num($date56) == 0) { $date56 = "20"; } } if (strlen($value) == 6) { // Format AAMMJJ : ne rien faire pour ne pas écraser $day, $month et $year } else if (get_num($date56) <= 12) { $day = $date78; $month = $date56; $year = "$date12$date34"; } else { $day = $date12; $month = $date34; $year = "$date56$date78"; } } else { //enlever heure $value2 = $value; $pos = stripos($value, " "); if ($pos === false) { } else { $value2 = substr($value, 0, $pos); } // décomposer $date_array = split("/", $value2); if (count($date_array) != 3) { $error = "Format date $value incorrect"; return FALSE; } $date1 = $date_array[0]; $date2 = $date_array[1]; $date3 = $date_array[2]; if ($date1 > 1000) { $year = $date1; $month = $date2; $day = $date3; } else { $day = $date1; $month = $date2; $year = $date3; } if ($month < 10 && strlen($month) == 1) { $month = "0$month"; } if ($day < 10 && strlen($day) == 1) { $day = "0$day"; } } // Vérifie ou non si l'année de la date est crédible ou pas if ($check_possible == true && strlen($value) == 6) { if (intval($year) < 1890 || intval($year) > 2100) { $error = "Date $value : année incorrecte"; return FALSE; } } if (! checkdate($month, $day, $year) ) { $error = "Format date $value incorrect"; return FALSE; } return TRUE; } function default_birth_date($value) { $date = "19620418"; if (get_num($value) == 0) { return $date; } $pos = stripos($value, "/"); if ($pos === false) { if (strlen($value) == 8) { $date12 = substr($value, 0, 2); $date34 = substr($value, 2, 2); $date56 = substr($value, 4, 2); $date78 = substr($value, 6, 2); if (get_num($date56) == 0) { $date56 = "20"; } } if (get_num($date56) <= 12) { $day = $date78; $month = $date56; $year = "$date12$date34"; } else { $day = $date12; $month = $date34; $year = "$date56$date78"; } } else { //enlever heure $value2 = $value; $pos = stripos($value, " "); if ($pos === false) { } else { $value2 = substr($value, 0, $pos); } // décomposer $date_array = split("/", $value2); if (count($date_array) == 3) { $date1 = $date_array[0]; $date2 = $date_array[1]; $date3 = $date_array[2]; if ($date1 > 1000) { $year = $date1; $month = $date2; $day = $date3; } else { $day = $date1; $month = $date2; $year = $date3; } if ($month < 10 && strlen($month) == 1) { $month = "0$month"; } if ($day < 10 && strlen($day) == 1) { $day = "0$day"; } } } if (!checkdate($month, $day, $year) ) { if ($year >= 1900 && $year <= 2015) { $month = "04"; $day = "18"; } else { $year = "1962"; $month = "04"; $day = "18"; } } else { if ($year < 1900 || $year > 2050) { $year = "1962"; $month = "04"; $day = "18"; } } $date = "$year$month$day"; return $date; } function get_date_or_null($value) { $date = get_date_AAAAMMJJ($value); return ($date != "" AND $date != '00000000') ? "'" . $date . "'::date" : "null"; } function get_date_AAAAMMJJ($value) { $date = "00010101"; if (! is_numeric($value) ) { return $date; } $date12 = substr($date, 0, 2); $date34 = substr($date, 2, 2); $date56 = substr($date, 4, 2); $date78 = substr($date, 6, 2); $pos = stripos($value, "/"); if ($pos === false) { if (strlen($value) == 7) { $value = "0$value"; } if (strlen($value) != 8) { } else { $date12 = substr($value, 0, 2); $date34 = substr($value, 2, 2); $date56 = substr($value, 4, 2); $date78 = substr($value, 6, 2); if (get_num($date56) == 0) { $date56 = "20"; } } if (get_num($date56) <= 12) { $day = $date78; $month = $date56; $year = "$date12$date34"; } else { $day = $date12; $month = $date34; $year = "$date56$date78"; } if(intval($month) > 12 || intval($month) <= 0 || intval($day) > 31 || intval($day) <= 0 ) { $date = ""; } else { $date = $year . $month . $day; } } else { //enlever heure $value2 = $value; $pos = stripos($value, " "); if ($pos === false) { } else { $value2 = substr($value, 0, $pos); } // décomposer $date_array = split("/", $value2); if (count($date_array) != 3) { $error = "Format date $value incorrect"; return FALSE; } $date1 = $date_array[0]; $date2 = $date_array[1]; $date3 = $date_array[2]; if ($date1 > 1000) { $year = $date1; $month = $date2; $day = $date3; } else { $day = $date1; $month = $date2; $year = $date3; } if ($month < 10 && strlen($month) == 1) { $month = "0$month"; } if ($day < 10 && strlen($day) == 1) { $day = "0$day"; } $date = $year . $month . $day; } return $date; } function controle_add_error($data_type, $no_ligne, $champ, $ligne, $erreur, $gravite, $commentaire, &$nbI, &$nbW, &$nbE, $offset=0, $len=0) { global $import_id; $offset = get_num($offset); $len = get_num($len); if ($gravite > 0) { $champSQL = toSQL($champ); $ligneSQL = toSQL(substr($ligne,0,10000)); $erreurSQL = toSQL($erreur); $commentaireSQL = toSQL($commentaire); $sqlcmd = "INSERT INTO pmsi.p_imports_controles( "; $sqlcmd = $sqlcmd . "import_id, "; $sqlcmd = $sqlcmd . "data_type, "; $sqlcmd = $sqlcmd . "no_ligne, "; $sqlcmd = $sqlcmd . "champ, "; $sqlcmd = $sqlcmd . "ligne, "; $sqlcmd = $sqlcmd . "erreur, "; $sqlcmd = $sqlcmd . "commentaire, "; $sqlcmd = $sqlcmd . "gravite, "; $sqlcmd = $sqlcmd . "position, "; $sqlcmd = $sqlcmd . "longueur "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "$import_id, "; $sqlcmd = $sqlcmd . "'$data_type', "; $sqlcmd = $sqlcmd . "$no_ligne, "; $sqlcmd = $sqlcmd . "'$champSQL', "; $sqlcmd = $sqlcmd . "'$ligneSQL', "; $sqlcmd = $sqlcmd . "'$erreurSQL', "; $sqlcmd = $sqlcmd . "'$commentaireSQL', "; $sqlcmd = $sqlcmd . "$gravite, "; $sqlcmd = $sqlcmd . "$offset, "; $sqlcmd = $sqlcmd . "$len "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE ); $grav = "INFO"; if ($gravite >= 4) { $grav = "ERROR"; $nbE++; } else { if ($gravite > 0) { $grav = "WARNING"; $nbW++; } else { $nbI++; } } if ($data_type != "EXEC") { $message = "Ligne $data_type $no_ligne : $champ (gravité $gravite) - $erreur - $commentaire"; } else { $message = "Exécution (gravité $gravite) - $erreur - $commentaire"; } switch ($grav) { case "INFO": logInfoMsg($message); break; case "ERROR": logErrorMsg($message); break; case "WARNING": logWarnMsg($message); break; } } } // Traitement d'un import function generation() { global $ENV_TYPEETS; global $import_id; global $file_exists_RSF; global $file_exists_FCP; global $file_exists_TSP; logInfoMsg("GENERATION N° $import_id"); restauration_fichiers(); restauration_donnees_complementaires(); // SUPPR generation_initialisation(); generation_initialisation_parametres(); generation_ium(); generation_med(); // SUPPR generation_rum(); //if ($ENV_TYPEETS != "1") { generation_rsa(); //} if ($ENV_TYPEETS == "1") { generation_rsf_sans_rss(); generation_rsf(); } if ($ENV_TYPEETS != "1" ) { if ($file_exists_RSF) { generation_rsf_sans_rss(); generation_rsf(); } } generation_rum_post_traitements() ; if ($file_exists_FCP == true) { generation_fichcomp(); } if ($file_exists_TSP == true) { generation_fichsup(); } if ($ENV_TYPEETS != "1") { generation_ano_vidhosp(); generation_ctl(); valorisation_public(); } // Lecture des séjours non pris en compte dans la valorisation hors ATU, FFM, FSD, VDE et SE. generation_npec_valorisation(); generation_rsf_post_traitements() ; // Validation des données générées generation_validation_tables() ; // Traitements sur toute la base generation_traitements_finaux() ; generation_validation(); suppression_fichiers(); logInfoMsg("FIN GENERATION N° $import_id"); } /** * Lit le fichier *.val.err.txt du RSS.out.zip et le charge dans l'array $val_array. * */ function generation_npec_valorisation() { global $file_VAL; global $file_exists_VAL; global $val_array; $val_array = array(); if ($file_exists_VAL) { logInfoMsg("LECTURE SEJOURS NON PRIS EN COMPTE"); $no_ligne = 0; $startReading = false; $handle = fopen($file_VAL, "r"); if ($handle) { while (!feof($handle)) { $no_ligne++; $buffer = fgets($handle, 99999); if ($no_ligne < 100000000000) { if (trim($buffer) == 'NUMTEST;NUMRSS;NUMADMIN;GHM') { $startReading = true; } else { if (strpos($buffer, ';') !== false) { if ($startReading) { $val_array[] = explode(';', str_replace('"', '', $buffer)); } } else { $startReading = false; } } } } } fclose($handle); logInfoMsg("FIN LECTURE SEJOURS NON PRIS EN COMPTE"); } } // Traitement d'un import function generations_fin() { global $iCTI_connexion; global $iCTI_cache; global $omitEssentiels; global $ENV_OPTIMISATIONS_VUES_MATERIALISEES; echo PHP_EOL; vacuum_tables(); set_oids(); //analyse_all_tables(); // Purge des imports $toResult = execute_sql("SELECT pmsi.cti_purge_import()", $nbE, $nbW ); commit_trans(); // Lancement du calcul des indicateurs Essentiels if ($omitEssentiels === false) { logInfoMsg("CALCUL DES INDICATEURS ESSENTIELS MCO"); $exe = __ROOT__ . '/modules/outils/dashboard/iCTI_aggregateCtiIndicators'; if (OperatingSystem::isWindows()){ $exe .= '.exe'; $submitCmd = "$exe -m pmsi -e"; } else { $exe .= '.php'; $submitCmd = "php $exe -m pmsi -e"; } if (file_exists($exe)) { exec($submitCmd); } else { logErrorMsg("La fonction de calcul des essentiels MCO est absente"); } } else { logInfoMsg("Omission du calcul des Essentiels"); } if ($ENV_OPTIMISATIONS_VUES_MATERIALISEES == '1') { logInfoMsg("Performance et optimisations. Rafraichissement des vues matérialisées."); $toResult = execute_sql("SELECT pmsi.cti_rafraichir_vues_materialisees()", $nbE, $nbW); } // retraitement du cache (ancienne version) if ($iCTI_cache == "true") { logInfoMsg("RECONSTITUTION DU CACHE"); $result = $iCTI_connexion->query("SELECT cti_cache_reload as log from cache.cti_cache_reload('iCTI_pmsi', true)"); $record = pg_fetch_array($result); if ($record != FALSE) { $log = trim($record["log"]); } logInfoMsg("FIN RECONSTITUTION DU CACHE ($log)"); } // retraitement du cache (nouvelle version) logInfoMsg("Nettoyage cache"); cleanAllCache("iCTI_pmsi"); echo PHP_EOL; } function restauration_fichiers() { global $iCTI_connexion; global $ENV_TYPEETS; global $import_id; global $file_RSS; global $file_RSF; global $file_FCP; global $file_ANO; global $file_RSA; global $file_CTL; global $file_TRA; global $file_VAL; global $file_LEG; global $file_IUM; global $file_VSJ; global $file_VSE; global $file_TSP; global $file_exists_RSS; global $file_exists_RSF; global $file_exists_FCP; global $file_exists_ANO; global $file_exists_RSA; global $file_exists_CTL; global $file_exists_TRA; global $file_exists_VAL; global $file_exists_LEG; global $file_exists_IUM; global $file_exists_VSJ; global $file_exists_VSE; global $file_exists_TSP; logInfoMsg("RESTAURATION FICHIERS"); // Creation tables copie directe en table $sqlcmd = "DROP TABLE IF EXISTS w_out_diap; CREATE TEMP TABLE w_out_diap (data text);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS w_out_porg; CREATE TEMP TABLE w_out_porg (data text);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS w_out_pie; CREATE TEMP TABLE w_out_pie (data text);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS w_out_complog; CREATE TEMP TABLE w_out_complog (data text);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Creation fichiers de travail $file_RSS = temp_file(); $file_RSF = temp_file(); $file_FCP = temp_file(); $file_ANO = temp_file(); $file_RSA = temp_file(); $file_CTL = temp_file(); $file_TRA = temp_file(); $file_VAL = temp_file(); $file_LEG = temp_file(); $file_IUM = temp_file(); $file_VSJ = temp_file(); $file_VSE = temp_file(); $file_TSP = temp_file(); $file_DIAP = temp_file(); $file_PORG = temp_file(); $file_PIE = temp_file(); $file_COMPLOG = temp_file(); $file_ZIN = temp_file(); $file_ZOU = temp_file(); $file_ZIF = temp_file(); @unlink($file_RSS); @unlink($file_RSF); @unlink($file_FCP); @unlink($file_ANO); @unlink($file_RSA); @unlink($file_CTL); @unlink($file_TRA); @unlink($file_VAL); @unlink($file_LEG); @unlink($file_IUM); @unlink($file_VSJ); @unlink($file_VSE); @unlink($file_TSP); @unlink($file_DIAP); @unlink($file_PORG); @unlink($file_PIE); @unlink($file_COMPLOG); // restauration IN et out.zip @unlink($file_ZIN); @unlink($file_ZOU); @unlink($file_ZIF); $result = $iCTI_connexion->query("SELECT data_type, data FROM pmsi.p_imports_data WHERE import_id = $import_id AND data_type IN ('ZIN' , 'ZOU', 'ZIF') ORDER by data_num "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $data_type = trim($record["data_type"]); $data = $record["data"]; if ($data_type == "ZIN") { $handle = fopen($file_ZIN, 'a'); fwrite($handle, uncompress(pg_unescape_bytea($data))); fclose($handle); } if ($data_type == "ZOU") { $handle = fopen($file_ZOU, 'a'); fwrite($handle, uncompress(pg_unescape_bytea($data))); fclose($handle); } if ($data_type == "ZIF") { $handle = fopen($file_ZIF, 'a'); fwrite($handle, uncompress(pg_unescape_bytea($data))); fclose($handle); } } } // Si fichier IN.ZIP, decompression if (file_exists($file_ZIN)) { logInfoMsg("Fichier RSS IN.ZIP restauré, décompression"); // Druide a fait une mise à jour, dans certains cas, seul les fichiers rss.ini sont présent // Si seul les .ini sont présent, on récupère ceux là // Sinon on utilise les rss.txt $zipIni = zip_open(realpath($file_ZIN)); $rssIniOnly = true; $rsfIniOnly = true; while ($file = zip_read($zipIni)) { $filenameIni = zip_entry_name($file); if (stripos($filenameIni, "rss.txt") > -1 ){ $rssIniOnly = false; } if (stripos($filenameIni, "rsf.txt") > -1 ){ $rsfIniOnly = false; } } zip_close($zipIni); $zip = zip_open(realpath($file_ZIN)); if ($zip) { while ($zip_entry = zip_read($zip)) { if (zip_entry_open($zip, $zip_entry)) { $filename = trim(zip_entry_name($zip_entry)); $filesuffix = substr($filename, strlen($filename) - 7 , 7); $filesuffix2 = substr($filename, strlen($filename) - 10 , 10); $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); $buf = str_replace("\r\n", "\n", $buf); if ($filesuffix == "rss.txt" || ($rssIniOnly === true && stripos($filename, "rss.ini.txt") > -1)) { file_put_contents($file_RSS, $buf); logInfoMsg("Fichier $filename décompressé"); } if ($filesuffix == "rsf.txt" || ($rsfIniOnly === true && stripos($filename, "rsf.ini.txt") > -1)) { file_put_contents($file_RSF, $buf); logInfoMsg("Fichier $filename décompressé"); } if ($filesuffix == "dmi.txt") { file_put_contents($file_FCP, "\n$buf", FILE_APPEND ); logInfoMsg("Fichier $filename décompressé"); } if ($filesuffix == "med.txt") { file_put_contents($file_FCP, "\n$buf", FILE_APPEND ); logInfoMsg("Fichier $filename décompressé"); } if ($filesuffix2 == "medatu.txt" || search_fichcomp_atu($buf) === true) { file_put_contents($file_FCP, "\n$buf", FILE_APPEND ); logInfoMsg("Fichier $filename décompressé"); if ($filesuffix2 != "medatu.txt") { echo " (FICHCOMP Médicaments ATU)";} } if ($filesuffix2 == "transp.txt") { file_put_contents($file_FCP, "\n$buf", FILE_APPEND ); logInfoMsg("Fichier $filename décompressé"); } if ($filesuffix == "ium.txt") { file_put_contents($file_IUM, $buf); logInfoMsg("Fichier $filename décompressé"); } zip_entry_close($zip_entry); } } zip_close($zip); } @unlink($file_ZIN); } if (file_exists($file_ZOU)) { logInfoMsg("Fichier RSS OUT.ZIP restauré, décompression"); $zip = @zip_open(realpath($file_ZOU)); if ($zip) { while ($zip_entry = zip_read($zip)) { if (zip_entry_open($zip, $zip_entry, "r")) { $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); $file_name = trim(zip_entry_name($zip_entry)); $filename = zip_entry_name($zip_entry); $filesuffix = substr($filename, strlen($filename) - 4 , 4); $filesuffix2 = substr($filename, strlen($filename) - 8 , 8); $filesuffix3 = substr($filename, strlen($filename) - 5 , 5); $filesuffix4 = substr($filename, strlen($filename) - 13 , 13); $filesuffix5 = strtolower(substr($filename, strlen($filename) - 12 , 12)); if ($filesuffix == ".rsa") { file_put_contents($file_RSA, $buf); logInfoMsg("Fichier $filename décompressé"); } if ($filesuffix == ".ano") { file_put_contents($file_ANO, $buf); logInfoMsg("Fichier $filename décompressé"); } if ($filesuffix == ".leg") { file_put_contents($file_LEG, $buf); logInfoMsg("Fichier $filename décompressé"); } if ($filesuffix2 == ".tra.txt") { file_put_contents($file_TRA, $buf); logInfoMsg("Fichier $filename décompressé"); } if ($file_name == "ctl_mt2a.detail.log.csv") { file_put_contents($file_CTL, $buf); logInfoMsg("Fichier $filename décompressé"); } if (strpos($filename, ".val.err.txt") !== false) { file_put_contents($file_VAL, $buf); logInfoMsg("Fichier $filename décompressé"); } // Pour fichier DIAP, copie directe dans une table if ($filesuffix3 == ".diap") { file_put_contents($file_DIAP, $buf); $pg_file = str_replace("\\","/",realpath($file_DIAP)); $sqlcmd = "COPY w_out_diap FROM '$pg_file' WITH DELIMITER AS E'\01';"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); logInfoMsg("Fichier $filename décompressé"); } // Pour fichier PORG, copie directe dans une table if ($filesuffix3 == ".porg") { file_put_contents($file_PORG, $buf); $pg_file = str_replace("\\","/",realpath($file_PORG)); $sqlcmd = "COPY w_out_porg FROM '$pg_file' WITH DELIMITER AS E'\01';"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); logInfoMsg("Fichier $filename décompressé"); } // Pour fichier PIE, copie directe dans une table if ($filesuffix == ".pie") { file_put_contents($file_PIE, $buf); $pg_file = str_replace("\\","/",realpath($file_PIE)); $sqlcmd = "COPY w_out_pie FROM '$pg_file' WITH DELIMITER AS E'\01';"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); logInfoMsg("Fichier $filename décompressé"); } // Pour fichier COMP.LOG.TXT, copie directe dans une table if ($filesuffix4 == ".comp.log.txt" || $filesuffix5 == ".atu.err.txt") { file_put_contents($file_COMPLOG, $buf); $pg_file = str_replace("\\","/",realpath($file_COMPLOG)); $sqlcmd = "COPY w_out_complog FROM '$pg_file' WITH DELIMITER AS E'\01';"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); logInfoMsg("Fichier $filename décompressé"); } zip_entry_close($zip_entry); } } zip_close($zip); } @unlink($file_ZOU); } // Si fichier RSF IN.ZIP, decompression if (file_exists($file_ZIF)) { logInfoMsg("Fichier RSF IN.ZIP restauré, décompression"); $qrsfini = FALSE; $zip = @zip_open(realpath($file_ZIF)); if ($zip) { while ($zip_entry = zip_read($zip)) { if (zip_entry_open($zip, $zip_entry)) { $filename = trim(zip_entry_name($zip_entry)); $filesuffix = substr($filename, strlen($filename) - 7 , 7); $filesuffix2 = substr($filename, strlen($filename) - 11 , 11); if ($filesuffix == "rsf.txt" && $qrsfini == FALSE) { $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); file_put_contents($file_RSF, $buf); logInfoMsg("Fichier $filename décompressé"); } if ($filesuffix2 == "rsf.ini.txt") { $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); file_put_contents($file_RSF, $buf); logInfoMsg("Fichier $filename décompressé"); $qrsfini = TRUE; } zip_entry_close($zip_entry); } } zip_close($zip); } @unlink($file_ZIF); } // Restauration autres fichiers $result = $iCTI_connexion->query("SELECT data_type, data FROM pmsi.p_imports_data WHERE import_id = $import_id AND data_type NOT IN ('ZIN' , 'ZOU') ORDER by data_num "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $data_type = trim($record["data_type"]); $data = $record["data"]; if ($data_type == "RSS") { $handle = fopen($file_RSS, 'a'); fwrite($handle, uncompress(pg_unescape_bytea($data))); fclose($handle); } if ($data_type == "RSF") { $handle = fopen($file_RSF, 'a'); fwrite($handle, uncompress(pg_unescape_bytea($data))); fclose($handle); } if ($data_type == "FCP") { $handle = fopen($file_FCP, 'a'); fwrite($handle, uncompress(pg_unescape_bytea($data))); fclose($handle); } if ($data_type == "RSA") { $handle = fopen($file_RSA, 'a'); fwrite($handle, uncompress(pg_unescape_bytea($data))); fclose($handle); } if ($data_type == "VSJ") { $handle = fopen($file_VSJ, 'a'); fwrite($handle, uncompress(pg_unescape_bytea($data))); fclose($handle); } if ($data_type == "VSE") { $handle = fopen($file_VSE, 'a'); fwrite($handle, uncompress(pg_unescape_bytea($data))); fclose($handle); } if ($data_type == "TSP") { $handle = fopen($file_TSP, 'a'); fwrite($handle, uncompress(pg_unescape_bytea($data))); fclose($handle); } } } $file_exists_RSS = false; $file_exists_RSF = false; $file_exists_FCP = false; $file_exists_ANO = false; $file_exists_RSA = false; $file_exists_CTL = false; $file_exists_TRA = false; $file_exists_VAL = false; $file_exists_LEG = false; $file_exists_IUM = false; $file_exists_VSJ = false; $file_exists_VSE = false; $file_exists_TSP = false; if (file_exists($file_RSS)) { logInfoMsg("Fichier RSS restauré"); $file_exists_RSS = true; } if (file_exists($file_RSF)) { logInfoMsg("Fichier RSF restauré"); $file_exists_RSF = true; } if (file_exists($file_FCP)) { logInfoMsg("Fichier FICHCOMP restauré"); $file_exists_FCP = true; } if (file_exists($file_ANO)) { logInfoMsg("Fichier VIDHOSP ANO restauré"); $file_exists_ANO = true; } if (file_exists($file_RSA)) { logInfoMsg("Fichier RSA restauré"); $file_exists_RSA = true; } if (file_exists($file_CTL)) { logInfoMsg("Fichier CTLM2T2 restauré"); $file_exists_CTL = true; } else { if ($ENV_TYPEETS == "2" || $ENV_TYPEETS == "3") { controle_add_error("FILE", 0, "", "", "Fichier de contrôle de la valorisation des séjours absent (ctl_mt2a)", 1, "", $nbI, $nbW, $nbE); }; } if (file_exists($file_TRA)) { logInfoMsg("Fichier TRA restauré"); $file_exists_TRA = true; } if (file_exists($file_VAL)) { logInfoMsg("Fichier VAL restauré"); $file_exists_VAL = true; } if (file_exists($file_LEG)) { logInfoMsg("Fichier LEG restauré"); $file_exists_LEG = true; } if (file_exists($file_IUM)) { logInfoMsg("Fichier des Unités médicales restauré"); $file_exists_IUM = true; } if (file_exists($file_VSJ)) { logInfoMsg("Fichier de valorisation des séjours restauré"); if (filesize($file_VSJ) > 2000) { $file_exists_VSJ = true; } else { controle_add_error("FILE", 0, "", "", "Taille du fichier de valorisation des séjours inférieure à 2000. Le fichier ne sera pas traité", 0, "", $nbI, $nbW, $nbE); } } if (file_exists($file_VSE)) { logInfoMsg("Fichier de valorisation des ACE restauré"); if (filesize($file_VSE) > 2000) { $file_exists_VSE = true; } else { controle_add_error("FILE", 0, "", "", "Taille du fichier de valorisation des ACE inférieure à 2000. Le fichier ne sera pas traité", 0, "", $nbI, $nbW, $nbE); } } if (file_exists($file_TSP)) { logInfoMsg("Fichier FICHSUP transports restauré"); $file_exists_TSP = true; } if ($ENV_TYPEETS == "2" || $ENV_TYPEETS == "3") { if ($file_exists_VSJ == false) { controle_add_error("FILE", 0, "", "", "Fichier de valorisation des séjours absent ou incorrect", 4, "", $nbI, $nbW, $nbE); } if ($file_exists_VSE == false) { controle_add_error("FILE", 0, "", "", "Fichier de valorisation des ACE absent ou incorrect", 4, "", $nbI, $nbW, $nbE); } }; logInfoMsg("FIN RESTAURATION FICHIERS"); } /** * Fonction qui lit la première ligne d'un fichier et tente d'identifier un fichier de type fichcomp ATU */ function search_fichcomp_atu($content) { $found = false; $sub_content = substr($content, 0, 200); $lines = explode(PHP_EOL, $sub_content); $first_line = rtrim($lines[0], "\r\n"); // Détection du format FICHCOMP en vigueur au 01 mars 2016 // On vérifie la longueur de l'enregistrement, la présence au bon endroit du type d'enregistrement 09 et la présente au bon endroit d'une date au format DDMMYYYY if ( strlen($first_line) == 105 && substr($first_line, 9, 2) == '09' && checkdate(intval(substr($first_line, 33, 2)), intval(substr($first_line, 31, 2)), intval(substr($first_line, 35,4))) == true ) { $found = true; } unset($lines); return $found; } function restauration_donnees_complementaires() { global $iCTI_connexion; global $import_id; global $file_MED; global $file_RSSMED; global $file_RSSNOM; global $file_ACTMED; global $file_exists_MED; global $file_exists_RSSMED; global $file_exists_RSSNOM; global $file_exists_ACTMED; logInfoMsg("RESTAURATION DONNEES COMPLEMENTAIRES"); $file_MED = temp_file(); $file_RSSMED = temp_file(); $file_RSSNOM = temp_file(); $file_ACTMED = temp_file(); @unlink($file_MED); @unlink($file_RSSMED); @unlink($file_RSSNOM); @unlink($file_ACTMED); // Restauration autres fichiers $result = $iCTI_connexion->query("SELECT data_type, data FROM pmsi.p_imports_data WHERE import_id = $import_id AND data_type IN ('MED' , 'RSSNOM', 'RSSMED', 'ACTMED') ORDER by data_num "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $data_type = trim($record["data_type"]); $data = $record["data"]; if ($data_type == "MED") { $handle = fopen($file_MED, 'a'); fwrite($handle, uncompress(pg_unescape_bytea($data))); fclose($handle); } if ($data_type == "RSSMED") { $handle = fopen($file_RSSMED, 'a'); fwrite($handle, uncompress(pg_unescape_bytea($data))); fclose($handle); } if ($data_type == "RSSNOM") { $handle = fopen($file_RSSNOM, 'a'); fwrite($handle, uncompress(pg_unescape_bytea($data))); fclose($handle); } if ($data_type == "ACTMED") { $handle = fopen($file_ACTMED, 'a'); fwrite($handle, uncompress(pg_unescape_bytea($data))); fclose($handle); } } } $file_exists_MED = false; $file_exists_RSSMED = false; $file_exists_RSSNOM = false; $file_exists_ACTMED = false; if (file_exists($file_MED)) { logInfoMsg("Fichier Médecins restauré"); $file_exists_MED = true; } if (file_exists($file_RSSMED)) { logInfoMsg("Fichier correspondance RSS - Médecins restauré"); $file_exists_RSSMED = true; } if (file_exists($file_RSSNOM)) { logInfoMsg("Fichier correspondance RSS - Noms restauré"); $file_exists_RSSNOM = true; } if (file_exists($file_ACTMED)) { logInfoMsg("Fichier correspondance Actes - Médecins restauré"); $file_exists_ACTMED = true; } logInfoMsg("FIN RESTAURATION DONNEES COMPLEMENTAIRES"); } function suppression_fichiers() { global $file_MED; global $file_RSSMED; global $file_RSSNOM; global $file_ACTMED; global $file_RSS; global $file_RSF; global $file_FCP; global $file_ANO; global $file_RSA; global $file_CTL; global $file_TRA; global $file_LEG; global $file_VSJ; global $file_VSE; global $file_IUM; global $file_PIE; global $file_VAL; global $file_PORG; global $file_DIAP; global $file_COMPLOG; global $file_TSP; logInfoMsg("SUPPRESSION FICHIERS DE TRAVAIL"); @unlink($file_RSS); @unlink($file_RSF); @unlink($file_FCP); @unlink($file_ANO); @unlink($file_RSA); @unlink($file_CTL); @unlink($file_TRA); @unlink($file_LEG); @unlink($file_MED); @unlink($file_RSSMED); @unlink($file_RSSNOM); @unlink($file_ACTMED); @unlink($file_COMPLOG); @unlink($file_IUM); @unlink($file_PIE); @unlink($file_VAL); @unlink($file_PORG); @unlink($file_DIAP); @unlink($file_VSJ); @unlink($file_VSE); @unlink($file_TSP); logInfoMsg("FIN FICHIERS DE TRAVAIL"); } function temp_file() { $temp_file = tempnam("../../../temp/", "PMSI"); file_put_contents($temp_file, ""); return $temp_file; } function generation_initialisation() { global $iCTI_connexion; global $import_id; global $annee_fin; global $annee_mois_fin; global $file_RSS; logInfoMsg("INITIALISATION GENERATION"); $nb = 0; $nbW = 0; $nbW = 0; $nbE = 0; begin_trans(); $sqlcmd = "UPDATE pmsi.p_imports SET "; $sqlcmd = $sqlcmd . "etat_en_cours = 'G' "; $sqlcmd = $sqlcmd . "WHERE oid = $import_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); // Période RSS $result = $iCTI_connexion->query("select date_debut, date_fin FROM pmsi.p_imports WHERE oid = $import_id"); $record = pg_fetch_array($result); if ($record != FALSE) { $date_debut = $record["date_debut"]; $date_fin = $record["date_fin"]; } $annee_fin = substr($date_fin , 0 , 4); $annee_mois_fin = date('Ym', strtotime($date_fin)); logInfoMsg("Période de sortie du $date_debut au $date_fin"); logInfoMsg("Tables de travail"); $sqlcmd = "DROP TABLE IF EXISTS temp.p_identites; SELECT base.cti_create_table_from('temp', 'p_identites', 'pmsi', ''); CREATE INDEX i_identites_1 ON temp.p_identites USING btree (rss_id); CREATE INDEX i_identites_2 ON temp.p_identites USING btree (no_rss);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_rss; SELECT base.cti_create_table_from('temp', 'p_rss', 'pmsi', ''); CREATE INDEX i_rss_1 ON temp.p_rss USING btree (oid); CREATE INDEX i_rss_2 ON temp.p_rss USING btree (no_rss); CREATE INDEX i_rss_3 ON temp.p_rss USING btree (no_sejour_administratif); CREATE INDEX i_rss_4 ON temp.p_rss USING btree (ghm_id);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_rss_rum; SELECT base.cti_create_table_from('temp', 'p_rss_rum', 'pmsi', ''); CREATE INDEX i_rss_rum_1 ON temp.p_rss_rum USING btree (rss_id); CREATE INDEX i_rss_rum_2 ON temp.p_rss_rum USING btree (no_rss);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_rss_actes; SELECT base.cti_create_table_from('temp', 'p_rss_actes', 'pmsi', ''); CREATE INDEX i_rss_actes_1 ON temp.p_rss_actes USING btree (rss_id); CREATE INDEX i_rss_actes_2 ON temp.p_rss_actes USING btree (acte_id); CREATE INDEX i_rss_actes_3 ON temp.p_rss_actes USING btree (medecin_id); CREATE INDEX i_rss_actes_4 ON temp.p_rss_actes USING btree (no_rss);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_rss_diagnostics; SELECT base.cti_create_table_from('temp', 'p_rss_diagnostics', 'pmsi', ''); CREATE INDEX i_rss_diagnostics_1 ON temp.p_rss_diagnostics USING btree (rss_id); CREATE INDEX i_rss_diagnostics_2 ON temp.p_rss_diagnostics USING btree (diagnostic_id); CREATE INDEX i_rss_diagnostics_3 ON temp.p_rss_diagnostics USING btree (no_rss);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_rss_lpp; SELECT base.cti_create_table_from('temp', 'p_rss_lpp', 'pmsi', ''); CREATE INDEX i_rss_lpp_1 ON temp.p_rss_lpp USING btree (rss_id); CREATE INDEX i_rss_lpp_2 ON temp.p_rss_lpp USING btree (no_rss);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_lpp ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_rss_ucd; SELECT base.cti_create_table_from('temp', 'p_rss_ucd', 'pmsi', ''); CREATE INDEX i_rss_ucd_1 ON temp.p_rss_ucd USING btree (rss_id); CREATE INDEX i_rss_ucd_2 ON temp.p_rss_ucd USING btree (no_rss);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_ucd ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_rss_leg; SELECT base.cti_create_table_from('temp', 'p_rss_leg', 'pmsi', ''); CREATE INDEX i_rss_leg_1 ON temp.p_rss_leg USING btree (rss_id);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_leg ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_rss_maternite; SELECT base.cti_create_table_from('temp', 'p_rss_maternite', 'pmsi', ''); CREATE INDEX i_rss_maternite_1 ON temp.p_rss_maternite USING btree (rss_id);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_ctl_mt2a; SELECT base.cti_create_table_from('temp', 'p_ctl_mt2a', 'pmsi', ''); CREATE INDEX i_ctl_mt2a_1 ON temp.p_ctl_mt2a USING btree (rss_id); CREATE INDEX i_ctl_mt2a_2 ON temp.p_ctl_mt2a USING btree (no_rss);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_leg ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_vidhosp; SELECT base.cti_create_table_from('temp', 'p_vidhosp', 'pmsi', ''); CREATE INDEX i_vidhosp_1 ON temp.p_vidhosp USING btree (rss_id);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_leg ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_vidhosp_crc; SELECT base.cti_create_table_from('temp', 'p_vidhosp_crc', 'pmsi', ''); CREATE INDEX i_vidhosp_crc_1 ON temp.p_vidhosp_crc USING btree (rss_id);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_leg ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_vidhosp_dmt; SELECT base.cti_create_table_from('temp', 'p_vidhosp_dmt', 'pmsi', ''); CREATE INDEX i_vidhosp_dmt_1 ON temp.p_vidhosp_dmt USING btree (rss_id);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_leg ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_vidhosp_dmt_crc; SELECT base.cti_create_table_from('temp', 'p_vidhosp_dmt_crc', 'pmsi', ''); CREATE INDEX i_vidhosp_dmt_crc_1 ON temp.p_vidhosp_dmt_crc USING btree (rss_id);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_leg ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_rsa; SELECT base.cti_create_table_from('temp', 'p_rsa', 'pmsi', ''); CREATE INDEX i_rsa_1 ON temp.p_rsa USING btree (rss_id); CREATE INDEX i_rsa_2 ON temp.p_rsa USING btree (no_rss);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_leg ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_rsa_rdth; SELECT base.cti_create_table_from('temp', 'p_rsa_rdth', 'pmsi', ''); CREATE INDEX i_rsa_rdth_1 ON temp.p_rsa_rdth USING btree (rss_id); CREATE INDEX i_rsa_rdth_2 ON temp.p_rsa_rdth USING btree (ghs_id);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_leg ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_rsf_total; SELECT base.cti_create_table_from('temp', 'p_rsf_total', 'pmsi', ''); CREATE INDEX i_rsf_total_1 ON temp.p_rsf_total USING btree (rss_id); CREATE INDEX i_rsf_total_2 ON temp.p_rsf_total USING btree (no_rss)"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_rsf_detail; SELECT base.cti_create_table_from('temp', 'p_rsf_detail', 'pmsi', ''); CREATE INDEX i_rsf_detail_1 ON temp.p_rsf_detail USING btree (rss_id); CREATE INDEX i_rsf_detail_2 ON temp.p_rsf_detail USING btree (prestation_id); CREATE INDEX i_rsf_detail_3 ON temp.p_rsf_detail USING btree (no_rss);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_rsf_detail_non_valorise; SELECT base.cti_create_table_from('temp', 'p_rsf_detail_non_valorise', 'pmsi', '');"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_rss_transferts; SELECT base.cti_create_table_from('temp', 'p_rss_transferts', 'pmsi', ''); CREATE INDEX i_rss_transferts_1 ON temp.p_rss_transferts USING btree (rss_id);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_lpp ); commit_trans(); // Creation table temp avec no_rss pour recuperer les etablissement de provenances $sqlcmd = "DROP TABLE IF EXISTS temp.transferts_with_no_rss; CREATE TABLE temp.transferts_with_no_rss AS ( SELECT no_rss, etablissement_destination_id, etablissement_provenance_id FROM pmsi.p_rss_transferts JOIN pmsi.p_rss ON p_rss.oid = rss_id WHERE date_sortie >= '$date_debut' );"; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp.p_fichsup_transports; SELECT base.cti_create_table_from('temp', 'p_fichsup_transports', 'pmsi', '');"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_lpp ); commit_trans(); logInfoMsg("Suppression génération précédente"); // Suppression gégération précédente $sqlcmd = "DELETE FROM pmsi.p_rss WHERE import_id = $import_id "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); nettoyer_sejours(); $sqlcmd = "DELETE FROM pmsi.p_fichsup_transports WHERE import_id = $import_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); logInfoMsg("Pointage période"); $date_debut_delete = $date_debut; if (substr($date_fin,0,4) != substr($date_debut,0,4)) { $date_debut_delete = substr($date_fin,0,4) . "-01-01"; } $sqlcmd = <<= date_trunc('month', '$date_debut_delete'::date) AND date_trunc('month', date_sortie) <= date_trunc('month', '$date_fin'::date) SQL; execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); if (substr($date_fin,0,4) != substr($date_debut,0,4)) { enable_index("i_rss_1"); // Pointage des dossiers hors période $dates_array = array(); $handle = @fopen($file_RSS, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 100000000000) { $nb++; $BUF_record = read_rum_partial_line($buffer); if ($BUF_record["type_enregistrement"] == "RUM") { $no_rss = get_numrss($BUF_record["no_rss"]); $rss_ok = TRUE; if ($rss_ok == TRUE) { if (! controle_check_date($BUF_record["date_sortie"],$erreur,$commentaire)) { } else { $dates_array[$no_rss] = get_date_AAAAMMJJ($BUF_record["date_sortie"]); } } } } } } @fclose($handle); foreach ( array_keys($dates_array) as $no_rss ) { $date_sortie_rss = ""; $date_sortie_rss = @$dates_array[$no_rss]; if (substr($date_fin,0,4) != substr($date_sortie_rss,0,4)) { $sqlcmd = "UPDATE pmsi.p_rss set etat = 'S' WHERE date_trunc('month', date_sortie) >= date_trunc('month', '$date_debut'::date) AND date_trunc('month', date_sortie) <= date_trunc('month', '$date_fin'::date) AND no_rss = $no_rss"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); logWarnMsg("Le RSS $no_rss (sorti le $date_sortie_rss) est hors période"); } } disable_index("i_rss_1"); } commit_trans(); logInfoMsg("FIN INITIALISATION GENERATION. $nbE erreurs."); } function generation_initialisation_parametres() { global $ENDSTATUS; global $iCTI_connexion; logInfoMsg("INITIALISATION PARAMETRES"); $nbW = 0; $nbE = 0; begin_trans(); // Lance la fonction qui insère l'oid 0 dans les tables de paramètres utlisées par le module PMSI $sqlcmd = " SELECT pmsi.cti_initialize_tables();"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); logInfoMsg("FIN INITIALISATION PARAMETRES. $nbE erreurs."); } function generation_med() { global $iCTI_connexion; global $file_MED; global $file_exists_MED; $nb = 0; $nbW = 0; $nbE = 0; if ($file_exists_MED) { logInfoMsg("GENERATION DES MEDECINS"); begin_trans(); commit_trans(); $no_ligne = 0; // Depuis le fichier $handle = @fopen($file_MED, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 100000000000 ) { $nb++; $BUF_record = read_med_line($buffer); $code = toSQL($BUF_record["code"]); $nom = toSQL($BUF_record["nom"]); if ($prenom != "*CMM") { $prenom = toSQL($BUF_record["prenom"]); $specialite_id = get_specialite_medecin($BUF_record["specialite"]); $specialite_interne_id = 0; $no_adeli = toSQL($BUF_record["no_adeli"]); $statut = ""; $new_med = TRUE; $result = $iCTI_connexion->query("select oid FROM pmsi.t_medecins WHERE code = '$code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $new_med = FALSE; } } if ($new_med == TRUE) { $sqlcmd = "INSERT INTO pmsi.t_medecins( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "nom, "; $sqlcmd = $sqlcmd . "prenom, "; $sqlcmd = $sqlcmd . "specialite_id, "; $sqlcmd = $sqlcmd . "specialite_interne_id, "; $sqlcmd = $sqlcmd . "no_adeli, "; $sqlcmd = $sqlcmd . "statut "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$code', "; $sqlcmd = $sqlcmd . "'$nom', "; $sqlcmd = $sqlcmd . "'$prenom', "; $sqlcmd = $sqlcmd . "$specialite_id, "; $sqlcmd = $sqlcmd . "$specialite_interne_id, "; $sqlcmd = $sqlcmd . "'$no_adeli', "; $sqlcmd = $sqlcmd . "'$statut' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); } else { $sqlcmd = "UPDATE pmsi.t_medecins SET nom = '$nom', prenom = '$prenom' WHERE code = '$code' AND code = nom; UPDATE pmsi.t_medecins SET specialite_id = $specialite_id WHERE code = '$code' "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); } } else { $new_med = TRUE; $result = $iCTI_connexion->query("select oid FROM pmsi.t_comites_medicaux WHERE code = '$code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $new_med = FALSE; } } if ($new_med == TRUE) { $sqlcmd = "INSERT INTO pmsi.t_comites_medicaux( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "texte "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$code', "; $sqlcmd = $sqlcmd . "'$texte' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); } else { $sqlcmd = "UPDATE pmsi.t_comites_medicaux SET texte = '$nom' "; $sqlcmd = $sqlcmd . "WHERE code = '$code' AND texte <> '$nom' "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); } } } } fclose($handle); } commit_trans(); } // Spécialités internes $sqlcmd = "INSERT INTO pmsi.t_specialites_internes_medecin (code, texte) "; $sqlcmd = $sqlcmd . "SELECT code || '..', texte "; $sqlcmd = $sqlcmd . "FROM pmsi.t_specialites_medecin "; $sqlcmd = $sqlcmd . "WHERE oid > 0 AND length(code) = 2 AND code NOT LIKE '%..%' "; $sqlcmd = $sqlcmd . "AND code || '..' NOT IN (SELECT code FROM pmsi.t_specialites_internes_medecin); "; $toResult = execute_sql($sqlcmd, $nbE, $nbWWW ); commit_trans(); $sqlcmd = "UPDATE pmsi.t_medecins "; $sqlcmd = $sqlcmd . "SET specialite_interne_id = t_specialites_internes_medecin.oid "; $sqlcmd = $sqlcmd . "FROM pmsi.t_specialites_medecin, pmsi.t_specialites_internes_medecin "; $sqlcmd = $sqlcmd . "WHERE t_medecins.specialite_interne_id = 0 "; $sqlcmd = $sqlcmd . "AND t_medecins.specialite_id <> 0 "; $sqlcmd = $sqlcmd . "AND t_medecins.specialite_id = t_specialites_medecin.oid "; $sqlcmd = $sqlcmd . "AND t_specialites_medecin.code || '..' = t_specialites_internes_medecin.code "; $toResult = execute_sql($sqlcmd, $nbE, $nbWWW ); commit_trans(); analyse_table("t_medecins"); logInfoMsg("FIN GENERATION DES MEDECINS. $nb lus, $nbW écrits, $nbE erreurs."); } // Traitement des RUM function generation_rum() { global $iCTI_connexion; global $ENV_TYPEETS; global $import_id; global $file_RSSMED; global $file_RSSNOM; global $file_ACTMED; global $file_RSS; global $file_RSF; global $file_exists_RSF; global $rssmed_array; global $rssnom_array; global $rssprenom_array; global $current_rsfa_index; logInfoMsg("GENERATION DES RUM"); begin_trans(); $nb = 0; $nbW = 0; $nbW_rss = 0; $nbW_rum = 0; $nbW_diags = 0; $nbW_actes = 0; $nbW = 0; $nbE = 0; commit_trans(); // recherche des RSS dans les RSF $rsss_array = array(); $prestations_principales_array = array(); $ghss_rss_array = array(); $ghss_rssbb_array = array(); $ghss_rssdia_array = array(); if ($file_exists_RSF) { logInfoMsg("Extraction RSS dans RSF"); $current_rsfa_index = 0; $ghs_prestation_id = get_prestation("GHS"); $handle = @fopen($file_RSF, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); if (trim($buffer) != "" ) { $BUF_record = read_rsf_partial_line($buffer); if ($BUF_record["ok"] == TRUE) { // ENTETE RSF if ($BUF_record["type_enregistrement"] == "A") { // RSS if (controle_check_num($BUF_record["no_rss"],0,FALSE,$erreur,$commentaire)) { $no_rss = get_numrss($BUF_record["no_rss"]); $rsss_array[$no_rss] = "OK"; //$prestations_principales_array[$no_rss] = 0; //$ghss_rss_array[$no_rss] = 0; } } // prestation principale GHS if ($BUF_record["type_enregistrement"] == "B") { // RSS if ($BUF_record["code_acte"] == "GHS") { $no_rss = get_numrss($BUF_record["no_rss"]); $prestations_principales_array[$no_rss] = $ghs_prestation_id; $ghs_id = get_ghs($BUF_record["no_ghs"]); $ghs_code_num = get_num($BUF_record["no_ghs"]); if ($ghs_code_num < 5800 || $ghs_code_num > 5940) { if ($ghs_code_num != 9604 && $ghs_code_num != 9605) { $ghss_rss_array[$no_rss] = $ghs_id; } else { $ghss_rssdia_array[$no_rss] = $ghs_id; } } else { $ghss_rssbb_array[$no_rss] = $ghs_id; } } } } } } } } // Medecins par RSS $rssmed_array = array(); $rsscmm_array = array(); $handle = @fopen($file_RSSMED, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 100000000000 ) { $BUF_record = read_rssmed_line($buffer); $no_rss = get_numrss($BUF_record["no_rss"]); if ($BUF_record["is_comite"] != "1") { $rssmed_array[$no_rss] = $BUF_record["code_medecin"]; } else { $rsscmm_array[$no_rss] = $BUF_record["code_medecin"]; } } } fclose($handle); } // Noms des RSS $rssnom_array = array(); $rssprenom_array = array(); $rssnopatient_array = array(); $handle = @fopen($file_RSSNOM, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); if (trim($buffer) != "" ) { $BUF_record = read_rssnom_line($buffer); $no_rss = get_num($BUF_record["no_rss"] ); $rssnom_array[$no_rss] = $BUF_record["nom"]; $rssprenom_array[$no_rss] = $BUF_record["prenom"]; $rssnopatient_array[$no_rss] = $BUF_record["no_patient"]; } } fclose($handle); } // Exécutants if (! $file_exists_RSF || $ENV_TYPEETS != "1") { $actmed_array = array(); $handle = @fopen($file_ACTMED, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); if (trim($buffer) != "" ) { $BUF_record = read_actmed_line($buffer); if ($BUF_record["type_enregistrement"] == "ACTMED") { $cle = get_numrss($BUF_record["no_rss"]) . $BUF_record["code_acte"] . get_date_AAAAMMJJ($BUF_record["date_acte"]) . $BUF_record["activite_ccam"] ; $actmed_array[$cle] = $BUF_record["code_medecin"]; $cle = get_numrss($BUF_record["no_rss"]) . $BUF_record["code_acte"] . "00000000" . $BUF_record["activite_ccam"]; $actmed_array[$cle] = $BUF_record["code_medecin"]; // cas particulier actes anesthésie en activite 1 if ($BUF_record["activite_ccam"] == "4") { $acte_anesthesie = array("AFLB010", "GELE001", "YYYY003", "YYYY004", "YYYY015", "YYYY020", "YYYY041", "YYYY044", "YYYY108", "YYYY118", "ZZLP008", "ZZLP012", "ZZLP025", "ZZLP030", "ZZLP042", "ZZLP054"); if (in_array($BUF_record["code_acte"], $acte_anesthesie)){ $cle = get_numrss($BUF_record["no_rss"]) . $BUF_record["code_acte"] . get_date_AAAAMMJJ($BUF_record["date_acte"]) . "1"; $actmed_array[$cle] = $BUF_record["code_medecin"]; $cle = get_numrss($BUF_record["no_rss"]) . $BUF_record["code_acte"] . "00000000" . "1"; $actmed_array[$cle] = $BUF_record["code_medecin"]; } } } } } fclose($handle); } } logInfoMsg("Génération RSS et RUM"); $no_ligne = 0; $sqlcmd_insert_rum = "INSERT INTO temp.p_rss_rum( rss_id, finess, no_rss, no_rum, date_entree, date_sortie, mode_entree, provenance, mode_sortie, destination, passage_urgences_code, duree_sejour, nb_seances, unite_medicale, diagnostic_principal_id, diagnostic_relie_id, unite_medicale_id, type_autorisation, igs2, type_autorisation_lit_dedie, conversion_hp_hc_id )"; $sqlcmd_insert_rss = "INSERT INTO temp.p_rss( oid, no_patient, finess, no_rss, version_groupage, code_retour_groupage, date_naissance, sexe, date_entree, date_sortie, mode_entree, provenance, mode_sortie, destination, passage_urgences_code, code_postal, code_postal_id, poids_bebe, igs2, cma, groupe_ghm, duree_sejour, nb_rsa, age, supprime, date_import, nb_rum, secteur, no_sejour_administratif, nb_seances, ghm_fg9, ghm_id, medecin_rss_id, comite_medical_id, ghs_id, mois_sortie, diagnostic_principal_id, diagnostic_relie_id, no_rum_principal, unite_medicale_principale_id, prestation_principale_id, import_id, en_cours, en_cours_etat, traitement_epmsi, age_gestationnel, date_dernieres_regles, confirmation_codage, type_machine_rdth, type_dosimetrie, numero_innovation, nombre_ivg_anterieures, annee_ivg_precedente, nombre_naissances_vivantes_anterieures, coefficient_prudentiel_theorique, conversion_hp_hc_id, raac_id, rescrit_tarif_id, adm_prod_reshospi_id, contexte_pat_id, nb_intervention_id, np_id )"; $sqlcmd_insert_identite = "INSERT INTO temp.p_identites( rss_id, finess, no_rss, nom, prenom )"; $sqlcmd_insert_diagnostic = "INSERT INTO temp.p_rss_diagnostics( rss_id, finess, no_rss, no_rum, diagnostic_id, type_diagnostic, type_diagnostic_rss, imprecis, unite_medicale, unite_medicale_id )"; $sqlcmd_insert_acte = "INSERT INTO temp.p_rss_actes( rss_id, finess, no_rss, no_rum, unite_medicale, unite_medicale_id, date_acte, medecin_id, acte_id, acte_ccam_descriptif_id, nombre, phase_ccam, activite_ccam, extension_ccam, modificateur_ccam_1, modificateur_ccam_2, modificateur_ccam_3, modificateur_ccam_4, remboursement_excp_ccam, association_nonprevue_ccam )"; $sequence_rss_id = 0; $sqlcmd_exec = ""; $handle = @fopen($file_RSS, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 100000000000 ) { $nb++; $BUF_record = read_rum_line($buffer); $no_rss = get_numrss($BUF_record["no_rss"]); $rss_ok = TRUE; if ($rss_ok == TRUE) { if (strlen($sqlcmd_exec) > 64000) { $toResult = execute_sql($sqlcmd_exec, $nbE, $nbW_actesxx ); $sqlcmd_exec = ""; } if ($BUF_record["type_enregistrement"] == "RUM") { $no_patient = 0; $finess = $BUF_record["finess"]; $no_rss = get_numrss($BUF_record["no_rss"]); $en_cours = "0"; $en_cours_etat = ""; $version_groupage = $BUF_record["version_groupage"]; $code_retour_groupage = $BUF_record["groupage_retour"]; //$date_naissance = sqlDate($BUF_record["date_naissance"]); if (controle_check_date($BUF_record["date_naissance"],$none,$none, true)) { $date_naissance = sqlDate($BUF_record["date_naissance"]); } else { $date_naissance = default_birth_date($BUF_record["date_naissance"]); } $sexe = $BUF_record["sexe"]; $date_entree = sqlDate($BUF_record["date_entree"]); $mode_entree = get_mode_entree($BUF_record["mode_entree"]); $provenance = get_provenance($BUF_record["provenance"]); $date_sortie = sqlDate($BUF_record["date_sortie"]); $mode_sortie = get_mode_sortie($BUF_record["mode_sortie"]); $destination = get_destination($BUF_record["destination"]); $passage_urgences = $BUF_record["passage_urgences"]; $code_postal = $BUF_record["code_postal"]; $poids_bebe = get_num($BUF_record["poids_bebe"]); $age_gestationnel = get_num($BUF_record["age_gestationnel"]); if(controle_check_date($BUF_record["date_dernieres_regles"],$none,$none)){ $date_dernieres_regles = sqlDate($BUF_record["date_dernieres_regles"]); }else{ $date_dernieres_regles = "2099-12-31"; } $confirmation_codage = $BUF_record["confirmation_codage"]; $type_machine_rdth = $BUF_record["type_machine_rdth"]; $type_dosimetrie = $BUF_record["type_dosimetrie"]; $numero_innovation = $BUF_record["numero_innovation"]; $nombre_ivg_anterieures = get_num($BUF_record["nombre_ivg_anterieures"]); $annee_ivg_precedente = get_num($BUF_record["annee_ivg_precedente"]); $nombre_naissances_vivantes_anterieures = get_num($BUF_record["nombre_naissances_vivantes_anterieures"]); $code_postal = $BUF_record["code_postal"]; $igs2 = get_num($BUF_record["igs2"]); $cma = ""; $groupe_ghm = ""; // $duree_sejour = 0; // Remplacé le 02/05/2013 par CLA // La duree de séjour du rum est la différence entre les dates de sortie et d'entrée $duree_sejour = (strtotime($date_sortie) - strtotime($date_entree)) / ( 60 * 60 * 24); $nb_rsa = 1; $age = 0; $supprime = ""; $date_import = "2099-12-31"; $nb_rum = 1; $secteur = ""; $no_sejour_administratif = get_charAsNum($BUF_record["no_sejour_administratif"]); $type_autorisation_lit_dedie = $BUF_record["type_autorisation_lit"]; $nb_seances = get_num($BUF_record["nombre_seances"]); if ($nb_seances == 0 && substr($BUF_record["ghm"], 0 , 2) == "28") { $nb_seances = 1; } if ($nb_seances > 1 && substr($BUF_record["ghm"], 0 , 2) == "28") { $nb_rsa = $nb_seances; } $conversion_hp_hc_id = get_conversion_hp_hc($BUF_record["conversion_hp_hc"]); $raac_id = get_raac($BUF_record["raac"]); $contexte_pat_id = get_contexte_pat($BUF_record["contexte_particulier"]); $adm_prod_reshospi_id = get_adm_prod_reshospi($BUF_record["administration_prod_rh"]); $rescrit_tarif_id = get_rescrit_tarif($BUF_record["rescrit_tarifaire"]); $nb_interventions_id = get_nb_interventions($BUF_record["categorie_nb_interventions"]); $ghm_fg9 = ""; $ghm_id = 0; $medecin_rss_id = 0; $comite_medical_id = 0; $ghs_id = 0; $mois_sortie = 0; $diagnostic_principal_id = 0; $diagnostic_relie_id = 0; $no_rum_principal = 1; $unite_medicale_principale_id = 0; $np = get_np($BUF_record["np"]); $in_rsf = ""; if ($ENV_TYPEETS == "1") { $in_rsf = @$rsss_array[$no_rss]; } else { $in_rsf = "OK"; } if ($in_rsf == "OK") { $ghm_id = get_ghm($BUF_record["ghm"]); $diagnostic_principal_id = get_diagnostic($BUF_record["diagnostic_principal"]); if ($BUF_record["diagnostic_relie"] != "") { $diagnostic_relie_id = get_diagnostic($BUF_record["diagnostic_relie"]); } // Medecin RSS $code_med = ""; $code_med = @$rssmed_array[get_numrss($BUF_record["no_rss"])]; if ($code_med != "") { $medecin_rss_id = get_medecin($code_med); } // Comité médical $code_cmm = ""; $code_cmm = @$rsscmm_array[get_numrss($BUF_record["no_rss"])]; if ($code_cmm != "") { $comite_medical_id = get_comite_medical($code_cmm); } // OID rss $no_rum = get_num($BUF_record["no_rum"]); if ($no_rum == 1) { $rss_id = 0; if ($sequence_rss_id == 0) { $result = $iCTI_connexion->query("SELECT COALESCE(max(oid)+1,1) AS oid FROM pmsi.p_rss"); $record = pg_fetch_array($result); if ($record != FALSE) { $sequence_rss_id = $record["oid"]; } } else { $sequence_rss_id++; } $rss_id = $sequence_rss_id; } // Création RUM $type_autorisation = $BUF_record["type_autorisation_um"]; $unite_medicale = $BUF_record["unite_medicale"]; $unite_medicale_id = get_unite_medicale($BUF_record["unite_medicale"]); // $sqlcmd = "$sqlcmd_insert_rum VALUES($rss_id, '$finess', $no_rss, $no_rum, '$date_entree', '$date_sortie', '$mode_entree', '$provenance', '$mode_sortie', '$destination', '$date_sortie'::date - '$date_entree'::date, $nb_seances, '$unite_medicale', $diagnostic_principal_id, $diagnostic_relie_id, $unite_medicale_id, '$type_autorisation', $igs2, '$type_autorisation_lit_dedie' ) "; $sqlcmd = "$sqlcmd_insert_rum VALUES($rss_id, '$finess', $no_rss, $no_rum, '$date_entree', '$date_sortie', '$mode_entree', '$provenance', '$mode_sortie', '$destination','$passage_urgences', $duree_sejour, $nb_seances, '$unite_medicale', $diagnostic_principal_id, $diagnostic_relie_id, $unite_medicale_id, '$type_autorisation', $igs2, '$type_autorisation_lit_dedie', $conversion_hp_hc_id) "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_rum++; //$toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); // création RSS $no_rum_principal = 1; $unite_medicale_principale_id = $unite_medicale_id; // Code postal $code_postal_id = get_code_postal($code_postal); // ghs $ghs_id = @$ghss_rss_array[$no_rss] + 0; if ($ghs_id == 0) { $ghsdia_id = @$ghss_rssdia_array[$no_rss] + 0; if ($ghsdia_id != 0) { $ghs_id = $ghsdia_id; } } if ($ghs_id == 0) { $ghsbb_id = @$ghss_rssbb_array[$no_rss] + 0; if ($ghsbb_id != 0) { $ghs_id = @$ghss_rssbb_array[$no_rss] + 0; } } // Prestation principale $prestation_principale_id = @$prestations_principales_array[$no_rss] + 0; // coefficient prudentiel théorique // 0.9930 depuis mars 2017 $coefficient_prudentiel_theorique = 0.9930; if ($no_rum == 1) { // identite $nom_rss = ""; $nom_rss = @$rssnom_array[get_numrss($no_rss)]; $prenom_rss = @$rssprenom_array[get_numrss($no_rss)]; $no_patient = get_num(@$rssnopatient_array[get_numrss($no_rss)]); if ($nom_rss == "") { $nom_rss = @$rssnom_array['-' . get_charAsNum($no_sejour_administratif)]; $prenom_rss = @$rssprenom_array['-' . get_charAsNum($no_sejour_administratif)]; } if ($nom_rss == "") { $nom_rss = "RSS $no_rss"; $prenom_rss = ""; } $nom_rss = toSQL($nom_rss); $prenom_rss = toSQL($prenom_rss); $sqlcmd = "$sqlcmd_insert_rss VALUES ( $rss_id, $no_patient, '$finess', $no_rss, '$version_groupage', '$code_retour_groupage', '$date_naissance', '$sexe', '$date_entree', '$date_sortie', '$mode_entree', '$provenance', '$mode_sortie', '$destination','$passage_urgences', '$code_postal', $code_postal_id, $poids_bebe, $igs2, '$cma', '$groupe_ghm', $duree_sejour, $nb_rsa, date_part('year','$date_entree'::date) - date_part('year','$date_naissance'::date) , '$supprime', '$date_import',$nb_rum, '$secteur', '$no_sejour_administratif', $nb_seances, '$ghm_fg9', $ghm_id, $medecin_rss_id, $comite_medical_id, $ghs_id, (date_part('year','$date_sortie'::date) * 100) + date_part('month','$date_sortie'::date), $diagnostic_principal_id, $diagnostic_relie_id, $no_rum_principal, $unite_medicale_principale_id, $prestation_principale_id, $import_id, '$en_cours', '$en_cours_etat', '30', $age_gestationnel, '$date_dernieres_regles'::date, '$confirmation_codage', '$type_machine_rdth', '$type_dosimetrie', '$numero_innovation', $nombre_ivg_anterieures, $annee_ivg_precedente, $nombre_naissances_vivantes_anterieures, $coefficient_prudentiel_theorique, $conversion_hp_hc_id, $raac_id,$rescrit_tarif_id, $adm_prod_reshospi_id,$contexte_pat_id,$nb_interventions_id, $np ) "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_rss++; //$toResult = execute_sql($sqlcmd, $nbE, $nbW_rss ); $sqlcmd = "$sqlcmd_insert_identite VALUES ($rss_id, '$finess', $no_rss, '$nom_rss', '$prenom_rss' ) "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; //$toResult = execute_sql($sqlcmd, $nbE, $nbW_ide ); } // RUM supplémentaires else { $nb_rsa = 0; if ($nb_seances == 0 && substr($BUF_record["ghm"], 0 , 2) == "28") { $nb_seances = 1; } if ($nb_seances > 0 && substr($BUF_record["ghm"], 0 , 2) == "28") { $nb_rsa = $nb_seances; } // Sur les multi-RUM, la confirmation de codage n'est presente que sur le dernier RUM // Le marqueur de conversion HP-HC est renseigné sur le premier RUM d'hospitalisation complète ou mixte // Il n'apparait donc qu'une fois dans le RSS sur le premier RUM HM ou HC et doit être vide pour les RUMS non concernés $sqlcmd = "UPDATE temp.p_rss SET date_sortie = '$date_sortie', mode_sortie = '$mode_sortie', destination = '$destination', confirmation_codage = '$confirmation_codage', nb_rsa = nb_rsa + $nb_rsa, nb_rum = nb_rum + 1, nb_seances = nb_seances + $nb_seances, igs2 = igs2 + $igs2, mois_sortie = (date_part('year','$date_sortie'::date) * 100) + date_part('month','$date_sortie'::date), duree_sejour = $duree_sejour + duree_sejour, coefficient_prudentiel_theorique = $coefficient_prudentiel_theorique, no_rum_principal = 0, unite_medicale_principale_id = 0, conversion_hp_hc_id = COALESCE(NULLIF(conversion_hp_hc_id, 0), $conversion_hp_hc_id), raac_id = COALESCE(NULLIF(raac_id, 0), $raac_id) WHERE oid = $rss_id "; $sqlcmd_exec .= "$sqlcmd;"; //$toResult = execute_sql($sqlcmd, $nbE, $nbW_rss ); } // diagnostics $sqlcmd = "$sqlcmd_insert_diagnostic VALUES($rss_id, '$finess', $no_rss, $no_rum, $diagnostic_principal_id, 'DP', 'DP', '0', '$unite_medicale', $unite_medicale_id ) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_diags ); if ($diagnostic_relie_id > 0) { $sqlcmd = "$sqlcmd_insert_diagnostic VALUES($rss_id, '$finess', $no_rss, $no_rum, $diagnostic_relie_id, 'DR', 'DR', '0', '$unite_medicale', $unite_medicale_id ) "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_diags++; //$toResult = execute_sql($sqlcmd, $nbE, $nbW_diags ); } $diagnostic_id = 0; foreach ($BUF_record["diags"] as $diagnostic_associe) { $diagnostic_id = get_diagnostic($diagnostic_associe); $sqlcmd = "$sqlcmd_insert_diagnostic VALUES($rss_id, '$finess', $no_rss, $no_rum, $diagnostic_id, 'DA', 'DA', '0', '$unite_medicale', $unite_medicale_id ) "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_diags++; //$toResult = execute_sql($sqlcmd, $nbE, $nbW_diags ); } $diagnostic_id = 0; foreach ($BUF_record["diagsdoc"] as $diagnostic_documentaire) { $diagnostic_id = get_diagnostic($diagnostic_documentaire); $sqlcmd = "$sqlcmd_insert_diagnostic VALUES($rss_id, '$finess', $no_rss, $no_rum, $diagnostic_id, 'DD', 'DD', '0', '$unite_medicale', $unite_medicale_id ) "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_diags++; //$toResult = execute_sql($sqlcmd, $nbE, $nbW_diags ); } // Génération des actes si pas de RSF if (! $file_exists_RSF || $ENV_TYPEETS != "1") { foreach ($BUF_record["actes"] as $BUF_acte) { $BUF_code_acte = trim(substr($BUF_acte , 8, 7)); $BUF_date_acte = trim(substr($BUF_acte , 0, 8)); $BUF_extension_atih = (intval($BUF_record["version_format"]) >= 117) ? trim(substr($BUF_acte , 15, 3)) : ""; $BUF_code_acte .= $BUF_extension_atih; $acte_id = get_acte($BUF_code_acte); if ($rss_id > 0) { $finess = $BUF_record["finess"]; $date_acte = sqlDate($BUF_date_acte); if (!controle_check_date($BUF_date_acte,$none,$none)) { $date_acte = sqlDate($BUF_record["date_entree"]); } $phase_ccam = trim(substr($BUF_acte , 15 + $BUF_record["offset_format"], 1)); $activite_ccam = trim(substr($BUF_acte , 16 + $BUF_record["offset_format"], 1)); if (! controle_check_num($activite_ccam,1, FALSE,$none,$none)) { $activite_ccam = "1"; } $extension_ccam = trim(substr($BUF_acte , 17 + $BUF_record["offset_format"], 1)); $modificateur_ccam_1 = trim(substr($BUF_acte , 18 + $BUF_record["offset_format"], 1)); $modificateur_ccam_2 = trim(substr($BUF_acte , 19 + $BUF_record["offset_format"], 1)); $modificateur_ccam_3 = trim(substr($BUF_acte , 20 + $BUF_record["offset_format"], 1)); $modificateur_ccam_4 = trim(substr($BUF_acte , 21 + $BUF_record["offset_format"], 1)); $remboursement_excp_ccam = trim(substr($BUF_acte , 22 + $BUF_record["offset_format"], 1)); $association_nonprevue_ccam = trim(substr($BUF_acte , 23 + $BUF_record["offset_format"], 1)); $BUF_nombre = trim(substr($BUF_acte , 24 + $BUF_record["offset_format"], 8)); $nombre = get_num($BUF_nombre,1); $medecin_id = 0; // Medecin acte $code_med = ""; $cle = get_numrss($BUF_record["no_rss"]) . $BUF_code_acte . get_date_AAAAMMJJ($BUF_date_acte) . $activite_ccam ; if (isset($actmed_array[$cle])){ $code_med = $actmed_array[$cle]; if ($code_med === "") { $cle = get_numrss($BUF_record["no_rss"]) . $BUF_code_acte . "00000000" . $activite_ccam; $code_med = $actmed_array[$cle]; } } if ($code_med !== "") { $medecin_id = get_medecin($code_med); } $sqlcmd = "$sqlcmd_insert_acte VALUES( $rss_id, '$finess', $no_rss, $no_rum, '$unite_medicale', $unite_medicale_id, '$date_acte', $medecin_id, $acte_id, $acte_id, $nombre, '$phase_ccam', '$activite_ccam', '$extension_ccam', '$modificateur_ccam_1', '$modificateur_ccam_2', '$modificateur_ccam_3', '$modificateur_ccam_4', '$remboursement_excp_ccam', '$association_nonprevue_ccam') "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_actes++; //$toResult = execute_sql($sqlcmd, $nbE, $nbW_actes ); } } } } else { logWarnMsg("RSS $no_rss sans RSF non importé"); } } } } } fclose($handle); } if ($sqlcmd_exec != "") { $toResult = execute_sql($sqlcmd_exec, $nbE, $nbW_actes ); $sqlcmd_exec = ""; } $sequence_rss_id++; $sqlcmd = "ALTER SEQUENCE pmsi.s_rss RESTART WITH $sequence_rss_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "UPDATE temp.p_rss SET nb_seances = 1, nb_rsa = 1 WHERE import_id = $import_id AND nb_seances > 1 AND date_sortie = date_entree AND nb_rum > 1"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "UPDATE pmsi.p_imports SET "; $sqlcmd = $sqlcmd . "nb_rss = $nbW_rss, "; $sqlcmd = $sqlcmd . "nb_rum = $nbW_rum "; $sqlcmd = $sqlcmd . "WHERE oid = $import_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); get_rss("*setarray"); commit_trans(); analyse_table_temp("p_rss"); analyse_table_temp("p_rss_rum"); analyse_table_temp("p_rss_diagnostics"); analyse_table_temp("p_rss_actes"); logInfoMsg("$nbW_rss RSS créés"); logInfoMsg("$nbW_rum RUM créés"); logInfoMsg("$nbW_diags Diagnostics créés"); if (! $file_exists_RSF || $ENV_TYPEETS != "1") { logInfoMsg("$nbW_actes Actes créés"); } $nbW = $nbW_rss + $nbW_rum + $nbW_diags + $nbW_actes; logInfoMsg("FIN GENERATION DES RUM. $nb lus, $nbW écrits, $nbE erreurs."); } function generation_rsa() { global $file_RSS; global $file_RSA; global $file_TRA; global $file_LEG; global $file_exists_TRA; global $file_exists_LEG; logInfoMsg("GENERATION DES RSA"); $nb = 0; $nbI = 0; $nbW = 0; $nbE = 0; $no_ligne = 0; $rss_rss_array = array(); $rss_ghm_array = array(); $line_rss_array = array(); $line_ghm_array = array(); $line_sej_array = array(); $rsa_linerss_array = array(); $rsa_leg_array = array(); $finess = ''; begin_trans(); // GHM par RSS (pour controle concordance) $nb_rss = 0; $der_rss = 0; $handle = @fopen($file_RSS, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 1000000000000000) { $BUF_record = read_rum_line($buffer); if ($BUF_record["type_enregistrement"] == "RUM") { $no_rss = get_numrss($BUF_record["no_rss"]); if ($no_rss != $der_rss) { // A suppr ? $nb_rss++; $der_rss = $no_rss; $rss_rss_array[$nb_rss] = $no_rss; $rss_ghm_array[$nb_rss] = trim($BUF_record["ghm"]); } $line_rss_array[$no_ligne] = $no_rss; // A suppr ? $line_ghm_array[$no_ligne] = $BUF_record["ghm"]; $line_sej_array[$no_ligne] = get_charAsNum($BUF_record["no_sejour_administratif"]); } } } } if ($file_exists_TRA) { $no_ligne = 0; $handle = @fopen($file_TRA, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 1000000000000000) { $BUF_record = read_tra_line($buffer); if ($BUF_record["type_enregistrement"] == "TRA") { $no_rsa = get_num($BUF_record["no_rsa"]); $ligne_rss = get_num($BUF_record["ligne_rss"]); $doControlTRA_GHM = $BUF_record["doControlTRA_GHM"]; $traVersion = $ligne_rss === 0 ? "druide_2023" : "old"; if ($traVersion === "druide_2023"){ $rss_rss_array[$no_rsa] = get_charAsNum($BUF_record["no_rss"]); $rss_ghm_array[$no_rsa] = $BUF_record["ghm"]; } else { // Ancienne version $no_sejour_administratif = get_charAsNum($BUF_record["no_sejour_administratif"]); $ghm = $BUF_record["ghm"]; if ($line_sej_array[$ligne_rss] == $no_sejour_administratif) { $rss_rss_array[$no_rsa] = $line_rss_array[$ligne_rss]; $rss_ghm_array[$no_rsa] = trim($line_ghm_array[$ligne_rss]); } } } } } } } // Recherche des codes erreurs de retour de groupage if ($file_exists_LEG) { $error_leg_file = false; logInfoMsg("TRAITEMENT FICHIER LEG"); $no_ligne_leg = 0; $leg_query = "INSERT INTO temp.p_rss_leg (finess, no_rsa, rss_id, code_retour_id, nombre) "; $handle = @fopen($file_LEG, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne_leg++; if (trim($buffer) != "" && $no_ligne_leg < 1000000000000000) { $BUF_record = read_leg_line($buffer); if ($BUF_record["type_enregistrement"] == "LEG") { // Pour chaque numéro de RSA, stocke tous les codes erreurs de groupage $rsa_leg_array[get_num($BUF_record["no_rsa"])] = $BUF_record["codes"]; // Récupère le finess aussi au cas où $finess = $BUF_record["finess"]; } // Si le fichier présente une erreur de format, on passe le flag error_leg_file à true else { $error_leg_file = true; } } } fclose($handle); } } $no_ligne = 0; $nb_rsa = 0; $finess_error = FALSE; $format_error = FALSE; $finess_first = ""; $pb_concordance = FALSE; $handle = @fopen($file_RSA, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 1000000000000000) { $nb++; $BUF_record = read_rsa_line($buffer); if ($BUF_record["type_enregistrement"] == "RSA") { $nb_rsa++; $no_rsa = get_num($BUF_record["no_rsa"]); if ($pb_concordance == FALSE) { if ($doControlTRA_GHM && @$rss_ghm_array[$no_rsa] != trim($BUF_record["ghm_genrsa"])) { $pb_concordance = TRUE; } } } } } fclose($handle); } $sqlcmd_exec = ""; if ($pb_concordance == FALSE) { $no_ligne = 0; $nb = 0; $nb_rsa_err = 0; $nb_leg = 0; $pb_concordance = FALSE; $handle = @fopen($file_RSA, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); if (trim($buffer) != "" && $no_ligne < 1000000000000000) { $nb++; $BUF_record = read_rsa_line($buffer); if ($BUF_record["type_enregistrement"] == "RSA") { if (strlen($sqlcmd_exec) > 64000) { $toResult = execute_sql($sqlcmd_exec, $nbE, $nbW_actesxx ); $sqlcmd_exec = ""; } $no_ligne++; $no_rsa = get_num($BUF_record["no_rsa"]); $no_rss = $rss_rss_array[$no_rsa] + 0; $rss_id = get_rss($no_rss) + 0; $ghm_code = $BUF_record["ghm"]; $ghm_id = get_ghm($ghm_code); $code_retour = $BUF_record["code_retour"]; $ghm_genrsa_code = $BUF_record["ghm_genrsa"]; $ghm_genrsa_id = get_ghm($ghm_genrsa_code); $code_retour_genrsa = $BUF_record["code_retour_genrsa"]; $ghs_genrsa_code_in = $BUF_record["ghs_genrsa"]; $ghs_genrsa_id = get_ghs($ghs_genrsa_code_in); $nb_exh = get_num($BUF_record["nb_exh"]); $nb_exb = get_num($BUF_record["nb_exb"]); $forfait_dialyse = $BUF_record["forfait_dialyse"]; $nb_sup_dialyse_1 = get_num($BUF_record["nb_sup_dialyse_1"]); $nb_sup_dialyse_2 = get_num($BUF_record["nb_sup_dialyse_2"]); $nb_sup_dialyse_3 = get_num($BUF_record["nb_sup_dialyse_3"]); $nb_sup_dialyse_4 = get_num($BUF_record["nb_sup_dialyse_4"]); $nb_actes_9510 = get_num($BUF_record["nb_actes_9510"]); $nb_actes_9511 = get_num($BUF_record["nb_actes_9511"]); $nb_actes_9512 = get_num($BUF_record["nb_actes_9512"]); $nb_actes_9515 = get_num($BUF_record["nb_actes_9515"]); $nb_actes_9524 = get_num($BUF_record["nb_actes_9524"]); $nb_actes_9621 = get_num($BUF_record["nb_actes_9621"]); $nb_actes_9622 = get_num($BUF_record["nb_actes_9622"]); $nb_actes_6523 = get_num($BUF_record["nb_actes_6523"]); $nb_sup_hyperbare = get_num($BUF_record["nb_sup_hyperbare"]); $nb_sup_apherese = get_num($BUF_record["nb_sup_apherese"]); $type_prestation_prelevement_organe = $BUF_record["type_prestation_prelevement_organe"]; $nb_sup_sra = get_num($BUF_record["nb_sup_sra"]); $nb_sup_rea = get_num($BUF_record["nb_sup_rea"]); $nb_sup_si = get_num($BUF_record["nb_sup_si"]); $nb_sup_stf = get_num($BUF_record["nb_sup_stf"]); $nb_sup_ssc = get_num($BUF_record["nb_sup_ssc"]); $nb_sup_src = get_num($BUF_record["nb_sup_src"]); $nb_sup_nn1 = get_num($BUF_record["nb_sup_nn1"]); $nb_sup_nn2 = get_num($BUF_record["nb_sup_nn2"]); $nb_sup_nn3 = get_num($BUF_record["nb_sup_nn3"]); $nb_sup_rep = get_num($BUF_record["nb_sup_rep"]); $no_rum_dp = get_num($BUF_record["no_rum_dp"]); $top_uhcd = $BUF_record["top_uhcd"]; $top_ghs_minore = str_pad(trim($BUF_record["top_ghs_minore"]), 1, "0"); // Force à 0 si non renseigné $nb_rdth = get_num($BUF_record["nb_rdth"]); $passage_lit_sp = $BUF_record["passage_lit_sp"]; $nb_faisceaux = get_num($BUF_record["nb_faisceaux"]); $nb_sup_ant = get_num($BUF_record["nb_sup_ant"]); $nb_sup_rap = get_num($BUF_record["nb_sup_rap"]); $nb_sup_sdc = get_num($BUF_record["nb_sup_sdc"]); $age_jours = get_num($BUF_record["age_jours"], -1); $top_radiation_partielle_avastin = str_pad(trim($BUF_record["top_radiation_part_avastin"]), 1, "0"); // Force à 0 si non renseigné $finess = $BUF_record["finess"]; $version_format = $BUF_record["version_format"]; $version_format_rsa = $BUF_record["version_format_rsa"]; $version_groupage = $BUF_record["version_groupage"]; $version_groupage_genrsa = $BUF_record["version_groupage_genrsa"]; $age_annees = get_num($BUF_record["age_annees"], -1); $sexe = $BUF_record["sexe"]; $mode_entree = $BUF_record["mode_entree"]; $provenance = $BUF_record["provenance"]; $mode_sortie = $BUF_record["mode_sortie"]; $destination = $BUF_record["destination"]; $annee_sortie = get_num($BUF_record["annee_sortie"]); $mois_sortie = get_num($BUF_record["mois_sortie"]); $duree_sejour = get_num($BUF_record["duree_sejour"]); $code_geographique_pmsi_id = get_code_geographique_pmsi($BUF_record["code_geographique"]); $poids_entree = get_num($BUF_record["poids_entree"]); $age_gestationnel = get_num($BUF_record["age_gestationnel"]); $delai_dernieres_regles = get_num($BUF_record["delai_dernieres_regles"]); $nb_seances = get_num($BUF_record["nombre_seances"]); $type_exb = $BUF_record["type_exb"]; $top_radiation_partielle_alimta = str_pad(trim($BUF_record["top_radiation_partielle_alimta"]), 1, "0"); // Force à 0 si non renseigné $confirmation_codage = $BUF_record["confirmation_codage"]; $nb_aut_pgv = get_num($BUF_record["nb_aut_pgv"]); $top_valve_aortique = str_pad(trim($BUF_record["top_valve_aortique"]), 1, "0"); // Force à 0 si non renseigné $type_generation_automatique = get_num($BUF_record["type_generation_automatique"]); $ghs_hors_innovation_id = get_ghs($BUF_record["ghs_hors_innovation"]); $type_machine_rdth = $BUF_record["type_machine_rdth"]; $type_dosimetrie = $BUF_record["type_dosimetrie"]; $numero_innovation = $BUF_record["numero_innovation"]; $diagnostic_principal_id = get_diagnostic($BUF_record["diagnostic_principal"]); $diagnostic_relie_id = get_diagnostic($BUF_record["diagnostic_relie"]); $nb_das = get_num($BUF_record["nb_das"]); $sqlcmd = "INSERT INTO temp.p_rsa( no_rsa, no_rss, rss_id, ghm_id, code_retour, ghm_genrsa_id, code_retour_genrsa, ghs_genrsa_id, nb_exh, nb_exb, forfait_dialyse, nb_sup_dialyse_1, nb_sup_dialyse_2, nb_sup_dialyse_3, nb_sup_dialyse_4, nb_actes_9510, nb_actes_9511, nb_actes_9512, nb_actes_9515, nb_actes_9524, nb_actes_9621, nb_actes_9622, nb_actes_6523, nb_sup_hyperbare, nb_sup_apherese, type_prestation_prelevement_organe, nb_sup_sra, nb_sup_rea, nb_sup_si, nb_sup_stf, nb_sup_ssc, nb_sup_src, nb_sup_nn1, nb_sup_nn2, nb_sup_nn3, nb_sup_rep, no_rum_dp, top_uhcd, nb_rdth, passage_lit_sp, nb_faisceaux, nb_sup_ant, nb_sup_rap, top_ghs_minore, age_jours, top_radiation_partielle_avastin, nb_sup_sdc, finess, version_format, version_format_rsa, version_groupage, version_groupage_genrsa, age_annees, sexe, mode_entree, provenance, mode_sortie, destination, annee_sortie, mois_sortie, duree_sejour, code_geographique_pmsi_id, poids_entree, age_gestationnel, delai_dernieres_regles, nb_seances, type_exb, top_radiation_partielle_alimta, confirmation_codage, nb_aut_pgv, top_valve_aortique, type_generation_automatique, ghs_hors_innovation_id, type_machine_rdth, type_dosimetrie, numero_innovation, diagnostic_principal_id, diagnostic_relie_id, nb_das) VALUES ($no_rsa, $no_rss, $rss_id, $ghm_id, '$code_retour', $ghm_genrsa_id, '$code_retour_genrsa', $ghs_genrsa_id, $nb_exh, $nb_exb, '$forfait_dialyse', $nb_sup_dialyse_1, $nb_sup_dialyse_2, $nb_sup_dialyse_3, $nb_sup_dialyse_4, $nb_actes_9510, $nb_actes_9511,$nb_actes_9512, $nb_actes_9515, $nb_actes_9524, $nb_actes_9621, $nb_actes_9622, $nb_actes_6523, $nb_sup_hyperbare, $nb_sup_apherese, '$type_prestation_prelevement_organe', $nb_sup_sra, $nb_sup_rea, $nb_sup_si, $nb_sup_stf, $nb_sup_ssc, $nb_sup_src, $nb_sup_nn1, $nb_sup_nn2, $nb_sup_nn3, $nb_sup_rep, $no_rum_dp, '$top_uhcd', $nb_rdth, '$passage_lit_sp', $nb_faisceaux, $nb_sup_ant, $nb_sup_rap, '$top_ghs_minore', $age_jours, '$top_radiation_partielle_avastin', $nb_sup_sdc, '$finess', '$version_format', '$version_format_rsa', '$version_groupage', '$version_groupage_genrsa', $age_annees, '$sexe', '$mode_entree', '$provenance', '$mode_sortie', '$destination', $annee_sortie, $mois_sortie, $duree_sejour, $code_geographique_pmsi_id, $poids_entree, $age_gestationnel, $delai_dernieres_regles, $nb_seances, '$type_exb', '$top_radiation_partielle_alimta', '$confirmation_codage', $nb_aut_pgv, '$top_valve_aortique', '$type_generation_automatique', $ghs_hors_innovation_id, '$type_machine_rdth', '$type_dosimetrie', '$numero_innovation', $diagnostic_principal_id, $diagnostic_relie_id, $nb_das)"; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW++; //$toResult = execute_sql($sqlcmd, $nbE, $nbW ); // Insertion des suppléments de radiothérapie if ($nb_rdth > 0) { for ($i = 1; $i <= $nb_rdth ; $i++) { $ghs_id = get_ghs($BUF_record["supprdth"][$i]["ghs"]); $nb_supplements = $BUF_record["supprdth"][$i]["nb_supplements"]; if (trim($nb_supplements) === "") { $nb_supplements = 0; } $sqlcmd = " INSERT INTO temp.p_rsa_rdth( ghs_id, nb_supplements, rss_id) VALUES ( $ghs_id, ".$nb_supplements.", $rss_id) "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW++; //$toResult = execute_sql($sqlcmd, $nbE, $nbW); } } /*** Erreurs de groupage ***/ // Checke si le fichier leg est valide, si le RSA a des erreurs de groupage et qu'il ne s'agit pas d'un dossier hors ghm if ($file_exists_LEG && isset($rsa_leg_array[$no_rsa])) { if (!$error_leg_file && $rsa_leg_array[$no_rsa] != '' && $rss_id != 0) { $nb_rsa_err++; // Met tous les codes d'erreur de groupage dans un tableau trié $codes_retour = explode(';', $rsa_leg_array[$no_rsa]); sort($codes_retour); $previous = ''; $nombre = 0; // Construit un tableau associant un code d'erreur et son nombre d'occurences. Uun RSA peut avoir plusieurs fois la même erreur, // exemple. Le RSA XXXX présente les erreurs C170, C093, C093, C093, G180. $codes_retour vaudra ['C093','C093','C093','C170','G180'] // $uniq_codes sera de la forme // [ // 'C093' => 3; // 'C170' => 1; // 'G180' => 1; // ] $uniq_codes = array(); foreach ($codes_retour as $code_retour) { if ($code_retour != $previous) { $nombre = 1; $previous = $code_retour; } else { $nombre++; } $uniq_codes[$code_retour] = $nombre; } foreach ($uniq_codes as $key => $code_retour) { $nb_leg++; // Recherche l'oid du code d'erreur groupage $code_retour_id = get_code_retour($key); if (trim($code_retour_id) === "") { $code_retour_id = 0; } // Construction de la requête avec les infos qui vont bien $sqlcmd = $leg_query . "VALUES ('$finess', $no_ligne, $rss_id, $code_retour_id, $uniq_codes[$key])"; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW++; //$toResult = execute_sql($sqlcmd, $nbE, $nbW ); } } } } } } fclose($handle); } } if ($sqlcmd_exec != "") { $toResult = execute_sql($sqlcmd_exec, $nbE, $nbW_actesxx ); $sqlcmd_exec = ""; } commit_trans(); analyse_table_temp("p_rsa"); if (!$error_leg_file) { logInfoMsg("GENERATION DES ERREURS DE GROUPAGE. $nb_rsa_err RSA impactés, $nb_leg erreurs de groupage remontées"); } else { logWarnMsg("Le fichier LEG d'erreurs de groupage n'est pas au bon format de données. Aucune erreur de groupage remontée"); } logInfoMsg("FIN GENERATION DES RSA. $nb lus, $nbW écrits, $nbE erreurs."); } // Traitement des RSF function generation_rsf_sans_rss() { global $iCTI_connexion; global $ENV_TYPEETS; global $annee_fin; global $import_id; global $ENV_PMSIPROVIDER; global $ENV_PMSIPROVIDER2; global $file_RSF; global $file_exists_RSF; global $rssmed_array; global $rssnom_array; global $rssprenom_array; global $current_rsfa_index; logInfoMsg("INITIALISATION DES RSF SANS RSS"); $w_ENV_PMSIPROVIDER = $ENV_PMSIPROVIDER; begin_trans(); $nb = 0; $nbW = 0; $nbW_rss = 0; $nbW_rum = 0; $nbW_detail = 0; $nbW_lpp = 0; $nbW_ucd = 0; $nbE = 0; commit_trans(); $sqlcmd_insert_rum = "INSERT INTO temp.p_rss_rum( "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "rss_id, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "finess, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "no_rss, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "no_rum, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "date_entree, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "date_sortie, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "mode_entree, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "provenance, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "mode_sortie, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "destination, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "duree_sejour, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "nb_seances, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "unite_medicale, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "diagnostic_principal_id, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "diagnostic_relie_id, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "unite_medicale_id, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "type_autorisation, "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . "igs2 "; $sqlcmd_insert_rum = $sqlcmd_insert_rum . ") "; $sqlcmd_insert_rss = "INSERT INTO temp.p_rss("; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "oid, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "no_patient, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "finess, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "no_rss, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "version_groupage, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "date_naissance, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "sexe, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "date_entree, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "date_sortie, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "mode_entree, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "provenance, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "mode_sortie, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "destination, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "code_postal, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "code_postal_id, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "poids_bebe, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "igs2, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "cma, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "groupe_ghm, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "duree_sejour, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "nb_rsa, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "age, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "supprime, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "date_import, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "nb_rum, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "secteur, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "no_sejour_administratif, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "nb_seances, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "ghm_fg9, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "ghm_id, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "medecin_rss_id, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "ghs_id, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "mois_sortie, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "diagnostic_principal_id, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "diagnostic_relie_id, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "no_rum_principal, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "unite_medicale_principale_id, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "import_id, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "en_cours, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "en_cours_etat, "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . "traitement_epmsi, "; $sqlcmd_insert_rss .= " age_gestationnel, date_dernieres_regles, confirmation_codage, type_machine_rdth, type_dosimetrie, numero_innovation, nombre_ivg_anterieures, annee_ivg_precedente, nombre_naissances_vivantes_anterieures, coefficient_prudentiel_theorique "; $sqlcmd_insert_rss = $sqlcmd_insert_rss . ") "; $sqlcmd_insert_identite = "INSERT INTO temp.p_identites( "; $sqlcmd_insert_identite = $sqlcmd_insert_identite . "rss_id, "; $sqlcmd_insert_identite = $sqlcmd_insert_identite . "finess, "; $sqlcmd_insert_identite = $sqlcmd_insert_identite . "no_rss, "; $sqlcmd_insert_identite = $sqlcmd_insert_identite . "nom, "; $sqlcmd_insert_identite = $sqlcmd_insert_identite . "prenom "; $sqlcmd_insert_identite = $sqlcmd_insert_identite . ") "; $no_ligne = 0; $BUF_version = ""; $last_no_rss = -9999999999999; // prestation RSS if ($file_exists_RSF && $ENV_TYPEETS != "1") { $current_rsfa_index = 0; $handle = @fopen($file_RSF, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); if (trim($buffer) != "" ) { $BUF_record = read_rsf_partial_line($buffer); if ($BUF_record["ok"] == TRUE) { // ENTETE RSF if ($BUF_record["type_enregistrement"] == "A") { // RSS if (controle_check_num($BUF_record["no_rss"],0,FALSE,$erreur,$commentaire)) { $no_rss = get_numrss($BUF_record["no_rss"]); } } } } } } } $current_rsfa_index = 0; $sequence_rss_id = 0; $sqlcmd_exec = ""; $handle = @fopen($file_RSF, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" ) { $nb++; $BUF_record = read_rsf_line($buffer, TRUE, FALSE, FALSE, FALSE); // ENTETE RSF if ($BUF_record["type_enregistrement"] == "A") { if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = $BUF_record["no_facture"] + 99000000000; $BUF_record["no_rss"] = '9' . str_pad(ltrim($BUF_record["no_facture"], '0'), 8, '0', STR_PAD_LEFT); } $no_rss = get_numrss($BUF_record["no_rss"]); $rss_ok = TRUE; if ($rss_ok == TRUE) { $rsf_ok = TRUE; if ($rsf_ok == TRUE) { $rss_id = get_rss($no_rss); if (get_num($rss_id) == 0 && $no_rss != $last_no_rss) { if (strlen($sqlcmd_exec) > 64000) { $toResult = execute_sql($sqlcmd_exec, $nbE, $nbW_actesxx ); $sqlcmd_exec = ""; } $no_patient = 0; $finess = $BUF_record["finess"]; $no_rss = get_numrss($BUF_record["no_rss"]); $en_cours = "0"; $en_cours_etat = ""; $version_groupage = ""; if (controle_check_date($BUF_record["date_naissance"],$none,$none, true)) { $date_naissance = sqlDate($BUF_record["date_naissance"]); } else { $date_naissance = default_birth_date($BUF_record["date_naissance"]); } $sexe = $BUF_record["sexe"]; if ($sexe != "1" && $sexe != "2" && $sexe != "3" ) { $sexe = "1"; if ($w_ENV_PMSIPROVIDER == "shs") { if ($sexe == "3" || $sexe == "5") { $sexe = "2"; } else { $sexe = "1"; } } } if (controle_check_date($BUF_record["date_entree"],$none,$none, true)) { $date_entree = sqlDate($BUF_record["date_entree"]); } else { $date_entree = "$annee_fin-01-01"; } $mode_entree = "8"; $provenance = ""; if (controle_check_date($BUF_record["date_sortie"],$none,$none, true)) { $date_sortie = sqlDate($BUF_record["date_sortie"]); } else { $date_sortie = $date_entree; } $mode_sortie = "8"; $destination = ""; $code_postal = trim($BUF_record["code_postal"]); $code_postal_id = 0; $poids_bebe = 0; $igs2 = 0; $cma = ""; $groupe_ghm = ""; $duree_sejour = 0; $nb_rsa = 1; $age = 0; $supprime = ""; $date_import = "2099-12-31"; $nb_rum = 1; $secteur = ""; $no_sejour_administratif = get_charAsNum($BUF_record["no_sejour_administratif"]); $nb_seances = 0; $ghm_fg9 = ""; $ghm_id = 0; $medecin_rss_id = 0; $ghs_id = 0; $mois_sortie = 0; $diagnostic_principal_id = 0; $diagnostic_relie_id = 0; $no_rum_principal = 1; $unite_medicale_principale_id = 0; $age_gestationnel = 0; $date_dernieres_regles = "2099-12-31"; $confirmation_codage = "0"; $type_machine_rdth = "0"; $type_dosimetrie = "0"; $numero_innovation = ""; $nombre_ivg_anterieures = 0; $annee_ivg_precedente = 0; $nombre_naissances_vivantes_anterieures = 0; // OID rss $oid = 0; $no_rum = 1; if ($no_rum == 1) { if ($sequence_rss_id == 0) { $result = $iCTI_connexion->query("SELECT MAX(oid) AS oid FROM ( SELECT COALESCE(max(oid)+1,1) AS oid FROM pmsi.p_rss UNION SELECT COALESCE(max(oid)+1,1) AS oid FROM temp.p_rss ) subview"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $sequence_rss_id = $record["oid"]; } } } else { $sequence_rss_id++; } $rss_id = $sequence_rss_id; } // Medecin RSS $code_med = ""; $code_med = @$rssmed_array[get_numrss($BUF_record["no_rss"])]; if ($code_med != "") { $medecin_rss_id = get_medecin($code_med); } // Création RUM $type_autorisation = ""; $unite_medicale = ""; $unite_medicale_id = 0; $sqlcmd = "$sqlcmd_insert_rum VALUES($rss_id, '$finess', $no_rss, $no_rum, '$date_entree', '$date_sortie', '$mode_entree', '$provenance', '$mode_sortie', '$destination', '$date_sortie'::date - '$date_entree'::date, $nb_seances, '$unite_medicale', $diagnostic_principal_id, $diagnostic_relie_id, $unite_medicale_id, '$type_autorisation', 0 ) "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_rum++; //$toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); // création RSS $no_rum_principal = 1; $unite_medicale_principale_id = 0; // coefficient prudentiel théorique // 0.9930 depuis mars 2017 $coefficient_prudentiel_theorique = 0.9930; $sqlcmd = "$sqlcmd_insert_rss VALUES ( $rss_id, $no_patient, '$finess', $no_rss, '$version_groupage', '$date_naissance', '$sexe', '$date_entree', '$date_sortie', '$mode_entree', '$provenance', '$mode_sortie', '$destination', '$code_postal', $code_postal_id, $poids_bebe, $igs2, '$cma', '$groupe_ghm', '$date_sortie'::date - '$date_entree'::date, $nb_rsa, date_part('year','$date_entree'::date) - date_part('year','$date_naissance'::date) , '$supprime', '$date_import', $nb_rum, '$secteur', '$no_sejour_administratif', $nb_seances, '$ghm_fg9', $ghm_id, $medecin_rss_id, $ghs_id, (date_part('year','$date_sortie'::date) * 100) + date_part('month','$date_sortie'::date), $diagnostic_principal_id, $diagnostic_relie_id, $no_rum_principal, $unite_medicale_principale_id, $import_id, '$en_cours', '$en_cours_etat', '30', $age_gestationnel, '$date_dernieres_regles'::date, '$confirmation_codage', '$type_machine_rdth', '$type_dosimetrie', '$numero_innovation', $nombre_ivg_anterieures, $annee_ivg_precedente, $nombre_naissances_vivantes_anterieures, $coefficient_prudentiel_theorique ) "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_rss++; //$toResult = execute_sql($sqlcmd, $nbE, $nbW_rss ); new_rss($no_rss, $rss_id); // identite $nom_rss = ""; $nom_rss = trim(@$rssnom_array[get_num($no_rss)]); $prenom_rss = trim(@$rssprenom_array[get_num($no_rss)]); if ($nom_rss == "") { $nom_rss = trim(@$rssnom_array['-' . get_charAsNum($no_sejour_administratif)]); $prenom_rss = trim(@$rssprenom_array['-' . get_charAsNum($no_sejour_administratif)]); } if ($nom_rss == "") { $nom_rss = "RSS $no_rss"; $prenom_rss = ""; } $nom_rss = toSQL($nom_rss); $prenom_rss = toSQL($prenom_rss); $sqlcmd = "$sqlcmd_insert_identite VALUES ($rss_id, '$finess', $no_rss, '$nom_rss', '$prenom_rss' ) "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; //$toResult = execute_sql($sqlcmd, $nbE, $nbW_ide ); } } } $last_no_rss = $no_rss; } } } fclose($handle); } if ($sqlcmd_exec != "") { $toResult = execute_sql($sqlcmd_exec, $nbE, $nbW_actesxx ); $sqlcmd_exec = ""; } get_rss("*setarray"); $sequence_rss_id++; $sqlcmd = "ALTER SEQUENCE pmsi.s_rss RESTART WITH $sequence_rss_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); analyse_table_temp("p_rss"); analyse_table_temp("p_rss_rum"); logInfoMsg("$nbW_rss RSS fictifs créés"); logInfoMsg("$nbW_rum RUM fictifs créés"); $nbW = $nbW_rss + $nbW_rum ; logInfoMsg("FIN INITIALISATION DES RSF SANS RSS. $nb lus, $nbW écrits, $nbE erreurs."); } // Traitement des RSF function generation_rsf() { global $iCTI_connexion; global $ENV_TYPEETS; global $ENV_OPTPMSI_GHSBB; global $ENV_OPTPMSI_FSD_B; global $import_id; global $annee_mois_fin; global $file_ACTMED; global $file_RSS; global $file_RSF; global $file_exists_VSE; global $file_exists_RSF; global $current_rsfa_index; logInfoMsg("GENERATION DES RSF"); begin_trans(); enable_index("i_rsf_total_3"); $nb = 0; $nbW = 0; $nb_rsf = 0; $nbW_total = 0; $nbW_detail = 0; $nbW_lpp = 0; $nbW_ucd = 0; $nbW_actes = 0; $nbE = 0; get_rss_um("*setarray"); commit_trans(); // Exécutants $actmed_array = array(); $actesM_array = array(); logDebugMsg("ACTMED FILE : $file_ACTMED"); $handle = @fopen($file_ACTMED, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); if (trim($buffer) != "" ) { $BUF_record = read_actmed_line($buffer); if ($BUF_record["type_enregistrement"] == "ACTMED") { $cle = get_numrss($BUF_record["no_rss"]) . $BUF_record["code_acte"] . get_date_AAAAMMJJ($BUF_record["date_acte"]) . $BUF_record["activite_ccam"] ; $actmed_array[$cle] = $BUF_record["code_medecin"]; $cle = get_numrss($BUF_record["no_rss"]) . $BUF_record["code_acte"] . "00000000" . $BUF_record["activite_ccam"]; $actmed_array[$cle] = $BUF_record["code_medecin"]; // cas particulier actes anesthésie en activite 1 if ($BUF_record["activite_ccam"] == "4") { $gen1 = FALSE; if ($BUF_record["code_acte"] == "AFLB010") { $gen1 = TRUE; } if ($BUF_record["code_acte"] == "GELE001") { $gen1 = TRUE; } if ($BUF_record["code_acte"] == "YYYY003") { $gen1 = TRUE; } if ($BUF_record["code_acte"] == "YYYY004") { $gen1 = TRUE; } if ($BUF_record["code_acte"] == "YYYY015") { $gen1 = TRUE; } if ($BUF_record["code_acte"] == "YYYY020") { $gen1 = TRUE; } if ($BUF_record["code_acte"] == "YYYY041") { $gen1 = TRUE; } if ($BUF_record["code_acte"] == "YYYY044") { $gen1 = TRUE; } if ($BUF_record["code_acte"] == "YYYY108") { $gen1 = TRUE; } if ($BUF_record["code_acte"] == "YYYY118") { $gen1 = TRUE; } if ($BUF_record["code_acte"] == "ZZLP008") { $gen1 = TRUE; } if ($BUF_record["code_acte"] == "ZZLP012") { $gen1 = TRUE; } if ($BUF_record["code_acte"] == "ZZLP025") { $gen1 = TRUE; } if ($BUF_record["code_acte"] == "ZZLP030") { $gen1 = TRUE; } if ($BUF_record["code_acte"] == "ZZLP042") { $gen1 = TRUE; } if ($BUF_record["code_acte"] == "ZZLP054") { $gen1 = TRUE; } if ($gen1 == TRUE) { $cle = get_numrss($BUF_record["no_rss"]) . $BUF_record["code_acte"] . get_date_AAAAMMJJ($BUF_record["date_acte"]) . "1"; $actmed_array[$cle] = $BUF_record["code_medecin"]; $cle = get_numrss($BUF_record["no_rss"]) . $BUF_record["code_acte"] . "00000000" . "1"; $actmed_array[$cle] = $BUF_record["code_medecin"]; } } } } } fclose($handle); } $sqlcmd_exec = ""; // prestation RSS public if ($file_exists_RSF && $ENV_TYPEETS != "1") { $current_rsfa_index = 0; $handle = @fopen($file_RSF, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); if (trim($buffer) != "" ) { $BUF_record = read_rsf_partial_line($buffer); if ($BUF_record["ok"] == TRUE) { // ENTETE RSF if ($BUF_record["type_enregistrement"] == "A") { if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = $BUF_record["no_facture"] + 99000000000; $BUF_record["no_rss"] = '9' . str_pad(ltrim($BUF_record["no_facture"], '0'), 8, '0', STR_PAD_LEFT); } // RSS if (controle_check_num($BUF_record["no_rss"],0,FALSE,$erreur,$commentaire)) { $no_rss = get_numrss($BUF_record["no_rss"]); } } } } } } } $sqlcmd_insert_rsf = "INSERT INTO temp.p_rsf_total( rss_id, finess, no_rss, code_pec, rang_beneficiaire, regime, nature_pec, justificatif_exo, no_facture, code_regularisation, base_remboursement, sejour_facture, sejour_remboursable, honoraires_factures, honoraires_remboursable, t2a_facture, dmi_facture, phc_facture, participation_assure_avant_oc, sejour_remboursable_2, honoraires_remboursable_2, montant_dmi_ghs2006, forfait_facture, nb_exh, ca_exh, nb_exb, ca_exb, nb_ghs, ca_ghs, taux_remboursement, matricule_assure, cle_matricule_assure, pat_benef_cmu, valorise_fides, no_facture_sejour_mere, exoneration_tm_id, regime_id, nature_pec_id, code_pec_id, type_contrat_oc_id, motif_non_facturation_id, code_gestion, no_organisme_complementaire, no_at_date_adc, nb_ghsmin, montant_total_sejour_patient, nb_rejet_amo, date_facture_amo, date_facture_amc, date_facture_patient, date_paiement_amo, date_paiement_amc, date_paiement_patient, statut_ft_amo, statut_ft_amc, statut_ft_patient, pays_amo, no_ligne, no_ipp)"; $sqlcmd_insert_prestation = "INSERT INTO temp.p_rsf_detail( rss_id, finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, base_remboursement_sauf_transition, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum, type_uf_consultation_id, no_ligne) "; $sqlcmd_insert_lpp = "INSERT INTO temp.p_rss_lpp( "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "rss_id, "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "finess, "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "no_rss, "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "rang, "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "date_lpp, "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "lpp_id, "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "nombre, "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "prix_unitaire, "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "montant_facture,"; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "non_pris_en_compte"; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . ") "; $sqlcmd_insert_ucd = "INSERT INTO temp.p_rss_ucd( finess, no_rss, rang, date_ucd, ucd_id, nombre, coefficient_fractionnement, prix_unitaire_achat, prix_unitaire_ecart_indemnisable, montant_ecart_indemnisable, montant_facture, rss_id, non_pris_en_compte, type_ucd_id, indication) "; $sqlcmd_insert_acte = "INSERT INTO temp.p_rss_actes("; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "rss_id, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "finess, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "no_rss, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "no_rum, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "unite_medicale, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "unite_medicale_id, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "date_acte, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "medecin_id, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "acte_id, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "acte_ccam_descriptif_id, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "nombre, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "phase_ccam, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "activite_ccam, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "extension_ccam, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "modificateur_ccam_1, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "modificateur_ccam_2, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "modificateur_ccam_3, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "modificateur_ccam_4, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "remboursement_excp_ccam, "; $sqlcmd_insert_acte = $sqlcmd_insert_acte . "association_nonprevue_ccam"; $sqlcmd_insert_acte = $sqlcmd_insert_acte . ") "; $sqlcmd_insert_transfert = "INSERT INTO temp.p_rss_transferts( rss_id, etablissement_provenance_id, etablissement_destination_id) "; // Génération $no_ligne = 0; $no_ligne_a = 0; $rss_id = 0; $nblpp = 0; $nbucd = 0; $last_no_rss = -1; $inserted_rsf_array = array(); $current_rsfa_index = 0; $handle = @fopen($file_RSF, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 10000000000) { $nb++; $BUF_record = read_rsf_line($buffer); if ($BUF_record["ok"] == TRUE) { // ENTETE RSF if ($BUF_record["type_enregistrement"] == "A") { if (strlen($sqlcmd_exec) > 64000) { $toResult = execute_sql($sqlcmd_exec, $nbE, $nbW_actesxx ); $sqlcmd_exec = ""; } $positif = true; $no_ligne_a++; $rss_id = 0; if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = $BUF_record["no_facture"] + 99000000000; $BUF_record["no_rss"] = '9' . str_pad(ltrim($BUF_record["no_facture"], '0'), 8, '0', STR_PAD_LEFT); } $no_rss = get_numrss($BUF_record["no_rss"]); $rsf_ok = TRUE; if ($rsf_ok == TRUE) { $nature_operation = trim($BUF_record["nature_operation"]); if ($nature_operation == "5") { $positif = false; } $nb_rsf++; $finess = $BUF_record["finess"]; $code_pec = $BUF_record["code_pec"]; // deprecated, remplacé par code_pec_id if ($ENV_TYPEETS == "1" && $code_pec != "1" && $code_pec != "2" && $code_pec != "3" && $code_pec != "4" && $code_pec != "5" ) { $code_pec = "1"; } if ($ENV_TYPEETS != "1" && $code_pec != "0" && $code_pec != "1" && $code_pec != "2" && $code_pec != "3" && $code_pec != "X" ) { $code_pec = "1"; } $code_pec_id = get_pec($code_pec); $rang_beneficiaire = $BUF_record["rang_beneficiaire"]; $regime = $BUF_record["grand_regime"]; // deprecated, remplacé par regime_id $regime_id = get_regime($BUF_record["grand_regime"]); $nature_pec = $BUF_record["nature_assurance"]; // deprecated, remplacé par nature_pec_id if (! controle_check_num($nature_pec,2, FALSE,$none,$none)) { $nature_pec = "10"; } $nature_pec_id = get_nature_pec($nature_pec); $matricule_assure = toSQL($BUF_record["immatriculation_assure"]) ; $cle_matricule_assure = $BUF_record["cle_immatriculation_assure"] ; $justificatif_exo = $BUF_record["justificatif_exo"]; // deprecated, remplacé par exoneration_tm_id $exoneration_tm_id = get_exoneration_tm($BUF_record["justificatif_exo"]); $no_facture = get_num($BUF_record["no_facture"]); $code_regularisation = $BUF_record["nature_operation"]; if ($code_regularisation != "1" && $code_regularisation != "2" && $code_regularisation != "3" && $code_regularisation != "4" && $code_regularisation != "5" && $code_regularisation != "9" ) { $code_regularisation = "1"; } $motif_non_facturation_id = get_motif_non_facturation($BUF_record["motif_non_facturation"]); $type_contrat_oc_id = get_type_contrat_oc($BUF_record["type_contrat_oc"]); $base_remboursement = get_num($BUF_record["base_remboursement_c"]) / 100; $sejour_facture = get_num($BUF_record["base_remboursement_c"]) / 100; $sejour_remboursable = 0; $honoraires_factures = get_num($BUF_record["total_honoraires_factures"]) / 100; $honoraires_remboursable = get_num($BUF_record["total_honoraires_remboursable"]) / 100; $t2a_facture = 0; $dmi_facture = 0; $phc_facture = 0; $participation_assure_avant_oc = get_num($BUF_record["total_assure_avant_oc"]) / 100; $no_ipp = floatval($BUF_record["no_ipp"]); $sejour_remboursable_2 = 0; $honoraires_remboursable_2 = 0; $montant_dmi_ghs2006 = 0; $forfait_facture = 0; $nb_exh = 0; $ca_exh = 0; $nb_exb = 0; $ca_exb = 0; $nb_ghs = 0; $ca_ghs = 0; $nb_ghsmin = 0; // Normalement, dans le standard, seules les valeurs 0 ou 1 sont autorisées mais SIGEMS // utilise O (oui) et N (non) $pat_benef_cmu = $BUF_record["pat_benef_cmu"]; if ($pat_benef_cmu == "O" || $pat_benef_cmu == "1") { $pat_benef_cmu = 1; } else if ($pat_benef_cmu == "N" || $pat_benef_cmu == "0") { $pat_benef_cmu = 0; } else { $pat_benef_cmu = 'null'; // valeur par défaut si erreur de codage } // Idem pour valorise_fides $valorise_fides = $BUF_record["valorise_fides"]; if ($valorise_fides == "O" || $valorise_fides == "1") { $valorise_fides = 1; } else if ($valorise_fides == "N" || $valorise_fides == "0") { $valorise_fides = 0; } else { $valorise_fides = 'null'; // valeur par défaut si erreur de codage } if (strlen($BUF_record["no_facture_sejour_mere"]) == 0) $no_facture_sejour_mere = ""; else $no_facture_sejour_mere = $BUF_record["no_facture_sejour_mere"]; $date_entree_rsf = sqlDate($BUF_record["date_entree"]); $no_organisme_complementaire = $BUF_record["no_organisme_complementaire"]; $no_at_date_adc = $BUF_record["no_at_date_adc"]; $code_gestion = $BUF_record["code_gestion"]; // nouveautés 2018 $montant_total_sejour_patient = get_num($BUF_record["montant_total_sejour_patient"]) / 100; $nb_rejet_amo = get_num($BUF_record["nb_rejet_amo"]); $date_facture_amo = get_date_or_null($BUF_record["date_facture_amo"]); $date_facture_amc = get_date_or_null($BUF_record["date_facture_amc"]); $date_facture_patient = get_date_or_null($BUF_record["date_facture_patient"]); $date_paiement_amo = get_date_or_null($BUF_record["date_paiement_amo"]); $date_paiement_amc = get_date_or_null($BUF_record["date_paiement_amc"]); $date_paiement_patient = get_date_or_null($BUF_record["date_paiement_patient"]); $statut_ft_amo = $BUF_record["statut_ft_amo"]; $statut_ft_amc = $BUF_record["statut_ft_amc"]; $statut_ft_patient = $BUF_record["statut_ft_patient"]; $pays_amo = $BUF_record["pays_amo"]; $rss_id = get_rss($no_rss); //if($rss_id === '483612') { //echo "\r\n" . date("d/m/Y H:i:s") . "\t" . "DEBUG" . "\t" . "DATE PAIEMENT AMO BEFORE : " . $BUF_record["date_paiement_amo"]; // echo "\r\n" . date("d/m/Y H:i:s") . "\t" . "DEBUG" . "\t" . "DATE PAIEMENT AMO AFTER : " . $date_paiement_amo; //} // OID rss if ($positif == false) { $base_remboursement = 0 - $base_remboursement; $sejour_facture = 0 - $sejour_facture; $honoraires_factures = 0 - $honoraires_factures; $honoraires_remboursable = 0 - $honoraires_remboursable; $participation_assure_avant_oc = 0 - $participation_assure_avant_oc; } if ($rss_id > 0) { // Création RSF total if ($no_rss != $last_no_rss) { $inserted_rsf = @$inserted_rsf_array[$no_rss] + 0; if ($inserted_rsf == 0) { $sqlcmd = "$sqlcmd_insert_rsf VALUES( $rss_id, '$finess', $no_rss, '$code_pec', '$rang_beneficiaire', '$regime', '$nature_pec', '$justificatif_exo', '$no_facture', '$code_regularisation', $base_remboursement, $sejour_facture, $sejour_remboursable, $honoraires_factures, $honoraires_remboursable, $t2a_facture, $dmi_facture, $phc_facture, $participation_assure_avant_oc, $sejour_remboursable_2, $honoraires_remboursable_2, $montant_dmi_ghs2006, $forfait_facture, $nb_exh, $ca_exh, $nb_exb, $ca_exb, $nb_ghs, $ca_ghs, 100, '$matricule_assure', '$cle_matricule_assure', $pat_benef_cmu, $valorise_fides, '$no_facture_sejour_mere', $exoneration_tm_id, $regime_id, $nature_pec_id, $code_pec_id, $type_contrat_oc_id, $motif_non_facturation_id, '$code_gestion', '$no_organisme_complementaire', '$no_at_date_adc', $nb_ghsmin, $montant_total_sejour_patient, $nb_rejet_amo, $date_facture_amo, $date_facture_amc, $date_facture_patient, $date_paiement_amo, $date_paiement_amc, $date_paiement_patient, '$statut_ft_amo', '$statut_ft_amc', '$statut_ft_patient', '$pays_amo', $no_ligne_a, $no_ipp) "; } else { $no_ligne_a--; $sqlcmd = "UPDATE temp.p_rsf_total SET base_remboursement = base_remboursement + $base_remboursement, sejour_facture = sejour_facture + $sejour_facture, sejour_remboursable = sejour_remboursable + $sejour_remboursable, honoraires_factures = honoraires_factures + $honoraires_factures, honoraires_remboursable = honoraires_remboursable + $honoraires_remboursable WHERE rss_id = $rss_id "; } $last_no_rss = $no_rss; $inserted_rsf_array[$no_rss] = $no_rss; } else { $no_ligne_a--; $sqlcmd = " UPDATE temp.p_rsf_total SET base_remboursement = base_remboursement + $base_remboursement, sejour_facture = sejour_facture + $sejour_facture, sejour_remboursable = sejour_remboursable + $sejour_remboursable, honoraires_factures = honoraires_factures + $honoraires_factures, honoraires_remboursable = honoraires_remboursable + $honoraires_remboursable WHERE rss_id = $rss_id "; } $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_total++; //$toResult = execute_sql($sqlcmd, $nbE, $nbW_total ); } else { logInfoMsg($no_rss . "\tPas d'ajout dans RSF TOTAL"); } } } // RSF B if ($BUF_record["type_enregistrement"] == "B" && $rss_id > 0) { $finess = $BUF_record["finess"]; $no_rss = get_numrss($BUF_record["no_rss"]); $nature = ""; $mt = $BUF_record["mode_traitement"]; if (! controle_check_num($mt,2, TRUE,$none,$none)) { $mt = ""; } $dmt = $BUF_record["discpline_prestation"]; if (! controle_check_num($mt,3, TRUE,$none,$none)) { $dmt = ""; } $date_debut = sqlDate($BUF_record["date_debut"]); $date_fin = sqlDate($BUF_record["date_fin"]); $nombre= get_num($BUF_record["nombre"],1); $coefficient = get_num($BUF_record["coefficient"],100) / 100; $prix_unitaire = get_num($BUF_record["prix_unitaire"]) / 100; $base_remboursement = get_num($BUF_record["base_remboursement"]) / 100; $taux_remboursement = get_num($BUF_record["taux"], 100) ; $sejour_facture = get_num($BUF_record["montant_total_depense"]) / 100; $sejour_remboursable = get_num($BUF_record["montant_remboursable"]) / 100; $compteur = ""; $ligne_t2a = ""; $pec_fj = $BUF_record["code_pec_fj"]; // deprecated, remplacé par code_pec_fj_id $pec_fj_id = get_pec_fj($BUF_record["code_pec_fj"]); $coefficient_mco = get_num($BUF_record["coefficient_mco"], 10000) / 10000; $sejour_remboursable_2 = 0; $ghs_id = 0; $sejour_rembourse_noemie = get_num($BUF_record["montant_remboursé_noemie"]) / 100; $nature_noemie = $BUF_record["nature_noemie"]; $prestation_id = 0; $ghs_id = get_ghs($BUF_record["no_ghs"]); $prestation_id = get_prestation($BUF_record["code_acte"]); if ($positif == false) { $nombre = 0 - $nombre; $base_remboursement = 0 - $base_remboursement; $sejour_facture = 0 - $sejour_facture; $sejour_remboursable = 0 - $sejour_remboursable; $honoraires_factures = 0 - $honoraires_factures; $honoraires_remboursable = 0 - $honoraires_remboursable; $sejour_rembourse_noemie = 0 - $sejour_rembourse_noemie; } $sqlcmd = "$sqlcmd_insert_prestation VALUES($rss_id, '$finess', $no_rss, '$nature', '$mt', '$dmt', '$date_debut', '$date_fin', $nombre, $coefficient, $prix_unitaire, $base_remboursement, $base_remboursement, $taux_remboursement, $sejour_facture, $sejour_remboursable, '$compteur', '$ligne_t2a', '$pec_fj', '$pec_fj_id', $coefficient_mco, $sejour_remboursable_2, $ghs_id, $sejour_rembourse_noemie, '$nature_noemie', $prestation_id, 'B' , 1, '1', '0', 0, 0, 0, 0, $no_ligne ) "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_detail++; //$toResult = execute_sql($sqlcmd, $nbE, $nbW_detail ); // SI GHS, mise à jour RSF if ($BUF_record["code_acte"] == "GHS") { if ($ghs_code < 5800 || $ghs_code > 5840) { $sqlcmd = "UPDATE temp.p_rss SET ghs_id = '$ghs_id' WHERE oid = $rss_id AND ghs_id = 0 "; //$toResult = execute_sql($sqlcmd, $nbE, $nbW ); } } if ($BUF_record["code_acte"] == "EXH") { if ($ghs_code < 5800 || $ghs_code > 5840) { $sqlcmd = "UPDATE temp.p_rss SET ghs_id = '$ghs_id' WHERE oid = $rss_id AND ghs_id = 0"; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; //$toResult = execute_sql($sqlcmd, $nbE, $nbW ); } } } // RSF C if ($BUF_record["type_enregistrement"] == "C" && $rss_id > 0) { $finess = $BUF_record["finess"]; $no_rss = get_numrss($BUF_record["no_rss"]); $nature = ""; $mt = $BUF_record["mode_traitement"]; if (! controle_check_num($mt,2, TRUE,$none,$none)) { $mt = ""; } $dmt = $BUF_record["discpline_prestation"]; if (! controle_check_num($mt,3, TRUE,$none,$none)) { $dmt = ""; } $date_debut = sqlDate($BUF_record["date_debut"]); $date_fin = sqlDate($BUF_record["date_fin"]); $nombre= get_num($BUF_record["nombre"],1); $coefficient = get_num($BUF_record["coefficient"],100) / 100; $prix_unitaire = get_num($BUF_record["prix_unitaire"]) / 100; $base_remboursement = get_num($BUF_record["base_remboursement"]) / 100; $taux_remboursement = get_num($BUF_record["taux"], 100) ; $sejour_facture = get_num($BUF_record["montant_total_depense"]) / 100; $sejour_remboursable = get_num($BUF_record["montant_remboursable"]) / 100; $compteur = ""; $ligne_t2a = ""; $pec_fj = $BUF_record["code_pec_fj"]; // deprecated, remplacé par pec_fj_id $pec_fj_id = get_pec_fj($BUF_record["code_pec_fj"]); $coefficient_mco = get_num($BUF_record["coefficient_mco"], 10000) / 10000; $sejour_remboursable_2 = 0; $ghs_id = 0; $sejour_rembourse_noemie = get_num($BUF_record["montant_remboursé_noemie"]) / 100; $nature_noemie = $BUF_record["nature_noemie"]; $prestation_id = 0; $ghs_id = get_ghs($BUF_record["no_ghs"]); $prestation_id = get_prestation($BUF_record["code_acte"]); $type_uf_consultation_id = get_type_uf_consultation($BUF_record["type_uf_consultation"]); if ($positif == false) { $nombre = 0 - $nombre; $base_remboursement = 0 - $base_remboursement; $sejour_facture = 0 - $sejour_facture; $sejour_remboursable = 0 - $sejour_remboursable; $honoraires_factures = 0 - $honoraires_factures; $honoraires_remboursable = 0 - $honoraires_remboursable; $sejour_rembourse_noemie = 0 - $sejour_rembourse_noemie; } $type_bc = "C"; if ($BUF_record["code_acte"] == "SE1" || $BUF_record["code_acte"] == "SE2" || $BUF_record["code_acte"] == "SE3" || $BUF_record["code_acte"] == "SE4" || $BUF_record["code_acte"] == "SE5" || $BUF_record["code_acte"] == "SE6" || $BUF_record["code_acte"] == "SE7" || $BUF_record["code_acte"] == "ATU" || $BUF_record["code_acte"] == "FFM" || $BUF_record["code_acte"] == "APE" || $BUF_record["code_acte"] == "AP2" || $BUF_record["code_acte"] == "FPI" || ($BUF_record["code_acte"] == "FSD" && $ENV_OPTPMSI_FSD_B == "1")) { $type_bc = "B"; } $sqlcmd = "$sqlcmd_insert_prestation VALUES($rss_id, '$finess', $no_rss, '$nature', '$mt', '$dmt', '$date_debut', '$date_fin', $nombre, $coefficient, $prix_unitaire, $base_remboursement, $base_remboursement, $taux_remboursement, $sejour_facture, $sejour_remboursable, '$compteur', '$ligne_t2a', '$pec_fj', '$pec_fj_id', $coefficient_mco, $sejour_remboursable_2, $ghs_id, $sejour_rembourse_noemie, '$nature_noemie', $prestation_id, '$type_bc', 1, '1', '0', 0, 0, 0, $type_uf_consultation_id, $no_ligne) "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_detail++; } // RSF P (LPP) if ($BUF_record["type_enregistrement"] == "P" && $rss_id > 0) { $nblpp++; if ($rss_id > 0) { $finess = $BUF_record["finess"]; $no_rss = get_numrss($BUF_record["no_rss"]); $rang = ""; $date_lpp = sqlDate($BUF_record["date_debut"]); if (!controle_check_date($BUF_record["date_debut"],$none,$none)) { $date_lpp = $date_entree_rsf; } $lpp_id = 0; $nombre = get_num($BUF_record["nombre"],1); $prix_unitaire = get_num($BUF_record["prix_unitaire"]) / 100; $montant_facture = get_num($BUF_record["montant_facture"]) / 100; $lpp_id = get_lpp($BUF_record["code_lpp"]); if ($positif == false) { $nombre = 0 - $nombre; $montant_facture = 0 - $montant_facture; $sejour_facture = 0 - $sejour_facture; } $sqlcmd = "$sqlcmd_insert_lpp VALUES( $rss_id, '$finess', $no_rss, '$rang', '$date_lpp', $lpp_id, $nombre, $prix_unitaire, $montant_facture, '0') "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_lpp++; //$toResult = execute_sql($sqlcmd, $nbE, $nbW_lpp ); if (get_num($BUF_record["nombre_2"]) > 0) { $lpp_id = 0; $nombre = get_num($BUF_record["nombre_2"]); $prix_unitaire = get_num($BUF_record["prix_unitaire_2"]) / 100; $montant_facture = get_num($BUF_record["montant_facture_2"]) / 100; $lpp_id = get_lpp($BUF_record["code_lpp_2"]); if ($positif == false) { $nombre = 0 - $nombre; $montant_facture = 0 - $montant_facture; $sejour_facture = 0 - $sejour_facture; } $sqlcmd = "$sqlcmd_insert_lpp VALUES( $rss_id, '$finess', $no_rss, '$rang', '$date_lpp', $lpp_id, $nombre, $prix_unitaire, $montant_facture, '0') "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_lpp++; } } } // RSF H (UCD) if ($BUF_record["type_enregistrement"] == "H" && $rss_id > 0) { $nbucd++; if ($rss_id > 0) { $finess = $BUF_record["finess"]; $no_rss = get_numrss($BUF_record["no_rss"]); $rang = ""; $date_ucd = sqlDate($BUF_record["date_debut"]); if (!controle_check_date($BUF_record["date_debut"],$none,$none)) { $date_ucd = $date_entree_rsf; } $ucd_id = 0; $nombre = get_num($BUF_record["nombre"],1); $coefficient_fractionnement = get_num($BUF_record["coefficient_fractionnement"]) / 10000; if ($coefficient_fractionnement == 0) { $coefficient_fractionnement = 1; } $prix_unitaire_achat = get_num($BUF_record["prix_unitaire_achat"]) / 100; $prix_unitaire_ecart_indemnisable = get_num($BUF_record["prix_unitaire_ecart_indemnisable"]) / 100; $montant_ecart_indemnisable = get_num($BUF_record["montant_ecart_indemnisable"]) / 100; $montant_facture = get_num($BUF_record["montant_facture"]) / 100; $indication = $BUF_record["indication"]; $ucd_id = get_ucd($BUF_record["code_ucd"]); $type_ucd_id = get_type_ucd("SUS"); if ($positif == false) { $nombre = 0 - $nombre; $montant_facture = 0 - $montant_facture; $sejour_facture = 0 - $sejour_facture; } $sqlcmd = "$sqlcmd_insert_ucd VALUES( '$finess', $no_rss, '$rang', '$date_ucd', $ucd_id, $nombre, $coefficient_fractionnement, $prix_unitaire_achat, $prix_unitaire_ecart_indemnisable, $montant_ecart_indemnisable, $montant_facture, $rss_id, '0', $type_ucd_id, upper('$indication'))"; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_ucd++; } } // RSF M actes if ($BUF_record["type_enregistrement"] == "M" && $rss_id > 0) { $finess = $BUF_record["finess"]; $no_rss = get_numrss($BUF_record["no_rss"]); $BUF_code_acte = trim($BUF_record["code_acte"]); $acte_id = get_acte($BUF_code_acte); $date_acte = sqlDate($BUF_record["date_acte"]); if (!controle_check_date($BUF_record["date_acte"],$none,$none)) { $date_acte = $date_entree_rsf; } $phase_ccam = trim($BUF_record["phase_ccam"]); $activite_ccam = trim($BUF_record["activite_ccam"]); if (! controle_check_num($activite_ccam,1, FALSE,$none,$none)) { $activite_ccam = "1"; } $extension_ccam = trim($BUF_record["extension_ccam"]); $modificateur_ccam_1 = trim($BUF_record["modificateur_ccam_1"]); $modificateur_ccam_2 = trim($BUF_record["modificateur_ccam_2"]); $modificateur_ccam_3 = trim($BUF_record["modificateur_ccam_3"]); $modificateur_ccam_4 = trim($BUF_record["modificateur_ccam_4"]); $remboursement_excp_ccam = trim($BUF_record["remboursement_excp_ccam"]); $association_nonprevue_ccam = trim($BUF_record["association_nonprevue_ccam"]); $nombre = 1; $no_rum = 0; $medecin_id = 0; // Medecin acte $cle = get_numrss($BUF_record["no_rss"]) . $BUF_record["code_acte"] . get_date_AAAAMMJJ($BUF_record["date_acte"]) . $BUF_record["activite_ccam"]; $code_med = ""; if (isset($actmed_array[$cle])){ $code_med = $actmed_array[$cle]; if ($code_med === "") { $cle = get_numrss($BUF_record["no_rss"]) . $BUF_record["code_acte"] . "00000000" . $BUF_record["activite_ccam"]; $code_med = $actmed_array[$cle]; } } if ($code_med != "") { $medecin_id = get_medecin($code_med); } $unite_medicale = ""; $unite_medicale_id = get_rss_um($rss_id); if ($unite_medicale_id != 0) { $no_rum = 1; } if ($positif == false) { $nombre = 0 - $nombre; } $sqlcmd = "$sqlcmd_insert_acte VALUES( $rss_id, '$finess', $no_rss, $no_rum, '$unite_medicale', $unite_medicale_id, '$date_acte', $medecin_id, $acte_id, $acte_id, $nombre, '$phase_ccam', '$activite_ccam', '$extension_ccam', '$modificateur_ccam_1', '$modificateur_ccam_2', '$modificateur_ccam_3', '$modificateur_ccam_4', '$remboursement_excp_ccam', '$association_nonprevue_ccam') "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_actes++; $key = trim("$no_rss$BUF_code_acte$activite_ccam"); $actesM_array[$key] = "O"; } // RSF I (transfert) if ($BUF_record["type_enregistrement"] == "I" && $rss_id > 0) { $no_rss = get_num($BUF_record["no_rss"]); $etablissement_provenance_id = 0; // On récupère les séjours déjà présent dans p_rss_transfert qui ont un mode de sortie 7 ou 0 // Afin de garder l'etablissement de provenance $sqlIsTransfert = "SELECT oid, COALESCE(etablissement_provenance_id,0) as prov_id FROM temp.p_rss JOIN temp.transferts_with_no_rss ON transferts_with_no_rss.no_rss = p_rss.no_rss WHERE mode_sortie IN (7, 0) AND p_rss.no_rss = $no_rss; "; $isTransfert = $iCTI_connexion->query($sqlIsTransfert); $res = pg_fetch_array($isTransfert); if ($res != false){ $etablissement_provenance_id = $res["prov_id"]; } $etablissement_destination_id = get_finess($BUF_record["finess_dest"]); $sqlcmd = "$sqlcmd_insert_transfert VALUES( $rss_id, COALESCE($etablissement_provenance_id, 0), COALESCE($etablissement_destination_id,0))"; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_ucd++; } } } } fclose($handle); } if ($sqlcmd_exec != "") { $toResult = execute_sql($sqlcmd_exec, $nbE, $nbW_actesxx ); $sqlcmd_exec = ""; } commit_trans(); // Depuis M03 2019, le numero IPP est renseignable dans les RSF-ACE A. S'il l'est (différent de 0, valeur par défaut), on le met à jour dans les RSS logInfoMsg("IPP selon RSF-ACE-A"); $sqlcmd = "UPDATE temp.p_rss SET no_patient = p_rsf_total.no_ipp FROM temp.p_rsf_total WHERE 1=1 AND p_rss.oid = p_rsf_total.rss_id AND p_rsf_total.no_ipp != 0 AND p_rsf_total.no_ipp != p_rss.no_patient ; "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_lpp ); commit_trans(); // Compteurs $sqlcmd = "UPDATE pmsi.p_imports SET "; $sqlcmd = $sqlcmd . "nb_rsf = $nb_rsf "; $sqlcmd = $sqlcmd . "WHERE oid = $import_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // Ajout des actes rss qui ne sont pas dans les RSF enable_index("i_rss_actes_2"); enable_index("i_rss_actes_8"); if ($ENV_TYPEETS == "1") { logInfoMsg("Actes RUM"); $no_ligne = 0; $handle = @fopen($file_RSS, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 100000000000 ) { $nb++; $BUF_record = read_rum_line($buffer); if ($BUF_record["type_enregistrement"] == "RUM") { if (strlen($sqlcmd_exec) > 64000) { $toResult = execute_sql($sqlcmd_exec, $nbE, $nbW_actesxx ); $sqlcmd_exec = ""; } $no_rss = get_numrss($BUF_record["no_rss"]); $no_rum = get_num($BUF_record["no_rum"]); $unite_medicale = $BUF_record["unite_medicale"]; $unite_medicale_id = get_unite_medicale($BUF_record["unite_medicale"]); $date_entree = sqlDate($BUF_record["date_entree"]); $date_sortie = sqlDate($BUF_record["date_sortie"]); $rss_id = get_rss($no_rss); foreach ($BUF_record["actes"] as $BUF_acte) { $BUF_code_acte = trim(substr($BUF_acte , 8, 7)); $BUF_date_acte = trim(substr($BUF_acte , 0, 8)); $BUF_extension_atih = (intval($BUF_record["version_format"]) >= 117 && trim(substr($BUF_acte , 15, 3) != '-00')) ? trim(substr($BUF_acte , 15, 3)) : ""; $BUF_code_acte .= $BUF_extension_atih; $BUF_activite_ccam = trim(substr($BUF_acte , 16 + $BUF_record["offset_format"], 1)); if (! controle_check_num($BUF_activite_ccam,1, FALSE,$none,$none)) { $BUF_activite_ccam = "1"; } $deja = ""; $key = trim("$no_rss$BUF_code_acte$BUF_activite_ccam"); $deja = @$actesM_array[$key]; $acte_id = get_acte($BUF_code_acte); if ($deja != "O") { if ($rss_id > 0) { $finess = $BUF_record["finess"]; $date_acte = sqlDate($BUF_date_acte); if (!controle_check_date($BUF_date_acte,$none,$none)) { $date_acte = sqlDate($BUF_record["date_entree"]); } $phase_ccam = trim(substr($BUF_acte , 15 + $BUF_record["offset_format"], 1)); $activite_ccam = trim(substr($BUF_acte , 16 + $BUF_record["offset_format"], 1)); if (! controle_check_num($activite_ccam,1, FALSE,$none,$none)) { $activite_ccam = "1"; } $extension_ccam = trim(substr($BUF_acte , 17 + $BUF_record["offset_format"], 1)); $modificateur_ccam_1 = trim(substr($BUF_acte , 18 + $BUF_record["offset_format"], 1)); $modificateur_ccam_2 = trim(substr($BUF_acte , 19 + $BUF_record["offset_format"], 1)); $modificateur_ccam_3 = trim(substr($BUF_acte , 20 + $BUF_record["offset_format"], 1)); $modificateur_ccam_4 = trim(substr($BUF_acte , 21 + $BUF_record["offset_format"], 1)); $remboursement_excp_ccam = trim(substr($BUF_acte , 22 + $BUF_record["offset_format"], 1)); $association_nonprevue_ccam = trim(substr($BUF_acte , 23 + $BUF_record["offset_format"], 1)); $BUF_nombre = trim(substr($BUF_acte , 24 + $BUF_record["offset_format"], 8)); $nombre = get_num($BUF_nombre,1); $medecin_id = 0; // Medecin acte $cle = get_numrss($BUF_record["no_rss"]) . $BUF_code_acte . get_date_AAAAMMJJ($BUF_date_acte) . $activite_ccam ; $code_med = ""; $code_med = $actmed_array[$cle]; if ($code_med == "") { $cle = get_numrss($BUF_record["no_rss"]) . $BUF_code_acte . "00000000" . $activite_ccam; $code_med = ""; $code_med = $actmed_array[$cle]; } if ($code_med != "") { $medecin_id = get_medecin($code_med); } $sqlcmd = "$sqlcmd_insert_acte VALUES( $rss_id, '$finess', $no_rss, $no_rum, '$unite_medicale', $unite_medicale_id, '$date_acte', $medecin_id, $acte_id, $acte_id, $nombre, '$phase_ccam', '$activite_ccam', '$extension_ccam', '$modificateur_ccam_1', '$modificateur_ccam_2', '$modificateur_ccam_3', '$modificateur_ccam_4', '$remboursement_excp_ccam', '$association_nonprevue_ccam') "; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $nbW_actes++; //$toResult = execute_sql($sqlcmd, $nbE, $nbW_actes ); } } // Modification n° RUM else { $sqlcmd = "UPDATE temp.p_rss_actes SET no_rum = $no_rum, unite_medicale = '$unite_medicale', unite_medicale_id = $unite_medicale_id "; $sqlcmd = $sqlcmd . "WHERE rss_id = $rss_id AND acte_id = $acte_id AND date_acte BETWEEN '$date_entree' AND '$date_sortie' AND no_rum = 0"; $sqlcmd_exec = "$sqlcmd_exec$sqlcmd;"; $toResult = execute_sql($sqlcmd, $nbE); } } } } } fclose($handle); } } if ($sqlcmd_exec != "") { $toResult = execute_sql($sqlcmd_exec, $nbE, $nbW_actesxx ); $sqlcmd_exec = ""; } commit_trans(); // Association rss mère au bébé // Première phase : les n° factures bébés sont désormais indiquées /* christophe */ // RSS Id de la mère logInfoMsg("Recherche des ID RSS de la mère pour les bébés"); $sqlcmd = "DROP TABLE IF EXISTS w_mere; CREATE TEMP TABLE w_mere AS SELECT p_rsf_total.no_rss AS no_rss_mere, p_rsf_total.rss_id AS rss_mere_id, p_rsf_total_bb.no_rss AS no_rss_bb, p_rsf_total_bb.rss_id AS rss_bb_id, lpad(p_rsf_total.no_facture, 9, '0') as no_facture FROM temp.p_rsf_total JOIN temp.p_rss ON p_rsf_total.rss_id = p_rss.oid JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid JOIN temp.p_rsf_total p_rsf_total_bb ON lpad(p_rsf_total.no_facture, 9, '0') = lpad(p_rsf_total_bb.no_facture_sejour_mere, 9, '0') JOIN temp.p_rss p_rss_bb ON p_rsf_total_bb.rss_id = p_rss_bb.oid JOIN pmsi.t_ghm t_ghm_bb ON p_rss_bb.ghm_id = t_ghm_bb.oid AND t_ghm_bb.code LIKE '15%' WHERE t_ghm.code LIKE '14%' AND p_rsf_total.no_facture <> '' AND p_rsf_total.no_facture <> '0' AND p_rsf_total.no_facture <> '000000000' AND p_rss_bb.date_entree BETWEEN p_rss.date_entree AND p_rss.date_sortie;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); //On associe le rss_id de la mère au bébé $sqlcmd = "UPDATE temp.p_rss SET rss_mere_id = w_mere.rss_mere_id FROM w_mere WHERE p_rss.oid = w_mere.rss_bb_id AND p_rss.rss_mere_id IS DISTINCT FROM w_mere.rss_mere_id;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Seconde phase : pour les anciens séjours $sqlcmd = "DROP TABLE IF EXISTS rss_mere; CREATE temp table rss_mere AS SELECT p_rss.oid as rss_id, date_entree, date_sortie, matricule_assure, p_rsf_detail.ghs_id, import_id, MIN(p_rsf_detail.ctid) AS rsf_detail_id_1, MAX(p_rsf_detail.ctid) AS rsf_detail_id_2, count(*) as nb_enfants, 0::bigint as rss_enfant_id_1, 0::bigint as rss_enfant_id_2, 0::bigint as rss_enfant_id_3 FROM temp.p_rsf_detail, temp.p_rss, pmsi.t_ghs, temp.p_rsf_total WHERE p_rsf_detail.rss_id = p_rss.oid AND p_rsf_total.rss_id = p_rss.oid AND p_rss.ghm_id In (select oid from pmsi.t_ghm where code like '14%') AND p_rsf_detail.ghs_id = t_ghs.oid AND prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code = 'GHS') AND t_ghs.code BETWEEN 5800 AND 5940 AND matricule_assure <> '' AND est_ligne_rss = '1' GROUP BY 1,2,3,4,5,6;"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS rss_enfant; CREATE temp table rss_enfant AS SELECT p_rss.oid as rss_id, date_entree, date_sortie, matricule_assure, ghs_id, import_id FROM temp.p_rss, pmsi.t_ghs, temp.p_rsf_total WHERE p_rss.ghm_id In (select oid from pmsi.t_ghm where code like '15%') AND ghs_id = t_ghs.oid and p_rsf_total.rss_id = p_rss.oid AND p_rss.base_remboursement = 0;"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); $sqlcmd = "UPDATE rss_mere SET rss_enfant_id_1 = rss_enfant.rss_id FROM rss_enfant WHERE rss_enfant.matricule_assure <> '' AND rss_enfant.matricule_assure = rss_mere.matricule_assure AND rss_enfant.date_entree BETWEEN rss_mere.date_entree AND rss_mere.date_sortie AND rss_mere.ghs_id = rss_enfant.ghs_id AND rss_mere.import_id = rss_enfant.import_id;"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); $sqlcmd = "UPDATE rss_mere SET rss_enfant_id_2 = rss_enfant.rss_id FROM rss_enfant WHERE rss_enfant.matricule_assure <> '' AND rss_enfant.matricule_assure = rss_mere.matricule_assure AND rss_enfant.date_entree BETWEEN rss_mere.date_entree AND rss_mere.date_sortie AND rss_mere.ghs_id = rss_enfant.ghs_id AND rss_mere.import_id = rss_enfant.import_id AND rss_enfant.rss_id <> rss_enfant_id_1;"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); $sqlcmd = "UPDATE rss_mere SET rss_enfant_id_3 = rss_enfant.rss_id FROM rss_enfant WHERE rss_enfant.matricule_assure <> '' AND rss_enfant.matricule_assure = rss_mere.matricule_assure AND rss_enfant.date_entree BETWEEN rss_mere.date_entree AND rss_mere.date_sortie AND rss_mere.ghs_id = rss_enfant.ghs_id AND rss_mere.import_id = rss_enfant.import_id AND rss_enfant.rss_id <> rss_enfant_id_1 AND rss_enfant.rss_id <> rss_enfant_id_2;"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); $sqlcmd = "UPDATE temp.p_rss SET rss_mere_id = rss_mere.rss_id FROM rss_mere WHERE p_rss.oid = rss_enfant_id_1 AND p_rss.rss_mere_id = 0;"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); $sqlcmd = "UPDATE temp.p_rss SET rss_mere_id = rss_mere.rss_id FROM rss_mere WHERE p_rss.oid = rss_enfant_id_2 AND p_rss.rss_mere_id = 0;"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); $sqlcmd = "UPDATE temp.p_rss SET rss_mere_id = rss_mere.rss_id FROM rss_mere WHERE p_rss.oid = rss_enfant_id_3 AND p_rss.rss_mere_id = 0;"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); // Sur privé, réaffectation des GHS bébés if ($ENV_TYPEETS == "1" && $ENV_OPTPMSI_GHSBB == "1") { $sqlcmd = "WITH w_bb AS ( SELECT oid as rss_bb_id, rss_mere_id, no_rss AS no_rss_bb FROM temp.p_rss WHERE rss_mere_id <> 0 ), w_ids AS ( SELECT p_rsf_detail.CTID AS ctid_detail_mere, w_bb.rss_mere_id, rss_bb_id, no_rss_bb FROM temp.p_rsf_detail JOIN w_bb ON rss_mere_id = p_rsf_detail.rss_id JOIN temp.p_rss ON w_bb.rss_mere_id = p_rss.oid JOIN pmsi.t_ghs ON p_rsf_detail.ghs_id = t_ghs.oid JOIN pmsi.t_ghm ON t_ghs.ghm_id = t_ghm.oid WHERE t_ghm.code LIKE '15%' AND p_rsf_detail.est_ligne_rss = '1' ) UPDATE temp.p_rsf_detail SET rss_id = w_ids.rss_bb_id, no_rss = w_ids.no_rss_bb FROM w_ids WHERE p_rsf_detail.CTID = ctid_detail_mere AND p_rsf_detail.rss_id IS DISTINCT FROM w_ids.rss_bb_id ;"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); } // Sur public, ajustement des dates entree sortie / date prestation if ($ENV_TYPEETS != "1") { $sqlcmd = "UPDATE temp.p_rss SET date_sortie = date_fin FROM (SELECT p_rsf_detail.rss_id, date_entree, date_sortie, MAX(date_fin) AS date_fin FROM temp.p_rsf_detail JOIN temp.p_rss on p_rsf_detail.rss_id = p_rss.oid WHERE date_fin > date_sortie AND ghm_id = 0 GROUP BY 1,2,3 ) subview WHERE p_rss.oid = subview.rss_id"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); $sqlcmd = "UPDATE temp.p_rss SET date_sortie = date_fin FROM (SELECT p_rsf_detail.rss_id, date_entree, date_sortie, MAX(date_fin) AS date_fin FROM temp.p_rsf_detail JOIN temp.p_rss on p_rsf_detail.rss_id = p_rss.oid JOIN pmsi.t_prestations ON t_prestations.oid = p_rsf_detail.prestation_id WHERE date_sortie > date_fin AND ghm_id = 0 AND t_prestations.code = 'ATU' GROUP BY 1,2,3 ) subview WHERE p_rss.oid = subview.rss_id"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); } // Sur public, traitement spécial activité libérale // Le sejour est quand même pris en charge pour les types B (SEx, ATU, FFM) // Les la facturation honoraire est supprimée if ($ENV_TYPEETS != "1") { // La requête DELETE FROM temp.p_rsf_detail a été déplacée dans le bloc des prestations non valorisées (règle 15) $sqlcmd = " UPDATE temp.p_rsf_total SET code_pec = '1', code_pec_id = t_pec.oid FROM base.t_motif_non_facturation, base.t_pec WHERE code_pec = '0' AND t_pec.code = '1' AND motif_non_facturation_id = t_motif_non_facturation.oid AND t_motif_non_facturation.code = '6';"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); } // Sur public, ajustement base de remboursement ATU à 0 if ($ENV_TYPEETS != "1") { $sqlcmd = "UPDATE temp.p_rsf_detail SET base_remboursement = round(nombre * coefficient * coefficient_mco * prix_unitaire,2), base_remboursement_sauf_transition = round(nombre * coefficient * coefficient_geo * prix_unitaire,2), taux_remboursement = 100, update_rules = array_append(update_rules, 1) FROM temp.p_rss WHERE rss_id = p_rss.oid AND p_rsf_detail.base_remboursement = 0 AND prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code = 'ATU')"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); } // Sur public, replication coefficient MCO sur SEx, ATU if ($ENV_TYPEETS != "1") { // Remise à 1 du coefficient MCO sur les lignes 'C' $sqlcmd = "UPDATE temp.p_rsf_detail SET coefficient_mco = 1, update_rules = array_append(update_rules, 3) FROM pmsi.t_prestations WHERE p_rsf_detail.prestation_id = t_prestations.oid AND p_rsf_detail.est_ligne_rss = '1' AND type = 'C' AND t_prestations.code NOT IN ('ATU', 'SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7', 'APE', 'FFM', 'AP2', 'FPI') AND coefficient_mco IS DISTINCT FROM 1 "; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); // CLA le 14-11-2017 // Remise à 1 du coefficient MCO sur les lignes 'B' si à 0 $sqlcmd = " UPDATE temp.p_rsf_detail SET coefficient_mco = 1, update_rules = array_append(update_rules, 4) FROM pmsi.t_prestations WHERE 1=1 AND p_rsf_detail.prestation_id = t_prestations.oid AND p_rsf_detail.est_ligne_rss = '1' AND type = 'B' AND t_prestations.code IN ('ATU', 'SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7', 'APE', 'FFM', 'AP2', 'FPI') AND coefficient_mco = 0 "; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); // Si nombre de SE = 0 alors mettre nombre à 1 $sqlcmd = "UPDATE temp.p_rsf_detail SET nombre = 1, update_rules = array_append(update_rules, 5) FROM pmsi.t_prestations WHERE p_rsf_detail.prestation_id = t_prestations.oid AND t_prestations.code IN ('ATU', 'FTN', 'FTR', 'SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7', 'APE', 'FFM') AND nombre = 0;"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); // Si taux remboursement PII externes à 0, mettre 100 $sqlcmd = "UPDATE temp.p_rsf_detail SET taux_remboursement = 100, sejour_remboursable = base_remboursement, update_rules = array_append(update_rules, 6) FROM pmsi.t_prestations WHERE p_rsf_detail.prestation_id = t_prestations.oid AND t_prestations.code IN ('PII') AND taux_remboursement = 0;"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); // valorisation // Modif CLA 16-07-2018 semble ne plus s'appliquer aux Forfaits techniques (FTN, FTG, FTR) dont base_remboursement = pu * qte * nb * coef_transition $sqlcmd = "UPDATE temp.p_rsf_detail SET base_remboursement = round(round(nombre * prix_unitaire * coefficient_mco,2) * coefficient, 2), base_remboursement_sauf_transition = round(round(nombre * prix_unitaire * coefficient_geo, 2) * coefficient, 2), update_rules = array_append(update_rules, 7) FROM pmsi.t_prestations, temp.p_rss WHERE p_rsf_detail.prestation_id = t_prestations.oid AND p_rss.import_id = $import_id AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_detail.est_ligne_rss = '1' AND t_prestations.code IN ('ATU', 'SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7', 'APE', 'FFM', 'AP2', 'FPI') AND ( p_rsf_detail.base_remboursement IS DISTINCT FROM round(round(nombre * prix_unitaire * coefficient_mco,2) * coefficient, 2) OR p_rsf_detail.base_remboursement_sauf_transition IS DISTINCT FROM round(round(nombre * prix_unitaire * coefficient_geo, 2) * coefficient, 2) );"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); // forfaits techniques : base_remboursement = pu * qte * nb * coef_transition $sqlcmd = "UPDATE temp.p_rsf_detail SET base_remboursement = round(nombre * prix_unitaire * coefficient,2), base_remboursement_sauf_transition = round(nombre * prix_unitaire * coefficient,2), update_rules = array_append(update_rules, 8) FROM pmsi.t_prestations, temp.p_rss WHERE p_rsf_detail.prestation_id = t_prestations.oid AND p_rss.import_id = $import_id AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_detail.est_ligne_rss = '1' AND t_prestations.code IN ('FTR', 'FTN', 'FTG', 'FTS', 'FR2', 'FR3') AND ( p_rsf_detail.base_remboursement IS DISTINCT FROM round(nombre * prix_unitaire * coefficient,2) OR p_rsf_detail.base_remboursement_sauf_transition IS DISTINCT FROM round(nombre * prix_unitaire * coefficient,2) );"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); // Recalcul prix unitaire sur CCAM $sqlcmd = "UPDATE temp.p_rsf_detail SET prix_unitaire = round(p_rsf_detail.base_remboursement / p_rsf_detail.nombre / p_rsf_detail.coefficient / p_rsf_detail.coefficient_mco,2), sejour_remboursable = round(p_rsf_detail.base_remboursement * p_rsf_detail.taux_remboursement / 100.00,2), update_rules = array_append(update_rules, 9) FROM pmsi.t_prestations,temp.p_rss WHERE p_rsf_detail.prestation_id = t_prestations.oid AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_detail.type = 'C' AND p_rsf_detail.est_ligne_rss = '1' AND t_prestations.code IN ('ADC', 'ADA', 'ATM', 'ACO', 'ADE', 'ADI', 'DEN') AND p_rss.import_id = $import_id AND p_rsf_detail.coefficient_mco = 1 AND p_rsf_detail.nombre <> 0 AND p_rsf_detail.coefficient <> 0 AND p_rsf_detail.base_remboursement <> 0 AND ( prix_unitaire <> round(p_rsf_detail.base_remboursement / p_rsf_detail.nombre / p_rsf_detail.coefficient / p_rsf_detail.coefficient_mco,2) OR sejour_remboursable IS DISTINCT FROM round(p_rsf_detail.base_remboursement * p_rsf_detail.taux_remboursement / 100.00,2) );"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); // Coeff MCO $sqlcmd = "UPDATE temp.p_rsf_detail SET nombre = CASE WHEN nombre > 0 THEN 0 - nombre ELSE nombre END, taux_remboursement = 100, base_remboursement = CASE WHEN p_rsf_detail.base_remboursement > 0 THEN 0 - p_rsf_detail.base_remboursement ELSE p_rsf_detail.base_remboursement END, sejour_facture = CASE WHEN p_rsf_detail.sejour_facture > 0 THEN 0 - p_rsf_detail.sejour_facture ELSE p_rsf_detail.sejour_facture END, sejour_remboursable = CASE WHEN p_rsf_detail.base_remboursement > 0 THEN 0 - p_rsf_detail.base_remboursement ELSE p_rsf_detail.base_remboursement END, update_rules = array_append(update_rules, 11) FROM pmsi.t_prestations, temp.p_rss WHERE p_rsf_detail.prestation_id = t_prestations.oid AND p_rss.import_id = $import_id AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_detail.type = 'C' AND p_rsf_detail.est_ligne_rss = '1' AND t_prestations.code IN ('PAE', 'PAT') AND ( p_rsf_detail.nombre <> CASE WHEN nombre > 0 THEN 0 - nombre ELSE nombre END OR p_rsf_detail.taux_remboursement <> 100 OR p_rsf_detail.base_remboursement <> CASE WHEN p_rsf_detail.base_remboursement > 0 THEN 0 - p_rsf_detail.base_remboursement ELSE p_rsf_detail.base_remboursement END OR p_rsf_detail.sejour_facture <> CASE WHEN p_rsf_detail.sejour_facture > 0 THEN 0 - p_rsf_detail.sejour_facture ELSE p_rsf_detail.sejour_facture END OR p_rsf_detail.sejour_remboursable <> CASE WHEN p_rsf_detail.base_remboursement > 0 THEN 0 - p_rsf_detail.base_remboursement ELSE p_rsf_detail.base_remboursement END )"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); // Recalcul base de remboursement sur NGAP $sqlcmd = "UPDATE temp.p_rsf_detail SET base_remboursement = round(nombre * coefficient * prix_unitaire * coefficient_mco,2), base_remboursement_sauf_transition = round(nombre * coefficient * prix_unitaire * coefficient_mco,2), sejour_facture = round(nombre * coefficient * prix_unitaire * coefficient_mco,2), update_rules = array_append(update_rules, 12) FROM pmsi.t_prestations,temp.p_rss WHERE p_rsf_detail.prestation_id = t_prestations.oid AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_detail.type = 'C' AND p_rsf_detail.est_ligne_rss = '1' AND t_prestations.code NOT IN ('ADC', 'ADA', 'ATM', 'ACO', 'ADE', 'ADI', 'DEN') AND t_prestations.code NOT LIKE '% N' AND t_prestations.code NOT LIKE '% F' AND p_rss.import_id = $import_id AND p_rsf_detail.nombre <> 0 AND p_rsf_detail.prix_unitaire <> 0 AND p_rsf_detail.coefficient <> 0 AND p_rsf_detail.type = 'C' AND ( p_rsf_detail.base_remboursement IS DISTINCT FROM round(nombre * prix_unitaire * coefficient_mco * coefficient,2) );"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); $sqlcmd = "UPDATE temp.p_rsf_detail SET montant_supplement_nf = p_rsf_detail.base_remboursement - round(nombre * coefficient * prix_unitaire,2) , update_rules = array_append(update_rules, 13) FROM pmsi.t_prestations, temp.p_rss WHERE p_rsf_detail.prestation_id = t_prestations.oid AND p_rss.import_id = $import_id AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_detail.type = 'C' AND p_rsf_detail.est_ligne_rss = '1' AND (t_prestations.code LIKE '% N' OR t_prestations.code LIKE '% F') AND montant_supplement_nf IS DISTINCT FROM p_rsf_detail.sejour_facture - round(nombre * coefficient * prix_unitaire,2)"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); // Arrondis NGAP base_remboursement, sur plus gros dossier (sauf VALOACE) if (! $file_exists_VSE) { $sqlcmd = "DROP TABLE IF EXISTS w_ecarts_mco; CREATE TEMP TABLE w_ecarts_mco AS SELECT code_pec_id, prestation_id AS ecart_prestation_id, prix_unitaire AS ecart_prix_unitaire, (MAX(array[p_rsf_detail.base_remboursement_sauf_transition , p_rsf_detail.rss_id]))[2] AS ecart_rss_id, null::tid AS ecart_ctid, SUM(p_rsf_detail.base_remboursement) - round(SUM(nombre*coefficient*coefficient_mco) * prix_unitaire,2) AS ecart_montant FROM temp.p_rss JOIN temp.p_rsf_detail ON p_rsf_detail.rss_id = p_rss.oid JOIN temp.p_rsf_total ON p_rsf_total.rss_id = p_rss.oid JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid WHERE p_rsf_detail.type = 'C' AND p_rsf_detail.est_ligne_rss = '1' AND t_prestations.code NOT IN ('ADC', 'ADA', 'ATM', 'ACO', 'ADE', 'ADI', 'DEN') AND t_prestations.code NOT LIKE '% N' AND t_prestations.code NOT LIKE '% F' AND p_rsf_detail.nombre <> 0 AND p_rsf_detail.prix_unitaire <> 0 AND p_rsf_detail.coefficient <> 0 GROUP BY 1,2,3 HAVING round(SUM(nombre*coefficient*coefficient_mco) * prix_unitaire,2) <> SUM(p_rsf_detail.base_remboursement);"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); $sqlcmd = "UPDATE w_ecarts_mco SET ecart_ctid = p_rsf_detail.CTID FROM temp.p_rsf_detail WHERE p_rsf_detail.rss_id = ecart_rss_id AND p_rsf_detail.prestation_id = ecart_prestation_id AND p_rsf_detail.prix_unitaire = ecart_prix_unitaire AND ecart_montant <> 0 AND est_ligne_rss = '1' ;"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); $sqlcmd = "UPDATE temp.p_rsf_detail SET base_remboursement = base_remboursement - ecart_montant, base_remboursement_sauf_transition = base_remboursement - ecart_montant, update_rules = array_append(update_rules, 14) FROM w_ecarts_mco WHERE p_rsf_detail.CTID = ecart_ctid AND ecart_montant <> 0;"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); } // Taux remboursement sur PAP $sqlcmd = "UPDATE temp.p_rsf_detail SET taux_remboursement = CASE WHEN p_rsf_detail.taux_remboursement = 0 AND t_prestations.code = 'PAP' AND t_pec.code <> '0' THEN 100 WHEN p_rsf_detail.taux_remboursement > 0 THEN p_rsf_detail.taux_remboursement WHEN t_pec.code <> '0' THEN 70 ELSE 0 END, update_rules = array_append(update_rules, 15) FROM pmsi.t_prestations, temp.p_rss, temp.p_rsf_total, base.t_pec WHERE p_rsf_detail.prestation_id = t_prestations.oid AND t_pec.oid = p_rsf_total.code_pec_id AND p_rss.import_id = $import_id AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_total.rss_id = p_rss.oid AND p_rsf_detail.type = 'C' AND p_rsf_detail.est_ligne_rss = '1' AND ( p_rsf_detail.base_remboursement <> round(((nombre * prix_unitaire * coefficient) + COALESCE(montant_supplement_nf,0)) * coefficient_mco ,2) OR p_rsf_detail.taux_remboursement <> CASE WHEN p_rsf_detail.taux_remboursement = 0 AND t_prestations.code = 'PAP' AND t_pec.code <> '0' THEN 100 WHEN p_rsf_detail.taux_remboursement > 0 THEN p_rsf_detail.taux_remboursement WHEN t_pec.code <> '0' THEN 70 ELSE 0 END ) "; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); $sqlcmd = "UPDATE temp.p_rsf_detail SET sejour_remboursable = round(p_rsf_detail.base_remboursement * p_rsf_detail.taux_remboursement / 100,2), update_rules = array_append(update_rules, 16) FROM pmsi.t_prestations, temp.p_rss, temp.p_rsf_total WHERE p_rsf_detail.prestation_id = t_prestations.oid AND p_rss.import_id = $import_id AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_total.rss_id = p_rss.oid AND p_rsf_detail.type = 'C' AND p_rsf_detail.est_ligne_rss = '1' AND p_rsf_detail.sejour_remboursable <> round(p_rsf_detail.base_remboursement * p_rsf_detail.taux_remboursement / 100,2) AND p_rsf_detail.sejour_remboursable IS DISTINCT FROM round(p_rsf_detail.base_remboursement * p_rsf_detail.taux_remboursement / 100,2) "; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); // Taux remboursement = 94% Sur SEh, ATU // jusqu'au 07 octobre 2015 $sqlcmd = "UPDATE temp.p_rsf_detail SET taux_remboursement = CASE WHEN t_pec.code <> '0' THEN 94 ELSE 0 END, update_rules = array_append(update_rules, 17) FROM pmsi.t_prestations, temp.p_rss, temp.p_rsf_total, base.t_pec WHERE p_rsf_detail.prestation_id = t_prestations.oid AND t_pec.oid = p_rsf_total.code_pec_id AND p_rss.import_id = $import_id AND ghm_id = 0 AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_total.rss_id = p_rss.oid AND p_rsf_detail.est_ligne_rss = '1' AND prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code IN ('ATU', 'SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7', 'APE', 'FFM', 'AP2', 'FPI')) AND p_rsf_detail.taux_remboursement <> CASE WHEN t_pec.code <> '0' THEN 94 ELSE 0 END AND p_rsf_detail.date_debut < '20151007'::date"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); // Forçage du Tx de remboursement si différent des valeurs autorisées (80,90,100) à aprtir du 07 octobre 2015 // Guide de lecture OVALIDE exDGF 2016 page 84 $sqlcmd = " UPDATE temp.p_rsf_detail SET taux_remboursement = 80, update_rules = array_append(update_rules, 18) FROM pmsi.t_prestations WHERE 1=1 AND t_prestations.oid = p_rsf_detail.prestation_id AND p_rsf_detail.date_debut >= '20151007'::date AND t_prestations.code IN ('SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7', 'FFM', 'APE', 'ATU') AND p_rsf_detail.taux_remboursement NOT IN (80, 90, 100);"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); // Même chose mais pour les ATM associés à ces forfaits $sqlcmd = " UPDATE temp.p_rsf_detail SET taux_remboursement = 80, update_rules = array_append(update_rules, 19) FROM pmsi.t_prestations WHERE 1=1 AND t_prestations.oid = p_rsf_detail.prestation_id AND t_prestations.code = 'ATM' AND taux_remboursement NOT IN (80, 90, 100) AND p_rsf_detail.rss_id = ANY(ARRAY( SELECT rss_id FROM temp.p_rsf_detail JOIN pmsi.t_prestations ON t_prestations.oid = p_rsf_detail.prestation_id WHERE 1=1 AND t_prestations.code IN ('SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7', 'FFM', 'APE', 'ATU', 'AP2', 'FPI') AND p_rsf_detail.date_debut >= '20151007'::date GROUP BY 1 )::bigint[]);"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); // Si Taux = 0 sur FTN, FTR alors 60 // Modif CLA du 10-11-2015. Le taux de remboursement semble être passé à 70% depuis 2015 $sqlcmd = "UPDATE temp.p_rsf_detail SET taux_remboursement = --CASE WHEN date_debut >= '20150301'::date THEN 70 ELSE 60 END 60, update_rules = array_append(update_rules, 20) FROM pmsi.t_prestations WHERE p_rsf_detail.prestation_id = t_prestations.oid AND t_prestations.code IN ('FTN', 'FTR') AND taux_remboursement <> 100;"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); // recalcul sejour remboursable SUR ATU, SEh, FTN, FTR $sqlcmd = "UPDATE temp.p_rsf_detail SET sejour_remboursable = round(p_rsf_detail.base_remboursement * p_rsf_detail.taux_remboursement / 100,2), sejour_remboursable_2 = p_rsf_detail.base_remboursement - round(p_rsf_detail.base_remboursement * p_rsf_detail.taux_remboursement / 100,2), update_rules = array_append(update_rules, 21) FROM pmsi.t_prestations, temp.p_rss, temp.p_rsf_total WHERE p_rsf_detail.prestation_id = t_prestations.oid AND p_rss.import_id = $import_id AND ghm_id = 0 AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_total.rss_id = p_rss.oid AND p_rsf_detail.est_ligne_rss = '1' AND prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code IN ('ATU', 'SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7', 'FTN', 'FTR', 'APE', 'FFM', 'AP2', 'FPI')) AND ( p_rsf_detail.sejour_remboursable <> round(p_rsf_detail.base_remboursement * p_rsf_detail.taux_remboursement / 100,2) OR p_rsf_detail.sejour_remboursable_2 <> p_rsf_detail.base_remboursement - round(p_rsf_detail.base_remboursement * p_rsf_detail.taux_remboursement / 100,2) );"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); /* // Sur les forfaits techniques qui sont comptabilités en prestations cliniques (erreur décelée à Baclesse mais peut apparaitre ailleurs) // Recalcul du montant remboursé s'il est supérieurs à la base de remboursement // La dernière condition permet de s'afranchir des erreurs d'arrondi $sqlcmd = "UPDATE temp.p_rsf_detail SET sejour_remboursable = round(p_rsf_detail.base_remboursement * p_rsf_detail.taux_remboursement / 100, 2) FROM pmsi.v_listes_contenu_1 WHERE 1=1 AND p_rsf_detail.type = 'B' AND v_listes_contenu_1.liste_code = 'CTI_FT_P' AND p_rsf_detail.prestation_id = v_listes_contenu_1.to_id AND round(p_rsf_detail.sejour_remboursable) > round(p_rsf_detail.base_remboursement) + 1; "; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); */ } // Sur public, Lettres clés non valorisées if ($ENV_TYPEETS != "1") { logInfoMsg("Lettres clés non valorisées"); $sqlcmd = "DROP TABLE IF EXISTS w_non_valorises; CREATE TEMP TABLE w_non_valorises (fromctid tid, rss_id bigint, regle_id bigint)"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // 16 : Lettre clé hors période $sqlcmd = "INSERT INTO w_non_valorises SELECT p_rsf_detail.CTID AS fromCTID, p_rsf_detail.rss_id, COALESCE(t_regles_non_valorisation.oid, 0) as regle_id FROM temp.p_rsf_detail LEFT JOIN pmsi.t_regles_non_valorisation ON t_regles_non_valorisation.code = '16'::text WHERE 1=1 AND p_rsf_detail.date_fin >= to_date($annee_mois_fin, 'YYYYMM') + interval '1 month' AND p_rsf_detail.type = 'C';"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Les avis ponctuels de consultants ne sont valorisés qu'à partir du 01 octobre 2017 $sqlcmd = "INSERT INTO w_non_valorises SELECT p_rsf_detail.CTID AS fromCTID, p_rsf_detail.rss_id, COALESCE(t_regles_non_valorisation.oid, 0) as regle_id FROM temp.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid LEFT JOIN pmsi.t_regles_non_valorisation ON t_regles_non_valorisation.code = '16'::text WHERE 1=1 AND t_prestations.code IN ('APC','APV','APY','AVY','APU') AND p_rsf_detail.date_fin < '20171001'::date;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // MCS incompatible avec ATU $sqlcmd = "INSERT INTO w_non_valorises SELECT p_rsf_detail.CTID AS fromCTID, p_rsf_detail.rss_id, COALESCE(t_regles_non_valorisation.oid, 0) as regle_id FROM temp.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid LEFT JOIN pmsi.t_regles_non_valorisation ON t_regles_non_valorisation.code = '01'::text WHERE t_prestations.code = 'MCS' AND date_debut >= '20130301' AND rss_id IN ( SELECT rss_id FROM temp.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid WHERE t_prestations.code IN ('ATU', 'MCS') AND est_ligne_rss = '1' AND date_debut >= '20130301' GROUP BY 1 HAVING count(*) > 1 AND MIN(prestation_id) <> MAX(prestation_id) );"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // MCG incompatible avec ATU $sqlcmd = "INSERT INTO w_non_valorises SELECT p_rsf_detail.CTID AS fromCTID, p_rsf_detail.rss_id, COALESCE(t_regles_non_valorisation.oid, 0) as regle_id FROM temp.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid LEFT JOIN pmsi.t_regles_non_valorisation ON t_regles_non_valorisation.code = '02'::text WHERE t_prestations.code = 'MCG' AND date_debut >= '20130101' AND rss_id IN ( SELECT rss_id FROM temp.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid WHERE t_prestations.code IN ('ATU', 'MCG') AND est_ligne_rss = '1' AND date_debut >= '20130101' GROUP BY 1 HAVING count(*) > 1 AND MIN(prestation_id) <> MAX(prestation_id) );"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // FSD en double $sqlcmd = "INSERT INTO w_non_valorises SELECT p_rsf_detail.CTID AS fromCTID, p_rsf_detail.rss_id, COALESCE(t_regles_non_valorisation.oid, 0) as regle_id FROM temp.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid LEFT JOIN pmsi.t_regles_non_valorisation ON t_regles_non_valorisation.code = '03'::text WHERE t_prestations.code = 'FSD' AND date_debut >= '20130101' AND rss_id IN ( SELECT rss_id FROM temp.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid WHERE t_prestations.code IN ('FSD') AND est_ligne_rss = '1' AND date_debut >= '20130101' group by 1 having count(*) > 1 );"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Mauvais prix unitaire 2.Q.MNTPU // CLA 2019-03-08 Il ne faut pas exclure les erreurs de prix unitaire sur les CMU $sqlcmd = "INSERT INTO w_non_valorises SELECT p_rsf_detail.CTID AS fromCTID, p_rsf_detail.rss_id, COALESCE(t_regles_non_valorisation.oid, 0) as regle_id FROM temp.p_rsf_detail JOIN temp.p_rsf_total ON p_rsf_total.rss_id = p_rsf_detail.rss_id JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid LEFT JOIN pmsi.t_regles_non_valorisation ON t_regles_non_valorisation.code = '17'::text LEFT JOIN pmsi.t_prestation_tarif ON t_prestations.oid = t_prestation_tarif.prestation_id AND p_rsf_detail.date_fin BETWEEN t_prestation_tarif.date_debut AND t_prestation_tarif.date_fin AND t_prestation_tarif.type_ets = '2' WHERE 1=1 AND pat_benef_cmu != '1' AND t_prestations.oid = ANY (ARRAY(SELECT to_id FROM pmsi.v_listes_contenu_1 WHERE liste_code = 'CTI_OVA_2QMNTPU')::bigint[]) AND p_rsf_detail.date_debut >= '20130101' AND p_rsf_detail.prix_unitaire != t_prestation_tarif.tarif ;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Lettres clé non prise en compte // Modif de CLA du 09-11-2015 : La lettre clé PB semble être désormais prise en compte depuis 2015 $sqlcmd = "INSERT INTO w_non_valorises SELECT p_rsf_detail.CTID AS fromCTID, p_rsf_detail.rss_id, COALESCE(t_regles_non_valorisation.oid, 0) as regle_id FROM temp.p_rsf_detail JOIN temp.p_rss ON p_rsf_detail.rss_id = p_rss.oid JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid JOIN pmsi.t_listes ON t_listes.code = 'CTI_OVA_LCNPC' JOIN pmsi.t_listes_contenu ON t_listes_contenu.liste_id = t_listes.oid AND t_listes_contenu.to_id = t_prestations.oid LEFT JOIN pmsi.t_regles_non_valorisation ON t_regles_non_valorisation.code = '09'::text WHERE t_prestations.code NOT IN ('MPC','MCC') OR t_prestations.code = 'MPC' AND p_rss.date_sortie < '20190701' OR t_prestations.code = 'MCC' AND p_rss.date_sortie < '20190101' UNION SELECT p_rsf_detail.CTID AS fromCTID, p_rsf_detail.rss_id, COALESCE(t_regles_non_valorisation.oid, 0) as regle_id FROM temp.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid LEFT JOIN pmsi.t_regles_non_valorisation ON t_regles_non_valorisation.code = '09'::text WHERE t_prestations.code = 'PB' and date_debut < '20150301'"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Prélèvement d'organes sur patients décédés, seul les PO sont valorisés $sqlcmd = "INSERT INTO w_non_valorises SELECT p_rsf_detail.CTID AS fromCTID, p_rsf_detail.rss_id, COALESCE(t_regles_non_valorisation.oid, 0) as regle_id FROM temp.p_rsf_detail JOIN temp.p_vidhosp ON p_rsf_detail.rss_id = p_vidhosp.rss_id JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid LEFT JOIN pmsi.t_regles_non_valorisation ON t_regles_non_valorisation.code = '11'::text WHERE p_vidhosp.prelevement_organe = '1' AND t_prestations.code NOT IN ('PO1', 'PO2', 'PO3', 'PO4', 'PO5', 'PO6', 'PO7', 'PO8', 'PO9', 'POA') "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // SE en double // On part du principe qu'on ne garde qu'un SEh s'il y en a plusieurs // $sqlcmd = "INSERT INTO w_non_valorises // SELECT // p_rsf_detail.CTID as fromCTID, p_rsf_detail.rss_id, COALESCE(t_regles_non_valorisation.oid, 0) as regle_id // FROM // temp.p_rsf_detail // JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid // LEFT JOIN pmsi.t_regles_non_valorisation ON t_regles_non_valorisation.code = '12'::text // JOIN ( // SELECT // p_rsf_detail.rss_id, // t_prestations.code as prestation_code, // min(p_rsf_detail.CTID) as CTIDmin // FROM // temp.p_rsf_detail // JOIN pmsi.t_prestations on t_prestations.oid = p_rsf_detail.prestation_id // WHERE // t_prestations.code IN ('SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7') // GROUP by p_rsf_detail.rss_id,t_prestations.code // HAVING count(*) > 1 // ) subview ON subview.rss_id = p_rsf_detail.rss_id and t_prestations.code = subview.prestation_code // WHERE 1=1 // AND p_rsf_detail.CTID <> subview.CTIDmin;"; // $toResult = execute_sql($sqlcmd, $nbE, $nbW ); // commit_trans(); // AMI (AMI F et AMI N également) non valorisés à partir de M10 2015 s'ils sont présents en même temps q'un SE/FFM/ATU/APE sur une facture $sqlcmd = " WITH w_ami AS ( ( SELECT rss_id FROM temp.p_rsf_detail JOIN pmsi.t_prestations ON t_prestations.oid = p_rsf_detail.prestation_id WHERE t_prestations.code LIKE 'AMI%' AND date_debut >= '20151001' GROUP BY 1 ) INTERSECT ( SELECT rss_id FROM temp.p_rsf_detail JOIN pmsi.t_prestations ON t_prestations.oid = p_rsf_detail.prestation_id WHERE t_prestations.code IN ('SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7', 'FFM', 'ATU', 'APE') AND date_debut >= '20151001' GROUP BY 1 ) ) INSERT INTO w_non_valorises SELECT p_rsf_detail.CTID as from_CTID ,p_rsf_detail.rss_id ,COALESCE(t_regles_non_valorisation.oid, 0) as regle_id FROM temp.p_rsf_detail JOIN pmsi.t_prestations ON t_prestations.oid = p_rsf_detail.prestation_id JOIN w_ami ON w_ami.rss_id = p_rsf_detail.rss_id LEFT JOIN pmsi.t_regles_non_valorisation ON t_regles_non_valorisation.code = '13'::text WHERE t_prestations.code LIKE 'AMI%'"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // 15 : ACE en activité libérale $sqlcmd = "INSERT INTO w_non_valorises SELECT p_rsf_detail.CTID AS fromCTID, p_rsf_detail.rss_id, COALESCE(t_regles_non_valorisation.oid, 0) as regle_id FROM temp.p_rsf_detail JOIN temp.p_rsf_total ON p_rsf_total.rss_id = p_rsf_detail.rss_id JOIN base.t_motif_non_facturation ON motif_non_facturation_id = t_motif_non_facturation.oid LEFT JOIN pmsi.t_regles_non_valorisation ON t_regles_non_valorisation.code = '15'::text WHERE 1=1 AND p_rsf_detail.type = 'C' AND t_motif_non_facturation.code = '6';"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Si une lettre clé est hors période, on dégage toutes les autres regles de cette letre clé car ces controles ne sont pas pris en compte par la suite $sqlcmd = " WITH w_hors_periode AS ( SELECT fromCTID as tid_to_delete FROM w_non_valorises JOIN pmsi.t_regles_non_valorisation ON t_regles_non_valorisation.oid = w_non_valorises.regle_id WHERE t_regles_non_valorisation.code = '16' ) DELETE FROM w_non_valorises USING pmsi.t_regles_non_valorisation, w_hors_periode WHERE 1=1 AND w_non_valorises.fromCTID = w_hors_periode.tid_to_delete AND t_regles_non_valorisation.oid = w_non_valorises.regle_id AND t_regles_non_valorisation.code != '16';"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Ajout à la table des non valorises pour trace $sqlcmd = "INSERT INTO temp.p_rsf_detail_non_valorise( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum, montant_supplement_nf, sejour_remboursable_rum, pec_fj_id, base_remboursement_sauf_transition, base_remboursement_rum_sauf_transition, regle_id, coefficient_pacte_resp, no_ligne) SELECT finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, p_rsf_detail.rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum, montant_supplement_nf, sejour_remboursable_rum, pec_fj_id, base_remboursement_sauf_transition, base_remboursement_rum_sauf_transition, w_non_valorises.regle_id, coefficient_pacte_resp, no_ligne FROM temp.p_rsf_detail JOIN w_non_valorises ON w_non_valorises.fromCTID = p_rsf_detail.CTID;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); if ($toResult !== FALSE) { echo " : " . pg_affected_rows($toResult) . " lettre(s) clé(s) non valorisée(s)" ; } // Suppression de la table des prestations $sqlcmd = "DELETE FROM temp.p_rsf_detail WHERE CTID IN ( SELECT fromCTID FROM w_non_valorises JOIN temp.p_rsf_detail ON w_non_valorises.fromCTID = p_rsf_detail.CTID JOIN pmsi.t_prestations ON t_prestations.oid = p_rsf_detail.prestation_id WHERE t_prestations.code not in ('ATU','FFM') ) ;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // Suppression doublons dans non valorise $sqlcmd = "DELETE FROM temp.p_rsf_detail_non_valorise USING ( SELECT rss_id, no_ligne, count(*), (MAX(ARRAY[regle_id::text,p_rsf_detail_non_valorise.CTID::text]))[2]::text AS keep_ctid FROM temp.p_rsf_detail_non_valorise GROUP BY 1,2 HAVING count(*) > 1 ) subview WHERE p_rsf_detail_non_valorise.rss_id = subview.rss_id AND p_rsf_detail_non_valorise.no_ligne = subview.no_ligne AND p_rsf_detail_non_valorise.CTID::text <> keep_ctid;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); } // Sur public, génération forfait PAT // Sur externes sans SE ou ATU, actes >= 120 euros if ($ENV_TYPEETS != "1") { // Transformation PAT de RAFAEL en PAE $sqlcmd = "UPDATE temp.p_rsf_detail SET prestation_id = t_prestations_pae.oid FROM pmsi.t_prestations, pmsi.t_prestations t_prestations_pae WHERE t_prestations.oid = p_rsf_detail.prestation_id AND t_prestations.code = 'PAT' AND t_prestations_pae.code = 'PAE'"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); // Génération PAT restant $sqlcmd = "DROP TABLE IF EXISTS w_rsf_forfait; CREATE TEMP TABLE w_rsf_forfait as SELECT p_rsf_detail.rss_id FROM temp.p_rsf_detail JOIN temp.p_rss on p_rss.oid = p_rsf_detail.rss_id and import_id = $import_id JOIN pmsi.t_prestations On prestation_id = t_prestations.oid WHERE type = 'B' AND t_prestations.code IN ('SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7', 'ATU', 'PAT', 'APE', 'AP2', 'FPI') GROUP BY 1; "; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT subview.finess, subview.no_rss, '', '', '', subview.date_entree, subview.date_sortie, -1 AS nombre, 1, subview.montant_pat AS prix_unitaire, 0 - subview.montant_pat AS base_remboursement, 100, 0 - subview.montant_pat, 0 - subview.montant_pat, '', '', '', 0, 1, 0, 0, 0, '', prestation_pat_id, subview.rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM ( SELECT p_rsf_detail.rss_id, p_rss.no_rss, date_entree, date_sortie, t_prestations_pat.oid AS prestation_pat_id, p_rss.finess, 24 as montant_pat, MAX(t_prestations.code) AS prestation_code FROM temp.p_rsf_detail JOIN temp.p_rss on p_rss.oid = p_rsf_detail.rss_id AND traitement_epmsi = '30' JOIN temp.p_rsf_total on p_rsf_detail.rss_id = p_rsf_total.rss_id JOIN base.t_pec ON code_pec_id = t_pec.oid JOIN base.t_exoneration_tm ON exoneration_tm_id = t_exoneration_tm.oid JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid JOIN pmsi.t_prestations t_prestations_pat On t_prestations_pat.code = 'PAT' LEFT JOIN w_rsf_forfait on w_rsf_forfait.rss_id = p_rsf_detail.rss_id WHERE type = 'C' AND t_exoneration_tm.code NOT IN ('1','2','3','4','5','9') AND t_prestations.code IN ('ACO', 'ADA', 'ADC', 'ADE', 'ATM', 'K' , 'K F', 'K N', 'KC' , 'KC F', 'KC N', 'KC U', 'KE' , 'KE F', 'KE N', 'SF' , 'SF F', 'SF N', 'KE', 'VDE' ) AND w_rsf_forfait.rss_id IS NULL AND pat_benef_cmu IS DISTINCT FROM '1' AND t_pec.code = '1' AND p_rsf_detail.base_remboursement >= 120 GROUP BY 1,2,3,4,5,6,7 ) subview;"; $toResult = execute_sql($sqlcmd, $nbE); commit_trans(); } analyse_table_temp("p_rss_lpp"); analyse_table_temp("p_rss_ucd"); analyse_table_temp("p_rss_actes"); logInfoMsg("$nbW_total factures créées"); logInfoMsg("$nbW_detail prestations créées"); logInfoMsg("$nbW_lpp LPP créés"); logInfoMsg("$nbW_ucd UCD créés"); logInfoMsg("$nbW_actes actes créés"); $nbW = $nbW_total + $nbW_detail + $nbW_lpp + $nbW_ucd + $nbW_actes; logInfoMsg("FIN GENERATION DES RSF. $nb lus, $nbW écrits, $nbE erreurs."); } function generation_fichcomp() { global $import_id; global $ENV_TYPEETS; global $file_RSS; global $file_FCP; global $file_exists_RSS; global $file_exists_FCP; if (! $file_exists_FCP) { return; } logInfoMsg("GENERATION FICHCOMP"); $rssadms_array = array(); begin_trans(); $nb = 0; $nbW = 0; $nb_rsf = 0; $nbW_total = 0; $nbW_detail = 0; $nbW_lpp = 0; $nbW_ucd = 0; $nbW_actes = 0; $nbE = 0; $no_ligne = 0; if ($file_exists_RSS) { $handle = @fopen($file_RSS, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 100000000000) { $nb++; $BUF_record = read_rum_partial_line($buffer); if ($BUF_record["type_enregistrement"] == "RUM") { if (controle_check_num($BUF_record["no_sejour_administratif"],0,FALSE,$erreur,$commentaire)) { $no_rss = get_numrss($BUF_record["no_rss"]); $no_sejour_administratif = get_charAsNum($BUF_record["no_sejour_administratif"]); $rssadms_array[$no_sejour_administratif] = $no_rss; } } } } } } commit_trans(); $sqlcmd_insert_lpp = "INSERT INTO temp.p_rss_lpp( "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "rss_id, "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "finess, "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "no_rss, "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "rang, "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "date_lpp, "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "lpp_id, "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "nombre, "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "prix_unitaire, "; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . "montant_facture, non_pris_en_compte"; $sqlcmd_insert_lpp = $sqlcmd_insert_lpp . ") "; $sqlcmd_insert_ucd = "INSERT INTO temp.p_rss_ucd( finess, no_rss, rang, date_ucd, ucd_id, nombre, coefficient_fractionnement, prix_unitaire_achat, prix_unitaire_ecart_indemnisable, montant_ecart_indemnisable, montant_facture, rss_id, non_pris_en_compte, type_ucd_id, indication) "; // Génération $nb = 0; $no_ligne = 0; $rss_id = 0; $handle = @fopen($file_FCP, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 100000000000 ) { $nb++; $BUF_record = read_fcp_line($buffer); // Controle si ligne acceptée par GENRSA if (check_complog_fichcomp($buffer, $gravite, $erreur, $commentaire)) { // Génération if ($BUF_record["ok"] == TRUE && $BUF_record["type_enregistrement"] == "02") { $rss_id = 0; $no_rss = 0; if (controle_check_num($BUF_record["no_sejour_administratif"],0,FALSE,$erreur,$commentaire)) { $no_sejour_administratif = get_charAsNum($BUF_record["no_sejour_administratif"]); $no_rss = @$rssadms_array[$no_sejour_administratif]; $no_rss = get_numrss($no_rss); if ($no_rss > 0) { $rss_id = get_rss($no_rss); } } if ($rss_id > 0) { $finess = $BUF_record["finess"]; $no_rss = $no_rss; $rang = ""; $date_lpp = sqlDate($BUF_record["date_debut"]); if (!controle_check_date($BUF_record["date_debut"],$none,$none)) { $date_lpp = "2099-12-31"; } $lpp_id = 0; $nombre = get_num($BUF_record["nombre"],1); if ($nombre == 0) { $nombre = 1; } $montant_facture = round(get_num($BUF_record["montant_paye"]) / 1000,2); $prix_unitaire = round($montant_facture / $nombre,2); $lpp_id = get_lpp($BUF_record["code"]); $sqlcmd = "$sqlcmd_insert_lpp VALUES( $rss_id, '$finess', $no_rss, '$rang', '$date_lpp', $lpp_id, $nombre, $prix_unitaire, $montant_facture, '0') "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_lpp ); } } if ($BUF_record["ok"] == TRUE && ($BUF_record["type_enregistrement"] == "01" || $BUF_record["type_enregistrement"] == "06" || $BUF_record["type_enregistrement"] == "09")) { $rss_id = 0; $no_rss = 0; if (controle_check_num($BUF_record["no_sejour_administratif"],0,FALSE,$erreur,$commentaire)) { $no_sejour_administratif = get_charAsNum($BUF_record["no_sejour_administratif"]); $no_rss = @$rssadms_array[$no_sejour_administratif]; $no_rss = get_numrss($no_rss); if ($no_rss > 0) { $rss_id = get_rss($no_rss); } } if ($rss_id > 0) { if (get_num($BUF_record["code"]) > 0) { $finess = $BUF_record["finess"]; $no_rss = $no_rss; $rang = ""; $date_ucd = sqlDate($BUF_record["date_debut"]); if (!controle_check_date($BUF_record["date_debut"],$none,$none)) { $date_ucd = "2099-12-31"; } $ucd_id = 0; $nombre = get_num($BUF_record["nombre"],1) / 1000; if ($nombre == 0) { $nombre = 1; } $montant_facture = get_num($BUF_record["montant_paye"]) / 1000; //$prix_unitaire = round($montant_facture / $nombre,2); $coefficient_fractionnement = 1; $prix_unitaire_achat = 0; $prix_unitaire_ecart_indemnisable = 0; $montant_ecart_indemnisable = 0; $indication = $BUF_record["indication"]; $ucd_id = get_ucd($BUF_record["code"]); $type_ucd_id = get_type_ucd($BUF_record["type_enregistrement"]); $sqlcmd = "$sqlcmd_insert_ucd VALUES('$finess', $no_rss, '$rang', '$date_ucd', $ucd_id, $nombre, $coefficient_fractionnement, $prix_unitaire_achat, $prix_unitaire_ecart_indemnisable, $montant_ecart_indemnisable, $montant_facture, $rss_id, '0', '$type_ucd_id', upper('$indication')) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_ucd ); } } } } } } fclose($handle); } // Attention, si des UCD sont sur un dossier administratif de séjour multiple (plusieurs rss pour même sejour) // Attribuer au bon séjour $sqlcmd = "UPDATE temp.p_rss_ucd SET rss_id = p_rss2.oid, no_rss = p_rss2.no_rss FROM temp.p_rss JOIN temp.p_rss p_rss2 ON p_rss.no_sejour_administratif = p_rss2.no_sejour_administratif AND p_rss.oid <> p_rss2.oid WHERE p_rss_ucd.rss_id = p_rss.oid AND date_ucd NOT BETWEEN p_rss.date_entree and p_rss.date_sortie AND date_ucd BETWEEN p_rss2.date_entree and p_rss2.date_sortie;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); if ($ENV_TYPEETS != '1') { // Si radiation, la date de fin correspond à la date de radiation. Donc on enleve 1 à la date de fin $sqlcmd = " DROP TABLE IF EXISTS w_lpp_tarifs; CREATE TEMP TABLE w_lpp_tarifs AS SELECT t_lpp_tarifs.*, CASE WHEN t_lpp_tarifs.date_fin < '20991231' AND t_lpp_tarifs_next.rang IS NULL THEN '1'::text ELSE '0'::text END AS is_last FROM pmsi.t_lpp_tarifs JOIN pmsi.t_lpp ON t_lpp_tarifs.lpp_id = t_lpp.oid LEFT JOIN pmsi.t_lpp_tarifs t_lpp_tarifs_next ON t_lpp_tarifs.lpp_id = t_lpp_tarifs_next.lpp_id AND t_lpp_tarifs.rang = t_lpp_tarifs_next.rang + 1 ; UPDATE w_lpp_tarifs SET date_fin = date_fin - interval '1 day' WHERE is_last = '1' ; ANALYSE w_lpp_tarifs ;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // CLA le 30-05-2016 : Non pris en compte si montant FICHCOMP = 0 $sqlcmd = "UPDATE temp.p_rss_lpp SET non_pris_en_compte = '1' FROM temp.p_rss WHERE 1=1 AND p_rss.oid = p_rss_lpp.rss_id AND p_rss.import_id = $import_id AND (p_rss_lpp.prix_unitaire = 0 OR montant_facture = 0) AND p_rss_lpp.date_lpp >= '20140101' AND non_pris_en_compte != '1'"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "UPDATE temp.p_rss_lpp SET non_pris_en_compte = '1' FROM ( SELECT subview.rss_id, subview.lpp_id FROM ( SELECT rss_id, lpp_id, date_lpp, t_lpp.code FROM temp.p_rss, temp.p_rss_lpp, pmsi.t_lpp WHERE p_rss.import_id = $import_id AND p_rss.oid = p_rss_lpp.rss_id AND lpp_id = t_lpp.oid ) subview LEFT JOIN w_lpp_tarifs t_lpp_tarifs ON (subview.lpp_id = t_lpp_tarifs.lpp_id AND subview.date_lpp BETWEEN t_lpp_tarifs.date_debut AND t_lpp_tarifs.date_fin) where prix_unitaire is null ) subview WHERE p_rss_lpp.rss_id = subview.rss_id AND p_rss_lpp.lpp_id = subview.lpp_id AND p_rss_lpp.date_lpp >= '20140101'"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Montants Tarif responsabilité et t2a accodee (LPP) $sqlcmd = "UPDATE temp.p_rss_lpp SET prix_unitaire_tr = t_lpp_tarifs.prix_unitaire, montant_tr = round(p_rss_lpp.nombre * t_lpp_tarifs.prix_unitaire,3), montant_t2a_accorde = round(CASE WHEN p_rss_lpp.nombre * t_lpp_tarifs.prix_unitaire - p_rss_lpp.montant_facture > 0 THEN p_rss_lpp.montant_facture + (p_rss_lpp.nombre * t_lpp_tarifs.prix_unitaire - p_rss_lpp.montant_facture) / 2 ELSE p_rss_lpp.nombre * t_lpp_tarifs.prix_unitaire END,3) FROM temp.p_rss, w_lpp_tarifs t_lpp_tarifs WHERE rss_id = p_rss.oid AND t_lpp_tarifs.lpp_id = p_rss_lpp.lpp_id AND date_lpp between t_lpp_tarifs.date_debut and t_lpp_tarifs.date_fin AND p_rss_lpp.montant_facture <> 0 AND ( p_rss_lpp.prix_unitaire_tr <> t_lpp_tarifs.prix_unitaire OR p_rss_lpp.montant_tr <> round(p_rss_lpp.nombre * t_lpp_tarifs.prix_unitaire,3) OR p_rss_lpp.montant_t2a_accorde <> round(CASE WHEN p_rss_lpp.nombre * t_lpp_tarifs.prix_unitaire - p_rss_lpp.montant_facture > 0 THEN p_rss_lpp.montant_facture + (p_rss_lpp.nombre * t_lpp_tarifs.prix_unitaire - p_rss_lpp.montant_facture) / 2 ELSE p_rss_lpp.nombre * t_lpp_tarifs.prix_unitaire END,3) OR p_rss_lpp.prix_unitaire_tr IS NULL OR p_rss_lpp.montant_tr IS NULL OR p_rss_lpp.montant_t2a_accorde IS NULL )"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Ecart $sqlcmd = "UPDATE temp.p_rss_lpp SET montant_ecart_indemnisable = montant_t2a_accorde - montant_facture WHERE montant_ecart_indemnisable <> montant_t2a_accorde - montant_facture AND COALESCE(montant_t2a_accorde,0) <> 0"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "UPDATE temp.p_rss_ucd "; $sqlcmd = $sqlcmd . "SET nombre = 1 "; $sqlcmd = $sqlcmd . "FROM temp.p_rss "; $sqlcmd = $sqlcmd . "WHERE "; $sqlcmd = $sqlcmd . "p_rss_ucd.rss_id = p_rss.oid AND p_rss.import_id = $import_id "; $sqlcmd = $sqlcmd . "AND nombre = 0"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // non pris en compte ? $sqlcmd = "UPDATE temp.p_rss_ucd SET non_pris_en_compte = '1' FROM ( SELECT subview.rss_id, subview.ucd_id FROM ( SELECT rss_id, ucd_id, date_ucd, t_ucd.code FROM temp.p_rss, temp.p_rss_ucd, pmsi.t_ucd WHERE p_rss.import_id = $import_id AND p_rss.oid = p_rss_ucd.rss_id AND ucd_id = t_ucd.oid ) subview LEFT JOIN pmsi.t_ucd_tarifs ON (subview.ucd_id = t_ucd_tarifs.ucd_id AND subview.date_ucd BETWEEN t_ucd_tarifs.date_debut AND t_ucd_tarifs.date_fin AND subview.date_ucd BETWEEN t_ucd_tarifs.date_debut AND t_ucd_tarifs.top_taa_date_fin) where (top_taa <> '1' OR top_taa IS NULL) ) subview WHERE p_rss_ucd.rss_id = subview.rss_id AND p_rss_ucd.ucd_id = subview.ucd_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Essai thérapeuthique (montant facture = 0) $sqlcmd = "UPDATE temp.p_rss_ucd SET non_pris_en_compte = '1' WHERE montant_facture = 0 AND non_pris_en_compte <> '1'"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); ; // ELA 18/01/2024. Association UCD/Indication bornée // Pas de table officielle trouvée // En dur dans un premier temps // A modifier une fois la liste officielle trouvée $sqlcmd = "UPDATE temp.p_rss_ucd SET non_pris_en_compte = '1' FROM pmsi.t_ucd WHERE ucd_id = t_ucd.oid AND ( t_ucd.code = '9332620' AND indication = 'I000077' AND date_ucd NOT BETWEEN '00010101' AND '20231130' OR t_ucd.code = '9003261' AND indication = 'I000634' AND date_ucd < '20230901' )"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); ; // AVASTIN en SUS non valorisés (p_rsa.top_radiation_partielle_avastin) $sqlcmd = " UPDATE temp.p_rss_ucd SET non_pris_en_compte = '1' FROM pmsi.t_type_ucd, temp.p_rsa, pmsi.t_ucd WHERE 1=1 AND p_rss_ucd.type_ucd_id = t_type_ucd.oid AND p_rss_ucd.rss_id = p_rsa.rss_id AND p_rss_ucd.ucd_id = t_ucd.oid AND t_type_ucd.code = 'SUS' AND p_rsa.top_radiation_partielle_avastin = '1' AND t_ucd.code IN ('9261104','9261110') AND non_pris_en_compte != '1'"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Mettre à jour les indication_id dans la table p_rss_ucd $sqlcmd = " UPDATE temp.p_rss_ucd SET indication_id = t_indication.oid FROM pmsi.t_indication WHERE 1=1 AND p_rss_ucd.indication = t_indication.code "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // à partir du M09 2018, pour les séjours entrés après le 01/09/2018 les UCD ne sont pas valorisés si l'indication est absente dans le fichcomp MED // L'indication I009999 semble ne pas être valorisée $sqlcmd = " UPDATE temp.p_rss_ucd SET non_pris_en_compte = '1' FROM pmsi.t_type_ucd, temp.p_rss WHERE 1=1 AND p_rss_ucd.rss_id = p_rss.oid AND p_rss_ucd.type_ucd_id = t_type_ucd.oid AND p_rss.date_entree >= '20180901' AND (trim(indication) = '' OR trim(indication) = 'I009999') AND t_type_ucd.code = 'SUS' AND non_pris_en_compte != '1'"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Montants Tarif responsabilité et t2a accodee (UCD) // Modif CLA du 2017-05-05 : les AVASTIN (ucd 9261110) sous ATU pour cancer du sein (diag C50*) doivent aussi être valorisés // http://www.atih.sante.fr/sites/default/files/public/content/2916/notice_technique_atih_ndeg_cim-mf-640-6-2016_radiation_partielle_avastin.pdf (page 6) // CLA 2019-03-08 Les UCD avec indication 'I999998' semblent ne pas récupérer les montants accordés par l'ATIH et sont valorisés avec le prix d'achat directement (à vérifier) $sqlcmd = " WITH w_avastin_atu AS ( SELECT p_rss_ucd.rss_id, p_rss_ucd.date_ucd, p_rss_ucd.ucd_id, t_ucd.code, to_char(p_rss_ucd.rss_id, '999999999999') || to_char(p_rss_ucd.ucd_id, '999999999999') as key FROM temp.p_rss_ucd JOIN pmsi.t_ucd ON t_ucd.oid = p_rss_ucd.ucd_id JOIN pmsi.t_type_ucd ON t_type_ucd.oid = p_rss_ucd.type_ucd_id JOIN temp.p_rss_diagnostics ON p_rss_diagnostics.rss_id = p_rss_ucd.rss_id JOIN pmsi.t_diagnostics ON t_diagnostics.oid = p_rss_diagnostics.diagnostic_id WHERE 1=1 AND t_ucd.code = '9261110' AND t_type_ucd.code = 'ATU' AND t_diagnostics.code like 'C50%' GROUP BY 1,2,3,4,5 ) UPDATE temp.p_rss_ucd SET prix_unitaire_tr = round(CASE WHEN indication = 'I999998' THEN montant_facture ELSE t_ucd_tarifs.prix_unitaire_ht * 102.10 / 100 END, 3), montant_tr = round(CASE WHEN indication = 'I999998' THEN montant_facture ELSE p_rss_ucd.nombre * round(t_ucd_tarifs.prix_unitaire_ht * 102.10 / 100,3) END, 3), montant_t2a_accorde = round(CASE WHEN indication = 'I999998' THEN montant_facture WHEN p_rss_ucd.nombre * round(t_ucd_tarifs.prix_unitaire_ht * 102.10 / 100,3) - p_rss_ucd.montant_facture > 0 THEN p_rss_ucd.montant_facture + (p_rss_ucd.nombre * round(t_ucd_tarifs.prix_unitaire_ht * 102.10 / 100,3) - p_rss_ucd.montant_facture) / 2 ELSE p_rss_ucd.nombre * round(t_ucd_tarifs.prix_unitaire_ht * 102.10 / 100,3) END,3) FROM temp.p_rss, pmsi.t_ucd_tarifs, pmsi.t_type_ucd WHERE rss_id = p_rss.oid AND t_ucd_tarifs.ucd_id = p_rss_ucd.ucd_id AND date_ucd between t_ucd_tarifs.date_debut and t_ucd_tarifs.date_fin AND p_rss_ucd.montant_facture <> 0 AND p_rss_ucd.type_ucd_id = t_type_ucd.oid AND (t_type_ucd.code = 'SUS' OR (t_type_ucd.code = 'ATU' AND to_char(p_rss_ucd.rss_id, '999999999999') || to_char(p_rss_ucd.ucd_id, '999999999999') = ANY (ARRAY( SELECT key FROM w_avastin_atu)::text[]))) AND ( p_rss_ucd.prix_unitaire_tr <> round(CASE WHEN indication = 'I999998' THEN montant_facture ELSE t_ucd_tarifs.prix_unitaire_ht * 102.10 / 100 END, 3) OR p_rss_ucd.montant_tr <> round(CASE WHEN indication = 'I999998' THEN montant_facture ELSE p_rss_ucd.nombre * round(t_ucd_tarifs.prix_unitaire_ht * 102.10 / 100,3) END, 3) OR p_rss_ucd.montant_t2a_accorde <> round(CASE WHEN indication = 'I999998' THEN montant_facture WHEN p_rss_ucd.nombre * round(t_ucd_tarifs.prix_unitaire_ht * 102.10 / 100,3) - p_rss_ucd.montant_facture > 0 THEN p_rss_ucd.montant_facture + (p_rss_ucd.nombre * round(t_ucd_tarifs.prix_unitaire_ht * 102.10 / 100,3) - p_rss_ucd.montant_facture) / 2 ELSE p_rss_ucd.nombre * round(t_ucd_tarifs.prix_unitaire_ht * 102.10 / 100,3) END,3) OR p_rss_ucd.prix_unitaire_tr IS NULL OR p_rss_ucd.montant_tr IS NULL OR p_rss_ucd.montant_t2a_accorde IS NULL )"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Les médicaments sous ATU sont rembourses $sqlcmd = "UPDATE temp.p_rss_ucd SET non_pris_en_compte = '0', montant_tr = montant_facture, montant_t2a_accorde = montant_facture, prix_unitaire_tr = montant_facture / nombre FROM temp.p_rss, pmsi.t_type_ucd WHERE p_rss_ucd.rss_id = p_rss.oid AND p_rss.en_cours = '0' AND p_rss_ucd.type_ucd_id = t_type_ucd.oid AND t_type_ucd.code = 'ATU'"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Ecart $sqlcmd = "UPDATE temp.p_rss_ucd SET montant_ecart_indemnisable = montant_t2a_accorde - montant_facture FROM pmsi.t_type_ucd WHERE p_rss_ucd.type_ucd_id = t_type_ucd.oid AND t_type_ucd.code = 'SUS' AND montant_ecart_indemnisable <> montant_t2a_accorde - montant_facture AND COALESCE(montant_t2a_accorde,0) <> 0"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); } analyse_table_temp("p_rsf_detail"); analyse_table_temp("p_rss_lpp"); analyse_table_temp("p_rss_ucd"); logInfoMsg("$nbW_lpp LPP créés"); logInfoMsg("$nbW_ucd UCD créés"); $nbW = $nbW_detail + $nbW_lpp + $nbW_ucd; logInfoMsg("FIN GENERATION FICHCOMP. $nb lus, $nbW écrits, $nbE erreurs."); } function generation_fichsup() { global $import_id; global $file_TSP; global $file_exists_TSP; if (! $file_exists_TSP) { return; } logInfoMsg("GENERATION FICHSUP"); begin_trans(); $nb = 0; $nbW = 0; $sqlcmd_insert_tsp = " INSERT INTO temp.p_fichsup_transports ( finess, type_fichier, annee, mois, prestation_id, nb_sejours, import_id ) VALUES "; $values = array(); if ($file_exists_TSP) { logInfoMsg("Fichsup transports"); $handle = fopen($file_TSP, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) != "" && $no_ligne < 1000000) { $nb++; $BUF_record = read_tsp_line($buffer); if ($BUF_record["ok"] === TRUE && $BUF_record["type_fichier"] == "G61") { $nbW++; $finess = $BUF_record["finess"]; $type_fichier = $BUF_record["type_fichier"]; $annee = $BUF_record["annee"]; $mois = $BUF_record["periode"]; $prestation_id = get_prestation($BUF_record["code"]); $nb_sejours = get_num($BUF_record["nb_sejours"]); $values[] = "('$finess', '$type_fichier', '$annee', '$mois', $prestation_id, $nb_sejours, $import_id)"; } // Ecriture des values par bloc de 50 if (count($values) > 50) { $sqlcmd = $sqlcmd_insert_tsp . implode(", ", $values); $toResult = execute_sql($sqlcmd); $values = array(); } } } } fclose($handle); // Ecriture des values résiduelles if (count($values) > 0) { $sqlcmd = $sqlcmd_insert_tsp . implode(", ", $values); $toResult = execute_sql($sqlcmd); unset($sqlcmd); unset($values); } } commit_trans(); analyse_table_temp("p_fichsup_transports"); logInfoMsg("FIN GENERATION FICHSUP. $nb lus, $nbW écrits"); } function generation_valosej() { global $file_VSJ; global $file_exists_VSJ; global $import_id; if ($file_exists_VSJ) { logInfoMsg("Valorisation des séjours d'après VALOSEJ"); $file_VSJ_path = realpath($file_VSJ); $compteur_ligne = 0; $raw_data = ''; $updated_data = ''; $temp_file = temp_file(); if (($handle = fopen($file_VSJ_path, "r")) !== FALSE) { while (($raw_data = fgets($handle, 1000)) !== FALSE) { $compteur_ligne++; if (strpos($raw_data, ";") > -1) { $raw_data = str_replace(";", "\t", $raw_data); } $updated_data .= str_replace("\t.\t", "\t0\t", $raw_data); if ($compteur_ligne > 50) { file_put_contents($temp_file, $updated_data, FILE_APPEND); $updated_data = ''; $compteur_ligne = 0; } } if ($compteur_ligne > 0) { file_put_contents($temp_file, $updated_data, FILE_APPEND); $compteur_ligne = 0; } fclose($handle); } // $file_VSJ_path = str_replace('\\','/',$file_VSJ_path); $file_VSJ_path = str_replace('\\','/',$temp_file); $sqlcmd = "SELECT pmsi.cti_gen_valosej('$file_VSJ_path', 'temp', $import_id)"; $toResult = execute_sql($sqlcmd); unlink($temp_file); } else { logWarnMsg("Fichier VALOSEJ absent"); } } function generation_valoace() { global $file_VSE; global $file_exists_VSE; global $import_id; if ($file_exists_VSE) { logInfoMsg("Valorisation des ACE d'après VALOACE"); $file_VSE_path = realpath($file_VSE); $compteur_ligne = 0; $raw_data = ''; $updated_data = ''; $temp_file = temp_file(); if (($handle = fopen($file_VSE_path, "r")) !== FALSE) { while (($raw_data = fgets($handle, 1000)) !== FALSE) { $compteur_ligne++; if (strpos($raw_data, ";") > -1) { $raw_data = str_replace(";", "\t", $raw_data); } $updated_data .= str_replace("\t.\t", "\t0\t", $raw_data); if ($compteur_ligne > 50) { file_put_contents($temp_file, $updated_data, FILE_APPEND); $updated_data = ''; $compteur_ligne = 0; } } if ($compteur_ligne > 0) { file_put_contents($temp_file, $updated_data, FILE_APPEND); $compteur_ligne = 0; } fclose($handle); } // $file_VSJ_path = str_replace('\\','/',$file_VSJ_path); $file_VSE_path = str_replace('\\','/',$temp_file); $sqlcmd = "SELECT pmsi.cti_gen_valoace('$file_VSE_path', 'temp', $import_id)"; $toResult = execute_sql($sqlcmd); unlink($temp_file); } else { logWarnMsg("Fichier VALOACE absent"); } } function valorisation_public() { global $import_id; global $file_FCP; global $file_exists_VSJ; global $file_exists_FCP; global $ENV_TYPEETS; global $iCTI_connexion; global $annee_fin; logInfoMsg("VALORISATION GHS"); $nbE = 0; // GHS dans RSS logInfoMsg("Génération GHS selon GHM"); // RSA par RSS $sqlcmd = "DROP TABLE IF EXISTS w_rss_rsa; CREATE TEMP TABLE w_rss_rsa AS SELECT p_rss.oid AS rss_rsa_rss_id, p_rss.ghm_id AS rss_rsa_ghm_id, p_rss.ghs_id AS rss_rsa_ghs_id, p_rsa.rss_id AS rss_rsa_id_ok FROM temp.p_rss LEFT JOIN temp.p_rsa ON p_rss.oid = p_rsa.rss_id WHERE import_id = $import_id AND p_rss.ghm_id <> 0; CREATE INDEX w_rss_rsa_i1 ON w_rss_rsa USING btree (rss_rsa_rss_id); "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // Si RSA, // Remplacer GHM et GHS par ceux de GENRSA $sqlcmd = "UPDATE temp.p_rss SET ghm_id = p_rsa.ghm_genrsa_id, ghs_id = p_rsa.ghs_genrsa_id, code_retour_groupage = p_rsa.code_retour_genrsa FROM temp.p_rsa WHERE import_id = $import_id AND p_rss.oid = p_rsa.rss_id AND (p_rss.ghs_id <> p_rsa.ghs_genrsa_id OR p_rss.ghm_id <> p_rsa.ghm_genrsa_id OR code_retour_groupage <> p_rsa.code_retour_genrsa) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // GHS dans RSF DETAIL logInfoMsg("Valorisation GHS"); /* Modif de CLA le 06-11-2015 Pour le GHM 9626 de préparation aux scéances d'irradiation, OVALIDE ne valorise qu'une seule séance même si le RSS a la variable nb_seances > 1 */ $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT finess, no_rss, '' as nature, '' as mt, '' as dmt, date_entree as date_debut, date_sortie as date_fin, CASE WHEN nb_seances <= 1 OR t_ghs.code IN (9626, 9628, 9630) THEN 1 ELSE nb_seances END as nombre, 1 as coefficient, CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_ghs_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_ghs_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_ghs_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_ghs_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_ghs_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_ghs_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_ghs_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_ghs_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_ghs_public_9 ELSE 0::numeric END as prix_unitaire, 0 as base_remboursement, 0 as taux_remboursement, 0 as sejour_facture, 0 as sejour_remboursable, '' as compteur, '' as ligne_t2a, '' as pec_fj, 0 as pec_fj_id, 1 as coefficient_mco, 0 as sejour_remboursable_2, p_rss.ghs_id as ghs_id, 0 as sejour_rembourse_noemie, '' as nature_noemie, t_prestations.oid as prestation_id, p_rss.oid as rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss, pmsi.t_prestations, pmsi.t_ghs , pmsi.t_ghm WHERE import_id = $import_id AND t_prestations.code = 'GHS' AND p_rss.ghm_id > 0 AND p_rss.ghs_id = t_ghs.oid AND p_rss.ghm_id = t_ghm.oid AND p_rss.oid NOT IN (SELECT rss_id FROM temp.p_rsf_detail WHERE prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code = 'GHS')) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // génération EXH si RSA $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT p_rss.finess, p_rss.no_rss, '' as nature, '' as mt, '' as dmt, p_rss.date_entree as date_debut, p_rss.date_sortie as date_fin, p_rsa.nb_exh, 1 as coefficient, CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_exh_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_exh_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_exh_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_exh_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_exh_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_exh_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_exh_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_exh_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_exh_public_9 ELSE 0::numeric END as prix_unitaire, 0 as base_remboursement, 0 as taux_remboursement, 0 as sejour_facture, 0 as sejour_remboursable, '' as compteur, '' as ligne_t2a, '' as pec_fj, 0 as pec_fj_id, 1 as coefficient_mco, 0 as sejour_remboursable_2, p_rss.ghs_id as ghs_id, 0 as sejour_rembourse_noemie, '' as nature_noemie, t_prestations.oid as prestation_id, p_rss.oid as rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss, temp.p_rsa, pmsi.t_prestations, pmsi.t_ghs WHERE import_id = $import_id AND p_rsa.rss_id = p_rss.oid AND t_prestations.code = 'EXH' AND p_rss.ghm_id > 0 AND p_rss.ghs_id = t_ghs.oid AND p_rss.oid NOT IN (SELECT rss_id FROM temp.p_rsf_detail WHERE prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code = 'EXH')) AND p_rsa.nb_exh > 0"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // Actes GHS $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT p_rss.finess, p_rss.no_rss, '' as nature, '' as mt, '' as dmt, p_rss.date_entree as date_debut, p_rss.date_sortie as date_fin, p_rsa.nb_actes_9510, 1 as coefficient, CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_ghs_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_ghs_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_ghs_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_ghs_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_ghs_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_ghs_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_ghs_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_ghs_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_ghs_public_9 ELSE 0::numeric END as prix_unitaire, 0 as base_remboursement, 0 as taux_remboursement, 0 as sejour_facture, 0 as sejour_remboursable, '' as compteur, '' as ligne_t2a, '' as pec_fj, 0 as pec_fj_id, 1 as coefficient_mco, 0 as sejour_remboursable_2, p_rss.ghs_id as ghs_id, 0 as sejour_rembourse_noemie, '' as nature_noemie, t_prestations.oid as prestation_id, p_rss.oid as rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss, temp.p_rsa, pmsi.t_prestations, pmsi.t_ghs WHERE import_id = $import_id AND p_rsa.rss_id = p_rss.oid AND t_prestations.code = 'IRRE1' AND p_rss.ghm_id > 0 AND t_ghs.code = 9610 AND p_rss.oid NOT IN (SELECT rss_id FROM temp.p_rsf_detail WHERE prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code = 'IRRE1')) AND p_rsa.nb_actes_9510 > 0"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT p_rss.finess, p_rss.no_rss, '' as nature, '' as mt, '' as dmt, p_rss.date_entree as date_debut, p_rss.date_sortie as date_fin, p_rsa.nb_actes_9511, 1 as coefficient, CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_ghs_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_ghs_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_ghs_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_ghs_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_ghs_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_ghs_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_ghs_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_ghs_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_ghs_public_9 ELSE 0::numeric END as prix_unitaire, 0 as base_remboursement, 0 as taux_remboursement, 0 as sejour_facture, 0 as sejour_remboursable, '' as compteur, '' as ligne_t2a, '' as pec_fj, 0 as pec_fj_id, 1 as coefficient_mco, 0 as sejour_remboursable_2, p_rss.ghs_id as ghs_id, 0 as sejour_rembourse_noemie, '' as nature_noemie, t_prestations.oid as prestation_id, p_rss.oid as rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss, temp.p_rsa, pmsi.t_prestations, pmsi.t_ghs WHERE import_id = $import_id AND p_rsa.rss_id = p_rss.oid AND t_prestations.code = 'IRRE2' AND p_rss.ghm_id > 0 AND t_ghs.code = 9611 AND p_rss.oid NOT IN (SELECT rss_id FROM temp.p_rsf_detail WHERE prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code = 'IRRE2')) AND p_rsa.nb_actes_9511 > 0"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT p_rss.finess, p_rss.no_rss, '' as nature, '' as mt, '' as dmt, p_rss.date_entree as date_debut, p_rss.date_sortie as date_fin, p_rsa.nb_actes_9512, 1 as coefficient, CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_ghs_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_ghs_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_ghs_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_ghs_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_ghs_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_ghs_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_ghs_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_ghs_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_ghs_public_9 ELSE 0::numeric END as prix_unitaire, 0 as base_remboursement, 0 as taux_remboursement, 0 as sejour_facture, 0 as sejour_remboursable, '' as compteur, '' as ligne_t2a, '' as pec_fj, 0 as pec_fj_id, 1 as coefficient_mco, 0 as sejour_remboursable_2, p_rss.ghs_id as ghs_id, 0 as sejour_rembourse_noemie, '' as nature_noemie, t_prestations.oid as prestation_id, p_rss.oid as rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss, temp.p_rsa, pmsi.t_prestations, pmsi.t_ghs WHERE import_id = $import_id AND p_rsa.rss_id = p_rss.oid AND t_prestations.code = 'IRRE3' AND p_rss.ghm_id > 0 AND t_ghs.code = 9612 AND p_rss.oid NOT IN (SELECT rss_id FROM temp.p_rsf_detail WHERE prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code = 'IRRE3')) AND p_rsa.nb_actes_9512 > 0"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT p_rss.finess, p_rss.no_rss, '' as nature, '' as mt, '' as dmt, p_rss.date_entree as date_debut, p_rss.date_sortie as date_fin, p_rsa.nb_actes_9515, 1 as coefficient, CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_ghs_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_ghs_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_ghs_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_ghs_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_ghs_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_ghs_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_ghs_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_ghs_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_ghs_public_9 ELSE 0::numeric END as prix_unitaire, 0 as base_remboursement, 0 as taux_remboursement, 0 as sejour_facture, 0 as sejour_remboursable, '' as compteur, '' as ligne_t2a, '' as pec_fj, 0 as pec_fj_id, 1 as coefficient_mco, 0 as sejour_remboursable_2, p_rss.ghs_id as ghs_id, 0 as sejour_rembourse_noemie, '' as nature_noemie, t_prestations.oid as prestation_id, p_rss.oid as rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss, temp.p_rsa, pmsi.t_prestations, pmsi.t_ghs WHERE import_id = $import_id AND p_rsa.rss_id = p_rss.oid AND t_prestations.code = 'IRRE4' AND p_rss.ghm_id > 0 AND t_ghs.code = 9619 AND p_rss.oid NOT IN (SELECT rss_id FROM temp.p_rsf_detail WHERE prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code = 'IRRE4')) AND p_rsa.nb_actes_9515 > 0"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT p_rss.finess, p_rss.no_rss, '' as nature, '' as mt, '' as dmt, p_rss.date_entree as date_debut, p_rss.date_sortie as date_fin, p_rsa.nb_actes_9524, 1 as coefficient, CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_ghs_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_ghs_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_ghs_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_ghs_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_ghs_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_ghs_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_ghs_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_ghs_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_ghs_public_9 ELSE 0::numeric END as prix_unitaire, 0 as base_remboursement, 0 as taux_remboursement, 0 as sejour_facture, 0 as sejour_remboursable, '' as compteur, '' as ligne_t2a, '' as pec_fj, 0 as pec_fj_id, 1 as coefficient_mco, 0 as sejour_remboursable_2, p_rss.ghs_id as ghs_id, 0 as sejour_rembourse_noemie, '' as nature_noemie, t_prestations.oid as prestation_id, p_rss.oid as rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss, temp.p_rsa, pmsi.t_prestations, pmsi.t_ghs WHERE import_id = $import_id AND p_rsa.rss_id = p_rss.oid AND t_prestations.code = 'IRRE5' AND p_rss.ghm_id > 0 AND t_ghs.code = 9620 AND p_rss.oid NOT IN (SELECT rss_id FROM temp.p_rsf_detail WHERE prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code = 'IRRE5')) AND p_rsa.nb_actes_9524 > 0"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT p_rss.finess, p_rss.no_rss, '' as nature, '' as mt, '' as dmt, p_rss.date_entree as date_debut, p_rss.date_sortie as date_fin, p_rsa.nb_sup_apherese, 1 as coefficient, CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_ghs_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_ghs_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_ghs_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_ghs_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_ghs_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_ghs_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_ghs_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_ghs_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_ghs_public_9 ELSE 0::numeric END as prix_unitaire, 0 as base_remboursement, 0 as taux_remboursement, 0 as sejour_facture, 0 as sejour_remboursable, '' as compteur, '' as ligne_t2a, '' as pec_fj, 0 as pec_fj_id, 1 as coefficient_mco, 0 as sejour_remboursable_2, p_rss.ghs_id as ghs_id, 0 as sejour_rembourse_noemie, '' as nature_noemie, t_prestations.oid as prestation_id, p_rss.oid as rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss, temp.p_rsa, pmsi.t_prestations, pmsi.t_ghs WHERE import_id = $import_id AND p_rsa.rss_id = p_rss.oid AND t_prestations.code = 'APHE' AND p_rss.ghm_id > 0 AND t_ghs.code = 9615 AND p_rss.oid NOT IN (SELECT rss_id FROM temp.p_rsf_detail WHERE prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code = 'APHE')) AND p_rsa.nb_sup_apherese > 0"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT p_rss.finess, p_rss.no_rss, '' as nature, '' as mt, '' as dmt, p_rss.date_entree as date_debut, p_rss.date_sortie as date_fin, p_rsa.nb_actes_9622, 1 as coefficient, CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_ghs_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_ghs_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_ghs_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_ghs_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_ghs_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_ghs_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_ghs_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_ghs_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_ghs_public_9 ELSE 0::numeric END as prix_unitaire, 0 as base_remboursement, 0 as taux_remboursement, 0 as sejour_facture, 0 as sejour_remboursable, '' as compteur, '' as ligne_t2a, '' as pec_fj, 0 as pec_fj_id, 1 as coefficient_mco, 0 as sejour_remboursable_2, p_rss.ghs_id as ghs_id, 0 as sejour_rembourse_noemie, '' as nature_noemie, t_prestations.oid as prestation_id, p_rss.oid as rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss, temp.p_rsa, pmsi.t_prestations, pmsi.t_ghs WHERE import_id = $import_id AND p_rsa.rss_id = p_rss.oid AND t_prestations.code = 'IRRE7' AND p_rss.ghm_id > 0 AND t_ghs.code = 9622 AND p_rss.oid NOT IN (SELECT rss_id FROM temp.p_rsf_detail WHERE prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code = 'IRRE7')) AND p_rsa.nb_actes_9622 > 0"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT p_rss.finess, p_rss.no_rss, '' as nature, '' as mt, '' as dmt, p_rss.date_entree as date_debut, p_rss.date_sortie as date_fin, p_rsa.nb_actes_9621, 1 as coefficient, CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_ghs_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_ghs_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_ghs_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_ghs_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_ghs_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_ghs_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_ghs_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_ghs_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_ghs_public_9 ELSE 0::numeric END as prix_unitaire, 0 as base_remboursement, 0 as taux_remboursement, 0 as sejour_facture, 0 as sejour_remboursable, '' as compteur, '' as ligne_t2a, '' as pec_fj, 0 as pec_fj_id, 1 as coefficient_mco, 0 as sejour_remboursable_2, p_rss.ghs_id as ghs_id, 0 as sejour_rembourse_noemie, '' as nature_noemie, t_prestations.oid as prestation_id, p_rss.oid as rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss, temp.p_rsa, pmsi.t_prestations, pmsi.t_ghs WHERE import_id = $import_id AND p_rsa.rss_id = p_rss.oid AND t_prestations.code = 'IRRE6' AND p_rss.ghm_id > 0 AND t_ghs.code = 9621 AND p_rss.oid NOT IN (SELECT rss_id FROM temp.p_rsf_detail WHERE prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code = 'IRRE6')) AND p_rsa.nb_actes_9621 > 0"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT p_rss.finess, p_rss.no_rss, '' as nature, '' as mt, '' as dmt, p_rss.date_entree as date_debut, p_rss.date_sortie as date_fin, p_rsa.nb_actes_6523, 1 as coefficient, CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_ghs_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_ghs_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_ghs_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_ghs_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_ghs_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_ghs_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_ghs_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_ghs_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_ghs_public_9 ELSE 0::numeric END as prix_unitaire, 0 as base_remboursement, 0 as taux_remboursement, 0 as sejour_facture, 0 as sejour_remboursable, '' as compteur, '' as ligne_t2a, '' as pec_fj, 0 as pec_fj_id, 1 as coefficient_mco, 0 as sejour_remboursable_2, p_rss.ghs_id as ghs_id, 0 as sejour_rembourse_noemie, '' as nature_noemie, t_prestations.oid as prestation_id, p_rss.oid as rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss, temp.p_rsa, pmsi.t_prestations, pmsi.t_ghs WHERE import_id = $import_id AND p_rsa.rss_id = p_rss.oid AND t_prestations.code = 'IRRE0' AND p_rss.ghm_id > 0 AND t_ghs.code = 6523 AND p_rss.oid NOT IN (SELECT rss_id FROM temp.p_rsf_detail WHERE prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code = 'IRRE0')) AND p_rsa.nb_actes_6523 > 0"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $supp_rdth = array( "= 9610" => "IRRE1", "= 9611" => "IRRE2", "= 9612" => "IRRE3", "= 9619" => "IRRE4", "= 9620" => "IRRE5", "= 9621" => "IRRE6", "= 9622" => "IRRE7", "= 9624" => "IRRE8", "= 9625" => "IRRE9", "= 9631" => "IRRE10", "= 9632" => "IRRE11", "= 9633" => "IRRE12", "= 9615" => "APHE", "NOT IN (9610,9611,9612,9619,9620,9621,9622,9624,9625,9631,9632,9633,9615)" => "IRRE0" ); foreach($supp_rdth as $rdth_ghs_id => $rdth_prestation_code){ $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT finess, p_rss.no_rss, '' as nature, '' as mt, '' as dmt, date_entree as date_debut, date_sortie as date_fin, p_rsa_rdth.nb_supplements, 1 as coefficient, CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_ghs_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_ghs_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_ghs_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_ghs_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_ghs_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_ghs_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_ghs_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_ghs_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_ghs_public_9 ELSE 0::numeric END as prix_unitaire, 0 as base_remboursement, 0 as taux_remboursement, 0 as sejour_facture, 0 as sejour_remboursable, '' as compteur, '' as ligne_t2a, '' as pec_fj, 0 as pec_fj_id, 1 as coefficient_mco, 0 as sejour_remboursable_2, p_rss.ghs_id as ghs_id, 0 as sejour_rembourse_noemie, '' as nature_noemie, t_prestations.oid as prestation_id, p_rss.oid as rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss JOIN temp.p_rsa_rdth ON p_rsa_rdth.rss_id = p_rss.oid JOIN pmsi.t_ghs ON t_ghs.oid = p_rsa_rdth.ghs_id JOIN pmsi.t_prestations ON t_prestations.code = '$rdth_prestation_code' WHERE import_id = $import_id AND p_rss.ghm_id > 0 AND p_rsa_rdth.nb_supplements > 0 AND t_ghs.code $rdth_ghs_id AND p_rss.oid NOT IN ( SELECT rss_id FROM temp.p_rsf_detail WHERE prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code = '$rdth_prestation_code') ) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); } // Prévalorisation GHS/EXH $sqlcmd = "UPDATE temp.p_rsf_detail SET sejour_rembourse_noemie = prix_unitaire * nombre , update_rules = array_append(update_rules, 22) FROM temp.p_rss, pmsi.t_prestations WHERE import_id = $import_id AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' AND p_rsf_detail.prestation_id = t_prestations.oid AND t_prestations.code IN ('GHS', 'EXH', 'IRRE0', 'IRRE1', 'IRRE2', 'IRRE3', 'IRRE4', 'IRRE5', 'IRRE6', 'IRRE7', 'IRRE8', 'IRRE9', 'IRRE10', 'IRRE11', 'IRRE12', 'APHE') "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // EXB avec RSA // EXB sans transfert avec forfait $sqlcmd = "UPDATE temp.p_rsf_detail SET sejour_rembourse_noemie = sejour_rembourse_noemie - CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.forfait_exb_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.forfait_exb_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.forfait_exb_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.forfait_exb_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.forfait_exb_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.forfait_exb_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.forfait_exb_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.forfait_exb_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.forfait_exb_public_9 ELSE 0::numeric END, update_rules = array_append(update_rules, 26) FROM temp.p_rss, temp.p_rsa, pmsi.t_prestations, pmsi.t_ghs WHERE import_id = $import_id AND p_rss.oid = p_rsa.rss_id AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' AND p_rsf_detail.prestation_id = t_prestations.oid AND t_prestations.code = 'GHS' AND p_rsf_detail.ghs_id = t_ghs.oid AND p_rss.duree_sejour >= 0 AND p_rsa.nb_exb > 0 AND CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.forfait_exb_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.forfait_exb_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.forfait_exb_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.forfait_exb_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.forfait_exb_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.forfait_exb_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.forfait_exb_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.forfait_exb_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.forfait_exb_public_9 ELSE 0::numeric END > 0 "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // EXB Sans transfert avec tarif $sqlcmd = "UPDATE temp.p_rsf_detail SET sejour_rembourse_noemie = sejour_rembourse_noemie - round( p_rsa.nb_exb / 10.00 * CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_exb_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_exb_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_exb_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_exb_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_exb_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_exb_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_exb_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_exb_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_exb_public_9 ELSE 0::numeric END , 2), update_rules = array_append(update_rules, 27) FROM temp.p_rss, temp.p_rsa, pmsi.t_prestations, pmsi.t_ghs WHERE import_id = $import_id AND p_rss.oid = p_rsa.rss_id AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' AND p_rsf_detail.prestation_id = t_prestations.oid AND t_prestations.code = 'GHS' AND p_rsf_detail.ghs_id = t_ghs.oid AND p_rss.mode_sortie <> '9' AND p_rsa.nb_exb > 0 AND CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.forfait_exb_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.forfait_exb_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.forfait_exb_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.forfait_exb_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.forfait_exb_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.forfait_exb_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.forfait_exb_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.forfait_exb_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.forfait_exb_public_9 ELSE 0::numeric END = 0 AND CASE WHEN p_rss.date_sortie >= t_ghs.date_debut_public_1 AND p_rss.date_sortie <= t_ghs.date_fin_public_1 THEN t_ghs.tarif_exb_public_1 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_2 AND p_rss.date_sortie <= t_ghs.date_fin_public_2 THEN t_ghs.tarif_exb_public_2 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_3 AND p_rss.date_sortie <= t_ghs.date_fin_public_3 THEN t_ghs.tarif_exb_public_3 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_4 AND p_rss.date_sortie <= t_ghs.date_fin_public_4 THEN t_ghs.tarif_exb_public_4 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_5 AND p_rss.date_sortie <= t_ghs.date_fin_public_5 THEN t_ghs.tarif_exb_public_5 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_6 AND p_rss.date_sortie <= t_ghs.date_fin_public_6 THEN t_ghs.tarif_exb_public_6 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_7 AND p_rss.date_sortie <= t_ghs.date_fin_public_7 THEN t_ghs.tarif_exb_public_7 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_8 AND p_rss.date_sortie <= t_ghs.date_fin_public_8 THEN t_ghs.tarif_exb_public_8 WHEN p_rss.date_sortie >= t_ghs.date_debut_public_9 AND p_rss.date_sortie <= t_ghs.date_fin_public_9 THEN t_ghs.tarif_exb_public_9 ELSE 0::numeric END > 0 "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // Réhospitalisations même GHM $sqlcmd = "DROP TABLE IF EXISTS w_rehosp; CREATE temp TABLE w_rehosp AS SELECT p_vidhosp.no_anonyme, p_rss.oid, p_rss.no_rss, p_rss.date_entree, p_rss.date_sortie, p_rss.ghm_id, 0 AS from_rss_id, '20991231'::date AS from_date_sortie FROM temp.p_rss JOIN temp.p_vidhosp ON p_vidhosp.rss_id = p_rss.oid AND p_vidhosp.no_anonyme IS NOT NULL AND p_vidhosp.no_anonyme <> '' WHERE p_rss.mode_entree = '7' AND p_rss.provenance = '1' AND p_rss.import_id = $import_id AND p_rss.ghm_id <> 0 AND p_rss.ghm_id not in (SELECT oid FROM pmsi.t_ghm WHERE code like '28%' OR code like '24%' OR texte ilike 'séance%'); UPDATE w_rehosp SET from_date_sortie = (SELECT MAX(p_rss_b.date_sortie) FROM temp.p_rss p_rss_b JOIN temp.p_vidhosp ON p_vidhosp.rss_id = p_rss_b.oid WHERE w_rehosp.no_anonyme = p_vidhosp.no_anonyme AND p_rss_b.import_id = $import_id AND p_rss_b.ghm_id <> 0 AND p_rss_b.date_sortie < w_rehosp.date_entree), from_rss_id = (SELECT to_number(substr(MAX(p_rss_b.date_sortie::text || p_rss_b.oid::text), 11, 20),'999999999999') FROM temp.p_rss p_rss_b JOIN temp.p_vidhosp ON p_vidhosp.rss_id = p_rss_b.oid WHERE w_rehosp.no_anonyme = p_vidhosp.no_anonyme AND p_rss_b.import_id = $import_id AND p_rss_b.ghm_id <> 0 AND p_rss_b.date_sortie < w_rehosp.date_entree) ; UPDATE temp.p_rss SET rehosp_meme_ghm = '1' FROM w_rehosp, temp.p_rss p_rss_p, temp.p_rsf_detail WHERE p_rss_p.oid = from_rss_id AND p_rss.oid = w_rehosp.oid AND p_rss_p.mode_sortie = '7' AND p_rss_p.destination = '1' AND p_rss_p.ghm_id = w_rehosp.ghm_id AND w_rehosp.date_entree - from_date_sortie BETWEEN 3 AND 10 AND w_rehosp.oid = p_rsf_detail.rss_id AND p_rsf_detail.prestation_id IN (select oid FROM pmsi.t_prestations WHERE code = 'GHS') AND p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1'; UPDATE temp.p_rsf_detail SET sejour_rembourse_noemie = round(sejour_rembourse_noemie / 2,2), update_rules = array_append(update_rules, 28) FROM temp.p_rss WHERE import_id = $import_id AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_detail.prestation_id IN (select oid FROM pmsi.t_prestations WHERE code = 'GHS') AND p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' AND p_rss.rehosp_meme_ghm = '1';"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // Suppléments logInfoMsg("Génération suppléments"); // Generation supplements avec RSA // Depuis 2013 Les forfaits D passent en GHS // http://www.atih.sante.fr/sites/default/files/public/content/2435/notice_technique_financement_2014_cim-mf-249-1-2014.pdf // $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT p_rss.finess, p_rss.no_rss, '', '', '', p_rss.date_entree, p_rss.date_sortie, subview.nombre, 1, COALESCE(t_prestation_tarif.tarif,0), 0, 100, 0, 0, '', '', '', 0, 0, 0, 0, 0, '', t_prestations.oid, p_rss.oid, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss JOIN (SELECT rss_id, 'SRA' as supplement_code, nb_sup_sra as nombre FROM temp.p_rsa WHERE nb_sup_sra > 0 UNION SELECT rss_id, 'REA' as supplement_code, nb_sup_rea as nombre FROM temp.p_rsa WHERE nb_sup_rea > 0 UNION SELECT rss_id, 'STF' as supplement_code, nb_sup_stf as nombre FROM temp.p_rsa WHERE nb_sup_stf > 0 UNION SELECT rss_id, 'SSC' as supplement_code, nb_sup_ssc as nombre FROM temp.p_rsa WHERE nb_sup_ssc > 0 UNION SELECT rss_id, 'SRC' as supplement_code, nb_sup_src as nombre FROM temp.p_rsa WHERE nb_sup_src > 0 UNION SELECT rss_id, 'NN1' as supplement_code, nb_sup_nn1 as nombre FROM temp.p_rsa WHERE nb_sup_nn1 > 0 UNION SELECT rss_id, 'NN2' as supplement_code, nb_sup_nn2 as nombre FROM temp.p_rsa WHERE nb_sup_nn2 > 0 UNION SELECT rss_id, 'NN3' as supplement_code, nb_sup_nn3 as nombre FROM temp.p_rsa WHERE nb_sup_nn3 > 0 UNION SELECT rss_id, 'D09' as supplement_code, nb_sup_dialyse_1 as nombre FROM temp.p_rsa WHERE nb_sup_dialyse_1 > 0 UNION SELECT rss_id, 'D18' as supplement_code, nb_sup_dialyse_2 as nombre FROM temp.p_rsa WHERE nb_sup_dialyse_2 > 0 UNION SELECT rss_id, 'D19' as supplement_code, nb_sup_dialyse_3 as nombre FROM temp.p_rsa WHERE nb_sup_dialyse_3 > 0 UNION SELECT rss_id, 'D17' as supplement_code, nb_sup_dialyse_4 as nombre FROM temp.p_rsa WHERE nb_sup_dialyse_4 > 0 UNION SELECT rss_id, 'OHB' as supplement_code, nb_sup_hyperbare as nombre FROM temp.p_rsa WHERE nb_sup_hyperbare > 0 UNION SELECT rss_id, 'ANT' as supplement_code, nb_sup_ant as nombre FROM temp.p_rsa WHERE nb_sup_ant > 0 UNION SELECT rss_id, 'RAP' as supplement_code, nb_sup_rap as nombre FROM temp.p_rsa WHERE nb_sup_rap > 0 UNION SELECT rss_id, 'SDC' as supplement_code, nb_sup_sdc as nombre FROM temp.p_rsa WHERE nb_sup_sdc > 0 UNION SELECT rss_id, supplement_code, nombre FROM ( SELECT base.cti_to_number(substr(data,27,10)) AS no_rsa, substr(data,37,3) AS supplement_code, base.cti_to_number(substr(data,40,10)) as nombre FROM w_out_diap ) subview JOIN temp.p_rsa ON subview.no_rsa = p_rsa.no_rsa UNION SELECT rss_id, supplement_code, nombre FROM ( SELECT base.cti_to_number(substr(data,27,10)) AS no_rsa, substr(data,37,3) AS supplement_code, 1 as nombre FROM w_out_porg ) subview JOIN temp.p_rsa ON subview.no_rsa = p_rsa.no_rsa UNION SELECT rss_id, supplement_code, nombre FROM ( SELECT base.cti_to_number(substr(data,27,10)) AS no_rsa, substr(data,37,3) AS supplement_code, base.cti_to_number(substr(data,52,10)) as nombre FROM w_out_pie ) subview JOIN temp.p_rsa ON subview.no_rsa = p_rsa.no_rsa ) subview ON p_rss.oid = subview.rss_id JOIN pmsi.t_prestations ON t_prestations.code = subview.supplement_code LEFT JOIN pmsi.t_prestation_tarif ON t_prestations.oid = t_prestation_tarif.prestation_id AND p_rss.date_sortie BETWEEN t_prestation_tarif.date_debut AND t_prestation_tarif.date_fin AND t_prestation_tarif.type_ets = '2' WHERE import_id = $import_id "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // IVG $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT subview.finess, subview.no_rss, '', '', '', subview.date_entree, subview.date_sortie, 1 AS nombre, 1, t_prestation_tarif.tarif AS prix_unitaire, 0, 100, 0, 0, '', '', '', 0, 1, 0, 0, 0, '', t_prestations.oid, subview.oid, 'B', 1, '1', '0', 0, 0, 0 FROM ( SELECT p_rss.oid, p_rss.no_rss, date_entree, date_sortie, p_rss.finess, CASE WHEN MAX(case when t_actes_c.code LIKE 'JNJP%' then '1' else '0' end) = '1' THEN 'AMF' WHEN MAX(case when activite_ccam = '4' then '1' else '0' end) = '1' AND MAX(duree_sejour) = 0 THEN 'AMD' WHEN MAX(case when activite_ccam = '4' then '1' else '0' end) = '1' AND MAX(duree_sejour) IN (1,2) THEN 'APD' WHEN MAX(duree_sejour) IN (1,2) THEN 'IPD' ELSE 'IMD' END AS prestation_code FROM temp.p_rss JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id LEFT JOIN temp.p_rss_actes ON p_rss_actes.rss_id = p_rss.oid LEFT JOIN pmsi.t_actes_c ON acte_id = t_actes_c.oid WHERE t_ghm.code = '14Z08Z' AND import_id = $import_id GROUP BY 1,2,3,4,5 ) subview JOIN pmsi.t_prestations ON prestation_code = t_prestations.code JOIN pmsi.t_prestation_tarif ON prestation_id = t_prestations.oid AND t_prestation_tarif.type_ets = '2' WHERE date_sortie BETWEEN t_prestation_tarif.date_debut AND t_prestation_tarif.date_fin "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // Suppléments de transport d'après Fishsup logInfoMsg("Suppléments transport"); // TDE sur mode de sortie = 7 $nb_tde = 0; $nb_tse = 0; $nb_ms7 = 0; $tx_remb_tde = 100; // Nombre de TDE et TSE à ventiler $sqlcmd = " SELECT t_prestations.code, nb_sejours FROM temp.p_fichsup_transports JOIN pmsi.t_prestations ON t_prestations.oid = p_fichsup_transports.prestation_id WHERE 1=1 AND import_id = $import_id AND t_prestations.code IN ('TDE', 'TSE') ORDER BY t_prestations.code"; $result = $iCTI_connexion->query($sqlcmd);; while ($row = pg_fetch_row($result)) { if ($row[0] == 'TDE') { $nb_tde = $row[1] + 0; } else { $nb_tse = $row[1] + 0; } } // Nombre de séjours hospitalisés avec mode de sortie 7 Transfert définitif $sqlcmd = " SELECT count(*) FROM temp.p_rss WHERE 1=1 AND ghm_id > 0 AND mode_sortie = '7' AND import_id = $import_id"; $result = $iCTI_connexion->query($sqlcmd);; while ($row = pg_fetch_row($result)) { if (intval($row[0]) > 0) { $nb_ms7 = $row[0] + 0; } } if ($nb_tde > 0) { // calcul du taux de remboursement moyen sur N-1 pour les TDE // https://www.atih.sante.fr/sites/default/files/public/content/3369/notice_technique_complementaire_recueil_transports_n_cim-mf-559-6-2018.pdf // (calcul empirique...) // D'après un sujet sur Agora (https://agora.atih.sante.fr/agora/ago_action_theme.do?action=voir_sujet&id_sujet=53460#171522), // il se calcule avec deux décimales sur les RSA valorisés, hors séances $annee_precedente = $annee_fin - 1; $sqlcmd = " SELECT round(avg(p_rsf_total.taux_remboursement), 2) as tx_remboursement FROM pmsi.p_rsf_total JOIN pmsi.p_rss on p_rss.oid = p_rsf_total.rss_id JOIN pmsi.t_ghm_c ON t_ghm_c.oid = p_rss.ghm_id WHERE 1=1 AND p_rss.mois_sortie between " . $annee_precedente . "01 AND " . $annee_precedente . "12 AND t_ghm_c.cmd_code != '28' AND traitement_epmsi = '30' AND en_cours = '0' AND p_rss.ghm_id > 0 "; $result = $iCTI_connexion->query($sqlcmd);; while ($row = pg_fetch_row($result)) { if (intval($row[0]) > 0) { $tx_remb_tde = $row[0] + 0; } } $sqlcmd = " INSERT INTO temp.p_rsf_detail (rss_id, no_rss, date_debut, date_fin, prix_unitaire, taux_remboursement, prestation_id) SELECT p_rss.oid , p_rss.no_rss , p_rss.date_entree , p_rss.date_sortie , t_prestation_tarif.tarif as prix_unitaire , $tx_remb_tde as taux_remboursement , t_prestations.oid as prestation_id FROM temp.p_rss JOIN pmsi.t_prestations ON t_prestations.code = 'TDE' JOIN pmsi.t_prestation_tarif ON t_prestations.oid = t_prestation_tarif.prestation_id AND p_rss.date_sortie BETWEEN t_prestation_tarif.date_debut AND t_prestation_tarif.date_fin AND t_prestation_tarif.type_ets = '2' WHERE 1=1 AND import_id = $import_id AND p_rss.mode_sortie = '7' AND ghm_id > 0 ORDER BY p_rss.date_sortie LIMIT $nb_tde"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); // S'il y a plus de TDE que de séjours en MS7, on met au hasard les TDE supplémentaires sur les séjours avec sortie domicile if ($nb_tde > $nb_ms7) { $sqlcmd = " INSERT INTO temp.p_rsf_detail (rss_id, no_rss, date_debut, date_fin, prix_unitaire, taux_remboursement, prestation_id) SELECT p_rss.oid , p_rss.no_rss , p_rss.date_entree , p_rss.date_sortie , t_prestation_tarif.tarif as prix_unitaire , 100 as taux_remboursement , t_prestations.oid as prestation_id FROM temp.p_rss JOIN pmsi.t_prestations ON t_prestations.code = 'TDE' JOIN pmsi.t_prestation_tarif ON t_prestations.oid = t_prestation_tarif.prestation_id AND p_rss.date_sortie BETWEEN t_prestation_tarif.date_debut AND t_prestation_tarif.date_fin AND t_prestation_tarif.type_ets = '2' WHERE 1=1 AND import_id = $import_id AND p_rss.mode_sortie = '8' AND ghm_id > 0 ORDER BY p_rss.date_sortie LIMIT " . $nb_tde - $nb_ms7; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); } } // On ventile au hasard les TSE sur les séjours avec retour à domicile qui n'ont pas déjà de TDE if ($nb_tse > 0) { $sqlcmd = " INSERT INTO temp.p_rsf_detail (rss_id, no_rss, date_debut, date_fin, prix_unitaire, taux_remboursement, prestation_id) SELECT p_rss.oid , p_rss.no_rss , p_rss.date_entree , p_rss.date_sortie , t_prestation_tarif.tarif as prix_unitaire , 100 as taux_remboursement , t_prestations.oid as prestation_id FROM temp.p_rss JOIN pmsi.t_prestations ON t_prestations.code = 'TSE' JOIN pmsi.t_prestation_tarif ON t_prestations.oid = t_prestation_tarif.prestation_id AND p_rss.date_sortie BETWEEN t_prestation_tarif.date_debut AND t_prestation_tarif.date_fin AND t_prestation_tarif.type_ets = '2' WHERE 1=1 AND import_id = $import_id AND p_rss.mode_sortie = '8' AND ghm_id > 0 AND p_rss.oid != ALL (ARRAY(SELECT rss_id FROM temp.p_rsf_detail JOIN temp.p_rss ON p_rss.oid = p_rsf_detail.rss_id JOIN pmsi.t_prestations ON t_prestations.oid = p_rsf_detail.prestation_id WHERE 1=1 AND p_rss.import_id = $import_id AND t_prestations.code = 'TDE' )::bigint[]) ORDER BY p_rss.date_sortie LIMIT $nb_tse"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); } // Totaux Facture logInfoMsg("Valorisation Facture"); // Coefficient mco $sqlcmd = "UPDATE temp.p_rsf_detail SET coefficient_mco = v_coefficient_mco.coefficient_mco_calcul, coefficient_geo = v_coefficient_mco.coef_geo, coefficient_pacte_resp = v_coefficient_mco.coef_cice, update_rules = array_append(update_rules, 30) FROM pmsi.t_prestations, base.v_coefficient_mco, temp.p_rss WHERE p_rsf_detail.prestation_id = t_prestations.oid AND p_rsf_detail.rss_id = p_rss.oid AND p_rss.finess = v_coefficient_mco.finess AND p_rss.import_id = $import_id AND p_rsf_detail.est_ligne_rss = '1' AND p_rss.date_sortie BETWEEN base.v_coefficient_mco.date_debut AND base.v_coefficient_mco.date_fin AND p_rsf_detail.type = 'B' AND t_prestations.code IN ( 'GHS', 'EXH', 'REA', 'REP', 'RAP', 'SRC', 'STF', 'NN1', 'NN2', 'NN3', 'DIP', 'D09', 'D17', 'D18', 'D19', 'OHB', 'IRRE0', 'IRRE1', 'IRRE2', 'IRRE3', 'IRRE4', 'IRRE5', 'IRRE6', 'IRRE7', 'IRRE8', 'IRRE9', 'IRRE10', 'IRRE11', 'IRRE12', 'APHE', 'ANT', 'PO1', 'PO2', 'PO3', 'PO4', 'PO5', 'PO6', 'PO7', 'PO8', 'PO9', 'POA', 'SDC', 'TDE', 'TDE1', 'TDE2', 'TDE3', 'TDE4', 'TDE5', 'TSE', 'TSE6', 'TSE7', 'TSE8', 'TSE9' ) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // Valorisation GHS $sqlcmd = "UPDATE temp.p_rsf_detail SET coefficient = CASE WHEN t_prestations.code = 'GHS' AND sejour_rembourse_noemie <> 0 THEN sejour_rembourse_noemie / prix_unitaire / nombre ELSE 1 END, base_remboursement = round(sejour_rembourse_noemie * coefficient_mco,2), base_remboursement_sauf_transition = round(sejour_rembourse_noemie * coefficient_geo * coefficient_pacte_resp,2), sejour_rembourse_noemie = 0 , update_rules = array_append(update_rules, 32) FROM temp.p_rss, pmsi.t_prestations WHERE import_id = $import_id AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' AND p_rsf_detail.prestation_id = t_prestations.oid AND t_prestations.code IN ('GHS', 'EXH') "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // Valorisation suppléments $sqlcmd = " UPDATE temp.p_rsf_detail SET base_remboursement = round(nombre * prix_unitaire * coefficient_mco,2), base_remboursement_sauf_transition = round(nombre * prix_unitaire * coefficient_geo * coefficient_pacte_resp,2), sejour_rembourse_noemie = 0, update_rules = array_append(update_rules, 35) FROM temp.p_rss, pmsi.t_prestations WHERE 1=1 AND import_id = $import_id AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' AND p_rsf_detail.prestation_id = t_prestations.oid AND t_prestations.code IN ( 'REA', 'REP', 'RAP', 'SRC', 'STF', 'NN1', 'NN2', 'NN3', 'DIP', 'D09', 'D17', 'D18', 'D19', 'OHB', 'IRRE0', 'IRRE1', 'IRRE2', 'IRRE3', 'IRRE4', 'IRRE5', 'IRRE6', 'IRRE7', 'IRRE8', 'IRRE9', 'IRRE10', 'IRRE11', 'IRRE12', 'APHE', 'ANT', 'AMD', 'AMF', 'APD', 'IMD', 'IPD', 'FJS', 'PO1', 'PO2', 'PO3', 'PO4', 'PO5', 'PO6', 'PO7', 'PO8', 'PO9', 'POA', 'SDC', 'TDE', 'TDE1', 'TDE2', 'TDE3', 'TDE4', 'TDE5', 'TSE', 'TSE6', 'TSE7', 'TSE8', 'TSE9' ) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); // Prestations lpp $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, base_remboursement_sauf_transition, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT p_rss.finess, p_rss.no_rss, '', '', '', date_lpp, date_lpp, nombre, 1, p_rss_lpp.prix_unitaire, montant_facture, montant_facture, 100, montant_facture, montant_facture, '', '', '', 0, 1, 0, 0, montant_facture, '', t_lpp.prestation_defaut_id, rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss_lpp JOIN temp.p_rss ON p_rss_lpp.rss_id = p_rss.oid JOIN pmsi.t_lpp ON p_rss_lpp.lpp_id = t_lpp.oid WHERE p_rss.ghm_id > 0 AND (p_rss.mode_entree <> '0' AND p_rss.mode_sortie <> '0') AND montant_facture <> 0 AND non_pris_en_compte <> '1'; "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Ecarts LPP $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, base_remboursement_sauf_transition, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT p_rss.finess, p_rss.no_rss, '', '', '', date_lpp, date_lpp, nombre, 1, p_rss_lpp.montant_ecart_indemnisable / nombre, montant_ecart_indemnisable, montant_ecart_indemnisable, 100, montant_ecart_indemnisable, montant_ecart_indemnisable, '', '', '', 0, 1, 0, 0, montant_ecart_indemnisable, '', t_prestations.oid, rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss_lpp JOIN temp.p_rss ON p_rss_lpp.rss_id = p_rss.oid JOIN pmsi.t_lpp ON p_rss_lpp.lpp_id = t_lpp.oid JOIN pmsi.t_prestations ON t_prestations.code = 'ETI' WHERE p_rss.ghm_id > 0 AND (p_rss.mode_entree <> '0' AND p_rss.mode_sortie <> '0') AND montant_ecart_indemnisable <> 0 AND non_pris_en_compte <> '1'; "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Prestation pharmacie $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, base_remboursement_sauf_transition, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT p_rss.finess, p_rss.no_rss, '', '', '', date_ucd, date_ucd, nombre, 1, p_rss_ucd.montant_facture / p_rss_ucd.nombre, montant_facture, montant_facture, 100, montant_facture, montant_facture, '', '', '', 0, 1, 0, 0, montant_facture, '', CASE WHEN t_ucd.prestation_defaut_id > 0 THEN t_ucd.prestation_defaut_id ELSE COALESCE(t_prestations.oid,0) END, rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss_ucd JOIN temp.p_rss ON p_rss_ucd.rss_id = p_rss.oid JOIN pmsi.t_ucd ON p_rss_ucd.ucd_id = t_ucd.oid JOIN pmsi.t_type_ucd ON t_type_ucd.oid = p_rss_ucd.type_ucd_id LEFT JOIN pmsi.t_prestations ON t_prestations.code = 'PHH' WHERE (p_rss.mode_entree <> '0' AND p_rss.mode_sortie <> '0') AND montant_facture <> 0 AND non_pris_en_compte <> '1' AND (t_type_ucd.code = 'SUS' OR t_type_ucd.code = 'ATU'); "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Ecart pharmacie $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, base_remboursement_sauf_transition, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT p_rss.finess, p_rss.no_rss, '', '', '', date_ucd, date_ucd, nombre, 1, p_rss_ucd.montant_ecart_indemnisable / p_rss_ucd.nombre, montant_ecart_indemnisable, montant_ecart_indemnisable, 100, montant_ecart_indemnisable, montant_ecart_indemnisable, '', '', '', 0, 1, 0, 0, montant_ecart_indemnisable, '', t_prestations.oid, rss_id, 'B', 1, '1', '0', 0, 0, 0 FROM temp.p_rss_ucd JOIN temp.p_rss ON p_rss_ucd.rss_id = p_rss.oid JOIN pmsi.t_ucd ON p_rss_ucd.ucd_id = t_ucd.oid JOIN pmsi.t_type_ucd ON t_type_ucd.oid = p_rss_ucd.type_ucd_id JOIN pmsi.t_prestations ON t_prestations.code = 'EMI' WHERE (p_rss.mode_entree <> '0' AND p_rss.mode_sortie <> '0') AND montant_ecart_indemnisable <> 0 AND non_pris_en_compte <> '1' AND t_type_ucd.code = 'SUS';"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Ajustement p_vidhosp // Prise en charge forfait journalier $sqlcmd = "UPDATE temp.p_vidhosp SET code_pec_fj = 'X', code_pec_fj_id = t_pec_fj.oid FROM temp.p_rss JOIN pmsi.t_ghm ON ghm_id = t_ghm.oid JOIN base.t_pec_fj ON t_pec_fj.code = 'X' WHERE p_vidhosp.rss_id = p_rss.oid AND code_pec_fj <> 'X' AND (code_pec = '1' AND duree_sejour = 0 OR code_pec = '1' AND t_ghm.code LIKE '15%' OR code_pec = '1' AND t_ghm.code LIKE '28%' OR code_pec = '1' AND t_ghm.code in ('23K02Z' , '14Z08Z') )"; //$toResult = execute_sql($sqlcmd, $nbE, $nbW ); //commit_trans(); // taux remboursement calcule vidhosp $sqlcmd = "DROP TABLE IF EXISTS w_rsf_detail_po; CREATE TEMP TABLE w_rsf_detail_po AS SELECT rss_id AS rss_id_po FROM temp.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid WHERE t_prestations.code IN ('PO1', 'PO2', 'PO3', 'PO4', 'PO5', 'PO6', 'PO7', 'PO8', 'PO9', 'POA') GROUP BY 1"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "UPDATE temp.p_vidhosp SET taux_remboursement_calcule = CASE WHEN p_rss.date_entree - p_rss.date_naissance <= 30 THEN 100 WHEN t_ghm.code IN ('28Z08Z', '28Z09Z', '28Z11Z', '28Z12Z', '28Z13Z', '28Z18Z', '28Z19Z', '28Z20Z', '28Z21Z', '28Z22Z', '28Z23Z', '28Z24Z', '28Z25Z') THEN 100 WHEN rss_id_po IS NOT NULL THEN 100 WHEN p_vidhosp.code_pec = '2' THEN 80 WHEN p_vidhosp.nature_pec IN ('30','41','90') THEN 100 WHEN p_vidhosp.justificatif_exo = '9' AND p_vidhosp.nature_pec = '10' THEN 90 WHEN p_vidhosp.justificatif_exo NOT IN ('0','2') THEN 100 ELSE 80 END FROM temp.p_rss JOIN pmsi.t_ghm ON ghm_id = t_ghm.oid LEFT JOIN w_rsf_detail_po ON p_rss.oid = w_rsf_detail_po.rss_id_po WHERE p_vidhosp.rss_id = p_rss.oid"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // taux remboursement et forfait utilise vidhosp $sqlcmd = "UPDATE temp.p_vidhosp SET taux_remboursement_utilise = CASE WHEN p_rss.date_entree - p_rss.date_naissance <= 30 THEN 100 WHEN t_ghm.code IN ('28Z08Z', '28Z09Z', '28Z11Z', '28Z12Z', '28Z13Z', '28Z18Z', '28Z19Z', '28Z20Z', '28Z21Z', '28Z22Z', '28Z23Z', '28Z24Z', '28Z25Z') THEN 100 WHEN rss_id_po IS NOT NULL THEN 100 WHEN p_vidhosp.code_pec IN ('2','3') AND p_vidhosp.taux_remboursement NOT IN (80,90) THEN 80 WHEN p_vidhosp.taux_remboursement IN (80,90,100) THEN p_vidhosp.taux_remboursement ELSE p_vidhosp.taux_remboursement_calcule END, code_pec_fj_utilise = CASE WHEN p_rss.date_entree - p_rss.date_naissance <= 30 THEN 'E' WHEN t_ghm.code IN ('28Z08Z', '28Z09Z', '28Z11Z', '28Z12Z', '28Z13Z', '28Z18Z', '28Z19Z', '28Z20Z', '28Z21Z', '28Z22Z', '28Z23Z', '28Z24Z', '28Z25Z') THEN 'X' WHEN rss_id_po IS NOT NULL THEN 'X' WHEN t_pec.code IN ('2') THEN 'A' WHEN p_rss.duree_sejour = 0 THEN 'X' WHEN p_rss.mois_sortie < 201501 AND t_ghm.code LIKE '15%' THEN 'X' WHEN t_ghm.code LIKE '28%' THEN 'X' WHEN t_ghm.code in ('23K02Z' , '14Z08Z') THEN 'X' WHEN t_pec_fj.code = 'X' THEN 'X' WHEN t_pec_fj.code = 'L' THEN 'E' WHEN t_pec_fj.code = 'R' THEN 'E' WHEN p_vidhosp.nature_pec IN ('13','41') THEN 'E' WHEN t_pec_fj.code = 'A' THEN 'A' ELSE '' END FROM temp.p_rss JOIN temp.p_vidhosp p_vidhosp2 ON p_rss.oid = p_vidhosp2.rss_id JOIN base.t_pec ON p_vidhosp2.code_pec_id = t_pec.oid JOIN base.t_pec_fj ON p_vidhosp2.code_pec_fj_id = t_pec_fj.oid JOIN pmsi.t_ghm on ghm_id = t_ghm.oid LEFT JOIN w_rsf_detail_po ON p_rss.oid = w_rsf_detail_po.rss_id_po WHERE p_rss.oid = p_vidhosp.rss_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // montant remboursable $sqlcmd = "UPDATE temp.p_rsf_detail SET taux_remboursement = p_vidhosp.taux_remboursement_utilise, sejour_remboursable = round(p_rsf_detail.base_remboursement * p_vidhosp.taux_remboursement_utilise / 100,2), sejour_remboursable_2 = round(p_rsf_detail.base_remboursement * (100 - p_vidhosp.taux_remboursement_utilise) / 100,2), update_rules = array_append(update_rules, 36) FROM pmsi.t_prestations, temp.p_rss, temp.p_vidhosp, base.t_pec WHERE p_rsf_detail.prestation_id = t_prestations.oid AND t_pec.oid = p_vidhosp.code_pec_id AND p_rss.import_id = $import_id AND p_rsf_detail.rss_id = p_rss.oid AND p_vidhosp.rss_id = p_rss.oid AND p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' AND ghm_id > 0 AND t_prestations.code NOT IN ('GHS','EMI','ETI','TDE','TSE') AND p_rsf_detail.prestation_id != ALL (ARRAY(SELECT prestation_defaut_id FROM pmsi.t_lpp WHERE prestation_defaut_id <> 0 GROUP BY 1)::bigint[]) AND p_rsf_detail.prestation_id != ALL (ARRAY(SELECT prestation_defaut_id FROM pmsi.t_ucd WHERE prestation_defaut_id <> 0 GROUP BY 1)::bigint[]) AND ( p_rsf_detail.taux_remboursement <> p_vidhosp.taux_remboursement_utilise OR p_rsf_detail.sejour_remboursable <> round(p_rsf_detail.base_remboursement * p_vidhosp.taux_remboursement_utilise / 100,2) OR sejour_remboursable_2 <> round(p_rsf_detail.base_remboursement * (100 - p_vidhosp.taux_remboursement_utilise) / 100,2) );"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // CLA 2019-03-06 : Passage de la participation forfaitaire de 18 à 24 euros au 01/01/2019 $sqlcmd = "UPDATE temp.p_rsf_detail SET taux_remboursement = p_vidhosp.taux_remboursement_utilise, sejour_remboursable = p_rsf_detail.base_remboursement - (CASE WHEN p_rsf_detail.base_remboursement > 0 AND t_exoneration_tm.code NOT IN ('X') AND p_vidhosp.taux_remboursement_utilise = 100 AND t_ghm.code NOT LIKE '28%' AND p_vidhosp.nature_pec NOT IN ('13') AND t_facturation_18euros.code = '1' THEN 24 ELSE 0 END) - (CASE WHEN p_rsf_detail.base_remboursement > 0 AND p_vidhosp.taux_remboursement_utilise = 100 AND code_pec_fj_utilise = 'A' AND mode_sortie NOT IN ('7','9') THEN (p_rss.date_sortie - p_rss.date_entree + 1) * 20 WHEN p_rsf_detail.base_remboursement > 0 AND p_vidhosp.taux_remboursement_utilise = 100 AND code_pec_fj_utilise = 'A' AND mode_sortie IN ('9') THEN (p_rss.date_sortie - p_rss.date_entree) * 20 WHEN p_rsf_detail.base_remboursement > 0 AND p_vidhosp.taux_remboursement_utilise = 100 AND code_pec_fj_utilise = 'A' AND mode_sortie IN ('7') THEN (p_rss.date_sortie - p_rss.date_entree) * 20 ELSE 0 END) - round((p_rsf_detail.base_remboursement * (100 - p_vidhosp.taux_remboursement_utilise) / 100),2) , update_rules = array_append(update_rules, 37) FROM pmsi.t_prestations, temp.p_rss JOIN temp.p_vidhosp ON p_vidhosp.rss_id = p_rss.oid JOIN base.t_exoneration_tm ON p_vidhosp.exoneration_tm_id = t_exoneration_tm.oid JOIN base.t_facturation_18euros ON p_vidhosp.facturation_18euros_id = t_facturation_18euros.oid JOIN base.t_pec_fj ON p_vidhosp.code_pec_fj_id = t_pec_fj.oid JOIN pmsi.t_ghm ON p_rss.ghm_id = t_ghm.oid WHERE p_rsf_detail.prestation_id = t_prestations.oid AND p_rss.import_id = $import_id AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' AND ghm_id > 0 AND t_prestations.code = 'GHS' AND ( p_rsf_detail.taux_remboursement <> p_vidhosp.taux_remboursement_utilise OR sejour_remboursable <> (p_rsf_detail.base_remboursement - (CASE WHEN p_rsf_detail.base_remboursement > 0 AND t_exoneration_tm.code NOT IN ('X') AND p_vidhosp.taux_remboursement_utilise = 100 AND t_ghm.code NOT LIKE '28%' AND p_vidhosp.nature_pec NOT IN ('13') AND t_facturation_18euros.code = '1' THEN 24 ELSE 0 END) - (CASE WHEN p_rsf_detail.base_remboursement > 0 AND p_vidhosp.taux_remboursement_utilise = 100 AND p_vidhosp.code_pec_fj_utilise = 'A' AND mode_sortie NOT IN ('7','9') THEN (p_rss.date_sortie - p_rss.date_entree + 1) * 20 WHEN p_rsf_detail.base_remboursement > 0 AND p_vidhosp.taux_remboursement_utilise = 100 AND p_vidhosp.code_pec_fj_utilise = 'A' AND mode_sortie IN ('9') THEN (p_rss.date_sortie - p_rss.date_entree) * 20 WHEN p_rsf_detail.base_remboursement > 0 AND p_vidhosp.taux_remboursement_utilise = 100 AND p_vidhosp.code_pec_fj_utilise = 'A' AND mode_sortie IN ('7') THEN (p_rss.date_sortie - p_rss.date_entree) * 20 ELSE 0 END) - round((p_rsf_detail.base_remboursement * (100 - p_vidhosp.taux_remboursement_utilise) / 100),2) ) ); "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); logInfoMsg("EXH a 100% sur dossier a 80% si duree > 30j"); // Sur EXH, Attention, après 30jours, facturation à 100% // Identification des EXH à 80% pour une durée de séjour > 30j $sqlcmd = "DROP TABLE IF EXISTS w_exh_30; CREATE TEMP TABLE w_exh_30 AS SELECT p_rsf_detail.CTID AS from_CTID, p_rsf_detail.base_remboursement / p_rsf_detail.nombre AS prix_unitaire_reel, p_rsf_detail.base_remboursement_sauf_transition / p_rsf_detail.nombre AS prix_unitaire_reel_sauf_transition, CASE WHEN mode_sortie = '9' THEN date_sortie - date_entree + 1 ELSE date_sortie - date_entree END AS duree_sejour_facturee, 0::numeric AS nombre_100, 0::numeric AS base_remboursement_100, 0::numeric AS base_remboursement_sauf_transition_100, 0::numeric AS sejour_remboursable_100, 0::numeric AS nombre_80, 0::numeric AS sejour_remboursable_80, 0::numeric AS base_remboursement_80, 0::numeric AS base_remboursement_sauf_transition_80, p_rsf_detail.* FROM temp.p_rsf_detail JOIN pmsi.t_prestations on t_prestations.oid = prestation_id AND t_prestations.code = 'EXH' JOIN temp.p_rss on p_rsf_detail.rss_id = p_rss.oid WHERE p_rsf_detail.taux_remboursement <> 100 AND est_ligne_rss = '1' AND p_rss.duree_sejour > 30;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Calcul nouveaux remboursement (80% <= 30j et 100% > 30j) $sqlcmd = "UPDATE w_exh_30 SET nombre_100 = duree_sejour_facturee - 30, nombre_80 = nombre - (duree_sejour_facturee - 30); UPDATE w_exh_30 SET nombre_100 = nombre_100 + nombre_80, nombre_80 = 0 WHERE nombre_80 < 0; UPDATE w_exh_30 SET base_remboursement_100 = round(nombre_100 * prix_unitaire_reel,2), base_remboursement_sauf_transition_100 = round(nombre_100 * prix_unitaire_reel_sauf_transition,2), sejour_remboursable_100 = round(nombre_100 * prix_unitaire_reel,2), sejour_remboursable_80 = round(nombre_80 * prix_unitaire_reel * 80 / 100,2), base_remboursement_80 = base_remboursement - round(nombre_100 * prix_unitaire_reel,2), base_remboursement_sauf_transition_80 = base_remboursement_sauf_transition - round(nombre_100 * prix_unitaire_reel_sauf_transition,2);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Mise à jour lignes existantes : 80% $sqlcmd = "UPDATE temp.p_rsf_detail SET nombre = nombre_80, base_remboursement = base_remboursement_80, base_remboursement_sauf_transition = base_remboursement_sauf_transition_80, sejour_remboursable = sejour_remboursable_80, update_rules = array_append(p_rsf_detail.update_rules, 39) FROM w_exh_30 WHERE p_rsf_detail.CTID = from_CTID;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Suppression ligne à 80 si borne haute > 30 $sqlcmd = "DELETE FROM temp.p_rsf_detail USING w_exh_30 WHERE w_exh_30.rss_id = p_rsf_detail.rss_id AND w_exh_30.prestation_id = p_rsf_detail.prestation_id AND p_rsf_detail.nombre = 0 AND p_rsf_detail.taux_remboursement <> 100"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Ajout lignes à 100% $sqlcmd = "INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum, montant_supplement_nf, sejour_remboursable_rum, pec_fj_id, base_remboursement_sauf_transition, base_remboursement_rum_sauf_transition) SELECT finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre_100 AS nombre, coefficient, prix_unitaire, base_remboursement_100 AS base_remboursement, 100 AS taux_remboursement, sejour_facture, sejour_remboursable_100 AS sejour_remboursable, compteur, ligne_t2a, pec_fj, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum, montant_supplement_nf, sejour_remboursable_rum, pec_fj_id, base_remboursement_sauf_transition_100 AS base_remboursement_sauf_transition, base_remboursement_rum_sauf_transition FROM w_exh_30;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); if ($file_exists_FCP) { logInfoMsg("Fichcomp transport"); $sqlcmd = " DROP TABLE IF EXISTS w_in_transp; CREATE TEMP TABLE w_in_transp (data text, no_sejour text, prestation_date date, prestation_code text, prestation_id bigint, rss_id bigint, coefficient_mco numeric, taux_remboursement numeric, prix_unitaire numeric ); COPY w_in_transp(data) FROM '$file_FCP' WITH DELIMITER AS E'\01' ; DELETE FROM w_in_transp WHERE substr(data,10,2) <> '15' ; UPDATE w_in_transp SET no_sejour = trim(substr(data,12,20)), prestation_date = base.cti_to_date(trim(substr(data,41,8))), prestation_code = trim(substr(data,49,3)) || base.cti_to_number(trim(substr(data,52,2))) ; UPDATE w_in_transp SET rss_id = p_rss.oid FROM temp.p_rss WHERE no_sejour_administratif = no_sejour AND prestation_date BETWEEN date_entree AND date_sortie ; UPDATE w_in_transp SET rss_id = p_rss.oid FROM temp.p_rss WHERE w_in_transp.rss_id IS NULL AND substr(no_sejour_administratif,2) = no_sejour AND no_sejour_administratif BETWEEN 'A' AND 'Z99999' AND prestation_date BETWEEN date_entree AND date_sortie ; UPDATE w_in_transp SET coefficient_mco = p_rsf_detail.coefficient_mco, taux_remboursement = p_rsf_detail.taux_remboursement FROM temp.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid WHERE w_in_transp.rss_id = p_rsf_detail.rss_id AND t_prestations.code = 'GHS' ; UPDATE w_in_transp SET prestation_id = t_prestations.oid, prix_unitaire = t_prestation_tarif.tarif FROM pmsi.t_prestations JOIN pmsi.t_prestation_tarif ON t_prestation_tarif.prestation_id = t_prestations.oid WHERE prestation_code = t_prestations.code AND prestation_date BETWEEN t_prestation_tarif.date_debut AND t_prestation_tarif.date_fin AND t_prestation_tarif.type_ets = '2' ; UPDATE w_in_transp SET prestation_id = t_prestations.oid, prix_unitaire = t_prestation_tarif.tarif FROM pmsi.t_prestations JOIN pmsi.t_prestation_tarif ON t_prestation_tarif.prestation_id = t_prestations.oid WHERE w_in_transp.prestation_id IS NULL AND substr(prestation_code,1,3) = t_prestations.code AND prestation_date BETWEEN t_prestation_tarif.date_debut AND t_prestation_tarif.date_fin AND t_prestation_tarif.type_ets = '2' ; INSERT INTO temp.p_rsf_detail( finess, no_rss, nature, mt, dmt, date_debut, date_fin, nombre, coefficient, prix_unitaire, base_remboursement, taux_remboursement, sejour_facture, sejour_remboursable, compteur, ligne_t2a, pec_fj, pec_fj_id, coefficient_mco, sejour_remboursable_2, ghs_id, sejour_rembourse_noemie, nature_noemie, prestation_id, rss_id, type, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) SELECT p_rss.finess, p_rss.no_rss, '' AS nature, '' AS mt, '' AS dmt, prestation_date AS date_debut, prestation_date AS date_fin, 1 AS nombre, 1 AS coefficient, w_in_transp.prix_unitaire, round(w_in_transp.prix_unitaire * w_in_transp.coefficient_mco,2) AS base_remboursement, w_in_transp.taux_remboursement, round(w_in_transp.prix_unitaire * w_in_transp.coefficient_mco,2) AS sejour_facture, round(w_in_transp.prix_unitaire * w_in_transp.coefficient_mco * taux_remboursement / 100,2) AS sejour_remboursable, '' AS compteur, '' AS ligne_t2a, '' AS pec_fj, 0 AS pec_fj_id, w_in_transp.coefficient_mco, 0 AS sejour_remboursable_2, 0 AS ghs_id, 0 AS sejour_rembourse_noemie, '' AS nature_noemie, w_in_transp.prestation_id, w_in_transp.rss_id, 'B' AS type, 1 AS coefficient_geo, '1' AS est_ligne_rss, '0' AS est_ligne_rum, 0 AS no_rum, 0 AS unite_medicale_id, 0 AS base_remboursement_rum FROM w_in_transp JOIN temp.p_rss ON w_in_transp.rss_id = p_rss.oid" ; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); } // Facture $sqlcmd = "INSERT INTO temp.p_rsf_total( "; $sqlcmd = $sqlcmd . "finess, no_rss, code_pec, rang_beneficiaire, regime, nature_pec, "; $sqlcmd = $sqlcmd . "justificatif_exo, no_facture, code_regularisation, base_remboursement, "; $sqlcmd = $sqlcmd . "sejour_facture, sejour_remboursable, honoraires_factures, honoraires_remboursable, "; $sqlcmd = $sqlcmd . "t2a_facture, dmi_facture, phc_facture, participation_assure_avant_oc, "; $sqlcmd = $sqlcmd . "sejour_remboursable_2, honoraires_remboursable_2, montant_dmi_ghs2006, "; $sqlcmd = $sqlcmd . "forfait_facture, "; $sqlcmd = $sqlcmd . "nb_exh, ca_exh, nb_exb, ca_exb, nb_ghs, ca_ghs, taux_remboursement, regime_id, exoneration_tm_id, nature_pec_id, code_pec_id, rss_id, nb_ghsmin) "; $sqlcmd = $sqlcmd . "SELECT "; $sqlcmd = $sqlcmd . "finess, no_rss, '1', '', '01', '10', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, oid, 0 "; $sqlcmd = $sqlcmd . "FROM temp.p_rss "; $sqlcmd = $sqlcmd . "WHERE import_id = $import_id "; $sqlcmd = $sqlcmd . "AND oid NOT IN (SELECT rss_id FROM temp.p_rsf_total)"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "UPDATE temp.p_rsf_total SET base_remboursement = COALESCE(subview.base_remboursement,0) FROM temp.p_rss LEFT JOIN ( SELECT rss_id, SUM(p_rsf_detail.base_remboursement) as base_remboursement FROM temp.p_rsf_detail WHERE p_rsf_detail.est_ligne_rss = '1' GROUP BY rss_id) subview ON p_rss.oid = subview.rss_id WHERE import_id = $import_id AND p_rsf_total.rss_id = p_rss.oid AND p_rss.ghm_id > 0 AND ( p_rsf_total.base_remboursement IS DISTINCT FROM COALESCE(subview.base_remboursement,0) )"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // Si fichier ValoSEJ importé, valorisation selon VALOSEJ if ($ENV_TYPEETS != "1") { generation_valosej(); // return; } analyse_table_temp("p_rsf_total"); analyse_table_temp("p_rsf_detail"); logInfoMsg("FIN VALORISATION GHS. $nbE erreurs."); } /* * Fichier .ano correspond au vidhospo anonymisé * Insertion dans la table p_vidhosp */ function generation_ano_vidhosp() { global $import_id; global $file_ANO; global $file_exists_ANO; if (!$file_exists_ANO) { logWarnMsg("Le fichier ANO (OUT) n'existe pas, pas de génération ANO"); return; } logInfoMsg("GENERATION ANO"); begin_trans(); $rssadms_array = array(); // Génération $nb = 0; $nbW = 0; $nbE = 0; $no_ligne = 0; $rss_id = 0; $handle = @fopen($file_ANO, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 99999); $no_ligne++; if (trim($buffer) !== "" && $no_ligne < 100000000000 ) { $nb++; $BUF_record = read_ano_line($buffer); if ($BUF_record["ok"] === true) { if ($BUF_record["type_enregistrement"] === "ANO") { $rss_id = 0; $no_rss = 0; $no_rsa = get_num($BUF_record["no_rsa"]); $code_pec = $BUF_record["code_pec"]; // deprecated, remplacé par code_pec_id $valideCodesPec = array("0", "1", "2", "3", "X"); if (!in_array($code_pec, $valideCodesPec)) { $code_pec = "1"; } $code_pec_id = get_pec($code_pec); $nature_pec = $BUF_record["nature_assurance"]; // deprecated, remplacé par regime_id if (! controle_check_num($nature_pec,2, false,$none,$none)) { $nature_pec = "10"; } $nature_pec_id = get_nature_pec($nature_pec); $taux_remboursement = get_num($BUF_record["taux_remboursement_c"]) / 100; $hospit_nouveau_ne = $BUF_record["hospit_nouveau_ne"]; $matricule_assure = $BUF_record["immatriculation_assure"] ; $cle_matricule_assure = $BUF_record["cle_immatriculation_assure"] ; $regime = $BUF_record["grand_regime"]; // deprecated, remplacé par regime_id $regime_id = get_regime($BUF_record["grand_regime"]); if (controle_check_date($BUF_record["date_naissance"],$none,$none, true)) { $date_naissance = sqlDate($BUF_record["date_naissance"]); } else { $date_naissance = default_birth_date($BUF_record["date_naissance"]); } $sexe = $BUF_record["sexe"]; $no_sejour_administratif = get_charAsNum($BUF_record["no_sejour_administratif"]); $justificatif_exo = $BUF_record["justificatif_exo"]; // deprecated, remplacé par exoneration_tm_id $exoneration_tm_id = get_exoneration_tm($BUF_record["justificatif_exo"]); $code_pec_fj = $BUF_record["code_pec_fj"]; // deprecated, remplacé par code_pec_fj_id $code_pec_fj_id = get_pec_fj($BUF_record["code_pec_fj"]); $type_contrat_oc = $BUF_record["type_contrat_oc"]; // deprecated, remplacé par type_contrat_oc_id $type_contrat_oc_id = get_type_contrat_oc($BUF_record["type_contrat_oc"]); $facturation_18euros = $BUF_record["facturation_18euros"]; // deprecated, remplacé par facturation_18euros_id $facturation_18euros_id = get_facturation_18euros($BUF_record["facturation_18euros"]); $nombre_venues = get_num($BUF_record["nombre_venues"]); $montant_tm = get_num($BUF_record["montant_tm"]) / 100; $montant_fj = get_num($BUF_record["montant_fj"]) / 100; $montant_remboursable_amo = get_num($BUF_record["total_remboursable_amo"]) / 100; $montant_parcours_soins = get_num($BUF_record["montant_parcours_soins"]); $base_remboursement = get_num($BUF_record["base_remboursement_c"]) / 100; $motif_non_facturation_id = get_motif_non_facturation($BUF_record["motif_non_facturation"]); $cmu = $BUF_record["cmu"]; $prelevement_organe = $BUF_record["prelevement_organe"]; $montant_remboursable_amc = get_num($BUF_record["total_remboursable_amc"]) / 100; $no_anonyme = $BUF_record["no_anonyme"]; // Nouveautés ANO_HOSP 2014, format V009 $code_participation_assure = $BUF_record["code_participation_assure"]; $rang_naissance = $BUF_record["rang_naissance"]; $rang_beneficiaire = $BUF_record["rang_beneficiaire"]; $no_entree = $BUF_record["no_entree"]; $no_caisse_gestionnaire = $BUF_record["no_caisse_gestionnaire"]; $no_centre_gestionnaire = $BUF_record["no_centre_gestionnaire"]; $code_gestion = $BUF_record["code_gestion"]; $confirmation_pec = $BUF_record["confirmation_pec"]; $no_at_date_adc = $BUF_record["no_at_date_adc"]; $no_organisme_complementaire = $BUF_record["no_organisme_complementaire"]; $finess = $BUF_record["finess"]; $no_format = $BUF_record["no_format"]; $no_format_vidhosp = $BUF_record["no_format_vidhosp"]; $mois_sortie = get_num($BUF_record["mois_sortie"]); $annee_sortie = get_num($BUF_record["annee_sortie"]); $no_anonyme_individuel = $BUF_record["no_anonyme_individuel"]; $no_sejour = $BUF_record["no_sejour"]; $delai_date_entree = $BUF_record["delai_date_entree"]; $date_entree_sejour_pmsi = get_date_or_null($BUF_record["date_entree_sejour_pmsi"]); $date_sortie_sejour_pmsi = get_date_or_null($BUF_record["date_sortie_sejour_pmsi"]); $no_anonyme_mere_enfant = $BUF_record["no_anonyme_mere_enfant"]; $no_chainage_mere_enfant = $BUF_record["no_chainage_mere_enfant"]; $identifiant_anonyme_hospit = $BUF_record["identifiant_anonyme_hospit"]; $id_first_hospit = $BUF_record["id_first_hospit"]; $nature_piece_justificative = $BUF_record["nature_piece_justificative"]; $date_pec = get_date_or_null($BUF_record["date_pec"]); $date_debut_pec = get_date_or_null($BUF_record["date_debut_pec"]); $delivre_par = $BUF_record["delivre_par"]; $regime_assure = $BUF_record["regime_assure"]; $top_eclatement_flux_etab = $BUF_record["top_eclatement_flux_etab"]; $date_entree = get_date_or_null($BUF_record["date_entree"]); $date_sortie = ($BUF_record["date_sortie"] == "00000000") ? get_date_or_null("20991231") : get_date_or_null($BUF_record["date_sortie"]); $montant_total_sejour_patient = get_num($BUF_record["montant_total_sejour_patient"]); $nb_rejet_amo = get_num($BUF_record["nb_rejet_amo"]); $date_facture_amo = get_date_or_null($BUF_record["date_facture_amo"]); $date_facture_amc = get_date_or_null($BUF_record["date_facture_amc"]); $date_facture_patient = get_date_or_null($BUF_record["date_facture_patient"]); $date_paiement_amo = get_date_or_null($BUF_record["date_paiement_amo"]); $date_paiement_amc = get_date_or_null($BUF_record["date_paiement_amc"]); $date_paiement_patient = get_date_or_null($BUF_record["date_paiement_patient"]); $statut_ft_amo = $BUF_record["statut_ft_amo"]; $statut_ft_amc = $BUF_record["statut_ft_amc"]; $statut_ft_patient = $BUF_record["statut_ft_patient"]; $pays_amo = $BUF_record["pays_amo"]; $ipp_anonymise = $BUF_record["ipp_anonymise"]; $ins_anonymise = $BUF_record["ins_anonymise"]; $crc_article_51 = $BUF_record["crc_article_51"]; $crc_base_remboursement_c = $BUF_record["crc_base_remboursement_c"]; $crc_cmu = $BUF_record["crc_cmu"]; $crc_code_gestion = $BUF_record["crc_code_gestion"]; $crc_code_participation_assure = $BUF_record["crc_code_participation_assure"]; $crc_code_pec = $BUF_record["crc_code_pec"]; $crc_code_pec_fj = $BUF_record["crc_code_pec_fj"]; $crc_coherence_date_naissance = $BUF_record["crc_coherence_date_naissance"]; $crc_coherence_sexe = $BUF_record["crc_coherence_sexe"]; $crc_confirmation_pec = $BUF_record["crc_confirmation_pec"]; $crc_date_debut_pec = $BUF_record["crc_date_debut_pec"]; $crc_date_entree = $BUF_record["crc_date_entree"]; $crc_date_facture_amc = $BUF_record["crc_date_facture_amc"]; $crc_date_facture_amo = $BUF_record["crc_date_facture_amo"]; $crc_date_facture_patient = $BUF_record["crc_date_facture_patient"]; $crc_date_hospitalisation = $BUF_record["crc_date_hospitalisation"]; $crc_date_naissance = $BUF_record["crc_date_naissance"]; $crc_date_paiement_amc = $BUF_record["crc_date_paiement_amc"]; $crc_date_paiement_amo = $BUF_record["crc_date_paiement_amo"]; $crc_date_paiement_patient = $BUF_record["crc_date_paiement_patient"]; $crc_date_pec = $BUF_record["crc_date_pec"]; $crc_date_reference = $BUF_record["crc_date_reference"]; $crc_date_sortie = $BUF_record["crc_date_sortie"]; $crc_delivre_par = $BUF_record["crc_delivre_par"]; $crc_facturation_18euros = $BUF_record["crc_facturation_18euros"]; $crc_finess = $BUF_record["crc_finess"]; $crc_fusion_anohosp_hosppmsi = $BUF_record["crc_fusion_anohosp_hosppmsi"]; $crc_fusion_anohosp_pmsi = $BUF_record["crc_fusion_anohosp_pmsi"]; $crc_grand_regime = $BUF_record["crc_grand_regime"]; $crc_hospit_nouveau_ne = $BUF_record["crc_hospit_nouveau_ne"]; $crc_id_first_hospit = $BUF_record["crc_id_first_hospit"]; $crc_immatriculation_assure = $BUF_record["crc_immatriculation_assure"]; $crc_immatriculation_indiv = $BUF_record["crc_immatriculation_indiv"]; $crc_identifiant_national_sante = $BUF_record["crc_identifiant_national_sante"]; $crc_justificatif_exo = $BUF_record["crc_justificatif_exo"]; $crc_montant_fj = $BUF_record["crc_montant_fj"]; $crc_montant_parcours_soins = $BUF_record["crc_montant_parcours_soins"]; $crc_montant_tm = $BUF_record["crc_montant_tm"]; $crc_montant_total_sejour_patient = $BUF_record["crc_montant_total_sejour_patient"]; $crc_motif_non_facturation = $BUF_record["crc_motif_non_facturation"]; $crc_nature_assurance = $BUF_record["crc_nature_assurance"]; $crc_nature_piece_justificative = $BUF_record["crc_nature_piece_justificative"]; $crc_no_anonyme_mere_enfant = $BUF_record["crc_no_anonyme_mere_enfant"]; $crc_no_at_date_adc = $BUF_record["crc_no_at_date_adc"]; $crc_no_caisse_gestionnaire = $BUF_record["crc_no_caisse_gestionnaire"]; $crc_no_centre_gestionnaire = $BUF_record["crc_no_centre_gestionnaire"]; $crc_no_entree = $BUF_record["crc_no_entree"]; $crc_no_identification_patient = $BUF_record["crc_no_identification_patient"]; $crc_no_organisme_complementaire = $BUF_record["crc_no_organisme_complementaire"]; $crc_no_sejour_administratif = $BUF_record["crc_no_sejour_administratif"]; $crc_nombre_venues = $BUF_record["crc_nombre_venues"]; $crc_pays_amo = $BUF_record["crc_pays_amo"]; $crc_prelevement_organe = $BUF_record["crc_prelevement_organe"]; $crc_rang_beneficiaire = $BUF_record["crc_rang_beneficiaire"]; $crc_rang_naissance = $BUF_record["crc_rang_naissance"]; $crc_regime_assure = $BUF_record["crc_regime_assure"]; $crc_rejet_amo = $BUF_record["crc_rejet_amo"]; $crc_sexe = $BUF_record["crc_sexe"]; $crc_statut_ft_amc = $BUF_record["crc_statut_ft_amc"]; $crc_statut_ft_amo = $BUF_record["crc_statut_ft_amo"]; $crc_statut_ft_patient = $BUF_record["crc_statut_ft_patient"]; $crc_taux_remboursement_c = $BUF_record["crc_taux_remboursement_c"]; $crc_top_eclatement_flux_etab = $BUF_record["crc_top_eclatement_flux_etab"]; $crc_total_remboursable_amc = $BUF_record["crc_total_remboursable_amc"]; $crc_total_remboursable_amo = $BUF_record["crc_total_remboursable_amo"]; $crc_type_contrat_oc = $BUF_record["crc_type_contrat_oc"]; // DMT depuis mars 2025 $nbDmt = $BUF_record["nb_dmt"]; $crc_nb_dmt = $BUF_record["crc_nb_dmt"]; $no_rss = 0; if ($no_rsa > 0) { $sqlcmd = "INSERT INTO temp.p_vidhosp( no_rsa, rss_id, matricule_assure, cle_matricule_assure, regime, date_naissance, sexe, no_sejour_administratif, justificatif_exo, code_pec_fj, nature_pec, type_contrat_oc, code_pec, facturation_18euros, nombre_venues, montant_tm, montant_fj, montant_remboursable_amo, montant_parcours_soins, base_remboursement, taux_remboursement, cmu, hospit_nouveau_ne, prelevement_organe, montant_remboursable_amc, regime_id, exoneration_tm_id, nature_pec_id, code_pec_id, motif_non_facturation_id, code_pec_fj_id, type_contrat_oc_id, facturation_18euros_id, no_anonyme, ipp_anonymise, ins_anonymise, code_participation_assure, rang_naissance, rang_beneficiaire, no_entree, no_caisse_gestionnaire, no_centre_gestionnaire, code_gestion, confirmation_pec, no_at_date_adc, no_organisme_complementaire, finess, no_format, no_format_vidhosp, mois_sortie, annee_sortie, no_anonyme_individuel, no_sejour, date_entree_sejour_pmsi, date_sortie_sejour_pmsi, no_anonyme_mere_enfant, no_chainage_mere_enfant, identifiant_anonyme_hospit, id_first_hospit, nature_piece_justificative, date_debut_pec, date_pec, delivre_par, regime_assure, top_eclatement_flux_etab, date_entree, date_sortie, montant_total_sejour_patient, nb_rejet_amo, date_facture_amo, date_facture_amc, date_facture_patient, date_paiement_amo, date_paiement_amc, date_paiement_patient, statut_ft_amo, statut_ft_amc, statut_ft_patient, pays_amo,delai_date_entree, nb_dmt, import_id ) VALUES ( $no_rsa, $rss_id, '$matricule_assure', '$cle_matricule_assure', '$regime', '$date_naissance', '$sexe', '$no_sejour_administratif', '$justificatif_exo', '$code_pec_fj', '$nature_pec', '$type_contrat_oc', '$code_pec', '$facturation_18euros', $nombre_venues, $montant_tm, $montant_fj, $montant_remboursable_amo, $montant_parcours_soins, $base_remboursement, $taux_remboursement, '$cmu', '$hospit_nouveau_ne', '$prelevement_organe', $montant_remboursable_amc, $regime_id, $exoneration_tm_id, $nature_pec_id, $code_pec_id, $motif_non_facturation_id, $code_pec_fj_id, $type_contrat_oc_id, $facturation_18euros_id, '$no_anonyme', '$ipp_anonymise', '$ins_anonymise', '$code_participation_assure', '$rang_naissance', '$rang_beneficiaire', '$no_entree', '$no_caisse_gestionnaire', '$no_centre_gestionnaire', '$code_gestion', '$confirmation_pec', '$no_at_date_adc', '$no_organisme_complementaire', '$finess', '$no_format', '$no_format_vidhosp', $mois_sortie, $annee_sortie, '$no_anonyme_individuel', '$no_sejour', $date_entree_sejour_pmsi, $date_sortie_sejour_pmsi, '$no_anonyme_mere_enfant', '$no_chainage_mere_enfant', '$identifiant_anonyme_hospit', '$id_first_hospit', '$nature_piece_justificative', $date_debut_pec, $date_pec, '$delivre_par', '$regime_assure', '$top_eclatement_flux_etab', $date_entree, $date_sortie, $montant_total_sejour_patient, $nb_rejet_amo, $date_facture_amo, $date_facture_amc, $date_facture_patient, $date_paiement_amo, $date_paiement_amc, $date_paiement_patient, '$statut_ft_amo', '$statut_ft_amc', '$statut_ft_patient', '$pays_amo', '$delai_date_entree', $nbDmt, $import_id)"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $sqlcmd = "INSERT INTO temp.p_vidhosp_crc( rss_id, no_rsa, crc_article_51, crc_base_remboursement_c, crc_cmu, crc_code_gestion, crc_code_participation_assure, crc_code_pec, crc_code_pec_fj, crc_coherence_date_naissance, crc_coherence_sexe, crc_confirmation_pec, crc_date_debut_pec, crc_date_entree, crc_date_facture_amc, crc_date_facture_amo, crc_date_facture_patient, crc_date_hospitalisation, crc_date_naissance, crc_date_paiement_amc, crc_date_paiement_amo, crc_date_paiement_patient, crc_date_pec, crc_date_reference, crc_date_sortie, crc_delivre_par, crc_facturation_18euros, crc_finess, crc_fusion_anohosp_hosppmsi, crc_fusion_anohosp_pmsi, crc_grand_regime, crc_hospit_nouveau_ne, crc_id_first_hospit, crc_identifiant_national_sante, crc_immatriculation_assure, crc_immatriculation_indiv, crc_justificatif_exo, crc_montant_fj, crc_montant_parcours_soins, crc_montant_tm, crc_montant_total_sejour_patient, crc_motif_non_facturation, crc_nature_assurance, crc_nature_piece_justificative, crc_no_anonyme_mere_enfant, crc_no_at_date_adc, crc_no_caisse_gestionnaire, crc_no_centre_gestionnaire, crc_no_entree, crc_no_identification_patient, crc_no_organisme_complementaire, crc_no_sejour_administratif, crc_nombre_venues, crc_pays_amo, crc_prelevement_organe, crc_rang_beneficiaire, crc_rang_naissance, crc_regime_assure, crc_rejet_amo, crc_sexe, crc_statut_ft_amc, crc_statut_ft_amo, crc_statut_ft_patient, crc_taux_remboursement_c, crc_top_eclatement_flux_etab, crc_total_remboursable_amc, crc_total_remboursable_amo, crc_type_contrat_oc, crc_nb_dmt, crc_import_id) VALUES ( $rss_id, $no_rsa, '$crc_article_51', '$crc_base_remboursement_c', '$crc_cmu', '$crc_code_gestion', '$crc_code_participation_assure', '$crc_code_pec', '$crc_code_pec_fj', '$crc_coherence_date_naissance', '$crc_coherence_sexe', '$crc_confirmation_pec', '$crc_date_debut_pec', '$crc_date_entree', '$crc_date_facture_amc', '$crc_date_facture_amo', '$crc_date_facture_patient', '$crc_date_hospitalisation', '$crc_date_naissance', '$crc_date_paiement_amc', '$crc_date_paiement_amo', '$crc_date_paiement_patient', '$crc_date_pec', '$crc_date_reference', '$crc_date_sortie', '$crc_delivre_par', '$crc_facturation_18euros', '$crc_finess', '$crc_fusion_anohosp_hosppmsi', '$crc_fusion_anohosp_pmsi', '$crc_grand_regime', '$crc_hospit_nouveau_ne', '$crc_id_first_hospit', '$crc_identifiant_national_sante', '$crc_immatriculation_assure', '$crc_immatriculation_indiv', '$crc_justificatif_exo', '$crc_montant_fj', '$crc_montant_parcours_soins', '$crc_montant_tm', '$crc_montant_total_sejour_patient', '$crc_motif_non_facturation', '$crc_nature_assurance', '$crc_nature_piece_justificative', '$crc_no_anonyme_mere_enfant', '$crc_no_at_date_adc', '$crc_no_caisse_gestionnaire', '$crc_no_centre_gestionnaire', '$crc_no_entree', '$crc_no_identification_patient', '$crc_no_organisme_complementaire', '$crc_no_sejour_administratif', '$crc_nombre_venues', '$crc_pays_amo', '$crc_prelevement_organe', '$crc_rang_beneficiaire', '$crc_rang_naissance', '$crc_regime_assure', '$crc_rejet_amo', '$crc_sexe', '$crc_statut_ft_amc', '$crc_statut_ft_amo', '$crc_statut_ft_patient', '$crc_taux_remboursement_c', '$crc_top_eclatement_flux_etab', '$crc_total_remboursable_amc', '$crc_total_remboursable_amo', '$crc_type_contrat_oc', '$crc_nb_dmt', $import_id)"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); if ($nbDmt > 0) { for ($i = 0; $i < $nbDmt ; $i++){ // crc $crc_dmt_code = $BUF_record["crc_dmt_code"][$i]; $crc_dmt_mode_traitement = $BUF_record["crc_dmt_mode_traitement"][$i]; $crc_dmt_date_debut_sejour = $BUF_record["crc_dmt_date_debut_sejour"][$i]; $crc_dmt_date_fin_sejour = $BUF_record["crc_dmt_date_fin_sejour"][$i]; $crc_dmt_quantite = $BUF_record["crc_dmt_quantite"][$i]; $crc_dmt_prix_unitaire = $BUF_record["crc_dmt_prix_unitaire"][$i]; $crc_dmt_base_remboursement = $BUF_record["crc_dmt_base_remboursement"][$i]; $crc_dmt_taux_applicable_prestation = $BUF_record["crc_dmt_taux_applicable_prestation"][$i]; $crc_dmt_montant_remboursable = $BUF_record["crc_dmt_montant_remboursable"][$i]; // DMT $dmt_code = $BUF_record["dmt_code"][$i]; $dmt_mode_traitement = $BUF_record["dmt_mode_traitement"][$i]; $dmt_date_debut_sejour = get_date_or_null($BUF_record["dmt_date_debut_sejour"][$i]); $dmt_date_fin_sejour = get_date_or_null($BUF_record["dmt_date_fin_sejour"][$i]); $dmt_quantite = $BUF_record["dmt_quantite"][$i]; $dmt_prix_unitaire = $BUF_record["dmt_prix_unitaire"][$i]; $dmt_base_remboursement = $BUF_record["dmt_base_remboursement"][$i]; $dmt_taux_applicable_prestation = $BUF_record["dmt_taux_applicable_prestation"][$i]; $dmt_montant_remboursable = $BUF_record["dmt_montant_remboursable"][$i]; // Code retour contrôle "DMT n°NbDNT cohérence DMT/MT" $crc_dmt_coherence_dmt_mt = $BUF_record["crc_coherence_dmt_mt"][$i]; if ($dmt_code === "XXX"){ continue; } $sqlcmd = << 0 && $rss_id > 0) { $sqlcmd = "INSERT INTO temp.p_ctl_mt2a( rss_id, no_rss, no_sejour_administratif, erreur_genrsa) VALUES ( $rss_id, $no_rss, '$no_sejour_administratif', '$erreur_genrsa')"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); } } } } fclose($handle); } commit_trans(); logInfoMsg("FIN GENERATION CTL_MT2A. $nb lus, $nbW écris, $nbE erreurs."); } function generation_rum_post_traitements() { global $import_id; global $omitComplements; global $file_exists_RSSMED; logInfoMsg("TRAITEMENTS COMPLEMENTAIRES RUM"); begin_trans(); enable_index("i_rss_3"); enable_index("i_rss_4"); enable_index("i_rss_5"); enable_index("i_rss_8"); enable_index("i_rss_11"); enable_index("i_rss_12"); enable_index("i_rss_13"); enable_index("i_rss_14"); enable_index("i_rss_16"); enable_index("i_rss_17"); enable_index("i_rss_18"); enable_index("i_rss_19"); enable_index("i_identites_3"); enable_index("i_rss_rum_6"); enable_index("i_rss_rum_12"); enable_index("i_rss_rum_13"); enable_index("i_rss_diagnostics_2"); enable_index("i_rss_diagnostics_3"); enable_index("i_rss_diagnostics_6"); enable_index("i_rss_diagnostics_7"); enable_index("i_rsf_total_3"); enable_index("i_rsf_detail_2"); enable_index("i_rsf_detail_5"); enable_index("i_rss_actes_2"); enable_index("i_rss_actes_4"); enable_index("i_rss_actes_5"); enable_index("i_rss_actes_8"); enable_index("i_rss_actes_9"); analyse_tables(); $nbE = 0; logInfoMsg("CCAM Descriptive"); $sqlcmd = "UPDATE pmsi.t_actes SET racine_id = t_actes_7.oid, racine_code = t_actes_7.code, racine_texte = t_actes_7.texte FROM pmsi.t_actes t_actes_7 WHERE substr(t_actes.code,1,7) = t_actes_7.code AND length(t_actes.code) >= 7 AND ( t_actes.racine_id IS DISTINCT FROM t_actes_7.oid OR t_actes.racine_code IS DISTINCT FROM t_actes_7.code OR t_actes.racine_texte IS DISTINCT FROM t_actes_7.texte )"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "UPDATE temp.p_rss_actes SET acte_id = racine_id FROM pmsi.t_actes WHERE acte_ccam_descriptif_id = t_actes.oid AND racine_id <> p_rss_actes.acte_id ;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // Cette requete ne fonctionne pas et je ne sais pas à quoi elle sert (ELA 05/02/2021) //$sqlcmd = "UPDATE temp.p_rss_actes // SET acte_id = acte_ccam_descriptif_id // FROM pmsi.t_actes // WHERE acte_ccam_descriptif_id <> t_actes.oid AND date_acte >= '2020-01-01' // ;"; //$toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); //commit_trans(); // Suppression des lignes d'actes en double car provenant des RSF et aussi (en mode descriptif) des RSS $sqlcmd = "DELETE FROM temp.p_rss_actes USING ( SELECT rss_id, no_rss, date_acte, racine_id, activite_ccam, MAX(CASE WHEN racine_id = t_actes.oid THEN acte_ccam_descriptif_id ELSE 0 END) AS acte_ccam_descriptif_id, SUM(CASE WHEN racine_id <> t_actes.oid THEN 1 ELSE 0 END), SUM(CASE WHEN racine_id = t_actes.oid THEN 1 ELSE 0 END) FROM temp.p_rss_actes JOIN pmsi.t_actes ON p_rss_actes.acte_ccam_descriptif_id = t_actes.oid GROUP BY 1,2,3,4,5 HAVING SUM(CASE WHEN racine_id <> t_actes.oid THEN 1 ELSE 0 END) > 0 AND SUM(CASE WHEN racine_id = t_actes.oid THEN 1 ELSE 0 END) > 0 ) subview WHERE p_rss_actes.rss_id = subview.rss_id AND p_rss_actes.date_acte = subview.date_acte AND p_rss_actes.acte_ccam_descriptif_id = subview.acte_ccam_descriptif_id AND p_rss_actes.activite_ccam = subview.activite_ccam"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // données complémentaires aspirateur //generation_donnees_complementaires("temp", "PMSICOMPLEMENTS"); if ($omitComplements == false) { // ENLEVER LE OMMIT COMPLEMENT -> TOUJOURS LE JOUER generation_donnees_complementaires("temp", "PMSICOMPLEMENTS"); } else { logInfoMsg("Omission du traitement des données complémentaires du prestataire PMSI"); } logInfoMsg("Initialisation patients de l'année"); $sqlcmd = "DROP TABLE IF EXISTS temp_pmsi_identites ;"; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "CREATE TEMP TABLE temp_pmsi_identites (finess character(9), nom character varying(255), prenom character varying(255), nomprenom character varying(255), date_naissance date, sexe character(1));"; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "INSERT INTO temp_pmsi_identites(finess, nom, prenom, nomprenom, date_naissance, sexe) SELECT DISTINCT p_rss.finess, p_identites.nom, p_identites.prenom, upper(translate(p_identites.nom || p_identites.prenom, ' -', '')) AS nomprenom, p_rss.date_naissance, p_rss.sexe FROM temp.p_rss, temp.p_identites WHERE p_rss.oid = p_identites.rss_id AND (p_rss.patient_id IS NULL OR p_rss.patient_id = 0);"; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_patients (finess, nom, prenom, date_naissance, sexe) SELECT temp_pmsi_identites.finess, temp_pmsi_identites.nom, temp_pmsi_identites.prenom, temp_pmsi_identites.date_naissance, temp_pmsi_identites.sexe FROM temp_pmsi_identites LEFT JOIN pmsi.p_patients ON ( temp_pmsi_identites.nomprenom = upper(translate(p_patients.nom || p_patients.prenom, ' -', '')) AND temp_pmsi_identites.date_naissance = p_patients.date_naissance AND temp_pmsi_identites.sexe = p_patients.sexe) WHERE p_patients.nom IS NULL"; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "UPDATE pmsi.p_patients SET no_patient = 0 - nextval('pmsi.s_no_interne_patients'::regclass) WHERE no_patient = 0 OR no_patient IS NULL; "; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "UPDATE temp.p_rss SET patient_id = p_patients.oid FROM temp.p_identites, pmsi.p_patients WHERE p_rss.oid = p_identites.rss_id AND COALESCE(p_rss.patient_id,0) = 0 AND p_rss.date_naissance = p_patients.date_naissance AND p_rss.sexe = p_patients.sexe AND upper(translate(p_identites.nom || p_identites.prenom, ' -', '')) = upper(translate(p_patients.nom || p_patients.prenom, ' -', '')) "; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "UPDATE temp.p_rss SET patient_id = subview.new_id FROM ( SELECT p_patients.oid AS old_id, p_patients_nouveaux.oid as new_id FROM pmsi.p_patients, pmsi.p_patients p_patients_nouveaux WHERE p_patients.oid < p_patients_nouveaux.oid AND upper(translate(p_patients.nom || p_patients.prenom, ' -', '')) = upper(translate(p_patients_nouveaux.nom || p_patients_nouveaux.prenom, ' -', '')) AND p_patients.date_naissance = p_patients_nouveaux.date_naissance AND p_patients.sexe = p_patients_nouveaux.sexe ) subview WHERE p_rss.patient_id = subview.old_id "; $toResult = execute_sql($sqlcmd); commit_trans(); $toResult = execute_sql($sqlcmd); commit_trans(); logInfoMsg("Calcul age"); $sqlcmd = "UPDATE temp.p_rss SET age = trunc((date_entree::date - date_naissance::date) / 365.25,0) "; $sqlcmd = $sqlcmd . "WHERE age <> trunc((date_entree::date - date_naissance::date) / 365.25,0) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "UPDATE temp.p_rss SET duree_sejour = 0 WHERE duree_sejour <> 0 AND ghm_id IN (SELECT oid FROM pmsi.t_ghm_c WHERE cmd_code = '28') "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); logInfoMsg("Suppression des RUM en double"); $sqlcmd = " WITH doublons as ( SELECT rss_id, no_rum FROM temp.p_rss_rum GROUP BY 1,2 HAVING count(*) > 1 ) DELETE FROM temp.p_rss_rum USING doublons WHERE 1=1 AND doublons.rss_id = p_rss_rum.rss_id AND doublons.no_rum = p_rss_rum.no_rum"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); logInfoMsg("Initialisation unite medicale dans actes"); $sqlcmd = "UPDATE temp.p_rss_actes SET no_rum = p_rss_rum.no_rum, unite_medicale = p_rss_rum.unite_medicale, unite_medicale_id = p_rss_rum.unite_medicale_id FROM temp.p_rss_rum WHERE p_rss_actes.no_rum = 0 AND p_rss_actes.rss_id = p_rss_rum.rss_id AND p_rss_actes.date_acte BETWEEN p_rss_rum.date_entree AND p_rss_rum.date_sortie;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "UPDATE temp.p_rss_actes SET unite_medicale_id = p_rss_rum.unite_medicale_id FROM temp.p_rss_rum WHERE (p_rss_actes.unite_medicale_id = 0 OR p_rss_actes.unite_medicale_id IS NULL) AND p_rss_actes.rss_id = p_rss_rum.rss_id AND p_rss_actes.no_rum = p_rss_rum.no_rum AND p_rss_rum.unite_medicale_id <> 0;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); logInfoMsg("Initialisation unite medicale dans diagnostics"); $sqlcmd = "UPDATE temp.p_rss_diagnostics SET unite_medicale_id = p_rss_rum.unite_medicale_id FROM "; $sqlcmd = $sqlcmd . "temp.p_rss_rum WHERE (p_rss_diagnostics.unite_medicale_id = 0 OR p_rss_diagnostics.unite_medicale_id IS NULL) "; $sqlcmd = $sqlcmd . "AND p_rss_diagnostics.rss_id = p_rss_rum.rss_id AND p_rss_diagnostics.no_rum = p_rss_rum.no_rum ;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); logInfoMsg("Initialisation médecins bébé"); $sqlcmd = "UPDATE temp.p_rss SET medecin_rss_id = p_rss_mere.medecin_rss_id FROM temp.p_rss p_rss_mere WHERE p_rss.rss_mere_id = p_rss_mere.oid AND p_rss.medecin_rss_id = 0"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); if ($file_exists_RSSMED) { logInfoMsg("Initialisation médecins rss"); $sqlcmd = "UPDATE temp.p_rss "; $sqlcmd = $sqlcmd . "SET medecin_rss_id = "; $sqlcmd = $sqlcmd . "CASE WHEN "; $sqlcmd = $sqlcmd . "(SELECT medecin_id FROM pmsi.v_rss_actes_1 WHERE activite_ccam <> '4' AND v_rss_actes_1.rss_id = p_rss.oid ORDER BY icr DESC LIMIT 1) > 0 "; $sqlcmd = $sqlcmd . "THEN (SELECT medecin_id FROM pmsi.v_rss_actes_1 WHERE activite_ccam <> '4' AND v_rss_actes_1.rss_id = p_rss.oid ORDER BY icr DESC LIMIT 1) ELSE p_rss.medecin_rss_id END "; $sqlcmd = $sqlcmd . "WHERE import_id = $import_id "; $sqlcmd = $sqlcmd . "AND (medecin_rss_id = 0 or medecin_rss_id IN (SELECT oid FROM pmsi.t_medecins WHERE code = '9999')) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); } logInfoMsg("Initialisation types d'autorisation"); $sqlcmd = "INSERT INTO pmsi.t_types_autorisations (code, texte, texte_court) (SELECT DISTINCT type_autorisation, type_autorisation, type_autorisation FROM temp.p_rss_rum WHERE type_autorisation NOT IN (SELECT code FROM pmsi.t_types_autorisations)) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $sqlcmd = "INSERT INTO pmsi.t_types_autorisations (code, texte, texte_court) (SELECT DISTINCT t_unites_medicales.type_autorisation, t_unites_medicales.type_autorisation, t_unites_medicales.type_autorisation FROM temp.p_rss_rum JOIN pmsi.t_unites_medicales on t_unites_medicales.oid = p_rss_rum.unite_medicale_id WHERE t_unites_medicales.type_autorisation NOT IN (SELECT code FROM pmsi.t_types_autorisations)) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); logInfoMsg("Initialisation RUM principal"); //$dateDebutFG12 = '20100301'; Supprimer les Date FG12 $sqlcmd = "UPDATE pmsi.t_unites_medicales SET type_autorisation = '' WHERE type_autorisation IS NULL"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Si GHM non renseigné depuis fichier IN, recherche dans fichier OUT $sqlcmd = " UPDATE temp.p_rss SET ghm_id = p_rsa.ghm_genrsa_id, ghs_id = p_rsa.ghs_genrsa_id FROM temp.p_rsa WHERE p_rsa.rss_id = p_rss.oid AND p_rss.ghm_id = 0 AND p_rsa.ghm_genrsa_id <> 0 "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Si GHM GENRSA différent $sqlcmd = " UPDATE temp.p_rss SET ghm_id = ghm_genrsa_id FROM temp.p_rsa WHERE rss_id = p_rss.oid AND p_rss.ghm_id <> ghm_genrsa_id "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // no_rum_principal depuis les RSA $sqlcmd = " UPDATE temp.p_rss SET no_rum_principal = p_rsa.no_rum_dp FROM temp.p_rsa WHERE p_rss.oid = p_rsa.rss_id AND no_rum_principal IS DISTINCT FROM p_rsa.no_rum_dp; "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // diag principal sur RSS $sqlcmd = "UPDATE temp.p_rss SET "; $sqlcmd = $sqlcmd . "unite_medicale_principale_id = unite_medicale_id, "; $sqlcmd = $sqlcmd . "diagnostic_principal_id = p_rss_rum.diagnostic_principal_id, "; $sqlcmd = $sqlcmd . "diagnostic_relie_id = p_rss_rum.diagnostic_relie_id "; $sqlcmd = $sqlcmd . "FROM temp.p_rss_rum "; $sqlcmd = $sqlcmd . "WHERE p_rss.oid = p_rss_rum.rss_id AND p_rss.no_rum_principal = p_rss_rum.no_rum AND p_rss.nb_rum > 1 "; $sqlcmd = $sqlcmd . "AND (unite_medicale_principale_id IS null OR unite_medicale_principale_id = 0)"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // dignostics principaux sur rum secondaire $sqlcmd = "UPDATE temp.p_rss_diagnostics SET type_diagnostic_rss = 'DA' FROM temp.p_rss "; $sqlcmd = $sqlcmd . "WHERE p_rss.oid = p_rss_diagnostics.rss_id "; $sqlcmd = $sqlcmd . "AND p_rss.no_rum_principal <> p_rss_diagnostics.no_rum "; $sqlcmd = $sqlcmd . "AND p_rss.nb_rum > 1 "; $sqlcmd = $sqlcmd . "AND type_diagnostic_rss <> 'DA' AND type_diagnostic_rss <> 'DD'"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Médecin par défaut $sqlcmd = "UPDATE temp.p_rss SET medecin_rss_id = medecin_par_defaut_id FROM pmsi.t_unites_medicales WHERE unite_medicale_principale_id = t_unites_medicales.oid AND medecin_rss_id = 0 AND COALESCE(medecin_par_defaut_id,0) <> 0;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // initialisation départements provenant du RSS $sqlcmd = " INSERT INTO base.t_departements (code, texte, texte_court) SELECT DISTINCT substr(code ,1, 2), substr(code ,1, 2), substr(code ,1, 2) FROM base.t_codes_postaux WHERE substr(code ,1, 2) NOT IN ('97', '98') AND substr(code ,1, 2) NOT IN (SELECT code FROM base.t_departements ) ; INSERT INTO base.t_departements (code, texte, texte_court) SELECT DISTINCT substr(code ,1, 3), substr(code ,1, 3), substr(code ,1, 3) FROM base.t_codes_postaux WHERE substr(code ,1, 2) IN ('97', '98') AND substr(code ,1, 3) NOT IN (SELECT code FROM base.t_departements ) ; "; $toResult = execute_sql($sqlcmd); commit_trans(); // initialisation codes postaux provenant du RSS logInfoMsg("Initialisation codes postaux"); $sqlcmd = " INSERT INTO base.t_codes_postaux (code, texte, texte_court, departement_id, code_geographique_pmsi, territoire_sante_id) SELECT DISTINCT code_postal, code_postal, code_postal, COALESCE((SELECT oid FROM base.t_departements WHERE code = substr(code_postal, 1 , 2)), 0), substr(code_postal, 1 , 2) || '***', COALESCE((SELECT t_territoires_sante.oid FROM base.t_territoires_sante JOIN base.t_regions ON t_regions.code || '*****' = t_territoires_sante.code JOIN base.t_departements ON t_departements.region_id = t_regions.oid WHERE t_departements.code = substr(code_postal, 1 , 2)), 0) FROM temp.p_rss WHERE code_postal <> '' AND code_postal NOT IN (SELECT code FROM base.t_codes_postaux ) AND substr(code_postal, 1 , 2) NOT IN ('97', '98') ; INSERT INTO base.t_codes_postaux (code, texte, texte_court, departement_id, code_geographique_pmsi, territoire_sante_id) SELECT DISTINCT code_postal, code_postal, code_postal, COALESCE((SELECT oid FROM base.t_departements WHERE code = substr(code_postal, 1 , 3)), 0), substr(code_postal, 1 , 3) || '**', COALESCE((SELECT t_territoires_sante.oid FROM base.t_territoires_sante JOIN base.t_regions ON t_regions.code || '*****' = t_territoires_sante.code JOIN base.t_departements ON t_departements.region_id = t_regions.oid WHERE t_departements.code = substr(code_postal, 1 , 3)), 0) FROM temp.p_rss WHERE code_postal <> '' AND code_postal NOT IN (SELECT code FROM base.t_codes_postaux ) AND substr(code_postal, 1 , 2) IN ('97', '98') ; INSERT INTO base.t_codes_postaux (code, texte, texte_court, departement_id, code_geographique_pmsi, territoire_sante_id) SELECT DISTINCT code_postal, code_postal, code_postal, 0, '*****', 0 FROM temp.p_rss WHERE code_postal NOT IN (SELECT code FROM base.t_codes_postaux ) ;"; $toResult = execute_sql($sqlcmd); commit_trans(); // OID code postal $sqlcmd = "UPDATE temp.p_rss SET code_postal_id = t_codes_postaux.oid FROM base.t_codes_postaux WHERE code_postal = t_codes_postaux.code AND (code_postal_id = 0 OR code_postal_id IS NULL OR code_postal_id <> t_codes_postaux.oid) AND code_postal <> '';"; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "UPDATE temp.p_rss SET code_postal_id = 0 WHERE code_postal = '' AND code_postal_id <> 0 OR code_postal_id IS NULL;"; $toResult = execute_sql($sqlcmd); commit_trans(); // Secteurs geographiques $sqlcmd = "INSERT INTO pmsi.t_secteurs_geographiques_codes_postaux (secteur_geographique_id, code_postal_id) "; $sqlcmd = $sqlcmd . "SELECT 0, oid FROM base.t_codes_postaux WHERE oid NOT IN (SELECT code_postal_id FROM pmsi.t_secteurs_geographiques_codes_postaux)"; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = " INSERT INTO base.t_codes_geographiques_pmsi(code, texte, texte_court, population) SELECT code_geographique_pmsi, substr(base.cti_group_concat(DISTINCT trim(texte)), 1, 255), substr(base.cti_group_concat(DISTINCT trim(texte)), 1, 255), sum(population) FROM base.t_codes_postaux WHERE code_geographique_pmsi <> '' AND code_geographique_pmsi <> '*****' AND code_geographique_pmsi NOT IN (SELECT code FROM base.t_codes_geographiques_pmsi) GROUP BY code_geographique_pmsi ORDER BY code_geographique_pmsi ; UPDATE base.t_codes_geographiques_pmsi SET texte = subview.texte, texte_court = subview.texte, population = subview.population FROM ( SELECT code_geographique_pmsi, substr(base.cti_group_concat(DISTINCT trim(texte)), 1, 255) as texte, sum(population) as population FROM base.t_codes_postaux WHERE code_geographique_pmsi <> '' AND code_geographique_pmsi <> '*****' GROUP BY code_geographique_pmsi ORDER BY code_geographique_pmsi ) subview WHERE t_codes_geographiques_pmsi.code = subview.code_geographique_pmsi AND (t_codes_geographiques_pmsi.texte <> subview.texte OR t_codes_geographiques_pmsi.population <> subview.population) ;"; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = " INSERT INTO base.t_codes_geographiques_pmsi(code, texte, texte_court, population) SELECT code || '***', 'Divers ' || texte, 'Divers ' || texte, 0 FROM base.t_departements WHERE code <> '**' AND length(code) = 2 AND code || '***' NOT IN (SELECT code FROM base.t_codes_geographiques_pmsi) ORDER BY code ; INSERT INTO base.t_codes_geographiques_pmsi(code, texte, texte_court, population) SELECT code || '**', 'Divers ' || texte, 'Divers ' || texte, 0 FROM base.t_departements WHERE code <> '**' AND length(code) = 3 AND code || '**' NOT IN (SELECT code FROM base.t_codes_geographiques_pmsi) ORDER BY code; "; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = " UPDATE base.t_codes_postaux SET code_geographique_pmsi_id = 0 WHERE code_geographique_pmsi_id IS NULL ; UPDATE base.t_codes_postaux SET code_geographique_pmsi_id = 0 WHERE code_geographique_pmsi NOT IN (SELECT code FROM base.t_codes_geographiques_pmsi) AND code_geographique_pmsi_id <> 0 ; UPDATE base.t_codes_postaux SET code_geographique_pmsi_id = t_codes_geographiques_pmsi.oid FROM base.t_codes_geographiques_pmsi WHERE t_codes_postaux.code_geographique_pmsi = t_codes_geographiques_pmsi.code AND code_geographique_pmsi_id <> t_codes_geographiques_pmsi.oid ;"; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = " UPDATE base.t_codes_postaux SET territoire_sante_id = 0 WHERE territoire_sante_id IS NULL ; UPDATE base.t_codes_postaux SET territoire_sante_id = 0 WHERE territoire_sante_code NOT IN (SELECT code FROM base.t_territoires_sante) AND territoire_sante_id <> 0 ; UPDATE base.t_codes_postaux SET territoire_sante_id = t_territoires_sante.oid FROM base.t_territoires_sante WHERE t_codes_postaux.territoire_sante_code = t_territoires_sante.code AND territoire_sante_id <> t_territoires_sante.oid ; "; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = " UPDATE base.t_codes_postaux SET departement_id = t_departements.oid, departement_code = t_departements.code, departement_texte = t_departements.texte FROM base.t_departements WHERE t_codes_postaux.code = t_codes_postaux.texte AND t_departements.code = substr(t_codes_postaux.code, 1 , 2) AND substr(t_codes_postaux.code, 1 , 2) NOT IN ('97', '98') AND ( departement_id <> t_departements.oid OR departement_code <> t_departements.code OR departement_texte <> t_departements.texte) ; UPDATE base.t_codes_postaux SET departement_id = t_departements.oid, departement_code = t_departements.code, departement_texte = t_departements.texte FROM base.t_departements WHERE t_codes_postaux.code = t_codes_postaux.texte AND t_departements.code = substr(t_codes_postaux.code, 1 , 3) AND substr(t_codes_postaux.code, 1 , 2) IN ('97', '98') AND ( departement_id <> t_departements.oid OR departement_code <> t_departements.code OR departement_texte <> t_departements.texte) ; UPDATE base.t_codes_postaux SET code_geographique_pmsi = t_codes_geographiques_pmsi.code, code_geographique_pmsi_id = t_codes_geographiques_pmsi.oid, code_geographique_pmsi_code = t_codes_geographiques_pmsi.code, code_geographique_pmsi_texte = t_codes_geographiques_pmsi.texte FROM base.t_codes_geographiques_pmsi WHERE t_codes_postaux.code = t_codes_postaux.texte AND t_codes_geographiques_pmsi.code = substr(t_codes_postaux.code, 1 , 2) || '***' AND substr(t_codes_postaux.code, 1 , 2) NOT IN ('97', '98') AND ( code_geographique_pmsi <> t_codes_geographiques_pmsi.code OR code_geographique_pmsi_id <> t_codes_geographiques_pmsi.oid OR code_geographique_pmsi_code <> t_codes_geographiques_pmsi.code OR code_geographique_pmsi_texte <> t_codes_geographiques_pmsi.texte) ; UPDATE base.t_codes_postaux SET code_geographique_pmsi = t_codes_geographiques_pmsi.code, code_geographique_pmsi_id = t_codes_geographiques_pmsi.oid, code_geographique_pmsi_code = t_codes_geographiques_pmsi.code, code_geographique_pmsi_texte = t_codes_geographiques_pmsi.texte FROM base.t_codes_geographiques_pmsi WHERE t_codes_postaux.code = t_codes_postaux.texte AND t_codes_geographiques_pmsi.code = substr(t_codes_postaux.code, 1 , 3) || '**' AND substr(t_codes_postaux.code, 1 , 2) IN ('97', '98') AND ( code_geographique_pmsi <> t_codes_geographiques_pmsi.code OR code_geographique_pmsi_id <> t_codes_geographiques_pmsi.oid OR code_geographique_pmsi_code <> t_codes_geographiques_pmsi.code OR code_geographique_pmsi_texte <> t_codes_geographiques_pmsi.texte) ; UPDATE base.t_codes_postaux SET territoire_sante_id = t_territoires_sante.oid, territoire_sante_code = t_territoires_sante.code, territoire_sante_texte = t_territoires_sante.texte FROM base.t_territoires_sante JOIN base.t_regions ON t_regions.code || '*****' = t_territoires_sante.code JOIN base.t_departements ON t_departements.region_id = t_regions.oid WHERE t_codes_postaux.code = t_codes_postaux.texte AND t_departements.code = substr(t_codes_postaux.code, 1 , 2) AND substr(t_codes_postaux.code, 1 , 2) NOT IN ('97', '98') AND ( territoire_sante_id <> t_territoires_sante.oid OR territoire_sante_code <> t_territoires_sante.code OR territoire_sante_texte <> t_territoires_sante.texte) ; UPDATE base.t_codes_postaux SET territoire_sante_id = t_territoires_sante.oid, territoire_sante_code = t_territoires_sante.code, territoire_sante_texte = t_territoires_sante.texte FROM base.t_territoires_sante JOIN base.t_regions ON t_regions.code || '*****' = t_territoires_sante.code JOIN base.t_departements ON t_departements.region_id = t_regions.oid WHERE t_codes_postaux.code = t_codes_postaux.texte AND t_departements.code = substr(t_codes_postaux.code, 1 , 3) AND substr(t_codes_postaux.code, 1 , 2) IN ('97', '98') AND ( territoire_sante_id <> t_territoires_sante.oid OR territoire_sante_code <> t_territoires_sante.code OR territoire_sante_texte <> t_territoires_sante.texte) ; "; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = " UPDATE base.t_codes_geographiques_pmsi SET departement_id = t_departements.oid, departement_code = t_departements.code, departement_texte = t_departements.texte FROM base.t_departements WHERE departement_id is null or departement_id = 0 AND t_departements.code = substr(t_codes_geographiques_pmsi.code, 1 , 2) AND substr(t_codes_geographiques_pmsi.code, 1 , 2) NOT IN ('97', '98') AND ( departement_id <> t_departements.oid OR departement_code <> t_departements.code OR departement_texte <> t_departements.texte) ; UPDATE base.t_codes_geographiques_pmsi SET departement_id = t_departements.oid, departement_code = t_departements.code, departement_texte = t_departements.texte FROM base.t_departements WHERE departement_id is null or departement_id = 0 AND t_departements.code = substr(t_codes_geographiques_pmsi.code, 1 , 3) AND substr(t_codes_geographiques_pmsi.code, 1 , 2) IN ('97', '98') AND ( departement_id <> t_departements.oid OR departement_code <> t_departements.code OR departement_texte <> t_departements.texte) ; UPDATE base.t_codes_geographiques_pmsi SET territoire_sante_id = t_territoires_sante.oid, territoire_sante_code = t_territoires_sante.code, territoire_sante_texte = t_territoires_sante.texte FROM base.t_territoires_sante JOIN base.t_regions ON t_regions.code || '*****' = t_territoires_sante.code JOIN base.t_departements ON t_departements.region_id = t_regions.oid WHERE territoire_sante_id is null or territoire_sante_id = 0 AND t_departements.code = substr(t_codes_geographiques_pmsi.code, 1 , 2) AND substr(t_codes_geographiques_pmsi.code, 1 , 2) NOT IN ('97', '98') AND ( territoire_sante_id <> t_territoires_sante.oid OR territoire_sante_code <> t_territoires_sante.code OR territoire_sante_texte <> t_territoires_sante.texte) ; UPDATE base.t_codes_geographiques_pmsi SET territoire_sante_id = t_territoires_sante.oid, territoire_sante_code = t_territoires_sante.code, territoire_sante_texte = t_territoires_sante.texte FROM base.t_territoires_sante JOIN base.t_regions ON t_regions.code || '*****' = t_territoires_sante.code JOIN base.t_departements ON t_departements.region_id = t_regions.oid WHERE territoire_sante_id is null or territoire_sante_id = 0 AND t_departements.code = substr(t_codes_geographiques_pmsi.code, 1 , 3) AND substr(t_codes_geographiques_pmsi.code, 1 , 2) IN ('97', '98') AND ( territoire_sante_id <> t_territoires_sante.oid OR territoire_sante_code <> t_territoires_sante.code OR territoire_sante_texte <> t_territoires_sante.texte) ; "; $toResult = execute_sql($sqlcmd); commit_trans(); logInfoMsg("Sejours avec anesthesie"); $sqlcmd = " UPDATE temp.p_rss set avec_anesthesie = '1' FROM ( SELECT rss_id FROM temp.p_rss_actes WHERE activite_ccam = '4' GROUP BY rss_id ) subview WHERE 1=1 AND subview.rss_id = p_rss.oid AND avec_anesthesie IS DISTINCT FROM '1'"; $toResult = execute_sql($sqlcmd); commit_trans(); logInfoMsg("Actes avec anesthesie"); // trouve les actes d'activité 1 qui ont un acte d'activité 4 associé $sqlcmd = " WITH w_update AS ( SELECT p_rss_actes.rss_id, p_rss_actes.acte_id, p_rss_actes.date_acte, p_rss_actes.association_nonprevue_ccam FROM temp.p_rss_actes WHERE p_rss_actes.activite_ccam in ('1', '4') GROUP BY 1 ,2, 3, 4 HAVING count(DISTINCT p_rss_actes.activite_ccam) > 1 ) UPDATE temp.p_rss_actes SET acte_avec_anesthesie = 1 FROM w_update WHERE 1=1 AND p_rss_actes.activite_ccam = '1' AND w_update.rss_id = p_rss_actes.rss_id AND w_update.acte_id = p_rss_actes.acte_id AND w_update.date_acte = p_rss_actes.date_acte AND w_update.association_nonprevue_ccam = p_rss_actes.association_nonprevue_ccam AND p_rss_actes.acte_avec_anesthesie IS DISTINCT FROM 1"; $toResult = execute_sql($sqlcmd); commit_trans(); logInfoMsg("Rajout des etablissement de provenances et destinations"); addRssNotInTableTransfers(); rssWithoutTransfertToNull(); logInfoMsg("FIN TRAITEMENTS COMPLEMENTAIRES RUM. $nbE erreurs."); } function addRssNotInTableTransfers(){ /** * Lors d'un transfert les etablissements ne sont pas tout le temps renseignes dans les lots * Seulement la destination grace au RSF-I * Si le sejour n'est pas present dans les RSF-I on recupere les etablissements depuis le prestataire * */ $sqlcmd = " WITH transfert_to_add AS( SELECT p_rss.oid as rss_id, etablissement_provenance_id AS etablissement_provenance_id, etablissement_destination_id AS etablissement_destination_id FROM temp.p_rss LEFT JOIN temp.transferts_with_no_rss ON p_rss.no_rss = transferts_with_no_rss.no_rss WHERE (mode_entree IN (7, 0) OR mode_sortie IN (7, 0)) AND NOT EXISTS ( SELECT 1 FROM temp.p_rss_transferts WHERE p_rss.oid = p_rss_transferts.rss_id ) ) INSERT INTO temp.p_rss_transferts (rss_id, etablissement_provenance_id, etablissement_destination_id) SELECT rss_id, COALESCE(etablissement_provenance_id, 0), COALESCE(etablissement_destination_id, 0) FROM transfert_to_add;" ; execute_sql($sqlcmd); } function rssWithoutTransfertToNull(){ /** * Assigne la valeure null aux séjours présents dans p_rss_transferts * qui n'ont pas soit le mode d'entree soit le mode de sortie en transfert (7 ou 0) */ $sqlcmd = " UPDATE temp.p_rss_transferts SET etablissement_provenance_id = NULL FROM temp.p_rss WHERE rss_id = p_rss.oid AND mode_entree not in (7,0) AND etablissement_provenance_id IS NOT NULL; UPDATE temp.p_rss_transferts SET etablissement_destination_id = NULL FROM temp.p_rss WHERE rss_id = p_rss.oid AND mode_sortie not in (7,0) AND etablissement_destination_id IS NOT NULL; "; execute_sql($sqlcmd); } function generation_rsf_post_traitements() { global $ENV_TYPEETS; global $import_id; global $file_VAL; global $file_exists_VAL; global $file_exists_VSJ; logInfoMsg("TRAITEMENTS COMPLEMENTAIRES RSF"); begin_trans(); analyse_tables(); $nbE = 0; // Report du code GHS dan les prestations pour les forfaits D11, D24 et les forfaits Innovation // car ils ne sont pas renseign?es dns le format des RSF-B $sqlcmd = " UPDATE temp.p_rsf_detail SET ghs_id = p_rss.ghs_id FROM temp.p_rss JOIN pmsi.t_ghs ON t_ghs.oid = p_rss.ghs_id, pmsi.t_prestations WHERE 1=1 AND p_rsf_detail.rss_id = p_rss.oid AND p_rsf_detail.est_ligne_rss = '1' AND p_rsf_detail.type = 'B' AND t_prestations.code = 'GHS' AND t_ghs.code_text IN ('D11', 'D24', 'I01', 'I02', 'I03', 'I04', 'I05') AND p_rsf_detail.ghs_id IS DISTINCT FROM p_rss.ghs_id"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_lpp ); commit_trans(); // Code PEC sur RSF TOTAL d'après VIDHOSP (ex dg) if ($ENV_TYPEETS != "1") { logInfoMsg("Prise en charge selon VIDHOSP"); $sqlcmd = "UPDATE temp.p_rsf_total SET code_pec = CASE WHEN p_vidhosp.code_pec <> '0' AND pole_oap_code = 'AL' THEN '1' ELSE p_vidhosp.code_pec END, code_pec_id = CASE WHEN p_vidhosp.code_pec <> '0' AND pole_oap_code = 'AL' THEN (SELECT oid FROM base.t_pec WHERE code = '1') ELSE p_vidhosp.code_pec_id END, regime = p_vidhosp.regime, regime_id = p_vidhosp.regime_id, nature_pec = p_vidhosp.nature_pec, nature_pec_id = p_vidhosp.nature_pec_id, taux_remboursement = p_vidhosp.taux_remboursement, justificatif_exo = p_vidhosp.justificatif_exo, exoneration_tm_id = p_vidhosp.exoneration_tm_id, matricule_assure = p_vidhosp.matricule_assure, cle_matricule_assure = p_vidhosp.cle_matricule_assure, type_contrat_oc_id = p_vidhosp.type_contrat_oc_id, motif_non_facturation_id = p_vidhosp.motif_non_facturation_id, code_pec_fj_id = p_vidhosp.code_pec_fj_id, facturation_18euros = p_vidhosp.facturation_18euros, facturation_18euros_id = p_vidhosp.facturation_18euros_id, no_ipp = p_vidhosp.no_ipp FROM temp.p_rss JOIN temp.p_vidhosp ON p_rss.oid = p_vidhosp.rss_id JOIN pmsi.t_ghm_c ON ghm_id = t_ghm_c.oid WHERE p_rsf_total.rss_id = p_rss.oid AND p_rss.import_id = $import_id AND ( p_rsf_total.code_pec IS DISTINCT FROM CASE WHEN p_vidhosp.code_pec <> '0' AND pole_oap_code = 'AL' THEN '1' ELSE p_vidhosp.code_pec END OR p_rsf_total.code_pec_id IS DISTINCT FROM CASE WHEN p_vidhosp.code_pec <> '0' AND pole_oap_code = 'AL' THEN (SELECT oid FROM base.t_pec WHERE code = '1') ELSE p_vidhosp.code_pec_id END OR p_rsf_total.regime IS DISTINCT FROM p_vidhosp.regime OR p_rsf_total.regime_id IS DISTINCT FROM p_vidhosp.regime_id OR p_rsf_total.nature_pec IS DISTINCT FROM p_vidhosp.nature_pec OR p_rsf_total.nature_pec_id IS DISTINCT FROM p_vidhosp.nature_pec_id OR p_rsf_total.taux_remboursement IS DISTINCT FROM p_vidhosp.taux_remboursement OR p_rsf_total.matricule_assure IS DISTINCT FROM p_vidhosp.matricule_assure OR p_rsf_total.cle_matricule_assure IS DISTINCT FROM p_vidhosp.cle_matricule_assure OR p_rsf_total.justificatif_exo IS DISTINCT FROM p_vidhosp.justificatif_exo OR p_rsf_total.exoneration_tm_id IS DISTINCT FROM p_vidhosp.exoneration_tm_id OR p_rsf_total.type_contrat_oc_id IS DISTINCT FROM p_vidhosp.type_contrat_oc_id OR p_rsf_total.motif_non_facturation_id IS DISTINCT FROM p_vidhosp.motif_non_facturation_id OR p_rsf_total.code_pec_fj_id IS DISTINCT FROM p_vidhosp.code_pec_fj_id OR p_rsf_total.facturation_18euros IS DISTINCT FROM p_vidhosp.facturation_18euros OR p_rsf_total.facturation_18euros_id IS DISTINCT FROM p_vidhosp.facturation_18euros_id OR p_rsf_total.no_ipp IS DISTINCT FROM p_vidhosp.no_ipp ); "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_lpp ); commit_trans(); //Information CMU - Espic $sqlcmd = "UPDATE pmsi.p_rsf_total SET pat_benef_cmu = cmu::integer FROM ( SELECT cmu, no_rss FROM pmsi.p_vidhosp JOIN pmsi.p_rss on p_rss.oid = p_vidhosp.rss_id WHERE cmu BETWEEN '1' AND '9' ) subq1 WHERE 1=1 AND subq1.no_rss = p_rsf_total.no_rss AND (pat_benef_cmu IS NULL OR pat_benef_cmu::text = '') ; "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_lpp ); commit_trans(); // Depuis M01 2019, le numero IPP est renseignable dans VIDHOSP. S'il l'est (différent de 0, valeur par défaut), on le met à jour dans les RSS logInfoMsg("IPP selon VIDHOSP"); $sqlcmd = "UPDATE temp.p_rss SET no_patient = p_vidhosp.no_ipp FROM temp.p_vidhosp WHERE 1=1 AND p_rss.oid = p_vidhosp.rss_id AND p_vidhosp.no_ipp != 0 AND p_vidhosp.no_ipp != p_rss.no_patient ; "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_lpp ); commit_trans(); } if ($ENV_TYPEETS == "1") { logInfoMsg("GHS des non facturés"); $sqlcmd = "UPDATE temp.p_rss SET ghs_id = (SELECT oid from pmsi.t_ghs WHERE code = 9999) WHERE ghs_id = 0 AND ghm_id IN (SELECT oid FROM pmsi.t_ghm WHERE code IN ('09Z02Z', '09Z02A', '14Z04Z', '14Z08Z', '15Z10E', '23Z03Z', '24Z15Z', '24Z19Z', '28Z05Z', '28Z06Z'));"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "UPDATE temp.p_rss SET ghs_id = ghs_1_id FROM pmsi.t_ghm WHERE p_rss.ghm_id <> 0 AND p_rss.ghm_id = t_ghm.oid AND p_rss.ghs_id = 0 AND ghs_1_id <> 0 AND ghs_2_id = 0 "; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); $sqlcmd = "UPDATE temp.p_rss SET ghs_id = CASE WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z02Z' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5800) WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z03Z' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5801) WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z04E' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5802) WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z05A' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5803) WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z05B' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5804) WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z05C' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5805) WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z05D' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5806) WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z06A' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5807) WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z06B' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5808) WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z06C' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5809) WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z06D' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5810) WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z07A' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5811) WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z07B' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5812) WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z07C' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5813) WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z07D' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5814) WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z08E' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5815) WHEN p_rss.date_sortie < '20090301' AND t_ghm.code = '15Z09E' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5817) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z02Z' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5819) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z03Z' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5820) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z04E' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5821) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z05A' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5822) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z05B' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5823) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z05C' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5824) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z05D' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5825) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z06A' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5826) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z06B' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5827) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z06C' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5828) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z06D' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5829) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z07A' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5830) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z07B' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5831) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z07C' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5832) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z07D' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5833) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z08E' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5834) WHEN p_rss.date_sortie >= '20090301' AND t_ghm.code = '15Z09E' THEN (SELECT oid FROM pmsi.t_ghs WHERE code = 5836) ELSE 0 END FROM pmsi.t_ghm WHERE ghs_id = 0 AND p_rss.ghm_id = t_ghm.oid and p_rss.ghm_id > 0"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); } logInfoMsg("Initialisation Acte principal RSS"); $sqlcmd = "UPDATE temp.p_rss SET acte_principal_id = COALESCE(subview.acte_principal_1_id, acte_principal_4_id, 0) FROM (SELECT rss_id, (MAX(ARRAY[CASE WHEN activite_ccam = '1' THEN CASE WHEN type_etablissement IN ('2','3') THEN t_actes_c.icr_public_atih_1 ELSE t_actes_c.icr_prive_atih_1 END ELSE 0 END, acte_id]))[2] as acte_principal_1_id , (MAX(ARRAY[CASE WHEN activite_ccam = '4' THEN CASE WHEN type_etablissement IN ('2','3') THEN t_actes_c.icr_public_atih_4 ELSE t_actes_c.icr_prive_atih_4 END ELSE 0 END, acte_id]))[2] as acte_principal_4_id FROM temp.p_rss_actes JOIN pmsi.t_actes_c ON p_rss_actes.acte_id = t_actes_c.oid LEFT JOIN base.t_finess ON p_rss_actes.finess = t_finess.code WHERE activite_ccam <> '5' GROUP BY rss_id) subview WHERE p_rss.oid = subview.rss_id AND (p_rss.acte_principal_id = 0 or p_rss.acte_principal_id IS NULL)"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "UPDATE temp.p_rss SET acte_principal_id = 0 WHERE acte_principal_id IS NULL "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); logInfoMsg("Initialisation Prestation principale RSS"); $sqlcmd = "DROP TABLE IF EXISTS w_prestation_principale; CREATE TEMP TABLE w_prestation_principale AS SELECT rss_id, (MAX( ARRAY[ CASE WHEN p_rsf_detail.type = 'B' AND t_prestations.code = 'GHS' THEN 9999999999999 WHEN p_rsf_detail.type = 'B' AND t_prestations.code = 'EXH' THEN 9999999999998 WHEN t_prestations.code IN ('SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7', 'ATU', 'FFM', 'APE', 'FFM' , 'AP2', 'FPI') THEN 9999999999997 WHEN p_rsf_detail.type = 'B' AND t_prestations.code = 'MAR' THEN 9999999999996 WHEN p_rsf_detail.type = 'B' AND t_prestations.code = 'PJ' THEN 9999999999995 ELSE base_remboursement END, prestation_id ] ))[2] AS prestation_principale_id FROM temp.p_rsf_detail JOIN pmsi.t_prestations ON prestation_id = t_prestations.oid WHERE p_rsf_detail.est_ligne_rss = '1' GROUP BY 1;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "UPDATE temp.p_rss SET prestation_principale_id = w_prestation_principale.prestation_principale_id FROM w_prestation_principale WHERE p_rss.oid = w_prestation_principale.rss_id AND (p_rss.prestation_principale_id = 0 OR p_rss.prestation_principale_id IS NULL);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "UPDATE temp.p_rss SET prestation_principale_id = t_prestations.oid FROM pmsi.t_prestations WHERE ghm_id > 0 AND (p_rss.prestation_principale_id = 0 OR p_rss.prestation_principale_id IS NULL) AND t_prestations.code = 'GHS' AND p_rss.oid NOT IN (SELECT rss_id FROM temp.p_rsf_detail WHERE p_rsf_detail.est_ligne_rss = '1'); "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "UPDATE temp.p_rss SET prestation_principale_id = 0 WHERE prestation_principale_id IS NULL;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Mettre à jour les indication_id dans la table p_rss_ucd logInfoMsg("Traitement indication UCD"); $sqlcmd = " UPDATE temp.p_rss_ucd SET indication_id = t_indication.oid FROM pmsi.t_indication WHERE 1=1 AND p_rss_ucd.indication = t_indication.code "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO temp.p_rsf_detail(finess, no_rss, date_debut, date_fin, nombre, ghs_id, prestation_id, rss_id, type, coefficient_mco, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) "; $sqlcmd = $sqlcmd . "SELECT p_rss.finess, p_rss.no_rss, p_rss.date_entree, p_rss.date_sortie, 1, 0, (SELECT oid FROM pmsi.t_prestations WHERE code = 'GHS'), p_rss.oid, 'B', "; $sqlcmd = $sqlcmd . "(SELECT coefficient_mco FROM temp.p_rsf_detail WHERE prestation_id In (SELECT oid FROM pmsi.t_prestations WHERE code = 'GHS') AND coefficient_mco > 0 ORDER BY date_fin DESC limit 1), 1, '1', '0', 0, 0, 0 "; $sqlcmd = $sqlcmd . "FROM temp.p_rss, temp.p_rsf_total "; $sqlcmd = $sqlcmd . "WHERE ghm_id IN (SELECT oid FROM pmsi.t_ghm WHERE code LIKE '15%') AND "; $sqlcmd = $sqlcmd . "p_rsf_total.rss_id = p_rss.oid AND p_rsf_total.nb_ghs = 0 AND "; $sqlcmd = $sqlcmd . "oid NOT IN (SELECT rss_id FROM temp.p_rsf_detail WHERE prestation_id In (SELECT oid FROM pmsi.t_prestations WHERE code = 'GHS')) "; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "INSERT INTO temp.p_rsf_detail(finess, no_rss, date_debut, date_fin, nombre, ghs_id, prestation_id, rss_id, type, coefficient_mco, coefficient_geo, est_ligne_rss, est_ligne_rum, no_rum, unite_medicale_id, base_remboursement_rum) "; $sqlcmd = $sqlcmd . "SELECT p_rss.finess, p_rss.no_rss, p_rss.date_entree, p_rss.date_sortie, 1, 0, (SELECT oid FROM pmsi.t_prestations WHERE code = 'GHS'), p_rss.oid, 'B', "; $sqlcmd = $sqlcmd . "0, 1, '1', '0', 0, 0, 0 "; $sqlcmd = $sqlcmd . "FROM temp.p_rss, temp.p_rsf_total "; $sqlcmd = $sqlcmd . "WHERE ghm_id IN (SELECT oid FROM pmsi.t_ghm WHERE code IN ('24Z10E', '24Z12Z', '24Z21Z', '24Z23Z', '24Z24Z')) AND "; $sqlcmd = $sqlcmd . "p_rsf_total.rss_id = p_rss.oid AND p_rsf_total.nb_ghs = 0 AND "; $sqlcmd = $sqlcmd . "oid NOT IN (SELECT rss_id FROM temp.p_rsf_detail WHERE prestation_id In (SELECT oid FROM pmsi.t_prestations WHERE code = 'GHS')) "; $toResult = execute_sql($sqlcmd); commit_trans(); // Mise à jour coefficient calculé // Modif CLA le 06-09-2016 On joine sur p_rss (rss_id ET ghs_id) pour ne garder que les GHS principaux et ne pas traiter les GHS des bébés ou des suppléments dialyse $sqlcmd = "UPDATE temp.p_rsf_detail SET coefficient = round(p_rsf_detail.base_remboursement / p_rsf_detail.prix_unitaire / p_rsf_detail.coefficient_mco / p_rsf_detail.nombre, 5)::numeric(18 , 5), update_rules = array_append(update_rules, 41) FROM temp.p_rss, pmsi.t_prestations WHERE 1=1 AND p_rss.oid = p_rsf_detail.rss_id AND p_rss.ghs_id = p_rsf_detail.ghs_id AND p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' AND p_rsf_detail.prestation_id = t_prestations.oid AND p_rsf_detail.prix_unitaire > 0 AND p_rsf_detail.nombre > 0 AND p_rsf_detail.coefficient_mco > 0 AND p_rsf_detail.base_remboursement > 0 AND p_rss.import_id = $import_id AND p_rss.date_sortie >= '20090301'::date AND t_prestations.code = 'GHS' AND valorise_valosejace <> '1' AND round(p_rsf_detail.base_remboursement / p_rsf_detail.prix_unitaire / p_rsf_detail.coefficient_mco / p_rsf_detail.nombre, 3) < 1 AND p_rsf_detail.coefficient <> round(p_rsf_detail.base_remboursement / p_rsf_detail.prix_unitaire / p_rsf_detail.coefficient_mco / p_rsf_detail.nombre, 5)::numeric(18 , 5); "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Mise à jour coefficient si 0 $sqlcmd = "UPDATE temp.p_rsf_detail SET coefficient = 1, update_rules = array_append(update_rules, 42) WHERE coefficient = 0 OR coefficient IS NULL"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); logInfoMsg("Assurance"); // Création d'une table de travail où on recense les séjours avec ME = 0, MS = 0 et DA = Z7580 // Normalement, les séjours ME = 0 et MS = 0 sont exclus et marqués comme 'Prestation inter établissement' sauf qu'il apparait à la lecture // des tableaux Mat2a que les séjours avec ME = 0, MS = 0 et DA = Z7580 ne sont visiblement pas exclus // Modif CLA 18-07-2016, la condition sur le code CMD 28 semble poser problème dans certains rares cas, je l'enlève $sqlcmd = "DROP TABLE IF EXISTS w_z7580; CREATE TEMP TABLE w_z7580 AS SELECT p_rss.oid as rss_id, 1 as keep_sejour FROM temp.p_rss JOIN pmsi.t_ghm_c ON p_rss.ghm_id = t_ghm_c.oid LEFT JOIN temp.p_rss_diagnostics ON p_rss.oid = p_rss_diagnostics.rss_id LEFT JOIN pmsi.t_diagnostics on t_diagnostics.oid = p_rss_diagnostics.diagnostic_id WHERE p_rss.import_id = $import_id AND (t_diagnostics.code = 'Z7580' OR t_ghm_c.section_code[8] IN ('S01', 'S02', 'S03', 'S04')) AND mode_sortie = '0' AND mode_entree = '0' GROUP BY 1;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // CLA le 11-04-2018 Il semblerait que les séjours qui sont dans le fichier .ano (et donc dans le RSA) mais pas dans le vidhosp // soient quand même valorisés, d'où l'ajout d'une condiciton sur le numéro anonyme like '%XXXXXXXXX%' // Traitement epmsi = 26 : non valorisé par VALOSEJ $sqlcmd = " WITH w_vidhosp AS ( SELECT rss_id FROM temp.p_vidhosp WHERE no_anonyme like '%XXXXXXXXXXXXX%' ) UPDATE temp.p_rss SET traitement_epmsi = CASE WHEN p_rss.en_cours LIKE '1' THEN '00' WHEN p_rss.ghm_id IN (SELECT oid FROM pmsi.t_ghm WHERE code LIKE '90%' AND CODE <> '90H02Z' AND CODE <> '90H03Z') THEN '11' WHEN p_rss.mode_entree = '0' AND p_rss.mode_sortie = '0' AND w_z7580.keep_sejour IS DISTINCT FROM 1 AND (p_rss.valorise_valosejace IS DISTINCT FROM '1' OR p_rss.traitement_epmsi < '30') THEN '12' WHEN p_rss.ghs_id IN (SELECT oid FROM pmsi.t_ghs WHERE code = 9999) THEN '13' WHEN t_finess.type_etablissement IN ('2', '3') AND subview.nb_vidhosp > 0 AND p_rss.ghm_id > 0 AND p_rss.oid NOT IN (SELECT rss_id FROM temp.p_vidhosp) THEN '21' WHEN t_finess.type_etablissement IN ('2', '3') AND p_ctl_mt2a.erreur_genrsa = '1' THEN '21' WHEN t_finess.type_etablissement IN ('2', '3') AND p_ctl_mt2a.erreur_genrsa = '2' THEN '22' WHEN t_finess.type_etablissement IN ('2', '3') AND trim(t_pec.code) IN ('3') THEN '23' WHEN t_finess.type_etablissement NOT IN ('2', '3') AND trim(t_pec.code) IN ('2', '3', '4') THEN '24' WHEN t_finess.type_etablissement IN ('2', '3') AND p_ctl_mt2a.erreur_genrsa = '3' THEN '24' WHEN t_finess.type_etablissement IN ('2', '3') AND trim(t_pec.code) IN ('0', 'X') AND w_vidhosp.rss_id IS NULL THEN '24' WHEN p_rss.traitement_epmsi = '26' THEN '26' ELSE '30' END FROM temp.p_rsf_total, base.t_finess, base.t_pec, temp.p_rss p_rss_bis LEFT JOIN (SELECT w_rss.mois_sortie, count(*) AS nb_vidhosp FROM temp.p_rss w_rss, temp.p_vidhosp w_vidhosp WHERE w_rss.oid = w_vidhosp.rss_id GROUP BY w_rss.mois_sortie) subview ON p_rss_bis.mois_sortie = subview.mois_sortie LEFT JOIN temp.p_ctl_mt2a ON (p_rss_bis.oid = p_ctl_mt2a.rss_id) LEFT JOIN w_z7580 ON w_z7580.rss_id = p_rss_bis.oid LEFT JOIN w_vidhosp ON w_vidhosp.rss_id = p_rss_bis.oid WHERE p_rss_bis.oid = p_rss.oid AND t_pec.oid = p_rsf_total.code_pec_id AND p_rss.import_id = $import_id AND p_rsf_total.rss_id = p_rss.oid AND t_finess.code = p_rss.finess AND (p_rss.traitement_epmsi <> CASE WHEN p_rss.en_cours LIKE '1' THEN '00' WHEN p_rss.ghm_id IN (SELECT oid FROM pmsi.t_ghm WHERE code LIKE '90%' AND CODE <> '90H02Z' AND CODE <> '90H03Z') THEN '11' WHEN p_rss.mode_entree = '0' AND p_rss.mode_sortie = '0' THEN '12' WHEN p_rss.ghs_id IN (SELECT oid FROM pmsi.t_ghs WHERE code = 9999) THEN '13' WHEN t_finess.type_etablissement IN ('2', '3') AND subview.nb_vidhosp > 0 AND p_rss.ghm_id > 0 AND p_rss.oid NOT IN (SELECT rss_id FROM temp.p_vidhosp) THEN '21' WHEN t_finess.type_etablissement IN ('2', '3') AND p_ctl_mt2a.erreur_genrsa = '1' THEN '21' WHEN t_finess.type_etablissement IN ('2', '3') AND p_ctl_mt2a.erreur_genrsa = '2' THEN '22' WHEN t_finess.type_etablissement IN ('2', '3') AND trim(t_pec.code) IN ('3') THEN '23' WHEN t_finess.type_etablissement NOT IN ('2', '3') AND trim(t_pec.code) IN ('2', '3', '4') THEN '24' WHEN t_finess.type_etablissement IN ('2', '3') AND p_ctl_mt2a.erreur_genrsa = '3' THEN '24' WHEN t_finess.type_etablissement IN ('2', '3') AND trim(t_pec.code) IN ('0', 'X') THEN '24' ELSE '30' END OR p_rss.traitement_epmsi IS NULL)"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // IC-3071 traité le 22-11-2016 // Pour les exOQN, si pas de GHS dans le RSS, MàJ du GHS d'après la table des RSA logInfoMsg("MaJ du GHS d'apres le RSA pour les RSS sans GHS"); if ($ENV_TYPEETS == "1") { // 15 - RSF-B Supprimés _ Séjour avec plusieurs GHS hors cas admis // (voir règle d'exclusion dans la description du tableau 1.V.1.fsuphc dans le guide de lecture OVALIDE OQN) // Condition and sum(nombre) <> 1 rajouté par CLA le 22-09-2015 pour ne pas impacter les RSF qui ont des écritures d'annulation (nature_operation = 5) et où au final, il ne reste qu'un GHS // GHS 9614 (séances hyperbare) et 9615 (aphérèses) rajoutés le 06-09-2016 par CLA $sqlcmd = " UPDATE temp.p_rss SET traitement_epmsi = '30' FROM ( SELECT rss_id FROM temp.p_rsf_detail JOIN temp.p_rss ON p_rss.oid = p_rsf_detail.rss_id JOIN pmsi.t_prestations ON t_prestations.oid = p_rsf_detail.prestation_id JOIN pmsi.t_ghs ON t_ghs.oid = p_rsf_detail.ghs_id JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id JOIN pmsi.t_cmd ON t_cmd.oid = t_ghm.cmd_id WHERE t_prestations.code = 'GHS' AND t_ghs.code NOT IN (9605, 9604, 9614, 9615) AND p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' AND t_cmd.code NOT IN ('14', '28') GROUP BY 1 HAVING count(p_rsf_detail.ghs_id) > 1 AND sum(nombre) <> 1 ) subview WHERE subview.rss_id = p_rss.oid "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = " UPDATE temp.p_rss SET ghs_id = ghs_rsa.oid FROM temp.p_rsa JOIN pmsi.t_ghs ghs_rsa ON p_rsa.ghs_genrsa_id = ghs_rsa.oid, pmsi.t_ghs ghs_rss WHERE 1=1 AND p_rss.ghs_id = ghs_rss.oid AND p_rsa.rss_id = p_rss.oid AND ghs_rss.code IN (0, 9999) AND p_rss.ghs_id IS DISTINCT FROM ghs_rsa.oid"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $nb_updates = (is_resource($toResult) == true) ? pg_affected_rows($toResult) : 0; echo ". " . $nb_updates . " GHS modifiés"; } else { $sqlcmd = " UPDATE temp.p_rss SET traitement_epmsi = '15' FROM ( SELECT rss_id FROM temp.p_rsf_detail JOIN temp.p_rss ON p_rss.oid = p_rsf_detail.rss_id JOIN pmsi.t_prestations ON t_prestations.oid = p_rsf_detail.prestation_id JOIN pmsi.t_ghs ON t_ghs.oid = p_rsf_detail.ghs_id JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id JOIN pmsi.t_cmd ON t_cmd.oid = t_ghm.cmd_id WHERE t_prestations.code = 'GHS' AND t_ghs.code NOT IN (9605, 9604, 9614, 9615) AND p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' AND t_cmd.code NOT IN ('14', '28') GROUP BY 1 HAVING count(p_rsf_detail.ghs_id) > 1 AND sum(nombre) <> 1 ) subview WHERE subview.rss_id = p_rss.oid "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); } // 15 - RSF-B Supprimés _ RSFB/C avec PU différent du tarif BO /* SAUF SI FICHIER VAL EN LIGNE * (voir règle d'exclusion dans la description du tableau 1.V.1.fsupex dans le guide de lecture OVALIDE OQN) * Si le prix unitaire de la ligne RSFB est différent de celui de la prestation * multiplié par le coefficient mco de la table base.t_finess sur la période du dossier, * Et si le prix unitaire de la ligne RSFB est différent de celui de la prestation sans coefficient MCO * on supprime les dossier. * ATTENTION, sur le privé, le rss est pointé, * sur le public, les montants de la ligne RSF B sont remis à zéro car le reste du séjour peut être valorisé * CLA 2019-03-08 Les externes avec CMU sont autorisés (empirique) à avoir un prix unitaire différent du prix unitaire du BO. Cela étant, * leur valorisation se fait avec le prix unitaire du BO. Va comprendre Charles... */ if (! $file_exists_VAL) { logInfoMsg("Pb pu"); $sqlcmd = " DROP TABLE IF EXISTS w_forfaits; CREATE TEMP TABLE w_forfaits AS SELECT t_finess.type_etablissement, p_rss.oid as rss_id,p_rss.no_rss, p_rsf_detail.CTID AS rsf_CTID, p_rss.date_sortie, t_prestations.code, p_rsf_detail.prix_unitaire, COALESCE(p_rsf_total.pat_benef_cmu, '0') AS cmu, round(CASE WHEN p_rss.date_sortie < t_finess.date_debut_coefficient_mco_2 THEN coefficient_mco_1 * t_prestation_tarif.tarif WHEN p_rss.date_sortie BETWEEN t_finess.date_debut_coefficient_mco_2 AND t_finess.date_debut_coefficient_mco_3 THEN coefficient_mco_2 * t_prestation_tarif.tarif WHEN p_rss.date_sortie BETWEEN t_finess.date_debut_coefficient_mco_3 AND t_finess.date_debut_coefficient_mco_4 THEN coefficient_mco_3 * t_prestation_tarif.tarif WHEN p_rss.date_sortie BETWEEN t_finess.date_debut_coefficient_mco_4 AND t_finess.date_debut_coefficient_mco_5 THEN coefficient_mco_4 * t_prestation_tarif.tarif WHEN p_rss.date_sortie BETWEEN t_finess.date_debut_coefficient_mco_5 AND t_finess.date_debut_coefficient_mco_6 THEN coefficient_mco_5 * t_prestation_tarif.tarif WHEN p_rss.date_sortie BETWEEN t_finess.date_debut_coefficient_mco_6 AND t_finess.date_debut_coefficient_mco_7 THEN coefficient_mco_6 * t_prestation_tarif.tarif WHEN p_rss.date_sortie BETWEEN t_finess.date_debut_coefficient_mco_7 AND t_finess.date_debut_coefficient_mco_8 THEN coefficient_mco_7 * t_prestation_tarif.tarif WHEN p_rss.date_sortie BETWEEN t_finess.date_debut_coefficient_mco_8 AND t_finess.date_debut_coefficient_mco_9 THEN coefficient_mco_8 * t_prestation_tarif.tarif WHEN p_rss.date_sortie >= t_finess.date_debut_coefficient_mco_9 THEN coefficient_mco_9 * t_prestation_tarif.tarif ELSE t_prestation_tarif.tarif END, 2) AS prix_tarif_avec_coeff, t_prestation_tarif.tarif AS prix_tarif_sauf_coeff FROM temp.p_rsf_detail JOIN temp.p_rss ON p_rss.oid = p_rsf_detail.rss_id JOIN temp.p_rsf_total ON p_rsf_total.rss_id = p_rsf_detail.rss_id JOIN base.t_finess ON t_finess.code = p_rss.finess JOIN pmsi.t_prestations ON t_prestations.oid = p_rsf_detail.prestation_id JOIN pmsi.t_prestation_tarif ON t_prestation_tarif.prestation_id = t_prestations.oid AND (t_finess.type_etablissement = t_prestation_tarif.type_ets OR t_finess.type_etablissement <> 1 AND t_prestation_tarif.type_ets = '2') AND p_rss.date_sortie BETWEEN t_prestation_tarif.date_debut AND t_prestation_tarif.date_fin WHERE t_prestations.code IN ('FFM', 'ATU', 'SE1', 'SE2', 'SE3', 'SE4', 'SE5', 'SE6', 'SE7', 'FSD', 'VDE', 'APE', 'AP2', 'FPI') AND p_rss.import_id = $import_id; UPDATE temp.p_rss SET traitement_epmsi = '15' FROM (SELECT rss_id FROM w_forfaits WHERE type_etablissement NOT IN ('2','3') AND abs(prix_unitaire - prix_tarif_avec_coeff) > 0.01 AND abs(prix_unitaire - prix_tarif_sauf_coeff) > 0.01 ) subview WHERE subview.rss_id = p_rss.oid; UPDATE temp.p_rsf_detail SET prix_unitaire = CASE WHEN w_forfaits.cmu = '1' THEN p_rsf_detail.prix_unitaire ELSE prix_tarif_sauf_coeff END, base_remboursement = p_rsf_detail.base_remboursement, base_remboursement_sauf_transition = p_rsf_detail.base_remboursement_sauf_transition, nombre = p_rsf_detail.nombre, sejour_remboursable = p_rsf_detail.sejour_remboursable, update_rules = array_append(update_rules, 43) FROM w_forfaits WHERE w_forfaits.rsf_CTID = p_rsf_detail.CTID AND type_etablissement IN ('2','3') AND abs(p_rsf_detail.prix_unitaire - prix_tarif_avec_coeff) > 0.01 AND abs(p_rsf_detail.prix_unitaire - prix_tarif_sauf_coeff) > 0.01;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); } // SI FICHIER VAL EN LIGNE if ($file_exists_VAL) { $file_VAL_pg = realpath($file_VAL); $file_VAL_pg = str_replace('\\','//',$file_VAL_pg); $yep = '"'; $sqlcmd = " DROP TABLE IF EXISTS w_VAL_ERR; DROP SEQUENCE IF EXISTS w_VAL_ERR_seq; CREATE TEMP SEQUENCE w_VAL_ERR_seq; CREATE TEMP TABLE w_VAL_ERR ( data text, line_type text DEFAULT '', sequence bigint DEFAULT nextval('w_VAL_ERR_seq'::regclass), no_rss numeric ); TRUNCATE w_VAL_ERR; COPY w_VAL_ERR (data) FROM '$file_VAL_pg' WITH DELIMITER AS E'\01' ; UPDATE w_VAL_ERR SET line_type = CASE WHEN sequence BETWEEN sequence_rss + 1 AND sequence_ext - 1 THEN 'RSS' WHEN sequence > sequence_ext THEN 'EXT' ELSE '' END, no_rss = base.cti_to_number(replace(split_part(data,';',2),'$yep','')) FROM (SELECT COALESCE(MIN(sequence),0) AS sequence_rss FROM w_VAL_ERR WHERE data LIKE 'NUMTEST;NUMRSS%') subview_rss, (SELECT COALESCE(MIN(sequence),999999999) AS sequence_ext FROM w_VAL_ERR WHERE data LIKE 'NUMTEST;NUMFACT%') subview_ext WHERE split_part(data,';',4) <> ''; CREATE INDEX w_val_err_i1 ON w_val_err USING btree (no_rss); /* Modif par CLA le 07-06-2017 Désactivation de la ligne qui ignore les séjours de séances qui présentent une erreur de type 13 JIRA IC-3973 */ UPDATE temp.p_rss SET traitement_epmsi = '15' FROM w_val_err WHERE import_id = $import_id AND p_rss.no_rss = w_val_err.no_rss AND line_type = 'RSS' AND w_val_err.no_rss <> 0 AND traitement_epmsi = '30' --AND ((split_part(data,';',1) = '13' AND substr(split_part(data,';',4), 1, 2) <> '28') OR split_part(data,';',1) <> '13') ; UPDATE temp.p_rss SET traitement_epmsi = '15' FROM w_val_err JOIN temp.p_rsf_total ON p_rsf_total.no_facture = w_val_err.no_rss WHERE import_id = $import_id AND p_rsf_total.no_rss = p_rss.no_rss AND line_type = 'EXT' AND w_val_err.no_rss <> 0 AND traitement_epmsi = '30'; "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); } $sqlcmd = "UPDATE temp.p_rss SET traitement_epmsi = '0' WHERE traitement_epmsi IS NULL;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Correction valorisation FIDES // Les factures avec ATU, FFM, SE, Dxx, APE, AP2 et FPI ne sont pas valorisées FIDES et restent valorisées par OVALIDE // Le flag valorise_fides est parfois mal renseignés sur ces factures, il faut le mettre à 0 if ($ENV_TYPEETS != "1") { $sqlcmd = " INSERT INTO pmsi.t_divers (code, texte, valeur, description, valeur_date) SELECT 'FIDES_ACE_DATE', 'Date de passage à FIDES ACE', '31/12/2099', 'Date de passage à FIDES ACE', '2099-12-31'::date WHERE 'FIDES_ACE_DATE' NOT IN (SELECT code FROM pmsi.t_divers); "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $sqlcmd = " WITH w_except AS ( SELECT DISTINCT rss_id FROM temp.p_rsf_detail WHERE prestation_id = ANY(ARRAY(SELECT to_id FROM pmsi.v_listes_contenu_1 WHERE liste_code = 'CTI_XFIDESACE')::bigint[]) ), w_prestations AS ( SELECT array_agg(to_id) as ngap_array FROM pmsi.v_listes_contenu_1 WHERE liste_code IN ('CTI_NGAP_P', 'CTI_CCAM_P') ), w_fides AS ( SELECT p_rsf_total.rss_id as w_rss_id ,CASE WHEN ghm_id = 0 AND w_except.rss_id IS NULL AND p_rss.date_sortie >= t_divers.valeur_date AND array_agg(distinct p_rsf_detail.prestation_id) && ngap_array THEN 1 ELSE 0 END as w_valorise_fides FROM temp.p_rsf_total LEFT JOIN temp.p_rsf_detail ON p_rsf_total.rss_id = p_rsf_detail.rss_id LEFT JOIN temp.p_rss ON p_rss.oid = p_rsf_total.rss_id LEFT JOIN w_except ON w_except.rss_id = p_rss.oid JOIN pmsi.t_divers ON t_divers.code = 'FIDES_ACE_DATE', w_prestations GROUP BY p_rsf_total.rss_id, p_rss.ghm_id, p_rss.date_sortie, ngap_array, t_divers.valeur_date, w_except.rss_id ) UPDATE temp.p_rsf_total SET valorise_fides = w_valorise_fides FROM w_fides WHERE 1=1 AND w_fides.w_rss_id = p_rsf_total.rss_id AND p_rsf_total.valorise_fides IS DISTINCT FROM w_valorise_fides"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // MAJ p_rsf_detail.fides_detail d'après valorise_fides de p_rsf_total $sqlcmd = "UPDATE temp.p_rsf_detail SET fides_detail = p_rsf_total.valorise_fides FROM temp.p_rsf_total WHERE p_rsf_total.rss_id = p_rsf_detail.rss_id AND p_rsf_total.valorise_fides IS NOT NULL AND fides_detail IS DISTINCT FROM p_rsf_total.valorise_fides AND prestation_id <> ALL(SELECT t_prestations.oid FROM pmsi.t_prestations WHERE code = 'MOPHNG');"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "UPDATE temp.p_rsf_detail SET fides_detail = 0 FROM pmsi.t_prestations WHERE t_prestations.oid = prestation_id AND t_prestations.code = 'MOPHNG' AND fides_detail IS DISTINCT FROM '0'"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); } if ($ENV_TYPEETS != "1") { generation_valoace(); } // Type traitement = IVG ou SU if ($ENV_TYPEETS != "1") { // Traitement epmsi (AMO ou AME) $sqlcmd = "UPDATE temp.p_rss SET traitement_epmsi = '32' FROM temp.p_rsf_total JOIN base.t_pec ON code_pec_id = t_pec.oid JOIN base.t_motif_non_facturation ON motif_non_facturation_id = t_motif_non_facturation.oid WHERE p_rss.oid = p_rsf_total.rss_id AND traitement_epmsi = '13' AND p_rss.ghm_id IN (SELECT oid FROM pmsi.t_ghm WHERE code = '14Z08Z') AND ( t_pec.code IN ('1','2') OR t_pec.code = '0' AND t_motif_non_facturation.code = '1' ) ;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Traitement epmsi (SU) // CF chapitre "valorisation SU" du manuel de VisualValoSej // Les séjours en SU sont repérés à partir des variables // . Séjour facturable à l'AM codée à 0 // . Motif de non facturation à l'AM codé à 4 // . Les IVG (traitement ePMSI = '32') sont hors champ $sqlcmd = "UPDATE temp.p_rss SET traitement_epmsi = '33' FROM temp.p_rsf_total JOIN base.t_pec ON code_pec_id = t_pec.oid JOIN base.t_motif_non_facturation ON motif_non_facturation_id = t_motif_non_facturation.oid WHERE 1=1 AND p_rss.oid = p_rsf_total.rss_id AND t_pec.code = '0' AND t_motif_non_facturation.code = '4' AND traitement_epmsi IN ('30', '24') ;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); } // Valorisation AME (spécial public) if ($ENV_TYPEETS != "1") { // Traitement epmsi $sqlcmd = "UPDATE temp.p_rss SET traitement_epmsi = '31' FROM temp.p_rsf_total JOIN base.t_motif_non_facturation ON motif_non_facturation_id = t_motif_non_facturation.oid JOIN base.t_pec ON code_pec_id = t_pec.oid WHERE p_rss.oid = p_rsf_total.rss_id AND traitement_epmsi = '24' AND t_pec.code = '0' AND t_motif_non_facturation.code = '1' AND ghm_id <> 0 ;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // valorisation ghs = 80% base remboursement * 1,2 (soit 1,056) // Pas d'application du taux de remboursement $sqlcmd = "UPDATE temp.p_rsf_detail SET taux_remboursement = 80, coefficient_mco = p_rsf_detail.coefficient_geo * ( CASE WHEN t_prestations.code IN ('GHS', 'EXH') THEN 0.8 ELSE 1 END ) * CASE WHEN p_rss.date_sortie >= t_finess.date_debut_coefficient_pacte_resp_9 THEN t_finess.coefficient_pacte_resp_9 WHEN p_rss.date_sortie >= t_finess.date_debut_coefficient_pacte_resp_8 THEN t_finess.coefficient_pacte_resp_8 WHEN p_rss.date_sortie >= t_finess.date_debut_coefficient_pacte_resp_7 THEN t_finess.coefficient_pacte_resp_7 WHEN p_rss.date_sortie >= t_finess.date_debut_coefficient_pacte_resp_6 THEN t_finess.coefficient_pacte_resp_6 WHEN p_rss.date_sortie >= t_finess.date_debut_coefficient_pacte_resp_5 THEN t_finess.coefficient_pacte_resp_5 WHEN p_rss.date_sortie >= t_finess.date_debut_coefficient_pacte_resp_4 THEN t_finess.coefficient_pacte_resp_4 WHEN p_rss.date_sortie >= t_finess.date_debut_coefficient_pacte_resp_3 THEN t_finess.coefficient_pacte_resp_3 WHEN p_rss.date_sortie >= t_finess.date_debut_coefficient_pacte_resp_2 THEN t_finess.coefficient_pacte_resp_2 WHEN p_rss.date_sortie >= t_finess.date_debut_coefficient_pacte_resp_1 THEN t_finess.coefficient_pacte_resp_1 ELSE 1::numeric END, coefficient_geo = p_rsf_detail.coefficient_geo * (CASE WHEN t_prestations.code IN ('GHS', 'EXH') THEN 0.8 ELSE 1 END ), update_rules = array_append(update_rules, 44) FROM temp.p_rss, pmsi.t_prestations, base.t_finess WHERE p_rss.oid = p_rsf_detail.rss_id AND p_rss.finess = t_finess.code AND traitement_epmsi = '31' AND import_id = $import_id AND ghm_id <> 0 AND prestation_id = t_prestations.oid AND t_prestations.code IN ('GHS','EXH','ANT','SRC','STF','REA','NN1','NN2','NN3','REP','RAP','SDC') AND p_rsf_detail.base_remboursement <> 0 AND est_ligne_rss = '1'"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); } // Base de remboursement hors coefficient MCO, hors AME : nombre * prix_unitaire * coefficient, arrondi à 3 décimales $sqlcmd = "UPDATE temp.p_rsf_detail SET base_remboursement_sauf_transition_sauf_ame = round(nombre * prix_unitaire * coefficient, 3), update_rules = array_append(update_rules, 50) FROM base.t_finess, temp.p_rss, pmsi.t_prestations WHERE 1=1 AND p_rss.oid = p_rsf_detail.rss_id AND p_rss.finess = t_finess.code AND p_rsf_detail.est_ligne_rss = '1' AND p_rsf_detail.prestation_id = t_prestations.oid AND (prix_unitaire <> 0 AND nombre > 0 AND coefficient <> 0 OR t_prestations.code = 'LIM_SRC') AND base_remboursement_sauf_transition_sauf_ame != round(nombre * prix_unitaire * coefficient, 3);"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); logInfoMsg("Sous totaux RSF"); $sqlcmd = "UPDATE temp.p_rsf_total SET base_remboursement = COALESCE(subview.base_remboursement,0) FROM temp.p_rss LEFT JOIN ( SELECT rss_id, SUM(p_rsf_detail.base_remboursement) as base_remboursement FROM temp.p_rsf_detail WHERE p_rsf_detail.est_ligne_rss = '1' GROUP BY rss_id) subview ON p_rss.oid = subview.rss_id WHERE import_id = $import_id AND p_rsf_total.rss_id = p_rss.oid AND ( p_rsf_total.base_remboursement IS DISTINCT FROM COALESCE(subview.base_remboursement,0) )"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "UPDATE temp.p_rsf_total SET t2a_facture = COALESCE(subview.t2a_facture,0), dmi_facture = COALESCE(subview.dmi_facture,0), phc_facture = COALESCE(subview.phc_facture,0), forfait_facture = COALESCE(subview.forfait_facture,0), nb_exh = COALESCE(subview.nb_exh,0), ca_exh = COALESCE(subview.ca_exh,0), nb_exb = COALESCE(subview.nb_exb,0), ca_exb = COALESCE(subview.ca_exb,0), nb_ghs = COALESCE(subview.nb_ghs,0), ca_ghs = COALESCE(subview.ca_ghs,0) FROM temp.p_rss LEFT JOIN ( SELECT rss_id, SUM(CASE WHEN t_prestations.section_code[9] LIKE 'S1%' THEN p_rsf_detail.base_remboursement ELSE 0 END) as t2a_facture, SUM(CASE WHEN t_prestations.section_code[9] LIKE 'S2%' THEN p_rsf_detail.base_remboursement ELSE 0 END) as dmi_facture, SUM(CASE WHEN t_prestations.section_code[9] LIKE 'S3%' THEN p_rsf_detail.base_remboursement ELSE 0 END) as phc_facture, SUM(CASE WHEN t_prestations.code = 'EXH' THEN p_rsf_detail.nombre ELSE 0 END) as nb_exh, SUM(CASE WHEN t_prestations.code = 'EXH' THEN p_rsf_detail.base_remboursement ELSE 0 END) as ca_exh, SUM(CASE WHEN t_prestations.code = 'GHS' AND coefficient < 1 THEN p_rsf_detail.nombre ELSE 0 END) as nb_exb, SUM(CASE WHEN t_prestations.code = 'GHS' AND coefficient < 1 THEN p_rsf_detail.base_remboursement ELSE 0 END) as ca_exb, SUM(CASE WHEN t_prestations.code = 'GHS' THEN p_rsf_detail.nombre ELSE 0 END) as nb_ghs, SUM(CASE WHEN t_prestations.code = 'GHS' THEN p_rsf_detail.base_remboursement ELSE 0 END) as ca_ghs, SUM(CASE WHEN t_prestations.section_code[9] LIKE 'S13%' THEN p_rsf_detail.base_remboursement ELSE 0 END) as forfait_facture FROM temp.p_rsf_detail JOIN pmsi.t_prestations ON p_rsf_detail.prestation_id = t_prestations.oid WHERE p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' GROUP BY rss_id) subview ON p_rss.oid = subview.rss_id WHERE p_rsf_total.rss_id = p_rss.oid AND p_rss.import_id = $import_id "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Correction EXB $sqlcmd = "UPDATE temp.p_rsf_total SET nb_exb = subview.nb_exb, ca_exb = subview.ca_exb FROM temp.p_rss, ( SELECT rss_id, SUM(CASE WHEN t_prestations.code = 'GHS' AND coefficient < 1 THEN p_rsf_detail.nombre ELSE 0 END) as nb_exb, SUM(CASE WHEN t_prestations.code = 'GHS' AND coefficient < 1 THEN p_rsf_detail.base_remboursement ELSE 0 END) as ca_exb FROM temp.p_rsf_detail, pmsi.t_prestations WHERE p_rsf_detail.prestation_id = t_prestations.oid AND p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' GROUP BY rss_id ) subview WHERE p_rsf_total.rss_id = p_rss.oid AND p_rsf_total.rss_id = subview.rss_id AND p_rsf_total.rss_id IN ( SELECT rss_id FROM temp.p_rsf_detail, pmsi.t_prestations WHERE p_rsf_detail.prestation_id = t_prestations.oid AND t_prestations.code = 'GHS' AND coefficient > 0 AND coefficient < 1 ); "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // CA Théorique $sqlcmd = "UPDATE temp.p_rsf_total SET ca_ghs_theorique = subview.ca_ghs_theorique FROM temp.p_rss, ( SELECT rss_id, SUM(CASE WHEN coefficient >= 1 THEN p_rsf_detail.base_remboursement WHEN coefficient > 0 THEN round(prix_unitaire * nombre * coefficient_mco,2) ELSE 0 END) as ca_ghs_theorique FROM temp.p_rsf_detail WHERE p_rsf_detail.type = 'B' AND p_rsf_detail.est_ligne_rss = '1' AND p_rsf_detail.prestation_id IN (SELECT oid FROM pmsi.t_prestations WHERE code = 'GHS') GROUP BY rss_id ) subview WHERE p_rsf_total.rss_id = p_rss.oid AND p_rss.import_id = $import_id AND p_rsf_total.rss_id = subview.rss_id AND p_rsf_total.ca_ghs_theorique <> subview.ca_ghs_theorique "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "UPDATE temp.p_rsf_total SET ca_ghs_theorique = p_rsf_total.ca_ghs FROM temp.p_rss WHERE p_rsf_total.rss_id = p_rss.oid AND p_rss.import_id = $import_id AND ((p_rsf_total.ca_ghs_theorique = 0 AND p_rsf_total.ca_ghs <> 0) OR p_rsf_total.ca_ghs_theorique IS NULL); "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Reprise des cumuls dans p_rss logInfoMsg("Report des cumuls RSS"); $sqlcmd = "UPDATE temp.p_rss SET base_remboursement = p_rsf_total.base_remboursement, sejour_facture = p_rsf_total.sejour_facture, honoraires_factures = p_rsf_total.honoraires_factures, t2a_facture = p_rsf_total.t2a_facture, dmi_facture = p_rsf_total.dmi_facture, phc_facture = p_rsf_total.phc_facture, ca_ghs_theorique = p_rsf_total.ca_ghs_theorique, nb_ghs = p_rsf_total.nb_ghs, ca_ghs = p_rsf_total.ca_ghs, nb_exb = p_rsf_total.nb_exb, ca_exb = p_rsf_total.ca_exb, nb_exh = p_rsf_total.nb_exh, ca_exh = p_rsf_total.ca_exh, forfait_facture = p_rsf_total.forfait_facture, nb_ghsmin = p_rsf_total.nb_ghsmin FROM temp.p_rsf_total WHERE p_rss.oid = p_rsf_total.rss_id AND p_rss.import_id = $import_id;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); // Recherche des factures inexistantes logInfoMsg("Recherche des en-têtes de factures manquants"); $sqlcmd = " SELECT p_rss.no_rss FROM temp.p_rss LEFT JOIN temp.p_rsf_total ON p_rsf_total.rss_id = p_rss.oid WHERE 1=1 AND p_rsf_total.rss_id IS NULL AND p_rss.import_id = $import_id"; $toResult = execute_sql($sqlcmd); if (is_resource($toResult)) { while ($row = pg_fetch_array($toResult)) { logWarnMsg("Aucun en-tête de facture trouvé pour le RSS n°" . $row[0] . ". Un en-tête vide sera créé."); } } // Création des factures inexistantes $sqlcmd = " INSERT INTO temp.p_rsf_total( finess, no_rss, code_pec, rang_beneficiaire, regime, nature_pec, justificatif_exo, no_facture, code_regularisation, base_remboursement, sejour_facture, sejour_remboursable, honoraires_factures, honoraires_remboursable, t2a_facture, dmi_facture, phc_facture, participation_assure_avant_oc, sejour_remboursable_2, honoraires_remboursable_2, montant_dmi_ghs2006, forfait_facture, nb_exh, ca_exh, nb_exb, ca_exb, nb_ghs, ca_ghs, taux_remboursement, regime_id, exoneration_tm_id, nature_pec_id, code_pec_id, rss_id, nb_ghsmin) SELECT finess, no_rss, '1', '', '01', '10', '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, oid, 0 FROM temp.p_rss WHERE import_id = $import_id AND oid NOT IN (SELECT rss_id FROM temp.p_rsf_total)"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); // Mise a jour des dates EXH $sqlcmd = "UPDATE temp.p_rsf_detail SET date_debut = date_debut_new FROM ( SELECT rss_id, prestation_id, date_debut, date_fin, nombre, date(date_sortie - (nombre||' days')::interval) AS date_debut_new FROM temp.p_rsf_detail JOIN pmsi.t_prestations on prestation_id = t_prestations.oid JOIN temp.p_rss ON rss_id = p_rss.oid WHERE t_prestations.code = 'EXH' AND date_debut = date_entree AND date(date_sortie - (nombre||' days')::interval) > date_entree ) subview WHERE p_rsf_detail.rss_id = subview.rss_id AND p_rsf_detail.prestation_id = subview.prestation_id AND p_rsf_detail.date_debut = subview.date_debut AND p_rsf_detail.date_fin = subview.date_fin AND p_rsf_detail.nombre = subview.nombre ;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW_rum ); commit_trans(); logInfoMsg("FIN TRAITEMENTS COMPLEMENTAIRES RSF. $nbE erreurs."); } function generation_validation_tables() { logInfoMsg("VALIDATION TABLES"); begin_trans(); $nbE = 0; logInfoMsg("Suppression index"); disable_index("i_rss_1"); disable_index("i_rss_2"); disable_index("i_rss_3"); disable_index("i_rss_4"); disable_index("i_rss_5"); disable_index("i_rss_6"); disable_index("i_rss_7"); disable_index("i_rss_8"); disable_index("i_rss_9"); disable_index("i_rss_10"); disable_index("i_rss_11"); disable_index("i_rss_12"); disable_index("i_rss_13"); disable_index("i_rss_14"); disable_index("i_rss_16"); disable_index("i_rss_17"); disable_index("i_rss_18"); disable_index("i_rss_19"); disable_index("i_rss_20"); disable_index("i_rss_21"); disable_index("i_identites_1"); disable_index("i_identites_3"); disable_index("i_rss_rum_1"); disable_index("i_rss_rum_4"); disable_index("i_rss_rum_5"); disable_index("i_rss_rum_6"); disable_index("i_rss_rum_7"); disable_index("i_rss_rum_8"); disable_index("i_rss_rum_9"); disable_index("i_rss_rum_10"); disable_index("i_rss_rum_11"); disable_index("i_rss_rum_12"); disable_index("i_rss_rum_13"); disable_index("i_rss_diagnostics_1"); disable_index("i_rss_diagnostics_2"); disable_index("i_rss_diagnostics_3"); disable_index("i_rss_diagnostics_7"); disable_index("i_rsf_total_1"); disable_index("i_rsf_total_3"); disable_index("i_rsf_detail_1"); disable_index("i_rsf_detail_2"); disable_index("i_rsf_detail_5"); disable_index("i_rss_actes_1"); disable_index("i_rss_actes_2"); disable_index("i_rss_actes_3"); disable_index("i_rss_actes_4"); disable_index("i_rss_actes_5"); disable_index("i_rss_actes_9"); disable_index("i_rss_lpp_1"); disable_index("i_rss_lpp_2"); disable_index("i_rss_lpp_3"); disable_index("i_rss_ucd_1"); disable_index("i_rss_ucd_2"); disable_index("i_rss_ucd_3"); disable_index("i_rss_leg_1"); disable_index("i_rss_leg_2"); disable_index("i_rss_leg_3"); commit_trans(); logInfoMsg("Ajout des données"); $sqlcmd = "INSERT INTO pmsi.p_identites SELECT * FROM temp.p_identites"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_rss SELECT * FROM temp.p_rss"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "SELECT * FROM setval('pmsi.s_rss'::regclass, COALESCE((SELECT MAX(oid) FROM pmsi.p_rss),0) + 1)"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_rss_rum SELECT * FROM temp.p_rss_rum"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_rss_actes SELECT * FROM temp.p_rss_actes"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_rss_diagnostics SELECT * FROM temp.p_rss_diagnostics"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_rss_lpp SELECT * FROM temp.p_rss_lpp"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_rss_ucd SELECT * FROM temp.p_rss_ucd"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_rss_leg SELECT * FROM temp.p_rss_leg"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_rss_maternite SELECT * FROM temp.p_rss_maternite"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_ctl_mt2a SELECT * FROM temp.p_ctl_mt2a"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_vidhosp SELECT * FROM temp.p_vidhosp"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_vidhosp_crc SELECT * FROM temp.p_vidhosp_crc"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_rsa SELECT * FROM temp.p_rsa"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_rsa_rdth SELECT * FROM temp.p_rsa_rdth"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_rsf_total SELECT * FROM temp.p_rsf_total"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_rsf_detail SELECT * FROM temp.p_rsf_detail"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_rsf_detail_non_valorise SELECT * FROM temp.p_rsf_detail_non_valorise"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_fichsup_transports SELECT * FROM temp.p_fichsup_transports"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = " INSERT INTO pmsi.p_rss_transferts (rss_id, etablissement_provenance_id, etablissement_destination_id) SELECT rss_id, MAX(etablissement_provenance_id), MAX(etablissement_destination_id) FROM temp.p_rss_transferts w_transferts WHERE NOT EXISTS ( SELECT 1 FROM pmsi.p_rss_transferts WHERE w_transferts.rss_id = p_rss_transferts.rss_id ) GROUP BY 1 "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); logInfoMsg("Recréation index"); enable_index("i_rss_1"); enable_index("i_rss_2"); enable_index("i_rss_3"); enable_index("i_rss_4"); enable_index("i_rss_5"); enable_index("i_rss_6"); enable_index("i_rss_7"); enable_index("i_rss_8"); enable_index("i_rss_9"); enable_index("i_rss_10"); enable_index("i_rss_11"); enable_index("i_rss_12"); enable_index("i_rss_13"); enable_index("i_rss_14"); enable_index("i_rss_16"); enable_index("i_rss_17"); enable_index("i_rss_18"); enable_index("i_rss_19"); enable_index("i_rss_20"); enable_index("i_rss_21"); enable_index("i_identites_1"); enable_index("i_identites_3"); enable_index("i_rss_rum_1"); enable_index("i_rss_rum_4"); enable_index("i_rss_rum_5"); enable_index("i_rss_rum_6"); enable_index("i_rss_rum_7"); enable_index("i_rss_rum_8"); enable_index("i_rss_rum_9"); enable_index("i_rss_rum_10"); enable_index("i_rss_rum_11"); enable_index("i_rss_rum_12"); enable_index("i_rss_rum_13"); enable_index("i_rss_diagnostics_1"); enable_index("i_rss_diagnostics_2"); enable_index("i_rss_diagnostics_3"); enable_index("i_rss_diagnostics_6"); enable_index("i_rss_diagnostics_7"); enable_index("i_rsf_total_1"); enable_index("i_rsf_total_3"); enable_index("i_rsf_detail_1"); enable_index("i_rsf_detail_2"); enable_index("i_rsf_detail_5"); enable_index("i_rss_actes_1"); enable_index("i_rss_actes_2"); enable_index("i_rss_actes_3"); enable_index("i_rss_actes_4"); enable_index("i_rss_actes_5"); enable_index("i_rss_actes_8"); enable_index("i_rss_actes_9"); enable_index("i_rss_lpp_1"); enable_index("i_rss_lpp_2"); enable_index("i_rss_lpp_3"); enable_index("i_rss_lpp_6"); enable_index("i_rss_ucd_1"); enable_index("i_rss_ucd_2"); enable_index("i_rss_ucd_3"); enable_index("i_rss_ucd_6"); enable_index("i_rss_leg_1"); enable_index("i_rss_leg_2"); enable_index("i_rss_leg_3"); commit_trans(); logInfoMsg("FIN VALIDATION TABLES. $nbE erreurs."); } function generation_traitements_finaux() { global $import_id; global $omitExpert; logInfoMsg("TRAITEMENTS FINAUX"); begin_trans(); // Traitement des simulations afin de ne pas faire sauter le lien rss_id entre les tables de simulations et pmsi.p_rss et autres tables du pmsi $simulations = array( 'p_simulation_fg2021' => '2020' , 'p_simulation_fg2122' => '2021' , 'p_simulation_fg2223' => '2022' , 'p_simulation_fg2324' => '2023' , 'p_simulation_fg2425' => '2024' , 'p_simulation_fg2526' => '2025' , 'p_simulation_fg2627' => '2026' ) ; foreach ($simulations as $table_sim => $date) { $sql = " SELECT * FROM information_schema.tables WHERE 1=1 AND table_schema = 'pmsi' AND table_name = '" . $table_sim . "' "; $res = execute_sql($sql); if (pg_num_rows($res) > 0) { logInfoMsg("Mise à jour des oid pour simulation table : $table_sim"); $sqlcmd = " UPDATE pmsi.$table_sim SET rss_id = p_rss.oid FROM pmsi.p_rss WHERE 1=1 AND $table_sim .no_rss = p_rss.no_rss AND p_rss.date_sortie BETWEEN ($date::text || '0301')::date AND ($date::text || '1231')::date AND $table_sim.annee_sortie = $date::text AND $table_sim.rss_id <> p_rss.oid ; UPDATE pmsi.$table_sim SET rss_id = p_rss.oid FROM pmsi.p_rss WHERE 1=1 AND $table_sim .no_rss = p_rss.no_rss AND p_rss.date_sortie BETWEEN (($date::int + 1)::text ||'0101')::date AND (( to_date( ($date::int + 1)::text || '0301' , 'YYYYMMDD') - 1 )::text)::date AND $table_sim.annee_sortie = ($date::int + 1)::text AND $table_sim.rss_id <> p_rss.oid ; "; $toResult = execute_sql($sqlcmd); commit_trans(); } } logInfoMsg("Mise à jour des oid pour fiche n°5"); $sqlcmd = " UPDATE pmsi.p_fiche5_rss SET rss_id = p_rss.oid FROM pmsi.t_fiche5_enquete JOIN pmsi.p_rss ON p_rss.ghm_id > 0 AND p_rss.en_cours = '0' AND date_part('year',p_rss.date_sortie) = t_fiche5_enquete.annee WHERE p_fiche5_rss.no_rss = p_rss.no_rss AND p_fiche5_rss.rss_id IS DISTINCT FROM p_rss.oid ;"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $nbE = 0; logInfoMsg("Initialisation patients"); logInfoMsg("Initialisation RSS sans nom"); $sqlcmd = "INSERT into pmsi.p_identites (no_rss, nom, finess, rss_id) SELECT p_rss.no_rss, 'RSS ' || p_rss.no_rss, p_rss.finess, p_rss.oid FROM pmsi.p_rss LEFT JOIN pmsi.p_identites ON (p_rss.oid = p_identites.rss_id) WHERE p_identites.rss_id IS NULL"; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); commit_trans(); $sqlcmd = "UPDATE pmsi.p_identites SET prenom = '' WHERE prenom is null"; $toResult = execute_sql($sqlcmd); commit_trans(); vacuum_table("p_patients"); vacuum_table("p_identites"); vacuum_table("p_rss"); logInfoMsg("Maintenance des patients"); // Lien activite / pmsi if (file_exists("../../activite/settings.xml")) { // Créer une table d'association dans activité $sqlcmd = "SELECT activite.cti_reorganize_sejour_pmsi()"; //$toResult = execute_sql($sqlcmd); //commit_trans(); // Récupérer les noms activité vers le PMSI $sqlcmd = "UPDATE pmsi.p_identites SET nom = p_patients.nom, nom_naissance = p_patients.nom_naissance, prenom = p_patients.prenom FROM pmsi.p_rss, activite.p_sejour_pmsi JOIN activite.p_sejours ON p_sejour_pmsi.no_sejour = p_sejours.no_sejour JOIN activite.p_patients ON p_sejours.no_patient = p_patients.no_patient WHERE p_rss.oid = p_identites.rss_id AND p_identites.nom LIKE 'RSS %' AND p_sejour_pmsi.pmsi_type = 'MCO' AND p_sejour_pmsi.rss_id = p_rss.oid;"; $toResult = execute_sql($sqlcmd); commit_trans(); } $sqlcmd = "UPDATE pmsi.p_rss SET patient_id = 0 FROM pmsi.p_identites, pmsi.p_patients WHERE p_rss.oid = p_identites.rss_id AND p_patients.oid = p_rss.patient_id AND p_rss.patient_id <> 0 AND (upper(translate(p_identites.nom || p_identites.prenom, ' -', '')) || '|'::text || p_rss.date_naissance::text || '|'::text || p_rss.sexe::text) <> (upper(translate(p_patients.nom || p_patients.prenom, ' -', '')) || '|'::text || p_patients.date_naissance::text || '|'::text || p_patients.sexe::text) "; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "DROP TABLE IF EXISTS temp_pmsi_identites ;"; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "CREATE TEMP TABLE temp_pmsi_identites (finess character(9), nom character varying(255), prenom character varying(255), nomprenom character varying(255), date_naissance date, sexe character(1));"; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "INSERT INTO temp_pmsi_identites(finess, nom, prenom, nomprenom, date_naissance, sexe) SELECT DISTINCT p_rss.finess, p_identites.nom, p_identites.prenom, upper(translate(p_identites.nom || p_identites.prenom, ' -', '')) AS nomprenom, p_rss.date_naissance, p_rss.sexe FROM pmsi.p_rss, pmsi.p_identites WHERE p_rss.oid = p_identites.rss_id AND (p_rss.patient_id IS NULL OR p_rss.patient_id = 0);"; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "INSERT INTO pmsi.p_patients (finess, nom, prenom, date_naissance, sexe) SELECT temp_pmsi_identites.finess, temp_pmsi_identites.nom, temp_pmsi_identites.prenom, temp_pmsi_identites.date_naissance, temp_pmsi_identites.sexe FROM temp_pmsi_identites LEFT JOIN pmsi.p_patients ON ( temp_pmsi_identites.nomprenom = upper(translate(p_patients.nom || p_patients.prenom, ' -', '')) AND temp_pmsi_identites.date_naissance = p_patients.date_naissance AND temp_pmsi_identites.sexe = p_patients.sexe) WHERE p_patients.nom IS NULL"; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "UPDATE pmsi.p_patients SET no_patient = 0 - nextval('pmsi.s_no_interne_patients'::regclass) WHERE no_patient = 0 OR no_patient IS NULL; "; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "UPDATE pmsi.p_rss SET patient_id = p_patients.oid FROM pmsi.p_identites, pmsi.p_patients WHERE p_rss.oid = p_identites.rss_id AND COALESCE(p_rss.patient_id,0) = 0 AND p_rss.date_naissance = p_patients.date_naissance AND p_rss.sexe = p_patients.sexe AND upper(translate(p_identites.nom || p_identites.prenom, ' -', '')) = upper(translate(p_patients.nom || p_patients.prenom, ' -', '')) "; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "UPDATE pmsi.p_rss SET patient_id = subview.new_id FROM ( SELECT p_patients.oid AS old_id, p_patients_nouveaux.oid as new_id FROM pmsi.p_patients, pmsi.p_patients p_patients_nouveaux WHERE p_patients.oid < p_patients_nouveaux.oid AND upper(translate(p_patients.nom || p_patients.prenom, ' -', '')) = upper(translate(p_patients_nouveaux.nom || p_patients_nouveaux.prenom, ' -', '')) AND p_patients.date_naissance = p_patients_nouveaux.date_naissance AND p_patients.sexe = p_patients_nouveaux.sexe ) subview WHERE p_rss.patient_id = subview.old_id "; $toResult = execute_sql($sqlcmd); commit_trans(); $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "DELETE FROM pmsi.p_patients WHERE oid NOT IN (SELECT DISTINCT patient_id FROM pmsi.p_rss)"; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "UPDATE pmsi.p_patients SET no_patient = subview.no_patient FROM (SELECT patient_id, MAX(no_patient) as no_patient FROM pmsi.p_rss WHERE no_patient > 0 GROUP BY patient_id) subview WHERE p_patients.oid = subview.patient_id AND p_patients.no_patient <> subview.no_patient"; $toResult = execute_sql($sqlcmd); commit_trans(); logInfoMsg("Ventilation par unité médicale"); // La séquence SQL est remplacée par une fonction $sqlcmd = "SELECT pmsi.cti_ventilation_ca_um()"; $toResult = execute_sql($sqlcmd); commit_trans(); // Mise a jour des taux de remboursements logInfoMsg("Mise a jour des taux de remboursements"); // Depuis vidhosp $sqlcmd = "UPDATE pmsi.p_rsf_total SET taux_remboursement = p_vidhosp.taux_remboursement_utilise FROM pmsi.p_vidhosp WHERE p_rsf_total.rss_id = p_vidhosp.rss_id AND p_rsf_total.taux_remboursement IS DISTINCT FROM p_vidhosp.taux_remboursement_utilise;"; $toResult = execute_sql($sqlcmd); commit_trans(); // Depuis les prestations (si pas vidhosp) $sqlcmd = "UPDATE pmsi.p_rsf_total SET taux_remboursement = subview.taux_remboursement FROM (SELECT p_rss.oid AS rss_id, subview.taux_remboursement FROM pmsi.p_rss LEFT JOIN pmsi.p_vidhosp ON p_rss.oid = p_vidhosp.rss_id JOIN pmsi.p_rsf_total on p_rss.oid = p_rsf_total.rss_id and en_cours = '0' JOIN ( SELECT p_rss.oid AS rss_id, COALESCE(max(p_rsf_detail.taux_remboursement),0) AS taux_remboursement, MAX(CASE WHEN p_rsf_detail.rss_id IS NULL THEN 0 ELSE 1 END) AS has_rsf FROM pmsi.p_rss LEFT JOIN pmsi.p_rsf_detail ON p_rss.oid = p_rsf_detail.rss_id GROUP BY 1 ) subview ON p_rsf_total.rss_id = subview.rss_id WHERE p_rsf_total.taux_remboursement <> subview.taux_remboursement AND (subview.taux_remboursement <> 0 OR has_rsf = 0) AND p_vidhosp.rss_id IS NULL ) subview WHERE p_rsf_total.rss_id = subview.rss_id;"; $toResult = execute_sql($sqlcmd); commit_trans(); /******************************************************** * * Mise à jour du GHS dans le RSS * *******************************************************/ logInfoMsg("Mise à jour du GHS dans le RSS"); // Pour tous les séjours hors séances avec un GHM et sans GHS (GHS 0000), le GHM est placé à 9999 $sqlcmd = "UPDATE pmsi.p_rss SET ghs_id = (SELECT oid from pmsi.t_ghs where code = 9999) WHERE ghm_id <> 0 AND ghs_id = 0 AND ghm_id NOT IN (SELECT oid from pmsi.T_ghm where code LIKE '28%');"; $toResult = execute_sql($sqlcmd); commit_trans(); // GHS 9602 pour les séjours de séances 28Z01Z avec GHS 0000 $sqlcmd = "UPDATE pmsi.p_rss SET ghs_id = (SELECT oid from pmsi.t_ghs where code = 9602) WHERE ghm_id <> 0 AND ghs_id = (SELECT oid from pmsi.t_ghs where code = 0000) AND ghm_id IN (SELECT oid from pmsi.T_ghm where code LIKE '28Z01Z');"; $toResult = execute_sql($sqlcmd); commit_trans(); // GHS 9603 pour les séjours de séances 28Z02Z avec GHS 0000 $sqlcmd = "UPDATE pmsi.p_rss SET ghs_id = (SELECT oid from pmsi.t_ghs where code = 9603) WHERE ghm_id <> 0 AND ghs_id = (SELECT oid from pmsi.t_ghs where code = 0000) AND ghm_id IN (SELECT oid from pmsi.T_ghm where code LIKE '28Z02Z');"; $toResult = execute_sql($sqlcmd); commit_trans(); // GHS 9604 pour les séjours de séances 28Z03Z avec GHS 0000 $sqlcmd = "UPDATE pmsi.p_rss SET ghs_id = (SELECT oid from pmsi.t_ghs where code = 9604) WHERE ghm_id <> 0 AND ghs_id = (SELECT oid from pmsi.t_ghs where code = 0000) AND ghm_id IN (SELECT oid from pmsi.T_ghm where code LIKE '28Z03Z');"; $toResult = execute_sql($sqlcmd); commit_trans(); // GHS 9605 pour les séjours de séances 28Z04Z avec GHS 0000, réalisés en dehors d'une UM avec autorisation 22 (centre pour enfants) $sqlcmd = "UPDATE pmsi.p_rss SET ghs_id = (SELECT oid from pmsi.t_ghs where code = 9605) WHERE ghm_id <> 0 AND ghs_id = (SELECT oid from pmsi.t_ghs where code = 0000) AND ghm_id IN (SELECT oid from pmsi.T_ghm where code LIKE '28Z04Z') AND unite_medicale_principale_id IN (SELECT oid FROM pmsi.t_unites_medicales WHERE type_autorisation IS DISTINCT FROM '22');"; $toResult = execute_sql($sqlcmd); commit_trans(); // GHS 9617 pour les séjours de séances 28Z04Z avec GHS 0000, réalisés dans une UM avec autorisation 22 (centre pour enfants) $sqlcmd = "UPDATE pmsi.p_rss SET ghs_id = (SELECT oid from pmsi.t_ghs where code = 9617) WHERE ghm_id <> 0 AND ghs_id = (SELECT oid from pmsi.t_ghs where code = 0000) AND ghm_id IN (SELECT oid from pmsi.T_ghm where code LIKE '28Z04Z') AND unite_medicale_principale_id IN (SELECT oid FROM pmsi.t_unites_medicales WHERE type_autorisation = '22');"; $toResult = execute_sql($sqlcmd); commit_trans(); // Réport du GHS de la mère dans le RSS // Dans les RSF détail, on ne sélectionne que les lignes avec un GHS de mise au monde. Dans les lignes qu'il reste, prend le GHS // de celle qui présente la base de remboursement la plus élevée (BR de la mère est toujours la plus élevée) $sqlcmd = "UPDATE pmsi.p_rss SET ghs_id = subview.ghs_id FROM ( SELECT rss_id, (max(Array [base_remboursement, ghs_id])) [2]::BIGINT AS ghs_id FROM pmsi.p_rsf_detail WHERE p_rsf_detail.ghs_id IN (SELECT to_id FROM pmsi.t_listes_contenu JOIN pmsi.t_listes on t_listes.oid = t_listes_contenu.liste_id WHERE code = 'CTI_GHS_NN') GROUP BY 1 ORDER BY 1 ) subview WHERE subview.rss_id = p_rss.oid;"; $toResult = execute_sql($sqlcmd); commit_trans(); // On récupère le GHS du bébé depuis la facture de la mère $sqlcmd = " WITH w_bb AS ( SELECT oid as rss_bb_id, rss_mere_id FROM pmsi.p_rss WHERE rss_mere_id <> 0 ), w_ghs_bb AS ( SELECT rss_bb_id, w_rsf_mere.ghs_id FROM pmsi.p_rsf_detail w_rsf_mere JOIN w_bb ON rss_mere_id = w_rsf_mere.rss_id JOIN pmsi.t_ghs ON w_rsf_mere.ghs_id = t_ghs.oid JOIN pmsi.t_ghm ON t_ghs.ghm_id = t_ghm.oid WHERE t_ghm.code LIKE '15%' AND w_rsf_mere.est_ligne_rss = '1' ) UPDATE pmsi.p_rss SET ghs_id = w_ghs_bb.ghs_id FROM pmsi.t_ghs, w_ghs_bb WHERE t_ghs.oid = p_rss.ghs_id AND p_rss.oid = rss_bb_id AND t_ghs.code = 9999; "; $toResult = execute_sql($sqlcmd); commit_trans(); // Réport du GHS du bébé dans le RSS si non trouvé dans la facture // Pour les séjours dans la CMD 15 qui ont un GHS à 9999, on prend le GHS du GHM $sqlcmd = "UPDATE pmsi.p_rss SET ghs_id = subview.ghs_id FROM ( SELECT p_rss.oid as rss_id, ghs_new.oid as ghs_id FROM pmsi.p_rss JOIN pmsi.t_ghm ON t_ghm.oid = p_rss.ghm_id JOIN pmsi.t_ghs ghs_new ON ghs_new.ghm_id = t_ghm.oid JOIN pmsi.t_ghs ghs_ori ON ghs_ori.oid = p_rss.ghs_id WHERE t_ghm.code like '15%' AND ghs_ori.code = 9999 ) subview WHERE subview.rss_id = p_rss.oid AND p_rss.ghs_id <> subview.ghs_id;"; $toResult = execute_sql($sqlcmd); commit_trans(); // transformation unités médicales $sqlcmd = "SELECT pmsi.cti_transform_um();"; $toResult = execute_sql($sqlcmd); commit_trans(); $sqlcmd = "SELECT pmsi.cti_transform_um();"; $toResult = execute_sql($sqlcmd); commit_trans(); // Recherche etat dossier (groupage facturation) get_etat_dossier(); // Marquage des séjours selon les critères des Indicateurs de Pilotage des Activités de soins autorisés (IPA) estampillage_ipa(); // Calcul d'indicateurs de maternité set_maternite(); // Traitement des séjours selon prestations SRC set_src(); // Traitement des séjours selon prestations REA set_rea(); // Traitement sur les gestes marqueurs set_gestes_marqueurs(); // Traitement sur cancero set_cancero(); // Traitement Etude Cardio set_etude_cardio(); // Prétraitements études set_etudes(); // Calcul d'indicateurs sur les RSS utiles au calcul des indicateurs SAE set_sae(); // Execution règles Expert if ($omitExpert == false) { expert_execute_rules(); } else { logInfoMsg("Omission de l'exécution règles EXPERT"); } // Calcul des stats mat2a (rsa transmins, rsa tratés...) concernant l'import stats_mat2a($import_id); // Màj de NOWCLOTURE. $sqlcmd = " SELECT pmsi.cti_now('NOW','FORCE'); SELECT pmsi.cti_now('NOWCLOTURE','FORCE')"; $toResult = execute_sql($sqlcmd); commit_trans(); $toResult = execute_sql($sqlcmd); commit_trans(); logInfoMsg("FIN TRAITEMENTS FINAUX. $nbE erreurs."); } function generation_validation() { global $import_id; logInfoMsg("VALIDATION GENERATION"); begin_trans(); $nbE = 0; logInfoMsg("Suppression dossiers précédents"); // Les dossiers en-cours non expédiés ne doivent pas être supprimés $sqlcmd = "UPDATE pmsi.p_rss set etat = '' WHERE etat = 'S' AND en_cours = '1' AND no_rss NOT IN (SELECT no_rss FROM pmsi.p_rss WHERE import_id = $import_id); "; execute_sql($sqlcmd, $nbE, $nbW ); $sqlcmd = << 3) { $BUF_record["no_patient"] = $array[3] + 0; $BUF_record["no_patient_offset"] = $BUF_record["prenom_offset"] + $BUF_record["prenom_len"] + 1; $BUF_record["no_patient_len"] = strlen($array[3]); } return $BUF_record; } function read_actmed_line($buffer) { global $fmt_actemed; $BUF_record = array(); $buffer = Encoding::removeBOM($buffer); $BUF_record["type_enregistrement"] = ""; $buffer = str_ireplace(";", "\t", $buffer); $array = split("\t", $buffer); if ($fmt_actemed != 1 && $fmt_actemed != 2) { $fmt_actemed = 1; if (count($array) < 10) { $fmt_actemed = 1; } else { if (controle_check_date(trim($array[6]),$fil1,$fil2)) { $fmt_actemed = 1; } else { $fmt_actemed = 2; } } } // Standard if ($fmt_actemed == 1) { $BUF_record["no_rss"] = trim($array[0]); $BUF_record["no_rss_offset"] = 0; $BUF_record["no_rss_len"] = strlen($array[0]); $BUF_record["code_medecin"] = trim(substr(trim($array[1]),0,8)); $BUF_record["code_medecin_offset"] = $BUF_record["no_rss_offset"] + $BUF_record["no_rss_len"] + 1; $BUF_record["code_medecin_len"] = strlen($array[1]); $BUF_record["code_acte"] = trim($array[2]); $BUF_record["code_acte_offset"] = $BUF_record["code_medecin_offset"] + $BUF_record["code_medecin_len"]+ 1; $BUF_record["code_acte_len"] = strlen($array[2]); $BUF_record["activite_ccam"] = trim($array[3]); $BUF_record["activite_ccam_offset"] = $BUF_record["code_acte_offset"] + $BUF_record["code_acte_len"]+ 1; $BUF_record["activite_ccam_len"] = strlen($array[3]); $BUF_record["phase_ccam"] = trim($array[4]); $BUF_record["phase_ccam_offset"] = $BUF_record["activite_ccam_offset"] + $BUF_record["activite_ccam_len"]+ 1; $BUF_record["phase_ccamlen"] = strlen($array[4]); $BUF_record["unite_medicale"] = trim($array[5]); $BUF_record["unite_medicale_offset"] = $BUF_record["phase_ccam_offset"] + $BUF_record["phase_ccam_len"]+ 1; $BUF_record["unite_medicale_len"] = strlen($array[5]); $BUF_record["date_acte"] = trim($array[6]); $BUF_record["date_acte_offset"] = $BUF_record["unite_medicale_offset"] + $BUF_record["unite_medicale_len"]+ 1; $BUF_record["date_acte_len"] = strlen($array[6]); $BUF_record["nombre"] = trim($array[7]); $BUF_record["nombre_offset"] = $BUF_record["date_acte_offset"] + $BUF_record["date_acte_len"]+ 1; $BUF_record["nombre_len"] = strlen($array[7]); $BUF_record["no_rum"] = trim($array[8]); $BUF_record["no_rum_offset"] = $BUF_record["nombre_offset"] + $BUF_record["nombre_len"]+ 1; $BUF_record["no_rum_len"] = strlen($array[8]); } // CEGI else { $BUF_record["no_rss"] = trim($array[0]); $BUF_record["no_rss_offset"] = 0; $BUF_record["no_rss_len"] = strlen($array[0]); $BUF_record["code_medecin"] = trim(substr(trim($array[1]),0,8)); $BUF_record["code_medecin_offset"] = $BUF_record["no_rss_offset"] + $BUF_record["no_rss_len"]+ 1; $BUF_record["code_medecin_len"] = strlen($array[1]); $BUF_record["code_acte"] = trim($array[2]); $BUF_record["code_acte_offset"] = $BUF_record["code_medecin_offset"] + $BUF_record["code_medecin_len"]+ 1; $BUF_record["code_acte_len"] = strlen($array[2]); $BUF_record["activite_ccam"] = trim($array[3]); $BUF_record["activite_ccam_offset"] = $BUF_record["code_acte_offset"] + $BUF_record["code_acte_len"]+ 1; $BUF_record["activite_ccam_len"] = strlen($array[3]); $BUF_record["phase_ccam"] = trim($array[4]); $BUF_record["phase_ccam_offset"] = $BUF_record["activite_ccam_offset"] + $BUF_record["activite_ccam_len"]+ 1; $BUF_record["phase_ccamlen"] = strlen($array[4]); $BUF_record["date_acte"] = trim($array[5]); $BUF_record["date_acte_offset"] = $BUF_record["phase_ccam_offset"] + $BUF_record["phase_ccam_len"]+ 1; $BUF_record["date_acte_len"] = strlen($array[5]); $BUF_record["heure_acte"] = trim($array[5]); $BUF_record["heure_acte_offset"] = $BUF_record["date_acte_offset"] + $BUF_record["date_acte_len"]+ 1; $BUF_record["heure_acte_len"] = strlen($array[6]); $BUF_record["modif1"] = trim($array[7]); $BUF_record["modif1_offset"] = $BUF_record["heure_acte_offset"] + $BUF_record["heure_acte_len"]+ 1; $BUF_record["modif1_len"] = strlen($array[7]); $BUF_record["modif2"] = trim($array[8]); $BUF_record["modif2_offset"] = $BUF_record["modif1_offset"] + $BUF_record["modif1_len"]+ 1; $BUF_record["modif2_len"] = strlen($array[8]); $BUF_record["modif3"] = trim($array[9]); $BUF_record["modif3_offset"] = $BUF_record["modif2_offset"] + $BUF_record["modif2_len"]+ 1; $BUF_record["modif3_len"] = strlen($array[9]); $BUF_record["modif4"] = trim($array[10]); $BUF_record["modif4_offset"] = $BUF_record["modif3_offset"] + $BUF_record["modif3_len"]+ 1; $BUF_record["modif4_len"] = strlen($array[10]); $BUF_record["ass"] = trim($array[11]); $BUF_record["ass_offset"] = $BUF_record["modif4_offset"] + $BUF_record["modif4_len"]+ 1; $BUF_record["ass_len"] = strlen($array[11]); $BUF_record["remb"] = trim($array[12]); $BUF_record["remb_offset"] = $BUF_record["ass_offset"] + $BUF_record["ass_len"]+ 1; $BUF_record["remb_len"] = strlen($array[12]); } if ($BUF_record["code_medecin"] != "") { $BUF_record["type_enregistrement"] = "ACTMED"; } return $BUF_record; } function read_rum_line($buffer, $qAD = TRUE) { global $last_BUF_rss; global $last_BUF_rum; global $rss_offsets_122; global $rss_offsets_121; global $rss_offsets_120; global $rss_offsets_119; global $rss_offsets_117; global $rss_offsets_114; global $rss_offsets_113; global $rss_offsets_111; global $rss_offsets_110; global $rss_offsets_109; $BUF_record = array(); $buffer = Encoding::removeBOM($buffer); if (is_entete_empty($buffer)){ $BUF_record["type_enregistrement"] = "ENTETE"; return $BUF_record; } if (trim(substr($buffer, 27, 5) == "NRSS0")) { $BUF_record["type_enregistrement"] = "NONE"; return $BUF_record; } $BUF_record["type_enregistrement"] = "RUM"; $BUF_record["actes"] = array(); $BUF_record["diags"] = array(); $BUF_record["diagsdoc"] = array(); $BUF_record["version_groupage"] = trim(substr($buffer, 0, 2)); $BUF_record["ghm"] = trim(substr($buffer, 2, 6)); $BUF_record["version_format"] = trim(substr($buffer, 9, 3)); $BUF_record["groupage_retour"] = trim(substr($buffer, 12, 3)); $BUF_record["finess"] = trim(substr($buffer, 15, 9)); $BUF_record["version_format_rum"] = trim(substr($buffer, 24, 3)); $BUF_record["no_rss"] = ""; $BUF_record["fmt_error"] = ""; // Correction si pb 114 avec actes longueur 2 if ($BUF_record["version_format"] == "114") { $char = trim(substr($buffer, 131, 1)); if ($char >= "A" && $char <= "Z" && $char != "") { $BUF_record["version_format"] = "113"; $BUF_record["fmt_error"] = "Format 114 indiqué mais formaté comme le format 113"; } } // Initialisation des champs $BUF_record["age_gestationnel"] = ""; $BUF_record["annee_ivg_precedente"] = "0000"; $BUF_record["code_postal"] = ""; $BUF_record["confirmation_codage"] = ""; $BUF_record["date_dernieres_regles"] = ""; $BUF_record["date_entree"] = ""; $BUF_record["date_naissance"] = ""; $BUF_record["date_sortie"]= ""; $BUF_record["destination"] = ""; $BUF_record["diagnostic_principal"] = ""; $BUF_record["diagnostic_relie"] = ""; $BUF_record["igs2"] = "000"; $BUF_record["mode_entree"] = ""; $BUF_record["mode_sortie"] = ""; $BUF_record["passage_urgences"] = ""; $BUF_record["no_rss"] = ""; $BUF_record["no_rum"] = ""; $BUF_record["no_sejour_administratif"] = ""; $BUF_record["nombre_actes"] = "00"; $BUF_record["nombre_diagnostics"] = ""; $BUF_record["nombre_donnees_documentaires"] = ""; $BUF_record["nombre_ivg_anterieures"] = "00"; $BUF_record["nombre_naissances_vivantes_anterieures"] = "00"; $BUF_record["nombre_seances"] = ""; $BUF_record["numero_innovation"] = ""; $BUF_record["poids_bebe"] = ""; $BUF_record["provenance"] = ""; $BUF_record["sexe"] = ""; $BUF_record["type_autorisation_lit"] = ""; $BUF_record["type_autorisation_um"] = ""; $BUF_record["type_dosimetrie"] = ""; $BUF_record["type_machine_rdth"] = ""; $BUF_record["unite_medicale"] = ""; $BUF_record["filler"] = ""; $BUF_record["conversion_hp_hc"] = ""; // 1:conversion HP-HC | 2:pas de conversion | blanc $BUF_record["raac"] = ""; // 1:prise en charge RAAC | 2:pas de prise en charge | blanc switch ($BUF_record["version_format"]) { // Format 109 CDAM paas d'acte case "109" : $BUF_record["BUF_offsets"] = $rss_offsets_109; $BUF_record["no_rss"] = trim(substr($buffer, 27, 7)); $BUF_record["no_sejour_administratif"] = ""; if ($last_BUF_rss !== $BUF_record["no_rss"]) { $last_BUF_rum = 0; $last_BUF_rss = $BUF_record["no_rss"]; } $last_BUF_rum++; $BUF_record["no_rum"] = $last_BUF_rum; $BUF_record["date_naissance"] = trim(substr($buffer, 34, 8)); $BUF_record["sexe"] = trim(substr($buffer, 42, 1)); $BUF_record["unite_medicale"] = trim(substr($buffer, 43, 4)); $BUF_record["date_entree"] = trim(substr($buffer, 47, 8)); $BUF_record["mode_entree"] = trim(substr($buffer, 55, 1)); $BUF_record["provenance"] = trim(substr($buffer, 56, 1)); $BUF_record["date_sortie"] = trim(substr($buffer, 57, 8)); $BUF_record["mode_sortie"] = trim(substr($buffer, 65, 1)); $BUF_record["destination"] = trim(substr($buffer, 66, 1)); $BUF_record["code_postal"] = substr($buffer, 67, 5); $BUF_record["poids_bebe"] = trim(substr($buffer, 72, 4)); $BUF_record["nombre_seances"] = trim(substr($buffer, 76, 2)); $BUF_record["nombre_diagnostics"] = trim(substr($buffer, 78, 2)); $BUF_record["nombre_donnees_documentaires"] = trim(substr($buffer, 80, 2)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 84, 8)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 92, 8)); $BUF_record["igs2"] = trim(substr($buffer, 100, 3)); $BUF_start = 118; break; case "110" : $BUF_record["BUF_offsets"] = $rss_offsets_110; $BUF_record["no_rss"] = trim(substr($buffer, 27, 7)); $BUF_record["no_sejour_administratif"] = ""; if ($last_BUF_rss !== $BUF_record["no_rss"]) { $last_BUF_rum = 0; $last_BUF_rss = $BUF_record["no_rss"]; } $last_BUF_rum++; $BUF_record["no_rum"] = $last_BUF_rum; $BUF_record["date_naissance"] = trim(substr($buffer, 34, 8)); $BUF_record["sexe"] = trim(substr($buffer, 42, 1)); $BUF_record["unite_medicale"] = trim(substr($buffer, 43, 4)); $BUF_record["date_entree"] = trim(substr($buffer, 47, 8)); $BUF_record["mode_entree"] = trim(substr($buffer, 55, 1)); $BUF_record["provenance"] = trim(substr($buffer, 56, 1)); $BUF_record["date_sortie"] = trim(substr($buffer, 57, 8)); $BUF_record["mode_sortie"] = trim(substr($buffer, 65, 1)); $BUF_record["destination"] = trim(substr($buffer, 66, 1)); $BUF_record["code_postal"] = substr($buffer, 67, 5); $BUF_record["poids_bebe"] = trim(substr($buffer, 72, 4)); $BUF_record["nombre_seances"] = trim(substr($buffer, 76, 2)); $BUF_record["nombre_diagnostics"] = trim(substr($buffer, 78, 2)); $BUF_record["nombre_donnees_documentaires"] = trim(substr($buffer, 80, 2)); $BUF_record["nombre_actes"] = trim(substr($buffer, 82, 2)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 84, 8)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 92, 8)); $BUF_record["igs2"] = trim(substr($buffer, 100, 3)); $BUF_start = 118; break; case "111" : $BUF_record["BUF_offsets"] = $rss_offsets_111; $BUF_record["no_rss"] = trim(substr($buffer, 27, 7)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 34, 20)); if ($last_BUF_rss !== $BUF_record["no_rss"]) { $last_BUF_rum = 0; $last_BUF_rss = $BUF_record["no_rss"]; } $last_BUF_rum++; $BUF_record["no_rum"] = $last_BUF_rum; $BUF_record["date_naissance"] = trim(substr($buffer, 54, 8)); $BUF_record["sexe"] = trim(substr($buffer, 62, 1)); $BUF_record["unite_medicale"] = trim(substr($buffer, 63, 4)); $BUF_record["type_autorisation_um"] = trim(substr($buffer, 67, 2)); $BUF_record["type_autorisation_lit"] = trim(substr($buffer, 69, 2)); $BUF_record["date_entree"] = trim(substr($buffer, 72, 8)); $BUF_record["mode_entree"] = trim(substr($buffer, 80, 1)); $BUF_record["provenance"] = trim(substr($buffer, 81, 1)); $BUF_record["date_sortie"] = trim(substr($buffer, 82, 8)); $BUF_record["mode_sortie"] = trim(substr($buffer, 90, 1)); $BUF_record["destination"] = trim(substr($buffer, 91, 1)); $BUF_record["code_postal"] = substr($buffer, 92, 5); $BUF_record["poids_bebe"] = trim(substr($buffer, 97, 4)); $BUF_record["nombre_seances"] = trim(substr($buffer, 101, 2)); $BUF_record["nombre_diagnostics"] = trim(substr($buffer, 103, 2)); $BUF_record["nombre_donnees_documentaires"] = trim(substr($buffer, 105, 2)); $BUF_record["nombre_actes"] = trim(substr($buffer, 107, 2)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 109, 8)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 117, 8)); $BUF_record["igs2"] = trim(substr($buffer, 125, 3)); $BUF_start = 143; break; case "113" : $BUF_record["BUF_offsets"] = $rss_offsets_113; $BUF_record["no_rss"] = trim(substr($buffer, 27, 20)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 47, 20)); $BUF_record["no_rum"] = trim(substr($buffer, 67, 10)); if ($last_BUF_rss !== $BUF_record["no_rss"]) { $last_BUF_rum = 0; $last_BUF_rss = $BUF_record["no_rss"]; } $last_BUF_rum++; $BUF_record["no_rum"] = $last_BUF_rum; $BUF_record["date_naissance"] = trim(substr($buffer, 77, 8)); $BUF_record["sexe"] = trim(substr($buffer, 85, 1)); $BUF_record["unite_medicale"] = trim(substr($buffer, 86, 4)); $BUF_record["type_autorisation_lit"] = trim(substr($buffer, 90, 2)); $BUF_record["date_entree"] = trim(substr($buffer, 92, 8)); $BUF_record["mode_entree"] = trim(substr($buffer, 100, 1)); $BUF_record["provenance"] = trim(substr($buffer, 101, 1)); $BUF_record["date_sortie"]= trim(substr($buffer, 102, 8)); $BUF_record["mode_sortie"] = trim(substr($buffer, 110, 1)); $BUF_record["destination"] = trim(substr($buffer, 111, 1)); $BUF_record["code_postal"] = substr($buffer, 112, 5); $BUF_record["poids_bebe"] = trim(substr($buffer, 117, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 121, 2)); $BUF_record["nombre_seances"] = trim(substr($buffer, 123, 2)); $BUF_record["nombre_diagnostics"] = trim(substr($buffer, 125, 2)); $BUF_record["nombre_donnees_documentaires"] = trim(substr($buffer, 127, 2)); $BUF_record["nombre_actes"] = trim(substr($buffer, 129, 2)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 131, 8)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 139, 8)); $BUF_record["igs2"] = trim(substr($buffer, 147, 3)); $BUF_start = 165; break; case "114" : $BUF_record["BUF_offsets"] = $rss_offsets_114; $BUF_record["no_rss"] = trim(substr($buffer, 27, 20)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 47, 20)); $BUF_record["no_rum"] = trim(substr($buffer, 67, 10)); if ($last_BUF_rss !== $BUF_record["no_rss"]) { $last_BUF_rum = 0; $last_BUF_rss = $BUF_record["no_rss"]; } $last_BUF_rum++; $BUF_record["no_rum"] = $last_BUF_rum; $BUF_record["date_naissance"] = trim(substr($buffer, 77, 8)); $BUF_record["sexe"] = trim(substr($buffer, 85, 1)); $BUF_record["unite_medicale"] = trim(substr($buffer, 86, 4)); $BUF_record["type_autorisation_lit"] = trim(substr($buffer, 90, 2)); $BUF_record["date_entree"] = trim(substr($buffer, 92, 8)); $BUF_record["mode_entree"] = trim(substr($buffer, 100, 1)); $BUF_record["provenance"] = trim(substr($buffer, 101, 1)); $BUF_record["date_sortie"]= trim(substr($buffer, 102, 8)); $BUF_record["mode_sortie"] = trim(substr($buffer, 110, 1)); $BUF_record["destination"] = trim(substr($buffer, 111, 1)); $BUF_record["code_postal"] = substr($buffer, 112, 5); $BUF_record["poids_bebe"] = trim(substr($buffer, 117, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 121, 2)); $BUF_record["nombre_seances"] = trim(substr($buffer, 123, 2)); $BUF_record["nombre_diagnostics"] = trim(substr($buffer, 125, 2)); $BUF_record["nombre_donnees_documentaires"] = trim(substr($buffer, 127, 2)); $BUF_record["nombre_actes"] = trim(substr($buffer, 129, 3)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 132, 8)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 140, 8)); $BUF_record["igs2"] = trim(substr($buffer, 148, 3)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 151, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 152, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 153, 1)); $BUF_start = 165; break; case "115" : $BUF_record["BUF_offsets"] = $rss_offsets_114; $BUF_record["no_rss"] = trim(substr($buffer, 27, 20)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 47, 20)); $BUF_record["no_rum"] = trim(substr($buffer, 67, 10)); if ($last_BUF_rss !== $BUF_record["no_rss"]) { $last_BUF_rum = 0; $last_BUF_rss = $BUF_record["no_rss"]; } $last_BUF_rum++; $BUF_record["no_rum"] = $last_BUF_rum; $BUF_record["date_naissance"] = trim(substr($buffer, 77, 8)); $BUF_record["sexe"] = trim(substr($buffer, 85, 1)); $BUF_record["unite_medicale"] = trim(substr($buffer, 86, 4)); $BUF_record["type_autorisation_lit"] = trim(substr($buffer, 90, 2)); $BUF_record["date_entree"] = trim(substr($buffer, 92, 8)); $BUF_record["mode_entree"] = trim(substr($buffer, 100, 1)); $BUF_record["provenance"] = trim(substr($buffer, 101, 1)); $BUF_record["date_sortie"]= trim(substr($buffer, 102, 8)); $BUF_record["mode_sortie"] = trim(substr($buffer, 110, 1)); $BUF_record["destination"] = trim(substr($buffer, 111, 1)); $BUF_record["code_postal"] = substr($buffer, 112, 5); $BUF_record["poids_bebe"] = trim(substr($buffer, 117, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 121, 2)); $BUF_record["nombre_seances"] = trim(substr($buffer, 123, 2)); $BUF_record["nombre_diagnostics"] = trim(substr($buffer, 125, 2)); $BUF_record["nombre_donnees_documentaires"] = trim(substr($buffer, 127, 2)); $BUF_record["nombre_actes"] = trim(substr($buffer, 129, 3)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 132, 8)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 140, 8)); $BUF_record["igs2"] = trim(substr($buffer, 148, 3)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 151, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 152, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 153, 1)); $BUF_start = 165; break; case "116" : $BUF_record["BUF_offsets"] = $rss_offsets_114; $BUF_record["no_rss"] = trim(substr($buffer, 27, 20)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 47, 20)); $BUF_record["no_rum"] = trim(substr($buffer, 67, 10)); if ($last_BUF_rss !== $BUF_record["no_rss"]) { $last_BUF_rum = 0; $last_BUF_rss = $BUF_record["no_rss"]; } $last_BUF_rum++; $BUF_record["no_rum"] = $last_BUF_rum; $BUF_record["date_naissance"] = trim(substr($buffer, 77, 8)); $BUF_record["sexe"] = trim(substr($buffer, 85, 1)); $BUF_record["unite_medicale"] = trim(substr($buffer, 86, 4)); $BUF_record["type_autorisation_lit"] = trim(substr($buffer, 90, 2)); $BUF_record["date_entree"] = trim(substr($buffer, 92, 8)); $BUF_record["mode_entree"] = trim(substr($buffer, 100, 1)); $BUF_record["provenance"] = trim(substr($buffer, 101, 1)); $BUF_record["date_sortie"]= trim(substr($buffer, 102, 8)); $BUF_record["mode_sortie"] = trim(substr($buffer, 110, 1)); $BUF_record["destination"] = trim(substr($buffer, 111, 1)); $BUF_record["code_postal"] = substr($buffer, 112, 5); $BUF_record["poids_bebe"] = trim(substr($buffer, 117, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 121, 2)); $BUF_record["date_dernieres_regles"] = trim(substr($buffer, 123, 8)); $BUF_record["nombre_seances"] = trim(substr($buffer, 131, 2)); $BUF_record["nombre_diagnostics"] = trim(substr($buffer, 133, 2)); $BUF_record["nombre_donnees_documentaires"] = trim(substr($buffer, 135, 2)); $BUF_record["nombre_actes"] = trim(substr($buffer, 137, 3)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 140, 8)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 148, 8)); $BUF_record["igs2"] = trim(substr($buffer, 156, 3)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 159, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 160, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 161, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 162, 15)); $BUF_start = 192; break; case "117" : $BUF_record["BUF_offsets"] = $rss_offsets_117; $BUF_record["no_rss"] = trim(substr($buffer, 27, 20)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 47, 20)); $BUF_record["no_rum"] = trim(substr($buffer, 67, 10)); if ($last_BUF_rss !== $BUF_record["no_rss"]) { $last_BUF_rum = 0; $last_BUF_rss = $BUF_record["no_rss"]; } $last_BUF_rum++; $BUF_record["no_rum"] = $last_BUF_rum; $BUF_record["date_naissance"] = trim(substr($buffer, 77, 8)); $BUF_record["sexe"] = trim(substr($buffer, 85, 1)); $BUF_record["unite_medicale"] = trim(substr($buffer, 86, 4)); $BUF_record["type_autorisation_lit"] = trim(substr($buffer, 90, 2)); $BUF_record["date_entree"] = trim(substr($buffer, 92, 8)); $BUF_record["mode_entree"] = trim(substr($buffer, 100, 1)); $BUF_record["provenance"] = trim(substr($buffer, 101, 1)); $BUF_record["date_sortie"]= trim(substr($buffer, 102, 8)); $BUF_record["mode_sortie"] = trim(substr($buffer, 110, 1)); $BUF_record["destination"] = trim(substr($buffer, 111, 1)); $BUF_record["code_postal"] = substr($buffer, 112, 5); $BUF_record["poids_bebe"] = trim(substr($buffer, 117, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 121, 2)); $BUF_record["date_dernieres_regles"] = trim(substr($buffer, 123, 8)); $BUF_record["nombre_seances"] = trim(substr($buffer, 131, 2)); $BUF_record["nombre_diagnostics"] = trim(substr($buffer, 133, 2)); $BUF_record["nombre_donnees_documentaires"] = trim(substr($buffer, 135, 2)); $BUF_record["nombre_actes"] = trim(substr($buffer, 137, 3)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 140, 8)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 148, 8)); $BUF_record["igs2"] = trim(substr($buffer, 156, 3)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 159, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 160, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 161, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 162, 15)); $BUF_record["nombre_ivg_anterieures"] = trim(substr($buffer, 177, 2)); $BUF_record["annee_ivg_precedente"] = trim(substr($buffer, 179, 4)); $BUF_record["nombre_naissances_vivantes_anterieures"] = trim(substr($buffer, 187, 2)); $BUF_record["filler"] = trim(substr($buffer, 189, 3)); $BUF_start = 192; break; case "118" : $BUF_record["BUF_offsets"] = $rss_offsets_117; $BUF_record["no_rss"] = trim(substr($buffer, 27, 20)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 47, 20)); $BUF_record["no_rum"] = trim(substr($buffer, 67, 10)); if ($last_BUF_rss !== $BUF_record["no_rss"]) { $last_BUF_rum = 0; $last_BUF_rss = $BUF_record["no_rss"]; } $last_BUF_rum++; $BUF_record["no_rum"] = $last_BUF_rum; $BUF_record["date_naissance"] = trim(substr($buffer, 77, 8)); $BUF_record["sexe"] = trim(substr($buffer, 85, 1)); $BUF_record["unite_medicale"] = trim(substr($buffer, 86, 4)); $BUF_record["type_autorisation_lit"] = trim(substr($buffer, 90, 2)); $BUF_record["date_entree"] = trim(substr($buffer, 92, 8)); $BUF_record["mode_entree"] = trim(substr($buffer, 100, 1)); $BUF_record["provenance"] = trim(substr($buffer, 101, 1)); $BUF_record["date_sortie"]= trim(substr($buffer, 102, 8)); $BUF_record["mode_sortie"] = trim(substr($buffer, 110, 1)); $BUF_record["destination"] = trim(substr($buffer, 111, 1)); $BUF_record["code_postal"] = substr($buffer, 112, 5); $BUF_record["poids_bebe"] = trim(substr($buffer, 117, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 121, 2)); $BUF_record["date_dernieres_regles"] = trim(substr($buffer, 123, 8)); $BUF_record["nombre_seances"] = trim(substr($buffer, 131, 2)); $BUF_record["nombre_diagnostics"] = trim(substr($buffer, 133, 2)); $BUF_record["nombre_donnees_documentaires"] = trim(substr($buffer, 135, 2)); $BUF_record["nombre_actes"] = trim(substr($buffer, 137, 3)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 140, 8)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 148, 8)); $BUF_record["igs2"] = trim(substr($buffer, 156, 3)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 159, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 160, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 161, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 162, 15)); $BUF_record["filler"] = trim(substr($buffer, 177, 12)); $BUF_start = 192; break; case "119" : $BUF_record["BUF_offsets"] = $rss_offsets_119; $BUF_record["no_rss"] = trim(substr($buffer, 27, 20)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 47, 20)); $BUF_record["no_rum"] = trim(substr($buffer, 67, 10)); if ($last_BUF_rss !== $BUF_record["no_rss"]) { $last_BUF_rum = 0; $last_BUF_rss = $BUF_record["no_rss"]; } $last_BUF_rum++; $BUF_record["no_rum"] = $last_BUF_rum; $BUF_record["date_naissance"] = trim(substr($buffer, 77, 8)); $BUF_record["sexe"] = trim(substr($buffer, 85, 1)); $BUF_record["unite_medicale"] = trim(substr($buffer, 86, 4)); $BUF_record["type_autorisation_lit"] = trim(substr($buffer, 90, 2)); $BUF_record["date_entree"] = trim(substr($buffer, 92, 8)); $BUF_record["mode_entree"] = trim(substr($buffer, 100, 1)); $BUF_record["provenance"] = trim(substr($buffer, 101, 1)); $BUF_record["date_sortie"]= trim(substr($buffer, 102, 8)); $BUF_record["mode_sortie"] = trim(substr($buffer, 110, 1)); $BUF_record["destination"] = trim(substr($buffer, 111, 1)); $BUF_record["code_postal"] = substr($buffer, 112, 5); $BUF_record["poids_bebe"] = trim(substr($buffer, 117, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 121, 2)); $BUF_record["date_dernieres_regles"] = trim(substr($buffer, 123, 8)); $BUF_record["nombre_seances"] = trim(substr($buffer, 131, 2)); $BUF_record["nombre_diagnostics"] = trim(substr($buffer, 133, 2)); $BUF_record["nombre_donnees_documentaires"] = trim(substr($buffer, 135, 2)); $BUF_record["nombre_actes"] = trim(substr($buffer, 137, 3)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 140, 8)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 148, 8)); $BUF_record["igs2"] = trim(substr($buffer, 156, 3)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 159, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 160, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 161, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 162, 15)); $BUF_record["conversion_hp_hc"] = trim(substr($buffer, 177, 1)); $BUF_record["raac"] = trim(substr($buffer, 178, 1)); $BUF_record["filler"] = trim(substr($buffer, 179, 10)); $BUF_start = 192; break; case "120" : $BUF_record["BUF_offsets"] = $rss_offsets_120; $BUF_record["no_rss"] = trim(substr($buffer, 27, 20)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 47, 20)); $BUF_record["no_rum"] = trim(substr($buffer, 67, 10)); if ($last_BUF_rss !== $BUF_record["no_rss"]) { $last_BUF_rum = 0; $last_BUF_rss = $BUF_record["no_rss"]; } $last_BUF_rum++; $BUF_record["no_rum"] = $last_BUF_rum; $BUF_record["date_naissance"] = trim(substr($buffer, 77, 8)); $BUF_record["sexe"] = trim(substr($buffer, 85, 1)); $BUF_record["unite_medicale"] = trim(substr($buffer, 86, 4)); $BUF_record["type_autorisation_lit"] = trim(substr($buffer, 90, 2)); $BUF_record["date_entree"] = trim(substr($buffer, 92, 8)); $BUF_record["mode_entree"] = trim(substr($buffer, 100, 1)); $BUF_record["provenance"] = trim(substr($buffer, 101, 1)); $BUF_record["date_sortie"]= trim(substr($buffer, 102, 8)); $BUF_record["mode_sortie"] = trim(substr($buffer, 110, 1)); $BUF_record["destination"] = trim(substr($buffer, 111, 1)); $BUF_record["code_postal"] = substr($buffer, 112, 5); $BUF_record["poids_bebe"] = trim(substr($buffer, 117, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 121, 2)); $BUF_record["date_dernieres_regles"] = trim(substr($buffer, 123, 8)); $BUF_record["nombre_seances"] = trim(substr($buffer, 131, 2)); $BUF_record["nombre_diagnostics"] = trim(substr($buffer, 133, 2)); $BUF_record["nombre_donnees_documentaires"] = trim(substr($buffer, 135, 2)); $BUF_record["nombre_actes"] = trim(substr($buffer, 137, 3)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 140, 8)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 148, 8)); $BUF_record["igs2"] = trim(substr($buffer, 156, 3)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 159, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 160, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 161, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 162, 15)); $BUF_record["conversion_hp_hc"] = trim(substr($buffer, 177, 1)); $BUF_record["raac"] = trim(substr($buffer, 178, 1)); $BUF_record["filler"] = trim(substr($buffer, 179, 10)); // integration nouveaux champs 2020 $BUF_record["contexte_particulier"] = trim(substr($buffer, 179, 1)); $BUF_record["administration_prod_rh"] = trim(substr($buffer, 180, 1)); $BUF_record["rescrit_tarifaire"] = trim(substr($buffer, 181, 1)); $BUF_record["categorie_nb_interventions"] = trim(substr($buffer, 182, 1)); $BUF_record["filler"] = trim(substr($buffer, 183, 6)); $BUF_start = 192; break; case "121" : $BUF_record["BUF_offsets"] = $rss_offsets_121; $BUF_record["no_rss"] = trim(substr($buffer, 27, 20)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 47, 20)); $BUF_record["no_rum"] = trim(substr($buffer, 67, 10)); if ($last_BUF_rss !== $BUF_record["no_rss"]) { $last_BUF_rum = 0; $last_BUF_rss = $BUF_record["no_rss"]; } $last_BUF_rum++; $BUF_record["no_rum"] = $last_BUF_rum; $BUF_record["date_naissance"] = trim(substr($buffer, 77, 8)); $BUF_record["sexe"] = trim(substr($buffer, 85, 1)); $BUF_record["unite_medicale"] = trim(substr($buffer, 86, 4)); $BUF_record["type_autorisation_lit"] = trim(substr($buffer, 90, 2)); $BUF_record["date_entree"] = trim(substr($buffer, 92, 8)); $BUF_record["mode_entree"] = trim(substr($buffer, 100, 1)); $BUF_record["provenance"] = trim(substr($buffer, 101, 1)); $BUF_record["date_sortie"]= trim(substr($buffer, 102, 8)); $BUF_record["mode_sortie"] = trim(substr($buffer, 110, 1)); $BUF_record["destination"] = trim(substr($buffer, 111, 1)); $BUF_record["code_postal"] = substr($buffer, 112, 5); $BUF_record["poids_bebe"] = trim(substr($buffer, 117, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 121, 2)); $BUF_record["date_dernieres_regles"] = trim(substr($buffer, 123, 8)); $BUF_record["nombre_seances"] = trim(substr($buffer, 131, 2)); $BUF_record["nombre_diagnostics"] = trim(substr($buffer, 133, 2)); $BUF_record["nombre_donnees_documentaires"] = trim(substr($buffer, 135, 2)); $BUF_record["nombre_actes"] = trim(substr($buffer, 137, 3)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 140, 8)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 148, 8)); $BUF_record["igs2"] = trim(substr($buffer, 156, 3)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 159, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 160, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 161, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 162, 15)); $BUF_record["conversion_hp_hc"] = trim(substr($buffer, 177, 1)); $BUF_record["raac"] = trim(substr($buffer, 178, 1)); $BUF_record["filler"] = trim(substr($buffer, 179, 10)); // integration nouveaux champs 2020 $BUF_record["contexte_particulier"] = trim(substr($buffer, 179, 1)); $BUF_record["administration_prod_rh"] = trim(substr($buffer, 180, 1)); $BUF_record["rescrit_tarifaire"] = trim(substr($buffer, 181, 1)); $BUF_record["categorie_nb_interventions"] = trim(substr($buffer, 182, 1)); $BUF_record["np"] = trim(substr($buffer, 183, 1)); $BUF_record["filler"] = trim(substr($buffer, 184, 6)); $BUF_start = 192; break; case "122" : $BUF_record["BUF_offsets"] = $rss_offsets_122; $BUF_record["no_rss"] = trim(substr($buffer, 27, 20)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 47, 20)); $BUF_record["no_rum"] = trim(substr($buffer, 67, 10)); if ($last_BUF_rss !== $BUF_record["no_rss"]) { $last_BUF_rum = 0; $last_BUF_rss = $BUF_record["no_rss"]; } $last_BUF_rum++; $BUF_record["no_rum"] = $last_BUF_rum; $BUF_record["date_naissance"] = trim(substr($buffer, 77, 8)); $BUF_record["sexe"] = trim(substr($buffer, 85, 1)); $BUF_record["unite_medicale"] = trim(substr($buffer, 86, 4)); $BUF_record["type_autorisation_lit"] = trim(substr($buffer, 90, 2)); $BUF_record["date_entree"] = trim(substr($buffer, 92, 8)); $BUF_record["mode_entree"] = trim(substr($buffer, 100, 1)); $BUF_record["provenance"] = trim(substr($buffer, 101, 1)); $BUF_record["date_sortie"]= trim(substr($buffer, 102, 8)); $BUF_record["mode_sortie"] = trim(substr($buffer, 110, 1)); $BUF_record["destination"] = trim(substr($buffer, 111, 1)); $BUF_record["code_postal"] = substr($buffer, 112, 5); $BUF_record["poids_bebe"] = trim(substr($buffer, 117, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 121, 2)); $BUF_record["date_dernieres_regles"] = trim(substr($buffer, 123, 8)); $BUF_record["nombre_seances"] = trim(substr($buffer, 131, 2)); $BUF_record["nombre_diagnostics"] = trim(substr($buffer, 133, 2)); $BUF_record["nombre_donnees_documentaires"] = trim(substr($buffer, 135, 2)); $BUF_record["nombre_actes"] = trim(substr($buffer, 137, 3)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 140, 8)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 148, 8)); $BUF_record["igs2"] = trim(substr($buffer, 156, 3)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 159, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 160, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 161, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 162, 15)); $BUF_record["conversion_hp_hc"] = trim(substr($buffer, 177, 1)); $BUF_record["raac"] = trim(substr($buffer, 178, 1)); $BUF_record["filler"] = trim(substr($buffer, 179, 10)); $BUF_record["contexte_particulier"] = trim(substr($buffer, 179, 1)); $BUF_record["administration_prod_rh"] = trim(substr($buffer, 180, 1)); $BUF_record["rescrit_tarifaire"] = trim(substr($buffer, 181, 1)); $BUF_record["categorie_nb_interventions"] = trim(substr($buffer, 182, 1)); $BUF_record["np"] = trim(substr($buffer, 183, 1)); $BUF_record["passage_urgences"] = trim(substr($buffer, 184, 1)); $BUF_record["filler"] = trim(substr($buffer, 185, 4)); $BUF_start = 192; break; default : $BUF_record["BUF_offsets"] = $rss_offsets_121; $BUF_record["no_rss"] = trim(substr($buffer, 27, 20)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 47, 20)); $BUF_record["no_rum"] = trim(substr($buffer, 67, 10)); if ($last_BUF_rss !== $BUF_record["no_rss"]) { $last_BUF_rum = 0; $last_BUF_rss = $BUF_record["no_rss"]; } $last_BUF_rum++; $BUF_record["no_rum"] = $last_BUF_rum; $BUF_record["date_naissance"] = trim(substr($buffer, 77, 8)); $BUF_record["sexe"] = trim(substr($buffer, 85, 1)); $BUF_record["unite_medicale"] = trim(substr($buffer, 86, 4)); $BUF_record["type_autorisation_lit"] = trim(substr($buffer, 90, 2)); $BUF_record["date_entree"] = trim(substr($buffer, 92, 8)); $BUF_record["mode_entree"] = trim(substr($buffer, 100, 1)); $BUF_record["provenance"] = trim(substr($buffer, 101, 1)); $BUF_record["date_sortie"]= trim(substr($buffer, 102, 8)); $BUF_record["mode_sortie"] = trim(substr($buffer, 110, 1)); $BUF_record["destination"] = trim(substr($buffer, 111, 1)); $BUF_record["code_postal"] = substr($buffer, 112, 5); $BUF_record["poids_bebe"] = trim(substr($buffer, 117, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 121, 2)); $BUF_record["date_dernieres_regles"] = trim(substr($buffer, 123, 8)); $BUF_record["nombre_seances"] = trim(substr($buffer, 131, 2)); $BUF_record["nombre_diagnostics"] = trim(substr($buffer, 133, 2)); $BUF_record["nombre_donnees_documentaires"] = trim(substr($buffer, 135, 2)); $BUF_record["nombre_actes"] = trim(substr($buffer, 137, 3)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 140, 8)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 148, 8)); $BUF_record["igs2"] = trim(substr($buffer, 156, 3)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 159, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 160, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 161, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 162, 15)); $BUF_record["conversion_hp_hc"] = trim(substr($buffer, 177, 1)); $BUF_record["raac"] = trim(substr($buffer, 178, 1)); // integration nouveaux champs 2020 $BUF_record["contexte_particulier"] = trim(substr($buffer, 179, 1)); $BUF_record["administration_prod_rh"] = trim(substr($buffer, 180, 1)); $BUF_record["rescrit_tarifaire"] = trim(substr($buffer, 181, 1)); $BUF_record["categorie_nb_interventions"] = trim(substr($buffer, 182, 1)); $BUF_record["filler"] = trim(substr($buffer, 183, 6)); $BUF_start = 192; } // constante RSS dans le n° de RSS $position = strpos($BUF_record["no_rss"], 'RSS'); if ($position !== false) { $BUF_record["no_rss"] = str_replace("RSS","000",$BUF_record["no_rss"]); } // Bourrage à gauche avec des zéros sur zones numériques $BUF_record["igs2"] = str_pad($BUF_record["igs2"], 3, "0", STR_PAD_LEFT); $BUF_record["nombre_actes"] = str_pad($BUF_record["nombre_actes"], 3, "0", STR_PAD_LEFT); $BUF_record["nombre_diagnostics"] = str_pad($BUF_record["nombre_diagnostics"], 2, "0", STR_PAD_LEFT); $BUF_record["nombre_donnees_documentaires"] = str_pad($BUF_record["nombre_donnees_documentaires"], 2, "0", STR_PAD_LEFT); $BUF_record["nombre_seances"] = str_pad($BUF_record["nombre_seances"], 2, "0", STR_PAD_LEFT); $BUF_record["nombre_ivg_anterieures"] = str_pad($BUF_record["nombre_ivg_anterieures"], 2, "0", STR_PAD_LEFT); $BUF_record["nombre_naissances_vivantes_anterieures"] = str_pad($BUF_record["nombre_naissances_vivantes_anterieures"], 2, "0", STR_PAD_LEFT); // remplacement blancs par 0 dans code postal $BUF_record["code_postal"] = str_ireplace(" ", "0", $BUF_record["code_postal"]); $BUF_record["code_postal"] = str_ireplace("O", "0", $BUF_record["code_postal"]); //Attention, si plus de 99 actes if (substr($BUF_record["nombre_actes"], 0, 1) != "0") { if (substr($BUF_record["diagnostic_principal"], 0, 1) >= "0" && substr($BUF_record["diagnostic_principal"], 0, 1) <= "9") { $BUF_record["nombre_actes"] = $BUF_record["nombre_actes"] . substr($BUF_record["diagnostic_principal"], 0, 1); $BUF_record["diagnostic_principal"] = substr($BUF_record["diagnostic_principal"], 1); } } if ($qAD == TRUE) { for ($i = 1; $i <= get_num($BUF_record["nombre_diagnostics"]); $i++) { $BUF_diagnostic_associe = trim(substr($buffer, $BUF_start, 8)); $BUF_record["diags"][$i] = $BUF_diagnostic_associe; $BUF_record["diags_offset"][$i] = $BUF_start; $BUF_record["diags_len"][$i] = 8; $BUF_start = $BUF_start + 8; } for ($i = 1; $i <= get_num($BUF_record["nombre_donnees_documentaires"]); $i++) { $BUF_diagnostic_documentaire = trim(substr($buffer, $BUF_start, 8)); $BUF_record["diagsdoc"][$i] = $BUF_diagnostic_documentaire; $BUF_record["diagsdoc_offset"][$i] = $BUF_start; $BUF_record["diagsdoc_len"][$i] = 8; $BUF_start = $BUF_start + 8; } for ($i = 1; $i <= get_num($BUF_record["nombre_actes"]); $i++) { $BUF_record["offset_format"] = 0; switch ($BUF_record["version_format"]) { case "110" : $buf_len = 10; $BUF_acte = substr($buffer, $BUF_start, 10); $BUF_acte = $BUF_record["date_sortie"] . substr($BUF_acte, 0, 8) . "1"; $BUF_start = $BUF_start + 10; break; case "111" : case "112" : case "113" : case "114" : case "115" : case "116" : $buf_len = 26; $BUF_acte = substr($buffer, $BUF_start, 26); if (trim(substr($BUF_acte, 0, 8)) == "") { $BUF_acte = $BUF_record["date_sortie"] . substr($BUF_acte, 8, 18); } $BUF_start = $BUF_start + 26; break; default : $buf_len = 29; $BUF_record["offset_format"] = 3; $BUF_acte = substr($buffer, $BUF_start, $buf_len); if (trim(substr($BUF_acte, 0, 8)) == "") { $BUF_acte = $BUF_record["date_sortie"] . substr($BUF_acte, 8, 21); } $BUF_start = $BUF_start + $buf_len; } $BUF_record["actes"][$i] = $BUF_acte; $BUF_record["actes_offset"][$i] = $BUF_start; $BUF_record["actes_len"][$i] = $buf_len; } } return $BUF_record; } function read_rum_partial_line($buffer) { $BUF_record = array(); $buffer = Encoding::removeBOM($buffer); if (is_entete_empty($buffer)){ $BUF_record["type_enregistrement"] = "ENTETE"; return $BUF_record; } if (trim(substr($buffer, 27, 5) == "NRSS0")) { $BUF_record["type_enregistrement"] = "NONE"; return $BUF_record; } $BUF_record["type_enregistrement"] = "RUM"; $BUF_record["no_rss"] = ""; $BUF_record["version_format"] = trim(substr($buffer, 9, 3)); switch ($BUF_record["version_format"]) { case "110" : $BUF_record["no_rss"] = trim(substr($buffer, 27, 7)); $BUF_record["date_sortie"] = trim(substr($buffer, 57, 8)); $BUF_record["no_sejour_administratif"] = ""; break; case "111" : $BUF_record["no_rss"] = trim(substr($buffer, 27, 7)); $BUF_record["date_sortie"] = trim(substr($buffer, 82, 8)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 34, 20)); break; default : // depuis format 113 $BUF_record["no_rss"] = trim(substr($buffer, 27, 20)); $BUF_record["date_sortie"]= trim(substr($buffer, 102, 8)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 47, 20)); } // constante RSS dans le n° de RSS $position = strpos($BUF_record["no_rss"], 'RSS'); if ($position !== false) { $BUF_record["no_rss"] = str_replace("RSS","000",$BUF_record["no_rss"]); } return $BUF_record; } function read_rsf_line($buffer, $qA=TRUE, $qB=TRUE, $qP=TRUE, $qM=TRUE, $qH=true, $qI=true) { global $ENV_TYPEETS; global $ENV_OPTPMSI_FSD_B; global $max_ACE; global $rsf_last_RSS; global $rsf_offsets_2006_A; global $rsf_offsets_2006_B; global $rsf_offsets_2006_P; global $rsf_offsets_2006_M; global $rsf_offsets_2008_A; global $rsf_offsets_2008_B; global $rsf_offsets_2008_P; global $rsf_offsets_2008_M; global $rsf_offsets_2008B_M; global $rsf_offsets_2015_A; global $rsf_offsets_2016_A; global $rsf_offsets_2017_A; global $rsf_offsets_2017_B; global $rsf_offsets_2017_P; global $rsf_offsets_2017_H; global $rsf_offsets_2017_I; global $rsf_offsets_2017_M; global $rsf_ace_offsets_2009_A; global $rsf_ace_offsets_2008_A; global $rsf_ace_offsets_2016_B; global $rsf_ace_offsets_2008_B; global $rsf_ace_offsets_2008_C; global $rsf_ace_offsets_2016_M; global $rsf_ace_offsets_2008_M; global $rsf_ace_offsets_2007_A; global $rsf_ace_offsets_2007_C; global $rsf_ace_offsets_2007_M; global $rsf_ace_offsets_2017_A; global $rsf_ace_offsets_2017_M; global $rsf_ace_offsets_2017_B; global $current_rsfa_index; $BUF_record = array(); $BUF_record["ok"] = FALSE; $buffer = Encoding::removeBOM($buffer); $buf_len = strlen($buffer); if (is_entete_empty($buffer)){ $BUF_record["type_enregistrement"] = "ENTETE"; return $BUF_record; } // Types d'enregistrements RSF (2023) : // A = Début de facture // B = Prestations Hospitalière // C = Honoraires // H = Médicament // I = Interruptiond de Séjour // P = Prothèses $BUF_record["type_enregistrement"] = trim(substr($buffer, 0, 1)); // Special Saint laurent pb décalages if ($BUF_record["type_enregistrement"] == "A" && substr($buffer, 0, 10) == "A350002192") { if (trim(substr($buffer, 34, 25)) == "") { $BUF_record["type_enregistrement"] = "IGNORE"; } } ///////////////////////// A = Début de facture ///////////////////////// if ($BUF_record["type_enregistrement"] == "A" && $qA == TRUE) { $current_rsfa_index++; if ($ENV_TYPEETS == "1") { $BUF_141 = trim(substr($buffer, 141, 100)); $BUF_158 = trim(substr($buffer, 158, 100)); $BUF_168 = trim(substr($buffer, 168, 100)); //Format de mars 2015 if ($buf_len > 240) { $BUF_version = "2019"; } else if ($buf_len > 220) { $BUF_version = "2017"; } else if ($BUF_141 == "") { $BUF_version = "2006"; } else if ($BUF_158 == "") { $BUF_version = "2008"; } else if ($BUF_168 == "") { $BUF_version = "2012"; } else { $BUF_version = "2015"; } } else { $BUF_137 = trim(substr($buffer, 136, 100)); $BUF_146 = trim(substr($buffer, 146, 100)); //Format de mars 2015 $BUF_2016 = trim(substr($buffer, 66, 8)); //Format de mars 2016 $BUF_2016_OK = ""; if (substr($BUF_2016,4,2) == "20" && substr($BUF_2016,2,2) < 13 && substr($BUF_2016,0,2) < 32 ) { $BUF_2016_OK = "OK"; } if ($buf_len > 280) { $BUF_version = "ACE2019"; } else if ($buf_len > 260) { $BUF_version = "ACE2018"; } else if ($buf_len > 200) { $BUF_version = "ACE2017"; } else if ($BUF_146 != "") { if ($BUF_2016_OK == "OK") { $BUF_version = "ACE2016"; } else { $BUF_version = "ACE2015"; } } else if ($BUF_137 != "") { $BUF_version = "ACE2007"; $annee_sortie = trim(substr($buffer, 69, 4)); // if ($max_ACE == "2009" || $annee_sortie == "2008" || $annee_sortie == "2009" || $annee_sortie == "2010" || $annee_sortie == "2011") { if ($max_ACE == "2009" || intval($annee_sortie) >= 2008) { $BUF_version = "ACE2009"; $max_ACE = "2009"; } else { $annee_sortie = trim(substr($buffer, 74, 4)); if ($annee_sortie == "2006" || $annee_sortie == "2007" || $annee_sortie == "2008") { $BUF_version = "ACE2007I"; } } } else { $BUF_version = "ACE2008"; } } $BUF_record["finess"] = trim(substr($buffer, 1, 9)); $BUF_record["no_rss"] = ""; // Initialisation champs $BUF_record["immatriculation_assure"] = ""; $BUF_record["cle_immatriculation_assure"] = ""; $BUF_record["grand_regime"] = ""; $BUF_record["code_gestion"] = ""; $BUF_record["date_naissance"] = ""; $BUF_record["sexe"] = ""; $BUF_record["no_sejour_administratif"] = ""; $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["justificatif_exo"] = ""; $BUF_record["code_pec_fj"] = ""; $BUF_record["nature_assurance"] = ""; $BUF_record["type_contrat_oc"] = ""; $BUF_record["code_pec"] = ""; $BUF_record["motif_non_facturation"] = ""; $BUF_record["facturation_18euros"] = ""; $BUF_record["nombre_venues"] = ""; $BUF_record["montant_tm"] = ""; $BUF_record["montant_fj"] = ""; $BUF_record["total_remboursable_amo"] = ""; $BUF_record["montant_parcours_soins"] = ""; $BUF_record["base_remboursement_c"] = ""; $BUF_record["taux_remboursement_c"] = ""; $BUF_record["cmu"] = ""; $BUF_record["no_sejour_administratif_mere"] = ""; $BUF_record["hospit_nouveau_ne"] = ""; $BUF_record["prelevement_organe"] = ""; $BUF_record["date_hospitalisation"] = ""; $BUF_record["total_remboursable_amc"] = ""; $BUF_record["code_participation_assure"] = ""; $BUF_record["no_entree"] = ""; $BUF_record["rang_naissance"] = ""; $BUF_record["rang_beneficiaire"] = ""; $BUF_record["no_caisse_gestionnaire"] = ""; $BUF_record["no_centre_gestionnaire"] = ""; $BUF_record["confirmation_pec"] = ""; $BUF_record["no_at_date_adc"] = ""; $BUF_record["no_organisme_complementaire"] = ""; $BUF_record["nature_piece_justificative"] = ""; $BUF_record["date_pec"] = ""; $BUF_record["date_debut_pec"] = ""; $BUF_record["delivre_par"] = ""; $BUF_record["regime_assure"] = ""; $BUF_record["top_eclatement_flux_etab"] = ""; $BUF_record["date_entree"] = ""; $BUF_record["date_sortie"] = ""; // nouveautés 2018 $BUF_record["montant_total_sejour_patient"] = ""; // montant facturé au titre de la part patient $BUF_record["nb_rejet_amo"] = ""; // nombre de fois ou FT AMO a été refetée (0 à 9) $BUF_record["date_facture_amo"] = ""; // date de l'envoi de la FT AMO $BUF_record["date_facture_amc"] = ""; // date de l'envoi de la FT AMC $BUF_record["date_facture_patient"] = ""; // date de l'envoi de la FT patient $BUF_record["date_paiement_amo"] = ""; // date à laquelle la FT AMO est payée en totalité (statut S16) $BUF_record["date_paiement_amc"] = ""; // date à laquelle la FT AMC est payée en totalité (statut S16) $BUF_record["date_paiement_patient"] = ""; // date à laquelle la FT patient est payée en totalité (statut S16) $BUF_record["statut_ft_amo"] = ""; // 0:avant validation, 1:validée, 2:NiNi, 3:payée, 9:S/O $BUF_record["statut_ft_amc"] = ""; // 0:avant validation, 1:validée, 2:NiNi, 3:payée, 9:S/O $BUF_record["statut_ft_patient"] = ""; // 0:avant validation, 1:validée, 2:NiNi, 3:payée, 9:S/O $BUF_record["pays_amo"] = ""; // Code INSEE à 5 chiffres, sans les deux premiers chiffres 99 ou code ISO 3166-1 Alpha-3. Blanc ou 000 par défaut // nouveautés 2019 $BUF_record["no_ipp"] = ""; // Numéro d'identification permanent du patient $BUF_record["no_facture_sejour_mere"] = ""; // Numéro d'identification permanent du patient switch ($BUF_version) { case "2019" : $BUF_record["no_ipp"] = trim(substr($buffer, 221, 20)); case "2017" : case "2019" : $BUF_record["BUF_offsets"] = $rsf_offsets_2017_A; $BUF_record["no_rss"] = trim(substr($buffer, 19, 20)); $BUF_record["sexe"] = trim(substr($buffer, 39, 1)); $BUF_record["civilite"] = trim(substr($buffer, 40, 1)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 41, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 54, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 56, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 59, 9)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 59, 9)); $BUF_record["immatriculation_indiv"] = trim(substr($buffer, 68, 13)); $BUF_record["cle_immatriculation_indiv"] = trim(substr($buffer, 81, 2)); $BUF_record["nature_operation"] = trim(substr($buffer, 84, 1)); $BUF_record["nature_assurance"] = trim(substr($buffer, 85, 2)); $BUF_record["type_contrat_oc"] = trim(substr($buffer, 87, 2)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 89, 1)); $BUF_record["code_pec"] = trim(substr($buffer, 91, 1)); $BUF_record["grand_regime"] = trim(substr($buffer, 93, 2)); $BUF_record["date_naissance"] = trim(substr($buffer, 95, 8)); $BUF_record["rang_naissance"] = trim(substr($buffer, 103, 1)); $BUF_record["date_entree"] = trim(substr($buffer, 104, 8)); $BUF_record["date_sortie"] = trim(substr($buffer, 112, 8)); $BUF_record["code_postal"] = trim(substr($buffer, 120, 5)); $BUF_record["base_remboursement_c"] = trim(substr($buffer, 125, 8)); $BUF_record["total_remboursable_amo"] = trim(substr($buffer, 133, 8)); $BUF_record["total_honoraires_factures"] = trim(substr($buffer, 141, 8)); $BUF_record["total_honoraires_remboursable"] = trim(substr($buffer, 149, 8)); $BUF_record["total_assure_avant_oc"] = trim(substr($buffer, 157, 8)); $BUF_record["total_remboursable_oc_ph"] = trim(substr($buffer, 165, 8)); $BUF_record["total_remboursable_oc_honoraires"] = trim(substr($buffer, 173, 8)); $BUF_record["total_facture_ph"] = trim(substr($buffer, 181, 8)); $BUF_record["etat_liquidation"] = trim(substr($buffer, 189, 1)); $BUF_record["pat_benef_cmu"] = trim(substr($buffer, 190, 1)); $BUF_record["code_gestion"] = trim(substr($buffer, 191, 2)); $BUF_record["no_facture_sejour_mere"] = trim(substr($buffer, 193, 9)); $BUF_record["no_organisme_complementaire"] = trim(substr($buffer, 202, 10)); // format RSF 2015 $BUF_record["no_at_date_adc"] = trim(substr($buffer, 212, 9)); // format RSF 2015 $BUF_record["ok"] = TRUE; break; case "2015" : $BUF_record["BUF_offsets"] = $rsf_offsets_2015_A; $BUF_record["no_rss"] = trim(substr($buffer, 10, 20)); $BUF_record["sexe"] = trim(substr($buffer, 30, 1)); $BUF_record["civilite"] = trim(substr($buffer, 31, 1)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 32, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 45, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 47, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 50, 9)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 50, 9)); $BUF_record["nature_operation"] = trim(substr($buffer, 59, 1)); $BUF_record["nature_assurance"] = trim(substr($buffer, 60, 2)); $BUF_record["type_contrat_oc"] = trim(substr($buffer, 62, 2)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 64, 1)); $BUF_record["code_pec"] = trim(substr($buffer, 65, 1)); $BUF_record["grand_regime"] = trim(substr($buffer, 66, 2)); $BUF_record["date_naissance"] = trim(substr($buffer, 68, 8)); $BUF_record["rang_naissance"] = trim(substr($buffer, 76, 1)); $BUF_record["date_entree"] = trim(substr($buffer, 77, 8)); $BUF_record["date_sortie"] = trim(substr($buffer, 85, 8)); $BUF_record["base_remboursement_c"] = trim(substr($buffer, 93, 8)); $BUF_record["total_remboursable_amo"] = trim(substr($buffer, 101, 8)); $BUF_record["total_honoraires_factures"] = trim(substr($buffer, 109, 8)); $BUF_record["total_honoraires_remboursable"] = trim(substr($buffer, 117, 8)); $BUF_record["total_assure_avant_oc"] = trim(substr($buffer, 125, 8)); $BUF_record["total_remboursable_oc_ph"] = trim(substr($buffer, 133, 8)); $BUF_record["total_remboursable_oc_honoraires"] = trim(substr($buffer, 141, 8)); $BUF_record["total_facture_ph"] = trim(substr($buffer, 149, 8)); $BUF_record["etat_liquidation"] = trim(substr($buffer, 157, 1)); $BUF_record["pat_benef_cmu"] = trim(substr($buffer, 158, 1)); $BUF_record["no_facture_sejour_mere"] = trim(substr($buffer, 159, 9)); $BUF_record["no_organisme_complementaire"] = trim(substr($buffer, 168, 10)); // format RSF 2015 $BUF_record["no_at_date_adc"] = trim(substr($buffer, 178, 10)); // format RSF 2015 $BUF_record["ok"] = TRUE; break; case "2012" : $BUF_record["BUF_offsets"] = $rsf_offsets_2008_A; $BUF_record["no_rss"] = trim(substr($buffer, 10, 20)); $BUF_record["sexe"] = trim(substr($buffer, 30, 1)); $BUF_record["civilite"] = trim(substr($buffer, 31, 1)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 32, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 45, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 47, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 50, 9)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 50, 9)); $BUF_record["nature_operation"] = trim(substr($buffer, 59, 1)); $BUF_record["nature_assurance"] = trim(substr($buffer, 60, 2)); $BUF_record["type_contrat_oc"] = trim(substr($buffer, 62, 2)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 64, 1)); $BUF_record["code_pec"] = trim(substr($buffer, 65, 1)); $BUF_record["grand_regime"] = trim(substr($buffer, 66, 2)); $BUF_record["date_naissance"] = trim(substr($buffer, 68, 8)); $BUF_record["rang_naissance"] = trim(substr($buffer, 76, 1)); $BUF_record["date_entree"] = trim(substr($buffer, 77, 8)); $BUF_record["date_sortie"] = trim(substr($buffer, 85, 8)); $BUF_record["base_remboursement_c"] = trim(substr($buffer, 93, 8)); $BUF_record["total_remboursable_amo"] = trim(substr($buffer, 101, 8)); $BUF_record["total_honoraires_factures"] = trim(substr($buffer, 109, 8)); $BUF_record["total_honoraires_remboursable"] = trim(substr($buffer, 117, 8)); $BUF_record["total_assure_avant_oc"] = trim(substr($buffer, 125, 8)); $BUF_record["total_remboursable_oc_ph"] = trim(substr($buffer, 133, 8)); $BUF_record["total_remboursable_oc_honoraires"] = trim(substr($buffer, 141, 8)); $BUF_record["total_facture_ph"] = trim(substr($buffer, 149, 8)); $BUF_record["etat_liquidation"] = trim(substr($buffer, 157, 1)); $BUF_record["pat_benef_cmu"] = trim(substr($buffer, 158, 1)); $BUF_record["no_facture_sejour_mere"] = trim(substr($buffer, 159, 9)); $BUF_record["ok"] = TRUE; break; case "2008" : $BUF_record["BUF_offsets"] = $rsf_offsets_2008_A; $BUF_record["no_rss"] = trim(substr($buffer, 10, 20)); $BUF_record["sexe"] = trim(substr($buffer, 30, 1)); $BUF_record["civilite"] = trim(substr($buffer, 31, 1)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 32, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 45, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 47, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 50, 9)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 50, 9)); $BUF_record["nature_operation"] = trim(substr($buffer, 59, 1)); $BUF_record["nature_assurance"] = trim(substr($buffer, 60, 2)); $BUF_record["type_contrat_oc"] = trim(substr($buffer, 62, 2)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 64, 1)); $BUF_record["code_pec"] = trim(substr($buffer, 65, 1)); $BUF_record["grand_regime"] = trim(substr($buffer, 66, 2)); $BUF_record["date_naissance"] = trim(substr($buffer, 68, 8)); $BUF_record["rang_naissance"] = trim(substr($buffer, 76, 1)); $BUF_record["date_entree"] = trim(substr($buffer, 77, 8)); $BUF_record["date_sortie"] = trim(substr($buffer, 85, 8)); $BUF_record["base_remboursement_c"] = trim(substr($buffer, 93, 8)); $BUF_record["total_remboursable_amo"] = trim(substr($buffer, 101, 8)); $BUF_record["total_honoraires_factures"] = trim(substr($buffer, 109, 8)); $BUF_record["total_honoraires_remboursable"] = trim(substr($buffer, 117, 8)); $BUF_record["total_assure_avant_oc"] = trim(substr($buffer, 125, 8)); $BUF_record["total_remboursable_oc_ph"] = trim(substr($buffer, 133, 8)); $BUF_record["total_remboursable_oc_honoraires"] = trim(substr($buffer, 141, 8)); $BUF_record["total_facture_ph"] = trim(substr($buffer, 149, 8)); $BUF_record["etat_liquidation"] = trim(substr($buffer, 157, 1)); $BUF_record["ok"] = TRUE; break; case "2006" : $BUF_record["BUF_offsets"] = $rsf_offsets_2006_A; $BUF_record["no_rss"] = trim(substr($buffer, 10, 7)); $BUF_record["sexe"] = trim(substr($buffer, 17, 1)); $BUF_record["civilite"] = trim(substr($buffer, 18, 1)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 19, 13)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 32, 3)); $BUF_record["nature_operation"] = trim(substr($buffer, 35, 1)); $BUF_record["nature_assurance"] = trim(substr($buffer, 36, 2)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 38, 1)); $BUF_record["code_pec"] = trim(substr($buffer, 39, 1)); $BUF_record["no_facture"] = trim(substr($buffer, 40, 9)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 40, 9)); $BUF_record["grand_regime"] = trim(substr($buffer, 49, 2)); $BUF_record["date_naissance"] = trim(substr($buffer, 51, 8)); $BUF_record["rang_naissance"] = trim(substr($buffer, 59, 1)); $BUF_record["date_entree"] = trim(substr($buffer, 60, 8)); $BUF_record["date_sortie"] = trim(substr($buffer, 68, 8)); $BUF_record["base_remboursement_c"] = trim(substr($buffer, 76, 8)); $BUF_record["total_remboursable_amo"] = trim(substr($buffer, 84, 8)); $BUF_record["total_honoraires_factures"] = trim(substr($buffer, 92, 8)); $BUF_record["total_honoraires_remboursable"] = trim(substr($buffer, 100, 8)); $BUF_record["total_assure_avant_oc"] = trim(substr($buffer, 108, 8)); $BUF_record["total_remboursable_oc_ph"] = trim(substr($buffer, 116, 8)); $BUF_record["total_remboursable_oc_honoraires"] = trim(substr($buffer, 124, 8)); $BUF_record["total_facture_ph"] = trim(substr($buffer, 132, 8)); if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = trim($BUF_record["no_facture"] + 99000000000); $BUF_record["no_rss"] = '9' . str_pad(ltrim($BUF_record["no_facture"], '0'), 8, '0', STR_PAD_LEFT); } $BUF_record["ok"] = TRUE; break; case "ACE2019" : $BUF_record["no_ipp"] = trim(substr($buffer, 265, 20)); case "ACE2018" : $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2017_A; $BUF_record["no_rss"] = 0; $BUF_record["sexe"] = trim(substr($buffer, 19, 1)); $BUF_record["civilite"] = trim(substr($buffer, 20, 1)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 21, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 34, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 36, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 301, 9)); if ($BUF_record["no_facture"] == "") { $BUF_record["no_facture"] = trim(substr($buffer, 39, 9)); } $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 39, 9)); $BUF_record["immatriculation_indiv"] = trim(substr($buffer, 48, 13)); $BUF_record["cle_immatriculation_indiv"] = trim(substr($buffer, 61, 2)); $BUF_record["parcours_soins"] = trim(substr($buffer, 63, 1)); $BUF_record["nature_operation"] = trim(substr($buffer, 64, 1)); $BUF_record["nature_assurance"] = trim(substr($buffer, 65, 2)); $BUF_record["type_contrat_oc"] = trim(substr($buffer, 67, 2)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 69, 1)); $BUF_record["code_pec"] = trim(substr($buffer, 70, 1)); $BUF_record["motif_non_facturation"] = trim(substr($buffer, 72, 1)); $BUF_record["grand_regime"] = trim(substr($buffer, 73, 2)); $BUF_record["date_naissance"] = trim(substr($buffer, 75, 8)); $BUF_record["rang_naissance"] = trim(substr($buffer, 83, 1)); $BUF_record["date_entree"] = trim(substr($buffer, 84, 8)); $BUF_record["date_sortie"] = trim(substr($buffer, 92, 8)); $BUF_record["code_postal"] = trim(substr($buffer, 100, 5)); $BUF_record["base_remboursement_c"] = trim(substr($buffer, 105, 8)); $BUF_record["total_remboursable_amo"] = trim(substr($buffer, 113, 8)); $BUF_record["total_honoraires_factures"] = trim(substr($buffer, 121, 8)); $BUF_record["total_honoraires_remboursable"] = trim(substr($buffer, 129, 8)); $BUF_record["total_assure_avant_oc"] = trim(substr($buffer, 137, 8)); $BUF_record["total_remboursable_oc_ph"] = trim(substr($buffer, 145, 8)); $BUF_record["total_remboursable_oc_honoraires"] = trim(substr($buffer, 153, 8)); $BUF_record["total_facture_ph"] = trim(substr($buffer, 161, 8)); $BUF_record["pat_benef_cmu"] = trim(substr($buffer, 170, 1)); $BUF_record["valorise_fides"] = trim(substr($buffer, 171, 1)); $BUF_record["code_gestion"] = trim(substr($buffer, 172, 2)); $BUF_record["no_organisme_complementaire"] = trim(substr($buffer, 183, 10)); // format RSF-A 2015 $BUF_record["no_at_date_adc"] = trim(substr($buffer, 193, 9)); // format RSF-A 2015 // nouveautés 2018 $BUF_record["montant_total_sejour_patient"] = trim(substr($buffer, 202, 8)); $BUF_record["nb_rejet_amo"] = trim(substr($buffer, 210, 1)); $BUF_record["date_facture_amo"] = trim(substr($buffer, 211, 8)); $BUF_record["date_facture_amc"] = trim(substr($buffer, 219, 8)); $BUF_record["date_facture_patient"] = trim(substr($buffer, 227, 8)); $BUF_record["date_paiement_amo"] = trim(substr($buffer, 235, 8)); $BUF_record["date_paiement_amc"] = trim(substr($buffer, 243, 8)); $BUF_record["date_paiement_patient"] = trim(substr($buffer, 251, 8)); $BUF_record["statut_ft_amo"] = trim(substr($buffer, 259, 1)); $BUF_record["statut_ft_amc"] = trim(substr($buffer, 260, 1)); $BUF_record["statut_ft_patient"] = trim(substr($buffer, 261, 1)); $BUF_record["pays_amo"] = trim(substr($buffer, 262, 3)); //if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = trim($current_rsfa_index + 99000000000); $BUF_record["no_rss"] = '9' . str_pad(trim($current_rsfa_index), 8, '0', STR_PAD_LEFT); //} $BUF_record["ok"] = TRUE; break; case "ACE2017" : $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2017_A; $BUF_record["no_rss"] = 0; $BUF_record["sexe"] = trim(substr($buffer, 19, 1)); $BUF_record["civilite"] = trim(substr($buffer, 20, 1)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 21, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 34, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 36, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 39, 9)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 39, 9)); $BUF_record["immatriculation_indiv"] = trim(substr($buffer, 48, 13)); $BUF_record["cle_immatriculation_indiv"] = trim(substr($buffer, 61, 2)); $BUF_record["parcours_soins"] = trim(substr($buffer, 63, 1)); $BUF_record["nature_operation"] = trim(substr($buffer, 64, 1)); $BUF_record["nature_assurance"] = trim(substr($buffer, 65, 2)); $BUF_record["type_contrat_oc"] = trim(substr($buffer, 67, 2)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 69, 1)); $BUF_record["code_pec"] = trim(substr($buffer, 70, 1)); $BUF_record["motif_non_facturation"] = trim(substr($buffer, 72, 1)); $BUF_record["grand_regime"] = trim(substr($buffer, 73, 2)); $BUF_record["date_naissance"] = trim(substr($buffer, 75, 8)); $BUF_record["rang_naissance"] = trim(substr($buffer, 83, 1)); $BUF_record["date_entree"] = trim(substr($buffer, 84, 8)); $BUF_record["date_sortie"] = trim(substr($buffer, 92, 8)); $BUF_record["code_postal"] = trim(substr($buffer, 100, 5)); $BUF_record["base_remboursement_c"] = trim(substr($buffer, 105, 8)); $BUF_record["total_remboursable_amo"] = trim(substr($buffer, 113, 8)); $BUF_record["total_honoraires_factures"] = trim(substr($buffer, 121, 8)); $BUF_record["total_honoraires_remboursable"] = trim(substr($buffer, 129, 8)); $BUF_record["total_assure_avant_oc"] = trim(substr($buffer, 137, 8)); $BUF_record["total_remboursable_oc_ph"] = trim(substr($buffer, 145, 8)); $BUF_record["total_remboursable_oc_honoraires"] = trim(substr($buffer, 153, 8)); $BUF_record["total_facture_ph"] = trim(substr($buffer, 161, 8)); $BUF_record["pat_benef_cmu"] = trim(substr($buffer, 170, 1)); $BUF_record["valorise_fides"] = trim(substr($buffer, 171, 1)); $BUF_record["code_gestion"] = trim(substr($buffer, 172, 2)); $BUF_record["no_organisme_complementaire"] = trim(substr($buffer, 183, 10)); // format RSF-A 2015 $BUF_record["no_at_date_adc"] = trim(substr($buffer, 193, 9)); // format RSF-A 2015 //if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = trim($current_rsfa_index + 99000000000); $BUF_record["no_rss"] = '9' . str_pad(trim($current_rsfa_index), 8, '0', STR_PAD_LEFT); //} $BUF_record["ok"] = TRUE; break; case "ACE2016" : $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2016_A; $BUF_record["no_rss"] = 0; $BUF_record["sexe"] = trim(substr($buffer, 19, 1)); $BUF_record["civilite"] = trim(substr($buffer, 20, 1)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 21, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 34, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 36, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 39, 9)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 39, 9)); $BUF_record["nature_operation"] = trim(substr($buffer, 49, 1)); $BUF_record["nature_assurance"] = trim(substr($buffer, 50, 2)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 52, 1)); $BUF_record["code_pec"] = trim(substr($buffer, 53, 1)); $BUF_record["motif_non_facturation"] = trim(substr($buffer, 54, 1)); $BUF_record["grand_regime"] = trim(substr($buffer, 55, 2)); $BUF_record["date_naissance"] = trim(substr($buffer, 57, 8)); $BUF_record["rang_naissance"] = trim(substr($buffer, 65, 1)); $BUF_record["date_entree"] = trim(substr($buffer, 66, 8)); $BUF_record["date_sortie"] = trim(substr($buffer, 74, 8)); $BUF_record["code_postal"] = trim(substr($buffer, 82, 5)); $BUF_record["base_remboursement_c"] = trim(substr($buffer, 87, 8)); $BUF_record["total_remboursable_amo"] = trim(substr($buffer, 95, 8)); $BUF_record["total_honoraires_factures"] = trim(substr($buffer, 103, 8)); $BUF_record["total_honoraires_remboursable"] = trim(substr($buffer, 111, 8)); $BUF_record["total_assure_avant_oc"] = trim(substr($buffer, 119, 8)); $BUF_record["total_remboursable_oc_ph"] = trim(substr($buffer, 127, 8)); $BUF_record["total_remboursable_oc_honoraires"] = trim(substr($buffer, 135, 8)); $BUF_record["total_facture_ph"] = trim(substr($buffer, 143, 8)); $BUF_record["pat_benef_cmu"] = trim(substr($buffer, 151, 1)); $BUF_record["valorise_fides"] = trim(substr($buffer, 152, 1)); $BUF_record["code_gestion"] = trim(substr($buffer, 153, 2)); $BUF_record["no_organisme_complementaire"] = trim(substr($buffer, 154, 10)); // format RSF-A 2015 $BUF_record["no_at_date_adc"] = trim(substr($buffer, 174, 9)); // format RSF-A 2015 //if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = trim($current_rsfa_index + 99000000000); $BUF_record["no_rss"] = '9' . str_pad(trim($current_rsfa_index), 8, '0', STR_PAD_LEFT); //} $BUF_record["ok"] = TRUE; break; case "ACE2015" : $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2015_A; $BUF_record["no_rss"] = 0; $BUF_record["sexe"] = trim(substr($buffer, 10, 1)); $BUF_record["civilite"] = trim(substr($buffer, 11, 1)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 12, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 25, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 27, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 30, 9)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 30, 9)); $BUF_record["nature_operation"] = trim(substr($buffer, 40, 1)); $BUF_record["nature_assurance"] = trim(substr($buffer, 41, 2)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 43, 1)); $BUF_record["code_pec"] = trim(substr($buffer, 44, 1)); $BUF_record["motif_non_facturation"] = trim(substr($buffer, 45, 1)); $BUF_record["grand_regime"] = trim(substr($buffer, 46, 2)); $BUF_record["date_naissance"] = trim(substr($buffer, 48, 8)); $BUF_record["rang_naissance"] = trim(substr($buffer, 56, 1)); $BUF_record["date_entree"] = trim(substr($buffer, 57, 8)); $BUF_record["date_sortie"] = trim(substr($buffer, 65, 8)); $BUF_record["code_postal"] = trim(substr($buffer, 73, 5)); $BUF_record["base_remboursement_c"] = trim(substr($buffer, 78, 8)); $BUF_record["total_remboursable_amo"] = trim(substr($buffer, 86, 8)); $BUF_record["total_honoraires_factures"] = trim(substr($buffer, 94, 8)); $BUF_record["total_honoraires_remboursable"] = trim(substr($buffer, 102, 8)); $BUF_record["total_assure_avant_oc"] = trim(substr($buffer, 110, 8)); $BUF_record["total_remboursable_oc_ph"] = trim(substr($buffer, 118, 8)); $BUF_record["total_remboursable_oc_honoraires"] = trim(substr($buffer, 126, 8)); $BUF_record["total_facture_ph"] = trim(substr($buffer, 134, 8)); $BUF_record["pat_benef_cmu"] = trim(substr($buffer, 142, 1)); $BUF_record["valorise_fides"] = trim(substr($buffer, 143, 1)); $BUF_record["code_gestion"] = trim(substr($buffer, 144, 2)); $BUF_record["no_organisme_complementaire"] = trim(substr($buffer, 145, 10)); // format RSF-A 2015 $BUF_record["no_at_date_adc"] = trim(substr($buffer, 165, 9)); // format RSF-A 2015 //if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = trim($current_rsfa_index + 99000000000); $BUF_record["no_rss"] = '9' . str_pad(trim($current_rsfa_index), 8, '0', STR_PAD_LEFT); //} $BUF_record["ok"] = TRUE; break; case "ACE2009" : $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2009_A; $BUF_record["no_rss"] = 0; $BUF_record["sexe"] = trim(substr($buffer, 10, 1)); $BUF_record["civilite"] = trim(substr($buffer, 11, 1)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 12, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 25, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 27, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 30, 9)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 30, 9)); $BUF_record["nature_operation"] = trim(substr($buffer, 40, 1)); $BUF_record["nature_assurance"] = trim(substr($buffer, 41, 2)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 43, 1)); $BUF_record["code_pec"] = trim(substr($buffer, 44, 1)); $BUF_record["motif_non_facturation"] = trim(substr($buffer, 45, 1)); $BUF_record["grand_regime"] = trim(substr($buffer, 46, 2)); $BUF_record["date_naissance"] = trim(substr($buffer, 48, 8)); $BUF_record["rang_naissance"] = trim(substr($buffer, 56, 1)); $BUF_record["date_entree"] = trim(substr($buffer, 57, 8)); $BUF_record["date_sortie"] = trim(substr($buffer, 65, 8)); $BUF_record["code_postal"] = trim(substr($buffer, 73, 5)); $BUF_record["base_remboursement_c"] = trim(substr($buffer, 78, 8)); $BUF_record["total_remboursable_amo"] = trim(substr($buffer, 86, 8)); $BUF_record["total_honoraires_factures"] = trim(substr($buffer, 94, 8)); $BUF_record["total_honoraires_remboursable"] = trim(substr($buffer, 102, 8)); $BUF_record["total_assure_avant_oc"] = trim(substr($buffer, 110, 8)); $BUF_record["total_remboursable_oc_ph"] = trim(substr($buffer, 118, 8)); $BUF_record["total_remboursable_oc_honoraires"] = trim(substr($buffer, 126, 8)); $BUF_record["total_facture_ph"] = trim(substr($buffer, 134, 8)); $BUF_record["pat_benef_cmu"] = trim(substr($buffer, 142, 1)); $BUF_record["valorise_fides"] = trim(substr($buffer, 143, 1)); $BUF_record["code_gestion"] = trim(substr($buffer, 144, 2)); // format RSF-ACE 2014 //if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = trim($current_rsfa_index + 99000000000); $BUF_record["no_rss"] = '9' . str_pad(trim($current_rsfa_index), 8, '0', STR_PAD_LEFT); //} $BUF_record["ok"] = TRUE; break; case "ACE2008" : $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2008_A; $BUF_record["no_rss"] = 0; $BUF_record["sexe"] = trim(substr($buffer, 10, 1)); $BUF_record["civilite"] = trim(substr($buffer, 11, 1)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 12, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 25, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 27, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 30, 9)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 30, 9)); $BUF_record["nature_operation"] = trim(substr($buffer, 40, 1)); $BUF_record["nature_assurance"] = trim(substr($buffer, 41, 2)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 43, 1)); $BUF_record["code_pec"] = trim(substr($buffer, 44, 1)); $BUF_record["grand_regime"] = trim(substr($buffer, 45, 2)); $BUF_record["date_naissance"] = trim(substr($buffer, 47, 8)); $BUF_record["rang_naissance"] = trim(substr($buffer, 55, 1)); $BUF_record["date_entree"] = trim(substr($buffer, 56, 8)); $BUF_record["date_sortie"] = trim(substr($buffer, 64, 8)); $BUF_record["base_remboursement_c"] = trim(substr($buffer, 72, 8)); $BUF_record["total_remboursable_amo"] = trim(substr($buffer, 80, 8)); $BUF_record["total_honoraires_factures"] = trim(substr($buffer, 88, 8)); $BUF_record["total_honoraires_remboursable"] = trim(substr($buffer, 96, 8)); $BUF_record["total_assure_avant_oc"] = trim(substr($buffer, 104, 8)); $BUF_record["total_remboursable_oc_ph"] = trim(substr($buffer, 112, 8)); $BUF_record["total_remboursable_oc_honoraires"] = trim(substr($buffer, 120, 8)); $BUF_record["total_facture_ph"] = trim(substr($buffer, 128, 8)); //if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = trim($current_rsfa_index + 99000000000); $BUF_record["no_rss"] = '9' . str_pad(trim($current_rsfa_index), 8, '0', STR_PAD_LEFT); //} $BUF_record["ok"] = TRUE; break; case "ACE2007" : $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2007_A; $BUF_record["no_rss"] = 0; $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 10, 9)); $BUF_record["sexe"] = trim(substr($buffer, 19, 1)); $BUF_record["civilite"] = trim(substr($buffer, 19, 1)); if ($BUF_record["sexe"] != "1" && $BUF_record["sexe"] != "2" && $BUF_record["sexe"] != "3") { $BUF_record["sexe"] = "1"; $BUF_record["civilite"] = "1"; } $BUF_record["immatriculation_assure"] = trim(substr($buffer, 19, 13)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 32, 3)); $BUF_record["nature_operation"] = trim(substr($buffer, 35, 1)); $BUF_record["nature_assurance"] = trim(substr($buffer, 36, 2)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 38, 1)); $BUF_record["code_pec"] = trim(substr($buffer, 39, 1)); $BUF_record["no_facture"] = trim(substr($buffer, 40, 9)); $BUF_record["grand_regime"] = trim(substr($buffer, 49, 2)); $BUF_record["date_naissance"] = trim(substr($buffer, 51, 8)); $BUF_record["rang_naissance"] = trim(substr($buffer, 59, 1)); $BUF_record["date_entree"] = trim(substr($buffer, 60, 8)); $BUF_record["date_sortie"] = trim(substr($buffer, 68, 8)); $BUF_record["base_remboursement_c"] = trim(substr($buffer, 76, 8)); $BUF_record["total_remboursable_amo"] = trim(substr($buffer, 84, 8)); $BUF_record["total_honoraires_factures"] = trim(substr($buffer, 92, 8)); $BUF_record["total_honoraires_remboursable"] = trim(substr($buffer, 100, 8)); $BUF_record["total_assure_avant_oc"] = trim(substr($buffer, 108, 8)); $BUF_record["total_remboursable_oc_ph"] = trim(substr($buffer, 116, 8)); $BUF_record["total_remboursable_oc_honoraires"] = trim(substr($buffer, 124, 8)); $BUF_record["total_facture_ph"] = trim(substr($buffer, 132, 8)); //if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = trim($current_rsfa_index + 99000000000); $BUF_record["no_rss"] = '9' . str_pad(trim($current_rsfa_index), 8, '0', STR_PAD_LEFT); //} $BUF_record["ok"] = TRUE; break; case "ACE2007I" : $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2007_A; $BUF_record["no_rss"] = 0; $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 10, 9)); $BUF_record["sexe"] = trim(substr($buffer, 19, 1)); $BUF_record["civilite"] = trim(substr($buffer, 20, 1)); if ($BUF_record["sexe"] != "1" && $BUF_record["sexe"] != "2" && $BUF_record["sexe"] != "3") { $BUF_record["sexe"] = "1"; $BUF_record["civilite"] = "1"; } $BUF_record["immatriculation_assure"] = trim(substr($buffer, 21, 13)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 34, 3)); $BUF_record["nature_operation"] = trim(substr($buffer, 37, 1)); $BUF_record["nature_assurance"] = trim(substr($buffer, 38, 2)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 40, 1)); $BUF_record["code_pec"] = trim(substr($buffer, 41, 1)); $BUF_record["no_facture"] = trim(substr($buffer, 42, 9)); $BUF_record["grand_regime"] = trim(substr($buffer, 51, 2)); $BUF_record["date_naissance"] = trim(substr($buffer, 53, 8)); $BUF_record["rang_naissance"] = trim(substr($buffer, 61, 1)); $BUF_record["date_entree"] = trim(substr($buffer, 62, 8)); $BUF_record["date_sortie"] = trim(substr($buffer, 70, 8)); $BUF_record["base_remboursement_c"] = trim(substr($buffer, 76, 8)); $BUF_record["total_remboursable_amo"] = trim(substr($buffer, 84, 8)); $BUF_record["total_honoraires_factures"] = trim(substr($buffer, 92, 8)); $BUF_record["total_honoraires_remboursable"] = trim(substr($buffer, 100, 8)); $BUF_record["total_assure_avant_oc"] = trim(substr($buffer, 108, 8)); $BUF_record["total_remboursable_oc_ph"] = trim(substr($buffer, 116, 8)); $BUF_record["total_remboursable_oc_honoraires"] = trim(substr($buffer, 124, 8)); $BUF_record["total_facture_ph"] = trim(substr($buffer, 132, 8)); //if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = trim($current_rsfa_index + 99000000000); $BUF_record["no_rss"] = '9' . str_pad(trim($current_rsfa_index), 8, '0', STR_PAD_LEFT); //} $BUF_record["ok"] = TRUE; break; default : // nothing to do } // remplacement de l'immatriculation de l'assuré si l'immatriculation individuelle est renseignée if ($BUF_record["immatriculation_indiv"] != "" && floatval($BUF_record["immatriculation_indiv"]) != 0) { $BUF_record["immatriculation_assure"] = $BUF_record["immatriculation_indiv"]; $BUF_record["cle_immatriculation_assure"] = $BUF_record["cle_immatriculation_indiv"]; } //if($BUF_record["date_paiement_amo"] === '44210000') { // echo "\r\n" . date("d/m/Y H:i:s") . "\t" . "DEBUG" . "\t" . "DATE PAIEMENT AMO l. 23140 : " . $BUF_record["date_paiement_amo"] ; //} // if ($BUF_record["grand_regime"] == "XX") { // $BUF_record["grand_regime"] = "01"; // } // if ($BUF_record["grand_regime"] == "DI") { // $BUF_record["grand_regime"] = "01"; // } if ($BUF_record["sexe"] == "") { $BUF_record["sexe"] = "1"; } $rsf_last_RSS = $BUF_record["no_rss"]; } // RSF B Prestations hospitalières if ($BUF_record["type_enregistrement"] == "B" && $qB == TRUE) { if ($ENV_TYPEETS == "1") { $BUF_130 = trim(substr($buffer, 130, 100)); if ($buf_len > 180 ) { $BUF_version = "2017"; } else if ($BUF_130 == "") { $BUF_version = "2006"; } else { $BUF_version = "2008"; } } else { $BUF_115 = trim(substr($buffer, 115, 100)); //Format de mars 2016 if ($buf_len > 150 ) { $BUF_version = "ACE2017"; } else if ($BUF_115 != "") { $BUF_version = "ACE2016"; } else { $BUF_version = "ACE2008"; } } $BUF_record["finess"] = trim(substr($buffer, 1, 9)); $BUF_record["no_rss"] = ""; switch ($BUF_version) { case "2017" : $BUF_record["BUF_offsets"] = $rsf_offsets_2017_B; $BUF_record["no_rss"] = trim(substr($buffer, 19, 20)); $BUF_record["sexe"] = trim(substr($buffer, 39, 1)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 39, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 52, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 54, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 57, 9)); $BUF_record["immatriculation_indiv"] = trim(substr($buffer, 66, 13)); $BUF_record["cle_immatriculation_indiv"] = trim(substr($buffer, 79, 2)); $BUF_record["mode_traitement"] = trim(substr($buffer, 81, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 83, 3)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 86, 1)); $BUF_record["date_debut"] = trim(substr($buffer, 89, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 97, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 105, 5)); $BUF_record["nombre"] = trim(substr($buffer, 110, 3)); $BUF_record["coefficient"] = trim(substr($buffer, 113, 5)); $BUF_record["code_pec_fj"] = trim(substr($buffer, 118, 1)); $BUF_record["coefficient_mco"] = trim(substr($buffer, 119, 5)); $BUF_record["prix_unitaire"] = trim(substr($buffer, 126, 7)); $BUF_record["base_remboursement"] = trim(substr($buffer, 133, 8)); $BUF_record["taux"] = trim(substr($buffer, 141, 3)); $BUF_record["montant_remboursable"] = trim(substr($buffer, 144, 8)); $BUF_record["montant_total_depense"] = trim(substr($buffer, 152, 8)); $BUF_record["montant_remboursable_oc"] = trim(substr($buffer, 160, 7)); $BUF_record["no_ghs"] = trim(substr($buffer, 167, 4)); $BUF_record["montant_remboursé_noemie"] = trim(substr($buffer, 171, 8)); $BUF_record["nature_noemie"] = trim(substr($buffer, 179, 3)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; case "2008" : $BUF_record["BUF_offsets"] = $rsf_offsets_2008_B; $BUF_record["no_rss"] = trim(substr($buffer, 10, 20)); $BUF_record["sexe"] = trim(substr($buffer, 30, 1)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 32, 13)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 45, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 48, 9)); $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["mode_traitement"] = trim(substr($buffer, 57, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 59, 3)); $BUF_record["date_debut"] = trim(substr($buffer, 62, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 70, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 78, 5)); $BUF_record["nombre"] = trim(substr($buffer, 83, 3)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 86, 1)); $BUF_record["coefficient"] = trim(substr($buffer, 87, 5)); $BUF_record["code_pec_fj"] = trim(substr($buffer, 92, 1)); $BUF_record["coefficient_mco"] = trim(substr($buffer, 93, 5)); $BUF_record["prix_unitaire"] = trim(substr($buffer, 98, 7)); $BUF_record["base_remboursement"] = trim(substr($buffer, 105, 8)); $BUF_record["taux"] = trim(substr($buffer, 113, 3)); $BUF_record["montant_remboursable"] = trim(substr($buffer, 116, 8)); $BUF_record["montant_total_depense"] = trim(substr($buffer, 124, 8)); $BUF_record["montant_remboursable_oc"] = trim(substr($buffer, 132, 7)); $BUF_record["no_ghs"] = trim(substr($buffer, 139, 4)); $BUF_record["montant_remboursé_noemie"] = trim(substr($buffer, 143, 8)); $BUF_record["nature_noemie"] = trim(substr($buffer, 151, 3)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; case "2006" : $BUF_record["BUF_offsets"] = $rsf_offsets_2006_B; $BUF_record["no_rss"] = trim(substr($buffer, 10, 7)); $BUF_record["sexe"] = ""; $BUF_record["immatriculation_assure"] = trim(substr($buffer, 17, 13)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 30, 3)); $BUF_record["no_facture"] = ""; $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["mode_traitement"] = trim(substr($buffer, 33, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 35, 3)); $BUF_record["date_debut"] = trim(substr($buffer, 38, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 46, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 54, 5)); $BUF_record["nombre"] = trim(substr($buffer, 59, 3)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 62, 1)); $BUF_record["coefficient"] = trim(substr($buffer, 63, 5)); $BUF_record["code_pec_fj"] = trim(substr($buffer, 68, 1)); $BUF_record["coefficient_mco"] = trim(substr($buffer, 69, 5)); $BUF_record["prix_unitaire"] = trim(substr($buffer, 74, 7)); $BUF_record["base_remboursement"] = trim(substr($buffer, 81, 8)); $BUF_record["taux"] = trim(substr($buffer, 89, 3)); $BUF_record["montant_remboursable"] = trim(substr($buffer, 92, 8)); $BUF_record["montant_total_depense"] = trim(substr($buffer, 100, 8)); $BUF_record["montant_remboursable_oc"] = trim(substr($buffer, 108, 7)); $BUF_record["no_ghs"] = trim(substr($buffer, 115, 4)); $BUF_record["montant_remboursé_noemie"] = trim(substr($buffer, 119, 8)); $BUF_record["nature_noemie"] = trim(substr($buffer, 127, 3)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; case "ACE2017" : $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2017_B; $BUF_record["no_rss"] = 0; $BUF_record["sexe"] = ""; $BUF_record["immatriculation_assure"] = trim(substr($buffer, 19, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 32, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 34, 3)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 37, 9)); $BUF_record["immatriculation_indiv"] = trim(substr($buffer, 46, 13)); $BUF_record["cle_immatriculation_indiv"] = trim(substr($buffer, 59, 2)); $BUF_record["no_facture"] = trim(substr($buffer, 37, 9)); $BUF_record["mode_traitement"] = trim(substr($buffer, 61, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 63, 3)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 66, 1)); $BUF_record["specialite_executant"] = trim(substr($buffer, 67, 1)); $BUF_record["date_debut"] = trim(substr($buffer, 69, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 69, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 77, 5)); $BUF_record["nombre"] = trim(substr($buffer, 82, 3)); $BUF_record["coefficient"] = trim(substr($buffer, 85, 6)); $BUF_record["code_pec_fj"] = trim(substr($buffer, 91, 1)); $BUF_record["coefficient_mco"] = trim(substr($buffer, 92, 5)); $BUF_record["prix_unitaire"] = trim(substr($buffer, 99, 7)); $BUF_record["base_remboursement"] = trim(substr($buffer, 106, 8)); $BUF_record["taux"] = trim(substr($buffer, 114, 3)); $BUF_record["montant_remboursable"] = trim(substr($buffer, 117, 8)); $BUF_record["montant_total_depense"] = trim(substr($buffer, 125, 8)); $BUF_record["montant_remboursable_oc"] = trim(substr($buffer, 133, 7)); $BUF_record["no_ghs"] = "0000"; $BUF_record["montant_remboursé_noemie"] = "00000000"; $BUF_record["nature_noemie"] = ""; $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; break; case "ACE2016" : $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2016_B; $BUF_record["no_rss"] = 0; $BUF_record["sexe"] = "1"; $BUF_record["immatriculation_assure"] = trim(substr($buffer, 19, 13)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 34, 3)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 37, 9)); $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["no_facture"] = trim(substr($buffer, 37, 9)); $BUF_record["mode_traitement"] = trim(substr($buffer, 46, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 48, 3)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 51, 1)); $BUF_record["date_debut"] = trim(substr($buffer, 54, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 54, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 62, 5)); $BUF_record["nombre"] = trim(substr($buffer, 67, 3)); $BUF_record["coefficient"] = trim(substr($buffer, 70, 6)); $BUF_record["code_pec_fj"] = ""; $BUF_record["coefficient_mco"] = trim(substr($buffer, 119, 5)); $BUF_record["prix_unitaire"] = trim(substr($buffer, 78, 7)); $BUF_record["base_remboursement"] = trim(substr($buffer, 85, 8)); $BUF_record["taux"] = trim(substr($buffer, 93, 3)); $BUF_record["montant_remboursable"] = trim(substr($buffer, 96, 8)); $BUF_record["montant_total_depense"] = trim(substr($buffer, 104, 8)); $BUF_record["montant_remboursable_oc"] = trim(substr($buffer, 112, 7)); $BUF_record["no_ghs"] = "0000"; $BUF_record["montant_remboursé_noemie"] = "00000000"; $BUF_record["nature_noemie"] = ""; $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; break; case "ACE2008" : $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2008_B; $BUF_record["no_rss"] = 0; $BUF_record["sexe"] = "1"; $BUF_record["immatriculation_assure"] = trim(substr($buffer, 10, 13)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 25, 3)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 28, 9)); $BUF_record["no_facture"] = trim(substr($buffer, 28, 9)); $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["mode_traitement"] = trim(substr($buffer, 37, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 39, 3)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 42, 1)); $BUF_record["date_debut"] = trim(substr($buffer, 45, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 45, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 53, 5)); $BUF_record["nombre"] = trim(substr($buffer, 58, 3)); $BUF_record["coefficient"] = trim(substr($buffer, 61, 6)); $BUF_record["code_pec_fj"] = ""; $BUF_record["prix_unitaire"] = trim(substr($buffer, 69, 7)); $BUF_record["base_remboursement"] = trim(substr($buffer, 76, 8)); $BUF_record["taux"] = trim(substr($buffer, 84, 3)); $BUF_record["montant_remboursable"] = trim(substr($buffer, 87, 8)); $BUF_record["montant_total_depense"] = trim(substr($buffer, 95, 8)); $BUF_record["montant_remboursable_oc"] = trim(substr($buffer, 103, 7)); $BUF_record["coefficient_mco"] = trim(substr($buffer, 110, 5)); // RSF_ACE B 2014 $BUF_record["no_ghs"] = "0000"; $BUF_record["montant_remboursé_noemie"] = "00000000"; $BUF_record["nature_noemie"] = ""; $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; break; default : // nothing to do } if (trim($BUF_record["date_fin"]) == "") { $BUF_record["date_fin"] = $BUF_record["date_debut"]; } } // RSF C Honoraires if ($BUF_record["type_enregistrement"] == "C" && $qB == TRUE) { // Pour le privé, on ne traite les RSF_C que si l'option "Considérer les FSD comme des prestations cliniques et non honoraires" est activée dans les paramètres systèmes de l'application // On les considère alors comme des type B, le CA des honoraire est récupéré par la clinique et non pas par les médecins if ($ENV_TYPEETS == "1") { if($ENV_OPTPMSI_FSD_B == "1") { $BUF_130 = trim(substr($buffer, 130, 100)); if ($buf_len > 165 ) { $BUF_version = "2017"; $BUF_record["code_acte"] = trim(substr($buffer, 97, 5)); } else if ($BUF_130 == "") { $BUF_version = "2003"; $BUF_record["code_acte"] = trim(substr($buffer, 47, 5)); } else { $BUF_version = "2008"; $BUF_record["code_acte"] = trim(substr($buffer, 71, 5)); } if ($BUF_record["code_acte"] == "FSD") { switch ($BUF_version) { case "2017" : $BUF_record["finess"] = trim(substr($buffer, 1, 9)); $BUF_record["no_rss"] = trim(substr($buffer, 19, 20)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 39, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 52, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 54, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 57, 9)); $BUF_record["immatriculation_indiv"] = trim(substr($buffer, 66, 13)); $BUF_record["cle_immatriculation_indiv"] = trim(substr($buffer, 79, 2)); $BUF_record["mode_traitement"] = trim(substr($buffer, 81, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 83, 3)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 86, 1)); $BUF_record["specialite_executant"] = trim(substr($buffer, 87, 2)); $BUF_record["date_debut"] = trim(substr($buffer, 89, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 89, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 97, 5)); $BUF_record["nombre"] = trim(substr($buffer, 102, 2)); $BUF_record["coefficient"] = trim(substr($buffer, 104, 6)); $BUF_record["coefficient_mco"] = "10000"; $BUF_record["denombrement"] = trim(substr($buffer, 110, 2)); $BUF_record["prix_unitaire"] = trim(substr($buffer, 112, 7)); $BUF_record["base_remboursement"] = trim(substr($buffer, 119, 7)); $BUF_record["taux"] = trim(substr($buffer, 126, 3)); $BUF_record["montant_remboursable"] = trim(substr($buffer, 129, 7)); $BUF_record["montant_total_depense"] = trim(substr($buffer, 136, 7)); $BUF_record["montant_remboursable_oc"] = trim(substr($buffer, 143, 6)); $BUF_record["montant_remboursé_noemie"] = trim(substr($buffer, 149, 8)); $BUF_record["nature_noemie"] = trim(substr($buffer, 157, 3)); $BUF_record["type_uf_consultation"] = ""; // RSF_ACE C 2014 if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; case "2008" : $BUF_record["finess"] = trim(substr($buffer, 1, 9)); $BUF_record["no_rss"] = trim(substr($buffer, 10, 20)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 30, 13)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 45, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 48, 9)); $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["mode_traitement"] = trim(substr($buffer, 57, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 59, 3)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 62, 1)); $BUF_record["date_debut"] = trim(substr($buffer, 63, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 63, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 71, 5)); $BUF_record["nombre"] = trim(substr($buffer, 76, 2)); $BUF_record["coefficient"] = trim(substr($buffer, 78, 6)); $BUF_record["coefficient_mco"] = "10000"; $BUF_record["denombrement"] = trim(substr($buffer, 84, 2)); $BUF_record["prix_unitaire"] = trim(substr($buffer, 86, 7)); $BUF_record["base_remboursement"] = trim(substr($buffer, 93, 7)); $BUF_record["taux"] = trim(substr($buffer, 100, 3)); $BUF_record["montant_remboursable"] = trim(substr($buffer, 103, 7)); $BUF_record["montant_total_depense"] = trim(substr($buffer, 110, 7)); $BUF_record["montant_remboursable_oc"] = trim(substr($buffer, 117, 6)); $BUF_record["montant_remboursé_noemie"] = trim(substr($buffer, 123, 8)); $BUF_record["nature_noemie"] = trim(substr($buffer, 131, 3)); $BUF_record["type_uf_consultation"] = ""; // RSF_ACE C 2014 if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; case "2003" : $BUF_record["finess"] = trim(substr($buffer, 1, 9)); $BUF_record["no_rss"] = trim(substr($buffer, 10, 7)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 17, 13)); $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 30, 3)); $BUF_record["mode_traitement"] = trim(substr($buffer, 33, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 35, 3)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 38, 1)); $BUF_record["date_debut"] = trim(substr($buffer, 39, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 39, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 47, 5)); $BUF_record["nombre"] = trim(substr($buffer, 52, 2)); $BUF_record["coefficient"] = trim(substr($buffer, 54, 6)); $BUF_record["coefficient_mco"] = "10000"; $BUF_record["denombrement"] = trim(substr($buffer, 60, 2)); $BUF_record["prix_unitaire"] = trim(substr($buffer, 62, 7)); $BUF_record["base_remboursement"] = trim(substr($buffer, 69, 7)); $BUF_record["taux"] = trim(substr($buffer, 76, 3)); $BUF_record["montant_remboursable"] = trim(substr($buffer, 79, 7)); $BUF_record["montant_total_depense"] = trim(substr($buffer, 86, 7)); $BUF_record["montant_remboursable_oc"] = trim(substr($buffer, 93, 6)); $BUF_record["montant_remboursé_noemie"] = trim(substr($buffer, 99, 8)); $BUF_record["nature_noemie"] = trim(substr($buffer, 107, 3)); $BUF_record["type_uf_consultation"] = ""; // RSF_ACE C 2014 if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; default : // nothing to do } } else { $BUF_version = "NONE"; } } else { $BUF_version = "NONE"; } } else { $BUF_version = "NONE"; $BUF_117 = trim(substr($buffer, 117, 100)); //Format de mars 2016 if ($buf_len > 150 ) { $BUF_version = "ACE2017"; } else if ($BUF_117 != "") { $BUF_version = "ACE2016"; } else { $BUF_49 = trim(substr($buffer, 49, 2)); if ($BUF_49 == "20") { $BUF_version = "ACE2008"; } else { $BUF_43 = trim(substr($buffer, 49, 2)); if ($BUF_43 == "20") { $BUF_version = "ACE2007"; } } } $BUF_record["finess"] = trim(substr($buffer, 1, 9)); $BUF_record["no_rss"] = ""; if ($BUF_version == "ACE2017") { $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2016_B; $BUF_record["no_rss"] = 0; $BUF_record["sexe"] = "1"; $BUF_record["immatriculation_assure"] = trim(substr($buffer, 19, 13)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 34, 3)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 37, 9)); $BUF_record["no_facture"] = trim(substr($buffer, 37, 9)); $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["mode_traitement"] = trim(substr($buffer, 61, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 63, 3)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 66, 1)); $BUF_record["specialite_exec"] = trim(substr($buffer, 67, 2)); $BUF_record["date_debut"] = trim(substr($buffer, 69, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 69, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 77, 5)); $BUF_record["nombre"] = trim(substr($buffer, 82, 3)); $BUF_record["coefficient"] = trim(substr($buffer, 85, 6)); $BUF_record["code_pec_fj"] = ""; $BUF_record["prix_unitaire"] = trim(substr($buffer, 93, 7)); $BUF_record["base_remboursement"] = trim(substr($buffer, 100, 8)); $BUF_record["taux"] = trim(substr($buffer, 108, 3)); $BUF_record["montant_remboursable"] = trim(substr($buffer, 111, 8)); $BUF_record["montant_total_depense"] = trim(substr($buffer, 119, 8)); $BUF_record["montant_remboursable_oc"] = trim(substr($buffer, 134, 7)); $BUF_record["type_uf_consultation"] = trim(substr($buffer, 145, 2)); // RSF_ACE C 2014 $BUF_record["coefficient_mco"] = trim(substr($buffer, 147, 5)); // RSF_ACE C 2014 $BUF_record["no_ghs"] = "0000"; $BUF_record["montant_remboursé_noemie"] = "00000000"; $BUF_record["nature_noemie"] = ""; $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; } if ($BUF_version == "ACE2016") { $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2016_B; $BUF_record["no_rss"] = 0; $BUF_record["sexe"] = "1"; $BUF_record["immatriculation_assure"] = trim(substr($buffer, 19, 13)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 34, 3)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 37, 9)); $BUF_record["no_facture"] = trim(substr($buffer, 37, 9)); $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["mode_traitement"] = trim(substr($buffer, 46, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 48, 3)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 51, 1)); $BUF_record["specialite_exec"] = trim(substr($buffer, 52, 2)); $BUF_record["date_debut"] = trim(substr($buffer, 54, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 54, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 62, 5)); $BUF_record["nombre"] = trim(substr($buffer, 67, 3)); $BUF_record["coefficient"] = trim(substr($buffer, 70, 6)); $BUF_record["code_pec_fj"] = ""; $BUF_record["prix_unitaire"] = trim(substr($buffer, 78, 7)); $BUF_record["base_remboursement"] = trim(substr($buffer, 85, 8)); $BUF_record["taux"] = trim(substr($buffer, 93, 3)); $BUF_record["montant_remboursable"] = trim(substr($buffer, 96, 8)); $BUF_record["montant_total_depense"] = trim(substr($buffer, 104, 8)); $BUF_record["montant_remboursable_oc"] = trim(substr($buffer, 112, 7)); $BUF_record["type_uf_consultation"] = trim(substr($buffer, 119, 2)); // RSF_ACE C 2014 $BUF_record["coefficient_mco"] = trim(substr($buffer, 121, 5)); // RSF_ACE C 2014 $BUF_record["no_ghs"] = "0000"; $BUF_record["montant_remboursé_noemie"] = "00000000"; $BUF_record["nature_noemie"] = ""; $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; } if ($BUF_version == "ACE2008") { $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2008_B; $BUF_record["no_rss"] = 0; $BUF_record["sexe"] = "1"; $BUF_record["immatriculation_assure"] = trim(substr($buffer, 10, 13)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 25, 3)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 28, 9)); $BUF_record["no_facture"] = trim(substr($buffer, 28, 9)); $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["mode_traitement"] = trim(substr($buffer, 37, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 39, 3)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 42, 1)); $BUF_record["specialite_exec"] = trim(substr($buffer, 43, 2)); $BUF_record["date_debut"] = trim(substr($buffer, 45, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 45, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 53, 5)); $BUF_record["nombre"] = trim(substr($buffer, 58, 3)); $BUF_record["coefficient"] = trim(substr($buffer, 61, 6)); $BUF_record["code_pec_fj"] = ""; $BUF_record["prix_unitaire"] = trim(substr($buffer, 69, 7)); $BUF_record["base_remboursement"] = trim(substr($buffer, 76, 8)); $BUF_record["taux"] = trim(substr($buffer, 84, 3)); $BUF_record["montant_remboursable"] = trim(substr($buffer, 87, 8)); $BUF_record["montant_total_depense"] = trim(substr($buffer, 95, 8)); $BUF_record["montant_remboursable_oc"] = trim(substr($buffer, 103, 7)); $BUF_record["type_uf_consultation"] = trim(substr($buffer, 110, 2)); // RSF_ACE C 2014 $BUF_record["coefficient_mco"] = trim(substr($buffer, 112, 5)); // RSF_ACE C 2014 $BUF_record["no_ghs"] = "0000"; $BUF_record["montant_remboursé_noemie"] = "00000000"; $BUF_record["nature_noemie"] = ""; $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; } if ($BUF_version == "ACE2007") { $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2008_B; $BUF_record["no_rss"] = 0; $BUF_record["sexe"] = trim(substr($buffer, 17, 1)); if ($BUF_record["sexe"] != "1" && $BUF_record["sexe"] != "2" && $BUF_record["sexe"] != "3") { $BUF_record["sexe"] = "1"; } $BUF_record["immatriculation_assure"] = trim(substr($buffer, 17, 13)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 30, 3)); $BUF_record["no_sejour_administratif"] = "0"; $BUF_record["no_facture"] = "0"; $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["mode_traitement"] = trim(substr($buffer, 33, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 35, 3)); $BUF_record["justificatif_exo"] = trim(substr($buffer, 38, 1)); $BUF_record["date_debut"] = trim(substr($buffer, 39, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 39, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 47, 5)); $BUF_record["nombre"] = trim(substr($buffer, 52, 2)); $BUF_record["coefficient"] = trim(substr($buffer, 54, 6)); $BUF_record["code_pec_fj"] = ""; $BUF_record["coefficient_mco"] = "10000"; $BUF_record["prix_unitaire"] = trim(substr($buffer, 62, 7)); $BUF_record["base_remboursement"] = trim(substr($buffer, 69, 7)); $BUF_record["taux"] = trim(substr($buffer, 76, 3)); $BUF_record["montant_remboursable"] = trim(substr($buffer, 79, 7)); $BUF_record["montant_total_depense"] = trim(substr($buffer, 86, 7)); $BUF_record["montant_remboursable_oc"] = "0000000"; $BUF_record["type_uf_consultation"] = ""; // RSF_ACE C 2014 $BUF_record["no_ghs"] = "0000"; $BUF_record["montant_remboursé_noemie"] = "0000000"; $BUF_record["nature_noemie"] = ""; $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; } } if (trim($BUF_record["date_fin"]) == "") { $BUF_record["date_fin"] = $BUF_record["date_debut"]; } } // RSF P (LPP) if ($BUF_record["type_enregistrement"] == "P" && $qP == TRUE) { $BUF_version_public = ""; if ($ENV_TYPEETS == "1") { //PRIVE $BUF_100 = trim(substr($buffer, 100, 100)); if ($buf_len > 135 ) { $BUF_version = "2017"; } else if ($BUF_100 == "") { $BUF_version = "2006"; } else { $BUF_version = "2008"; } } if ($ENV_TYPEETS !== "1") { //PUBLIC ET ESPIC $BUF_version_public = "RSF_ACE_P_2023"; } // Attention format 2008 sans la fin if ($BUF_version == "2006") { if (get_num(substr($buffer, 57, 4)) >= 2004 && get_num(substr($buffer, 57, 4)) <= 2010) { if (controle_check_date(trim(substr($buffer, 57, 8)),$erreur,$commentaire)) { $BUF_version = "2008"; } } if (get_num(substr($buffer, 61, 4)) >= 2004 && get_num(substr($buffer, 61, 4)) <= 2010) { if (controle_check_date(trim(substr($buffer, 57, 8)),$erreur,$commentaire)) { $BUF_version = "2008"; } } } $BUF_record["finess"] = trim(substr($buffer, 1, 9)); $BUF_record["no_rss"] = ""; switch ($BUF_version) { case "2017" : $BUF_record["BUF_offsets"] = $rsf_offsets_2017_P; $BUF_record["no_rss"] = trim(substr($buffer, 19, 20)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 39, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 52, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 54, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 57, 9)); $BUF_record["immatriculation_indiv"] = trim(substr($buffer, 66, 13)); $BUF_record["cle_immatriculation_indiv"] = trim(substr($buffer, 79, 2)); $BUF_record["date_debut"] = trim(substr($buffer, 81, 8)); $BUF_record["code_lpp"] = trim(substr($buffer, 89, 13)); $BUF_record["nombre"] = trim(substr($buffer, 102, 2)); $BUF_record["prix_unitaire"] = trim(substr($buffer, 104, 7)); $BUF_record["montant_facture"] = trim(substr($buffer, 111, 7)); $BUF_record["code_lpp_2"] = ""; $BUF_record["nombre_2"] = 0; $BUF_record["prix_unitaire_2"] = 0; $BUF_record["montant_facture_2"] = 0; if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; case "2008" : $BUF_record["BUF_offsets"] = $rsf_offsets_2008_P; $BUF_record["no_rss"] = trim(substr($buffer, 10, 20)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 30, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 43, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 45, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 48, 9)); $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["date_debut"] = trim(substr($buffer, 57, 8)); $BUF_record["code_lpp"] = trim(substr($buffer, 65, 13)); $BUF_record["nombre"] = trim(substr($buffer, 78, 2)); $BUF_record["prix_unitaire"] = trim(substr($buffer, 80, 7)); $BUF_record["montant_facture"] = trim(substr($buffer, 87, 7)); $BUF_record["code_lpp_2"] = ""; $BUF_record["nombre_2"] = 0; $BUF_record["prix_unitaire_2"] = 0; $BUF_record["montant_facture_2"] = 0; if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; case "2006" : $BUF_record["BUF_offsets"] = $rsf_offsets_2006_P; $BUF_record["no_rss"] = trim(substr($buffer, 10, 7)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 17, 13)); $BUF_record["cle_immatriculation_assure"] = ""; $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 30, 3)); $BUF_record["no_facture"] = ""; $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["date_debut"] = trim(substr($buffer, 33, 8)); $BUF_record["code_lpp"] = trim(substr($buffer, 41, 13)); $BUF_record["nombre"] = trim(substr($buffer, 54, 2)); $BUF_record["prix_unitaire"] = trim(substr($buffer, 56, 7)); $BUF_record["montant_facture"] = trim(substr($buffer, 63, 7)); $BUF_record["code_lpp_2"] = trim(substr($buffer, 70, 13)); $BUF_record["nombre_2"] = trim(substr($buffer, 83, 2)); $BUF_record["prix_unitaire_2"] = trim(substr($buffer, 85, 7)); $BUF_record["montant_facture_2"] = trim(substr($buffer, 92, 7)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; default : // nothing to do } if ($BUF_version_public === "RSF_ACE_P_2023"){ //$BUF_record["BUF_offsets"] = $rsf_offsets_2017_P;// A FAIRE $BUF_record["no_rss"] = 0; $BUF_record["immatriculation_assure"] = trim(substr($buffer, 19, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 32, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 34, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 119, 9)); if ($BUF_record["no_facture"] == "") { $BUF_record["no_facture"] = trim(substr($buffer, 37, 9)); } $BUF_record["immatriculation_indiv"] = trim(substr($buffer, 46, 13)); $BUF_record["cle_immatriculation_indiv"] = trim(substr($buffer, 59, 2)); $BUF_record["date_debut"] = trim(substr($buffer, 61, 8)); $BUF_record["code_lpp"] = trim(substr($buffer, 69, 13)); $BUF_record["nombre"] = trim(substr($buffer, 82, 2)); $BUF_record["prix_unitaire"] = trim(substr($buffer, 84, 7)); $BUF_record["montant_facture"] = trim(substr($buffer, 91, 7)); $BUF_record["code_lpp_2"] = ""; $BUF_record["nombre_2"] = 0; $BUF_record["prix_unitaire_2"] = 0; $BUF_record["montant_facture_2"] = 0; if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; } } // RSF H (UCD) if ($BUF_record["type_enregistrement"] == "H" && $qH == TRUE) { if ($ENV_TYPEETS == "1") { $BUF_100 = trim(substr($buffer, 81, 100)); if ($buf_len > 135 ) { $BUF_version = "2018"; } else if ($buf_len > 130 ) { $BUF_version = "2017"; } else if ($BUF_100 == "") { $BUF_version = "2006"; } else { $BUF_version = "2008"; } } // Initialisation variables $BUF_record["finess"] = trim(substr($buffer, 1, 9)); $BUF_record["no_rss"] = ""; $BUF_record["immatriculation_assure"] = ""; $BUF_record["cle_immatriculation_assure"] = ""; $BUF_record["rang_beneficiaire"] = ""; $BUF_record["no_facture"] = ""; $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["date_debut"] = ""; $BUF_record["code_ucd"] = ""; $BUF_record["indication"] = ""; $BUF_record["coefficient_fractionnement"] = "10000"; $BUF_record["prix_unitaire_achat"] = ""; $BUF_record["prix_unitaire_ecart_indemnisable"] = "0000000"; $BUF_record["montant_ecart_indemnisable"] = ""; $BUF_record["nombre"] = ""; $BUF_record["montant_facture"] = ""; switch ($BUF_version) { case "2018" : $BUF_record["BUF_offsets"] = $rsf_offsets_2017_H; $BUF_record["no_rss"] = trim(substr($buffer, 19, 20)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 39, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 52, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 54, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 57, 9)); $BUF_record["immatriculation_indiv"] = trim(substr($buffer, 66, 13)); $BUF_record["cle_immatriculation_indiv"] = trim(substr($buffer, 79, 2)); $BUF_record["date_debut"] = trim(substr($buffer, 81, 8)); $BUF_record["code_ucd"] = trim(substr($buffer, 89, 7)); $BUF_record["indication"] = trim(substr($buffer, 96, 7)); $BUF_record["coefficient_fractionnement"] = trim(substr($buffer, 103, 5)); $BUF_record["prix_unitaire_achat"] = trim(substr($buffer, 108, 7)); $BUF_record["prix_unitaire_ecart_indemnisable"] = trim(substr($buffer, 115, 7)); $BUF_record["montant_ecart_indemnisable"] = trim(substr($buffer, 122, 7)); $BUF_record["nombre"] = trim(substr($buffer, 129, 3)); $BUF_record["montant_facture"] = trim(substr($buffer, 132, 7)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; case "2017" : $BUF_record["BUF_offsets"] = $rsf_offsets_2017_H; $BUF_record["no_rss"] = trim(substr($buffer, 19, 20)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 39, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 52, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 54, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 57, 9)); $BUF_record["immatriculation_indiv"] = trim(substr($buffer, 66, 13)); $BUF_record["cle_immatriculation_indiv"] = trim(substr($buffer, 79, 2)); $BUF_record["date_debut"] = trim(substr($buffer, 81, 8)); $BUF_record["code_ucd"] = trim(substr($buffer, 89, 7)); $BUF_record["coefficient_fractionnement"] = trim(substr($buffer, 96, 5)); $BUF_record["prix_unitaire_achat"] = trim(substr($buffer, 101, 7)); $BUF_record["prix_unitaire_ecart_indemnisable"] = trim(substr($buffer, 108, 7)); $BUF_record["montant_ecart_indemnisable"] = trim(substr($buffer, 115, 7)); $BUF_record["nombre"] = trim(substr($buffer, 122, 3)); $BUF_record["montant_facture"] = trim(substr($buffer, 125, 7)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; case "2008" : $BUF_record["BUF_offsets"] = $rsf_offsets_2008_P; $BUF_record["no_rss"] = trim(substr($buffer, 10, 20)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 30, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 43, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 45, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 48, 9)); $BUF_record["date_debut"] = trim(substr($buffer, 57, 8)); $BUF_record["code_ucd"] = trim(substr($buffer, 65, 7)); $BUF_record["coefficient_fractionnement"] = trim(substr($buffer, 72, 5)); $BUF_record["prix_unitaire_achat"] = trim(substr($buffer, 77, 7)); $BUF_record["prix_unitaire_ecart_indemnisable"] = trim(substr($buffer, 84, 7)); $BUF_record["montant_ecart_indemnisable"] = trim(substr($buffer, 91, 7)); $BUF_record["nombre"] = trim(substr($buffer, 98, 3)); $BUF_record["montant_facture"] = trim(substr($buffer, 101, 7)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; case "2006" : $BUF_record["BUF_offsets"] = $rsf_offsets_2006_P; $BUF_record["no_rss"] = trim(substr($buffer, 10, 7)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 17, 13)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 30, 3)); $BUF_record["date_debut"] = trim(substr($buffer, 33, 8)); $BUF_record["code_ucd"] = trim(substr($buffer, 41, 7)); $BUF_record["prix_unitaire_achat"] = trim(substr($buffer, 49, 7)); $BUF_record["montant_ecart_indemnisable"] = trim(substr($buffer, 56, 7)); $BUF_record["nombre"] = trim(substr($buffer, 70, 3)); $BUF_record["montant_facture"] = trim(substr($buffer, 73, 7)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; default : // nothing to do } } // actes CCAM if ($BUF_record["type_enregistrement"] == "M" && $qM == TRUE) { if ($ENV_TYPEETS == "1") { $BUF_46 = trim(substr($buffer, 46, 1)); $BUF_70 = trim(substr($buffer, 70, 1)); $BUF_76 = trim(substr($buffer, 76, 1)); if ($buf_len > 145 ) { $BUF_version = "2017"; } else if ($BUF_70 >= "A" && $BUF_70 <= "Z") { $BUF_version = "2008"; } else { if ($BUF_76 >= "A" && $BUF_76 <= "Z" && trim($BUF_70) == "") { $BUF_version = "2008B"; } else { if (trim($BUF_46) != "") { $BUF_version = "2006"; } else { $BUF_version = "2006B"; } } } } else { $BUF_2016 = trim(substr($buffer, 51, 8)); //Format de mars 2016 $BUF_2016_OK = ""; if (substr($BUF_2016,4,2) == "20" && substr($BUF_2016,2,2) < 13 && substr($BUF_2016,0,2) < 32 && is_numeric($BUF_2016)) { $BUF_2016_OK = "OK"; } $BUF_46 = trim(substr($buffer, 46, 2)); if ($buf_len > 125) { $BUF_version = "ACE2017"; } else if ($BUF_2016_OK == 'OK' ) { $BUF_version = "ACE2016"; } else{ if (trim($BUF_46) == "20") { $BUF_version = "ACE2008"; } else { $BUF_version = "ACE2007"; } } } $BUF_record["finess"] = trim(substr($buffer, 1, 9)); $BUF_record["no_rss"] = ""; switch ($BUF_version) { case "2017" : $BUF_record["BUF_offsets"] = $rsf_offsets_2017_M; $BUF_record["no_rss"] = trim(substr($buffer, 19, 20)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 39, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 52, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 54, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 57, 9)); $BUF_record["immatriculation_indiv"] = trim(substr($buffer, 66, 13)); $BUF_record["cle_immatriculation_indiv"] = trim(substr($buffer, 79, 2)); $BUF_record["mode_traitement"] = trim(substr($buffer, 81, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 83, 3)); $BUF_record["date_acte"] = trim(substr($buffer, 86, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 94, 7)); $BUF_record["extension_ccam"] = trim(substr($buffer, 107, 1)); $BUF_record["activite_ccam"] = trim(substr($buffer, 108, 1)); $BUF_record["phase_ccam"] = trim(substr($buffer, 109, 1)); $BUF_record["modificateur_ccam_1"] = trim(substr($buffer, 110, 1)); $BUF_record["modificateur_ccam_2"] = trim(substr($buffer, 111, 1)); $BUF_record["modificateur_ccam_3"] = trim(substr($buffer, 112, 1)); $BUF_record["modificateur_ccam_4"] = trim(substr($buffer, 113, 1)); $BUF_record["association_nonprevue_ccam"] = trim(substr($buffer, 114, 1)); $BUF_record["remboursement_excp_ccam"] = trim(substr($buffer, 115, 1)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; case "2008" : $BUF_record["BUF_offsets"] = $rsf_offsets_2008_M; $BUF_record["no_rss"] = trim(substr($buffer, 10, 20)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 30, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 43, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 45, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 48, 9)); $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["mode_traitement"] = trim(substr($buffer, 57, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 59, 3)); $BUF_record["date_acte"] = trim(substr($buffer, 62, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 70, 7)); $BUF_record["extension_ccam"] = trim(substr($buffer, 83, 1)); $BUF_record["activite_ccam"] = trim(substr($buffer, 84, 1)); $BUF_record["phase_ccam"] = trim(substr($buffer, 85, 1)); $BUF_record["modificateur_ccam_1"] = trim(substr($buffer, 86, 1)); $BUF_record["modificateur_ccam_2"] = trim(substr($buffer, 87, 1)); $BUF_record["modificateur_ccam_3"] = trim(substr($buffer, 88, 1)); $BUF_record["modificateur_ccam_4"] = trim(substr($buffer, 89, 1)); $BUF_record["association_nonprevue_ccam"] = trim(substr($buffer, 90, 1)); $BUF_record["remboursement_excp_ccam"] = trim(substr($buffer, 91, 1)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; case "2008B" : $BUF_record["BUF_offsets"] = $rsf_offsets_2008B_M; $BUF_record["no_rss"] = trim(substr($buffer, 10, 20)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 30, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 43, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 45, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 48, 9)); $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["mode_traitement"] = trim(substr($buffer, 57, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 59, 3)); $BUF_record["date_acte"] = trim(substr($buffer, 62, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 76, 7)); $BUF_record["extension_ccam"] = trim(substr($buffer, 83, 1)); $BUF_record["activite_ccam"] = trim(substr($buffer, 84, 1)); $BUF_record["phase_ccam"] = trim(substr($buffer, 85, 1)); $BUF_record["modificateur_ccam_1"] = trim(substr($buffer, 86, 1)); $BUF_record["modificateur_ccam_2"] = trim(substr($buffer, 87, 1)); $BUF_record["modificateur_ccam_3"] = trim(substr($buffer, 88, 1)); $BUF_record["modificateur_ccam_4"] = trim(substr($buffer, 89, 1)); $BUF_record["association_nonprevue_ccam"] = trim(substr($buffer, 90, 1)); $BUF_record["remboursement_excp_ccam"] = trim(substr($buffer, 91, 1)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; case "2006" : $BUF_record["BUF_offsets"] = $rsf_offsets_2006_M; $BUF_record["no_rss"] = trim(substr($buffer, 10, 7)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 17, 13)); $BUF_record["cle_immatriculation_assure"] = ""; $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 30, 3)); $BUF_record["no_facture"] = ""; $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["mode_traitement"] = trim(substr($buffer, 33, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 35, 3)); $BUF_record["date_acte"] = trim(substr($buffer, 38, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 46, 7)); $BUF_record["extension_ccam"] = trim(substr($buffer, 59, 1)); $BUF_record["activite_ccam"] = trim(substr($buffer, 60, 1)); $BUF_record["phase_ccam"] = trim(substr($buffer, 61, 1)); $BUF_record["modificateur_ccam_1"] = trim(substr($buffer, 62, 1)); $BUF_record["modificateur_ccam_2"] = trim(substr($buffer, 63, 1)); $BUF_record["modificateur_ccam_3"] = trim(substr($buffer, 64, 1)); $BUF_record["modificateur_ccam_4"] = trim(substr($buffer, 65, 1)); $BUF_record["association_nonprevue_ccam"] = trim(substr($buffer, 66, 1)); $BUF_record["remboursement_excp_ccam"] = trim(substr($buffer, 67, 1)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; case "2006B" : $BUF_record["BUF_offsets"] = $rsf_offsets_2006_M; $BUF_record["no_rss"] = trim(substr($buffer, 10, 7)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 17, 13)); $BUF_record["cle_immatriculation_assure"] = ""; $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 30, 3)); $BUF_record["no_facture"] = ""; $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["mode_traitement"] = trim(substr($buffer, 33, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 35, 3)); $BUF_record["date_acte"] = trim(substr($buffer, 38, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 52, 7)); $BUF_record["extension_ccam"] = trim(substr($buffer, 59, 1)); $BUF_record["activite_ccam"] = trim(substr($buffer, 60, 1)); $BUF_record["phase_ccam"] = trim(substr($buffer, 61, 1)); $BUF_record["modificateur_ccam_1"] = trim(substr($buffer, 62, 1)); $BUF_record["modificateur_ccam_2"] = trim(substr($buffer, 63, 1)); $BUF_record["modificateur_ccam_3"] = trim(substr($buffer, 64, 1)); $BUF_record["modificateur_ccam_4"] = trim(substr($buffer, 65, 1)); $BUF_record["association_nonprevue_ccam"] = trim(substr($buffer, 66, 1)); $BUF_record["remboursement_excp_ccam"] = trim(substr($buffer, 67, 1)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; case "ACE2017" : $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2017_M; $BUF_record["no_rss"] = 0; $BUF_record["immatriculation_assure"] = trim(substr($buffer, 19, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 32, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 34, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 37, 9)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 37, 9)); $BUF_record["immatriculation_indiv"] = trim(substr($buffer, 46, 13)); $BUF_record["cle_immatriculation_indiv"] = trim(substr($buffer, 59, 2)); $BUF_record["mode_traitement"] = trim(substr($buffer, 61, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 63, 3)); $BUF_record["date_acte"] = trim(substr($buffer, 66, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 74, 7)); $BUF_record["extension_ccam"] = trim(substr($buffer, 87, 1)); $BUF_record["activite_ccam"] = trim(substr($buffer, 88, 1)); $BUF_record["phase_ccam"] = trim(substr($buffer, 89, 1)); $BUF_record["modificateur_ccam_1"] = trim(substr($buffer, 90, 1)); $BUF_record["modificateur_ccam_2"] = trim(substr($buffer, 91, 1)); $BUF_record["modificateur_ccam_3"] = trim(substr($buffer, 92, 1)); $BUF_record["modificateur_ccam_4"] = trim(substr($buffer, 93, 1)); $BUF_record["association_nonprevue_ccam"] = trim(substr($buffer, 94, 1)); $BUF_record["remboursement_excp_ccam"] = trim(substr($buffer, 95, 1)); $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; break; case "ACE2016" : $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2016_M; $BUF_record["no_rss"] = 0; $BUF_record["immatriculation_assure"] = trim(substr($buffer, 19, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 32, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 34, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 37, 9)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 37, 9)); $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["mode_traitement"] = trim(substr($buffer, 46, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 48, 3)); $BUF_record["date_acte"] = trim(substr($buffer, 51, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 59, 7)); $BUF_record["extension_ccam"] = trim(substr($buffer, 72, 1)); $BUF_record["activite_ccam"] = trim(substr($buffer, 73, 1)); $BUF_record["phase_ccam"] = trim(substr($buffer, 74, 1)); $BUF_record["modificateur_ccam_1"] = trim(substr($buffer, 75, 1)); $BUF_record["modificateur_ccam_2"] = trim(substr($buffer, 76, 1)); $BUF_record["modificateur_ccam_3"] = trim(substr($buffer, 77, 1)); $BUF_record["modificateur_ccam_4"] = trim(substr($buffer, 78, 1)); $BUF_record["association_nonprevue_ccam"] = trim(substr($buffer, 79, 1)); $BUF_record["remboursement_excp_ccam"] = trim(substr($buffer, 80, 1)); $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; break; case "ACE2008" : $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2008_M; $BUF_record["no_rss"] = 0; $BUF_record["immatriculation_assure"] = trim(substr($buffer, 10, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 23, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 25, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 28, 9)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 28, 9)); $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["mode_traitement"] = trim(substr($buffer, 37, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 39, 3)); $BUF_record["date_acte"] = trim(substr($buffer, 42, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 50, 7)); $BUF_record["extension_ccam"] = trim(substr($buffer, 63, 1)); $BUF_record["activite_ccam"] = trim(substr($buffer, 64, 1)); $BUF_record["phase_ccam"] = trim(substr($buffer, 65, 1)); $BUF_record["modificateur_ccam_1"] = trim(substr($buffer, 66, 1)); $BUF_record["modificateur_ccam_2"] = trim(substr($buffer, 67, 1)); $BUF_record["modificateur_ccam_3"] = trim(substr($buffer, 68, 1)); $BUF_record["modificateur_ccam_4"] = trim(substr($buffer, 69, 1)); $BUF_record["association_nonprevue_ccam"] = trim(substr($buffer, 70, 1)); $BUF_record["remboursement_excp_ccam"] = trim(substr($buffer, 71, 1)); $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; break; case "ACE2007" : $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2007_M; $BUF_record["no_rss"] = 0; $BUF_record["immatriculation_assure"] = trim(substr($buffer, 17, 13)); $BUF_record["immatriculation_indiv"] = ""; $BUF_record["cle_immatriculation_indiv"] = ""; $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 30, 3)); $BUF_record["mode_traitement"] = trim(substr($buffer, 33, 2)); $BUF_record["discpline_prestation"] = trim(substr($buffer, 35, 3)); $BUF_record["date_acte"] = trim(substr($buffer, 38, 8)); $BUF_record["code_acte"] = trim(substr($buffer, 46, 7)); $BUF_record["extension_ccam"] = trim(substr($buffer, 59, 1)); $BUF_record["activite_ccam"] = trim(substr($buffer, 60, 1)); $BUF_record["phase_ccam"] = trim(substr($buffer, 61, 1)); $BUF_record["modificateur_ccam_1"] = trim(substr($buffer, 62, 1)); $BUF_record["modificateur_ccam_2"] = trim(substr($buffer, 63, 1)); $BUF_record["modificateur_ccam_3"] = trim(substr($buffer, 64, 1)); $BUF_record["modificateur_ccam_4"] = trim(substr($buffer, 65, 1)); $BUF_record["association_nonprevue_ccam"] = trim(substr($buffer, 66, 1)); $BUF_record["remboursement_excp_ccam"] = trim(substr($buffer, 67, 1)); $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; break; default : // nothing to do } } // RSF I (Mutation en sortie) if ($BUF_record["type_enregistrement"] == "I" && $qI == TRUE) { if ($ENV_TYPEETS == "1") { if ($buf_len > 100 ) { // 88 avant 2017 et 112 depuis $BUF_version = "2017"; } else { $BUF_version = "2016"; } } $BUF_record["finess"] = trim(substr($buffer, 1, 9)); $BUF_record["no_rss"] = ""; switch ($BUF_version) { case "2017" : $BUF_record["BUF_offsets"] = $rsf_offsets_2017_I; $BUF_record["no_rss"] = trim(substr($buffer, 19, 20)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 39, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 52, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 54, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 57, 9)); $BUF_record["immatriculation_indiv"] = trim(substr($buffer, 66, 13)); $BUF_record["cle_immatriculation_indiv"] = trim(substr($buffer, 79, 2)); $BUF_record["date_debut"] = trim(substr($buffer, 81, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 89, 8)); $BUF_record["nature_interruption"] = trim(substr($buffer, 97, 1)); $BUF_record["finess_dest"] = (int)trim(substr($buffer, 98, 14)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; case "2016" : $BUF_record["BUF_offsets"] = $rsf_offsets_2017_I; $BUF_record["no_rss"] = trim(substr($buffer, 10, 20)); $BUF_record["immatriculation_assure"] = trim(substr($buffer, 30, 13)); $BUF_record["cle_immatriculation_assure"] = trim(substr($buffer, 43, 2)); $BUF_record["rang_beneficiaire"] = trim(substr($buffer, 45, 3)); $BUF_record["no_facture"] = trim(substr($buffer, 48, 9)); $BUF_record["date_debut"] = trim(substr($buffer, 57, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 65, 8)); $BUF_record["nature_interruption"] = trim(substr($buffer, 73, 1)); $BUF_record["finess_dest"] = trim(substr($buffer, 74, 14)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; break; default : // nothing to do } } if (isset($BUF_record["no_rss"])){ // Correction des n°RSS préfixés par NRSS depuis M12 2016 if(strpos($BUF_record["no_rss"], "NRSS0") !== false) { $BUF_record["no_rss"] = "00000000000000000000"; } // constante RSS dans le n° de RSS $position = strpos($BUF_record["no_rss"], 'RSS'); if ($position !== false) { $BUF_record["no_rss"] = str_replace("RSS","000",$BUF_record["no_rss"]); } } // remplacement de l'immatriculation de l'assuré si l'immatriculation individuelle est renseignée if (isset($BUF_record["immatriculation_indiv"]) && $BUF_record["immatriculation_indiv"] != "" && floatval($BUF_record["immatriculation_indiv"]) != 0) { $BUF_record["immatriculation_assure"] = $BUF_record["immatriculation_indiv"]; $BUF_record["cle_immatriculation_assure"] = $BUF_record["cle_immatriculation_indiv"]; } // remplacement de la valeur nul dans la discipline de prestation if (isset($BUF_record["discpline_prestation"]) && $BUF_record["discpline_prestation"] === "nul") { $BUF_record["discpline_prestation"] = "000"; } return $BUF_record; } function read_rsf_partial_line($buffer) { global $ENV_TYPEETS; global $rsf_last_RSS; global $current_rsfa_index; global $rsf_offsets_2006_M; global $rsf_offsets_2008_B; global $rsf_offsets_2008_M; global $rsf_offsets_2008B_M; global $rsf_offsets_2017_B; global $rsf_offsets_2017_M; global $rsf_ace_offsets_2016_M; global $rsf_ace_offsets_2008_M; global $rsf_ace_offsets_2007_M; global $rsf_ace_offsets_2017_M; $BUF_record = array(); $BUF_record["ok"] = FALSE; $buffer = Encoding::removeBOM($buffer); if (is_entete_empty($buffer)){ $BUF_record["type_enregistrement"] = "ENTETE"; return $BUF_record; } $BUF_record["type_enregistrement"] = trim(substr($buffer, 0, 1)); // Special Saint laurent pb décalages if ($BUF_record["type_enregistrement"] == "A" && substr($buffer, 0, 10) == "A350002192") { if (trim(substr($buffer, 34, 25)) == "") { $BUF_record["type_enregistrement"] = "IGNORE"; } } $buf_len = strlen($buffer); // ENTETE RSF if ($BUF_record["type_enregistrement"] == "A") { $current_rsfa_index++; if ($ENV_TYPEETS == "1") { $BUF_141 = trim(substr($buffer, 141, 100)); if ($buf_len > 220) { $BUF_version = "2017"; } else if ($BUF_141 == "") { $BUF_version = "2006"; } else { $BUF_version = "2008"; } } else { $BUF_137 = trim(substr($buffer, 136, 100)); $BUF_155 = trim(substr($buffer, 155, 100)); //Format de mars 2016 if ($buf_len > 200) { $BUF_version = "ACE2017"; } else if ($BUF_155 != "") { $BUF_version = "ACE2016"; } else{ if ($BUF_137 != "") { $BUF_version = "ACE2007"; $annee_sortie = trim(substr($buffer, 69, 4)); if (intval($annee_sortie) >= 2008) { $BUF_version = "ACE2009"; } else { $annee_sortie = trim(substr($buffer, 74, 4)); if ($annee_sortie == "2006" || $annee_sortie == "2007" || $annee_sortie == "2008") { $BUF_version = "ACE2007I"; } } } else { $BUF_version = "ACE2008"; } } } if ($BUF_version == "2017") { $BUF_record["no_rss"] = trim(substr($buffer, 19, 20)); $BUF_record["ok"] = TRUE; } if ($BUF_version == "2008") { $BUF_record["no_rss"] = trim(substr($buffer, 10, 20)); $BUF_record["ok"] = TRUE; } if ($BUF_version == "2006") { $BUF_record["no_rss"] = trim(substr($buffer, 10, 7)); $BUF_record["ok"] = TRUE; } if ($BUF_version == "ACE2017") { $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 39, 9)); $BUF_record["no_rss"] = 0; $BUF_record["no_rss"] = '9' . str_pad(trim($current_rsfa_index), 8, '0', STR_PAD_LEFT); $BUF_record["ok"] = TRUE; } if ($BUF_version == "ACE2016") { $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 39, 9)); $BUF_record["no_rss"] = 0; $BUF_record["no_rss"] = '9' . str_pad(trim($current_rsfa_index), 8, '0', STR_PAD_LEFT); $BUF_record["ok"] = TRUE; } if ($BUF_version == "ACE2009") { $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 30, 9)); $BUF_record["no_rss"] = 0; //if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = trim($current_rsfa_index + 99000000000); // $BUF_record["no_rss"] = '99' . str_pad(trim($current_rsfa_index), 9, '0', STR_PAD_LEFT); $BUF_record["no_rss"] = '9' . str_pad(trim($current_rsfa_index), 8, '0', STR_PAD_LEFT); //} $BUF_record["ok"] = TRUE; } if ($BUF_version == "ACE2008") { $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 30, 9)); $BUF_record["no_rss"] = 0; //if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = trim($current_rsfa_index + 99000000000); $BUF_record["no_rss"] = '9' . str_pad(trim($current_rsfa_index), 8, '0', STR_PAD_LEFT); //} $BUF_record["ok"] = TRUE; } if ($BUF_version == "ACE2007") { $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 10, 9)); $BUF_record["no_facture"] = trim(substr($buffer, 42, 9)); $BUF_record["no_rss"] = 0; //if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = trim($current_rsfa_index + 99000000000); $BUF_record["no_rss"] = '9' . str_pad(trim($current_rsfa_index), 8, '0', STR_PAD_LEFT); //} $BUF_record["ok"] = TRUE; } if ($BUF_version == "ACE2007I") { $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 10, 9)); $BUF_record["no_facture"] = trim(substr($buffer, 44, 9)); $BUF_record["no_rss"] = 0; //if (get_numrss($BUF_record["no_rss"]) == 0) { // $BUF_record["no_rss"] = trim($current_rsfa_index + 99000000000); $BUF_record["no_rss"] = '9' . str_pad(trim($current_rsfa_index), 8, '0', STR_PAD_LEFT); //} $BUF_record["ok"] = TRUE; } } // RSF B plein if ($BUF_record["type_enregistrement"] == "B") { if ($ENV_TYPEETS == "1") { $BUF_130 = trim(substr($buffer, 130, 100)); if ($buf_len > 180 ) { $BUF_version = "2017"; } else if ($BUF_130 == "") { $BUF_version = "2006"; } else { $BUF_version = "2008"; } } else { $BUF_115 = trim(substr($buffer, 115, 100)); //Format de mars 2016 if ($buf_len > 150 ) { $BUF_version = "ACE2017"; } else if ($BUF_115 != "") { $BUF_version = "ACE2016"; } else { $BUF_version = "ACE2008"; } } if ($BUF_version == "2017") { $BUF_record["BUF_offsets"] = $rsf_offsets_2017_B; $BUF_record["no_rss"] = trim(substr($buffer, 19, 20)); $BUF_record["code_acte"] = trim(substr($buffer, 105, 5)); $BUF_record["no_ghs"] = trim(substr($buffer, 167, 4)); $BUF_record["ok"] = TRUE; } if ($BUF_version == "2008") { $BUF_record["BUF_offsets"] = $rsf_offsets_2008_B; $BUF_record["no_rss"] = trim(substr($buffer, 10, 20)); $BUF_record["code_acte"] = trim(substr($buffer, 78, 5)); $BUF_record["no_ghs"] = trim(substr($buffer, 139, 4)); $BUF_record["ok"] = TRUE; } if ($BUF_version == "2006") { $BUF_record["no_rss"] = trim(substr($buffer, 10, 7)); $BUF_record["code_acte"] = trim(substr($buffer, 54, 5)); $BUF_record["no_ghs"] = trim(substr($buffer, 115, 4)); $BUF_record["ok"] = TRUE; } if ($BUF_version == "ACE2017") { $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 37, 9)); $BUF_record["code_acte"] = trim(substr($buffer, 77, 5)); $BUF_record["no_rss"] = 0; $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; } if ($BUF_version == "ACE2008") { $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 30, 9)); $BUF_record["code_acte"] = trim(substr($buffer, 53, 5)); $BUF_record["no_rss"] = 0; $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; } if ($BUF_version == "ACE2016") { $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 39, 9)); $BUF_record["no_rss"] = 0; $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["code_acte"] = trim(substr($buffer, 62, 5)); $BUF_record["ok"] = TRUE; } } // RSF B plein if ($BUF_record["type_enregistrement"] == "C") { if ($ENV_TYPEETS == "1") { $BUF_version = "NONE"; } else { $BUF_version = "NONE"; // $BUF_58 = trim(substr($buffer, 58, 2)); $BUF_49 = trim(substr($buffer, 49, 2)); // Année 20xx (année presta) sur les caractères 59 et 60 et un caractère alpha sur le caractère 63 if (trim(substr($buffer, 58, 2)) == "20" && !is_numeric(trim(substr($buffer, 62, 1)))) { $BUF_version = "ACE2016"; } else if ($BUF_49 == "20" && !is_numeric(trim(substr($buffer, 53, 1)))) { $BUF_version = "ACE2008"; } else { $BUF_43 = trim(substr($buffer, 49, 2)); if ($BUF_43 == "20") { //$BUF_version = "ACE2007"; } } } if ($BUF_version == "ACE2016") { $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 37, 9)); $BUF_record["code_acte"] = trim(substr($buffer, 62, 5)); $BUF_record["no_rss"] = 0; $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; } else if ($BUF_version == "ACE2008") { $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 30, 9)); $BUF_record["code_acte"] = trim(substr($buffer, 53, 5)); $BUF_record["no_rss"] = 0; $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; } } // actes CCAM if ($BUF_record["type_enregistrement"] == "M" && $ENV_TYPEETS != "1") { if ($ENV_TYPEETS == "1") { $BUF_46 = trim(substr($buffer, 46, 1)); $BUF_70 = trim(substr($buffer, 70, 1)); $BUF_76 = trim(substr($buffer, 76, 1)); if ($buf_len > 145 ) { $BUF_version = "2017"; } else if ($BUF_70 >= "A" && $BUF_70 <= "Z") { $BUF_version = "2008"; } else { if ($BUF_76 >= "A" && $BUF_76 <= "Z" && trim($BUF_70) == "") { $BUF_version = "2008B"; } else { if (trim($BUF_46) != "") { $BUF_version = "2006"; } else { $BUF_version = "2006B"; } } } } else { $BUF_55 = trim(substr($buffer, 55, 2)); // format 2016 doit donner 20 pour debut date sur l'année $BUF_46 = trim(substr($buffer, 46, 2)); if ($buf_len > 125) { $BUF_version = "ACE2017"; } else if (trim($BUF_55) == "20" && trim(substr($buffer, 53, 2)) < 13 && trim(substr($buffer, 51, 2)) < 32 && !is_numeric(trim(substr($buffer, 53, 2))) ) { $BUF_version = "ACE2016"; } else{ if (trim($BUF_46) == "20") { $BUF_version = "ACE2008"; } else { $BUF_version = "ACE2007"; } } } $BUF_record["finess"] = trim(substr($buffer, 1, 9)); $BUF_record["no_rss"] = ""; if ($BUF_version == "2017") { $BUF_record["BUF_offsets"] = $rsf_offsets_2017_M; $BUF_record["no_rss"] = trim(substr($buffer, 19, 20)); $BUF_record["no_facture"] = trim(substr($buffer, 57, 9)); $BUF_record["code_acte"] = trim(substr($buffer, 94, 7)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; } if ($BUF_version == "2008") { $BUF_record["BUF_offsets"] = $rsf_offsets_2008_M; $BUF_record["no_rss"] = trim(substr($buffer, 10, 20)); $BUF_record["no_facture"] = trim(substr($buffer, 48, 9)); $BUF_record["code_acte"] = trim(substr($buffer, 70, 7)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; } if ($BUF_version == "2008B") { $BUF_record["BUF_offsets"] = $rsf_offsets_2008B_M; $BUF_record["no_rss"] = trim(substr($buffer, 10, 20)); $BUF_record["no_facture"] = trim(substr($buffer, 48, 9)); $BUF_record["code_acte"] = trim(substr($buffer, 76, 7)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; } if ($BUF_version == "2006") { $BUF_record["BUF_offsets"] = $rsf_offsets_2006_M; $BUF_record["no_rss"] = trim(substr($buffer, 10, 7)); $BUF_record["no_facture"] = ""; $BUF_record["code_acte"] = trim(substr($buffer, 46, 7)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; } if ($BUF_version == "2006B") { $BUF_record["BUF_offsets"] = $rsf_offsets_2006_M; $BUF_record["no_rss"] = trim(substr($buffer, 10, 7)); $BUF_record["no_facture"] = ""; $BUF_record["code_acte"] = trim(substr($buffer, 52, 7)); if (get_numrss($BUF_record["no_rss"]) == 0) { $BUF_record["no_rss"] = $rsf_last_RSS; } $BUF_record["ok"] = TRUE; } if ($BUF_version == "ACE2017") { $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2017_M; $BUF_record["no_rss"] = 0; $BUF_record["no_facture"] = trim(substr($buffer, 37, 9)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 37, 9)); $BUF_record["code_acte"] = trim(substr($buffer, 74, 7)); $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; } if ($BUF_version == "ACE2016") { $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2016_M; $BUF_record["no_rss"] = 0; $BUF_record["no_facture"] = trim(substr($buffer, 37, 9)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 37, 9)); $BUF_record["code_acte"] = trim(substr($buffer, 59, 7)); $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; } if ($BUF_version == "ACE2008") { $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2008_M; $BUF_record["no_rss"] = 0; $BUF_record["no_facture"] = trim(substr($buffer, 28, 9)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 28, 9)); $BUF_record["code_acte"] = trim(substr($buffer, 50, 7)); $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; } if ($BUF_version == "ACE2007") { $BUF_record["BUF_offsets"] = $rsf_ace_offsets_2007_M; $BUF_record["no_rss"] = 0; $BUF_record["code_acte"] = trim(substr($buffer, 46, 7)); $BUF_record["no_rss"] = $rsf_last_RSS; $BUF_record["ok"] = TRUE; } } // constante RSS dans le n° de RSS if (isset($BUF_record["no_rss"])){ $position = strpos($BUF_record["no_rss"], 'RSS'); if ($position !== false) { $BUF_record["no_rss"] = str_replace("RSS","000",$BUF_record["no_rss"]); } } return $BUF_record; } /** * * FICHSUP transports * Type enregistrement G61 * Format dans le manuel du logiciel FICHSUP produit par l'ATIH */ function read_tsp_line($buffer) { global $tsp_offsets_2019; $BUF_record = array(); $buffer = Encoding::removeBOM($buffer); $BUF_record["ok"] = FALSE; $BUF_record["type_fichier"] = trim(substr($buffer, 9, 3)); // G61 normalement if ($BUF_record["type_fichier"] == 'G61') { $BUF_record["BUF_offsets"] = $tsp_offsets_2019; $BUF_record["ok"] = TRUE; $BUF_record["finess"] = trim(substr($buffer, 0, 9)); $BUF_record["annee"] = trim(substr($buffer, 12, 4)); // Format AAAA $BUF_record["periode"] = trim(substr($buffer, 16, 2)); // Ex : 10 pour la transmission d'octobre $BUF_record["code"] = trim(substr($buffer, 18, 3)); // Valeur égale à TSE ou TDE $BUF_record["nb_sejours"] = trim(substr($buffer, 21, 10)); } return $BUF_record; } /** * type enregistrement : * 02 : DMI * 03 : Prélèvement d'organe * 04 : Prestations inter établissements * 06 : médicaments hors ATU * 07 : dialyse péritonéale (suppléments DIP) * 09 : médicaments avec ATU * 10 : médicament anti-thrombotique * 51 : PIP * 52 : ORP maladies rares * 99 : enquêtes */ function read_fcp_line($buffer) { global $fcp_dmi_offsets_2007; global $fcp_dmi_offsets_2008; global $fcp_ucd_offsets_2007; global $fcp_ucd_offsets_2008; $BUF_record = array(); $buffer = Encoding::removeBOM($buffer); $BUF_record["ok"] = FALSE; $BUF_record["type_enregistrement"] = ""; $version_annee = ""; $BUF_42 = trim(substr($buffer, 42, 100)); $BUF_45 = trim(substr($buffer, 45, 100)); $BUF_35 = trim(substr($buffer, 35, 4)); if ($BUF_42 == "") { $BUF_record["type_enregistrement"] = "02"; $version_annee = "2007"; } else { if ($BUF_45 == "") { $BUF_record["type_enregistrement"] = "01"; $version_annee = "2007"; } else { $BUF_record["type_enregistrement"] = trim(substr($buffer, 9, 2)); if ($BUF_35 == "2009" || $BUF_35 == "2010" || $BUF_35 == "2011") { $version_annee = "2008B"; } else { $version_annee = "2008"; } } } // Initialisation variables $BUF_record["finess"] = ""; $BUF_record["type_prestation"] = ""; $BUF_record["no_sejour_administratif"] = ""; $BUF_record["no_rum"] = "1"; $BUF_record["date_debut"] = ""; $BUF_record["date_fin"] = ""; $BUF_record["code"] = ""; $BUF_record["nombre"] = ""; $BUF_record["montant_paye"] = ""; $BUF_record["indication"] = ""; if ($version_annee == "2007" && $BUF_record["type_enregistrement"] == "02") { $BUF_record["BUF_offsets"] = $fcp_dmi_offsets_2007; $BUF_record["finess"] = trim(substr($buffer, 0, 9)); $BUF_record["type_prestation"] = "02"; $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 9, 20)); $BUF_record["no_rum"] = "0"; $BUF_record["date_debut"] = "20991231"; $BUF_record["date_fin"] = "20991231"; $BUF_record["code"] = trim(substr($buffer, 29, 9)); $BUF_record["nombre"] = trim(substr($buffer, 38, 4)); $BUF_record["montant_paye"] = "0"; $BUF_record["ok"] = TRUE; } if ($version_annee == "2008B" && $BUF_record["type_enregistrement"] == "02") { $BUF_record["BUF_offsets"] = $fcp_dmi_offsets_2008; $BUF_record["finess"] = trim(substr($buffer, 0, 9)); $BUF_record["type_prestation"] = trim(substr($buffer, 9, 2)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 11, 20)); $BUF_record["no_rum"] = 1; $BUF_record["date_debut"] = trim(substr($buffer, 31, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 31, 8)); $BUF_record["code"] = trim(substr($buffer, 39, 15)); $BUF_record["nombre"] = trim(substr($buffer, 54, 10)); $BUF_record["montant_paye"] = trim(substr($buffer, 64, 10)); $BUF_record["ok"] = TRUE; } if ($version_annee == "2008" && $BUF_record["type_enregistrement"] == "02") { $BUF_record["BUF_offsets"] = $fcp_dmi_offsets_2008; $BUF_record["finess"] = trim(substr($buffer, 0, 9)); $BUF_record["type_prestation"] = trim(substr($buffer, 9, 2)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 11, 20)); $BUF_record["no_rum"] = trim(substr($buffer, 31, 10)); $BUF_record["date_debut"] = trim(substr($buffer, 41, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 49, 8)); if ($BUF_record["date_fin"] == "") { $BUF_record["date_fin"] = $BUF_record["date_debut"]; } $BUF_record["code"] = trim(substr($buffer, 57, 15)); $BUF_record["nombre"] = trim(substr($buffer, 72, 10)); $BUF_record["montant_paye"] = trim(substr($buffer, 82, 10)); $BUF_record["ok"] = TRUE; } if ($version_annee == "2007" && $BUF_record["type_enregistrement"] == "01") { $BUF_record["BUF_offsets"] = $fcp_ucd_offsets_2007; $BUF_record["finess"] = trim(substr($buffer, 0, 9)); $BUF_record["type_prestation"] = "02"; $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 9, 20)); $BUF_record["no_rum"] = "0"; $BUF_record["date_debut"] = "20991231"; $BUF_record["date_fin"] = "20991231"; $BUF_record["code"] = trim(substr($buffer, 29, 9)); $BUF_record["nombre"] = trim(substr($buffer, 38, 7)); $BUF_record["montant_paye"] = "0"; $BUF_record["ok"] = TRUE; } if ($version_annee == "2008" && $BUF_record["type_enregistrement"] == "01") { $BUF_record["BUF_offsets"] = $fcp_ucd_offsets_2008; $BUF_record["finess"] = trim(substr($buffer, 0, 9)); $BUF_record["type_prestation"] = trim(substr($buffer, 9, 2)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 11, 20)); $BUF_record["no_rum"] = trim(substr($buffer, 31, 10)); $BUF_record["date_debut"] = trim(substr($buffer, 41, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 49, 8)); if ($BUF_record["date_fin"] == "") { $BUF_record["date_fin"] = $BUF_record["date_debut"]; } $BUF_record["code"] = trim(substr($buffer, 57, 15)); $BUF_record["nombre"] = trim(substr($buffer, 72, 10)); $BUF_record["montant_paye"] = trim(substr($buffer, 82, 10)); $BUF_record["ok"] = TRUE; } if ($version_annee == "2008B" && $BUF_record["type_enregistrement"] == "01") { $BUF_record["BUF_offsets"] = $fcp_ucd_offsets_2008; $BUF_record["finess"] = trim(substr($buffer, 0, 9)); $BUF_record["type_prestation"] = trim(substr($buffer, 9, 2)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 11, 20)); $BUF_record["no_rum"] = "1"; $BUF_record["date_debut"] = trim(substr($buffer, 31, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 31, 8)); $BUF_record["code"] = trim(substr($buffer, 39, 15)); $BUF_record["nombre"] = trim(substr($buffer, 54, 10)); $BUF_record["montant_paye"] = trim(substr($buffer, 64, 10)); $BUF_record["ok"] = TRUE; } if ($version_annee == "2008B" && $BUF_record["type_enregistrement"] == "06") { //$BUF_record["type_enregistrement"] = "01"; $BUF_record["BUF_offsets"] = $fcp_ucd_offsets_2008; $BUF_record["finess"] = trim(substr($buffer, 0, 9)); $BUF_record["type_prestation"] = trim(substr($buffer, 9, 2)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 11, 20)); $BUF_record["no_rum"] = "1"; $BUF_record["date_debut"] = trim(substr($buffer, 31, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 31, 8)); // Prise en compte des codes UCD à 7 et à 13 (cf. IC-3203 et IC-5267). $BUF_record["code"] = (strlen(trim(substr($buffer, 39, 15))) == 7 ? trim(substr($buffer, 39, 15)) : substr(str_pad(trim(substr($buffer, 39, 15)), 15, '0', STR_PAD_LEFT), 7, 7)); $BUF_record["nombre"] = trim(substr($buffer, 54, 10)); $BUF_record["montant_paye"] = trim(substr($buffer, 64, 10)); $BUF_record["ok"] = TRUE; } if ($version_annee == "2008" && ($BUF_record["type_enregistrement"] == "06"|| $BUF_record["type_enregistrement"] == "09")) { // MED.TXT (Ucd en SUS) ou MEDATU.txt (Anciennemnet ATU, depuis 2021 AP-AC) //$BUF_record["type_enregistrement"] = "01"; $BUF_record["BUF_offsets"] = $fcp_ucd_offsets_2008; $BUF_record["finess"] = trim(substr($buffer, 0, 9)); $BUF_record["type_prestation"] = trim(substr($buffer, 9, 2)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 11, 20)); $BUF_record["no_rum"] = "1"; $BUF_record["date_debut"] = trim(substr($buffer, 31, 8)); $BUF_record["date_fin"] = trim(substr($buffer, 31, 8)); // Prise en compte des codes UCD à 7 et à 13 (cf. IC-3203 et IC-5267). $BUF_record["code"] = (strlen(trim(substr($buffer, 39, 15))) == 7 ? trim(substr($buffer, 39, 15)) : substr(str_pad(trim(substr($buffer, 39, 15)), 15, '0', STR_PAD_LEFT), 7, 7)); $BUF_record["nombre"] = trim(substr($buffer, 54, 10)); $BUF_record["montant_paye"] = trim(substr($buffer, 64, 10)); $BUF_record["indication"] = trim(substr($buffer, 75, 7)); $BUF_record["ok"] = TRUE; } $BUF_record["nombre"] = str_replace(" ", "0", $BUF_record["nombre"]); return $BUF_record; } function read_tra_line($buffer) { global $ENV_TYPEETS; $BUF_record = array(); $buffer = Encoding::removeBOM($buffer); $BUF_record["ok"] = FALSE; $BUF_record["type_enregistrement"] = ""; $version_annee = ""; $BUF_77 = trim(substr($buffer, 77, 10)); $BUF_62 = trim(substr($buffer, 62, 10)); if (trim(substr($buffer, 9, 1)) == ";") { $BUF_record["type_enregistrement"] = "TRA"; $version_annee = "2023"; if (trim(substr($buffer, 21, 5) == "NRSS0")) { // Correspond aux externes $BUF_record["type_enregistrement"] = "NONE"; } } else if (trim(substr($buffer, 10, 1)) == ";") { $BUF_record["type_enregistrement"] = "TRA"; $version_annee = "2023V2"; if (trim(substr($buffer, 21, 5) == "NRSS0")) { $BUF_record["type_enregistrement"] = "NONE"; } } else { //Ancienne version if ($BUF_77 == "") { if ($BUF_62 == "") { $BUF_record["type_enregistrement"] = "TRA"; $version_annee = "2007"; } else { $BUF_record["type_enregistrement"] = "TRA"; $version_annee = "2008"; } } else { $BUF_record["type_enregistrement"] = "TRA"; $version_annee = "2009"; } if ($BUF_record["type_enregistrement"] == "TRA") { if (trim(substr($buffer, 10, 5) == "NRSS0")) { $BUF_record["type_enregistrement"] = "NONE"; } } } if ($BUF_record["type_enregistrement"] == "TRA") { $BUF_record["doControlTRA_GHM"] = false; if ($version_annee == "2023V2" ) { $BUF_record["no_rsa"] = trim(substr($buffer, 0, 10)); $BUF_record["no_rss"] = trim(substr($buffer, 11, 20)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 32, 20)); $BUF_record["ghm"] = trim(substr($buffer, 71, 6)); $BUF_record["ligne_rss"] = 0; $BUF_record["ok"] = TRUE; $BUF_record["doControlTRA_GHM"] = true; } if ($version_annee == "2023" ) { $BUF_record["no_rsa"] = trim(substr($buffer, 10, 10)); if ($ENV_TYPEETS === "1"){ $BUF_record["no_rss"] = trim(substr($buffer, 21, 20)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 42, 20)); } else { $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 21, 20)); $BUF_record["no_rss"] = trim(substr($buffer, 42, 20)); } $BUF_record["ligne_rss"] = 0; $BUF_record["ghm"] = ""; $BUF_record["ok"] = TRUE; } if ($version_annee == "2009" ) { $BUF_record["no_rsa"] = trim(substr($buffer, 0, 10)); $BUF_record["ligne_rss"] = trim(substr($buffer, 30, 10)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 40, 20)); $BUF_record["ghm"] = trim(substr($buffer, 68, 6)); $BUF_record["ok"] = TRUE; } if ($version_annee == "2008" ) { $BUF_record["no_rsa"] = trim(substr($buffer, 0, 10)); $BUF_record["ligne_rss"] = trim(substr($buffer, 30, 10)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 40, 20)); $BUF_record["ghm"] = trim(substr($buffer, 68, 6)); $BUF_record["ok"] = TRUE; } if ($version_annee == "2007" ) { $BUF_record["no_rsa"] = trim(substr($buffer, 0, 10)); $BUF_record["ligne_rss"] = trim(substr($buffer, 17, 10)); $BUF_record["no_sejour_administratif"] = trim(substr($buffer, 27, 20)); $BUF_record["ghm"] = trim(substr($buffer, 55, 6)); $BUF_record["ok"] = TRUE; } } return $BUF_record; } /** * Lit une ligne du fichier [finess].[annee].[mois].leg (Inclus dans le OUT.ZIP) * qui donne la liste d'erreurs de groupage applicable à compter du 1er janvier 2009 * Le format est le suivant : * [Finess][Mois période][Année période][Numéro index RSA][Nombre d'erreurs][Code erreur 1]...[Code erreur N] */ function read_leg_line($buffer) { $BUF_record = array(); $buffer = Encoding::removeBOM($buffer); $BUF_record["ok"] = FALSE; $BUF_record["type_enregistrement"] = ""; $leg_line = explode(';', $buffer); // Il doit y avoir au moins 6 colonnes dans une ligne de fichier LEG pour que le format soit respecté if (count($leg_line) >= 6 ) { // Vérifie si le nombre de colonnes est cohérent avec le nombre d'erreurs du RSA if(count($leg_line) == (5 + intval($leg_line[4]))) { $BUF_record["type_enregistrement"] = "LEG"; } } if ($BUF_record["type_enregistrement"] == "LEG") { $BUF_record["finess"] = trim($leg_line[0]); $BUF_record["no_rsa"] = trim($leg_line[3]); // concatène tous les codes erreurs du rsa avc des points-virgules $BUF_record["codes"] = trim(implode(';', array_slice($leg_line, 5))); $BUF_record["ok"] = TRUE; } return $BUF_record; } function read_rsa_line($buffer, $qAD = TRUE) { global $last_BUF_rss; global $last_BUF_rsa; global $rsa_offsets_215; global $rsa_offsets_222; global $rsa_offsets_223; global $rsa_offsets_226; global $rsa_offsets_227; global $rsa_offsets_228; global $rsa_offsets_229; global $annee_fin; global $annee_mois_fin; $BUF_record = array(); $buffer = Encoding::removeBOM($buffer); if (is_entete_empty($buffer)){ $BUF_record["type_enregistrement"] = "ENTETE"; return $BUF_record; } $BUF_record["type_enregistrement"] = "RSA"; if ($BUF_record["type_enregistrement"] == "RSA") { $BUF_record["supprdth"] = array(); $BUF_record["finess"] = trim(substr($buffer, 0, 9)); $BUF_record["version_format_rsa"] = trim(substr($buffer, 9, 3)); $BUF_record["no_rss"] = ""; $BUF_record["fmt_error"] = ""; $BUF_record["top_uhcd"] = ""; // Nb de suppl. de radiothérapie introduit dans le format RSA 218. // A zéro par défaut (pour rétro-compatibilité). $BUF_record["nb_rdth"] = '0'; // Rétro-compatibilité Format 219 ------------------------------------------------------ $BUF_aut_pgv_length = 0; $BUF_record["nb_aut_pgv"] = '0'; $BUF_record["nb_sup_rap"] = '000'; $BUF_record["nb_sup_ant"] = '000'; // Rétro-compatibilité Format 222 ------------------------------------------------------ $BUF_record["nombre_ivg_anterieures"] = ""; $BUF_record["annee_ivg_precedente"] = ""; $BUF_record["nombre_naissances_vivantes_anterieures"] = ""; $BUF_record["top_valve_aortique"] = ""; $BUF_record["type_generation_automatique"] = "0"; $BUF_record["top_ghs_minore"] = "0"; // ------------------------------------------------------------------------------------- $BUF_record["nb_actes_9510"] = "000"; $BUF_record["nb_actes_9511"] = "000"; $BUF_record["nb_actes_9512"] = "000"; $BUF_record["nb_actes_9515"] = "000"; $BUF_record["nb_actes_9524"] = "000"; $BUF_record["nb_actes_9621"] = "000"; $BUF_record["nb_actes_9622"] = "000"; $BUF_record["nb_actes_6523"] = "000"; $BUF_record["annee_sortie"] = "0"; switch ($BUF_record["version_format_rsa"]) { case "229" : // 229 - Applicable à compter de M03 2025 $BUF_record["BUF_offsets"] = $rsa_offsets_229; $BUF_record["no_rsa"] = trim(substr($buffer, 12, 10)); $BUF_record["version_format"] = trim(substr($buffer, 22, 3)); $BUF_record["numero_tarif"] = trim(substr($buffer, 25, 3)); $BUF_record["version_groupage"] = trim(substr($buffer, 28, 2)); $BUF_record["ghm"] = trim(substr($buffer, 30, 6)); $BUF_record["code_retour"] = trim(substr($buffer, 36, 3)); $BUF_record["version_groupage_genrsa"] = trim(substr($buffer, 39, 2)); $BUF_record["ghm_genrsa"] = trim(substr($buffer, 41, 6)); $BUF_record["code_retour_genrsa"] = trim(substr($buffer, 47, 3)); $BUF_record["nombre_rum"] = trim(substr($buffer, 50, 2)); $BUF_record["age_annees"] = trim(substr($buffer, 52, 3)); $BUF_record["age_jours"] = trim(substr($buffer, 55, 3)); $BUF_record["sexe"] = trim(substr($buffer, 58, 1)); $BUF_record["mode_entree"] = trim(substr($buffer, 59, 1)); $BUF_record["provenance"] = trim(substr($buffer, 60, 1)); $BUF_record["mois_sortie"]= trim(substr($buffer, 61, 6)); $BUF_record["annee_sortie"] = trim(substr($buffer, 63, 4)); $BUF_record["mode_sortie"] = trim(substr($buffer, 67, 1)); $BUF_record["destination"] = trim(substr($buffer, 68, 1)); $BUF_record["type_sejour"] = trim(substr($buffer, 69, 1)); $BUF_record["duree_sejour"] = trim(substr($buffer, 70, 4)); $BUF_record["code_geographique"] = substr($buffer, 74, 5); $BUF_record["poids_entree"] = trim(substr($buffer, 79, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 83, 2)); $BUF_record["delai_dernieres_regles"] = trim(substr($buffer, 85, 3)); $BUF_record["nombre_seances"] = trim(substr($buffer, 93, 2)); $BUF_record["igs2"] = "000"; $BUF_record["ghs_genrsa"] = trim(substr($buffer, 95, 4)); $BUF_record["nb_exh"] = trim(substr($buffer, 99, 4)); $BUF_record["type_exb"] = trim(substr($buffer, 103, 1)); $BUF_record["nb_exb"] = trim(substr($buffer, 104, 3)); $BUF_record["forfait_dialyse"] = ""; // Nouveauté non exploitée : Top Admission Maison de Naissance 0:NON / 1:OUI $BUF_record["top_adm_maison_naissance"] = trim(substr($buffer, 107, 1)); // Nouveauté non exploitée : Top Radiation partielle Avastin 0:NON / 1:OUI $BUF_record["top_radiation_part_avastin"] = trim(substr($buffer, 108, 1)); // Nouveauté non exploitée : Top Radiation partielle Alimta 0:NON / 1:OUI $BUF_record["top_radiation_partielle_alimta"] = trim(substr($buffer, 109, 1)); $BUF_record["top_uhcd"] = trim(substr($buffer, 110, 1)); // top_ghs_minore : 0 = non | 1 = oui $BUF_record["top_ghs_minore"] = trim(substr($buffer, 111, 1)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 112, 1)); // Nouveauté non exploitée : Nombre d'autorisations d'unités médicales à portée globale valides (Nb_AutPGV) $BUF_record["nb_aut_pgv"] = trim(substr($buffer, 113, 1)); // ------------------------------------------------------------------------------------- $BUF_record["nb_sup_dialyse_1"] = trim(substr($buffer, 114, 3)); $BUF_record["nb_sup_dialyse_2"] = trim(substr($buffer, 117, 3)); $BUF_record["nb_sup_dialyse_3"] = trim(substr($buffer, 120, 3)); $BUF_record["nb_sup_dialyse_4"] = trim(substr($buffer, 123, 3)); $BUF_record["nb_sup_apherese"] = trim(substr($buffer, 126, 3)); // Nouveauté : Nombre de suppléments radiothérapie pédiatrique ------------------------- $BUF_record["nb_sup_rap"] = trim(substr($buffer, 129, 3)); // ------------------------------------------------------------------------------------- // Nouveauté : Nombre de suppléments antepartum ---------------------------------------- $BUF_record["nb_sup_ant"] = trim(substr($buffer, 132, 3)); // ------------------------------------------------------------------------------------- $BUF_record["nb_rdth"] = trim(substr($buffer, 135, 1)); // top_valve_aortique : 1 si date sortie >=15/08/2012 + type autorisation UM 60 + acte pose, blanc sinon $BUF_record["top_valve_aortique"] = trim(substr($buffer, 136, 1)); // type_generation_automatique: 0 = pas de génération automatique | 1 = FFM, ATU, SE | 2 = médecin salariés | 3 = dialyse $BUF_record["type_generation_automatique"] = trim(substr($buffer, 137, 1)); $BUF_record["ghs_hors_innovation"] = trim(substr($buffer, 95, 4)); $BUF_record["nb_seances_avant_sros"] = "00"; $BUF_record["nb_sup_hyperbare"] = trim(substr($buffer, 150, 3)); $BUF_record["type_prestation_prelevement_organe"] = trim(substr($buffer, 153, 1)); $BUF_record["nb_sup_sra"] = "000"; $BUF_record["nb_sup_rea"] = trim(substr($buffer, 154, 3)); $BUF_record["nb_sup_si"] = trim(substr($buffer, 157, 3)); $BUF_record["nb_sup_stf"] = trim(substr($buffer, 160, 3)); $BUF_record["nb_sup_ssc"] = "000"; $BUF_record["nb_sup_usip"] = trim(substr($buffer, 163, 3)); $BUF_record["nb_sup_src"] = trim(substr($buffer, 166, 3)); $BUF_record["nb_sup_nn1"] = trim(substr($buffer, 169, 3)); $BUF_record["nb_sup_nn2"] = trim(substr($buffer, 172, 3)); $BUF_record["nb_sup_nn3"] = trim(substr($buffer, 175, 3)); $BUF_record["nb_sup_rep"] = trim(substr($buffer, 178, 3)); $BUF_record["passage_lit_sp"] = trim(substr($buffer, 181, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 182, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 183, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 184, 15)); $BUF_record["nombre_ivg_anterieures"] = ""; $BUF_record["annee_ivg_precedente"] = ""; $BUF_record["nombre_naissances_vivantes_anterieures"] = ""; $BUF_record["nb_sup_sdc"] = trim(substr($buffer, 199, 1)); $BUF_record["nb_faisceaux"] = ""; $BUF_record["no_rum_dp"] = trim(substr($buffer, 212, 2)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 214, 6)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 220, 6)); $BUF_record["nb_das"] = trim(substr($buffer, 226, 4)); $BUF_aut_pgv_length = 2; //DRUIDE 2023 $BUF_start = 265; $BUF_record["ok"] = TRUE; break; case "228" : // 228 - Applicable à compter de M03 2021 $BUF_record["BUF_offsets"] = $rsa_offsets_228; $BUF_record["no_rsa"] = trim(substr($buffer, 12, 10)); $BUF_record["version_format"] = trim(substr($buffer, 22, 3)); $BUF_record["numero_tarif"] = trim(substr($buffer, 25, 3)); $BUF_record["version_groupage"] = trim(substr($buffer, 28, 2)); $BUF_record["ghm"] = trim(substr($buffer, 30, 6)); $BUF_record["code_retour"] = trim(substr($buffer, 36, 3)); $BUF_record["version_groupage_genrsa"] = trim(substr($buffer, 39, 2)); $BUF_record["ghm_genrsa"] = trim(substr($buffer, 41, 6)); $BUF_record["code_retour_genrsa"] = trim(substr($buffer, 47, 3)); $BUF_record["nombre_rum"] = trim(substr($buffer, 50, 2)); $BUF_record["age_annees"] = trim(substr($buffer, 52, 3)); $BUF_record["age_jours"] = trim(substr($buffer, 55, 3)); $BUF_record["sexe"] = trim(substr($buffer, 58, 1)); $BUF_record["mode_entree"] = trim(substr($buffer, 59, 1)); $BUF_record["provenance"] = trim(substr($buffer, 60, 1)); $BUF_record["mois_sortie"]= trim(substr($buffer, 61, 6)); $BUF_record["annee_sortie"] = trim(substr($buffer, 63, 4)); $BUF_record["mode_sortie"] = trim(substr($buffer, 67, 1)); $BUF_record["destination"] = trim(substr($buffer, 68, 1)); $BUF_record["type_sejour"] = trim(substr($buffer, 69, 1)); $BUF_record["duree_sejour"] = trim(substr($buffer, 70, 4)); $BUF_record["code_geographique"] = substr($buffer, 74, 5); $BUF_record["poids_entree"] = trim(substr($buffer, 79, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 83, 2)); $BUF_record["delai_dernieres_regles"] = trim(substr($buffer, 85, 3)); $BUF_record["nombre_seances"] = trim(substr($buffer, 93, 2)); $BUF_record["igs2"] = "000"; $BUF_record["ghs_genrsa"] = trim(substr($buffer, 95, 4)); $BUF_record["nb_exh"] = trim(substr($buffer, 99, 4)); $BUF_record["type_exb"] = trim(substr($buffer, 103, 1)); $BUF_record["nb_exb"] = trim(substr($buffer, 104, 3)); $BUF_record["forfait_dialyse"] = ""; // Nouveauté non exploitée : Top Admission Maison de Naissance 0:NON / 1:OUI $BUF_record["top_adm_maison_naissance"] = trim(substr($buffer, 107, 1)); // Nouveauté non exploitée : Top Radiation partielle Avastin 0:NON / 1:OUI $BUF_record["top_radiation_part_avastin"] = trim(substr($buffer, 108, 1)); // Nouveauté non exploitée : Top Radiation partielle Alimta 0:NON / 1:OUI $BUF_record["top_radiation_partielle_alimta"] = trim(substr($buffer, 109, 1)); $BUF_record["top_uhcd"] = trim(substr($buffer, 110, 1)); // top_ghs_minore : 0 = non | 1 = oui $BUF_record["top_ghs_minore"] = trim(substr($buffer, 111, 1)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 112, 1)); // Nouveauté non exploitée : Nombre d'autorisations d'unités médicales à portée globale valides (Nb_AutPGV) $BUF_record["nb_aut_pgv"] = trim(substr($buffer, 113, 1)); // ------------------------------------------------------------------------------------- $BUF_record["nb_sup_dialyse_1"] = trim(substr($buffer, 114, 3)); $BUF_record["nb_sup_dialyse_2"] = trim(substr($buffer, 117, 3)); $BUF_record["nb_sup_dialyse_3"] = trim(substr($buffer, 120, 3)); $BUF_record["nb_sup_dialyse_4"] = trim(substr($buffer, 123, 3)); $BUF_record["nb_sup_apherese"] = trim(substr($buffer, 126, 3)); // Nouveauté : Nombre de suppléments radiothérapie pédiatrique ------------------------- $BUF_record["nb_sup_rap"] = trim(substr($buffer, 129, 3)); // ------------------------------------------------------------------------------------- // Nouveauté : Nombre de suppléments antepartum ---------------------------------------- $BUF_record["nb_sup_ant"] = trim(substr($buffer, 132, 3)); // ------------------------------------------------------------------------------------- $BUF_record["nb_rdth"] = trim(substr($buffer, 135, 1)); // top_valve_aortique : 1 si date sortie >=15/08/2012 + type autorisation UM 60 + acte pose, blanc sinon $BUF_record["top_valve_aortique"] = trim(substr($buffer, 136, 1)); // type_generation_automatique: 0 = pas de génération automatique | 1 = FFM, ATU, SE | 2 = médecin salariés | 3 = dialyse $BUF_record["type_generation_automatique"] = trim(substr($buffer, 137, 1)); $BUF_record["ghs_hors_innovation"] = trim(substr($buffer, 95, 4)); $BUF_record["nb_seances_avant_sros"] = "00"; $BUF_record["nb_sup_hyperbare"] = trim(substr($buffer, 150, 3)); $BUF_record["type_prestation_prelevement_organe"] = trim(substr($buffer, 153, 1)); $BUF_record["nb_sup_sra"] = "000"; $BUF_record["nb_sup_rea"] = trim(substr($buffer, 154, 3)); $BUF_record["nb_sup_si"] = trim(substr($buffer, 157, 3)); $BUF_record["nb_sup_stf"] = trim(substr($buffer, 160, 3)); $BUF_record["nb_sup_ssc"] = "000"; $BUF_record["nb_sup_src"] = trim(substr($buffer, 163, 3)); $BUF_record["nb_sup_nn1"] = trim(substr($buffer, 166, 3)); $BUF_record["nb_sup_nn2"] = trim(substr($buffer, 169, 3)); $BUF_record["nb_sup_nn3"] = trim(substr($buffer, 172, 3)); $BUF_record["nb_sup_rep"] = trim(substr($buffer, 175, 3)); $BUF_record["passage_lit_sp"] = trim(substr($buffer, 178, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 179, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 180, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 181, 15)); $BUF_record["nombre_ivg_anterieures"] = ""; $BUF_record["annee_ivg_precedente"] = ""; $BUF_record["nombre_naissances_vivantes_anterieures"] = ""; $BUF_record["nb_sup_sdc"] = trim(substr($buffer, 196, 1)); $BUF_record["nb_faisceaux"] = ""; $BUF_record["no_rum_dp"] = trim(substr($buffer, 209, 2)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 211, 6)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 217, 6)); $BUF_record["nb_das"] = trim(substr($buffer, 223, 4)); $BUF_aut_pgv_length = 2; //DRUIDE 2023 $BUF_start = 262; //Version antèrieur à Druide $annee_import_fin = intval(substr($annee_mois_fin, 0, 4)); $mois_import_fin = intval(substr($annee_mois_fin, -2)); if ($annee_import_fin <= 2023 && $mois_import_fin < 3){ $BUF_start = 247; } $BUF_record["ok"] = TRUE; break; case "214" : $BUF_record["BUF_offsets"] = $rsa_offsets_215; $BUF_record["no_rsa"] = trim(substr($buffer, 12, 10)); $BUF_record["version_format"] = trim(substr($buffer, 22, 3)); $BUF_record["numero_tarif"] = trim(substr($buffer, 25, 3)); $BUF_record["version_groupage"] = trim(substr($buffer, 28, 2)); $BUF_record["ghm"] = trim(substr($buffer, 30, 6)); $BUF_record["code_retour"] = trim(substr($buffer, 36, 3)); $BUF_record["version_groupage_genrsa"] = trim(substr($buffer, 39, 2)); $BUF_record["ghm_genrsa"] = trim(substr($buffer, 41, 6)); $BUF_record["code_retour_genrsa"] = trim(substr($buffer, 47, 3)); $BUF_record["nombre_rum"] = trim(substr($buffer, 50, 2)); $BUF_record["age_annees"] = trim(substr($buffer, 52, 3)); $BUF_record["age_jours"] = trim(substr($buffer, 55, 3)); $BUF_record["sexe"] = trim(substr($buffer, 58, 1)); $BUF_record["mode_entree"] = trim(substr($buffer, 59, 1)); $BUF_record["provenance"] = trim(substr($buffer, 60, 1)); $BUF_record["mois_sortie"]= trim(substr($buffer, 61, 6)); $BUF_record["mode_sortie"] = trim(substr($buffer, 67, 1)); $BUF_record["destination"] = trim(substr($buffer, 68, 1)); $BUF_record["type_sejour"] = trim(substr($buffer, 69, 1)); $BUF_record["duree_sejour"] = trim(substr($buffer, 70, 4)); $BUF_record["code_geographique"] = substr($buffer, 74, 5); $BUF_record["poids_entree"] = trim(substr($buffer, 79, 4)); $BUF_record["age_gestationnel"] = "00"; $BUF_record["nombre_seances"] = trim(substr($buffer, 83, 2)); $BUF_record["igs2"] = trim(substr($buffer, 85, 3)); $BUF_record["ghs_genrsa"] = trim(substr($buffer, 88, 4)); $BUF_record["nb_exh"] = trim(substr($buffer, 92, 4)); $BUF_record["nb_exb"] = trim(substr($buffer, 96, 1)); $BUF_record["forfait_dialyse"] = trim(substr($buffer, 97, 4)); $BUF_record["nb_sup_dialyse_1"] = trim(substr($buffer, 101, 3)); $BUF_record["nb_sup_dialyse_2"] = trim(substr($buffer, 104, 3)); $BUF_record["nb_sup_dialyse_3"] = trim(substr($buffer, 107, 3)); $BUF_record["nb_sup_dialyse_4"] = trim(substr($buffer, 110, 3)); $BUF_record["nb_seances_avant_sros"] = trim(substr($buffer, 115, 2)); $BUF_record["nb_actes_9510"] = "000"; $BUF_record["nb_actes_9511"] = "000"; $BUF_record["nb_actes_9512"] = "000"; $BUF_record["nb_actes_9515"] = "000"; $BUF_record["nb_actes_9524"] = "000"; $BUF_record["nb_actes_9622"] = "000"; $BUF_record["nb_actes_9621"] = "000"; $BUF_record["nb_actes_6523"] = "000"; $BUF_record["nb_sup_hyperbare"] = trim(substr($buffer, 124, 3)); $BUF_record["nb_sup_apherese"] = "000"; $BUF_record["type_prestation_prelevement_organe"] = trim(substr($buffer, 127, 1)); $BUF_record["nb_sup_sra"] = trim(substr($buffer, 128, 3)); $BUF_record["nb_sup_rea"] = trim(substr($buffer, 131, 3)); $BUF_record["nb_sup_si"] = trim(substr($buffer, 134, 3)); $BUF_record["nb_sup_stf"] = trim(substr($buffer, 137, 3)); $BUF_record["nb_sup_ssc"] = trim(substr($buffer, 140, 3)); $BUF_record["nb_sup_src"] = trim(substr($buffer, 143, 3)); $BUF_record["nb_sup_nn1"] = trim(substr($buffer, 146, 3)); $BUF_record["nb_sup_nn2"] = trim(substr($buffer, 149, 3)); $BUF_record["nb_sup_nn3"] = trim(substr($buffer, 152, 3)); $BUF_record["nb_sup_rep"] = trim(substr($buffer, 155, 3)); $BUF_record["passage_lit_sp"] = trim(substr($buffer, 158, 1)); $BUF_record["no_rum_dp"] = "00"; $BUF_record["ok"] = TRUE; break; case "215" : $BUF_record["BUF_offsets"] = $rsa_offsets_215; $BUF_record["no_rsa"] = trim(substr($buffer, 12, 10)); $BUF_record["version_format"] = trim(substr($buffer, 22, 3)); $BUF_record["numero_tarif"] = trim(substr($buffer, 25, 3)); $BUF_record["version_groupage"] = trim(substr($buffer, 28, 2)); $BUF_record["ghm"] = trim(substr($buffer, 30, 6)); $BUF_record["code_retour"] = trim(substr($buffer, 36, 3)); $BUF_record["version_groupage_genrsa"] = trim(substr($buffer, 39, 2)); $BUF_record["ghm_genrsa"] = trim(substr($buffer, 41, 6)); $BUF_record["code_retour_genrsa"] = trim(substr($buffer, 47, 3)); $BUF_record["nombre_rum"] = trim(substr($buffer, 50, 2)); $BUF_record["age_annees"] = trim(substr($buffer, 52, 3)); $BUF_record["age_jours"] = trim(substr($buffer, 55, 3)); $BUF_record["sexe"] = trim(substr($buffer, 58, 1)); $BUF_record["mode_entree"] = trim(substr($buffer, 59, 1)); $BUF_record["provenance"] = trim(substr($buffer, 60, 1)); $BUF_record["mois_sortie"]= trim(substr($buffer, 61, 6)); $BUF_record["mode_sortie"] = trim(substr($buffer, 67, 1)); $BUF_record["destination"] = trim(substr($buffer, 68, 1)); $BUF_record["type_sejour"] = trim(substr($buffer, 69, 1)); $BUF_record["duree_sejour"] = trim(substr($buffer, 70, 4)); $BUF_record["code_geographique"] = substr($buffer, 74, 5); $BUF_record["poids_entree"] = trim(substr($buffer, 79, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 83, 2)); $BUF_record["nombre_seances"] = trim(substr($buffer, 85, 2)); $BUF_record["igs2"] = trim(substr($buffer, 87, 3)); $BUF_record["ghs_genrsa"] = trim(substr($buffer, 90, 4)); $BUF_record["nb_exh"] = trim(substr($buffer, 94, 4)); $BUF_record["nb_exb"] = trim(substr($buffer, 98, 1)); $BUF_record["forfait_dialyse"] = trim(substr($buffer, 99, 4)); $BUF_record["nb_sup_dialyse_1"] = trim(substr($buffer, 103, 3)); $BUF_record["nb_sup_dialyse_2"] = trim(substr($buffer, 106, 3)); $BUF_record["nb_sup_dialyse_3"] = trim(substr($buffer, 109, 3)); $BUF_record["nb_sup_dialyse_4"] = trim(substr($buffer, 112, 3)); $BUF_record["nb_seances_avant_sros"] = trim(substr($buffer, 115, 2)); $BUF_record["nb_actes_9510"] = trim(substr($buffer, 117, 3)); $BUF_record["nb_actes_9511"] = trim(substr($buffer, 120, 3)); $BUF_record["nb_actes_9512"] = trim(substr($buffer, 123, 3)); $BUF_record["nb_actes_9515"] = trim(substr($buffer, 126, 3)); $BUF_record["nb_actes_9524"] = trim(substr($buffer, 129, 3)); $BUF_record["nb_actes_9622"] = "000"; $BUF_record["nb_actes_9621"] = "000"; $BUF_record["nb_actes_6523"] = "000"; $BUF_record["nb_sup_hyperbare"] = trim(substr($buffer, 132, 3)); $BUF_record["nb_sup_apherese"] = "000"; $BUF_record["type_prestation_prelevement_organe"] = trim(substr($buffer, 135, 1)); $BUF_record["nb_sup_sra"] = trim(substr($buffer, 136, 3)); $BUF_record["nb_sup_rea"] = trim(substr($buffer, 139, 3)); $BUF_record["nb_sup_si"] = trim(substr($buffer, 142, 3)); $BUF_record["nb_sup_stf"] = trim(substr($buffer, 145, 3)); $BUF_record["nb_sup_ssc"] = trim(substr($buffer, 148, 3)); $BUF_record["nb_sup_src"] = trim(substr($buffer, 151, 3)); $BUF_record["nb_sup_nn1"] = trim(substr($buffer, 154, 3)); $BUF_record["nb_sup_nn2"] = trim(substr($buffer, 157, 3)); $BUF_record["nb_sup_nn3"] = trim(substr($buffer, 160, 3)); $BUF_record["nb_sup_rep"] = trim(substr($buffer, 163, 3)); $BUF_record["passage_lit_sp"] = trim(substr($buffer, 166, 1)); $BUF_record["no_rum_dp"] = trim(substr($buffer, 167, 2)); $BUF_record["ok"] = TRUE; break; case "216" : $BUF_record["BUF_offsets"] = $rsa_offsets_215; $BUF_record["no_rsa"] = trim(substr($buffer, 12, 10)); $BUF_record["version_format"] = trim(substr($buffer, 22, 3)); $BUF_record["numero_tarif"] = trim(substr($buffer, 25, 3)); $BUF_record["version_groupage"] = trim(substr($buffer, 28, 2)); $BUF_record["ghm"] = trim(substr($buffer, 30, 6)); $BUF_record["code_retour"] = trim(substr($buffer, 36, 3)); $BUF_record["version_groupage_genrsa"] = trim(substr($buffer, 39, 2)); $BUF_record["ghm_genrsa"] = trim(substr($buffer, 41, 6)); $BUF_record["code_retour_genrsa"] = trim(substr($buffer, 47, 3)); $BUF_record["nombre_rum"] = trim(substr($buffer, 50, 2)); $BUF_record["age_annees"] = trim(substr($buffer, 52, 3)); $BUF_record["age_jours"] = trim(substr($buffer, 55, 3)); $BUF_record["sexe"] = trim(substr($buffer, 58, 1)); $BUF_record["mode_entree"] = trim(substr($buffer, 59, 1)); $BUF_record["provenance"] = trim(substr($buffer, 60, 1)); $BUF_record["mois_sortie"]= trim(substr($buffer, 61, 6)); $BUF_record["mode_sortie"] = trim(substr($buffer, 67, 1)); $BUF_record["destination"] = trim(substr($buffer, 68, 1)); $BUF_record["type_sejour"] = trim(substr($buffer, 69, 1)); $BUF_record["duree_sejour"] = trim(substr($buffer, 70, 4)); $BUF_record["code_geographique"] = substr($buffer, 74, 5); $BUF_record["poids_entree"] = trim(substr($buffer, 79, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 83, 2)); $BUF_record["nombre_seances"] = trim(substr($buffer, 85, 2)); $BUF_record["igs2"] = trim(substr($buffer, 87, 3)); $BUF_record["ghs_genrsa"] = trim(substr($buffer, 90, 4)); // ??? $BUF_record["nb_exh"] = trim(substr($buffer, 94, 4)); $BUF_record["nb_exb"] = trim(substr($buffer, 99, 3)); $BUF_record["forfait_dialyse"] = trim(substr($buffer, 102, 4)); $BUF_record["top_uhcd"] = trim(substr($buffer, 106, 1)); $BUF_record["nb_sup_dialyse_1"] = trim(substr($buffer, 108, 3)); $BUF_record["nb_sup_dialyse_2"] = trim(substr($buffer, 111, 3)); $BUF_record["nb_sup_dialyse_3"] = trim(substr($buffer, 114, 3)); $BUF_record["nb_sup_dialyse_4"] = trim(substr($buffer, 117, 3)); $BUF_record["nb_seances_avant_sros"] = "00"; $BUF_record["nb_actes_9510"] = trim(substr($buffer, 120, 3)); $BUF_record["nb_actes_9511"] = trim(substr($buffer, 123, 3)); $BUF_record["nb_actes_9512"] = trim(substr($buffer, 126, 3)); $BUF_record["nb_actes_9515"] = trim(substr($buffer, 129, 3)); $BUF_record["nb_actes_9524"] = trim(substr($buffer, 132, 3)); $BUF_record["nb_actes_9622"] = "000"; $BUF_record["nb_actes_6523"] = trim(substr($buffer, 135, 3)); $BUF_record["nb_actes_9621"] = trim(substr($buffer, 138, 3)); $BUF_record["nb_sup_apherese"] = trim(substr($buffer, 141, 3)); $BUF_record["nb_sup_hyperbare"] = trim(substr($buffer, 167, 3)); $BUF_record["type_prestation_prelevement_organe"] = trim(substr($buffer, 170, 1)); $BUF_record["nb_sup_sra"] = "000"; $BUF_record["nb_sup_rea"] = trim(substr($buffer, 171, 3)); $BUF_record["nb_sup_si"] = trim(substr($buffer, 174, 3)); $BUF_record["nb_sup_stf"] = trim(substr($buffer, 177, 3)); $BUF_record["nb_sup_ssc"] = "000"; $BUF_record["nb_sup_src"] = trim(substr($buffer, 180, 3)); $BUF_record["nb_sup_nn1"] = trim(substr($buffer, 183, 3)); $BUF_record["nb_sup_nn2"] = trim(substr($buffer, 186, 3)); $BUF_record["nb_sup_nn3"] = trim(substr($buffer, 189, 3)); $BUF_record["nb_sup_rep"] = trim(substr($buffer, 192, 3)); $BUF_record["passage_lit_sp"] = trim(substr($buffer, 195, 1)); $BUF_record["no_rum_dp"] = trim(substr($buffer, 198, 2)); $BUF_record["ok"] = TRUE; break; case "217" : $BUF_record["BUF_offsets"] = $rsa_offsets_215; $BUF_record["no_rsa"] = trim(substr($buffer, 12, 10)); $BUF_record["version_format"] = trim(substr($buffer, 22, 3)); $BUF_record["numero_tarif"] = trim(substr($buffer, 25, 3)); $BUF_record["version_groupage"] = trim(substr($buffer, 28, 2)); $BUF_record["ghm"] = trim(substr($buffer, 30, 6)); $BUF_record["code_retour"] = trim(substr($buffer, 36, 3)); $BUF_record["version_groupage_genrsa"] = trim(substr($buffer, 39, 2)); $BUF_record["ghm_genrsa"] = trim(substr($buffer, 41, 6)); $BUF_record["code_retour_genrsa"] = trim(substr($buffer, 47, 3)); $BUF_record["nombre_rum"] = trim(substr($buffer, 50, 2)); $BUF_record["age_annees"] = trim(substr($buffer, 52, 3)); $BUF_record["age_jours"] = trim(substr($buffer, 55, 3)); $BUF_record["sexe"] = trim(substr($buffer, 58, 1)); $BUF_record["mode_entree"] = trim(substr($buffer, 59, 1)); $BUF_record["provenance"] = trim(substr($buffer, 60, 1)); $BUF_record["mois_sortie"]= trim(substr($buffer, 61, 6)); $BUF_record["mode_sortie"] = trim(substr($buffer, 67, 1)); $BUF_record["destination"] = trim(substr($buffer, 68, 1)); $BUF_record["type_sejour"] = trim(substr($buffer, 69, 1)); $BUF_record["duree_sejour"] = trim(substr($buffer, 70, 4)); $BUF_record["code_geographique"] = substr($buffer, 74, 5); $BUF_record["poids_entree"] = trim(substr($buffer, 79, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 83, 2)); $BUF_record["nombre_seances"] = trim(substr($buffer, 85, 2)); $BUF_record["igs2"] = "000"; $BUF_record["ghs_genrsa"] = trim(substr($buffer, 87, 4)); // ??? $BUF_record["nb_exh"] = trim(substr($buffer, 91, 4)); $BUF_record["nb_exb"] = trim(substr($buffer, 96, 3)); $BUF_record["forfait_dialyse"] = trim(substr($buffer, 99, 4)); $BUF_record["top_uhcd"] = trim(substr($buffer, 103, 1)); $BUF_record["nb_sup_dialyse_1"] = trim(substr($buffer, 105, 3)); $BUF_record["nb_sup_dialyse_2"] = trim(substr($buffer, 108, 3)); $BUF_record["nb_sup_dialyse_3"] = trim(substr($buffer, 111, 3)); $BUF_record["nb_sup_dialyse_4"] = trim(substr($buffer, 114, 3)); $BUF_record["nb_seances_avant_sros"] = "00"; $BUF_record["nb_actes_9510"] = trim(substr($buffer, 117, 3)); // 9610 $BUF_record["nb_actes_9511"] = trim(substr($buffer, 120, 3)); // 9611 $BUF_record["nb_actes_9512"] = trim(substr($buffer, 123, 3)); // 9612 $BUF_record["nb_actes_9515"] = trim(substr($buffer, 126, 3)); // 9619 $BUF_record["nb_actes_9524"] = trim(substr($buffer, 129, 3)); // 9620 $BUF_record["nb_actes_6523"] = trim(substr($buffer, 132, 3)); $BUF_record["nb_actes_9621"] = trim(substr($buffer, 135, 3)); $BUF_record["nb_sup_apherese"] = trim(substr($buffer, 138, 3)); // 9615 $BUF_record["nb_actes_9622"] = trim(substr($buffer, 141, 3)); $BUF_record["nb_sup_hyperbare"] = trim(substr($buffer, 166, 3)); $BUF_record["type_prestation_prelevement_organe"] = trim(substr($buffer, 170, 1)); $BUF_record["nb_sup_sra"] = "000"; $BUF_record["nb_sup_rea"] = trim(substr($buffer, 170, 3)); $BUF_record["nb_sup_si"] = trim(substr($buffer, 173, 3)); $BUF_record["nb_sup_stf"] = trim(substr($buffer, 176, 3)); $BUF_record["nb_sup_ssc"] = "000"; $BUF_record["nb_sup_src"] = trim(substr($buffer, 179, 3)); $BUF_record["nb_sup_nn1"] = trim(substr($buffer, 182, 3)); $BUF_record["nb_sup_nn2"] = trim(substr($buffer, 185, 3)); $BUF_record["nb_sup_nn3"] = trim(substr($buffer, 188, 3)); $BUF_record["nb_sup_rep"] = trim(substr($buffer, 191, 3)); $BUF_record["passage_lit_sp"] = trim(substr($buffer, 194, 1)); $BUF_record["nb_faisceaux"] = trim(substr($buffer, 197, 1)); $BUF_record["no_rum_dp"] = trim(substr($buffer, 198, 2)); $BUF_record["ok"] = TRUE; break; case "218" : $BUF_record["BUF_offsets"] = $rsa_offsets_215; $BUF_record["no_rsa"] = trim(substr($buffer, 12, 10)); $BUF_record["version_format"] = trim(substr($buffer, 22, 3)); $BUF_record["numero_tarif"] = trim(substr($buffer, 25, 3)); $BUF_record["version_groupage"] = trim(substr($buffer, 28, 2)); $BUF_record["ghm"] = trim(substr($buffer, 30, 6)); $BUF_record["code_retour"] = trim(substr($buffer, 36, 3)); $BUF_record["version_groupage_genrsa"] = trim(substr($buffer, 39, 2)); $BUF_record["ghm_genrsa"] = trim(substr($buffer, 41, 6)); $BUF_record["code_retour_genrsa"] = trim(substr($buffer, 47, 3)); $BUF_record["nombre_rum"] = trim(substr($buffer, 50, 2)); $BUF_record["age_annees"] = trim(substr($buffer, 52, 3)); $BUF_record["age_jours"] = trim(substr($buffer, 55, 3)); $BUF_record["sexe"] = trim(substr($buffer, 58, 1)); $BUF_record["mode_entree"] = trim(substr($buffer, 59, 1)); $BUF_record["provenance"] = trim(substr($buffer, 60, 1)); $BUF_record["mois_sortie"]= trim(substr($buffer, 61, 6)); $BUF_record["mode_sortie"] = trim(substr($buffer, 67, 1)); $BUF_record["destination"] = trim(substr($buffer, 68, 1)); $BUF_record["type_sejour"] = trim(substr($buffer, 69, 1)); $BUF_record["duree_sejour"] = trim(substr($buffer, 70, 4)); $BUF_record["code_geographique"] = substr($buffer, 74, 5); $BUF_record["poids_entree"] = trim(substr($buffer, 79, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 83, 2)); $BUF_record["delai_dernieres_regles"] = trim(substr($buffer, 85, 3)); $BUF_record["nombre_seances"] = trim(substr($buffer, 88, 2)); $BUF_record["igs2"] = "000"; $BUF_record["ghs_genrsa"] = trim(substr($buffer, 90, 4)); $BUF_record["nb_exh"] = trim(substr($buffer, 94, 4)); $BUF_record["nb_exb"] = trim(substr($buffer, 99, 3)); $BUF_record["forfait_dialyse"] = trim(substr($buffer, 102, 4)); $BUF_record["top_uhcd"] = trim(substr($buffer, 106, 1)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 107, 1)); $BUF_record["nb_sup_dialyse_1"] = trim(substr($buffer, 108, 3)); $BUF_record["nb_sup_dialyse_2"] = trim(substr($buffer, 111, 3)); $BUF_record["nb_sup_dialyse_3"] = trim(substr($buffer, 114, 3)); $BUF_record["nb_sup_dialyse_4"] = trim(substr($buffer, 117, 3)); $BUF_record["nb_sup_apherese"] = trim(substr($buffer, 120, 3)); $BUF_record["nb_rdth"] = trim(substr($buffer, 123, 1)); $BUF_record["nb_seances_avant_sros"] = "00"; $BUF_record["nb_sup_hyperbare"] = trim(substr($buffer, 146, 3)); $BUF_record["type_prestation_prelevement_organe"] = trim(substr($buffer, 149, 1)); $BUF_record["nb_sup_sra"] = "000"; $BUF_record["nb_sup_rea"] = trim(substr($buffer, 150, 3)); $BUF_record["nb_sup_si"] = trim(substr($buffer, 153, 3)); $BUF_record["nb_sup_stf"] = trim(substr($buffer, 156, 3)); $BUF_record["nb_sup_ssc"] = "000"; $BUF_record["nb_sup_src"] = trim(substr($buffer, 159, 3)); $BUF_record["nb_sup_nn1"] = trim(substr($buffer, 162, 3)); $BUF_record["nb_sup_nn2"] = trim(substr($buffer, 165, 3)); $BUF_record["nb_sup_nn3"] = trim(substr($buffer, 168, 3)); $BUF_record["nb_sup_rep"] = trim(substr($buffer, 171, 3)); $BUF_record["passage_lit_sp"] = trim(substr($buffer, 174, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 175, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 176, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 177, 15)); $BUF_record["nb_faisceaux"] = trim(substr($buffer, 192, 1)); $BUF_record["no_rum_dp"] = trim(substr($buffer, 193, 2)); $BUF_start = 216; $BUF_record["ok"] = TRUE; break; case "219" : // Applicable à compter de M01 2012 case "220" : // Applicable à compter de M01 2013 case "221" : // Applicable à compter de M01 2014 $BUF_record["BUF_offsets"] = $rsa_offsets_215; $BUF_record["no_rsa"] = trim(substr($buffer, 12, 10)); $BUF_record["version_format"] = trim(substr($buffer, 22, 3)); $BUF_record["numero_tarif"] = trim(substr($buffer, 25, 3)); $BUF_record["version_groupage"] = trim(substr($buffer, 28, 2)); $BUF_record["ghm"] = trim(substr($buffer, 30, 6)); $BUF_record["code_retour"] = trim(substr($buffer, 36, 3)); $BUF_record["version_groupage_genrsa"] = trim(substr($buffer, 39, 2)); $BUF_record["ghm_genrsa"] = trim(substr($buffer, 41, 6)); $BUF_record["code_retour_genrsa"] = trim(substr($buffer, 47, 3)); $BUF_record["nombre_rum"] = trim(substr($buffer, 50, 2)); $BUF_record["age_annees"] = trim(substr($buffer, 52, 3)); $BUF_record["age_jours"] = trim(substr($buffer, 55, 3)); $BUF_record["sexe"] = trim(substr($buffer, 58, 1)); $BUF_record["mode_entree"] = trim(substr($buffer, 59, 1)); $BUF_record["provenance"] = trim(substr($buffer, 60, 1)); $BUF_record["mois_sortie"]= trim(substr($buffer, 61, 6)); $BUF_record["mode_sortie"] = trim(substr($buffer, 67, 1)); $BUF_record["destination"] = trim(substr($buffer, 68, 1)); $BUF_record["type_sejour"] = trim(substr($buffer, 69, 1)); $BUF_record["duree_sejour"] = trim(substr($buffer, 70, 4)); $BUF_record["code_geographique"] = substr($buffer, 74, 5); $BUF_record["poids_entree"] = trim(substr($buffer, 79, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 83, 2)); $BUF_record["delai_dernieres_regles"] = trim(substr($buffer, 85, 3)); $BUF_record["nombre_seances"] = trim(substr($buffer, 88, 2)); $BUF_record["igs2"] = "000"; $BUF_record["ghs_genrsa"] = trim(substr($buffer, 90, 4)); $BUF_record["nb_exh"] = trim(substr($buffer, 94, 4)); $BUF_record["nb_exb"] = trim(substr($buffer, 99, 3)); $BUF_record["forfait_dialyse"] = trim(substr($buffer, 102, 4)); $BUF_record["top_uhcd"] = trim(substr($buffer, 106, 1)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 107, 1)); // Nouveauté non exploitée : Nombre d'autorisations d'unités médicales à portée globale valides (Nb_AutPGV) $BUF_record["nb_aut_pgv"] = trim(substr($buffer, 108, 1)); // ------------------------------------------------------------------------------------- $BUF_record["nb_sup_dialyse_1"] = trim(substr($buffer, 109, 3)); $BUF_record["nb_sup_dialyse_2"] = trim(substr($buffer, 112, 3)); $BUF_record["nb_sup_dialyse_3"] = trim(substr($buffer, 115, 3)); $BUF_record["nb_sup_dialyse_4"] = trim(substr($buffer, 118, 3)); $BUF_record["nb_sup_apherese"] = trim(substr($buffer, 121, 3)); // Nouveauté : Nombre de suppléments radiothérapie pédiatrique ------------------------- $BUF_record["nb_sup_rap"] = trim(substr($buffer, 124, 3)); // ------------------------------------------------------------------------------------- // Nouveauté : Nombre de suppléments antepartum ---------------------------------------- $BUF_record["nb_sup_ant"] = trim(substr($buffer, 127, 3)); // ------------------------------------------------------------------------------------- $BUF_record["nb_rdth"] = trim(substr($buffer, 130, 1)); $BUF_record["nb_seances_avant_sros"] = "00"; $BUF_record["nb_sup_hyperbare"] = trim(substr($buffer, 153, 3)); $BUF_record["type_prestation_prelevement_organe"] = trim(substr($buffer, 156, 1)); $BUF_record["nb_sup_sra"] = "000"; $BUF_record["nb_sup_rea"] = trim(substr($buffer, 157, 3)); $BUF_record["nb_sup_si"] = trim(substr($buffer, 160, 3)); $BUF_record["nb_sup_stf"] = trim(substr($buffer, 163, 3)); $BUF_record["nb_sup_ssc"] = "000"; $BUF_record["nb_sup_src"] = trim(substr($buffer, 166, 3)); $BUF_record["nb_sup_nn1"] = trim(substr($buffer, 169, 3)); $BUF_record["nb_sup_nn2"] = trim(substr($buffer, 172, 3)); $BUF_record["nb_sup_nn3"] = trim(substr($buffer, 175, 3)); $BUF_record["nb_sup_rep"] = trim(substr($buffer, 178, 3)); $BUF_record["passage_lit_sp"] = trim(substr($buffer, 181, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 182, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 183, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 184, 15)); $BUF_record["nb_faisceaux"] = trim(substr($buffer, 199, 1)); $BUF_record["no_rum_dp"] = trim(substr($buffer, 200, 2)); $BUF_aut_pgv_length = 2; $BUF_start = 223; $BUF_record["ok"] = TRUE; break; case "222" : // 222 - Applicable à compter de M01 2015 $BUF_record["BUF_offsets"] = $rsa_offsets_222; $BUF_record["no_rsa"] = trim(substr($buffer, 12, 10)); $BUF_record["version_format"] = trim(substr($buffer, 22, 3)); $BUF_record["numero_tarif"] = trim(substr($buffer, 25, 3)); $BUF_record["version_groupage"] = trim(substr($buffer, 28, 2)); $BUF_record["ghm"] = trim(substr($buffer, 30, 6)); $BUF_record["code_retour"] = trim(substr($buffer, 36, 3)); $BUF_record["version_groupage_genrsa"] = trim(substr($buffer, 39, 2)); $BUF_record["ghm_genrsa"] = trim(substr($buffer, 41, 6)); $BUF_record["code_retour_genrsa"] = trim(substr($buffer, 47, 3)); $BUF_record["nombre_rum"] = trim(substr($buffer, 50, 2)); $BUF_record["age_annees"] = trim(substr($buffer, 52, 3)); $BUF_record["age_jours"] = trim(substr($buffer, 55, 3)); $BUF_record["sexe"] = trim(substr($buffer, 58, 1)); $BUF_record["mode_entree"] = trim(substr($buffer, 59, 1)); $BUF_record["provenance"] = trim(substr($buffer, 60, 1)); $BUF_record["mois_sortie"]= trim(substr($buffer, 61, 6)); $BUF_record["mode_sortie"] = trim(substr($buffer, 67, 1)); $BUF_record["destination"] = trim(substr($buffer, 68, 1)); $BUF_record["type_sejour"] = trim(substr($buffer, 69, 1)); $BUF_record["duree_sejour"] = trim(substr($buffer, 70, 4)); $BUF_record["code_geographique"] = substr($buffer, 74, 5); $BUF_record["poids_entree"] = trim(substr($buffer, 79, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 83, 2)); $BUF_record["delai_dernieres_regles"] = trim(substr($buffer, 85, 3)); $BUF_record["nombre_seances"] = trim(substr($buffer, 88, 2)); $BUF_record["igs2"] = "000"; $BUF_record["ghs_genrsa"] = trim(substr($buffer, 90, 4)); $BUF_record["nb_exh"] = trim(substr($buffer, 94, 4)); $BUF_record["type_exb"] = trim(substr($buffer, 98, 1)); $BUF_record["nb_exb"] = trim(substr($buffer, 99, 3)); $BUF_record["forfait_dialyse"] = ""; $BUF_record["top_uhcd"] = trim(substr($buffer, 105, 1)); // top_ghs_minore : 0 = non | 1 = oui $BUF_record["top_ghs_minore"] = trim(substr($buffer, 106, 1)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 107, 1)); // Nouveauté non exploitée : Nombre d'autorisations d'unités médicales à portée globale valides (Nb_AutPGV) $BUF_record["nb_aut_pgv"] = trim(substr($buffer, 108, 1)); // ------------------------------------------------------------------------------------- $BUF_record["nb_sup_dialyse_1"] = trim(substr($buffer, 109, 3)); $BUF_record["nb_sup_dialyse_2"] = trim(substr($buffer, 112, 3)); $BUF_record["nb_sup_dialyse_3"] = trim(substr($buffer, 115, 3)); $BUF_record["nb_sup_dialyse_4"] = trim(substr($buffer, 118, 3)); $BUF_record["nb_sup_apherese"] = trim(substr($buffer, 121, 3)); // Nouveauté : Nombre de suppléments radiothérapie pédiatrique ------------------------- $BUF_record["nb_sup_rap"] = trim(substr($buffer, 124, 3)); // ------------------------------------------------------------------------------------- // Nouveauté : Nombre de suppléments antepartum ---------------------------------------- $BUF_record["nb_sup_ant"] = trim(substr($buffer, 127, 3)); // ------------------------------------------------------------------------------------- $BUF_record["nb_rdth"] = trim(substr($buffer, 130, 1)); // top_valve_aortique : 1 si date sortie >=15/08/2012 + type autorisation UM 60 + acte pose, blanc sinon $BUF_record["top_valve_aortique"] = trim(substr($buffer, 131, 1)); // type_generation_automatique: 0 = pas de génération automatique | 1 = FFM, ATU, SE | 2 = médecin salariés | 3 = dialyse $BUF_record["type_generation_automatique"] = trim(substr($buffer, 132, 1)); $BUF_record["nb_seances_avant_sros"] = "00"; $BUF_record["nb_sup_hyperbare"] = trim(substr($buffer, 145, 3)); $BUF_record["type_prestation_prelevement_organe"] = trim(substr($buffer, 148, 1)); $BUF_record["nb_sup_sra"] = "000"; $BUF_record["nb_sup_rea"] = trim(substr($buffer, 149, 3)); $BUF_record["nb_sup_si"] = trim(substr($buffer, 152, 3)); $BUF_record["nb_sup_stf"] = trim(substr($buffer, 155, 3)); $BUF_record["nb_sup_ssc"] = "000"; $BUF_record["nb_sup_src"] = trim(substr($buffer, 158, 3)); $BUF_record["nb_sup_nn1"] = trim(substr($buffer, 161, 3)); $BUF_record["nb_sup_nn2"] = trim(substr($buffer, 164, 3)); $BUF_record["nb_sup_nn3"] = trim(substr($buffer, 167, 3)); $BUF_record["nb_sup_rep"] = trim(substr($buffer, 170, 3)); $BUF_record["passage_lit_sp"] = trim(substr($buffer, 173, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 174, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 175, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 176, 15)); $BUF_record["nombre_ivg_anterieures"] = trim(substr($buffer, 191, 2)); $BUF_record["annee_ivg_precedente"] = trim(substr($buffer, 193, 4)); $BUF_record["nombre_naissances_vivantes_anterieures"] = trim(substr($buffer, 197, 2)); $BUF_record["nb_faisceaux"] = ""; $BUF_record["no_rum_dp"] = trim(substr($buffer, 200, 2)); $BUF_record["nb_sup_sdc"] = ""; $BUF_aut_pgv_length = 2; $BUF_start = 223; $BUF_record["ok"] = TRUE; break; case "223" : // 223 - Applicable à compter de M01 2016 $BUF_record["BUF_offsets"] = $rsa_offsets_223; $BUF_record["no_rsa"] = trim(substr($buffer, 12, 10)); $BUF_record["version_format"] = trim(substr($buffer, 22, 3)); $BUF_record["numero_tarif"] = trim(substr($buffer, 25, 3)); $BUF_record["version_groupage"] = trim(substr($buffer, 28, 2)); $BUF_record["ghm"] = trim(substr($buffer, 30, 6)); $BUF_record["code_retour"] = trim(substr($buffer, 36, 3)); $BUF_record["version_groupage_genrsa"] = trim(substr($buffer, 39, 2)); $BUF_record["ghm_genrsa"] = trim(substr($buffer, 41, 6)); $BUF_record["code_retour_genrsa"] = trim(substr($buffer, 47, 3)); $BUF_record["nombre_rum"] = trim(substr($buffer, 50, 2)); $BUF_record["age_annees"] = trim(substr($buffer, 52, 3)); $BUF_record["age_jours"] = trim(substr($buffer, 55, 3)); $BUF_record["sexe"] = trim(substr($buffer, 58, 1)); $BUF_record["mode_entree"] = trim(substr($buffer, 59, 1)); $BUF_record["provenance"] = trim(substr($buffer, 60, 1)); $BUF_record["mois_sortie"]= trim(substr($buffer, 61, 6)); $BUF_record["mode_sortie"] = trim(substr($buffer, 67, 1)); $BUF_record["destination"] = trim(substr($buffer, 68, 1)); $BUF_record["type_sejour"] = trim(substr($buffer, 69, 1)); $BUF_record["duree_sejour"] = trim(substr($buffer, 70, 4)); $BUF_record["code_geographique"] = substr($buffer, 74, 5); $BUF_record["poids_entree"] = trim(substr($buffer, 79, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 83, 2)); $BUF_record["delai_dernieres_regles"] = trim(substr($buffer, 85, 3)); $BUF_record["nombre_seances"] = trim(substr($buffer, 88, 2)); $BUF_record["igs2"] = "000"; $BUF_record["ghs_genrsa"] = trim(substr($buffer, 90, 4)); $BUF_record["nb_exh"] = trim(substr($buffer, 94, 4)); $BUF_record["type_exb"] = trim(substr($buffer, 98, 1)); $BUF_record["nb_exb"] = trim(substr($buffer, 99, 3)); $BUF_record["forfait_dialyse"] = ""; // Nouveauté non exploitée : Top Admission Maison de Naissance 0:NON / 1:OUI $BUF_record["top_adm_maison_naissance"] = trim(substr($buffer, 102, 1)); // Nouveauté non exploitée : Top Radiation partielle Avastin 0:NON / 1:OUI $BUF_record["top_radiation_part_avastin"] = trim(substr($buffer, 103, 1)); // Nouveauté non exploitée : Top Radiation partielle Alimta 0:NON / 1:OUI $BUF_record["top_radiation_partielle_alimta"] = trim(substr($buffer, 104, 1)); $BUF_record["top_uhcd"] = trim(substr($buffer, 105, 1)); // top_ghs_minore : 0 = non | 1 = oui $BUF_record["top_ghs_minore"] = trim(substr($buffer, 106, 1)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 107, 1)); // Nouveauté non exploitée : Nombre d'autorisations d'unités médicales à portée globale valides (Nb_AutPGV) $BUF_record["nb_aut_pgv"] = trim(substr($buffer, 108, 1)); // ------------------------------------------------------------------------------------- $BUF_record["nb_sup_dialyse_1"] = trim(substr($buffer, 109, 3)); $BUF_record["nb_sup_dialyse_2"] = trim(substr($buffer, 112, 3)); $BUF_record["nb_sup_dialyse_3"] = trim(substr($buffer, 115, 3)); $BUF_record["nb_sup_dialyse_4"] = trim(substr($buffer, 118, 3)); $BUF_record["nb_sup_apherese"] = trim(substr($buffer, 121, 3)); // Nouveauté : Nombre de suppléments radiothérapie pédiatrique ------------------------- $BUF_record["nb_sup_rap"] = trim(substr($buffer, 124, 3)); // ------------------------------------------------------------------------------------- // Nouveauté : Nombre de suppléments antepartum ---------------------------------------- $BUF_record["nb_sup_ant"] = trim(substr($buffer, 127, 3)); // ------------------------------------------------------------------------------------- $BUF_record["nb_rdth"] = trim(substr($buffer, 130, 1)); // top_valve_aortique : 1 si date sortie >=15/08/2012 + type autorisation UM 60 + acte pose, blanc sinon $BUF_record["top_valve_aortique"] = trim(substr($buffer, 131, 1)); // type_generation_automatique: 0 = pas de génération automatique | 1 = FFM, ATU, SE | 2 = médecin salariés | 3 = dialyse $BUF_record["type_generation_automatique"] = trim(substr($buffer, 132, 1)); $BUF_record["nb_seances_avant_sros"] = "00"; $BUF_record["nb_sup_hyperbare"] = trim(substr($buffer, 145, 3)); $BUF_record["type_prestation_prelevement_organe"] = trim(substr($buffer, 148, 1)); $BUF_record["nb_sup_sra"] = "000"; $BUF_record["nb_sup_rea"] = trim(substr($buffer, 149, 3)); $BUF_record["nb_sup_si"] = trim(substr($buffer, 152, 3)); $BUF_record["nb_sup_stf"] = trim(substr($buffer, 155, 3)); $BUF_record["nb_sup_ssc"] = "000"; $BUF_record["nb_sup_src"] = trim(substr($buffer, 158, 3)); $BUF_record["nb_sup_nn1"] = trim(substr($buffer, 161, 3)); $BUF_record["nb_sup_nn2"] = trim(substr($buffer, 164, 3)); $BUF_record["nb_sup_nn3"] = trim(substr($buffer, 167, 3)); $BUF_record["nb_sup_rep"] = trim(substr($buffer, 170, 3)); $BUF_record["passage_lit_sp"] = trim(substr($buffer, 173, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 174, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 175, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 176, 15)); $BUF_record["nombre_ivg_anterieures"] = trim(substr($buffer, 191, 2)); $BUF_record["annee_ivg_precedente"] = trim(substr($buffer, 193, 4)); $BUF_record["nombre_naissances_vivantes_anterieures"] = trim(substr($buffer, 197, 2)); $BUF_record["nb_faisceaux"] = ""; $BUF_record["no_rum_dp"] = trim(substr($buffer, 200, 2)); $BUF_record["nb_sup_sdc"] = ""; $BUF_aut_pgv_length = 2; $BUF_start = 238; $BUF_record["ok"] = TRUE; break; case "224" : case "225" : // 224 - Applicable à compter de M01 2018 $BUF_record["BUF_offsets"] = $rsa_offsets_223; $BUF_record["no_rsa"] = trim(substr($buffer, 12, 10)); $BUF_record["version_format"] = trim(substr($buffer, 22, 3)); $BUF_record["numero_tarif"] = trim(substr($buffer, 25, 3)); $BUF_record["version_groupage"] = trim(substr($buffer, 28, 2)); $BUF_record["ghm"] = trim(substr($buffer, 30, 6)); $BUF_record["code_retour"] = trim(substr($buffer, 36, 3)); $BUF_record["version_groupage_genrsa"] = trim(substr($buffer, 39, 2)); $BUF_record["ghm_genrsa"] = trim(substr($buffer, 41, 6)); $BUF_record["code_retour_genrsa"] = trim(substr($buffer, 47, 3)); $BUF_record["nombre_rum"] = trim(substr($buffer, 50, 2)); $BUF_record["age_annees"] = trim(substr($buffer, 52, 3)); $BUF_record["age_jours"] = trim(substr($buffer, 55, 3)); $BUF_record["sexe"] = trim(substr($buffer, 58, 1)); $BUF_record["mode_entree"] = trim(substr($buffer, 59, 1)); $BUF_record["provenance"] = trim(substr($buffer, 60, 1)); $BUF_record["mois_sortie"]= trim(substr($buffer, 61, 6)); $BUF_record["mode_sortie"] = trim(substr($buffer, 67, 1)); $BUF_record["destination"] = trim(substr($buffer, 68, 1)); $BUF_record["type_sejour"] = trim(substr($buffer, 69, 1)); $BUF_record["duree_sejour"] = trim(substr($buffer, 70, 4)); $BUF_record["code_geographique"] = substr($buffer, 74, 5); $BUF_record["poids_entree"] = trim(substr($buffer, 79, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 83, 2)); $BUF_record["delai_dernieres_regles"] = trim(substr($buffer, 85, 3)); $BUF_record["nombre_seances"] = trim(substr($buffer, 88, 2)); $BUF_record["igs2"] = "000"; $BUF_record["ghs_genrsa"] = trim(substr($buffer, 90, 4)); $BUF_record["nb_exh"] = trim(substr($buffer, 94, 4)); $BUF_record["type_exb"] = trim(substr($buffer, 98, 1)); $BUF_record["nb_exb"] = trim(substr($buffer, 99, 3)); $BUF_record["forfait_dialyse"] = ""; // Nouveauté non exploitée : Top Admission Maison de Naissance 0:NON / 1:OUI $BUF_record["top_adm_maison_naissance"] = trim(substr($buffer, 102, 1)); // Nouveauté non exploitée : Top Radiation partielle Avastin 0:NON / 1:OUI $BUF_record["top_radiation_part_avastin"] = trim(substr($buffer, 103, 1)); // Nouveauté non exploitée : Top Radiation partielle Alimta 0:NON / 1:OUI $BUF_record["top_radiation_partielle_alimta"] = trim(substr($buffer, 104, 1)); $BUF_record["top_uhcd"] = trim(substr($buffer, 105, 1)); // top_ghs_minore : 0 = non | 1 = oui $BUF_record["top_ghs_minore"] = trim(substr($buffer, 106, 1)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 107, 1)); // Nouveauté non exploitée : Nombre d'autorisations d'unités médicales à portée globale valides (Nb_AutPGV) $BUF_record["nb_aut_pgv"] = trim(substr($buffer, 108, 1)); // ------------------------------------------------------------------------------------- $BUF_record["nb_sup_dialyse_1"] = trim(substr($buffer, 109, 3)); $BUF_record["nb_sup_dialyse_2"] = trim(substr($buffer, 112, 3)); $BUF_record["nb_sup_dialyse_3"] = trim(substr($buffer, 115, 3)); $BUF_record["nb_sup_dialyse_4"] = trim(substr($buffer, 118, 3)); $BUF_record["nb_sup_apherese"] = trim(substr($buffer, 121, 3)); // Nouveauté : Nombre de suppléments radiothérapie pédiatrique ------------------------- $BUF_record["nb_sup_rap"] = trim(substr($buffer, 124, 3)); // ------------------------------------------------------------------------------------- // Nouveauté : Nombre de suppléments antepartum ---------------------------------------- $BUF_record["nb_sup_ant"] = trim(substr($buffer, 127, 3)); // ------------------------------------------------------------------------------------- $BUF_record["nb_rdth"] = trim(substr($buffer, 130, 1)); // top_valve_aortique : 1 si date sortie >=15/08/2012 + type autorisation UM 60 + acte pose, blanc sinon $BUF_record["top_valve_aortique"] = trim(substr($buffer, 131, 1)); // type_generation_automatique: 0 = pas de génération automatique | 1 = FFM, ATU, SE | 2 = médecin salariés | 3 = dialyse $BUF_record["type_generation_automatique"] = trim(substr($buffer, 132, 1)); $BUF_record["ghs_hors_innovation"] = trim(substr($buffer, 90, 4)); $BUF_record["nb_seances_avant_sros"] = "00"; $BUF_record["nb_sup_hyperbare"] = trim(substr($buffer, 145, 3)); $BUF_record["type_prestation_prelevement_organe"] = trim(substr($buffer, 148, 1)); $BUF_record["nb_sup_sra"] = "000"; $BUF_record["nb_sup_rea"] = trim(substr($buffer, 149, 3)); $BUF_record["nb_sup_si"] = trim(substr($buffer, 152, 3)); $BUF_record["nb_sup_stf"] = trim(substr($buffer, 155, 3)); $BUF_record["nb_sup_ssc"] = "000"; $BUF_record["nb_sup_src"] = trim(substr($buffer, 158, 3)); $BUF_record["nb_sup_nn1"] = trim(substr($buffer, 161, 3)); $BUF_record["nb_sup_nn2"] = trim(substr($buffer, 164, 3)); $BUF_record["nb_sup_nn3"] = trim(substr($buffer, 167, 3)); $BUF_record["nb_sup_rep"] = trim(substr($buffer, 170, 3)); $BUF_record["passage_lit_sp"] = trim(substr($buffer, 173, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 174, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 175, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 176, 15)); $BUF_record["nombre_ivg_anterieures"] = ""; $BUF_record["annee_ivg_precedente"] = ""; $BUF_record["nombre_naissances_vivantes_anterieures"] = ""; $BUF_record["nb_sup_sdc"] = trim(substr($buffer, 191, 1)); $BUF_record["nb_faisceaux"] = ""; $BUF_record["no_rum_dp"] = trim(substr($buffer, 200, 2)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 202, 6)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 208, 6)); $BUF_record["nb_das"] = trim(substr($buffer, 214, 4)); $BUF_aut_pgv_length = 2; $BUF_start = 238; $BUF_record["ok"] = TRUE; break; case "226" : // 226 - Applicable à compter de M03 2020 $BUF_record["BUF_offsets"] = $rsa_offsets_226; $BUF_record["no_rsa"] = trim(substr($buffer, 12, 10)); $BUF_record["version_format"] = trim(substr($buffer, 22, 3)); $BUF_record["numero_tarif"] = trim(substr($buffer, 25, 3)); $BUF_record["version_groupage"] = trim(substr($buffer, 28, 2)); $BUF_record["ghm"] = trim(substr($buffer, 30, 6)); $BUF_record["code_retour"] = trim(substr($buffer, 36, 3)); $BUF_record["version_groupage_genrsa"] = trim(substr($buffer, 39, 2)); $BUF_record["ghm_genrsa"] = trim(substr($buffer, 41, 6)); $BUF_record["code_retour_genrsa"] = trim(substr($buffer, 47, 3)); $BUF_record["nombre_rum"] = trim(substr($buffer, 50, 2)); $BUF_record["age_annees"] = trim(substr($buffer, 52, 3)); $BUF_record["age_jours"] = trim(substr($buffer, 55, 3)); $BUF_record["sexe"] = trim(substr($buffer, 58, 1)); $BUF_record["mode_entree"] = trim(substr($buffer, 59, 1)); $BUF_record["provenance"] = trim(substr($buffer, 60, 1)); $BUF_record["mois_sortie"]= trim(substr($buffer, 61, 6)); $BUF_record["mode_sortie"] = trim(substr($buffer, 67, 1)); $BUF_record["destination"] = trim(substr($buffer, 68, 1)); $BUF_record["type_sejour"] = trim(substr($buffer, 69, 1)); $BUF_record["duree_sejour"] = trim(substr($buffer, 70, 4)); $BUF_record["code_geographique"] = substr($buffer, 74, 5); $BUF_record["poids_entree"] = trim(substr($buffer, 79, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 83, 2)); $BUF_record["delai_dernieres_regles"] = trim(substr($buffer, 85, 3)); $BUF_record["nombre_seances"] = trim(substr($buffer, 93, 2)); $BUF_record["igs2"] = "000"; $BUF_record["ghs_genrsa"] = trim(substr($buffer, 95, 4)); $BUF_record["nb_exh"] = trim(substr($buffer, 99, 4)); $BUF_record["type_exb"] = trim(substr($buffer, 103, 1)); $BUF_record["nb_exb"] = trim(substr($buffer, 104, 3)); $BUF_record["forfait_dialyse"] = ""; // Nouveauté non exploitée : Top Admission Maison de Naissance 0:NON / 1:OUI $BUF_record["top_adm_maison_naissance"] = trim(substr($buffer, 107, 1)); // Nouveauté non exploitée : Top Radiation partielle Avastin 0:NON / 1:OUI $BUF_record["top_radiation_part_avastin"] = trim(substr($buffer, 108, 1)); // Nouveauté non exploitée : Top Radiation partielle Alimta 0:NON / 1:OUI $BUF_record["top_radiation_partielle_alimta"] = trim(substr($buffer, 109, 1)); $BUF_record["top_uhcd"] = trim(substr($buffer, 110, 1)); // top_ghs_minore : 0 = non | 1 = oui $BUF_record["top_ghs_minore"] = trim(substr($buffer, 111, 1)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 112, 1)); // Nouveauté non exploitée : Nombre d'autorisations d'unités médicales à portée globale valides (Nb_AutPGV) $BUF_record["nb_aut_pgv"] = trim(substr($buffer, 113, 1)); // ------------------------------------------------------------------------------------- $BUF_record["nb_sup_dialyse_1"] = trim(substr($buffer, 114, 3)); $BUF_record["nb_sup_dialyse_2"] = trim(substr($buffer, 117, 3)); $BUF_record["nb_sup_dialyse_3"] = trim(substr($buffer, 120, 3)); $BUF_record["nb_sup_dialyse_4"] = trim(substr($buffer, 123, 3)); $BUF_record["nb_sup_apherese"] = trim(substr($buffer, 126, 3)); // Nouveauté : Nombre de suppléments radiothérapie pédiatrique ------------------------- $BUF_record["nb_sup_rap"] = trim(substr($buffer, 129, 3)); // ------------------------------------------------------------------------------------- // Nouveauté : Nombre de suppléments antepartum ---------------------------------------- $BUF_record["nb_sup_ant"] = trim(substr($buffer, 132, 3)); // ------------------------------------------------------------------------------------- $BUF_record["nb_rdth"] = trim(substr($buffer, 135, 1)); // top_valve_aortique : 1 si date sortie >=15/08/2012 + type autorisation UM 60 + acte pose, blanc sinon $BUF_record["top_valve_aortique"] = trim(substr($buffer, 136, 1)); // type_generation_automatique: 0 = pas de génération automatique | 1 = FFM, ATU, SE | 2 = médecin salariés | 3 = dialyse $BUF_record["type_generation_automatique"] = trim(substr($buffer, 137, 1)); $BUF_record["ghs_hors_innovation"] = trim(substr($buffer, 95, 4)); $BUF_record["nb_seances_avant_sros"] = "00"; $BUF_record["nb_sup_hyperbare"] = trim(substr($buffer, 150, 3)); $BUF_record["type_prestation_prelevement_organe"] = trim(substr($buffer, 153, 1)); $BUF_record["nb_sup_sra"] = "000"; $BUF_record["nb_sup_rea"] = trim(substr($buffer, 154, 3)); $BUF_record["nb_sup_si"] = trim(substr($buffer, 157, 3)); $BUF_record["nb_sup_stf"] = trim(substr($buffer, 160, 3)); $BUF_record["nb_sup_ssc"] = "000"; $BUF_record["nb_sup_src"] = trim(substr($buffer, 163, 3)); $BUF_record["nb_sup_nn1"] = trim(substr($buffer, 166, 3)); $BUF_record["nb_sup_nn2"] = trim(substr($buffer, 169, 3)); $BUF_record["nb_sup_nn3"] = trim(substr($buffer, 172, 3)); $BUF_record["nb_sup_rep"] = trim(substr($buffer, 175, 3)); $BUF_record["passage_lit_sp"] = trim(substr($buffer, 178, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 179, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 180, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 182, 15)); $BUF_record["nombre_ivg_anterieures"] = ""; $BUF_record["annee_ivg_precedente"] = ""; $BUF_record["nombre_naissances_vivantes_anterieures"] = ""; $BUF_record["nb_sup_sdc"] = trim(substr($buffer, 196, 1)); $BUF_record["nb_faisceaux"] = ""; $BUF_record["no_rum_dp"] = trim(substr($buffer, 209, 2)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 211, 6)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 217, 6)); $BUF_record["nb_das"] = trim(substr($buffer, 223, 4)); $BUF_aut_pgv_length = 2; $BUF_start = 247; $BUF_record["ok"] = TRUE; break; case "227" : $BUF_record["BUF_offsets"] = $rsa_offsets_227; $BUF_record["no_rsa"] = trim(substr($buffer, 12, 10)); $BUF_record["version_format"] = trim(substr($buffer, 22, 3)); $BUF_record["numero_tarif"] = trim(substr($buffer, 25, 3)); $BUF_record["version_groupage"] = trim(substr($buffer, 28, 2)); $BUF_record["ghm"] = trim(substr($buffer, 30, 6)); $BUF_record["code_retour"] = trim(substr($buffer, 36, 3)); $BUF_record["version_groupage_genrsa"] = trim(substr($buffer, 39, 2)); $BUF_record["ghm_genrsa"] = trim(substr($buffer, 41, 6)); $BUF_record["code_retour_genrsa"] = trim(substr($buffer, 47, 3)); $BUF_record["nombre_rum"] = trim(substr($buffer, 50, 2)); $BUF_record["age_annees"] = trim(substr($buffer, 52, 3)); $BUF_record["age_jours"] = trim(substr($buffer, 55, 3)); $BUF_record["sexe"] = trim(substr($buffer, 58, 1)); $BUF_record["mode_entree"] = trim(substr($buffer, 59, 1)); $BUF_record["provenance"] = trim(substr($buffer, 60, 1)); $BUF_record["mois_sortie"]= trim(substr($buffer, 61, 6)); $BUF_record["mode_sortie"] = trim(substr($buffer, 67, 1)); $BUF_record["destination"] = trim(substr($buffer, 68, 1)); $BUF_record["type_sejour"] = trim(substr($buffer, 69, 1)); $BUF_record["duree_sejour"] = trim(substr($buffer, 70, 4)); $BUF_record["code_geographique"] = substr($buffer, 74, 5); $BUF_record["poids_entree"] = trim(substr($buffer, 79, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 83, 2)); $BUF_record["delai_dernieres_regles"] = trim(substr($buffer, 85, 3)); $BUF_record["nombre_seances"] = trim(substr($buffer, 93, 2)); $BUF_record["igs2"] = "000"; $BUF_record["ghs_genrsa"] = trim(substr($buffer, 95, 4)); $BUF_record["nb_exh"] = trim(substr($buffer, 99, 4)); $BUF_record["type_exb"] = trim(substr($buffer, 103, 1)); $BUF_record["nb_exb"] = trim(substr($buffer, 104, 3)); $BUF_record["forfait_dialyse"] = ""; // Nouveauté non exploitée : Top Admission Maison de Naissance 0:NON / 1:OUI $BUF_record["top_adm_maison_naissance"] = trim(substr($buffer, 107, 1)); // Nouveauté non exploitée : Top Radiation partielle Avastin 0:NON / 1:OUI $BUF_record["top_radiation_part_avastin"] = trim(substr($buffer, 108, 1)); // Nouveauté non exploitée : Top Radiation partielle Alimta 0:NON / 1:OUI $BUF_record["top_radiation_partielle_alimta"] = trim(substr($buffer, 109, 1)); $BUF_record["top_uhcd"] = trim(substr($buffer, 110, 1)); // top_ghs_minore : 0 = non | 1 = oui $BUF_record["top_ghs_minore"] = trim(substr($buffer, 111, 1)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 112, 1)); // Nouveauté non exploitée : Nombre d'autorisations d'unités médicales à portée globale valides (Nb_AutPGV) $BUF_record["nb_aut_pgv"] = trim(substr($buffer, 113, 1)); // ------------------------------------------------------------------------------------- $BUF_record["nb_sup_dialyse_1"] = trim(substr($buffer, 114, 3)); $BUF_record["nb_sup_dialyse_2"] = trim(substr($buffer, 117, 3)); $BUF_record["nb_sup_dialyse_3"] = trim(substr($buffer, 120, 3)); $BUF_record["nb_sup_dialyse_4"] = trim(substr($buffer, 123, 3)); $BUF_record["nb_sup_apherese"] = trim(substr($buffer, 126, 3)); // Nouveauté : Nombre de suppléments radiothérapie pédiatrique ------------------------- $BUF_record["nb_sup_rap"] = trim(substr($buffer, 129, 3)); // ------------------------------------------------------------------------------------- // Nouveauté : Nombre de suppléments antepartum ---------------------------------------- $BUF_record["nb_sup_ant"] = trim(substr($buffer, 132, 3)); // ------------------------------------------------------------------------------------- $BUF_record["nb_rdth"] = trim(substr($buffer, 135, 1)); // top_valve_aortique : 1 si date sortie >=15/08/2012 + type autorisation UM 60 + acte pose, blanc sinon $BUF_record["top_valve_aortique"] = trim(substr($buffer, 136, 1)); // type_generation_automatique: 0 = pas de génération automatique | 1 = FFM, ATU, SE | 2 = médecin salariés | 3 = dialyse $BUF_record["type_generation_automatique"] = trim(substr($buffer, 137, 1)); $BUF_record["ghs_hors_innovation"] = trim(substr($buffer, 95, 4)); $BUF_record["nb_seances_avant_sros"] = "00"; $BUF_record["nb_sup_hyperbare"] = trim(substr($buffer, 150, 3)); $BUF_record["type_prestation_prelevement_organe"] = trim(substr($buffer, 153, 1)); $BUF_record["nb_sup_sra"] = "000"; $BUF_record["nb_sup_rea"] = trim(substr($buffer, 154, 3)); $BUF_record["nb_sup_si"] = trim(substr($buffer, 157, 3)); $BUF_record["nb_sup_stf"] = trim(substr($buffer, 160, 3)); $BUF_record["nb_sup_ssc"] = "000"; $BUF_record["nb_sup_src"] = trim(substr($buffer, 163, 3)); $BUF_record["nb_sup_nn1"] = trim(substr($buffer, 166, 3)); $BUF_record["nb_sup_nn2"] = trim(substr($buffer, 169, 3)); $BUF_record["nb_sup_nn3"] = trim(substr($buffer, 172, 3)); $BUF_record["nb_sup_rep"] = trim(substr($buffer, 175, 3)); $BUF_record["passage_lit_sp"] = trim(substr($buffer, 178, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 179, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 180, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 182, 15)); $BUF_record["nombre_ivg_anterieures"] = ""; $BUF_record["annee_ivg_precedente"] = ""; $BUF_record["nombre_naissances_vivantes_anterieures"] = ""; $BUF_record["nb_sup_sdc"] = trim(substr($buffer, 196, 1)); $BUF_record["nb_faisceaux"] = ""; $BUF_record["no_rum_dp"] = trim(substr($buffer, 209, 2)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 211, 6)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 217, 6)); $BUF_record["nb_das"] = trim(substr($buffer, 223, 4)); $BUF_aut_pgv_length = 2; $BUF_start = 247; $BUF_record["ok"] = TRUE; break; default : // 229 - Applicable à compter de M03 2025 $BUF_record["BUF_offsets"] = $rsa_offsets_228; $BUF_record["no_rsa"] = trim(substr($buffer, 12, 10)); $BUF_record["version_format"] = trim(substr($buffer, 22, 3)); $BUF_record["numero_tarif"] = trim(substr($buffer, 25, 3)); $BUF_record["version_groupage"] = trim(substr($buffer, 28, 2)); $BUF_record["ghm"] = trim(substr($buffer, 30, 6)); $BUF_record["code_retour"] = trim(substr($buffer, 36, 3)); $BUF_record["version_groupage_genrsa"] = trim(substr($buffer, 39, 2)); $BUF_record["ghm_genrsa"] = trim(substr($buffer, 41, 6)); $BUF_record["code_retour_genrsa"] = trim(substr($buffer, 47, 3)); $BUF_record["nombre_rum"] = trim(substr($buffer, 50, 2)); $BUF_record["age_annees"] = trim(substr($buffer, 52, 3)); $BUF_record["age_jours"] = trim(substr($buffer, 55, 3)); $BUF_record["sexe"] = trim(substr($buffer, 58, 1)); $BUF_record["mode_entree"] = trim(substr($buffer, 59, 1)); $BUF_record["provenance"] = trim(substr($buffer, 60, 1)); $BUF_record["mois_sortie"]= trim(substr($buffer, 61, 6)); $BUF_record["mode_sortie"] = trim(substr($buffer, 67, 1)); $BUF_record["destination"] = trim(substr($buffer, 68, 1)); $BUF_record["type_sejour"] = trim(substr($buffer, 69, 1)); $BUF_record["duree_sejour"] = trim(substr($buffer, 70, 4)); $BUF_record["code_geographique"] = substr($buffer, 74, 5); $BUF_record["poids_entree"] = trim(substr($buffer, 79, 4)); $BUF_record["age_gestationnel"] = trim(substr($buffer, 83, 2)); $BUF_record["delai_dernieres_regles"] = trim(substr($buffer, 85, 3)); $BUF_record["nombre_seances"] = trim(substr($buffer, 93, 2)); $BUF_record["igs2"] = "000"; $BUF_record["ghs_genrsa"] = trim(substr($buffer, 95, 4)); $BUF_record["nb_exh"] = trim(substr($buffer, 99, 4)); $BUF_record["type_exb"] = trim(substr($buffer, 103, 1)); $BUF_record["nb_exb"] = trim(substr($buffer, 104, 3)); $BUF_record["forfait_dialyse"] = ""; // Nouveauté non exploitée : Top Admission Maison de Naissance 0:NON / 1:OUI $BUF_record["top_adm_maison_naissance"] = trim(substr($buffer, 107, 1)); // Nouveauté non exploitée : Top Radiation partielle Avastin 0:NON / 1:OUI $BUF_record["top_radiation_part_avastin"] = trim(substr($buffer, 108, 1)); // Nouveauté non exploitée : Top Radiation partielle Alimta 0:NON / 1:OUI $BUF_record["top_radiation_partielle_alimta"] = trim(substr($buffer, 109, 1)); $BUF_record["top_uhcd"] = trim(substr($buffer, 110, 1)); // top_ghs_minore : 0 = non | 1 = oui $BUF_record["top_ghs_minore"] = trim(substr($buffer, 111, 1)); $BUF_record["confirmation_codage"] = trim(substr($buffer, 112, 1)); // Nouveauté non exploitée : Nombre d'autorisations d'unités médicales à portée globale valides (Nb_AutPGV) $BUF_record["nb_aut_pgv"] = trim(substr($buffer, 113, 1)); // ------------------------------------------------------------------------------------- $BUF_record["nb_sup_dialyse_1"] = trim(substr($buffer, 114, 3)); $BUF_record["nb_sup_dialyse_2"] = trim(substr($buffer, 117, 3)); $BUF_record["nb_sup_dialyse_3"] = trim(substr($buffer, 120, 3)); $BUF_record["nb_sup_dialyse_4"] = trim(substr($buffer, 123, 3)); $BUF_record["nb_sup_apherese"] = trim(substr($buffer, 126, 3)); // Nouveauté : Nombre de suppléments radiothérapie pédiatrique ------------------------- $BUF_record["nb_sup_rap"] = trim(substr($buffer, 129, 3)); // ------------------------------------------------------------------------------------- // Nouveauté : Nombre de suppléments antepartum ---------------------------------------- $BUF_record["nb_sup_ant"] = trim(substr($buffer, 132, 3)); // ------------------------------------------------------------------------------------- $BUF_record["nb_rdth"] = trim(substr($buffer, 135, 1)); // top_valve_aortique : 1 si date sortie >=15/08/2012 + type autorisation UM 60 + acte pose, blanc sinon $BUF_record["top_valve_aortique"] = trim(substr($buffer, 136, 1)); // type_generation_automatique: 0 = pas de génération automatique | 1 = FFM, ATU, SE | 2 = médecin salariés | 3 = dialyse $BUF_record["type_generation_automatique"] = trim(substr($buffer, 137, 1)); $BUF_record["ghs_hors_innovation"] = trim(substr($buffer, 95, 4)); $BUF_record["nb_seances_avant_sros"] = "00"; $BUF_record["nb_sup_hyperbare"] = trim(substr($buffer, 150, 3)); $BUF_record["type_prestation_prelevement_organe"] = trim(substr($buffer, 153, 1)); $BUF_record["nb_sup_sra"] = "000"; $BUF_record["nb_sup_rea"] = trim(substr($buffer, 154, 3)); $BUF_record["nb_sup_si"] = trim(substr($buffer, 157, 3)); $BUF_record["nb_sup_stf"] = trim(substr($buffer, 160, 3)); $BUF_record["nb_sup_ssc"] = "000"; $BUF_record["nb_sup_usip"] = trim(substr($buffer, 163, 3)); $BUF_record["nb_sup_src"] = trim(substr($buffer, 166, 3)); $BUF_record["nb_sup_nn1"] = trim(substr($buffer, 169, 3)); $BUF_record["nb_sup_nn2"] = trim(substr($buffer, 172, 3)); $BUF_record["nb_sup_nn3"] = trim(substr($buffer, 175, 3)); $BUF_record["nb_sup_rep"] = trim(substr($buffer, 178, 3)); $BUF_record["passage_lit_sp"] = trim(substr($buffer, 181, 1)); $BUF_record["type_machine_rdth"] = trim(substr($buffer, 182, 1)); $BUF_record["type_dosimetrie"] = trim(substr($buffer, 183, 1)); $BUF_record["numero_innovation"] = trim(substr($buffer, 184, 15)); $BUF_record["nombre_ivg_anterieures"] = ""; $BUF_record["annee_ivg_precedente"] = ""; $BUF_record["nombre_naissances_vivantes_anterieures"] = ""; $BUF_record["nb_sup_sdc"] = trim(substr($buffer, 199, 1)); $BUF_record["nb_faisceaux"] = ""; $BUF_record["no_rum_dp"] = trim(substr($buffer, 212, 2)); $BUF_record["diagnostic_principal"] = trim(substr($buffer, 214, 6)); $BUF_record["diagnostic_relie"] = trim(substr($buffer, 220, 6)); $BUF_record["nb_das"] = trim(substr($buffer, 226, 4)); $BUF_aut_pgv_length = 2; //DRUIDE 2023 $BUF_start = 265; $BUF_record["ok"] = true; break; } } // On passe les types d'autorisation à portée globale valide (à partir du format 219). $BUF_start += $BUF_record["nb_aut_pgv"] * $BUF_aut_pgv_length; $nb_rdth = get_num($BUF_record["nb_rdth"]); if ($nb_rdth > 0) { for ($i = 1; $i <= $nb_rdth; $i++) { $BUF_record["supprdth"][$i]["ghs"] = trim(substr($buffer, $BUF_start, 4)); $BUF_record["supprdth"][$i]["ghs_offset"] = $BUF_start; $BUF_record["supprdth"][$i]["ghs_len"] = 4; $BUF_record["supprdth"][$i]["nb_supplements"] = trim(substr($buffer, $BUF_start + 4, 3)); $BUF_record["supprdth"][$i]["nb_supplements_offset"] = $BUF_start + 4; $BUF_record["supprdth"][$i]["nb_supplements_len"] = 3; $BUF_start += 7; } } return $BUF_record; } function read_ctl_line($buffer) { $BUF_record = array(); $buffer = Encoding::removeBOM($buffer); $buffer = str_ireplace(";", "\t", $buffer); $array = split("\t", $buffer); $BUF_record["erreur_genrsa"] = trim(str_replace("\"", "", $array[0])); $BUF_record["erreur_genrsa_offset"] = 0; $BUF_record["erreur_genrsa_len"] = strlen($array[0]); $BUF_record["no_rss"] = trim(str_replace("\"", "", $array[1])); $BUF_record["no_rss_offset"] = $BUF_record["erreur_genrsa"] + $BUF_record["erreur_genrsa_len"] + 1; $BUF_record["no_rss_len"] = strlen($array[1]); $BUF_record["no_sejour_administratif"] = trim(str_replace("\"", "", $array[2])); $BUF_record["no_sejour_administratif_offset"] = $BUF_record["no_rss_offset"] + $BUF_record["no_rss_len"] + 1; $BUF_record["no_sejour_administratif_len"] = strlen($array[2]); $BUF_record["ok"] = TRUE; return $BUF_record; } function init_offsets() { init_ano_offests(); global $rss_offsets_122; global $rss_offsets_121; global $rss_offsets_120; global $rss_offsets_119; global $rss_offsets_117; global $rss_offsets_114; global $rss_offsets_113; global $rss_offsets_111; global $rss_offsets_110; global $rss_offsets_109; global $rsf_offsets_2006_A; global $rsf_offsets_2006_B; global $rsf_offsets_2006_P; global $rsf_offsets_2006_M; global $rsf_offsets_2008_A; global $rsf_offsets_2008_B; global $rsf_offsets_2008_P; global $rsf_offsets_2008_M; global $rsf_offsets_2008B_M; global $rsf_offsets_2015_A; global $rsf_ace_offsets_2016_A; global $rsf_ace_offsets_2015_A; global $rsf_ace_offsets_2009_A; global $rsf_ace_offsets_2008_A; global $rsf_ace_offsets_2016_B; global $rsf_ace_offsets_2008_B; global $rsf_ace_offsets_2008_C; global $rsf_ace_offsets_2008_M; global $rsf_ace_offsets_2007_A; global $rsf_ace_offsets_2007_C; global $rsf_ace_offsets_2007_M; global $fcp_dmi_offsets_2007; global $fcp_dmi_offsets_2008; global $fcp_ucd_offsets_2007; global $fcp_ucd_offsets_2008; global $rsa_offsets_215; global $rsa_offsets_222; global $rsa_offsets_227; global $rsa_offsets_228; global $rsa_offsets_229; global $tsp_offsets_2019; $tsp_offsets_2019 = array(); $tsp_offsets_2019["finess_offset"] = 0; $tsp_offsets_2019["finess_len"] = 9; $tsp_offsets_2019["type_fichier_offset"] = 9; $tsp_offsets_2019["type_fichier_len"] = 3; $tsp_offsets_2019["annee_offset"] = 12; $tsp_offsets_2019["annee_len"] = 4; $tsp_offsets_2019["periode_offset"] = 16; $tsp_offsets_2019["periode_len"] = 2; $tsp_offsets_2019["code_offset"] = 18; $tsp_offsets_2019["code_len"] = 3; $tsp_offsets_2019["nb_sejours_offset"] = 21; $tsp_offsets_2019["nb_sejours_len"] = 10; $rss_offsets_119 = array(); $rss_offsets_120 = array(); $rss_offsets_121 = array(); $rss_offsets_122 = array(); $rss_offsets_117 = array(); $rss_offsets_114 = array(); $rss_offsets_113 = array(); $rss_offsets_111 = array(); $rss_offsets_110 = array(); $rss_offsets_109 = array(); $rss_offsets_117["version_groupage_offset"] = 0; $rss_offsets_117["version_groupage_len"] = 2; $rss_offsets_117["ghm_offset"] = 2; $rss_offsets_117["ghm_len"] = 6; $rss_offsets_117["version_format_offset"] = 9; $rss_offsets_117["version_format_len"] = 3; $rss_offsets_117["groupage_retour_offset"] = 12; $rss_offsets_117["groupage_retour_len"] = 3; $rss_offsets_117["finess_offset"] = 15; $rss_offsets_117["finess_len"] = 9; $rss_offsets_117["version_format_rum_offset"] = 24; $rss_offsets_117["version_format_rum_len"] = 3; $rss_offsets_117["no_rss_offset"] = 27; $rss_offsets_117["no_rss_len"] = 20; $rss_offsets_117["no_sejour_administratif_offset"] = 47; $rss_offsets_117["no_sejour_administratif_len"] = 20; $rss_offsets_117["no_rum_offset"] = 67; $rss_offsets_117["no_rum_len"] = 10; $rss_offsets_117["date_naissance_offset"] = 77; $rss_offsets_117["date_naissance_len"] = 8; $rss_offsets_117["sexe_offset"] = 85; $rss_offsets_117["sexe_len"] = 1; $rss_offsets_117["unite_medicale_offset"] = 86; $rss_offsets_117["unite_medicale_len"] = 4; $rss_offsets_117["type_autorisation_um_offset"] = 0; $rss_offsets_117["type_autorisation_um_len"] = 0; $rss_offsets_117["type_autorisation_lit_offset"] = 90; $rss_offsets_117["type_autorisation_lit_len"] = 2; $rss_offsets_117["date_entree_offset"] = 92; $rss_offsets_117["date_entree_len"] = 8; $rss_offsets_117["mode_entree_offset"] = 100; $rss_offsets_117["mode_entree_len"] = 1; $rss_offsets_117["provenance_offset"] = 101; $rss_offsets_117["provenance_len"] = 1; $rss_offsets_117["date_sortie_offset"] = 102; $rss_offsets_117["date_sortie_len"] = 8; $rss_offsets_117["mode_sortie_offset"] = 110; $rss_offsets_117["mode_sortie_len"] = 1; $rss_offsets_117["destination_offset"] = 111; $rss_offsets_117["destination_len"] = 1; $rss_offsets_117["code_postal_offset"] = 112; $rss_offsets_117["code_postal_len"] = 5; $rss_offsets_117["poids_bebe_offset"] = 117; $rss_offsets_117["poids_bebe_len"] = 4; $rss_offsets_117["age_gestationnel_offset"] = 121; $rss_offsets_117["age_gestationnel_len"] = 2; $rss_offsets_117["date_dernieres_regles_offset"] = 123; $rss_offsets_117["date_dernieres_regles_len"] = 8; $rss_offsets_117["nombre_seances_offset"] = 131; $rss_offsets_117["nombre_seances_len"] = 2; $rss_offsets_117["nombre_diagnostics_offset"] = 133; $rss_offsets_117["nombre_diagnostics_len"] = 2; $rss_offsets_117["nombre_donnees_documentaires_offset"] = 135; $rss_offsets_117["nombre_donnees_documentaires_len"] = 2; $rss_offsets_117["nombre_actes_offset"] = 137; $rss_offsets_117["nombre_actes_len"] = 3; $rss_offsets_117["diagnostic_principal_offset"] = 140; $rss_offsets_117["diagnostic_principal_len"] = 8; $rss_offsets_117["diagnostic_relie_offset"] = 148; $rss_offsets_117["diagnostic_relie_len"] = 8; $rss_offsets_117["igs2_offset"] = 156; $rss_offsets_117["igs2_len"] = 3; $rss_offsets_117["confirmation_codage_offset"] = 159; $rss_offsets_117["confirmation_codage_len"] = 1; $rss_offsets_117["type_machine_rdth_offset"] = 160; $rss_offsets_117["type_machine_rdth_len"] = 1; $rss_offsets_117["type_dosimetrie_offset"] = 161; $rss_offsets_117["type_dosimetrie_len"] = 1; $rss_offsets_117["numero_innovation_offset"] = 162; $rss_offsets_117["numero_innovation_len"] = 15; $rss_offsets_117["nombre_ivg_anterieures_offset"] = 177; $rss_offsets_117["nombre_ivg_anterieures_len"] = 2; $rss_offsets_117["annee_ivg_precedente_offset"] = 179; $rss_offsets_117["annee_ivg_precedente_len"] = 4; $rss_offsets_117["nombre_naissances_vivantes_anterieures_offset"] = 187; $rss_offsets_117["nombre_naissances_vivantes_anterieures_len"] = 2; $rss_offsets_119 = array_slice($rss_offsets_117,0,count($rss_offsets_117)); // hack de recopie de tableaux $rss_offsets_119["nombre_ivg_anterieures_offset"] = 0; $rss_offsets_119["nombre_ivg_anterieures_len"] = 0; $rss_offsets_119["annee_ivg_precedente_offset"] = 0; $rss_offsets_119["annee_ivg_precedente_len"] = 0; $rss_offsets_119["nombre_naissances_vivantes_anterieures_offset"] = 0; $rss_offsets_119["nombre_naissances_vivantes_anterieures_len"] = 0; $rss_offsets_119["conversion_hp_hc_offset"] = 177; $rss_offsets_119["conversion_hp_hc_len"] = 1; $rss_offsets_119["raac_offset"] = 178; $rss_offsets_119["raac_len"] = 1; $rss_offsets_119 = array_slice($rss_offsets_119,0,count($rss_offsets_119)); // hack de recopie de tableaux $rss_offsets_120 = array_slice($rss_offsets_120,0,count($rss_offsets_120)); // hack de recopie de tableaux $rss_offsets_121 = array_slice($rss_offsets_121,0,count($rss_offsets_121)); // hack de recopie de tableaux $rss_offsets_122 = array_slice($rss_offsets_122,0,count($rss_offsets_122)); // hack de recopie de tableaux $rss_offsets_122["passage_urgences_offset"] = 184; $rss_offsets_122["passage_urgences_len"] = 1; $rss_offsets_114["version_groupage_offset"] = 0; $rss_offsets_114["version_groupage_len"] = 2; $rss_offsets_114["ghm_offset"] = 2; $rss_offsets_114["ghm_len"] = 6; $rss_offsets_114["version_format_offset"] = 9; $rss_offsets_114["version_format_len"] = 3; $rss_offsets_114["groupage_retour_offset"] = 12; $rss_offsets_114["groupage_retour_len"] = 3; $rss_offsets_114["finess_offset"] = 15; $rss_offsets_114["finess_len"] = 9; $rss_offsets_114["version_format_rum_offset"] = 15; $rss_offsets_114["version_format_rum_len"] = 9; $rss_offsets_114["no_rss_offset"] = 27; $rss_offsets_114["no_rss_len"] = 20; $rss_offsets_114["no_sejour_administratif_offset"] = 47; $rss_offsets_114["no_sejour_administratif_len"] = 20; $rss_offsets_114["no_rum_offset"] = 67; $rss_offsets_114["no_rum_len"] = 10; $rss_offsets_114["date_naissance_offset"] = 77; $rss_offsets_114["date_naissance_len"] = 8; $rss_offsets_114["sexe_offset"] = 85; $rss_offsets_114["sexe_len"] = 1; $rss_offsets_114["unite_medicale_offset"] = 86; $rss_offsets_114["unite_medicale_len"] = 4; $rss_offsets_114["type_autorisation_um_offset"] = 0; $rss_offsets_114["type_autorisation_um_len"] = 0; $rss_offsets_114["type_autorisation_lit_offset"] = 90; $rss_offsets_114["type_autorisation_lit_len"] = 2; $rss_offsets_114["date_entree_offset"] = 92; $rss_offsets_114["date_entree_len"] = 8; $rss_offsets_114["mode_entree_offset"] = 100; $rss_offsets_114["mode_entree_len"] = 1; $rss_offsets_114["provenance_offset"] = 101; $rss_offsets_114["provenance_len"] = 1; $rss_offsets_114["date_sortie_offset"] = 102; $rss_offsets_114["date_sortie_len"] = 8; $rss_offsets_114["mode_sortie_offset"] = 110; $rss_offsets_114["mode_sortie_len"] = 1; $rss_offsets_114["destination_offset"] = 111; $rss_offsets_114["destination_len"] = 1; $rss_offsets_114["code_postal_offset"] = 112; $rss_offsets_114["code_postal_len"] = 5; $rss_offsets_114["poids_bebe_offset"] = 117; $rss_offsets_114["poids_bebe_len"] = 4; $rss_offsets_114["age_gestationnel_offset"] = 121; $rss_offsets_114["age_gestationnel_len"] = 2; $rss_offsets_114["nombre_seances_offset"] = 123; $rss_offsets_114["nombre_seances_len"] = 2; $rss_offsets_114["nombre_diagnostics_offset"] = 125; $rss_offsets_114["nombre_diagnostics_len"] = 2; $rss_offsets_114["nombre_donnees_documentaires_offset"] = 127; $rss_offsets_114["nombre_donnees_documentaires_len"] = 2; $rss_offsets_114["nombre_actes_offset"] = 129; $rss_offsets_114["nombre_actes_len"] = 3; $rss_offsets_114["diagnostic_principal_offset"] = 132; $rss_offsets_114["diagnostic_principal_len"] = 8; $rss_offsets_114["diagnostic_relie_offset"] = 140; $rss_offsets_114["diagnostic_relie_len"] = 8; $rss_offsets_114["igs2_offset"] = 148; $rss_offsets_114["igs2_len"] = 3; $rss_offsets_113["version_groupage_offset"] = 0; $rss_offsets_113["version_groupage_len"] = 2; $rss_offsets_113["ghm_offset"] = 2; $rss_offsets_113["ghm_len"] = 6; $rss_offsets_113["version_format_offset"] = 9; $rss_offsets_113["version_format_len"] = 3; $rss_offsets_113["groupage_retour_offset"] = 12; $rss_offsets_113["groupage_retour_len"] = 3; $rss_offsets_113["finess_offset"] = 15; $rss_offsets_113["finess_len"] = 9; $rss_offsets_113["version_format_rum_offset"] = 15; $rss_offsets_113["version_format_rum_len"] = 9; $rss_offsets_113["no_rss_offset"] = 27; $rss_offsets_113["no_rss_len"] = 20; $rss_offsets_113["no_sejour_administratif_offset"] = 47; $rss_offsets_113["no_sejour_administratif_len"] = 20; $rss_offsets_113["no_rum_offset"] = 67; $rss_offsets_113["no_rum_len"] = 10; $rss_offsets_113["date_naissance_offset"] = 77; $rss_offsets_113["date_naissance_len"] = 8; $rss_offsets_113["sexe_offset"] = 85; $rss_offsets_113["sexe_len"] = 1; $rss_offsets_113["unite_medicale_offset"] = 86; $rss_offsets_113["unite_medicale_len"] = 4; $rss_offsets_113["type_autorisation_um_offset"] = 0; $rss_offsets_113["type_autorisation_um_len"] = 0; $rss_offsets_113["type_autorisation_lit_offset"] = 90; $rss_offsets_113["type_autorisation_lit_len"] = 2; $rss_offsets_113["date_entree_offset"] = 92; $rss_offsets_113["date_entree_len"] = 8; $rss_offsets_113["mode_entree_offset"] = 100; $rss_offsets_113["mode_entree_len"] = 1; $rss_offsets_113["provenance_offset"] = 101; $rss_offsets_113["provenance_len"] = 1; $rss_offsets_113["date_sortie_offset"] = 102; $rss_offsets_113["date_sortie_len"] = 8; $rss_offsets_113["mode_sortie_offset"] = 110; $rss_offsets_113["mode_sortie_len"] = 1; $rss_offsets_113["destination_offset"] = 111; $rss_offsets_113["destination_len"] = 1; $rss_offsets_113["code_postal_offset"] = 112; $rss_offsets_113["code_postal_len"] = 5; $rss_offsets_113["poids_bebe_offset"] = 117; $rss_offsets_113["poids_bebe_len"] = 4; $rss_offsets_113["age_gestationnel_offset"] = 121; $rss_offsets_113["age_gestationnel_len"] = 2; $rss_offsets_113["nombre_seances_offset"] = 123; $rss_offsets_113["nombre_seances_len"] = 2; $rss_offsets_113["nombre_diagnostics_offset"] = 125; $rss_offsets_113["nombre_diagnostics_len"] = 2; $rss_offsets_113["nombre_donnees_documentaires_offset"] = 127; $rss_offsets_113["nombre_donnees_documentaires_len"] = 2; $rss_offsets_113["nombre_actes_offset"] = 129; $rss_offsets_113["nombre_actes_len"] = 2; $rss_offsets_113["diagnostic_principal_offset"] = 131; $rss_offsets_113["diagnostic_principal_len"] = 8; $rss_offsets_113["diagnostic_relie_offset"] = 139; $rss_offsets_113["diagnostic_relie_len"] = 8; $rss_offsets_113["igs2_offset"] = 147; $rss_offsets_113["igs2_len"] = 3; $rss_offsets_111["version_groupage_offset"] = 0; $rss_offsets_111["version_groupage_len"] = 2; $rss_offsets_111["ghm_offset"] = 2; $rss_offsets_111["ghm_len"] = 6; $rss_offsets_111["version_format_offset"] = 9; $rss_offsets_111["version_format_len"] = 3; $rss_offsets_111["groupage_retour_offset"] = 12; $rss_offsets_111["groupage_retour_len"] = 3; $rss_offsets_111["finess_offset"] = 15; $rss_offsets_111["finess_len"] = 9; $rss_offsets_111["version_format_rum_offset"] = 15; $rss_offsets_111["version_format_rum_len"] = 9; $rss_offsets_111["no_rss_offset"] = 27; $rss_offsets_111["no_rss_len"] = 7; $rss_offsets_111["no_sejour_administratif_offset"] = 34; $rss_offsets_111["no_sejour_administratif_len"] = 20; $rss_offsets_111["no_rum_offset"] = 0; $rss_offsets_111["no_rum_len"] = 0; $rss_offsets_111["date_naissance_offset"] = 54; $rss_offsets_111["date_naissance_len"] = 8; $rss_offsets_111["sexe_offset"] = 62; $rss_offsets_111["sexe_len"] = 1; $rss_offsets_111["unite_medicale_offset"] = 63; $rss_offsets_111["unite_medicale_len"] = 4; $rss_offsets_111["type_autorisation_um_offset"] = 67; $rss_offsets_111["type_autorisation_um_len"] = 2; $rss_offsets_111["type_autorisation_lit_offset"] = 69; $rss_offsets_111["type_autorisation_lit_len"] = 2; $rss_offsets_111["date_entree_offset"] = 72; $rss_offsets_111["date_entree_len"] = 8; $rss_offsets_111["mode_entree_offset"] = 80; $rss_offsets_111["mode_entree_len"] = 1; $rss_offsets_111["provenance_offset"] = 81; $rss_offsets_111["provenance_len"] = 1; $rss_offsets_111["date_sortie_offset"] = 182; $rss_offsets_111["date_sortie_len"] = 8; $rss_offsets_111["mode_sortie_offset"] = 90; $rss_offsets_111["mode_sortie_len"] = 1; $rss_offsets_111["destination_offset"] = 91; $rss_offsets_111["destination_len"] = 1; $rss_offsets_111["code_postal_offset"] = 92; $rss_offsets_111["code_postal_len"] = 5; $rss_offsets_111["poids_bebe_offset"] = 97; $rss_offsets_111["poids_bebe_len"] = 4; $rss_offsets_111["age_gestationnel_offset"] = 0; $rss_offsets_111["age_gestationnel_len"] = 0; $rss_offsets_111["nombre_seances_offset"] = 101; $rss_offsets_111["nombre_seances_len"] = 2; $rss_offsets_111["nombre_diagnostics_offset"] = 103; $rss_offsets_111["nombre_diagnostics_len"] = 2; $rss_offsets_111["nombre_donnees_documentaires_offset"] = 105; $rss_offsets_111["nombre_donnees_documentaires_len"] = 2; $rss_offsets_111["nombre_actes_offset"] = 107; $rss_offsets_111["nombre_actes_len"] = 2; $rss_offsets_111["diagnostic_principal_offset"] = 109; $rss_offsets_111["diagnostic_principal_len"] = 8; $rss_offsets_111["diagnostic_relie_offset"] = 117; $rss_offsets_111["diagnostic_relie_len"] = 8; $rss_offsets_111["igs2_offset"] = 125; $rss_offsets_111["igs2_len"] = 3; $rss_offsets_110["version_groupage_offset"] = 0; $rss_offsets_110["version_groupage_len"] = 2; $rss_offsets_110["ghm_offset"] = 2; $rss_offsets_110["ghm_len"] = 6; $rss_offsets_110["version_format_offset"] = 9; $rss_offsets_110["version_format_len"] = 3; $rss_offsets_110["groupage_retour_offset"] = 12; $rss_offsets_110["groupage_retour_len"] = 3; $rss_offsets_110["finess_offset"] = 15; $rss_offsets_110["finess_len"] = 9; $rss_offsets_110["version_format_rum_offset"] = 15; $rss_offsets_110["version_format_rum_len"] = 9; $rss_offsets_110["no_rss_offset"] = 27; $rss_offsets_110["no_rss_len"] = 7; $rss_offsets_110["no_sejour_administratif_offset"] = 0; $rss_offsets_110["no_sejour_administratif_len"] = 0; $rss_offsets_110["no_rum_offset"] = 0; $rss_offsets_110["no_rum_len"] = 0; $rss_offsets_110["date_naissance_offset"] = 34; $rss_offsets_110["date_naissance_len"] = 8; $rss_offsets_110["sexe_offset"] = 42; $rss_offsets_110["sexe_len"] = 1; $rss_offsets_110["unite_medicale_offset"] = 43; $rss_offsets_110["unite_medicale_len"] = 4; $rss_offsets_110["type_autorisation_um_offset"] = 0; $rss_offsets_110["type_autorisation_um_len"] = 0; $rss_offsets_110["type_autorisation_lit_offset"] = 0; $rss_offsets_110["type_autorisation_lit_len"] = 0; $rss_offsets_110["date_entree_offset"] = 47; $rss_offsets_110["date_entree_len"] = 8; $rss_offsets_110["mode_entree_offset"] = 55; $rss_offsets_110["mode_entree_len"] = 1; $rss_offsets_110["provenance_offset"] = 56; $rss_offsets_110["provenance_len"] = 1; $rss_offsets_110["date_sortie_offset"] = 57; $rss_offsets_110["date_sortie_len"] = 8; $rss_offsets_110["mode_sortie_offset"] = 65; $rss_offsets_110["mode_sortie_len"] = 1; $rss_offsets_110["destination_offset"] = 66; $rss_offsets_110["destination_len"] = 1; $rss_offsets_110["code_postal_offset"] = 67; $rss_offsets_110["code_postal_len"] = 5; $rss_offsets_110["poids_bebe_offset"] = 72; $rss_offsets_110["poids_bebe_len"] = 4; $rss_offsets_110["age_gestationnel_offset"] = 0; $rss_offsets_110["age_gestationnel_len"] = 0; $rss_offsets_110["nombre_seances_offset"] = 76; $rss_offsets_110["nombre_seances_len"] = 2; $rss_offsets_110["nombre_diagnostics_offset"] = 78; $rss_offsets_110["nombre_diagnostics_len"] = 2; $rss_offsets_110["nombre_donnees_documentaires_offset"] = 80; $rss_offsets_110["nombre_donnees_documentaires_len"] = 2; $rss_offsets_110["nombre_actes_offset"] = 82; $rss_offsets_110["nombre_actes_len"] = 2; $rss_offsets_110["diagnostic_principal_offset"] = 84; $rss_offsets_110["diagnostic_principal_len"] = 8; $rss_offsets_110["diagnostic_relie_offset"] = 92; $rss_offsets_110["diagnostic_relie_len"] = 8; $rss_offsets_110["igs2_offset"] = 100; $rss_offsets_110["igs2_len"] = 3; $rss_offsets_110["version_groupage_offset"] = 0; $rss_offsets_110["version_groupage_len"] = 2; $rss_offsets_110["ghm_offset"] = 2; $rss_offsets_110["ghm_len"] = 6; $rss_offsets_110["version_format_offset"] = 9; $rss_offsets_110["version_format_len"] = 3; $rss_offsets_110["groupage_retour_offset"] = 12; $rss_offsets_110["groupage_retour_len"] = 3; $rss_offsets_110["finess_offset"] = 15; $rss_offsets_110["finess_len"] = 9; $rss_offsets_110["version_format_rum_offset"] = 15; $rss_offsets_110["version_format_rum_len"] = 9; $rss_offsets_109["no_rss_offset"] = 27; $rss_offsets_109["no_rss_len"] = 7; $rss_offsets_109["no_sejour_administratif_offset"] = 0; $rss_offsets_109["no_sejour_administratif_len"] = 0; $rss_offsets_109["no_rum_offset"] = 0; $rss_offsets_109["no_rum_len"] = 0; $rss_offsets_109["date_naissance_offset"] = 34; $rss_offsets_109["date_naissance_len"] = 8; $rss_offsets_109["sexe_offset"] = 42; $rss_offsets_109["sexe_len"] = 1; $rss_offsets_109["unite_medicale_offset"] = 43; $rss_offsets_109["unite_medicale_len"] = 4; $rss_offsets_109["type_autorisation_um_offset"] = 0; $rss_offsets_109["type_autorisation_um_len"] = 0; $rss_offsets_109["type_autorisation_lit_offset"] = 0; $rss_offsets_109["type_autorisation_lit_len"] = 0; $rss_offsets_109["date_entree_offset"] = 47; $rss_offsets_109["date_entree_len"] = 8; $rss_offsets_109["mode_entree_offset"] = 55; $rss_offsets_109["mode_entree_len"] = 1; $rss_offsets_109["provenance_offset"] = 56; $rss_offsets_109["provenance_len"] = 1; $rss_offsets_109["date_sortie_offset"] = 57; $rss_offsets_109["date_sortie_len"] = 8; $rss_offsets_109["mode_sortie_offset"] = 65; $rss_offsets_109["mode_sortie_len"] = 1; $rss_offsets_109["destination_offset"] = 66; $rss_offsets_109["destination_len"] = 1; $rss_offsets_109["code_postal_offset"] = 67; $rss_offsets_109["code_postal_len"] = 5; $rss_offsets_109["poids_bebe_offset"] = 72; $rss_offsets_109["poids_bebe_len"] = 4; $rss_offsets_109["age_gestationnel_offset"] = 0; $rss_offsets_109["age_gestationnel_len"] = 0; $rss_offsets_109["nombre_seances_offset"] = 76; $rss_offsets_109["nombre_seances_len"] = 2; $rss_offsets_109["nombre_diagnostics_offset"] = 78; $rss_offsets_109["nombre_diagnostics_len"] = 2; $rss_offsets_109["nombre_donnees_documentaires_offset"] = 80; $rss_offsets_109["nombre_donnees_documentaires_len"] = 2; $rss_offsets_109["nombre_actes_offset"] = 82; $rss_offsets_109["nombre_actes_len"] = 2; $rss_offsets_109["diagnostic_principal_offset"] = 84; $rss_offsets_109["diagnostic_principal_len"] = 8; $rss_offsets_109["diagnostic_relie_offset"] = 92; $rss_offsets_109["diagnostic_relie_len"] = 8; $rss_offsets_109["igs2_offset"] = 100; $rss_offsets_109["igs2_len"] = 3; $rsf_offsets_2006_A = array(); $rsf_offsets_2006_B = array(); $rsf_offsets_2006_P = array(); $rsf_offsets_2006_M = array(); $rsf_offsets_2008_A = array(); $rsf_offsets_2008_B = array(); $rsf_offsets_2008_P = array(); $rsf_offsets_2008_M = array(); $rsf_offsets_2008B_M = array(); $rsf_offsets_2015_A = array(); $rsf_offsets_2015_A["finess_offset"] = 1; $rsf_offsets_2015_A["finess_len"] = 9; $rsf_offsets_2015_A["no_rss_offset"] = 10; $rsf_offsets_2015_A["no_rss_len"] = 20; $rsf_offsets_2015_A["sexe_offset"] = 30; $rsf_offsets_2015_A["sexe_len"] = 1; $rsf_offsets_2015_A["civilite_offset"] = 31; $rsf_offsets_2015_A["civilite_len"] = 1; $rsf_offsets_2015_A["immatriculation_assure_offset"] = 32; $rsf_offsets_2015_A["immatriculation_assure_len"] = 13; $rsf_offsets_2015_A["cle_immatriculation_assure_offset"] = 45; $rsf_offsets_2015_A["cle_immatriculation_assure_len"] = 2; $rsf_offsets_2015_A["rang_beneficiaire_offset"] = 47; $rsf_offsets_2015_A["rang_beneficiaire_len"] = 3; $rsf_offsets_2015_A["no_facture_offset"] = 50; $rsf_offsets_2015_A["no_facture_len"] = 9; $rsf_offsets_2015_A["nature_operation_offset"] = 59; $rsf_offsets_2015_A["nature_operation_len"] = 1; $rsf_offsets_2015_A["nature_assurance_offset"] = 60; $rsf_offsets_2015_A["nature_assurance_len"] = 2; $rsf_offsets_2015_A["type_contrat_oc_offset"] = 62; $rsf_offsets_2015_A["type_contrat_oc_len"] = 2; $rsf_offsets_2015_A["justificatif_exo_offset"] = 64; $rsf_offsets_2015_A["justificatif_exo_len"] = 1; $rsf_offsets_2015_A["code_pec_offset"] = 65; $rsf_offsets_2015_A["code_pec_len"] = 1; $rsf_offsets_2015_A["grand_regime_offset"] = 66; $rsf_offsets_2015_A["grand_regime_len"] = 2; $rsf_offsets_2015_A["date_naissance_offset"] = 68; $rsf_offsets_2015_A["date_naissance_len"] = 8; $rsf_offsets_2015_A["rang_naissance_offset"] = 76; $rsf_offsets_2015_A["rang_naissance_len"] = 1; $rsf_offsets_2015_A["date_entree_offset"] = 77; $rsf_offsets_2015_A["date_entree_len"] = 8; $rsf_offsets_2015_A["date_sortie_offset"] = 85; $rsf_offsets_2015_A["date_sortie_len"] = 8; $rsf_offsets_2015_A["base_remboursement_c_offset"] = 93; $rsf_offsets_2015_A["base_remboursement_c_len"] = 8; $rsf_offsets_2015_A["total_remboursable_amo_offset"] = 101; $rsf_offsets_2015_A["total_remboursable_amo_len"] = 8; $rsf_offsets_2015_A["total_honoraires_factures_offset"] = 109; $rsf_offsets_2015_A["total_honoraires_factures_len"] = 8; $rsf_offsets_2015_A["total_honoraires_remboursable_offset"] = 117; $rsf_offsets_2015_A["total_honoraires_remboursable_len"] = 8; $rsf_offsets_2015_A["total_assure_avant_oc_offset"] = 125; $rsf_offsets_2015_A["total_assure_avant_oc_len"] = 8; $rsf_offsets_2015_A["total_remboursable_oc_ph_offset"] = 133; $rsf_offsets_2015_A["total_remboursable_oc_ph_len"] = 8; $rsf_offsets_2015_A["total_remboursable_oc_honoraires_offset"] = 141; $rsf_offsets_2015_A["total_remboursable_oc_honoraires_len"] = 8; $rsf_offsets_2015_A["total_facture_phoffset"] = 149; $rsf_offsets_2015_A["total_facture_ph_len"] = 8; $rsf_offsets_2015_A["etat_liquidation_offset"] = 157; $rsf_offsets_2015_A["etat_liquidation_len"] = 1; $rsf_offsets_2015_A["pat_benef_cmu_offset"] = 158; $rsf_offsets_2015_A["pat_benef_cmu_len"] = 1; $rsf_offsets_2015_A["no_facture_sejour_mere_offset"] = 159; $rsf_offsets_2015_A["no_facture_sejour_mere_len"] = 9; $rsf_offsets_2015_A["no_organisme_complementaire_offset"] = 168; $rsf_offsets_2015_A["no_organisme_complementaire_len"] = 10; $rsf_offsets_2015_A["no_at_date_adc_offset"] = 178; $rsf_offsets_2015_A["no_at_date_adc_len"] = 9; $rsf_offsets_2008_A["finess_offset"] = 1; $rsf_offsets_2008_A["finess_len"] = 9; $rsf_offsets_2008_A["no_rss_offset"] = 10; $rsf_offsets_2008_A["no_rss_len"] = 20; $rsf_offsets_2008_A["sexe_offset"] = 30; $rsf_offsets_2008_A["sexe_len"] = 1; $rsf_offsets_2008_A["civilite_offset"] = 31; $rsf_offsets_2008_A["civilite_len"] = 1; $rsf_offsets_2008_A["immatriculation_assure_offset"] = 32; $rsf_offsets_2008_A["immatriculation_assure_len"] = 13; $rsf_offsets_2008_A["cle_immatriculation_assure_offset"] = 45; $rsf_offsets_2008_A["cle_immatriculation_assure_len"] = 2; $rsf_offsets_2008_A["rang_beneficiaire_offset"] = 47; $rsf_offsets_2008_A["rang_beneficiaire_len"] = 3; $rsf_offsets_2008_A["no_facture_offset"] = 50; $rsf_offsets_2008_A["no_facture_len"] = 9; $rsf_offsets_2008_A["nature_operation_offset"] = 59; $rsf_offsets_2008_A["nature_operation_len"] = 1; $rsf_offsets_2008_A["nature_assurance_offset"] = 60; $rsf_offsets_2008_A["nature_assurance_len"] = 1; $rsf_offsets_2008_A["type_contrat_oc_offset"] = 62; $rsf_offsets_2008_A["type_contrat_oc_len"] = 2; $rsf_offsets_2008_A["justificatif_exo_offset"] = 64; $rsf_offsets_2008_A["justificatif_exo_len"] = 1; $rsf_offsets_2008_A["code_pec_offset"] = 65; $rsf_offsets_2008_A["code_pec_len"] = 1; $rsf_offsets_2008_A["grand_regime_offset"] = 66; $rsf_offsets_2008_A["grand_regime_len"] = 2; $rsf_offsets_2008_A["date_naissance_offset"] = 68; $rsf_offsets_2008_A["date_naissance_len"] = 8; $rsf_offsets_2008_A["rang_naissance_offset"] = 76; $rsf_offsets_2008_A["rang_naissance_len"] = 1; $rsf_offsets_2008_A["date_entree_offset"] = 77; $rsf_offsets_2008_A["date_entree_len"] = 8; $rsf_offsets_2008_A["date_sortie_offset"] = 85; $rsf_offsets_2008_A["date_sortie_len"] = 8; $rsf_offsets_2008_A["base_remboursement_c_offset"] = 93; $rsf_offsets_2008_A["base_remboursement_c_len"] = 8; $rsf_offsets_2008_A["total_remboursable_amo_offset"] = 101; $rsf_offsets_2008_A["total_remboursable_amo_len"] = 8; $rsf_offsets_2008_A["total_honoraires_factures_offset"] = 109; $rsf_offsets_2008_A["total_honoraires_factures_len"] = 8; $rsf_offsets_2008_A["total_honoraires_remboursable_offset"] = 117; $rsf_offsets_2008_A["total_honoraires_remboursable_len"] = 8; $rsf_offsets_2008_A["total_assure_avant_oc_offset"] = 125; $rsf_offsets_2008_A["total_assure_avant_oc_len"] = 8; $rsf_offsets_2008_A["total_remboursable_oc_ph_offset"] = 133; $rsf_offsets_2008_A["total_remboursable_oc_ph_len"] = 8; $rsf_offsets_2008_A["total_remboursable_oc_honoraires_offset"] = 141; $rsf_offsets_2008_A["total_remboursable_oc_honoraires_len"] = 8; $rsf_offsets_2008_A["total_facture_phoffset"] = 149; $rsf_offsets_2008_A["total_facture_ph_len"] = 8; $rsf_offsets_2008_A["etat_liquidation_offset"] = 157; $rsf_offsets_2008_A["etat_liquidation_len"] = 1; $rsf_offsets_2008_A["pat_benef_cmu_offset"] = 158; $rsf_offsets_2008_A["pat_benef_cmu_len"] = 1; $rsf_offsets_2008_A["no_facture_sejour_mere_offset"] = 159; $rsf_offsets_2008_A["no_facture_sejour_mere_len"] = 9; $rsf_offsets_2006_A["finess_offset"] = 1; $rsf_offsets_2006_A["finess_len"] = 9; $rsf_offsets_2006_A["no_rss_offset"] = 10; $rsf_offsets_2006_A["no_rss_len"] = 7; $rsf_offsets_2006_A["sexe_offset"] = 17; $rsf_offsets_2006_A["sexe_len"] = 1; $rsf_offsets_2006_A["civilite_offset"] = 18; $rsf_offsets_2006_A["civilite_len"] = 1; $rsf_offsets_2006_A["immatriculation_assure_offset"] = 19; $rsf_offsets_2006_A["immatriculation_assure_len"] = 13; $rsf_offsets_2006_A["cle_immatriculation_assure_offset"] = 0; $rsf_offsets_2006_A["cle_immatriculation_assure_len"] = 0; $rsf_offsets_2006_A["rang_beneficiaire_offset"] = 32; $rsf_offsets_2006_A["rang_beneficiaire_len"] = 3; $rsf_offsets_2006_A["nature_operation_offset"] = 35; $rsf_offsets_2006_A["nature_operation_len"] = 1; $rsf_offsets_2006_A["nature_assurance_offset"] = 36; $rsf_offsets_2006_A["nature_assurance_len"] = 1; $rsf_offsets_2006_A["type_contrat_oc_offset"] = 0; $rsf_offsets_2006_A["type_contrat_oc_len"] = 0; $rsf_offsets_2006_A["justificatif_exo_offset"] = 38; $rsf_offsets_2006_A["justificatif_exo_len"] = 1; $rsf_offsets_2006_A["code_pec_offset"] = 39; $rsf_offsets_2006_A["code_pec_len"] = 1; $rsf_offsets_2006_A["no_facture_offset"] = 40; $rsf_offsets_2006_A["no_facture_len"] = 9; $rsf_offsets_2006_A["grand_regime_offset"] = 49; $rsf_offsets_2006_A["grand_regime_len"] = 2; $rsf_offsets_2006_A["date_naissance_offset"] = 51; $rsf_offsets_2006_A["date_naissance_len"] = 8; $rsf_offsets_2006_A["rang_naissance_offset"] = 59; $rsf_offsets_2006_A["rang_naissance_len"] = 1; $rsf_offsets_2006_A["date_entree_offset"] = 60; $rsf_offsets_2006_A["date_entree_len"] = 8; $rsf_offsets_2006_A["date_sortie_offset"] = 68; $rsf_offsets_2006_A["date_sortie_len"] = 8; $rsf_offsets_2006_A["base_remboursement_c_offset"] = 76; $rsf_offsets_2006_A["base_remboursement_c_len"] = 8; $rsf_offsets_2006_A["total_remboursable_amo_offset"] = 84; $rsf_offsets_2006_A["total_remboursable_amo_len"] = 8; $rsf_offsets_2006_A["total_honoraires_factures_offset"] = 92; $rsf_offsets_2006_A["total_honoraires_factures_len"] = 8; $rsf_offsets_2006_A["total_honoraires_remboursable_offset"] = 100; $rsf_offsets_2006_A["total_honoraires_remboursable_len"] = 8; $rsf_offsets_2006_A["total_assure_avant_oc_offset"] = 108; $rsf_offsets_2006_A["total_assure_avant_oc_len"] = 8; $rsf_offsets_2006_A["total_remboursable_oc_ph_offset"] = 116; $rsf_offsets_2006_A["total_remboursable_oc_ph_len"] = 8; $rsf_offsets_2006_A["total_remboursable_oc_honoraires_offset"] = 124; $rsf_offsets_2006_A["total_remboursable_oc_honoraires_len"] = 8; $rsf_offsets_2006_A["total_facture_ph_offset"] = 132; $rsf_offsets_2006_A["total_facture_ph_len"] = 8; $rsf_offsets_2006_A["etat_liquidation_offset"] = 0; $rsf_offsets_2006_A["etat_liquidation_len"] = 0; $rsf_offsets_2008_B["finess_offset"] = 1; $rsf_offsets_2008_B["finess_len"] = 9; $rsf_offsets_2008_B["no_rss_offset"] = 10; $rsf_offsets_2008_B["no_rss_len"] = 20; $rsf_offsets_2008_B["sexe_offset"] = 30; $rsf_offsets_2008_B["sexe_len"] = 1; $rsf_offsets_2008_B["immatriculation_assure_offset"] = 32; $rsf_offsets_2008_B["immatriculation_assure_len"] = 13; $rsf_offsets_2008_B["rang_beneficiaire_offset"] = 45; $rsf_offsets_2008_B["rang_beneficiaire_len"] = 3; $rsf_offsets_2008_B["no_facture_offset"] = 48; $rsf_offsets_2008_B["no_facture_len"] = 9; $rsf_offsets_2008_B["mode_traitement_offset"] = 57; $rsf_offsets_2008_B["mode_traitement_len"] = 2; $rsf_offsets_2008_B["discpline_prestation_offset"] = 59; $rsf_offsets_2008_B["discpline_prestation_len"] = 3; $rsf_offsets_2008_B["date_debut_offset"] = 62; $rsf_offsets_2008_B["date_debut_len"] = 8; $rsf_offsets_2008_B["date_fin_offset"] = 70; $rsf_offsets_2008_B["date_fin_len"] = 8; $rsf_offsets_2008_B["code_acte_offset"] = 78; $rsf_offsets_2008_B["code_acte_len"] = 5; $rsf_offsets_2008_B["nombre_offset"] = 83; $rsf_offsets_2008_B["nombre_len"] = 3; $rsf_offsets_2008_B["justificatif_exo_offset"] = 86; $rsf_offsets_2008_B["justificatif_exo_len"] = 1; $rsf_offsets_2008_B["coefficient_offset"] = 87; $rsf_offsets_2008_B["coefficient_len"] = 5; $rsf_offsets_2008_B["code_pec_fj_offset"] = 92; $rsf_offsets_2008_B["code_pec_fj_len"] = 1; $rsf_offsets_2008_B["coefficient_mco_offset"] = 93; $rsf_offsets_2008_B["coefficient_mco_len"] = 5; $rsf_offsets_2008_B["prix_unitaire_offset"] = 98; $rsf_offsets_2008_B["prix_unitaire_len"] = 7; $rsf_offsets_2008_B["base_remboursement_offset"] = 105; $rsf_offsets_2008_B["base_remboursement_len"] = 8; $rsf_offsets_2008_B["taux_offset"] = 113; $rsf_offsets_2008_B["taux_len"] = 3; $rsf_offsets_2008_B["montant_remboursable_offset"] = 116; $rsf_offsets_2008_B["montant_remboursable_len"] = 8; $rsf_offsets_2008_B["montant_total_depense_offset"] = 124; $rsf_offsets_2008_B["montant_total_depense_len"] = 8; $rsf_offsets_2008_B["montant_remboursable_oc_offset"] = 132; $rsf_offsets_2008_B["montant_remboursable_oc_len"] = 7; $rsf_offsets_2008_B["no_ghs_offset"] = 139; $rsf_offsets_2008_B["no_ghs_len"] = 4; $rsf_offsets_2008_B["montant_remboursé_noemie_offset"] = 143; $rsf_offsets_2008_B["montant_remboursé_noemie_len"] = 8; $rsf_offsets_2008_B["nature_noemie_offset"] = 151; $rsf_offsets_2008_B["nature_noemie_len"] = 3; $rsf_offsets_2006_B["finess_offset"] = 1; $rsf_offsets_2006_B["finess_len"] = 9; $rsf_offsets_2006_B["no_rss_offset"] = 10; $rsf_offsets_2006_B["no_rss_len"] = 7; $rsf_offsets_2006_B["sexe"] = ""; $rsf_offsets_2006_B["sexe_offset"] = 0; $rsf_offsets_2006_B["sexe_len"] = 0; $rsf_offsets_2006_B["immatriculation_assure_offset"] = 17; $rsf_offsets_2006_B["immatriculation_assure_len"] = 13; $rsf_offsets_2006_B["rang_beneficiaire_offset"] = 30; $rsf_offsets_2006_B["rang_beneficiaire_len"] = 3; $rsf_offsets_2006_B["no_facture"] = ""; $rsf_offsets_2006_B["no_facture_offset"] = 0; $rsf_offsets_2006_B["no_facture_len"] = 0; $rsf_offsets_2006_B["mode_traitement_offset"] = 33; $rsf_offsets_2006_B["mode_traitement_len"] = 2; $rsf_offsets_2006_B["discpline_prestation_offset"] = 35; $rsf_offsets_2006_B["discpline_prestation_len"] = 3; $rsf_offsets_2006_B["date_debut_offset"] = 38; $rsf_offsets_2006_B["date_debut_len"] = 8; $rsf_offsets_2006_B["date_fin_offset"] = 46; $rsf_offsets_2006_B["date_fin_len"] = 8; $rsf_offsets_2006_B["code_acte_offset"] = 54; $rsf_offsets_2006_B["code_acte_len"] = 5; $rsf_offsets_2006_B["nombre_offset"] = 59; $rsf_offsets_2006_B["nombre_len"] = 3; $rsf_offsets_2006_B["justificatif_exo_offset"] = 62; $rsf_offsets_2006_B["justificatif_exo_len"] = 1; $rsf_offsets_2006_B["coefficient_offset"] = 63; $rsf_offsets_2006_B["coefficient_len"] = 5; $rsf_offsets_2006_B["code_pec_fj_offset"] = 68; $rsf_offsets_2006_B["code_pec_fj_len"] = 1; $rsf_offsets_2006_B["coefficient_mco_offset"] = 69; $rsf_offsets_2006_B["coefficient_mco_len"] = 5; $rsf_offsets_2006_B["prix_unitaire_offset"] = 74; $rsf_offsets_2006_B["prix_unitaire_len"] = 7; $rsf_offsets_2006_B["base_remboursement_offset"] = 81; $rsf_offsets_2006_B["base_remboursement_len"] = 8; $rsf_offsets_2006_B["taux_offset"] = 89; $rsf_offsets_2006_B["taux_len"] = 3; $rsf_offsets_2006_B["montant_remboursable_offset"] = 92; $rsf_offsets_2006_B["montant_remboursable_len"] = 8; $rsf_offsets_2006_B["montant_total_depense_offset"] = 100; $rsf_offsets_2006_B["montant_total_depense_len"] = 8; $rsf_offsets_2006_B["montant_remboursable_oc_offset"] = 108; $rsf_offsets_2006_B["montant_remboursable_oc_len"] = 7; $rsf_offsets_2006_B["no_ghs_offset"] = 115; $rsf_offsets_2006_B["no_ghs_len"] = 4; $rsf_offsets_2006_B["montant_remboursé_noemie_offset"] = 119; $rsf_offsets_2006_B["montant_remboursé_noemie_len"] = 8; $rsf_offsets_2006_B["nature_noemie_offset"] = 127; $rsf_offsets_2006_B["nature_noemie_len"] = 3; $rsf_offsets_2008_P["finess_offset"] = 1; $rsf_offsets_2008_P["finess_len"] = 9; $rsf_offsets_2008_P["no_rss_offset"] = 10; $rsf_offsets_2008_P["no_rss_len"] = 20; $rsf_offsets_2008_P["immatriculation_assure_offset"] = 30; $rsf_offsets_2008_P["immatriculation_assure_len"] = 13; $rsf_offsets_2008_P["cle_immatriculation_assure_offset"] = 43; $rsf_offsets_2008_P["cle_immatriculation_assure_len"] = 2; $rsf_offsets_2008_P["rang_beneficiaire_offset"] = 45; $rsf_offsets_2008_P["rang_beneficiaire_len"] = 3; $rsf_offsets_2008_P["no_facture_offset"] = 48; $rsf_offsets_2008_P["no_facture_len"] = 9; $rsf_offsets_2008_P["date_debut_offset"] = 57; $rsf_offsets_2008_P["date_debut_len"] = 8; $rsf_offsets_2008_P["code_lpp_offset"] = 65; $rsf_offsets_2008_P["code_lpp_len"] = 13; $rsf_offsets_2008_P["nombre_offset"] = 78; $rsf_offsets_2008_P["nombre_len"] = 2; $rsf_offsets_2008_P["prix_unitaire_offset"] = 80; $rsf_offsets_2008_P["prix_unitaire_len"] = 7; $rsf_offsets_2008_P["montant_facture_offset"] = 87; $rsf_offsets_2008_P["montant_facture_len"] = 7; $rsf_offsets_2008_P["code_lpp_2_offset"] = 0; $rsf_offsets_2008_P["code_lpp_2_len"] = 0; $rsf_offsets_2008_P["nombre_2_offset"] = 0; $rsf_offsets_2008_P["nombre_2_len"] = 0; $rsf_offsets_2008_P["prix_unitaire_2_offset"] = 0; $rsf_offsets_2008_P["prix_unitaire_2_len"] = 0; $rsf_offsets_2008_P["montant_facture_2_offset"] = 0; $rsf_offsets_2008_P["montant_facture_2_len"] = 0; $rsf_offsets_2006_P["finess_offset"] = 1; $rsf_offsets_2006_P["finess_len"] = 9; $rsf_offsets_2006_P["no_rss_offset"] = 10; $rsf_offsets_2006_P["no_rss_len"] = 7; $rsf_offsets_2006_P["immatriculation_assure_offset"] = 17; $rsf_offsets_2006_P["immatriculation_assure_len"] = 13; $rsf_offsets_2006_P["cle_immatriculation_assure_offset"] = 0; $rsf_offsets_2006_P["cle_immatriculation_assure_len"] = 0; $rsf_offsets_2006_P["rang_beneficiaire_offset"] = 30; $rsf_offsets_2006_P["rang_beneficiaire_len"] = 3; $rsf_offsets_2006_P["no_facture_offset"] = 0; $rsf_offsets_2006_P["no_facture_len"] = 0; $rsf_offsets_2006_P["date_debut_offset"] = 33; $rsf_offsets_2006_P["date_debut_len"] = 8; $rsf_offsets_2006_P["code_lpp_offset"] = 41; $rsf_offsets_2006_P["code_lpp_len"] = 13; $rsf_offsets_2006_P["nombre_offset"] = 54; $rsf_offsets_2006_P["nombre_len"] = 2; $rsf_offsets_2006_P["prix_unitaire_offset"] = 56; $rsf_offsets_2006_P["prix_unitaire_len"] = 7; $rsf_offsets_2006_P["montant_facture_offset"] = 63; $rsf_offsets_2006_P["montant_facture_len"] = 7; $rsf_offsets_2006_P["code_lpp_2_offset"] = 70; $rsf_offsets_2006_P["code_lpp_2_len"] = 13; $rsf_offsets_2006_P["nombre_2_offset"] = 83; $rsf_offsets_2006_P["nombre_2_len"] = 2; $rsf_offsets_2006_P["prix_unitaire_2_offset"] = 85; $rsf_offsets_2006_P["prix_unitaire_2_len"] = 7; $rsf_offsets_2006_P["montant_facture_2_offset"] = 92; $rsf_offsets_2006_P["montant_facture_2_len"] = 7; $rsf_offsets_2008_H["finess_offset"] = 1; $rsf_offsets_2008_H["finess_len"] = 9; $rsf_offsets_2008_H["no_rss_offset"] = 10; $rsf_offsets_2008_H["no_rss_len"] = 20; $rsf_offsets_2008_H["immatriculation_assure_offset"] = 30; $rsf_offsets_2008_H["immatriculation_assure_len"] = 13; $rsf_offsets_2008_H["cle_immatriculation_assure_offset"] = 43; $rsf_offsets_2008_H["cle_immatriculation_assure_len"] = 2; $rsf_offsets_2008_H["rang_beneficiaire_offset"] = 45; $rsf_offsets_2008_H["rang_beneficiaire_len"] = 3; $rsf_offsets_2008_H["no_facture_offset"] = 48; $rsf_offsets_2008_H["no_facture_len"] = 9; $rsf_offsets_2008_H["date_debut_offset"] = 57; $rsf_offsets_2008_H["date_debut_len"] = 8; $rsf_offsets_2008_H["code_ucd_offset"] = 65; $rsf_offsets_2008_H["code_ucd_len"] = 7; $rsf_offsets_2008_H["coefficient_factionnement_offset"] = 72; $rsf_offsets_2008_H["coefficient_factionnement_len"] = 5; $rsf_offsets_2008_H["prix_unitaire_achat_offset"] = 77; $rsf_offsets_2008_H["prix_unitaire_achat_len"] = 7; $rsf_offsets_2008_H["prix_unitaire_ecart_indemnisable_offset"] = 84; $rsf_offsets_2008_H["prix_unitaire_ecart_indemnisable_len"] = 7; $rsf_offsets_2008_H["montant_ecart_indemnisable_offset"] = 91; $rsf_offsets_2008_H["montant_ecart_indemnisable_len"] = 7; $rsf_offsets_2008_H["nombre_offset"] = 98; $rsf_offsets_2008_H["nombre_len"] = 3; $rsf_offsets_2008_H["montant_facture_offset"] = 101; $rsf_offsets_2008_H["montant_facture_len"] = 7; $rsf_offsets_2006_H["finess_offset"] = 1; $rsf_offsets_2006_H["finess_len"] = 9; $rsf_offsets_2006_H["no_rss_offset"] = 10; $rsf_offsets_2006_H["no_rss_len"] = 7; $rsf_offsets_2006_H["immatriculation_assure_offset"] = 17; $rsf_offsets_2006_H["immatriculation_assure_len"] = 13; $rsf_offsets_2006_H["cle_immatriculation_assure_offset"] = 0; $rsf_offsets_2006_H["cle_immatriculation_assure_len"] = 0; $rsf_offsets_2006_H["rang_beneficiaire_offset"] = 30; $rsf_offsets_2006_H["rang_beneficiaire_len"] = 3; $rsf_offsets_2006_H["no_facture_offset"] = 0; $rsf_offsets_2006_H["no_facture_len"] = 0; $rsf_offsets_2006_H["date_debut_offset"] = 33; $rsf_offsets_2006_H["date_debut_len"] = 8; $rsf_offsets_2006_H["code_ucd_offset"] = 41; $rsf_offsets_2006_H["code_ucd_len"] = 7; $rsf_offsets_2006_H["coefficient_factionnement_offset"] = 0; $rsf_offsets_2006_H["coefficient_factionnement_len"] = 0; $rsf_offsets_2006_H["prix_unitaire_achat_offset"] = 49; $rsf_offsets_2006_H["prix_unitaire_achat_len"] = 7; $rsf_offsets_2006_H["prix_unitaire_ecart_indemnisable_offset"] = 0; $rsf_offsets_2006_H["prix_unitaire_ecart_indemnisable_len"] = 0; $rsf_offsets_2006_H["montant_ecart_indemnisable_offset"] = 56; $rsf_offsets_2006_H["montant_ecart_indemnisable_len"] = 7; $rsf_offsets_2006_H["nombre_offset"] = 71; $rsf_offsets_2006_H["nombre_len"] = 3; $rsf_offsets_2006_H["montant_facture_offset"] = 73; $rsf_offsets_2006_H["montant_facture_len"] = 7; $rsf_offsets_2008_M["finess_offset"] = 1; $rsf_offsets_2008_M["finess_len"] = 9; $rsf_offsets_2008_M["no_rss_offset"] = 10; $rsf_offsets_2008_M["no_rss_len"] = 20; $rsf_offsets_2008_M["immatriculation_assure_offset"] = 30; $rsf_offsets_2008_M["immatriculation_assure_len"] = 13; $rsf_offsets_2008_M["cle_immatriculation_assure_offset"] = 43; $rsf_offsets_2008_M["cle_immatriculation_assure_len"] = 2; $rsf_offsets_2008_M["rang_beneficiaire_offset"] = 45; $rsf_offsets_2008_M["rang_beneficiaire_len"] = 3; $rsf_offsets_2008_M["no_facture_offset"] = 48; $rsf_offsets_2008_M["no_facture_len"] = 9; $rsf_offsets_2008_M["mode_traitement_offset"] = 57; $rsf_offsets_2008_M["mode_traitement_len"] = 2; $rsf_offsets_2008_M["discpline_prestation_offset"] = 59; $rsf_offsets_2008_M["discpline_prestation_len"] = 3; $rsf_offsets_2008_M["date_acte_offset"] = 62; $rsf_offsets_2008_M["date_acte_len"] = 8; $rsf_offsets_2008_M["code_acte_offset"] = 70; $rsf_offsets_2008_M["code_acte_len"] = 7; $rsf_offsets_2008_M["extension_ccam_offset"] = 83; $rsf_offsets_2008_M["extension_ccam_len"] = 1; $rsf_offsets_2008_M["activite_ccam_offset"] = 84; $rsf_offsets_2008_M["activite_ccam_len"] = 1; $rsf_offsets_2008_M["phase_ccam_offset"] = 85; $rsf_offsets_2008_M["phase_ccam_len"] = 1; $rsf_offsets_2008_M["modificateur_ccam_1_offset"] = 86; $rsf_offsets_2008_M["modificateur_ccam_1_len"] = 1; $rsf_offsets_2008_M["modificateur_ccam_2_offset"] = 87; $rsf_offsets_2008_M["modificateur_ccam_2_len"] = 1; $rsf_offsets_2008_M["modificateur_ccam_3_offset"] = 88; $rsf_offsets_2008_M["modificateur_ccam_3_len"] = 1; $rsf_offsets_2008_M["modificateur_ccam_4_offset"] = 89; $rsf_offsets_2008_M["modificateur_ccam_4_len"] = 1; $rsf_offsets_2008_M["association_nonprevue_ccam_offset"] = 90; $rsf_offsets_2008_M["association_nonprevue_ccam_len"] = 1; $rsf_offsets_2008_M["remboursement_excp_ccam_offset"] = 91; $rsf_offsets_2008_M["remboursement_excp_ccam_len"] = 1; $rsf_offsets_2008B_M["finess_offset"] = 1; $rsf_offsets_2008B_M["finess_len"] = 9; $rsf_offsets_2008B_M["no_rss_offset"] = 10; $rsf_offsets_2008B_M["no_rss_len"] = 20; $rsf_offsets_2008B_M["immatriculation_assure_offset"] = 30; $rsf_offsets_2008B_M["immatriculation_assure_len"] = 13; $rsf_offsets_2008B_M["cle_immatriculation_assure_offset"] = 43; $rsf_offsets_2008B_M["cle_immatriculation_assure_len"] = 2; $rsf_offsets_2008B_M["rang_beneficiaire_offset"] = 45; $rsf_offsets_2008B_M["rang_beneficiaire_len"] = 3; $rsf_offsets_2008B_M["no_facture_offset"] = 48; $rsf_offsets_2008B_M["no_facture_len"] = 9; $rsf_offsets_2008B_M["mode_traitement_offset"] = 57; $rsf_offsets_2008B_M["mode_traitement_len"] = 2; $rsf_offsets_2008B_M["discpline_prestation_offset"] = 59; $rsf_offsets_2008B_M["discpline_prestation_len"] = 3; $rsf_offsets_2008B_M["date_acte_offset"] = 62; $rsf_offsets_2008B_M["date_acte_len"] = 8; $rsf_offsets_2008B_M["code_acte_offset"] = 76; $rsf_offsets_2008B_M["code_acte_len"] = 7; $rsf_offsets_2008B_M["extension_ccam_offset"] = 83; $rsf_offsets_2008B_M["extension_ccam_len"] = 1; $rsf_offsets_2008B_M["activite_ccam_offset"] = 84; $rsf_offsets_2008B_M["activite_ccam_len"] = 1; $rsf_offsets_2008B_M["phase_ccam_offset"] = 85; $rsf_offsets_2008B_M["phase_ccam_len"] = 1; $rsf_offsets_2008B_M["modificateur_ccam_1_offset"] = 86; $rsf_offsets_2008B_M["modificateur_ccam_1_len"] = 1; $rsf_offsets_2008B_M["modificateur_ccam_2_offset"] = 87; $rsf_offsets_2008B_M["modificateur_ccam_2_len"] = 1; $rsf_offsets_2008B_M["modificateur_ccam_3_offset"] = 88; $rsf_offsets_2008B_M["modificateur_ccam_3_len"] = 1; $rsf_offsets_2008B_M["modificateur_ccam_4_offset"] = 89; $rsf_offsets_2008B_M["modificateur_ccam_4_len"] = 1; $rsf_offsets_2008B_M["association_nonprevue_ccam_offset"] = 90; $rsf_offsets_2008B_M["association_nonprevue_ccam_len"] = 1; $rsf_offsets_2008B_M["remboursement_excp_ccam_offset"] = 91; $rsf_offsets_2008B_M["remboursement_excp_ccam_len"] = 1; $rsf_offsets_2006_M["finess_offset"] = 1; $rsf_offsets_2006_M["finess_len"] = 9; $rsf_offsets_2006_M["no_rss_offset"] = 10; $rsf_offsets_2006_M["no_rss_len"] = 7; $rsf_offsets_2006_M["immatriculation_assure_offset"] = 17; $rsf_offsets_2006_M["immatriculation_assure_len"] = 13; $rsf_offsets_2006_M["cle_immatriculation_assure_offset"] = 0; $rsf_offsets_2006_M["cle_immatriculation_assure_len"] = 0; $rsf_offsets_2006_M["rang_beneficiaire_offset"] = 30; $rsf_offsets_2006_M["rang_beneficiaire_len"] = 3; $rsf_offsets_2006_M["no_facture_offset"] = 0; $rsf_offsets_2006_M["no_facture_len"] = 0; $rsf_offsets_2006_M["mode_traitement_offset"] = 33; $rsf_offsets_2006_M["mode_traitement_len"] = 2; $rsf_offsets_2006_M["discpline_prestation_offset"] = 35; $rsf_offsets_2006_M["discpline_prestation_len"] = 3; $rsf_offsets_2006_M["date_acte_offset"] = 38; $rsf_offsets_2006_M["date_acte_len"] = 8; $rsf_offsets_2006_M["code_acte_offset"] = 46; $rsf_offsets_2006_M["code_acte_len"] = 7; $rsf_offsets_2006_M["extension_ccam_offset"] = 59; $rsf_offsets_2006_M["extension_ccam_len"] = 1; $rsf_offsets_2006_M["activite_ccam_offset"] = 60; $rsf_offsets_2006_M["activite_ccam_len"] = 1; $rsf_offsets_2006_M["phase_ccam_offset"] = 61; $rsf_offsets_2006_M["phase_ccam_len"] = 1; $rsf_offsets_2006_M["modificateur_ccam_1_offset"] = 62; $rsf_offsets_2006_M["modificateur_ccam_1_len"] = 1; $rsf_offsets_2006_M["modificateur_ccam_2_offset"] = 63; $rsf_offsets_2006_M["modificateur_ccam_2_len"] = 1; $rsf_offsets_2006_M["modificateur_ccam_3_offset"] = 64; $rsf_offsets_2006_M["modificateur_ccam_3_len"] = 1; $rsf_offsets_2006_M["modificateur_ccam_4_offset"] = 65; $rsf_offsets_2006_M["modificateur_ccam_4_len"] = 1; $rsf_offsets_2006_M["association_nonprevue_ccam_offset"] = 66; $rsf_offsets_2006_M["association_nonprevue_ccam_len"] = 1; $rsf_offsets_2006_M["remboursement_excp_ccam_offset"] = 67; $rsf_offsets_2006_M["remboursement_excp_ccam_len"] = 1; $rsf_ace_offsets_2016_A = array(); $rsf_ace_offsets_2015_A = array(); $rsf_ace_offsets_2009_A = array(); $rsf_ace_offsets_2008_A = array(); $rsf_ace_offsets_2008_B = array(); $rsf_ace_offsets_2016_B = array(); $rsf_ace_offsets_2008_M = array(); $rsf_ace_offsets_2007_A = array(); $rsf_ace_offsets_2007_M = array(); $rsf_ace_offsets_2016_A["finess_offset"] = 1; $rsf_ace_offsets_2016_A["finess_len"] = 9; $rsf_ace_offsets_2016_A["finess_geographique_offset"] = 10; $rsf_ace_offsets_2016_A["finess_geographique_len"] = 9; $rsf_ace_offsets_2016_A["sexe_offset"] = 19; $rsf_ace_offsets_2016_A["sexe_len"] = 1; $rsf_ace_offsets_2016_A["civilite_offset"] = 20; $rsf_ace_offsets_2016_A["civilite_len"] = 1; $rsf_ace_offsets_2016_A["immatriculation_assure_offset"] = 21; $rsf_ace_offsets_2016_A["immatriculation_assure_len"] = 13; $rsf_ace_offsets_2016_A["cle_immatriculation_assure_offset"] = 34; $rsf_ace_offsets_2016_A["cle_immatriculation_assure_len"] = 2; $rsf_ace_offsets_2016_A["rang_beneficiaire_offset"] = 36; $rsf_ace_offsets_2016_A["rang_beneficiaire_len"] = 3; $rsf_ace_offsets_2016_A["no_facture_offset"] = 39; $rsf_ace_offsets_2016_A["no_facture_len"] = 9; $rsf_ace_offsets_2016_A["indicateur_parcours_soins_offset"] = 48; $rsf_ace_offsets_2016_A["indicateur_parcours_soins_len"] = 1; $rsf_ace_offsets_2016_A["nature_operation_offset"] = 49; $rsf_ace_offsets_2016_A["nature_operation_len"] = 1; $rsf_ace_offsets_2016_A["nature_assurance_offset"] = 50; $rsf_ace_offsets_2016_A["nature_assurance_len"] = 2; $rsf_ace_offsets_2016_A["justificatif_exo_offset"] = 52; $rsf_ace_offsets_2016_A["justificatif_exo_len"] = 1; $rsf_ace_offsets_2016_A["code_pec_offset"] = 53; $rsf_ace_offsets_2016_A["code_pec_len"] = 1; $rsf_ace_offsets_2016_A["motif_non_facturation_offset"] = 54; $rsf_ace_offsets_2016_A["motif_non_facturation_len"] = 1; $rsf_ace_offsets_2016_A["grand_regime_offset"] = 55; $rsf_ace_offsets_2016_A["grand_regime_len"] = 2; $rsf_ace_offsets_2016_A["date_naissance_offset"] = 57; $rsf_ace_offsets_2016_A["date_naissance_len"] = 8; $rsf_ace_offsets_2016_A["rang_naissance_offset"] = 65; $rsf_ace_offsets_2016_A["rang_naissance_len"] = 1; $rsf_ace_offsets_2016_A["date_entree_offset"] = 66; $rsf_ace_offsets_2016_A["date_entree_len"] = 8; $rsf_ace_offsets_2016_A["date_sortie_offset"] = 74; $rsf_ace_offsets_2016_A["date_sortie_len"] = 8; $rsf_ace_offsets_2016_A["code_postal_offset"] = 82; $rsf_ace_offsets_2016_A["code_postal_len"] = 5; $rsf_ace_offsets_2016_A["base_remboursement_c_offset"] = 87; $rsf_ace_offsets_2016_A["base_remboursement_c_len"] = 8; $rsf_ace_offsets_2016_A["total_remboursable_amo_offset"] = 95; $rsf_ace_offsets_2016_A["total_remboursable_amo_len"] = 8; $rsf_ace_offsets_2016_A["total_honoraires_factures_offset"] = 103; $rsf_ace_offsets_2016_A["total_honoraires_factures_len"] = 8; $rsf_ace_offsets_2016_A["total_honoraires_remboursable_offset"] = 111; $rsf_ace_offsets_2016_A["total_honoraires_remboursable_len"] = 8; $rsf_ace_offsets_2016_A["total_assure_avant_oc_offset"] = 119; $rsf_ace_offsets_2016_A["total_assure_avant_oc_len"] = 8; $rsf_ace_offsets_2016_A["total_remboursable_oc_ph_offset"] = 127; $rsf_ace_offsets_2016_A["total_remboursable_oc_ph_len"] = 8; $rsf_ace_offsets_2016_A["total_remboursable_oc_honoraires_offset"] = 135; $rsf_ace_offsets_2016_A["total_remboursable_oc_honoraires_len"] = 8; $rsf_ace_offsets_2016_A["total_facture_ph_offset"] = 143; $rsf_ace_offsets_2016_A["total_facture_ph_len"] = 8; $rsf_ace_offsets_2016_A["pat_benef_cmu_offset"] = 151; $rsf_ace_offsets_2016_A["pat_benef_cmu_len"] = 1; $rsf_ace_offsets_2016_A["valorise_fides_offset"] = 152; $rsf_ace_offsets_2016_A["valorise_fides_len"] = 1; $rsf_ace_offsets_2016_A["code_gestion_offset"] = 153; $rsf_ace_offsets_2016_A["code_gestion_len"] = 2; $rsf_ace_offsets_2016_A["no_organisme_complementaire_offset"] = 155; $rsf_ace_offsets_2016_A["no_organisme_complementaire_len"] = 10; $rsf_ace_offsets_2016_A["no_at_date_adc_offset"] = 165; $rsf_ace_offsets_2016_A["no_at_date_adc_len"] = 9; $rsf_ace_offsets_2015_A["finess_offset"] = 1; $rsf_ace_offsets_2015_A["finess_len"] = 9; $rsf_ace_offsets_2015_A["sexe_offset"] = 10; $rsf_ace_offsets_2015_A["sexe_len"] = 1; $rsf_ace_offsets_2015_A["civilite_offset"] = 11; $rsf_ace_offsets_2015_A["civilite_len"] = 1; $rsf_ace_offsets_2015_A["immatriculation_assure_offset"] = 12; $rsf_ace_offsets_2015_A["immatriculation_assure_len"] = 13; $rsf_ace_offsets_2015_A["cle_immatriculation_assure_offset"] = 25; $rsf_ace_offsets_2015_A["cle_immatriculation_assure_len"] = 2; $rsf_ace_offsets_2015_A["rang_beneficiaire_offset"] = 27; $rsf_ace_offsets_2015_A["rang_beneficiaire_len"] = 3; $rsf_ace_offsets_2015_A["no_facture_offset"] = 30; $rsf_ace_offsets_2015_A["no_facture_len"] = 9; $rsf_ace_offsets_2015_A["indicateur_parcours_soins_offset"] = 39; $rsf_ace_offsets_2015_A["indicateur_parcours_soins_len"] = 1; $rsf_ace_offsets_2015_A["nature_operation_offset"] = 40; $rsf_ace_offsets_2015_A["nature_operation_len"] = 1; $rsf_ace_offsets_2015_A["nature_assurance_offset"] = 41; $rsf_ace_offsets_2015_A["nature_assurance_len"] = 2; $rsf_ace_offsets_2015_A["justificatif_exo_offset"] = 43; $rsf_ace_offsets_2015_A["justificatif_exo_len"] = 1; $rsf_ace_offsets_2015_A["code_pec_offset"] = 44; $rsf_ace_offsets_2015_A["code_pec_len"] = 1; $rsf_ace_offsets_2015_A["motif_non_facturation_offset"] = 45; $rsf_ace_offsets_2015_A["motif_non_facturation_len"] = 1; $rsf_ace_offsets_2015_A["grand_regime_offset"] = 46; $rsf_ace_offsets_2015_A["grand_regime_len"] = 2; $rsf_ace_offsets_2015_A["date_naissance_offset"] = 48; $rsf_ace_offsets_2015_A["date_naissance_len"] = 8; $rsf_ace_offsets_2015_A["rang_naissance_offset"] = 56; $rsf_ace_offsets_2015_A["rang_naissance_len"] = 1; $rsf_ace_offsets_2015_A["date_entree_offset"] = 57; $rsf_ace_offsets_2015_A["date_entree_len"] = 8; $rsf_ace_offsets_2015_A["date_sortie_offset"] = 65; $rsf_ace_offsets_2015_A["date_sortie_len"] = 8; $rsf_ace_offsets_2015_A["code_postal_offset"] = 73; $rsf_ace_offsets_2015_A["code_postal_len"] = 5; $rsf_ace_offsets_2015_A["base_remboursement_c_offset"] = 78; $rsf_ace_offsets_2015_A["base_remboursement_c_len"] = 8; $rsf_ace_offsets_2015_A["total_remboursable_amo_offset"] = 86; $rsf_ace_offsets_2015_A["total_remboursable_amo_len"] = 8; $rsf_ace_offsets_2015_A["total_honoraires_factures_offset"] = 94; $rsf_ace_offsets_2015_A["total_honoraires_factures_len"] = 8; $rsf_ace_offsets_2015_A["total_honoraires_remboursable_offset"] = 102; $rsf_ace_offsets_2015_A["total_honoraires_remboursable_len"] = 8; $rsf_ace_offsets_2015_A["total_assure_avant_oc_offset"] = 110; $rsf_ace_offsets_2015_A["total_assure_avant_oc_len"] = 8; $rsf_ace_offsets_2015_A["total_remboursable_oc_ph_offset"] = 118; $rsf_ace_offsets_2015_A["total_remboursable_oc_ph_len"] = 8; $rsf_ace_offsets_2015_A["total_remboursable_oc_honoraires_offset"] = 126; $rsf_ace_offsets_2015_A["total_remboursable_oc_honoraires_len"] = 8; $rsf_ace_offsets_2015_A["total_facture_ph_offset"] = 134; $rsf_ace_offsets_2015_A["total_facture_ph_len"] = 8; $rsf_ace_offsets_2015_A["pat_benef_cmu_offset"] = 142; $rsf_ace_offsets_2015_A["pat_benef_cmu_len"] = 1; $rsf_ace_offsets_2015_A["valorise_fides_offset"] = 143; $rsf_ace_offsets_2015_A["valorise_fides_len"] = 1; $rsf_ace_offsets_2015_A["code_gestion_offset"] = 144; $rsf_ace_offsets_2015_A["code_gestion_len"] = 2; $rsf_ace_offsets_2015_A["no_organisme_complementaire_offset"] = 146; $rsf_ace_offsets_2015_A["no_organisme_complementaire_len"] = 10; $rsf_ace_offsets_2015_A["no_at_date_adc_offset"] = 156; $rsf_ace_offsets_2015_A["no_at_date_adc_len"] = 9; $rsf_ace_offsets_2009_A["finess_offset"] = 1; $rsf_ace_offsets_2009_A["finess_len"] = 9; $rsf_ace_offsets_2009_A["sexe_offset"] = 10; $rsf_ace_offsets_2009_A["sexe_len"] = 1; $rsf_ace_offsets_2009_A["civilite_offset"] = 11; $rsf_ace_offsets_2009_A["civilite_len"] = 1; $rsf_ace_offsets_2009_A["immatriculation_assure_offset"] = 12; $rsf_ace_offsets_2009_A["immatriculation_assure_len"] = 13; $rsf_ace_offsets_2009_A["cle_immatriculation_assure_offset"] = 25; $rsf_ace_offsets_2009_A["cle_immatriculation_assure_len"] = 2; $rsf_ace_offsets_2009_A["rang_beneficiaire_offset"] = 27; $rsf_ace_offsets_2009_A["rang_beneficiaire_len"] = 3; $rsf_ace_offsets_2009_A["no_facture_offset"] = 30; $rsf_ace_offsets_2009_A["no_facture_len"] = 9; $rsf_ace_offsets_2009_A["indicateur_parcours_soins_offset"] = 39; $rsf_ace_offsets_2009_A["indicateur_parcours_soins_len"] = 1; $rsf_ace_offsets_2009_A["nature_operation_offset"] = 40; $rsf_ace_offsets_2009_A["nature_operation_len"] = 1; $rsf_ace_offsets_2009_A["nature_assurance_offset"] = 41; $rsf_ace_offsets_2009_A["nature_assurance_len"] = 2; $rsf_ace_offsets_2009_A["justificatif_exo_offset"] = 43; $rsf_ace_offsets_2009_A["justificatif_exo_len"] = 1; $rsf_ace_offsets_2009_A["code_pec_offset"] = 44; $rsf_ace_offsets_2009_A["code_pec_len"] = 1; $rsf_ace_offsets_2009_A["motif_non_facturation_offset"] = 45; $rsf_ace_offsets_2009_A["motif_non_facturation_len"] = 1; $rsf_ace_offsets_2009_A["grand_regime_offset"] = 46; $rsf_ace_offsets_2009_A["grand_regime_len"] = 2; $rsf_ace_offsets_2009_A["date_naissance_offset"] = 48; $rsf_ace_offsets_2009_A["date_naissance_len"] = 8; $rsf_ace_offsets_2009_A["rang_naissance_offset"] = 56; $rsf_ace_offsets_2009_A["rang_naissance_len"] = 1; $rsf_ace_offsets_2009_A["date_entree_offset"] = 57; $rsf_ace_offsets_2009_A["date_entree_len"] = 8; $rsf_ace_offsets_2009_A["date_sortie_offset"] = 65; $rsf_ace_offsets_2009_A["date_sortie_len"] = 8; $rsf_ace_offsets_2009_A["code_postal_offset"] = 73; $rsf_ace_offsets_2009_A["code_postal_len"] = 5; $rsf_ace_offsets_2009_A["base_remboursement_c_offset"] = 78; $rsf_ace_offsets_2009_A["base_remboursement_c_len"] = 8; $rsf_ace_offsets_2009_A["total_remboursable_amo_offset"] = 86; $rsf_ace_offsets_2009_A["total_remboursable_amo_len"] = 8; $rsf_ace_offsets_2009_A["total_honoraires_factures_offset"] = 94; $rsf_ace_offsets_2009_A["total_honoraires_factures_len"] = 8; $rsf_ace_offsets_2009_A["total_honoraires_remboursable_offset"] = 102; $rsf_ace_offsets_2009_A["total_honoraires_remboursable_len"] = 8; $rsf_ace_offsets_2009_A["total_assure_avant_oc_offset"] = 110; $rsf_ace_offsets_2009_A["total_assure_avant_oc_len"] = 8; $rsf_ace_offsets_2009_A["total_remboursable_oc_ph_offset"] = 118; $rsf_ace_offsets_2009_A["total_remboursable_oc_ph_len"] = 8; $rsf_ace_offsets_2009_A["total_remboursable_oc_honoraires_offset"] = 126; $rsf_ace_offsets_2009_A["total_remboursable_oc_honoraires_len"] = 8; $rsf_ace_offsets_2009_A["total_facture_ph_offset"] = 134; $rsf_ace_offsets_2009_A["total_facture_ph_len"] = 8; $rsf_ace_offsets_2009_A["pat_benef_cmu_offset"] = 142; $rsf_ace_offsets_2009_A["pat_benef_cmu_len"] = 1; $rsf_ace_offsets_2009_A["valorise_fides_offset"] = 143; $rsf_ace_offsets_2009_A["valorise_fides_len"] = 1; $rsf_ace_offsets_2008_A["finess_offset"] = 1; $rsf_ace_offsets_2008_A["finess_len"] = 9; $rsf_ace_offsets_2008_A["sexe_offset"] = 10; $rsf_ace_offsets_2008_A["sexe_len"] = 1; $rsf_ace_offsets_2008_A["civilite_offset"] = 11; $rsf_ace_offsets_2008_A["civilite_len"] = 1; $rsf_ace_offsets_2008_A["immatriculation_assure_offset"] = 12; $rsf_ace_offsets_2008_A["immatriculation_assure_len"] = 13; $rsf_ace_offsets_2008_A["cle_immatriculation_assure_offset"] = 25; $rsf_ace_offsets_2008_A["cle_immatriculation_assure_len"] = 2; $rsf_ace_offsets_2008_A["rang_beneficiaire_offset"] = 27; $rsf_ace_offsets_2008_A["rang_beneficiaire_len"] = 3; $rsf_ace_offsets_2008_A["no_facture_offset"] = 30; $rsf_ace_offsets_2008_A["no_facture_len"] = 9; $rsf_ace_offsets_2008_A["indicateur_parcours_soins_offset"] = 39; $rsf_ace_offsets_2008_A["indicateur_parcours_soins_len"] = 1; $rsf_ace_offsets_2008_A["nature_operation_offset"] = 40; $rsf_ace_offsets_2008_A["nature_operation_len"] = 1; $rsf_ace_offsets_2008_A["nature_assurance_offset"] = 41; $rsf_ace_offsets_2008_A["nature_assurance_len"] = 2; $rsf_ace_offsets_2008_A["justificatif_exo_offset"] = 43; $rsf_ace_offsets_2008_A["justificatif_exo_len"] = 1; $rsf_ace_offsets_2008_A["code_pec_offset"] = 44; $rsf_ace_offsets_2008_A["code_pec_len"] = 1; $rsf_ace_offsets_2008_A["grand_regime_offset"] = 45; $rsf_ace_offsets_2008_A["grand_regime_len"] = 2; $rsf_ace_offsets_2008_A["date_naissance_offset"] = 47; $rsf_ace_offsets_2008_A["date_naissance_len"] = 8; $rsf_ace_offsets_2008_A["rang_naissance_offset"] = 55; $rsf_ace_offsets_2008_A["rang_naissance_len"] = 1; $rsf_ace_offsets_2008_A["date_entree_offset"] = 56; $rsf_ace_offsets_2008_A["date_entree_len"] = 8; $rsf_ace_offsets_2008_A["date_sortie_offset"] = 64; $rsf_ace_offsets_2008_A["date_sortie_len"] = 8; $rsf_ace_offsets_2008_A["base_remboursement_c_offset"] = 72; $rsf_ace_offsets_2008_A["base_remboursement_c_len"] = 8; $rsf_ace_offsets_2008_A["total_remboursable_amo_offset"] = 80; $rsf_ace_offsets_2008_A["total_remboursable_amo_len"] = 8; $rsf_ace_offsets_2008_A["total_honoraires_factures_offset"] = 88; $rsf_ace_offsets_2008_A["total_honoraires_factures_len"] = 8; $rsf_ace_offsets_2008_A["total_honoraires_remboursable_offset"] = 96; $rsf_ace_offsets_2008_A["total_honoraires_remboursable_len"] = 8; $rsf_ace_offsets_2008_A["total_assure_avant_oc_offset"] = 104; $rsf_ace_offsets_2008_A["total_assure_avant_oc_len"] = 8; $rsf_ace_offsets_2008_A["total_remboursable_oc_ph_offset"] = 112; $rsf_ace_offsets_2008_A["total_remboursable_oc_ph_len"] = 8; $rsf_ace_offsets_2008_A["total_remboursable_oc_honoraires_offset"] = 120; $rsf_ace_offsets_2008_A["total_remboursable_oc_honoraires_len"] = 8; $rsf_ace_offsets_2008_A["total_facture_ph_offset"] = 128; $rsf_ace_offsets_2008_A["total_facture_ph_len"] = 8; $rsf_ace_offsets_2007_A["finess_offset"] = 1; $rsf_ace_offsets_2007_A["finess_len"] = 9; $rsf_ace_offsets_2007_A["no_sejour_administratif_offset"] = 10; $rsf_ace_offsets_2007_A["no_sejour_administratif_len"] = 9; $rsf_ace_offsets_2007_A["sexe_offset"] = 19; $rsf_ace_offsets_2007_A["sexe_len"] = 1; $rsf_ace_offsets_2007_A["civilite_offset"] = 20; $rsf_ace_offsets_2007_A["civilite_len"] = 1; $rsf_ace_offsets_2007_A["immatriculation_assure_offset"] = 21; $rsf_ace_offsets_2007_A["immatriculation_assure_len"] = 13; $rsf_ace_offsets_2007_A["rang_beneficiaire_offset"] = 34; $rsf_ace_offsets_2007_A["rang_beneficiaire_len"] = 3; $rsf_ace_offsets_2007_A["nature_operation_offset"] = 37; $rsf_ace_offsets_2007_A["nature_operation_len"] = 1; $rsf_ace_offsets_2007_A["nature_assurance_offset"] = 38; $rsf_ace_offsets_2007_A["nature_assurance_len"] = 2; $rsf_ace_offsets_2007_A["justificatif_exo_offset"] = 40; $rsf_ace_offsets_2007_A["justificatif_exo_len"] = 1; $rsf_ace_offsets_2007_A["code_pec_offset"] = 41; $rsf_ace_offsets_2007_A["code_pec_len"] = 1; $rsf_ace_offsets_2007_A["no_facture_offset"] = 42; $rsf_ace_offsets_2007_A["no_facture_len"] = 9; $rsf_ace_offsets_2007_A["grand_regime_offset"] = 51; $rsf_ace_offsets_2007_A["grand_regime_len"] = 2; $rsf_ace_offsets_2007_A["date_naissance_offset"] = 53; $rsf_ace_offsets_2007_A["date_naissance_len"] = 8; $rsf_ace_offsets_2007_A["rang_naissance_offset"] = 61; $rsf_ace_offsets_2007_A["rang_naissance_len"] = 1; $rsf_ace_offsets_2007_A["date_entree_offset"] = 62; $rsf_ace_offsets_2007_A["date_entree_len"] = 8; $rsf_ace_offsets_2007_A["date_sortie_offset"] = 70; $rsf_ace_offsets_2007_A["date_sortie_len"] = 8; $rsf_ace_offsets_2007_A["base_remboursement_c_offset"] = 78; $rsf_ace_offsets_2007_A["base_remboursement_c_len"] = 8; $rsf_ace_offsets_2007_A["total_remboursable_amo_offset"] = 86; $rsf_ace_offsets_2007_A["total_remboursable_amo_len"] = 8; $rsf_ace_offsets_2007_A["total_honoraires_factures_offset"] = 94; $rsf_ace_offsets_2007_A["total_honoraires_factures_len"] = 8; $rsf_ace_offsets_2007_A["total_honoraires_remboursable_offset"] = 102; $rsf_ace_offsets_2007_A["total_honoraires_remboursable_len"] = 8; $rsf_ace_offsets_2007_A["total_assure_avant_oc_offset"] = 110; $rsf_ace_offsets_2007_A["total_assure_avant_oc_len"] = 8; $rsf_ace_offsets_2007_A["total_remboursable_oc_ph_offset"] = 118; $rsf_ace_offsets_2007_A["total_remboursable_oc_ph_len"] = 8; $rsf_ace_offsets_2007_A["total_remboursable_oc_honoraires_offset"] = 126; $rsf_ace_offsets_2007_A["total_remboursable_oc_honoraires_len"] = 8; $rsf_ace_offsets_2007_A["total_facture_ph_offset"] = 134; $rsf_ace_offsets_2007_A["total_facture_ph_len"] = 8; $rsf_ace_offsets_2016_B["finess_offset"] = 1; $rsf_ace_offsets_2016_B["finess_len"] = 9; $rsf_ace_offsets_2016_B["finess_geographique_offset"] = 10; $rsf_ace_offsets_2016_B["finess_geographique_len"] = 9; $rsf_ace_offsets_2016_B["immatriculation_assure_offset"] = 19; $rsf_ace_offsets_2016_B["immatriculation_assure_len"] = 13; $rsf_ace_offsets_2016_B["cle_immatriculation_assure_offset"] = 32; $rsf_ace_offsets_2016_B["cle_immatriculation_assure_len"] = 2; $rsf_ace_offsets_2016_B["rang_beneficiaire_offset"] = 34; $rsf_ace_offsets_2016_B["rang_beneficiaire_len"] = 3; $rsf_ace_offsets_2016_B["no_facture_offset"] = 37; $rsf_ace_offsets_2016_B["no_facture_len"] = 9; $rsf_ace_offsets_2016_B["mode_traitement_offset"] = 46; $rsf_ace_offsets_2016_B["mode_traitement_len"] = 2; $rsf_ace_offsets_2016_B["discpline_prestation_offset"] = 48; $rsf_ace_offsets_2016_B["discpline_prestation_len"] = 3; $rsf_ace_offsets_2016_B["justificatif_exo_offset"] = 51; $rsf_ace_offsets_2016_B["justificatif_exo_len"] = 1; $rsf_ace_offsets_2016_B["date_debut_offset"] = 54; $rsf_ace_offsets_2016_B["date_debut_len"] = 8; $rsf_ace_offsets_2016_B["date_fin_offset"] = 54; $rsf_ace_offsets_2016_B["date_fin_len"] = 8; $rsf_ace_offsets_2016_B["code_acte_offset"] = 62; $rsf_ace_offsets_2016_B["code_acte_len"] = 5; $rsf_ace_offsets_2016_B["nombre_offset"] = 67; $rsf_ace_offsets_2016_B["nombre_len"] = 3; $rsf_ace_offsets_2016_B["coefficient_offset"] = 70; $rsf_ace_offsets_2016_B["coefficient_len"] = 6; $rsf_ace_offsets_2016_B["denombrement_offset"] = 76; $rsf_ace_offsets_2016_B["denombrement_len"] = 1; $rsf_ace_offsets_2016_B["prix_unitaire_offset"] = 78; $rsf_ace_offsets_2016_B["prix_unitaire_len"] = 7; $rsf_ace_offsets_2016_B["base_remboursement_offset"] = 85; $rsf_ace_offsets_2016_B["base_remboursement_len"] = 8; $rsf_ace_offsets_2016_B["taux_offset"] = 93; $rsf_ace_offsets_2016_B["taux_len"] = 3; $rsf_ace_offsets_2016_B["montant_remboursable_offset"] = 96; $rsf_ace_offsets_2016_B["montant_remboursable_len"] = 8; $rsf_ace_offsets_2016_B["montant_total_depense_offset"] = 104; $rsf_ace_offsets_2016_B["montant_total_depense_len"] = 8; $rsf_ace_offsets_2016_B["montant_remboursable_oc_offset"] = 112; $rsf_ace_offsets_2016_B["montant_remboursable_oc_len"] = 7; $rsf_ace_offsets_2008_B["finess_offset"] = 1; $rsf_ace_offsets_2008_B["finess_len"] = 9; $rsf_ace_offsets_2008_B["immatriculation_assure_offset"] = 10; $rsf_ace_offsets_2008_B["immatriculation_assure_len"] = 13; $rsf_ace_offsets_2008_B["cle_immatriculation_assure_offset"] = 23; $rsf_ace_offsets_2008_B["cle_immatriculation_assure_len"] = 2; $rsf_ace_offsets_2008_B["rang_beneficiaire_offset"] = 25; $rsf_ace_offsets_2008_B["rang_beneficiaire_len"] = 3; $rsf_ace_offsets_2008_B["no_facture_offset"] = 28; $rsf_ace_offsets_2008_B["no_facture_len"] = 9; $rsf_ace_offsets_2008_B["mode_traitement_offset"] = 37; $rsf_ace_offsets_2008_B["mode_traitement_len"] = 2; $rsf_ace_offsets_2008_B["discpline_prestation_offset"] = 39; $rsf_ace_offsets_2008_B["discpline_prestation_len"] = 3; $rsf_ace_offsets_2008_B["justificatif_exo_offset"] = 42; $rsf_ace_offsets_2008_B["justificatif_exo_len"] = 1; $rsf_ace_offsets_2008_B["date_debut_offset"] = 45; $rsf_ace_offsets_2008_B["date_debut_len"] = 8; $rsf_ace_offsets_2008_B["date_fin_offset"] = 45; $rsf_ace_offsets_2008_B["date_fin_len"] = 8; $rsf_ace_offsets_2008_B["code_acte_offset"] = 53; $rsf_ace_offsets_2008_B["code_acte_len"] = 5; $rsf_ace_offsets_2008_B["nombre_offset"] = 58; $rsf_ace_offsets_2008_B["nombre_len"] = 3; $rsf_ace_offsets_2008_B["coefficient_offset"] = 61; $rsf_ace_offsets_2008_B["coefficient_len"] = 6; $rsf_ace_offsets_2008_B["denombrement_offset"] = 67; $rsf_ace_offsets_2008_B["denombrement_len"] = 1; $rsf_ace_offsets_2008_B["prix_unitaire_offset"] = 69; $rsf_ace_offsets_2008_B["prix_unitaire_len"] = 7; $rsf_ace_offsets_2008_B["base_remboursement_offset"] = 76; $rsf_ace_offsets_2008_B["base_remboursement_len"] = 8; $rsf_ace_offsets_2008_B["taux_offset"] = 84; $rsf_ace_offsets_2008_B["taux_len"] = 3; $rsf_ace_offsets_2008_B["montant_remboursable_offset"] = 87; $rsf_ace_offsets_2008_B["montant_remboursable_len"] = 8; $rsf_ace_offsets_2008_B["montant_total_depense_offset"] = 95; $rsf_ace_offsets_2008_B["montant_total_depense_len"] = 8; $rsf_ace_offsets_2008_B["montant_remboursable_oc_offset"] = 103; $rsf_ace_offsets_2008_B["montant_remboursable_oc_len"] = 7; $rsf_ace_offsets_2008_C["finess_offset"] = 1; $rsf_ace_offsets_2008_C["finess_len"] = 9; $rsf_ace_offsets_2008_C["immatriculation_assure_offset"] = 10; $rsf_ace_offsets_2008_C["immatriculation_assure_len"] = 13; $rsf_ace_offsets_2008_C["cle_immatriculation_assure_offset"] = 23; $rsf_ace_offsets_2008_C["cle_immatriculation_assure_len"] = 2; $rsf_ace_offsets_2008_C["rang_beneficiaire_offset"] = 25; $rsf_ace_offsets_2008_C["rang_beneficiaire_len"] = 3; $rsf_ace_offsets_2008_C["no_facture_offset"] = 28; $rsf_ace_offsets_2008_C["no_facture_len"] = 9; $rsf_ace_offsets_2008_C["mode_traitement_offset"] = 37; $rsf_ace_offsets_2008_C["mode_traitement_len"] = 2; $rsf_ace_offsets_2008_C["discpline_prestation_offset"] = 39; $rsf_ace_offsets_2008_C["discpline_prestation_len"] = 3; $rsf_ace_offsets_2008_C["justificatif_exo_offset"] = 42; $rsf_ace_offsets_2008_C["justificatif_exo_len"] = 1; $rsf_ace_offsets_2008_C["date_debut_offset"] = 45; $rsf_ace_offsets_2008_C["date_debut_len"] = 8; $rsf_ace_offsets_2008_C["date_fin_offset"] = 45; $rsf_ace_offsets_2008_C["date_fin_len"] = 8; $rsf_ace_offsets_2008_C["code_acte_offset"] = 53; $rsf_ace_offsets_2008_C["code_acte_len"] = 5; $rsf_ace_offsets_2008_C["nombre_offset"] = 58; $rsf_ace_offsets_2008_C["nombre_len"] = 3; $rsf_ace_offsets_2008_C["coefficient_offset"] = 61; $rsf_ace_offsets_2008_C["coefficient_len"] = 6; $rsf_ace_offsets_2008_C["denombrement_offset"] = 67; $rsf_ace_offsets_2008_C["denombrement_len"] = 1; $rsf_ace_offsets_2008_C["prix_unitaire_offset"] = 69; $rsf_ace_offsets_2008_C["prix_unitaire_len"] = 7; $rsf_ace_offsets_2008_C["base_remboursement_offset"] = 76; $rsf_ace_offsets_2008_C["base_remboursement_len"] = 8; $rsf_ace_offsets_2008_C["taux_offset"] = 84; $rsf_ace_offsets_2008_C["taux_len"] = 3; $rsf_ace_offsets_2008_C["montant_remboursable_offset"] = 87; $rsf_ace_offsets_2008_C["montant_remboursable_len"] = 8; $rsf_ace_offsets_2008_C["montant_total_depense_offset"] = 95; $rsf_ace_offsets_2008_C["montant_total_depense_len"] = 8; $rsf_ace_offsets_2008_C["montant_remboursable_oc_offset"] = 103; $rsf_ace_offsets_2008_C["montant_remboursable_oc_len"] = 7; $rsf_ace_offsets_2007_C["finess_offset"] = 1; $rsf_ace_offsets_2007_C["finess_len"] = 9; $rsf_ace_offsets_2007_C["immatriculation_assure_offset"] = 17; $rsf_ace_offsets_2007_C["immatriculation_assure_len"] = 13; $rsf_ace_offsets_2007_C["rang_beneficiaire_offset"] = 30; $rsf_ace_offsets_2007_C["rang_beneficiaire_len"] = 3; $rsf_ace_offsets_2007_C["mode_traitement_offset"] = 33; $rsf_ace_offsets_2007_C["mode_traitement_len"] = 2; $rsf_ace_offsets_2007_C["discpline_prestation_offset"] = 35; $rsf_ace_offsets_2007_C["discpline_prestation_len"] = 3; $rsf_ace_offsets_2007_C["date_acte_offset"] = 38; $rsf_ace_offsets_2007_C["date_acte_len"] = 8; $rsf_ace_offsets_2007_C["code_acte_offset"] = 47; $rsf_ace_offsets_2007_C["code_acte_len"] = 5; $rsf_ace_offsets_2007_C["nombre_offset"] = 52; $rsf_ace_offsets_2007_C["nombre_len"] = 2; $rsf_ace_offsets_2007_C["coefficient_offset"] = 54; $rsf_ace_offsets_2007_C["coefficient_len"] = 6; $rsf_ace_offsets_2007_C["denombrement_offset"] = 60; $rsf_ace_offsets_2007_C["denombrement_len"] = 2; $rsf_ace_offsets_2007_C["prix_unitaire_offset"] = 62; $rsf_ace_offsets_2007_C["prix_unitaire_len"] = 7; $rsf_ace_offsets_2007_C["base_remboursement_offset"] = 69; $rsf_ace_offsets_2007_C["base_remboursement_len"] = 7; $rsf_ace_offsets_2007_C["taux_offset"] = 76; $rsf_ace_offsets_2007_C["taux_len"] = 3; $rsf_ace_offsets_2007_C["montant_remboursable_offset"] = 79; $rsf_ace_offsets_2007_C["montant_remboursable_len"] = 7; $rsf_ace_offsets_2007_C["montant_total_depense_offset"] = 86; $rsf_ace_offsets_2007_C["montant_total_depense_len"] = 7; $rsf_ace_offsets_2007_C["montant_remboursable_oc_offset"] = 93; $rsf_ace_offsets_2007_C["montant_remboursable_oc_len"] = 7; $rsf_ace_offsets_2016_M["finess_offset"] = 1; $rsf_ace_offsets_2016_M["finess_len"] = 9; $rsf_ace_offsets_2016_M["finess_geographique_offset"] = 10; $rsf_ace_offsets_2016_M["finess_geographique_len"] = 9; $rsf_ace_offsets_2016_M["immatriculation_assure_offset"] = 19; $rsf_ace_offsets_2016_M["immatriculation_assure_len"] = 13; $rsf_ace_offsets_2016_M["cle_immatriculation_assure_offset"] = 32; $rsf_ace_offsets_2016_M["cle_immatriculation_assure_len"] = 2; $rsf_ace_offsets_2016_M["rang_beneficiaire_offset"] = 34; $rsf_ace_offsets_2016_M["rang_beneficiaire_len"] = 3; $rsf_ace_offsets_2016_M["no_facture_offset"] = 37; $rsf_ace_offsets_2016_M["no_facture_len"] = 9; $rsf_ace_offsets_2016_M["mode_traitement_offset"] = 46; $rsf_ace_offsets_2016_M["mode_traitement_len"] = 2; $rsf_ace_offsets_2016_M["discpline_prestation_offset"] = 48; $rsf_ace_offsets_2016_M["discpline_prestation_len"] = 3; $rsf_ace_offsets_2016_M["date_acte_offset"] = 51; $rsf_ace_offsets_2016_M["date_acte_len"] = 8; $rsf_ace_offsets_2016_M["code_acte_offset"] = 59; $rsf_ace_offsets_2016_M["code_acte_len"] = 7; $rsf_ace_offsets_2016_M["extension_ccam_offset"] = 72; $rsf_ace_offsets_2016_M["extension_ccam_len"] = 1; $rsf_ace_offsets_2016_M["activite_ccam_offset"] = 73; $rsf_ace_offsets_2016_M["activite_ccam_len"] = 1; $rsf_ace_offsets_2016_M["phase_ccam_offset"] = 74; $rsf_ace_offsets_2016_M["phase_ccam_len"] = 1; $rsf_ace_offsets_2016_M["modificateur_ccam_1_offset"] = 75; $rsf_ace_offsets_2016_M["modificateur_ccam_1_len"] = 1; $rsf_ace_offsets_2016_M["modificateur_ccam_2_offset"] = 76; $rsf_ace_offsets_2016_M["modificateur_ccam_2_len"] = 1; $rsf_ace_offsets_2016_M["modificateur_ccam_3_offset"] = 77; $rsf_ace_offsets_2016_M["modificateur_ccam_3_len"] = 1; $rsf_ace_offsets_2016_M["modificateur_ccam_4_offset"] = 78; $rsf_ace_offsets_2016_M["modificateur_ccam_4_len"] = 1; $rsf_ace_offsets_2016_M["association_nonprevue_ccam_offset"] = 79; $rsf_ace_offsets_2016_M["association_nonprevue_ccam_len"] = 1; $rsf_ace_offsets_2016_M["remboursement_excp_ccam_offset"] = 80; $rsf_ace_offsets_2016_M["remboursement_excp_ccam_len"] = 1; $rsf_ace_offsets_2008_M["finess_offset"] = 1; $rsf_ace_offsets_2008_M["finess_len"] = 9; $rsf_ace_offsets_2008_M["immatriculation_assure_offset"] = 10; $rsf_ace_offsets_2008_M["immatriculation_assure_len"] = 13; $rsf_ace_offsets_2008_M["cle_immatriculation_assure_offset"] = 23; $rsf_ace_offsets_2008_M["cle_immatriculation_assure_len"] = 2; $rsf_ace_offsets_2008_M["rang_beneficiaire_offset"] = 25; $rsf_ace_offsets_2008_M["rang_beneficiaire_len"] = 3; $rsf_ace_offsets_2008_M["no_facture_offset"] = 28; $rsf_ace_offsets_2008_M["no_facture_len"] = 9; $rsf_ace_offsets_2008_M["mode_traitement_offset"] = 37; $rsf_ace_offsets_2008_M["mode_traitement_len"] = 2; $rsf_ace_offsets_2008_M["discpline_prestation_offset"] = 39; $rsf_ace_offsets_2008_M["discpline_prestation_len"] = 3; $rsf_ace_offsets_2008_M["date_acte_offset"] = 42; $rsf_ace_offsets_2008_M["date_acte_len"] = 8; $rsf_ace_offsets_2008_M["code_acte_offset"] = 50; $rsf_ace_offsets_2008_M["code_acte_len"] = 7; $rsf_ace_offsets_2008_M["extension_ccam_offset"] = 63; $rsf_ace_offsets_2008_M["extension_ccam_len"] = 1; $rsf_ace_offsets_2008_M["activite_ccam_offset"] = 64; $rsf_ace_offsets_2008_M["activite_ccam_len"] = 1; $rsf_ace_offsets_2008_M["phase_ccam_offset"] = 65; $rsf_ace_offsets_2008_M["phase_ccam_len"] = 1; $rsf_ace_offsets_2008_M["modificateur_ccam_1_offset"] = 66; $rsf_ace_offsets_2008_M["modificateur_ccam_1_len"] = 1; $rsf_ace_offsets_2008_M["modificateur_ccam_2_offset"] = 67; $rsf_ace_offsets_2008_M["modificateur_ccam_2_len"] = 1; $rsf_ace_offsets_2008_M["modificateur_ccam_3_offset"] = 68; $rsf_ace_offsets_2008_M["modificateur_ccam_3_len"] = 1; $rsf_ace_offsets_2008_M["modificateur_ccam_4_offset"] = 69; $rsf_ace_offsets_2008_M["modificateur_ccam_4_len"] = 1; $rsf_ace_offsets_2008_M["association_nonprevue_ccam_offset"] = 70; $rsf_ace_offsets_2008_M["association_nonprevue_ccam_len"] = 1; $rsf_ace_offsets_2008_M["remboursement_excp_ccam_offset"] = 71; $rsf_ace_offsets_2008_M["remboursement_excp_ccam_len"] = 1; $rsf_ace_offsets_2007_M["finess_offset"] = 1; $rsf_ace_offsets_2007_M["finess_len"] = 9; $rsf_ace_offsets_2007_M["immatriculation_assure_offset"] = 17; $rsf_ace_offsets_2007_M["immatriculation_assure_len"] = 13; $rsf_ace_offsets_2007_M["rang_beneficiaire_offset"] = 30; $rsf_ace_offsets_2007_M["rang_beneficiaire_len"] = 3; $rsf_ace_offsets_2007_M["mode_traitement_offset"] = 33; $rsf_ace_offsets_2007_M["mode_traitement_len"] = 2; $rsf_ace_offsets_2007_M["discpline_prestation_offset"] = 35; $rsf_ace_offsets_2007_M["discpline_prestation_len"] = 3; $rsf_ace_offsets_2007_M["date_acte_offset"] = 38; $rsf_ace_offsets_2007_M["date_acte_len"] = 8; $rsf_ace_offsets_2007_M["code_acte_offset"] = 46; $rsf_ace_offsets_2007_M["code_acte_len"] = 7; $rsf_ace_offsets_2007_M["extension_ccam_offset"] = 59; $rsf_ace_offsets_2007_M["extension_ccam_len"] = 1; $rsf_ace_offsets_2007_M["activite_ccam_offset"] = 60; $rsf_ace_offsets_2007_M["activite_ccam_len"] = 1; $rsf_ace_offsets_2007_M["phase_ccam_offset"] = 61; $rsf_ace_offsets_2007_M["phase_ccam_len"] = 1; $rsf_ace_offsets_2007_M["modificateur_ccam_1_offset"] = 62; $rsf_ace_offsets_2007_M["modificateur_ccam_1_len"] = 1; $rsf_ace_offsets_2007_M["modificateur_ccam_2_offset"] = 63; $rsf_ace_offsets_2007_M["modificateur_ccam_2_len"] = 1; $rsf_ace_offsets_2007_M["modificateur_ccam_3_offset"] = 64; $rsf_ace_offsets_2007_M["modificateur_ccam_3_len"] = 1; $rsf_ace_offsets_2007_M["modificateur_ccam_4_offset"] = 65; $rsf_ace_offsets_2007_M["modificateur_ccam_4_len"] = 1; $rsf_ace_offsets_2007_M["association_nonprevue_ccam_offset"] = 66; $rsf_ace_offsets_2007_M["association_nonprevue_ccam_len"] = 1; $rsf_ace_offsets_2007_M["remboursement_excp_ccam_offset"] = 67; $rsf_ace_offsets_2007_M["remboursement_excp_ccam_len"] = 1; $fcp_dmi_offsets_2007 = array(); $fcp_dmi_offsets_2008 = array(); $fcp_ucd_offsets_2007 = array(); $fcp_ucd_offsets_2008 = array(); $fcp_dmi_offsets_2007["finess_offset"] = 0; $fcp_dmi_offsets_2007["finess_len"] = 9; $fcp_dmi_offsets_2007["no_sejour_administratif_offset"] = 9; $fcp_dmi_offsets_2007["no_sejour_administratif_len"] = 20; $fcp_dmi_offsets_2007["code_offset"] = 29; $fcp_dmi_offsets_2007["code_len"] = 9; $fcp_dmi_offsets_2007["nombre_offset"] = 38; $fcp_dmi_offsets_2007["nombre_len"] = 4; $fcp_dmi_offsets_2007["date_debut_offset"] = 42; $fcp_dmi_offsets_2007["date_debut_len"] = 8; $fcp_ucd_offsets_2007["finess_offset"] = 0; $fcp_ucd_offsets_2007["finess_len"] = 9; $fcp_ucd_offsets_2007["no_sejour_administratif_offset"] = 9; $fcp_ucd_offsets_2007["no_sejour_administratif_len"] = 20; $fcp_ucd_offsets_2007["code_offset"] = 29; $fcp_ucd_offsets_2007["code_len"] = 9; $fcp_ucd_offsets_2007["nombre_offset"] = 38; $fcp_ucd_offsets_2007["nombre_len"] = 7; $fcp_ucd_offsets_2007["date_debut_offset"] = 45; $fcp_ucd_offsets_2007["date_debut_len"] = 8; $fcp_dmi_offsets_2008["finess_offset"] = 0; $fcp_dmi_offsets_2008["finess_len"] = 9; $fcp_dmi_offsets_2008["type_prestation_offset"] = 9; $fcp_dmi_offsets_2008["type_prestation_len"] = 2; $fcp_dmi_offsets_2008["no_sejour_administratif_offset"] = 11; $fcp_dmi_offsets_2008["no_sejour_administratif_len"] = 20; $fcp_dmi_offsets_2008["no_rum_offset"] = 31; $fcp_dmi_offsets_2008["no_rum_len"] = 10; $fcp_dmi_offsets_2008["date_debut_offset"] = 41; $fcp_dmi_offsets_2008["date_debut_len"] = 8; $fcp_dmi_offsets_2008["date_fin_offset"] = 49; $fcp_dmi_offsets_2008["date_fin_len"] = 8; $fcp_dmi_offsets_2008["code_offset"] = 57; $fcp_dmi_offsets_2008["code_len"] = 15; $fcp_dmi_offsets_2008["nombre_offset"] = 72; $fcp_dmi_offsets_2008["nombre_len"] = 10; $fcp_dmi_offsets_2008["montant_paye_offset"] = 82; $fcp_dmi_offsets_2008["montant_paye_len"] = 10; $fcp_ucd_offsets_2008["finess_offset"] = 0; $fcp_ucd_offsets_2008["finess_len"] = 9; $fcp_ucd_offsets_2008["type_prestation_offset"] = 9; $fcp_ucd_offsets_2008["type_prestation_len"] = 2; $fcp_ucd_offsets_2008["no_sejour_administratif_offset"] = 11; $fcp_ucd_offsets_2008["no_sejour_administratif_len"] = 20; $fcp_ucd_offsets_2008["no_rum_offset"] = 31; $fcp_ucd_offsets_2008["no_rum_len"] = 10; $fcp_ucd_offsets_2008["date_debut_offset"] = 41; $fcp_ucd_offsets_2008["date_debut_len"] = 8; $fcp_ucd_offsets_2008["date_fin_offset"] = 49; $fcp_ucd_offsets_2008["date_fin_len"] = 8; $fcp_ucd_offsets_2008["code_offset"] = 57; $fcp_ucd_offsets_2008["code_len"] = 15; $fcp_ucd_offsets_2008["nombre_offset"] = 72; $fcp_ucd_offsets_2008["nombre_len"] = 10; $fcp_ucd_offsets_2008["montant_paye_offset"] = 82; $fcp_ucd_offsets_2008["montant_paye_len"] = 10; $rss_offsets_215 = array(); $rsa_offsets_215["finess_offset"] = 0; $rsa_offsets_215["finess_len"] = 9; $rsa_offsets_215["version_format_rsa_offset"] = 9; $rsa_offsets_215["version_format_rsa_len"] = 3; $rsa_offsets_215["no_rsa_offset"] = 12; $rsa_offsets_215["no_rsa_len"] = 10; $rsa_offsets_215["version_format_offset"] = 22; $rsa_offsets_215["version_format_len"] = 3; $rsa_offsets_215["numero_tarif_offset"] = 25; $rsa_offsets_215["numero_tarif_len"] = 3; $rsa_offsets_215["version_groupage_offset"] = 28; $rsa_offsets_215["version_groupage_len"] = 2; $rsa_offsets_215["ghm_offset"] = 30; $rsa_offsets_215["ghm_len"] = 6; $rsa_offsets_215["code_retour_groupage_offset"] = 36; $rsa_offsets_215["code_retour_groupage_len"] = 3; $rsa_offsets_215["version_groupage_genrsa_offset"] = 39; $rsa_offsets_215["version_groupage_genrsa_len"] = 2; $rsa_offsets_215["ghm_genrsa_offset"] = 41; $rsa_offsets_215["ghm_genrsa_len"] = 6; $rsa_offsets_215["code_retour_groupage_genrsa_offset"] = 47; $rsa_offsets_215["code_retour_groupage_genrsa_len"] = 3; $rsa_offsets_215["nombre_rum_offset"] = 50; $rsa_offsets_215["nombre_rum_len"] = 2; $rsa_offsets_215["age_annees_offset"] = 52; $rsa_offsets_215["age_annees_len"] = 3; $rsa_offsets_215["age_jours_offset"] = 55; $rsa_offsets_215["age_jours_len"] = 3; $rsa_offsets_215["sexe_offset"] = 58; $rsa_offsets_215["sexe_len"] = 1; $rsa_offsets_215["mode_entree_offset"] = 59; $rsa_offsets_215["mode_entree_len"] = 1; $rsa_offsets_215["provenance_offset"] = 60; $rsa_offsets_215["provenance_len"] = 1; $rsa_offsets_215["mois_sortie_offset"] = 61; $rsa_offsets_215["mois_sortie_len"] = 6; $rsa_offsets_215["mode_sortie_offset"] = 67; $rsa_offsets_215["mode_sortie_len"] = 1; $rsa_offsets_215["destination_offset"] = 68; $rsa_offsets_215["destination_len"] = 1; $rsa_offsets_215["type_sejour_offset"] = 69; $rsa_offsets_215["type_sejour_len"] = 1; $rsa_offsets_215["duree_sejour_offset"] = 70; $rsa_offsets_215["duree_sejour_len"] = 4; $rsa_offsets_215["code_geographique_offset"] = 74; $rsa_offsets_215["code_geographique_len"] = 5; $rsa_offsets_215["poids_entree_offset"] = 79; $rsa_offsets_215["poids_entree_len"] = 4; $rsa_offsets_215["age_gestationnel_offset"] = 83; $rsa_offsets_215["age_gestationnel_len"] = 2; $rsa_offsets_215["nombre_seances_offset"] = 85; $rsa_offsets_215["nombre_seances_len"] = 2; $rsa_offsets_215["igs2_offset"] = 87; $rsa_offsets_215["igs2_len"] = 3; $rsa_offsets_215["ghs_genrsa_offset"] = 90; $rsa_offsets_215["ghs_genrsa_len"] = 4; $rsa_offsets_215["nombre_exh_offset"] = 94; $rsa_offsets_215["nombre_exh_len"] = 4; $rsa_offsets_215["exb_offset"] = 98; $rsa_offsets_215["exb_len"] = 1; $rss_offsets_222 = array(); $rsa_offsets_222["finess_offset"] = 0; $rsa_offsets_222["finess_len"] = 9; $rsa_offsets_222["version_format_rsa_offset"] = 9; $rsa_offsets_222["version_format_rsa_len"] = 3; $rsa_offsets_222["no_rsa_offset"] = 12; $rsa_offsets_222["no_rsa_len"] = 10; $rsa_offsets_222["version_format_offset"] = 22; $rsa_offsets_222["version_format_len"] = 3; $rsa_offsets_222["numero_tarif_offset"] = 25; $rsa_offsets_222["numero_tarif_len"] = 3; $rsa_offsets_222["version_groupage_offset"] = 28; $rsa_offsets_222["version_groupage_len"] = 2; $rsa_offsets_222["ghm_offset"] = 30; $rsa_offsets_222["ghm_len"] = 6; $rsa_offsets_222["code_retour_groupage_offset"] = 36; $rsa_offsets_222["code_retour_groupage_len"] = 3; $rsa_offsets_222["version_groupage_genrsa_offset"] = 39; $rsa_offsets_222["version_groupage_genrsa_len"] = 2; $rsa_offsets_222["ghm_genrsa_offset"] = 41; $rsa_offsets_222["ghm_genrsa_len"] = 6; $rsa_offsets_222["code_retour_groupage_genrsa_offset"] = 47; $rsa_offsets_222["code_retour_groupage_genrsa_len"] = 3; $rsa_offsets_222["nombre_rum_offset"] = 50; $rsa_offsets_222["nombre_rum_len"] = 2; $rsa_offsets_222["age_annees_offset"] = 52; $rsa_offsets_222["age_annees_len"] = 3; $rsa_offsets_222["age_jours_offset"] = 55; $rsa_offsets_222["age_jours_len"] = 3; $rsa_offsets_222["sexe_offset"] = 58; $rsa_offsets_222["sexe_len"] = 1; $rsa_offsets_222["mode_entree_offset"] = 59; $rsa_offsets_222["mode_entree_len"] = 1; $rsa_offsets_222["provenance_offset"] = 60; $rsa_offsets_222["provenance_len"] = 1; $rsa_offsets_222["mois_sortie_offset"] = 61; $rsa_offsets_222["mois_sortie_len"] = 6; $rsa_offsets_222["mode_sortie_offset"] = 67; $rsa_offsets_222["mode_sortie_len"] = 1; $rsa_offsets_222["destination_offset"] = 68; $rsa_offsets_222["destination_len"] = 1; $rsa_offsets_222["type_sejour_offset"] = 69; $rsa_offsets_222["type_sejour_len"] = 1; $rsa_offsets_222["duree_sejour_offset"] = 70; $rsa_offsets_222["duree_sejour_len"] = 4; $rsa_offsets_222["code_geographique_offset"] = 74; $rsa_offsets_222["code_geographique_len"] = 5; $rsa_offsets_222["poids_entree_offset"] = 79; $rsa_offsets_222["poids_entree_len"] = 4; $rsa_offsets_222["age_gestationnel_offset"] = 83; $rsa_offsets_222["age_gestationnel_len"] = 2; $rsa_offsets_222["delai_dernieres_regles_offset"] = 85; $rsa_offsets_222["delai_dernieres_regles_len"] = 3; $rsa_offsets_222["nombre_seances_offset"] = 88; $rsa_offsets_222["nombre_seances_len"] = 2; $rsa_offsets_222["igs2_offset"] = 0; $rsa_offsets_222["igs2_len"] = 0; $rsa_offsets_222["ghs_genrsa_offset"] = 90; $rsa_offsets_222["ghs_genrsa_len"] = 4; $rsa_offsets_222["nombre_exh_offset"] = 94; $rsa_offsets_222["nombre_exh_len"] = 4; $rsa_offsets_222["type_exb_offset"] = 98; $rsa_offsets_222["type_exb_len"] = 1; $rsa_offsets_222["nb_exb_offset"] = 99; $rsa_offsets_222["nb_exb_len"] = 3; $rsa_offsets_222["top_uhcd_offset"] = 105; $rsa_offsets_222["top_uhcd_len"] = 1; $rsa_offsets_222["top_ghs_minore_offset"] = 106; $rsa_offsets_222["top_ghs_minore_len"] = 1; $rsa_offsets_222["confirmation_codage_offset"] = 107; $rsa_offsets_222["confirmation_codage_len"] = 1; $rsa_offsets_222["nb_aut_pgv_offset"] = 108; $rsa_offsets_222["nb_aut_pgv_len"] = 1; $rsa_offsets_222["nb_sup_dialyse_1_offset"] = 109; $rsa_offsets_222["nb_sup_dialyse_1_len"] = 3; $rsa_offsets_222["nb_sup_dialyse_2_offset"] = 112; $rsa_offsets_222["nb_sup_dialyse_2_len"] = 3; $rsa_offsets_222["nb_sup_dialyse_3_offset"] = 115; $rsa_offsets_222["nb_sup_dialyse_3_len"] = 3; $rsa_offsets_222["nb_sup_dialyse_4_offset"] = 118; $rsa_offsets_222["nb_sup_dialyse_4_len"] = 3; $rsa_offsets_222["nb_sup_apherese_offset"] = 121; $rsa_offsets_222["nb_sup_apherese_len"] = 3; $rsa_offsets_222["nb_sup_rap_offset"] = 124; $rsa_offsets_222["nb_sup_rap_len"] = 3; $rsa_offsets_222["nb_sup_ant_offset"] = 127; $rsa_offsets_222["nb_sup_ant_len"] = 3; $rsa_offsets_222["nb_rdth_offset"] = 130; $rsa_offsets_222["nb_rdth_len"] = 1; $rsa_offsets_222["top_valve_aortique_offset"] = 131; $rsa_offsets_222["top_valve_aortique_len"] = 1; $rsa_offsets_222["type_generation_automarique_offset"] = 132; $rsa_offsets_222["type_generation_automarique_len"] = 1; $rsa_offsets_222["nb_sup_hyperbare_offset"] = 145; $rsa_offsets_222["nb_sup_hyperbare_len"] = 3; $rsa_offsets_222["type_prestation_prelevement_organe_offset"] = 148; $rsa_offsets_222["type_prestation_prelevement_organe_len"] = 1; $rsa_offsets_222["nb_sup_rea_offset"] = 149; $rsa_offsets_222["nb_sup_rea_len"] = 3; $rsa_offsets_222["nb_sup_si_offset"] = 152; $rsa_offsets_222["nb_sup_si_len"] = 3; $rsa_offsets_222["nb_sup_stf_offset"] = 155; $rsa_offsets_222["nb_sup_stf_len"] = 3; $rsa_offsets_222["nb_sup_src_offset"] = 158; $rsa_offsets_222["nb_sup_src_len"] = 3; $rsa_offsets_222["nb_sup_nn1_offset"] = 161; $rsa_offsets_222["nb_sup_nn1_len"] = 3; $rsa_offsets_222["nb_sup_nn2_offset"] = 164; $rsa_offsets_222["nb_sup_nn2_len"] = 3; $rsa_offsets_222["nb_sup_nn3_offset"] = 167; $rsa_offsets_222["nb_sup_nn3_len"] = 3; $rsa_offsets_222["nb_sup_rep_offset"] = 170; $rsa_offsets_222["nb_sup_rep_len"] = 3; $rsa_offsets_222["passage_lit_sp_offset"] = 173; $rsa_offsets_222["passage_lit_sp_len"] = 1; $rsa_offsets_222["type_machine_rdth_offset"] = 174; $rsa_offsets_222["type_machine_rdth_len"] = 1; $rsa_offsets_222["type_dosimetrie_offset"] = 175; $rsa_offsets_222["type_dosimetrie_len"] = 1; $rsa_offsets_222["numero_innovation_offset"] = 176; $rsa_offsets_222["numero_innovation_len"] = 15; $rsa_offsets_222["nombre_ivg_anterieures_offset"] = 191; $rsa_offsets_222["nombre_ivg_anterieures_len"] = 2; $rsa_offsets_222["annee_ivg_precedente_offset"] = 193; $rsa_offsets_222["annee_ivg_precedente_len"] = 4; $rsa_offsets_222["nombre_naissances_vivantes_anterieures_offset"] = 197; $rsa_offsets_222["nombre_naissances_vivantes_anterieures_len"] = 2; $rsa_offsets_222["no_rum_dp_offset"] = 200; $rsa_offsets_222["no_rum_dp_len"] = 2; $rss_offsets_223 = array(); $rsa_offsets_223["finess_offset"] = 0; $rsa_offsets_223["finess_len"] = 9; $rsa_offsets_223["version_format_rsa_offset"] = 9; $rsa_offsets_223["version_format_rsa_len"] = 3; $rsa_offsets_223["no_rsa_offset"] = 12; $rsa_offsets_223["no_rsa_len"] = 10; $rsa_offsets_223["version_format_offset"] = 22; $rsa_offsets_223["version_format_len"] = 3; $rsa_offsets_223["numero_tarif_offset"] = 25; $rsa_offsets_223["numero_tarif_len"] = 3; $rsa_offsets_223["version_groupage_offset"] = 28; $rsa_offsets_223["version_groupage_len"] = 2; $rsa_offsets_223["ghm_offset"] = 30; $rsa_offsets_223["ghm_len"] = 6; $rsa_offsets_223["code_retour_groupage_offset"] = 36; $rsa_offsets_223["code_retour_groupage_len"] = 3; $rsa_offsets_223["version_groupage_genrsa_offset"] = 39; $rsa_offsets_223["version_groupage_genrsa_len"] = 2; $rsa_offsets_223["ghm_genrsa_offset"] = 41; $rsa_offsets_223["ghm_genrsa_len"] = 6; $rsa_offsets_223["code_retour_groupage_genrsa_offset"] = 47; $rsa_offsets_223["code_retour_groupage_genrsa_len"] = 3; $rsa_offsets_223["nombre_rum_offset"] = 50; $rsa_offsets_223["nombre_rum_len"] = 2; $rsa_offsets_223["age_annees_offset"] = 52; $rsa_offsets_223["age_annees_len"] = 3; $rsa_offsets_223["age_jours_offset"] = 55; $rsa_offsets_223["age_jours_len"] = 3; $rsa_offsets_223["sexe_offset"] = 58; $rsa_offsets_223["sexe_len"] = 1; $rsa_offsets_223["mode_entree_offset"] = 59; $rsa_offsets_223["mode_entree_len"] = 1; $rsa_offsets_223["provenance_offset"] = 60; $rsa_offsets_223["provenance_len"] = 1; $rsa_offsets_223["mois_sortie_offset"] = 61; $rsa_offsets_223["mois_sortie_len"] = 6; $rsa_offsets_223["mode_sortie_offset"] = 67; $rsa_offsets_223["mode_sortie_len"] = 1; $rsa_offsets_223["destination_offset"] = 68; $rsa_offsets_223["destination_len"] = 1; $rsa_offsets_223["type_sejour_offset"] = 69; $rsa_offsets_223["type_sejour_len"] = 1; $rsa_offsets_223["duree_sejour_offset"] = 70; $rsa_offsets_223["duree_sejour_len"] = 4; $rsa_offsets_223["code_geographique_offset"] = 74; $rsa_offsets_223["code_geographique_len"] = 5; $rsa_offsets_223["poids_entree_offset"] = 79; $rsa_offsets_223["poids_entree_len"] = 4; $rsa_offsets_223["age_gestationnel_offset"] = 83; $rsa_offsets_223["age_gestationnel_len"] = 2; $rsa_offsets_223["delai_dernieres_regles_offset"] = 85; $rsa_offsets_223["delai_dernieres_regles_len"] = 3; $rsa_offsets_223["nombre_seances_offset"] = 88; $rsa_offsets_223["nombre_seances_len"] = 2; $rsa_offsets_223["igs2_offset"] = 0; $rsa_offsets_223["igs2_len"] = 0; $rsa_offsets_223["ghs_genrsa_offset"] = 90; $rsa_offsets_223["ghs_genrsa_len"] = 4; $rsa_offsets_223["nombre_exh_offset"] = 94; $rsa_offsets_223["nombre_exh_len"] = 4; $rsa_offsets_223["type_exb_offset"] = 98; $rsa_offsets_223["type_exb_len"] = 1; $rsa_offsets_223["nb_exb_offset"] = 99; $rsa_offsets_223["nb_exb_len"] = 3; $rsa_offsets_223["top_adm_maison_naissance_offset"] = 102; $rsa_offsets_223["top_adm_maison_naissance_len"] = 1; $rsa_offsets_223["top_radiation_part_avastin_offset"] = 103; $rsa_offsets_223["top_radiation_part_avastin_len"] = 1; $rsa_offsets_223["top_radiation_partielle_alimta_offset"] = 104; $rsa_offsets_223["top_radiation_partielle_alimta_len"] = 1; $rsa_offsets_223["top_uhcd_offset"] = 105; $rsa_offsets_223["top_uhcd_len"] = 1; $rsa_offsets_223["top_ghs_minore_offset"] = 106; $rsa_offsets_223["top_ghs_minore_len"] = 1; $rsa_offsets_223["confirmation_codage_offset"] = 107; $rsa_offsets_223["confirmation_codage_len"] = 1; $rsa_offsets_223["nb_aut_pgv_offset"] = 108; $rsa_offsets_223["nb_aut_pgv_len"] = 1; $rsa_offsets_223["nb_sup_dialyse_1_offset"] = 109; $rsa_offsets_223["nb_sup_dialyse_1_len"] = 3; $rsa_offsets_223["nb_sup_dialyse_2_offset"] = 112; $rsa_offsets_223["nb_sup_dialyse_2_len"] = 3; $rsa_offsets_223["nb_sup_dialyse_3_offset"] = 115; $rsa_offsets_223["nb_sup_dialyse_3_len"] = 3; $rsa_offsets_223["nb_sup_dialyse_4_offset"] = 118; $rsa_offsets_223["nb_sup_dialyse_4_len"] = 3; $rsa_offsets_223["nb_sup_apherese_offset"] = 121; $rsa_offsets_223["nb_sup_apherese_len"] = 3; $rsa_offsets_223["nb_sup_rap_offset"] = 124; $rsa_offsets_223["nb_sup_rap_len"] = 3; $rsa_offsets_223["nb_sup_ant_offset"] = 127; $rsa_offsets_223["nb_sup_ant_len"] = 3; $rsa_offsets_223["nb_rdth_offset"] = 130; $rsa_offsets_223["nb_rdth_len"] = 1; $rsa_offsets_223["top_valve_aortique_offset"] = 131; $rsa_offsets_223["top_valve_aortique_len"] = 1; $rsa_offsets_223["type_generation_automarique_offset"] = 132; $rsa_offsets_223["type_generation_automarique_len"] = 1; $rsa_offsets_223["nb_sup_hyperbare_offset"] = 145; $rsa_offsets_223["nb_sup_hyperbare_len"] = 3; $rsa_offsets_223["type_prestation_prelevement_organe_offset"] = 148; $rsa_offsets_223["type_prestation_prelevement_organe_len"] = 1; $rsa_offsets_223["nb_sup_rea_offset"] = 149; $rsa_offsets_223["nb_sup_rea_len"] = 3; $rsa_offsets_223["nb_sup_si_offset"] = 152; $rsa_offsets_223["nb_sup_si_len"] = 3; $rsa_offsets_223["nb_sup_stf_offset"] = 155; $rsa_offsets_223["nb_sup_stf_len"] = 3; $rsa_offsets_223["nb_sup_src_offset"] = 158; $rsa_offsets_223["nb_sup_src_len"] = 3; $rsa_offsets_223["nb_sup_nn1_offset"] = 161; $rsa_offsets_223["nb_sup_nn1_len"] = 3; $rsa_offsets_223["nb_sup_nn2_offset"] = 164; $rsa_offsets_223["nb_sup_nn2_len"] = 3; $rsa_offsets_223["nb_sup_nn3_offset"] = 167; $rsa_offsets_223["nb_sup_nn3_len"] = 3; $rsa_offsets_223["nb_sup_rep_offset"] = 170; $rsa_offsets_223["nb_sup_rep_len"] = 3; $rsa_offsets_223["passage_lit_sp_offset"] = 173; $rsa_offsets_223["passage_lit_sp_len"] = 1; $rsa_offsets_223["type_machine_rdth_offset"] = 174; $rsa_offsets_223["type_machine_rdth_len"] = 1; $rsa_offsets_223["type_dosimetrie_offset"] = 175; $rsa_offsets_223["type_dosimetrie_len"] = 1; $rsa_offsets_223["numero_innovation_offset"] = 176; $rsa_offsets_223["numero_innovation_len"] = 15; $rsa_offsets_223["nombre_ivg_anterieures_offset"] = 191; $rsa_offsets_223["nombre_ivg_anterieures_len"] = 2; $rsa_offsets_223["annee_ivg_precedente_offset"] = 193; $rsa_offsets_223["annee_ivg_precedente_len"] = 4; $rsa_offsets_223["nombre_naissances_vivantes_anterieures_offset"] = 197; $rsa_offsets_223["nombre_naissances_vivantes_anterieures_len"] = 2; $rsa_offsets_223["no_rum_dp_offset"] = 200; $rsa_offsets_223["no_rum_dp_len"] = 2; $rss_offsets_226 = array(); $rsa_offsets_226["finess_offset"] = 0; $rsa_offsets_226["finess_len"] = 9; $rsa_offsets_226["version_format_rsa_offset"] = 9; $rsa_offsets_226["version_format_rsa_len"] = 3; $rsa_offsets_226["no_rsa_offset"] = 12; $rsa_offsets_226["no_rsa_len"] = 10; $rsa_offsets_226["version_format_offset"] = 22; $rsa_offsets_226["version_format_len"] = 3; $rsa_offsets_226["numero_tarif_offset"] = 25; $rsa_offsets_226["numero_tarif_len"] = 3; $rsa_offsets_226["version_groupage_offset"] = 28; $rsa_offsets_226["version_groupage_len"] = 2; $rsa_offsets_226["ghm_offset"] = 30; $rsa_offsets_226["ghm_len"] = 6; $rsa_offsets_226["code_retour_groupage_offset"] = 36; $rsa_offsets_226["code_retour_groupage_len"] = 3; $rsa_offsets_226["version_groupage_genrsa_offset"] = 39; $rsa_offsets_226["version_groupage_genrsa_len"] = 2; $rsa_offsets_226["ghm_genrsa_offset"] = 41; $rsa_offsets_226["ghm_genrsa_len"] = 6; $rsa_offsets_226["code_retour_groupage_genrsa_offset"] = 47; $rsa_offsets_226["code_retour_groupage_genrsa_len"] = 3; $rsa_offsets_226["nombre_rum_offset"] = 50; $rsa_offsets_226["nombre_rum_len"] = 2; $rsa_offsets_226["age_annees_offset"] = 52; $rsa_offsets_226["age_annees_len"] = 3; $rsa_offsets_226["age_jours_offset"] = 55; $rsa_offsets_226["age_jours_len"] = 3; $rsa_offsets_226["sexe_offset"] = 58; $rsa_offsets_226["sexe_len"] = 1; $rsa_offsets_226["mode_entree_offset"] = 59; $rsa_offsets_226["mode_entree_len"] = 1; $rsa_offsets_226["provenance_offset"] = 60; $rsa_offsets_226["provenance_len"] = 1; $rsa_offsets_226["mois_sortie_offset"] = 61; $rsa_offsets_226["mois_sortie_len"] = 6; $rsa_offsets_226["mode_sortie_offset"] = 67; $rsa_offsets_226["mode_sortie_len"] = 1; $rsa_offsets_226["destination_offset"] = 68; $rsa_offsets_226["destination_len"] = 1; $rsa_offsets_226["type_sejour_offset"] = 69; $rsa_offsets_226["type_sejour_len"] = 1; $rsa_offsets_226["duree_sejour_offset"] = 70; $rsa_offsets_226["duree_sejour_len"] = 4; $rsa_offsets_226["code_geographique_offset"] = 74; $rsa_offsets_226["code_geographique_len"] = 5; $rsa_offsets_226["poids_entree_offset"] = 79; $rsa_offsets_226["poids_entree_len"] = 4; $rsa_offsets_226["age_gestationnel_offset"] = 83; $rsa_offsets_226["age_gestationnel_len"] = 2; $rsa_offsets_226["delai_dernieres_regles_offset"] = 85; $rsa_offsets_226["delai_dernieres_regles_len"] = 3; $rsa_offsets_226["nombre_seances_offset"] = 93; $rsa_offsets_226["nombre_seances_len"] = 2; $rsa_offsets_226["igs2_offset"] = 0; $rsa_offsets_226["igs2_len"] = 0; $rsa_offsets_226["ghs_genrsa_offset"] = 95; $rsa_offsets_226["ghs_genrsa_len"] = 4; $rsa_offsets_226["nombre_exh_offset"] = 99; $rsa_offsets_226["nombre_exh_len"] = 4; $rsa_offsets_226["type_exb_offset"] = 103; $rsa_offsets_226["type_exb_len"] = 1; $rsa_offsets_226["nb_exb_offset"] = 104; $rsa_offsets_226["nb_exb_len"] = 3; $rsa_offsets_226["top_adm_maison_naissance_offset"] = 107; $rsa_offsets_226["top_adm_maison_naissance_len"] = 1; $rsa_offsets_226["top_radiation_part_avastin_offset"] = 108; $rsa_offsets_226["top_radiation_part_avastin_len"] = 1; $rsa_offsets_226["top_radiation_partielle_alimta_offset"] = 109; $rsa_offsets_226["top_radiation_partielle_alimta_len"] = 1; $rsa_offsets_226["top_uhcd_offset"] = 110; $rsa_offsets_226["top_uhcd_len"] = 1; $rsa_offsets_226["top_ghs_minore_offset"] = 111; $rsa_offsets_226["top_ghs_minore_len"] = 1; $rsa_offsets_226["confirmation_codage_offset"] = 112; $rsa_offsets_226["confirmation_codage_len"] = 1; $rsa_offsets_226["nb_aut_pgv_offset"] = 113; $rsa_offsets_226["nb_aut_pgv_len"] = 1; $rsa_offsets_226["nb_sup_dialyse_1_offset"] = 114; $rsa_offsets_226["nb_sup_dialyse_1_len"] = 3; $rsa_offsets_226["nb_sup_dialyse_2_offset"] = 117; $rsa_offsets_226["nb_sup_dialyse_2_len"] = 3; $rsa_offsets_226["nb_sup_dialyse_3_offset"] = 120; $rsa_offsets_226["nb_sup_dialyse_3_len"] = 3; $rsa_offsets_226["nb_sup_dialyse_4_offset"] = 123; $rsa_offsets_226["nb_sup_dialyse_4_len"] = 3; $rsa_offsets_226["nb_sup_apherese_offset"] = 126; $rsa_offsets_226["nb_sup_apherese_len"] = 3; $rsa_offsets_226["nb_sup_rap_offset"] = 129; $rsa_offsets_226["nb_sup_rap_len"] = 3; $rsa_offsets_226["nb_sup_ant_offset"] = 132; $rsa_offsets_226["nb_sup_ant_len"] = 3; $rsa_offsets_226["nb_rdth_offset"] = 135; $rsa_offsets_226["nb_rdth_len"] = 1; $rsa_offsets_226["top_valve_aortique_offset"] = 136; $rsa_offsets_226["top_valve_aortique_len"] = 1; $rsa_offsets_226["type_generation_automarique_offset"] = 137; $rsa_offsets_226["type_generation_automarique_len"] = 1; $rsa_offsets_226["nb_sup_hyperbare_offset"] = 145; $rsa_offsets_226["nb_sup_hyperbare_len"] = 3; $rsa_offsets_226["type_prestation_prelevement_organe_offset"] = 153; $rsa_offsets_226["type_prestation_prelevement_organe_len"] = 1; $rsa_offsets_226["nb_sup_rea_offset"] = 154; $rsa_offsets_226["nb_sup_rea_len"] = 3; $rsa_offsets_226["nb_sup_si_offset"] = 157; $rsa_offsets_226["nb_sup_si_len"] = 3; $rsa_offsets_226["nb_sup_stf_offset"] = 160; $rsa_offsets_226["nb_sup_stf_len"] = 3; $rsa_offsets_226["nb_sup_src_offset"] = 163; $rsa_offsets_226["nb_sup_src_len"] = 3; $rsa_offsets_226["nb_sup_nn1_offset"] = 166; $rsa_offsets_226["nb_sup_nn1_len"] = 3; $rsa_offsets_226["nb_sup_nn2_offset"] = 169; $rsa_offsets_226["nb_sup_nn2_len"] = 3; $rsa_offsets_226["nb_sup_nn3_offset"] = 172; $rsa_offsets_226["nb_sup_nn3_len"] = 3; $rsa_offsets_226["nb_sup_rep_offset"] = 175; $rsa_offsets_226["nb_sup_rep_len"] = 3; $rsa_offsets_226["passage_lit_sp_offset"] = 178; $rsa_offsets_226["passage_lit_sp_len"] = 1; $rsa_offsets_226["type_machine_rdth_offset"] = 179; $rsa_offsets_226["type_machine_rdth_len"] = 1; $rsa_offsets_226["type_dosimetrie_offset"] = 180; $rsa_offsets_226["type_dosimetrie_len"] = 1; $rsa_offsets_226["numero_innovation_offset"] = 181; $rsa_offsets_226["numero_innovation_len"] = 15; $rsa_offsets_226["nombre_ivg_anterieures_offset"] = 196; $rsa_offsets_226["nombre_ivg_anterieures_len"] = 2; $rsa_offsets_226["annee_ivg_precedente_offset"] = 203; $rsa_offsets_226["annee_ivg_precedente_len"] = 4; $rsa_offsets_226["nombre_naissances_vivantes_anterieures_offset"] = 205; $rsa_offsets_226["nombre_naissances_vivantes_anterieures_len"] = 2; $rsa_offsets_226["no_rum_dp_offset"] = 209; $rsa_offsets_226["no_rum_dp_len"] = 2; $rss_offsets_227 = array(); $rsa_offsets_227["finess_offset"] = 0; $rsa_offsets_227["finess_len"] = 9; $rsa_offsets_227["version_format_rsa_offset"] = 9; $rsa_offsets_227["version_format_rsa_len"] = 3; $rsa_offsets_227["no_rsa_offset"] = 12; $rsa_offsets_227["no_rsa_len"] = 10; $rsa_offsets_227["version_format_offset"] = 22; $rsa_offsets_227["version_format_len"] = 3; $rsa_offsets_227["numero_tarif_offset"] = 25; $rsa_offsets_227["numero_tarif_len"] = 3; $rsa_offsets_227["version_groupage_offset"] = 28; $rsa_offsets_227["version_groupage_len"] = 2; $rsa_offsets_227["ghm_offset"] = 30; $rsa_offsets_227["ghm_len"] = 6; $rsa_offsets_227["code_retour_groupage_offset"] = 36; $rsa_offsets_227["code_retour_groupage_len"] = 3; $rsa_offsets_227["version_groupage_genrsa_offset"] = 39; $rsa_offsets_227["version_groupage_genrsa_len"] = 2; $rsa_offsets_227["ghm_genrsa_offset"] = 41; $rsa_offsets_227["ghm_genrsa_len"] = 6; $rsa_offsets_227["code_retour_groupage_genrsa_offset"] = 47; $rsa_offsets_227["code_retour_groupage_genrsa_len"] = 3; $rsa_offsets_227["nombre_rum_offset"] = 50; $rsa_offsets_227["nombre_rum_len"] = 2; $rsa_offsets_227["age_annees_offset"] = 52; $rsa_offsets_227["age_annees_len"] = 3; $rsa_offsets_227["age_jours_offset"] = 55; $rsa_offsets_227["age_jours_len"] = 3; $rsa_offsets_227["sexe_offset"] = 58; $rsa_offsets_227["sexe_len"] = 1; $rsa_offsets_227["mode_entree_offset"] = 59; $rsa_offsets_227["mode_entree_len"] = 1; $rsa_offsets_227["provenance_offset"] = 60; $rsa_offsets_227["provenance_len"] = 1; $rsa_offsets_227["mois_sortie_offset"] = 61; $rsa_offsets_227["mois_sortie_len"] = 6; $rsa_offsets_227["mode_sortie_offset"] = 67; $rsa_offsets_227["mode_sortie_len"] = 1; $rsa_offsets_227["destination_offset"] = 68; $rsa_offsets_227["destination_len"] = 1; $rsa_offsets_227["type_sejour_offset"] = 69; $rsa_offsets_227["type_sejour_len"] = 1; $rsa_offsets_227["duree_sejour_offset"] = 70; $rsa_offsets_227["duree_sejour_len"] = 4; $rsa_offsets_227["code_geographique_offset"] = 74; $rsa_offsets_227["code_geographique_len"] = 5; $rsa_offsets_227["poids_entree_offset"] = 79; $rsa_offsets_227["poids_entree_len"] = 4; $rsa_offsets_227["age_gestationnel_offset"] = 83; $rsa_offsets_227["age_gestationnel_len"] = 2; $rsa_offsets_227["delai_dernieres_regles_offset"] = 85; $rsa_offsets_227["delai_dernieres_regles_len"] = 3; $rsa_offsets_227["nombre_seances_offset"] = 93; $rsa_offsets_227["nombre_seances_len"] = 2; $rsa_offsets_227["igs2_offset"] = 0; $rsa_offsets_227["igs2_len"] = 0; $rsa_offsets_227["ghs_genrsa_offset"] = 95; $rsa_offsets_227["ghs_genrsa_len"] = 4; $rsa_offsets_227["nombre_exh_offset"] = 99; $rsa_offsets_227["nombre_exh_len"] = 4; $rsa_offsets_227["type_exb_offset"] = 103; $rsa_offsets_227["type_exb_len"] = 1; $rsa_offsets_227["nb_exb_offset"] = 104; $rsa_offsets_227["nb_exb_len"] = 3; $rsa_offsets_227["top_adm_maison_naissance_offset"] = 107; $rsa_offsets_227["top_adm_maison_naissance_len"] = 1; $rsa_offsets_227["top_radiation_part_avastin_offset"] = 108; $rsa_offsets_227["top_radiation_part_avastin_len"] = 1; $rsa_offsets_227["top_radiation_partielle_alimta_offset"] = 109; $rsa_offsets_227["top_radiation_partielle_alimta_len"] = 1; $rsa_offsets_227["top_uhcd_offset"] = 110; $rsa_offsets_227["top_uhcd_len"] = 1; $rsa_offsets_227["top_ghs_minore_offset"] = 111; $rsa_offsets_227["top_ghs_minore_len"] = 1; $rsa_offsets_227["confirmation_codage_offset"] = 112; $rsa_offsets_227["confirmation_codage_len"] = 1; $rsa_offsets_227["nb_aut_pgv_offset"] = 113; $rsa_offsets_227["nb_aut_pgv_len"] = 1; $rsa_offsets_227["nb_sup_dialyse_1_offset"] = 114; $rsa_offsets_227["nb_sup_dialyse_1_len"] = 3; $rsa_offsets_227["nb_sup_dialyse_2_offset"] = 117; $rsa_offsets_227["nb_sup_dialyse_2_len"] = 3; $rsa_offsets_227["nb_sup_dialyse_3_offset"] = 120; $rsa_offsets_227["nb_sup_dialyse_3_len"] = 3; $rsa_offsets_227["nb_sup_dialyse_4_offset"] = 123; $rsa_offsets_227["nb_sup_dialyse_4_len"] = 3; $rsa_offsets_227["nb_sup_apherese_offset"] = 126; $rsa_offsets_227["nb_sup_apherese_len"] = 3; $rsa_offsets_227["nb_sup_rap_offset"] = 129; $rsa_offsets_227["nb_sup_rap_len"] = 3; $rsa_offsets_227["nb_sup_ant_offset"] = 132; $rsa_offsets_227["nb_sup_ant_len"] = 3; $rsa_offsets_227["nb_rdth_offset"] = 135; $rsa_offsets_227["nb_rdth_len"] = 1; $rsa_offsets_227["top_valve_aortique_offset"] = 136; $rsa_offsets_227["top_valve_aortique_len"] = 1; $rsa_offsets_227["type_generation_automarique_offset"] = 137; $rsa_offsets_227["type_generation_automarique_len"] = 1; $rsa_offsets_227["nb_sup_hyperbare_offset"] = 145; $rsa_offsets_227["nb_sup_hyperbare_len"] = 3; $rsa_offsets_227["type_prestation_prelevement_organe_offset"] = 153; $rsa_offsets_227["type_prestation_prelevement_organe_len"] = 1; $rsa_offsets_227["nb_sup_rea_offset"] = 154; $rsa_offsets_227["nb_sup_rea_len"] = 3; $rsa_offsets_227["nb_sup_si_offset"] = 157; $rsa_offsets_227["nb_sup_si_len"] = 3; $rsa_offsets_227["nb_sup_stf_offset"] = 160; $rsa_offsets_227["nb_sup_stf_len"] = 3; $rsa_offsets_227["nb_sup_src_offset"] = 163; $rsa_offsets_227["nb_sup_src_len"] = 3; $rsa_offsets_227["nb_sup_nn1_offset"] = 166; $rsa_offsets_227["nb_sup_nn1_len"] = 3; $rsa_offsets_227["nb_sup_nn2_offset"] = 169; $rsa_offsets_227["nb_sup_nn2_len"] = 3; $rsa_offsets_227["nb_sup_nn3_offset"] = 172; $rsa_offsets_227["nb_sup_nn3_len"] = 3; $rsa_offsets_227["nb_sup_rep_offset"] = 175; $rsa_offsets_227["nb_sup_rep_len"] = 3; $rsa_offsets_227["passage_lit_sp_offset"] = 178; $rsa_offsets_227["passage_lit_sp_len"] = 1; $rsa_offsets_227["type_machine_rdth_offset"] = 179; $rsa_offsets_227["type_machine_rdth_len"] = 1; $rsa_offsets_227["type_dosimetrie_offset"] = 180; $rsa_offsets_227["type_dosimetrie_len"] = 1; $rsa_offsets_227["numero_innovation_offset"] = 181; $rsa_offsets_227["numero_innovation_len"] = 15; $rsa_offsets_227["nombre_ivg_anterieures_offset"] = 196; $rsa_offsets_227["nombre_ivg_anterieures_len"] = 2; $rsa_offsets_227["annee_ivg_precedente_offset"] = 203; $rsa_offsets_227["annee_ivg_precedente_len"] = 4; $rsa_offsets_227["nombre_naissances_vivantes_anterieures_offset"] = 205; $rsa_offsets_227["nombre_naissances_vivantes_anterieures_len"] = 2; $rsa_offsets_227["no_rum_dp_offset"] = 209; $rsa_offsets_227["no_rum_dp_len"] = 2; $rss_offsets_227 = array(); $rss_offsets_228 = array(); $rsa_offsets_228["finess_offset"] = 0; $rsa_offsets_228["finess_len"] = 9; $rsa_offsets_228["version_format_rsa_offset"] = 9; $rsa_offsets_228["version_format_rsa_len"] = 3; $rsa_offsets_228["no_rsa_offset"] = 12; $rsa_offsets_228["no_rsa_len"] = 10; $rsa_offsets_228["version_format_offset"] = 22; $rsa_offsets_228["version_format_len"] = 3; $rsa_offsets_228["numero_tarif_offset"] = 25; $rsa_offsets_228["numero_tarif_len"] = 3; $rsa_offsets_228["version_groupage_offset"] = 28; $rsa_offsets_228["version_groupage_len"] = 2; $rsa_offsets_228["ghm_offset"] = 30; $rsa_offsets_228["ghm_len"] = 6; $rsa_offsets_228["code_retour_groupage_offset"] = 36; $rsa_offsets_228["code_retour_groupage_len"] = 3; $rsa_offsets_228["version_groupage_genrsa_offset"] = 39; $rsa_offsets_228["version_groupage_genrsa_len"] = 2; $rsa_offsets_228["ghm_genrsa_offset"] = 41; $rsa_offsets_228["ghm_genrsa_len"] = 6; $rsa_offsets_228["code_retour_groupage_genrsa_offset"] = 47; $rsa_offsets_228["code_retour_groupage_genrsa_len"] = 3; $rsa_offsets_228["nombre_rum_offset"] = 50; $rsa_offsets_228["nombre_rum_len"] = 2; $rsa_offsets_228["age_annees_offset"] = 52; $rsa_offsets_228["age_annees_len"] = 3; $rsa_offsets_228["age_jours_offset"] = 55; $rsa_offsets_228["age_jours_len"] = 3; $rsa_offsets_228["sexe_offset"] = 58; $rsa_offsets_228["sexe_len"] = 1; $rsa_offsets_228["mode_entree_offset"] = 59; $rsa_offsets_228["mode_entree_len"] = 1; $rsa_offsets_228["provenance_offset"] = 60; $rsa_offsets_228["provenance_len"] = 1; $rsa_offsets_228["mois_sortie_offset"] = 61; $rsa_offsets_228["mois_sortie_len"] = 6; $rsa_offsets_228["mode_sortie_offset"] = 67; $rsa_offsets_228["mode_sortie_len"] = 1; $rsa_offsets_228["destination_offset"] = 68; $rsa_offsets_228["destination_len"] = 1; $rsa_offsets_228["type_sejour_offset"] = 69; $rsa_offsets_228["type_sejour_len"] = 1; $rsa_offsets_228["duree_sejour_offset"] = 70; $rsa_offsets_228["duree_sejour_len"] = 4; $rsa_offsets_228["code_geographique_offset"] = 74; $rsa_offsets_228["code_geographique_len"] = 5; $rsa_offsets_228["poids_entree_offset"] = 79; $rsa_offsets_228["poids_entree_len"] = 4; $rsa_offsets_228["age_gestationnel_offset"] = 83; $rsa_offsets_228["age_gestationnel_len"] = 2; $rsa_offsets_228["delai_dernieres_regles_offset"] = 85; $rsa_offsets_228["delai_dernieres_regles_len"] = 3; $rsa_offsets_228["nombre_seances_offset"] = 93; $rsa_offsets_228["nombre_seances_len"] = 2; $rsa_offsets_228["igs2_offset"] = 0; $rsa_offsets_228["igs2_len"] = 0; $rsa_offsets_228["ghs_genrsa_offset"] = 95; $rsa_offsets_228["ghs_genrsa_len"] = 4; $rsa_offsets_228["nombre_exh_offset"] = 99; $rsa_offsets_228["nombre_exh_len"] = 4; $rsa_offsets_228["type_exb_offset"] = 103; $rsa_offsets_228["type_exb_len"] = 1; $rsa_offsets_228["nb_exb_offset"] = 104; $rsa_offsets_228["nb_exb_len"] = 3; $rsa_offsets_228["top_adm_maison_naissance_offset"] = 107; $rsa_offsets_228["top_adm_maison_naissance_len"] = 1; $rsa_offsets_228["top_radiation_part_avastin_offset"] = 108; $rsa_offsets_228["top_radiation_part_avastin_len"] = 1; $rsa_offsets_228["top_radiation_partielle_alimta_offset"] = 109; $rsa_offsets_228["top_radiation_partielle_alimta_len"] = 1; $rsa_offsets_228["top_uhcd_offset"] = 110; $rsa_offsets_228["top_uhcd_len"] = 1; $rsa_offsets_228["top_ghs_minore_offset"] = 111; $rsa_offsets_228["top_ghs_minore_len"] = 1; $rsa_offsets_228["confirmation_codage_offset"] = 112; $rsa_offsets_228["confirmation_codage_len"] = 1; $rsa_offsets_228["nb_aut_pgv_offset"] = 113; $rsa_offsets_228["nb_aut_pgv_len"] = 1; $rsa_offsets_228["nb_sup_dialyse_1_offset"] = 114; $rsa_offsets_228["nb_sup_dialyse_1_len"] = 3; $rsa_offsets_228["nb_sup_dialyse_2_offset"] = 117; $rsa_offsets_228["nb_sup_dialyse_2_len"] = 3; $rsa_offsets_228["nb_sup_dialyse_3_offset"] = 120; $rsa_offsets_228["nb_sup_dialyse_3_len"] = 3; $rsa_offsets_228["nb_sup_dialyse_4_offset"] = 123; $rsa_offsets_228["nb_sup_dialyse_4_len"] = 3; $rsa_offsets_228["nb_sup_apherese_offset"] = 126; $rsa_offsets_228["nb_sup_apherese_len"] = 3; $rsa_offsets_228["nb_sup_rap_offset"] = 129; $rsa_offsets_228["nb_sup_rap_len"] = 3; $rsa_offsets_228["nb_sup_ant_offset"] = 132; $rsa_offsets_228["nb_sup_ant_len"] = 3; $rsa_offsets_228["nb_rdth_offset"] = 135; $rsa_offsets_228["nb_rdth_len"] = 1; $rsa_offsets_228["top_valve_aortique_offset"] = 136; $rsa_offsets_228["top_valve_aortique_len"] = 1; $rsa_offsets_228["type_generation_automarique_offset"] = 137; $rsa_offsets_228["type_generation_automarique_len"] = 1; $rsa_offsets_228["nb_sup_hyperbare_offset"] = 145; $rsa_offsets_228["nb_sup_hyperbare_len"] = 3; $rsa_offsets_228["type_prestation_prelevement_organe_offset"] = 153; $rsa_offsets_228["type_prestation_prelevement_organe_len"] = 1; $rsa_offsets_228["nb_sup_rea_offset"] = 154; $rsa_offsets_228["nb_sup_rea_len"] = 3; $rsa_offsets_228["nb_sup_si_offset"] = 157; $rsa_offsets_228["nb_sup_si_len"] = 3; $rsa_offsets_228["nb_sup_stf_offset"] = 160; $rsa_offsets_228["nb_sup_stf_len"] = 3; $rsa_offsets_228["nb_sup_src_offset"] = 163; $rsa_offsets_228["nb_sup_src_len"] = 3; $rsa_offsets_228["nb_sup_nn1_offset"] = 166; $rsa_offsets_228["nb_sup_nn1_len"] = 3; $rsa_offsets_228["nb_sup_nn2_offset"] = 169; $rsa_offsets_228["nb_sup_nn2_len"] = 3; $rsa_offsets_228["nb_sup_nn3_offset"] = 172; $rsa_offsets_228["nb_sup_nn3_len"] = 3; $rsa_offsets_228["nb_sup_rep_offset"] = 175; $rsa_offsets_228["nb_sup_rep_len"] = 3; $rsa_offsets_228["passage_lit_sp_offset"] = 178; $rsa_offsets_228["passage_lit_sp_len"] = 1; $rsa_offsets_228["type_machine_rdth_offset"] = 179; $rsa_offsets_228["type_machine_rdth_len"] = 1; $rsa_offsets_228["type_dosimetrie_offset"] = 180; $rsa_offsets_228["type_dosimetrie_len"] = 1; $rsa_offsets_228["numero_innovation_offset"] = 181; $rsa_offsets_228["numero_innovation_len"] = 15; $rsa_offsets_228["nombre_ivg_anterieures_offset"] = 0; $rsa_offsets_228["nombre_ivg_anterieures_len"] = 0; $rsa_offsets_228["annee_ivg_precedente_offset"] = 0; $rsa_offsets_228["annee_ivg_precedente_len"] = 0; $rsa_offsets_228["nombre_naissances_vivantes_anterieures_offset"] = 0; $rsa_offsets_228["nombre_naissances_vivantes_anterieures_len"] = 0; $rsa_offsets_228["no_rum_dp_offset"] = 209; $rsa_offsets_228["no_rum_dp_len"] = 2; $rsa_offsets_228["diagnostic_principal_offset"] = 211; $rsa_offsets_228["diagnostic_principal_len"] = 6; $rsa_offsets_228["diagnostic_relie_offset"] = 217; $rsa_offsets_228["diagnostic_relie_len"] = 6; $rsa_offsets_228["nb_das_offset"] = 223; $rsa_offsets_228["nb_das_len"] = 6; $rss_offsets_229 = array(); $rsa_offsets_229["finess_offset"] = 0; $rsa_offsets_229["finess_len"] = 9; $rsa_offsets_229["version_format_rsa_offset"] = 9; $rsa_offsets_229["version_format_rsa_len"] = 3; $rsa_offsets_229["no_rsa_offset"] = 12; $rsa_offsets_229["no_rsa_len"] = 10; $rsa_offsets_229["version_format_offset"] = 22; $rsa_offsets_229["version_format_len"] = 3; $rsa_offsets_229["numero_tarif_offset"] = 25; $rsa_offsets_229["numero_tarif_len"] = 3; $rsa_offsets_229["version_groupage_offset"] = 28; $rsa_offsets_229["version_groupage_len"] = 2; $rsa_offsets_229["ghm_offset"] = 30; $rsa_offsets_229["ghm_len"] = 6; $rsa_offsets_229["code_retour_groupage_offset"] = 36; $rsa_offsets_229["code_retour_groupage_len"] = 3; $rsa_offsets_229["version_groupage_genrsa_offset"] = 39; $rsa_offsets_229["version_groupage_genrsa_len"] = 2; $rsa_offsets_229["ghm_genrsa_offset"] = 41; $rsa_offsets_229["ghm_genrsa_len"] = 6; $rsa_offsets_229["code_retour_groupage_genrsa_offset"] = 47; $rsa_offsets_229["code_retour_groupage_genrsa_len"] = 3; $rsa_offsets_229["nombre_rum_offset"] = 50; $rsa_offsets_229["nombre_rum_len"] = 2; $rsa_offsets_229["age_annees_offset"] = 52; $rsa_offsets_229["age_annees_len"] = 3; $rsa_offsets_229["age_jours_offset"] = 55; $rsa_offsets_229["age_jours_len"] = 3; $rsa_offsets_229["sexe_offset"] = 58; $rsa_offsets_229["sexe_len"] = 1; $rsa_offsets_229["mode_entree_offset"] = 59; $rsa_offsets_229["mode_entree_len"] = 1; $rsa_offsets_229["provenance_offset"] = 60; $rsa_offsets_229["provenance_len"] = 1; $rsa_offsets_229["mois_sortie_offset"] = 61; $rsa_offsets_229["mois_sortie_len"] = 6; $rsa_offsets_229["mode_sortie_offset"] = 67; $rsa_offsets_229["mode_sortie_len"] = 1; $rsa_offsets_229["destination_offset"] = 68; $rsa_offsets_229["destination_len"] = 1; $rsa_offsets_229["type_sejour_offset"] = 69; $rsa_offsets_229["type_sejour_len"] = 1; $rsa_offsets_229["duree_sejour_offset"] = 70; $rsa_offsets_229["duree_sejour_len"] = 4; $rsa_offsets_229["code_geographique_offset"] = 74; $rsa_offsets_229["code_geographique_len"] = 5; $rsa_offsets_229["poids_entree_offset"] = 79; $rsa_offsets_229["poids_entree_len"] = 4; $rsa_offsets_229["age_gestationnel_offset"] = 83; $rsa_offsets_229["age_gestationnel_len"] = 2; $rsa_offsets_229["delai_dernieres_regles_offset"] = 85; $rsa_offsets_229["delai_dernieres_regles_len"] = 3; $rsa_offsets_229["nombre_seances_offset"] = 93; $rsa_offsets_229["nombre_seances_len"] = 2; $rsa_offsets_229["igs2_offset"] = 0; $rsa_offsets_229["igs2_len"] = 0; $rsa_offsets_229["ghs_genrsa_offset"] = 95; $rsa_offsets_229["ghs_genrsa_len"] = 4; $rsa_offsets_229["nombre_exh_offset"] = 99; $rsa_offsets_229["nombre_exh_len"] = 4; $rsa_offsets_229["type_exb_offset"] = 103; $rsa_offsets_229["type_exb_len"] = 1; $rsa_offsets_229["nb_exb_offset"] = 104; $rsa_offsets_229["nb_exb_len"] = 3; $rsa_offsets_229["top_adm_maison_naissance_offset"] = 107; $rsa_offsets_229["top_adm_maison_naissance_len"] = 1; $rsa_offsets_229["top_radiation_part_avastin_offset"] = 108; $rsa_offsets_229["top_radiation_part_avastin_len"] = 1; $rsa_offsets_229["top_radiation_partielle_alimta_offset"] = 109; $rsa_offsets_229["top_radiation_partielle_alimta_len"] = 1; $rsa_offsets_229["top_uhcd_offset"] = 110; $rsa_offsets_229["top_uhcd_len"] = 1; $rsa_offsets_229["top_ghs_minore_offset"] = 111; $rsa_offsets_229["top_ghs_minore_len"] = 1; $rsa_offsets_229["confirmation_codage_offset"] = 112; $rsa_offsets_229["confirmation_codage_len"] = 1; $rsa_offsets_229["nb_aut_pgv_offset"] = 113; $rsa_offsets_229["nb_aut_pgv_len"] = 1; $rsa_offsets_229["nb_sup_dialyse_1_offset"] = 114; $rsa_offsets_229["nb_sup_dialyse_1_len"] = 3; $rsa_offsets_229["nb_sup_dialyse_2_offset"] = 117; $rsa_offsets_229["nb_sup_dialyse_2_len"] = 3; $rsa_offsets_229["nb_sup_dialyse_3_offset"] = 120; $rsa_offsets_229["nb_sup_dialyse_3_len"] = 3; $rsa_offsets_229["nb_sup_dialyse_4_offset"] = 123; $rsa_offsets_229["nb_sup_dialyse_4_len"] = 3; $rsa_offsets_229["nb_sup_apherese_offset"] = 126; $rsa_offsets_229["nb_sup_apherese_len"] = 3; $rsa_offsets_229["nb_sup_rap_offset"] = 129; $rsa_offsets_229["nb_sup_rap_len"] = 3; $rsa_offsets_229["nb_sup_ant_offset"] = 132; $rsa_offsets_229["nb_sup_ant_len"] = 3; $rsa_offsets_229["nb_rdth_offset"] = 135; $rsa_offsets_229["nb_rdth_len"] = 1; $rsa_offsets_229["top_valve_aortique_offset"] = 136; $rsa_offsets_229["top_valve_aortique_len"] = 1; $rsa_offsets_229["type_generation_automarique_offset"] = 137; $rsa_offsets_229["type_generation_automarique_len"] = 1; $rsa_offsets_229["nb_sup_hyperbare_offset"] = 145; $rsa_offsets_229["nb_sup_hyperbare_len"] = 3; $rsa_offsets_229["type_prestation_prelevement_organe_offset"] = 153; $rsa_offsets_229["type_prestation_prelevement_organe_len"] = 1; $rsa_offsets_229["nb_sup_rea_offset"] = 154; $rsa_offsets_229["nb_sup_rea_len"] = 3; $rsa_offsets_229["nb_sup_si_offset"] = 157; $rsa_offsets_229["nb_sup_si_len"] = 3; $rsa_offsets_229["nb_sup_stf_offset"] = 160; $rsa_offsets_229["nb_sup_stf_len"] = 3; $rsa_offsets_229["nb_sup_usip_offset"] = 163; $rsa_offsets_229["nb_sup_usip_len"] = 3; $rsa_offsets_229["nb_sup_src_offset"] = 166; $rsa_offsets_229["nb_sup_src_len"] = 3; $rsa_offsets_229["nb_sup_nn1_offset"] = 169; $rsa_offsets_229["nb_sup_nn1_len"] = 3; $rsa_offsets_229["nb_sup_nn2_offset"] = 172; $rsa_offsets_229["nb_sup_nn2_len"] = 3; $rsa_offsets_229["nb_sup_nn3_offset"] = 175; $rsa_offsets_229["nb_sup_nn3_len"] = 3; $rsa_offsets_229["nb_sup_rep_offset"] = 178; $rsa_offsets_229["nb_sup_rep_len"] = 3; $rsa_offsets_229["passage_lit_sp_offset"] = 181; $rsa_offsets_229["passage_lit_sp_len"] = 1; $rsa_offsets_229["type_machine_rdth_offset"] = 182; $rsa_offsets_229["type_machine_rdth_len"] = 1; $rsa_offsets_229["type_dosimetrie_offset"] = 183; $rsa_offsets_229["type_dosimetrie_len"] = 1; $rsa_offsets_229["numero_innovation_offset"] = 184; $rsa_offsets_229["numero_innovation_len"] = 1; $rsa_offsets_229["nombre_ivg_anterieures_offset"] = 0; $rsa_offsets_229["nombre_ivg_anterieures_len"] = 0; $rsa_offsets_229["annee_ivg_precedente_offset"] = 0; $rsa_offsets_229["annee_ivg_precedente_len"] = 0; $rsa_offsets_229["nombre_naissances_vivantes_anterieures_offset"] = 0; $rsa_offsets_229["nombre_naissances_vivantes_anterieures_len"] = 0; $rsa_offsets_229["no_rum_dp_offset"] = 212; $rsa_offsets_229["no_rum_dp_len"] = 2; $rsa_offsets_228["diagnostic_principal_offset"] = 214; $rsa_offsets_228["diagnostic_principal_len"] = 6; $rsa_offsets_228["diagnostic_relie_offset"] = 220; $rsa_offsets_228["diagnostic_relie_len"] = 6; $rsa_offsets_228["nb_das_offset"] = 226; $rsa_offsets_228["nb_das_len"] = 6; } function new_rss($from_no_rss, $oid) { global $rss_array; $from_no_rss = trim($from_no_rss); $rss_array[$from_no_rss] = $oid; } /** * Permet de retrouver le rss_id correspondant à l'import grâce au no_rss * Crée la première fois un tableau de concordance entre rss et no_rss */ function get_rss($from_no_rss) { global $iCTI_connexion; global $rss_array; global $ok_rss_array; global $last_oid; global $last_no_rss; global $import_id; $from_no_rss = trim($from_no_rss); // On crée le tableau no_rss et oid une seuile fois if ($ok_rss_array !== TRUE || $from_no_rss == "*setarray") { $rss_array = array(); $result = $iCTI_connexion->query("SELECT no_rss, oid FROM temp.p_rss WHERE import_id = $import_id "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $no_rss = trim($record["no_rss"]); $oid = $record["oid"]; $rss_array[$no_rss] = $oid; } } $ok_rss_array = TRUE; } $oid = 0; if ($from_no_rss != "*setarray") { if ($from_no_rss == $last_no_rss) { return $last_oid; } if ($ok_rss_array === TRUE) { $oid = @$rss_array[$from_no_rss]; if (get_num($oid) == 0) { $oid = 0; } } } $last_no_rss = $from_no_rss; $last_oid = $oid; return $oid; } function get_sejour_administratif_from_sejour($from_no_sejour_administratif) { global $iCTI_connexion; global $sejour_administratif_array; global $ok_sejour_administratif_array; global $last_oid; global $last_no_sejour_administratif; global $import_id; $from_no_sejour_administratif = trim($from_no_sejour_administratif); if ($ok_sejour_administratif_array !== TRUE || $from_no_sejour_administratif == "*setarray") { $sejour_administratif_array = array(); $result = $iCTI_connexion->query("SELECT no_sejour_administratif, oid FROM pmsi.p_rss WHERE import_id = $import_id "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $no_sejour_administratif = trim($record["no_sejour_administratif"]); $oid = $record["oid"]; $sejour_administratif_array[$no_sejour_administratif] = $oid; } } $ok_sejour_administratif_array = TRUE; } $oid = 0; if ($from_no_sejour_administratif != "*setarray") { if ($from_no_sejour_administratif == $last_no_sejour_administratif) { return $last_oid; } if ($ok_sejour_administratif_array === TRUE) { $oid = @$sejour_administratif_array[$from_no_sejour_administratif]; if (get_num($oid) == 0) { $oid = 0; } } } $last_no_sejour_administratif = $from_no_sejour_administratif; $last_oid = $oid; return $oid; } function get_rss_um($from_rss_id) { global $iCTI_connexion; global $rss_um_array; global $ok_rss_um_array; global $last_um_id; global $last_rss_id_um; global $import_id; $from_rss_id = trim($from_rss_id); if ($ok_rss_um_array !== TRUE || $from_rss_id == "*setarray") { $rss_um_array = array(); $result = $iCTI_connexion->query("SELECT oid, unite_medicale_principale_id FROM pmsi.p_rss WHERE import_id = $import_id "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $oid = trim($record["oid"]); $unite_medicale_principale_id = $record["unite_medicale_principale_id"]; $rss_um_array[$oid] = $unite_medicale_principale_id; } } $ok_rss_um_array = TRUE; } $oid = 0; if ($from_rss_id != "*setarray") { if ($from_rss_id == $last_rss_id_um) { return $last_um_id; } if ($ok_rss_um_array === TRUE) { $oid = @$rss_um_array[$from_rss_id]; if (get_num($oid) == 0) { $oid = 0; } } } $last_rss_id_um = $from_rss_id; $last_um_id = $oid; return $oid; } function get_unite_medicale($from_code) { global $iCTI_connexion; global $unites_medicales_array; global $ok_unites_medicales_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_unites_medicales_array !== TRUE) { $unites_medicales_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_unites_medicales "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $unites_medicales_array[$code] = $oid; } } $ok_unites_medicales_array = TRUE; } $oid = 0; if ($ok_unites_medicales_array === TRUE) { $oid = @$unites_medicales_array[$from_code]; if (get_num($oid) > 0) { } else { $sqlcmd = "INSERT INTO pmsi.t_unites_medicales( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "texte, "; $sqlcmd = $sqlcmd . "type_autorisation "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$type_autorisation' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_unites_medicales WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $unites_medicales_array[$code] = $oid; } } } } return $oid; } function get_mode_entree($from_code) { global $iCTI_connexion; global $modes_entree_array; global $ok_modes_entree_array; $oid = 0; if ($from_code == "") { $oid = $from_code; return $oid; } if ($from_code == "0") { $oid = $from_code; return $oid; } if ($ok_modes_entree_array !== TRUE) { $modes_entree_array = array(); $result = $iCTI_connexion->query("SELECT code, code as oid FROM pmsi.t_modes_entree "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $modes_entree_array[$code] = $oid; } } $ok_modes_entree_array = TRUE; } $oid = 0; if ($ok_modes_entree_array === TRUE) { $oid = @$modes_entree_array[$from_code]; if (trim($oid) != '') { } else { $sqlcmd = "INSERT INTO pmsi.t_modes_entree( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "texte "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, code as oid FROM pmsi.t_modes_entree WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $modes_entree_array[$code] = $oid; } } } } return $oid; } function check_mode_entree($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $modes_entree_array; global $ok_modes_entree_array; $error = ""; $commentaire = ""; $gravite = 0; if ($from_code == "") { return TRUE; } if ($from_code == "0") { return TRUE; } if ($ok_modes_entree_array !== TRUE) { $modes_entree_array = array(); $result = $iCTI_connexion->query("SELECT code, code as oid FROM pmsi.t_modes_entree "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $modes_entree_array[$code] = $oid; } } $ok_modes_entree_array = TRUE; } if ($ok_modes_entree_array === TRUE) { $oid = @$modes_entree_array[$from_code]; if (get_num($oid) == 0) { $gravite = 0; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé"; return FALSE; } } return TRUE; } function get_mode_sortie($from_code) { global $iCTI_connexion; global $modes_sortie_array; global $ok_modes_sortie_array; $oid = 0; if ($from_code == "") { $oid = $from_code; return $oid; } if ($from_code == "0") { $oid = $from_code; return $oid; } if ($ok_modes_sortie_array !== TRUE) { $modes_sortie_array = array(); $result = $iCTI_connexion->query("SELECT code, code as oid FROM pmsi.t_modes_sortie "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $modes_sortie_array[$code] = $oid; } } $ok_modes_sortie_array = TRUE; } $oid = 0; if ($ok_modes_sortie_array === TRUE) { $oid = @$modes_sortie_array[$from_code]; if (get_num($oid) > 0) { } else { $sqlcmd = "INSERT INTO pmsi.t_modes_sortie( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "texte "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, code as oid FROM pmsi.t_modes_sortie WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $modes_sortie_array[$code] = $oid; } } } } return $oid; } function check_mode_sortie($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $modes_sortie_array; global $ok_modes_sortie_array; $error = ""; $commentaire = ""; $gravite = 0; if ($from_code == "") { return TRUE; } if ($from_code == "0") { return TRUE; } if ($ok_modes_sortie_array !== TRUE) { $modes_sortie_array = array(); $result = $iCTI_connexion->query("SELECT code, code as oid FROM pmsi.t_modes_sortie "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $modes_sortie_array[$code] = $oid; } } $ok_modes_sortie_array = TRUE; } if ($ok_modes_sortie_array === TRUE) { $oid = @$modes_sortie_array[$from_code]; if (get_num($oid) == 0) { $gravite = 0; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé"; return FALSE; } } return TRUE; } function get_provenance($from_code) { global $iCTI_connexion; global $provenances_entree_array; global $ok_provenances_entree_array; $oid = "0"; if ($from_code == "") { $oid = $from_code; return $oid; } if ($ok_provenances_entree_array !== TRUE) { $provenances_entree_array = array(); $result = $iCTI_connexion->query("SELECT code, code as oid FROM pmsi.t_provenances_entree "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $provenances_entree_array[$code] = $oid; } } $ok_provenances_entree_array = TRUE; } $oid = ""; if ($ok_provenances_entree_array === TRUE) { $oid = @$provenances_entree_array[$from_code]; if ($oid != "") { } else { $sqlcmd = "INSERT INTO pmsi.t_provenances_entree( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "texte "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, code as oid FROM pmsi.t_provenances_entree WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $provenances_entree_array[$code] = $oid; } } } } return $oid; } function check_provenance($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $provenances_array; global $ok_provenances_array; $error = ""; $commentaire = ""; $gravite = 0; if ($from_code == "") { return TRUE; } if ($ok_provenances_array !== TRUE) { $provenances_array = array(); $result = $iCTI_connexion->query("SELECT code, code as oid FROM pmsi.t_provenances_entree "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $provenances_array[$code] = $oid; } } $ok_provenances_array = TRUE; } if ($ok_provenances_array === TRUE) { $oid = ""; $oid = @$provenances_array[$from_code]; if ($oid == "") { $gravite = 0; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé"; return FALSE; } } return TRUE; } function check_passage_urgences($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $passage_urgences_array; global $ok_passage_urgences_array; $error = ""; $commentaire = ""; $gravite = 0; if ($ok_passage_urgences_array !== TRUE) { $passage_urgences_array = array(); $sqlcmd = "SELECT code, oid FROM pmsi.t_passage_urgences "; $result = $iCTI_connexion->query($sqlcmd); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $passage_urgences_array[$code] = $oid; } } $ok_passage_urgences_array = TRUE; } if ($ok_passage_urgences_array === TRUE) { $oid = @$passage_urgences_array[$from_code]; if (get_num($oid) == 0) { $gravite = 0; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé"; return FALSE; } } return TRUE; } function get_destination($from_code) { global $iCTI_connexion; global $destinations_sortie_array; global $ok_destinations_sortie_array; $oid = "0"; if ($from_code == "") { $oid = $from_code; return $oid; } if ($ok_destinations_sortie_array !== TRUE) { $destinations_sortie_array = array(); $result = $iCTI_connexion->query("SELECT code, code as oid FROM pmsi.t_destinations_sortie "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $destinations_sortie_array[$code] = $oid; } } $ok_destinations_sortie_array = TRUE; } $oid = ""; if ($ok_destinations_sortie_array === TRUE) { $oid = @$destinations_sortie_array[$from_code]; if ($oid != "") { } else { $sqlcmd = "INSERT INTO pmsi.t_destinations_sortie( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "texte "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, code as oid FROM pmsi.t_destinations_sortie WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $destinations_sortie_array[$code] = $oid; } } } } return $oid; } function check_destination($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $destinations_array; global $ok_destinations_array; $error = ""; $commentaire = ""; $gravite = 0; if ($from_code == "") { return TRUE; } if ($ok_destinations_array !== TRUE) { $destinations_array = array(); $result = $iCTI_connexion->query("SELECT code, code as oid FROM pmsi.t_destinations_sortie "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $destinations_array[$code] = $oid; } } $ok_destinations_array = TRUE; } if ($ok_destinations_array === TRUE) { $oid = ""; $oid = @$destinations_array[$from_code]; if ($oid == "") { $gravite = 0; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé"; return FALSE; } } return TRUE; } function get_diagnostic($from_code) { global $iCTI_connexion; global $diagnostics_array; global $ok_diagnostics_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_diagnostics_array !== TRUE) { $diagnostics_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_diagnostics "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $diagnostics_array[$code] = $oid; } } $ok_diagnostics_array = TRUE; } $oid = 0; if ($ok_diagnostics_array === TRUE) { $oid = @$diagnostics_array[$from_code]; if (get_num($oid) > 0) { } else { $sqlcmd = "INSERT INTO pmsi.t_diagnostics( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "texte "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_diagnostics WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $diagnostics_array[$code] = $oid; } } } } return $oid; } function get_code_retour($from_code) { global $iCTI_connexion; global $codes_retour_array; global $ok_code_retour_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_code_retour_array !== TRUE) { $codes_retour_array = array(); $result = $iCTI_connexion->query("SELECT type || code as code, oid FROM pmsi.t_codes_retour_groupeur "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $codes_retour_array[$code] = $oid; } } $ok_code_retour_array = TRUE; } $oid = 0; if ($ok_code_retour_array === TRUE) { $oid = @$codes_retour_array[$from_code]; if (get_num($oid) > 0) { } else { $type = substr($from_code, 0, 1); $code = substr($from_code, 1); $sqlcmd = "INSERT INTO pmsi.t_codes_retour_groupeur( type, code, texte ) VALUES( '$type', '$code', '$from_code' ) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT type || code as code, oid FROM pmsi.t_codes_retour_groupeur WHERE type || code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $codes_retour_array[$code] = $oid; } } } } return $oid; } /* *Retourne le code de modificateur */ function get_modificateur($from_code) { global $iCTI_connexion; global $modificateurs_array; global $ok_modificateurs_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_modificateurs_array !== TRUE) { $modificateurs_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_modificateurs_ccam "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $modificateurs_array[$code] = $oid; } } $ok_modificateurs_array = TRUE; } $oid = 0; if ($ok_modificateurs_array === TRUE) { $oid = @$modificateurs_array[$from_code]; $lenth = strlen ($from_code ); if (get_num($oid) > 0 ) { } else { $sqlcmd = "INSERT INTO pmsi.t_modificateurs_ccam( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "texte, "; $sqlcmd = $sqlcmd . "texte_court "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_modificateurs_ccam WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $modificateurs_array[$code] = $oid; } } } } return $oid; } function check_modificateur($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $modificateurs_array; global $ok_modificateurs_array ; $error = ""; $commentaire = ""; $gravite = 0; if (strlen($from_code) >1) { $gravite = 4; $error = "Code $from_code incorrect (taille du modificateur incorrecte)"; return FALSE; } if ($ok_modificateurs_array !== TRUE) { $modificateurs_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_modificateurs_ccam "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $modificateurs_array[$code] = $oid; } } $ok_modificateurs_array = TRUE; } if ($ok_modificateurs_array === TRUE ) { $oid = @$modificateurs_array[$from_code]; if (get_num($oid) == 0 && $from_code != "") { $res = get_modificateur($from_code);// appel de la fonction get_modificateur avec le modificateur d'indice i $modificateurs_array[$from_code] = 99999999; $gravite = 1 ; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé"; return FALSE; } } return TRUE; } /* * Retourne un tableau contenant les codes des modes d'hospitalisation */ function get_modes_hospitalisation() { global $iCTI_connexion; $modes_hospitalisation = array(); $result = $iCTI_connexion->query(" SELECT code FROM base.t_modes_hospitalisation "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $modes_hospitalisation[] = trim($record["code"]); } } return $modes_hospitalisation; } /* * Retourne un tableau contenant les unités médicales */ function get_unites_medicales() { global $iCTI_connexion; $unites_medicales = array(); $result = $iCTI_connexion->query(" SELECT code, type_autorisation, nb_lits, date_effet_autorisation, mode_hospitalisation FROM pmsi.t_unites_medicales "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $unite_medicale = array(); $unite_medicale['type_autorisation'] = trim($record["type_autorisation"]); $unite_medicale['nb_lits'] = trim($record["nb_lits"]) + 0; $unite_medicale['date_effet_autorisation'] = trim($record["date_effet_autorisation"]); $unite_medicale['mode_hospitalisation'] = trim($record["mode_hospitalisation"]); $unites_medicales[trim($record["code"])] = $unite_medicale; } } return $unites_medicales; } /* * Retourne un tableau contenant les types d'autorisation d'unités médicales */ function get_types_autorisation() { global $iCTI_connexion; $types_autorisation = array(); $result = $iCTI_connexion->query(" SELECT code FROM pmsi.t_types_autorisations ORDER BY 1"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $types_autorisation[] = $record["code"]; } } return $types_autorisation; } /** * Donne l'oid d'un grand régime d'assurance dont le code est passé en paramètre. Si le code n'existe pas, il est ajouté en base */ function get_regime($from_code) { global $iCTI_connexion; global $regime_array; global $ok_regime_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_regime_array !== TRUE) { $regime_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_grands_regimes"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $regime_array[$code] = $oid; } } $ok_regime_array = TRUE; } $oid = 0; if ($ok_regime_array === TRUE) { if (!array_key_exists($from_code, $regime_array)) { $sqlcmd = "INSERT INTO base.t_grands_regimes( code, texte, code_original ) VALUES( '$from_code', '$from_code', '$from_code' ) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_grands_regimes WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $regime_array[$code] = $oid; } } } else { $oid = $regime_array[$from_code]; } } return $oid; } /** * Donne l'oid d'un justificatif d'exonération du Ticket Modérateur dont le code est passé en paramètre. Si le code n'existe pas, il est ajouté en base */ function get_exoneration_tm($from_code) { global $iCTI_connexion; global $exoneration_tm_array; global $ok_exoneration_tm_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_exoneration_tm_array !== TRUE) { $exoneration_tm_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_exoneration_tm"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $exoneration_tm_array[$code] = $oid; } } $ok_exoneration_tm_array = TRUE; } $oid = 0; if ($ok_exoneration_tm_array === TRUE) { if (!array_key_exists($from_code, $exoneration_tm_array)) { $sqlcmd = "INSERT INTO base.t_exoneration_tm( code, texte ) VALUES( '$from_code', '$from_code' ) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_exoneration_tm WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $exoneration_tm_array[$code] = $oid; } } } else { $oid = $exoneration_tm_array[$from_code]; } } return $oid; } /** * Donne l'oid de la facturation des 18 euros pour une facture dont le code (de la facturation 18 euros) est passé en paramètre. Si le code n'existe pas, il est ajouté en base */ function get_facturation_18euros($from_code) { global $iCTI_connexion; global $facturation_18euros_array; global $ok_facturation_18euros_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_facturation_18euros_array !== TRUE) { $facturation_18euros_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_facturation_18euros"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $facturation_18euros_array[$code] = $oid; } } $ok_facturation_18euros_array = TRUE; } $oid = 0; if ($ok_facturation_18euros_array === TRUE) { if (!array_key_exists($from_code, $facturation_18euros_array)) { $sqlcmd = "INSERT INTO base.t_facturation_18euros( code, texte ) VALUES( '$from_code', '$from_code' ) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_facturation_18euros WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $facturation_18euros_array[$code] = $oid; } } } else { $oid = $facturation_18euros_array[$from_code]; } } return $oid; } /** * Donne l'oid d'une nature de prise en charge dont le code est passé en paramètre. Si le code n'existe pas, il est ajouté en base */ function get_nature_pec($from_code) { global $iCTI_connexion; global $nature_pec_array; global $ok_nature_pec_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_nature_pec_array !== TRUE) { $nature_pec_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_nature_assurance"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $nature_pec_array[$code] = $oid; } } $ok_nature_pec_array = TRUE; } $oid = 0; if ($ok_nature_pec_array === TRUE) { if (!array_key_exists($from_code, $nature_pec_array)) { $sqlcmd = "INSERT INTO base.t_nature_assurance( code, texte ) VALUES( '$from_code', '$from_code' ) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_nature_assurance WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $nature_pec_array[$code] = $oid; } } } else { $oid = $nature_pec_array[$from_code]; } } return $oid; } function get_pec($from_code) { global $iCTI_connexion; global $pec_array; global $ok_pec_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_pec_array !== TRUE) { $pec_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_pec"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $pec_array[$code] = $oid; } } $ok_pec_array = TRUE; } $oid = 0; if ($ok_pec_array === TRUE) { if (!array_key_exists($from_code, $pec_array)) { $sqlcmd = "INSERT INTO base.t_pec( code, texte ) VALUES( '$from_code', '$from_code' ) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_pec WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $pec_array[$code] = $oid; } } } else { $oid = $pec_array[$from_code]; } } return $oid; } function get_pec_fj($from_code) { global $iCTI_connexion; global $pec_fj_array; global $ok_pec_fj_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_pec_fj_array !== TRUE) { $pec_fj_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_pec_fj"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $pec_fj_array[$code] = $oid; } } $ok_pec_fj_array = TRUE; } $oid = 0; if ($ok_pec_fj_array === TRUE) { if (!array_key_exists($from_code, $pec_fj_array)) { $sqlcmd = "INSERT INTO base.t_pec_fj( code, texte ) VALUES( '$from_code', '$from_code' ) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_pec_fj WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $pec_fj_array[$code] = $oid; } } } else { $oid = $pec_fj_array[$from_code]; } } return $oid; } function get_type_uf_consultation($from_code) { global $iCTI_connexion; global $type_uf_consultation_array; global $ok_type_uf_consultation_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_type_uf_consultation_array !== TRUE) { $type_uf_consultation_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_type_uf_consultation"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $type_uf_consultation_array[$code] = $oid; } } $ok_type_uf_consultation_array = TRUE; } $oid = 0; if ($ok_type_uf_consultation_array === TRUE) { if (!array_key_exists($from_code, $type_uf_consultation_array)) { $sqlcmd = "INSERT INTO pmsi.t_type_uf_consultation( code, texte ) VALUES( '$from_code', '$from_code' ) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_type_uf_consultation WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $type_uf_consultation_array[$code] = $oid; } } } else { $oid = $type_uf_consultation_array[$from_code]; } } return $oid; } function get_type_ucd($from_code) { global $iCTI_connexion; global $type_ucd_array; global $ok_type_ucd_array; // transforme le tpe de prestation fichcomp en code de t_type_ucd switch ($from_code) { case "09" : $from_code = "ATU"; break; case "10" : $from_code = "THROMBO"; break; default : $from_code = "SUS"; break; } $oid = 0; if ($from_code == "") { return $oid; } if ($ok_type_ucd_array !== TRUE) { $type_ucd_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_type_ucd"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $type_ucd_array[$code] = $oid; } } $ok_type_ucd_array = TRUE; } $oid = 0; if ($ok_type_ucd_array === TRUE && array_key_exists($from_code, $type_ucd_array)) { $oid = $type_ucd_array[$from_code]; } return $oid; } function get_conversion_hp_hc($from_code) { global $iCTI_connexion; global $conversion_array; global $ok_conversion_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_conversion_array !== TRUE) { $conversion_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_conversion_hp_hc"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $conversion_array[$code] = $oid; } } $ok_conversion_array = TRUE; } $oid = 0; if ($ok_conversion_array === TRUE && array_key_exists($from_code, $conversion_array)) { $oid = $conversion_array[$from_code]; } return $oid; } function get_raac($from_code) { global $iCTI_connexion; global $raac_array; global $ok_raac_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_raac_array !== TRUE) { $raac_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_raac"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $raac_array[$code] = $oid; } } $ok_raac_array = TRUE; } $oid = 0; if ($ok_raac_array === TRUE && array_key_exists($from_code, $raac_array)) { $oid = $raac_array[$from_code]; } return $oid; } function get_np($from_code) { global $iCTI_connexion; global $np_aray; global $ok_np_aray; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_np_aray !== TRUE) { $np_aray = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_np"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $np_aray[$code] = $oid; } } $ok_np_aray = TRUE; } $oid = 0; if ($ok_np_aray === TRUE && array_key_exists($from_code, $np_aray)) { $oid = $np_aray[$from_code]; } return $oid; } function get_rescrit_tarif($from_code) { global $iCTI_connexion; global $rescrit_tarif_array; global $ok_rescrit_tarif_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_rescrit_tarif_array !== TRUE) { $rescrit_tarif_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_rescrit_tarif"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $rescrit_tarif_array[$code] = $oid; } } $ok_rescrit_tarif_array = TRUE; } $oid = 0; if ($ok_rescrit_tarif_array === TRUE && array_key_exists($from_code, $rescrit_tarif_array)) { $oid = $rescrit_tarif_array[$from_code]; } return $oid; } function get_adm_prod_reshospi($from_code) { global $iCTI_connexion; global $adm_prod_reshospi_array; global $ok_adm_prod_reshospi_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_adm_prod_reshospi_array !== TRUE) { $adm_prod_reshospi_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_adm_prod_reshospi"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $adm_prod_reshospi_array[$code] = $oid; } } $ok_adm_prod_reshospi_array = TRUE; } $oid = 0; if ($ok_adm_prod_reshospi_array === TRUE && array_key_exists($from_code, $adm_prod_reshospi_array)) { $oid = $adm_prod_reshospi_array[$from_code]; } return $oid; } function get_contexte_pat($from_code) { global $iCTI_connexion; global $contexte_pat_array; global $ok_contexte_pat_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_contexte_pat_array !== TRUE) { $contexte_pat_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_contexte_pat"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $contexte_pat_array[$code] = $oid; } } $ok_contexte_pat_array = TRUE; } $oid = 0; if ($ok_contexte_pat_array === TRUE && array_key_exists($from_code, $contexte_pat_array)) { $oid = $contexte_pat_array[$from_code]; } return $oid; } function get_nb_interventions($from_code) { global $iCTI_connexion; global $nb_interventions_array; global $ok_nb_interventions_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_nb_interventions_array !== TRUE) { $nb_interventions_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_nb_interventions"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $nb_interventions_array[$code] = $oid; } } $ok_nb_interventions_array = TRUE; } $oid = 0; if ($ok_nb_interventions_array === TRUE && array_key_exists($from_code, $nb_interventions_array)) { $oid = $nb_interventions_array[$from_code]; } return $oid; } function get_type_contrat_oc($from_code) { global $iCTI_connexion; global $type_contrat_oc_array; global $ok_type_contrat_oc_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_type_contrat_oc_array !== TRUE) { $type_contrat_oc_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_type_contrat_oc"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $type_contrat_oc_array[$code] = $oid; } } $ok_type_contrat_oc_array = TRUE; } $oid = 0; if ($ok_type_contrat_oc_array === TRUE) { if (!array_key_exists($from_code, $type_contrat_oc_array)) { $sqlcmd = "INSERT INTO base.t_type_contrat_oc( code, texte ) VALUES( '$from_code', '$from_code' ) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_type_contrat_oc WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $type_contrat_oc_array[$code] = $oid; } } } else { $oid = $type_contrat_oc_array[$from_code]; } } return $oid; } function get_motif_non_facturation($from_code) { global $iCTI_connexion; global $motif_non_facturation_array; global $ok_motif_non_facturation_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_motif_non_facturation_array !== TRUE) { $motif_non_facturation_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_motif_non_facturation"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $motif_non_facturation_array[$code] = $oid; } } $ok_motif_non_facturation_array = TRUE; } $oid = 0; if ($ok_motif_non_facturation_array === TRUE) { if (!array_key_exists($from_code, $motif_non_facturation_array)) { $sqlcmd = "INSERT INTO base.t_motif_non_facturation( code, texte ) VALUES( '$from_code', '$from_code' ) "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_motif_non_facturation WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $motif_non_facturation_array[$code] = $oid; } } } else { $oid = $motif_non_facturation_array[$from_code]; } } return $oid; } function check_diagnostic($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $diagnostics_array; global $ok_diagnostics_array; $error = ""; $commentaire = ""; $gravite = 0; if (substr($from_code , 0, 1) < 'A' || substr($from_code , 0, 1) > 'Z') { $gravite = 4; $error = "Code $from_code incorrect (doit commencer par une lettre)"; return FALSE; } if ($ok_diagnostics_array !== TRUE) { $diagnostics_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_diagnostics "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $diagnostics_array[$code] = $oid; } } $ok_diagnostics_array = TRUE; } if ($ok_diagnostics_array === TRUE) { $oid = @$diagnostics_array[$from_code]; if (get_num($oid) == 0) { $gravite = 0; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé"; return FALSE; } } return TRUE; } function get_specialite_medecin($from_code) { global $iCTI_connexion; global $specialites_medecin_array; global $ok_specialites_medecin_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_specialites_medecin_array !== TRUE) { $specialites_medecin_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_specialites_medecin "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $specialites_medecin_array[$code] = $oid; } } $ok_specialites_medecin_array = TRUE; } $oid = 0; if ($ok_specialites_medecin_array === TRUE) { $oid = @$specialites_medecin_array[$from_code]; if (get_num($oid) > 0) { } else { $sqlcmd = "INSERT INTO pmsi.t_specialites_medecin( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "texte, "; $sqlcmd = $sqlcmd . "type "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_specialites_medecin WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $specialites_medecin_array[$code] = $oid; } } } } return $oid; } function check_specialite_medecin($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $specialites_medecin_array; global $ok_specialites_medecin_array; $error = ""; $commentaire = ""; $gravite = 0; if ($ok_specialites_medecin_array !== TRUE) { $specialites_medecin_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_specialites_medecin "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $specialites_medecin_array[$code] = $oid; } } $ok_specialites_medecin_array = TRUE; } if ($ok_specialites_medecin_array === TRUE) { $oid = @$specialites_medecin_array[$from_code]; if (get_num($oid) == 0) { $gravite = 0; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé"; return FALSE; } } return TRUE; } function get_medecin($from_code) { global $iCTI_connexion; global $medecins_array; global $ok_medecins_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_medecins_array !== TRUE) { $medecins_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_medecins "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $medecins_array[$code] = $oid; } } $ok_medecins_array = TRUE; } $oid = 0; if ($ok_medecins_array === TRUE) { $oid = @$medecins_array[$from_code]; $from_code = toSQL($from_code); if (get_num($oid) > 0) { } else { $sqlcmd = "INSERT INTO pmsi.t_medecins( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "nom, "; $sqlcmd = $sqlcmd . "prenom, "; $sqlcmd = $sqlcmd . "specialite_id, "; $sqlcmd = $sqlcmd . "no_adeli, "; $sqlcmd = $sqlcmd . "statut "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'', "; $sqlcmd = $sqlcmd . "0, "; $sqlcmd = $sqlcmd . "'', "; $sqlcmd = $sqlcmd . "'' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_medecins WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $medecins_array[$code] = $oid; } } } } return $oid; } function get_comite_medical($from_code) { global $iCTI_connexion; global $comites_medicaux_array; global $ok_comites_medicaux_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_comites_medicaux_array !== TRUE) { $comites_medicaux_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_comites_medicaux "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $comites_medicaux_array[$code] = $oid; } } $ok_comites_medicaux_array = TRUE; } $oid = 0; if ($ok_comites_medicaux_array === TRUE) { $oid = @$comites_medicaux_array[$from_code]; if (get_num($oid) > 0) { } else { $sqlcmd = "INSERT INTO pmsi.t_comites_medicaux( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "texte "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_comites_medicaux WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $comites_medicaux_array[$code] = $oid; } } } } return $oid; } function get_code_postal($from_code) { global $iCTI_connexion; global $codes_postaux_array; global $ok_codes_postaux_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_codes_postaux_array !== TRUE) { $codes_postaux_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_codes_postaux "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $codes_postaux_array[$code] = $oid; } } $ok_codes_postaux_array = TRUE; } $oid = 0; if ($ok_codes_postaux_array === TRUE) { $oid = @$codes_postaux_array[$from_code]; if (get_num($oid) > 0) { } else { $oid = 0; } } return $oid; } function get_code_geographique_pmsi($from_code) { global $iCTI_connexion; global $codes_geographiques_pmsi_array; global $ok_codes_geographiques_pmsi_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_codes_geographiques_pmsi_array !== TRUE) { $codes_geographiques_pmsi_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_codes_geographiques_pmsi "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $codes_geographiques_pmsi_array[$code] = $oid; } } $ok_codes_geographiques_pmsi_array = TRUE; } $oid = 0; if ($ok_codes_geographiques_pmsi_array === TRUE) { $oid = @$codes_geographiques_pmsi_array[$from_code]; if (get_num($oid) < 1) { $oid = 0; } } return $oid; } function get_prestation($from_code) { global $iCTI_connexion; global $prestations_array; global $ok_prestations_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_prestations_array !== TRUE) { $prestations_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_prestations "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $prestations_array[$code] = $oid; } } $ok_prestations_array = TRUE; } $oid = 0; if ($ok_prestations_array === TRUE) { $oid = @$prestations_array[$from_code]; if (get_num($oid) > 0) { } else { $sqlcmd = "INSERT INTO pmsi.t_prestations( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "texte, "; $sqlcmd = $sqlcmd . "texte_court "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_prestations WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $prestations_array[$code] = $oid; } } } } return $oid; } function check_medecin($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $medecins_array; global $ok_medecins_array; $error = ""; $commentaire = ""; $gravite = 0; if (trim($from_code) == "") { $gravite = 4; $error = "Code médecin obligatoire"; return FALSE; } if ($ok_medecins_array !== TRUE) { $medecins_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_medecins "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $medecins_array[$code] = $oid; } } $ok_medecins_array = TRUE; } if ($ok_medecins_array === TRUE) { $oid = @$medecins_array[$from_code]; if (get_num($oid) == 0) { $gravite = 0; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé avec des valeurs par défaut"; return FALSE; } } return TRUE; } function check_prestation($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $prestations_array; global $ok_prestations_array; $error = ""; $commentaire = ""; $gravite = 0; if (trim($from_code) == "") { $gravite = 4; $error = "Code prestation obligatoire"; return FALSE; } if ($ok_prestations_array !== TRUE) { $prestations_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_prestations "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $prestations_array[$code] = $oid; } } $ok_prestations_array = TRUE; } if ($ok_prestations_array === TRUE) { $oid = @$prestations_array[$from_code]; if (get_num($oid) == 0) { $gravite = 0; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé"; return FALSE; } } return TRUE; } function get_ghm($from_code) { global $iCTI_connexion; global $ghms_array; global $ok_ghms_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_ghms_array !== TRUE) { $ghms_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_ghm "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $ghms_array[$code] = $oid; } } $ok_ghms_array = TRUE; } $oid = 0; // retourne l'oid 0 (Non renseigné) si le code GHM est mal formaté if (strlen(trim($from_code)) < 6) return $oid; if ($ok_ghms_array === TRUE) { $oid = @$ghms_array[$from_code]; if (get_num($oid) > 0) { } else { $sqlcmd = "INSERT INTO pmsi.t_ghm( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "texte, "; $sqlcmd = $sqlcmd . "severite "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'*' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_ghm WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $ghms_array[$code] = $oid; } } } } return $oid; } function check_ghm($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $ghms_array; global $ok_ghms_array; $error = ""; $commentaire = ""; $gravite = 0; if (strlen($from_code) != 6) { $gravite = 4; $error = "Code $from_code incorrect (longueur 6 obligatoire)"; return FALSE; } // CMD ? if (! check_cmd(substr($from_code, 0, 2), $wgravite, $werreur)) { $gravite = 4; $error = "Code $from_code incorrect (CMD incorrecte)"; return FALSE; } if ($ok_ghms_array !== TRUE) { $ghms_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_ghm "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $ghms_array[$code] = $oid; } } $ok_ghms_array = TRUE; } if ($ok_ghms_array === TRUE) { $oid = @$ghms_array[$from_code]; if (get_num($oid) == 0) { $gravite = 4; $error = "Code $from_code inexistant"; $commentaire = "Ce code ne peut être créé"; return FALSE; } } return TRUE; } function check_cmd($from_code, &$gravite, &$error) { global $iCTI_connexion; global $cmds_array; global $ok_cmds_array; $error = ""; $gravite = 0; if (strlen($from_code) != 2) { $gravite = 4; $error = "Code $from_code incorrect (longueur 2 obligatoire)"; return FALSE; } if ($ok_cmds_array !== TRUE) { $cmds_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_cmd "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $cmds_array[$code] = $oid; } } $ok_cmds_array = TRUE; } if ($ok_cmds_array === TRUE) { $oid = @$cmds_array[$from_code]; if (get_num($oid) == 0) { $gravite = 4; $error = "Code $from_code inexistant"; return FALSE; } } return TRUE; } function get_ghs($from_code) { global $iCTI_connexion; global $ghss_array; global $ok_ghss_array; $oid = 0; $from_code = ltrim($from_code, '0'); if ($from_code == "") { return $oid; } // if (! controle_check_num($from_code,0,FALSE,$werreur,$wcommentaire)) { // return $oid; // } $from_code = ltrim($from_code, '0'); if ($ok_ghss_array !== TRUE) { $ghss_array = array(); $result = $iCTI_connexion->query("SELECT code_text, oid FROM pmsi.t_ghs UNION SELECT code::text AS code_text, oid FROM pmsi.t_ghs WHERE code <> code_text "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code_text"]); $oid = $record["oid"]; $ghss_array[$code] = $oid; } } $ok_ghss_array = TRUE; } $oid = 0; if ($ok_ghss_array === TRUE) { $oid = @$ghss_array[$from_code]; if (get_num($oid) > 0) { } else { $sqlcmd = "INSERT INTO pmsi.t_ghs( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "code_text, "; $sqlcmd = $sqlcmd . "texte "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code_text, oid FROM pmsi.t_ghs WHERE code_text = $from_code"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code_text"]); $oid = $record["oid"]; $ghss_array[$code] = $oid; } } } } return $oid; } function check_ghs($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $ghss_array; global $ok_ghss_array; $error = ""; $commentaire = ""; $gravite = 0; if ($from_code == "0000") { return TRUE; } else { $from_code = ltrim($from_code, '0'); } // Désactivé car il existe des codes GHS non numériques (I01, D24, ...) // if (! controle_check_num($from_code,0,FALSE,$werreur,$wcommentaire)) { // $gravite = 4; // $error = "Code $from_code incorrect (non numérique)"; // return FALSE; // } // if (strlen($from_code) < 4) { // $from_code = "0$from_code"; // } // if (strlen($from_code) < 4) { // $from_code = "0$from_code"; // } // if (strlen($from_code) < 4) { // $from_code = "0$from_code"; // } // if (strlen($from_code) != 4) { // $gravite = 4; // $error = "Code $from_code incorrect (longueur 4 obligatoire)"; // return FALSE; // } if ($ok_ghss_array !== TRUE) { $ghss_array = array(); $result = $iCTI_connexion->query("SELECT code_text, oid FROM pmsi.t_ghs "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code_text"]); $oid = $record["oid"]; $ghss_array[$code] = $oid; } } $ok_ghss_array = TRUE; } if ($ok_ghss_array === TRUE) { $oid = @$ghss_array[$from_code]; if (get_num($oid) == 0) { $gravite = 0; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé"; return FALSE; } } return TRUE; } function get_acte($from_code) { global $iCTI_connexion; global $actes_array; global $ok_actes_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_actes_array !== TRUE) { $actes_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_actes "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $actes_array[$code] = $oid; } } $ok_actes_array = TRUE; } $oid = 0; if ($ok_actes_array === TRUE) { $oid = @$actes_array[$from_code]; if (get_num($oid) > 0) { } else { $sqlcmd = "INSERT INTO pmsi.t_actes( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "texte, "; $sqlcmd = $sqlcmd . "texte_court, "; $sqlcmd = $sqlcmd . "nomenclature "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'CCAM' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_actes WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $actes_array[$code] = $oid; } } } } return $oid; } function check_acte($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $actes_array; global $ok_actes_array; $error = ""; $commentaire = ""; $gravite = 0; if (strlen($from_code) != 7 && strlen($from_code) != 10) { $gravite = 4; $error = "Code $from_code incorrect (longueur 7 obligatoire ou 10 si CCAM descriptive)"; return FALSE; } if ($ok_actes_array !== TRUE) { $actes_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_actes "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $actes_array[$code] = $oid; } } $ok_actes_array = TRUE; } if ($ok_actes_array === TRUE) { $oid = @$actes_array[$from_code]; if (get_num($oid) == 0) { $gravite = 0; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé"; return FALSE; } } return TRUE; } function check_regime($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $regime_array; global $ok_regime_array; $error = ""; $commentaire = ""; $gravite = 0; if ($ok_regime_array !== TRUE) { $regime_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_grands_regimes"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $regime_array[$code] = $oid; } } $ok_regime_array = TRUE; } if ($ok_regime_array === TRUE) { $oid = @$regime_array[$from_code]; if (get_num($oid) == 0) { $gravite = 0; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé"; return FALSE; } } return TRUE; } function check_exoneration_tm($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $exoneration_tm_array; global $ok_exoneration_tm_array; $error = ""; $commentaire = ""; $gravite = 0; if ($ok_exoneration_tm_array !== TRUE) { $exoneration_tm_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_exoneration_tm"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $exoneration_tm_array[$code] = $oid; } } $ok_exoneration_tm_array = TRUE; } if ($ok_exoneration_tm_array === TRUE) { $oid = @$exoneration_tm_array[$from_code]; if (get_num($oid) == 0) { $gravite = 0; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé"; return FALSE; } } return TRUE; } function check_nature_pec($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $nature_pec_array; global $ok_nature_pec_array; $error = ""; $commentaire = ""; $gravite = 0; if ($ok_nature_pec_array !== TRUE) { $nature_pec_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_nature_assurance"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $nature_pec_array[$code] = $oid; } } $ok_nature_pec_array = TRUE; } if ($ok_nature_pec_array === TRUE) { $oid = @$nature_pec_array[$from_code]; if (get_num($oid) == 0) { $gravite = 0; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé"; return FALSE; } } return TRUE; } function get_lpp($from_code) { global $iCTI_connexion; global $lpp_array; global $ok_lpp_array; $oid = 0; if ($from_code == "") { return $oid; } if ($ok_lpp_array !== TRUE) { $lpp_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_lpp "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $lpp_array[$code] = $oid; } } $ok_lpp_array = TRUE; } $oid = 0; if ($ok_lpp_array === TRUE) { $oid = @$lpp_array[$from_code]; if (get_num($oid) > 0) { } else { $sqlcmd = "INSERT INTO pmsi.t_lpp( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "texte, "; $sqlcmd = $sqlcmd . "texte_court "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_lpp WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $lpp_array[$code] = $oid; } } } } return $oid; } function check_lpp($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $lpps_array; global $ok_lpps_array; $error = ""; $commentaire = ""; $gravite = 0; if ($ok_lpps_array !== TRUE) { $lpps_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_lpp "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $lpps_array[$code] = $oid; } } $ok_lpps_array = TRUE; } if ($ok_lpps_array === TRUE) { $oid = @$lpps_array[get_num($from_code)]; if (get_num($oid) == 0) { $gravite = 0; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé"; return FALSE; } } return TRUE; } function get_ucd($from_code) { global $iCTI_connexion; global $ucd_array; global $ok_ucd_array; $oid = 0; if ($from_code == "") { return $oid; } $from_code = trim(get_num($from_code)); if ($ok_ucd_array !== TRUE) { $ucd_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_ucd "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $ucd_array[$code] = $oid; } } $ok_ucd_array = TRUE; } $oid = 0; if ($ok_ucd_array === TRUE) { $oid = @$ucd_array[$from_code]; if (get_num($oid) > 0) { } else { $sqlcmd = "INSERT INTO pmsi.t_ucd( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "texte, "; $sqlcmd = $sqlcmd . "texte_court "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_ucd WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $ucd_array[$code] = $oid; } } } } return $oid; } function get_finess($from_code) { global $iCTI_connexion; global $fin_array; global $ok_fin_array; $oid = 0; if ($from_code == "" || get_num($from_code) == 0) { return $oid; } $from_code = str_pad(trim(get_num($from_code)), 9, "0", STR_PAD_LEFT); if ($ok_fin_array !== TRUE) { $fin_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_etablissements "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $fin_array[$code] = $oid; } } $ok_fin_array = TRUE; } $oid = 0; if ($ok_fin_array === TRUE) { $oid = @$fin_array[$from_code]; if (get_num($oid) > 0) { } else { $sqlcmd = "INSERT INTO base.t_etablissements( "; $sqlcmd = $sqlcmd . "code, "; $sqlcmd = $sqlcmd . "texte, "; $sqlcmd = $sqlcmd . "texte_court "; $sqlcmd = $sqlcmd . ") "; $sqlcmd = $sqlcmd . "VALUES( "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code', "; $sqlcmd = $sqlcmd . "'$from_code' "; $sqlcmd = $sqlcmd . ") "; $toResult = execute_sql($sqlcmd, $nbE, $nbW ); $result = $iCTI_connexion->query("SELECT code, oid FROM base.t_etablissements WHERE code = '$from_code'"); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = trim($record["code"]); $oid = $record["oid"]; $fin_array[$code] = $oid; } } } } return $oid; } function check_ucd($from_code, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; global $ucds_array; global $ok_ucds_array; $error = ""; $commentaire = ""; $gravite = 0; $from_code = get_num($from_code); if ($ok_ucds_array !== TRUE) { $ucds_array = array(); $result = $iCTI_connexion->query("SELECT code, oid FROM pmsi.t_ucd "); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $ok = TRUE; $code = get_num(trim($record["code"])); $oid = $record["oid"]; $ucds_array[$code] = $oid; } } $ok_ucds_array = TRUE; } if ($ok_ucds_array === TRUE) { $oid = @$ucds_array[get_num($from_code)]; if (get_num($oid) == 0) { $gravite = 0; $error = "Code $from_code inexistant"; $commentaire = "Ce code sera créé"; return FALSE; } } return TRUE; } function check_complog_fichcomp($buffer, &$gravite, &$error, &$commentaire) { global $iCTI_connexion; $error = ""; $commentaire = ""; $gravite = 0; $bufferx = str_replace(" ","",$buffer); $bufferx = str_replace(";","",$bufferx); $sqlcmd = "SELECT data FROM w_out_complog WHERE substr(replace(replace(data,';',''),' ',''),10,2) IN ('02','06','09','15') AND '" . trim($bufferx) . "' LIKE '%' || replace(replace(data,';',''),' ','') || '%'"; $result = $iCTI_connexion->query($sqlcmd); $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = pg_fetch_array($result); if ($record != FALSE) { $gravite = 1; $error = "La ligne n'est pas acceptée par GENRSA"; $commentaire = ""; return FALSE; } } return TRUE; } function sqlDate($BUF_date) { $date_AAAAMMJJ = get_date_AAAAMMJJ($BUF_date); $year = substr($date_AAAAMMJJ, 0, 4); $month = substr($date_AAAAMMJJ, 4, 2); $day = substr($date_AAAAMMJJ, 6, 2); if (floatval($year) < 1850) { $year = 1962; } $sqlDate = "$year$month$day"; return $sqlDate; } function generation_donnees_complementaires($workschema="temp", $node="PMSICOMPLEMENTS") { global $ENV_PMSIPROVIDER; global $ENV_PMSIPROVIDER2; global $ENV_ADMPROVIDER; $w_ENV_PMSIPROVIDER = $ENV_PMSIPROVIDER; $w_ENV_ADMPROVIDER = $ENV_ADMPROVIDER; if ($ENV_PMSIPROVIDER2 != ''){ logInfoMsg("Traitement complémentaire ancien prestataire $ENV_PMSIPROVIDER2"); switch($ENV_PMSIPROVIDER2) { case "cegi" : generation_donnees_complementaires_execute($workschema, $node, "CEGI"); break; case "clinicom" : generation_donnees_complementaires_execute($workschema, $node, "CLINICOM"); break; case "cora" : generation_donnees_complementaires_execute($workschema, $node, "CORA"); break; case "csis" : generation_donnees_complementaires_execute($workschema, $node, "CSIS"); break; case "hemat2a" : generation_donnees_complementaires_execute($workschema, $node, "HEMAT2A"); break; case "r2i" : case "hm" : generation_donnees_complementaires_execute($workschema, $node, "HM"); break; case "mipih" : generation_donnees_complementaires_execute($workschema, $node, "MIPIH"); break; case "orbis" : generation_donnees_complementaires_execute($workschema, $node, "ORBIS"); break; case "sim" : generation_donnees_complementaires_execute($workschema, $node, "SIM"); break; case "qsp" : generation_donnees_complementaires_execute($workschema, $node, "QSP"); break; case "shs" : generation_donnees_complementaires_execute($workschema, $node, "SHS"); break; case "sigems" : generation_donnees_complementaires_execute($workschema, $node, "SIGEMS"); break; case "sigems2" : generation_donnees_complementaires_execute($workschema, $node, "SIGEMS2"); break; case "web100t" : if ($ENV_PMSIPROVIDER2 != "mipih" && $ENV_PMSIPROVIDER2 != "shs") { generation_donnees_complementaires_execute($workschema, $node, "WEB100T"); } break; case "web100t2" : generation_donnees_complementaires_execute($workschema, $node, "WEB100T2"); break; case "baclessepmsi" : generation_donnees_complementaires_execute($workschema, $node, "BACLESSEPMSI"); break; case "mederi" : generation_donnees_complementaires_execute($workschema, $node, "MEDERI"); break; case "evolucare_opale" : generation_donnees_complementaires_execute($workschema, $node, "EVOLUCARE_OPALE"); break; default : logWarnMsg('Traitement complémentaire non trouvé.'); } } logInfoMsg("Traitement complémentaire prestataire $w_ENV_PMSIPROVIDER"); switch($w_ENV_PMSIPROVIDER) { case "cegi" : generation_donnees_complementaires_execute($workschema, $node, "CEGI"); break; case "clinicom" : generation_donnees_complementaires_execute($workschema, $node, "CLINICOM"); break; case "cora" : generation_donnees_complementaires_execute($workschema, $node, "CORA"); break; case "csis" : generation_donnees_complementaires_execute($workschema, $node, "CSIS"); break; case "hemat2a" : generation_donnees_complementaires_execute($workschema, $node, "HEMAT2A"); break; case "r2i" : case "hm" : generation_donnees_complementaires_execute($workschema, $node, "HM"); break; case "mipih" : generation_donnees_complementaires_execute($workschema, $node, "MIPIH"); break; case "orbis" : generation_donnees_complementaires_execute($workschema, $node, "ORBIS"); break; case "sim" : generation_donnees_complementaires_execute($workschema, $node, "SIM"); break; case "qsp" : generation_donnees_complementaires_execute($workschema, $node, "QSP"); break; case "shs" : generation_donnees_complementaires_execute($workschema, $node, "SHS"); break; case "sigems" : generation_donnees_complementaires_execute($workschema, $node, "SIGEMS"); break; case "sigems2" : generation_donnees_complementaires_execute($workschema, $node, "SIGEMS2"); break; case "web100t" : if ($w_ENV_ADMPROVIDER != "mipih" && $w_ENV_ADMPROVIDER != "shs") { generation_donnees_complementaires_execute($workschema, $node, "WEB100T"); } break; case "web100t2" : generation_donnees_complementaires_execute($workschema, $node, "WEB100T2"); break; case "baclessepmsi" : generation_donnees_complementaires_execute($workschema, $node, "BACLESSEPMSI"); break; case "mederi" : generation_donnees_complementaires_execute($workschema, $node, "MEDERI"); break; case "evolucare_opale" : generation_donnees_complementaires_execute($workschema, $node, "EVOLUCARE_OPALE"); break; default : logWarnMsg('Traitement complémentaire non trouvé.'); } // Spécifique CEGI (LOGHOS) pour les externes if ($w_ENV_PMSIPROVIDER == "cegi" && $w_ENV_ADMPROVIDER == "cegi") { $sql = " SELECT * FROM information_schema.tables WHERE 1=1 AND table_schema = 'prod_cegiloghos' "; $res = execute_sql($sql); if (pg_num_rows($res) > 0) { logInfoMsg("Mise à jour des externes depuis CEGILOGHOS"); generation_donnees_complementaires_execute($workschema, $node, "CEGILOGHOS"); } } // Spécifique cerner pour les externes (St joseph St Luc / Hopital suisse / HP Metz) if (($w_ENV_PMSIPROVIDER == "sim" || $w_ENV_PMSIPROVIDER == "evolucare_opale" || $w_ENV_PMSIPROVIDER == "web100t") && $w_ENV_ADMPROVIDER == "cerner") { generation_donnees_complementaires_execute($workschema, $node, "CERNER"); } } function generation_donnees_complementaires_execute($workschema, $node, $provider) { global $iCTI_connexion; global $import_id; global $ENV_FINESS; global $annee_fin; begin_trans(); $idEtablissement = ''; $SHS_pmsischema = ''; $SHS_activiteschema = ''; $file = __ROOT__ . "/settings/databases/$provider.XML"; $xml = simplexml_load_string(file_get_contents($file)); if ($provider === "HM" || $provider === "CEGI" ) { $idEtablissement = isset($xml['idEtablissement']) ? trim($xml['idEtablissement']) : ''; } if ($provider === "SHS") { $SHS_pmsischema = isset($xml['pmsilib']) ? trim($xml['pmsilib']) : ''; $SHS_activiteschema = isset($xml['admlib']) ? trim($xml['admlib']) : ''; } $import_annee = $annee_fin; if (strlen($import_annee) != 4) { $import_annee = '2099'; } // Chargement requetes SQL $environmentVars=array(); $environmentVars["SCHEMA"] = $workschema; $environmentVars["IMPORT_ID"] = $import_id; $environmentVars["PMSISCHEMA"] = $SHS_pmsischema; $environmentVars["ACTIVITESCHEMA"] = $SHS_activiteschema; $environmentVars["HM_PMSI_PRATCOD_FIELD"] = "MEDE_CODE"; $environmentVars["ETAB"] = $idEtablissement; $environmentVars["FINESS"] = $ENV_FINESS; $environmentVars["IMPORT_ANNEE"] = $import_annee; $sqlOptions=array(); $providerFile = __ROOT__ . "/modules/pmsi/import_rss_rsf/iCTI_import_pmsi_$provider.XML"; $cti_sqlStatements = new CTI_SqlStatements_class($providerFile, $iCTI_connexion, $environmentVars, $sqlOptions); // Exécution requetes SQL $cti_sqlStatements->executeStatementsNode($node); commit_trans(); } function addFile($data_type, $data_path) { global $import_id; if (file_exists($data_path)) { $sqlcmd = "DELETE FROM pmsi.p_imports_data WHERE import_id = $import_id AND data_type = '$data_type' "; $result = execute_sql($sqlcmd); $file_size = filesize($data_path); $file_path = ""; $data_crc = ""; $start = 0; $data_num = 0; while ($start <= $file_size) { $filebuff = file_get_contents($data_path, FALSE, NULL, $start, 10000000); $filebuff = pg_escape_bytea(compress64($filebuff)); $sqlcmd = "INSERT INTO pmsi.p_imports_data (import_id, data_type, date_creation, data_num, data, file_path, file_size, data_crc) "; $sqlcmd = $sqlcmd . "VALUES($import_id, '$data_type', '2099-12-31', $data_num, '$filebuff', '$file_path', $file_size, '$data_crc' )"; $result = execute_sql($sqlcmd); $start = $start + 10000000; $data_num++; } } } function disable_index($indexName, $schema="pmsi") { global $iCTI_connexion; $sqlcmd = "SELECT base.cti_disable_index('$schema', '$indexName')"; $toResult = $iCTI_connexion->query($sqlcmd); commit_trans(); } function enable_index($indexName, $schema="pmsi") { global $iCTI_connexion; $sqlcmd = "SELECT base.cti_enable_index('$schema', '$indexName')"; $toResult = $iCTI_connexion->query($sqlcmd); commit_trans(); } function vacuum_tables() { logInfoMsg("REORGANISATION BASE DE DONNEES"); end_trans(); vacuum_table("t_medecins"); vacuum_table("p_chiffrier"); vacuum_table("p_patients"); vacuum_table("p_identites"); vacuum_table("p_rss"); vacuum_table("p_rsf_total"); vacuum_table("p_rsf_detail"); vacuum_table("p_rsf_detail_h"); vacuum_table("p_rss_rum"); vacuum_table("p_rss_diagnostics"); vacuum_table("p_rss_actes"); vacuum_table("p_rss_lpp"); vacuum_table("p_rss_leg"); vacuum_table("p_rss_maternite"); vacuum_table("p_rsa"); vacuum_table("p_vidhosp"); vacuum_table("p_vidhosp_crc"); vacuum_table("p_oids"); logInfoMsg("FIN REORGANISATION BASE DE DONNEES"); } function analyse_all_tables() { global $iCTI_connexion; logInfoMsg("Recréation statistiques base de données"); end_trans(); $toResult = $iCTI_connexion->query("ANALYSE"); if ($toResult == FALSE) { logErrorMsg("Erreur ANALYSE"); } } function analyse_tables() { logInfoMsg("Analyse base de données"); end_trans(); analyse_table("t_medecins"); analyse_table("p_chiffrier"); analyse_table("p_identites"); analyse_table("p_patients"); analyse_table("p_rss"); analyse_table("p_rsf_total"); analyse_table("p_rsf_detail"); analyse_table("p_rsf_detail_h"); analyse_table("p_rss_rum"); analyse_table("p_rss_diagnostics"); analyse_table("p_rss_actes"); analyse_table("p_rss_lpp"); analyse_table("p_rss_leg"); analyse_table("p_rss_maternite"); analyse_table("p_rsa"); analyse_table("p_vidhosp"); analyse_table("p_vidhosp_crc"); analyse_table("p_oids"); } function begin_trans() { global $iCTI_connexion; global $nbtrans; global $trans_sqlcmd_array; $toResult = $iCTI_connexion->query("BEGIN;"); $nbtrans = 0; $trans_sqlcmd_array = array(); } function add_trans($sqlcmd) { global $iCTI_connexion; global $nbtrans; global $trans_sqlcmd_array; $nbtrans++; $trans_sqlcmd_array[$nbtrans] = $sqlcmd; if ($nbtrans >= 1000) { commit_trans(); begin_trans(); } } function commit_trans() { global $iCTI_connexion; global $nbtrans; global $trans_sqlcmd_array; $toResult = $iCTI_connexion->query("COMMIT;"); $nbtrans = 0; $trans_sqlcmd_array = array(); } function end_trans() { global $iCTI_connexion; global $nbtrans; global $trans_sqlcmd_array; $toResult = $iCTI_connexion->query("COMMIT;"); $nbtrans = 0; $trans_sqlcmd_array = array(); } function rollback_trans() { global $iCTI_connexion; global $nbtrans; global $trans_sqlcmd_array; $toResult = $iCTI_connexion->query("ROLLBACK;"); foreach ($trans_sqlcmd_array as $sqlcmd) { $toResult = @$iCTI_connexion->query($sqlcmd); } begin_trans(); } function csv2array($input,$delimiter=',',$enclosure='"',$escape='\\'){ $fields=explode($enclosure.$delimiter.$enclosure,substr($input,1,-1)); foreach ($fields as $key=>$value){ $fields[$key]=str_replace($escape.$enclosure,$enclosure,$value); } return($fields); } /** * Sorte d'override de la fonciton native in_array($needle, $haystack) où * on controle en plus que $haystack est bien un tableau */ function cti_in_array($needle, $haystack) { if (is_array($haystack)) { return in_array($needle, $haystack); } else { return false; } } /** * Traitements de fin */ /** * Marquage des séjours selon les critères des Indicateurs de Pilotage des Activités de soins autorisés (IPA) */ function estampillage_ipa() { global $iCTI_connexion; logInfoMsg("Estampillage IPA"); $toResult = $iCTI_connexion->query("SELECT pmsi.cti_gen_ipa()"); commit_trans(); if ($toResult == FALSE) { logErrorMsg("Erreur SELECT pmsi.cti_gen_ipa()"); } } /** * Marquage des séjours selon les prestations de SRC */ function set_etudes() { global $iCTI_connexion; logInfoMsg("Etudes. Impact CMA"); $toResult = $iCTI_connexion->query("SELECT pmsi.cti_etude_impact_cma()"); commit_trans(); if ($toResult == FALSE) { logErrorMsg("Erreur SELECT pmsi.cti_etude_impact_cma()"); } } /** * Marquage des séjours selon les prestations de SRC */ function set_src() { global $iCTI_connexion; logInfoMsg("Estampillage SRC"); $toResult = $iCTI_connexion->query("SELECT pmsi.cti_gen_src()"); commit_trans(); if ($toResult == FALSE) { logErrorMsg("Erreur SELECT pmsi.cti_gen_src()"); } } /** * Marquage des séjours selon les prestations de REA */ function set_rea() { global $iCTI_connexion; logInfoMsg("Estampillage REA"); $toResult = $iCTI_connexion->query("SELECT pmsi.cti_gen_rea()"); commit_trans(); if ($toResult == FALSE) { logErrorMsg("Erreur SELECT pmsi.cti_gen_rea()"); } } /** * Association des séjours avec les gestes marqueurs */ function set_gestes_marqueurs() { global $iCTI_connexion; logInfoMsg("Gestes marqueurs"); $toResult = $iCTI_connexion->query("SELECT pmsi.cti_gen_gm()"); commit_trans(); if ($toResult == FALSE) { logErrorMsg("Erreur SELECT pmsi.cti_gen_gm()"); } } /** * Extraction données Cancéro */ function set_cancero() { global $iCTI_connexion; logInfoMsg("Cancérologie"); $toResult = $iCTI_connexion->query("SELECT pmsi.cti_gen_cancero_2017()"); execute_etude("CTI_CANCERO_2022"); commit_trans(); if ($toResult == FALSE) { logErrorMsg("Erreur SELECT pmsi.cti_gen_cancero_2017()"); } } /** * Extraction données Cardio */ function set_etude_cardio() { logInfoMsg("Cardiologie"); execute_etude("CTI_CARDIO_INTERVENTIONNELLE_2022"); } /** * Extraction donées Cancéro */ function set_sae() { global $iCTI_connexion; global $import_id; logInfoMsg("Indicateurs RSS SAE"); $toResult = $iCTI_connexion->query("SELECT pmsi.cti_gen_sae($import_id)"); commit_trans(); if ($toResult == FALSE) { logErrorMsg("Erreur SELECT pmsi.cti_gen_sae($import_id)"); } } /** * Calcul d'indicateurs liés à la maternité */ function set_maternite() { global $iCTI_connexion; global $import_id; logInfoMsg("Indicateurs Maternité"); $toResult = $iCTI_connexion->query("SELECT pmsi.cti_gen_maternite('temp', $import_id)"); commit_trans(); if ($toResult == FALSE) { logErrorMsg("Erreur SELECT pmsi.cti_gen_maternite('temp', $import_id)"); } } /** * Execution règles expert */ function expert_execute_rules() { global $iCTI_connexion; logInfoMsg("Exécution règles EXPERT"); $toResult = $iCTI_connexion->query("SELECT pmsi.cti_expert_execute_rules()"); commit_trans(); if ($toResult == FALSE) { logErrorMsg("Erreur SELECT pmsi.cti_expert_execute_rules()"); }else { $record = pg_fetch_array($toResult); $resultat = $record["cti_expert_execute_rules"]; logInfoMsg($resultat); } } /** * Extraction état dossier */ function get_etat_dossier() { global $iCTI_connexion; global $omitComplements; logInfoMsg("Exécution état dossier"); $toResult = $iCTI_connexion->query("SELECT pmsi.cti_initialize_rss_etat()"); if ($omitComplements == false) { generation_donnees_complementaires("pmsi", "PMSIETAT"); } else { logInfoMsg("Omission données complémentaires : Etat des dossiers"); } } function stats_mat2a($import_id=-1) { global $iCTI_connexion; logInfoMsg("Stats MAT2A"); $toResult = $iCTI_connexion->query("SELECT pmsi.cti_imports_calc_stats($import_id)"); commit_trans(); if ($toResult == FALSE) { logErrorMsg("Erreur SELECT pmsi.cti_imports_calc_stats($import_id)"); } } ?>