Ejemplo n.º 1
0
 function contenuBAL_Netforce($res, $type, $tabAsso = array(), $indicateurs = array(), $maxLC = array(), $maxCCAM = array())
 {
     // res contient tous les actes qu'on envoie à la facturation
     global $options;
     //eko($indicateurs);eko($maxLC);eko($maxCCAM);
     //Préparation du champs CONTENU - Initialisation avec les données patients
     $contenuDiag = "";
     $cptDiag = 1;
     $NGAPjoue = 0;
     unset($modificateursJoues);
     reset($res);
     // Variable pour les majo des actes infirmiers
     $Majoration_A_Effectuee = "Non";
     $idEvent = $this->idEvent;
     $dateEvent = $this->dateEvent;
     $dtFinInterv = $this->dtFinInterv;
     $clDateDeb = new clDate($dateEvent);
     $clDateFin = new clDate($dtFinInterv);
     // On va affecter dans une variable le nombre de CONS
     /*$Nombre_Cons = 0;
     $req=new clResultQuery;
     $paramRq["cw"] = "idEvent='".$idEvent."'";
     $res=$req->Execute("Fichier","CCAM_getNombreCONS",$paramRq,"ResultQuery");
     $Nombre_Cons = $res["nombre"][0];
     $tab_Cons[0] = 0;
     for ( $i=1 ; $i<=$Nombre_Cons ; $i++)
       $tab_Cons[$i] = 0;*/
     if (strcmp($options->getOption('ChoixHeureAffectationActes'), "Heure médiane") == 0) {
         $nbHeures = $clDateFin->getDifference($clDateDeb) / 3600;
         $dateMediane = $clDateDeb->addHours($nbHeures / 2);
         $dateMediane = $clDateDeb->getDate("Y-m-d H:i:s");
         $heureCalcule = $dateMediane;
     } elseif (strcmp($options->getOption('ChoixHeureAffectationActes'), "Heure d'admission") == 0) {
         $clDateAdm = new clDate($this->dtAdmission);
         $heureCalcule = $clDateAdm->getDate("Y-m-d H:i:s");
     } elseif (strcmp($options->getOption('ChoixHeureAffectationActes'), "Heure d'examen") == 0) {
         $clDateAdm = new clDate($this->dateEvent);
         $heureCalcule = $clDateAdm->getDate("Y-m-d H:i:s");
     } elseif (strcmp($options->getOption('ChoixHeureAffectationActes'), "Heure de sorti") == 0) {
         $clDateAdm = $clDateFin;
         $heureCalcule = $clDateAdm->getDate("Y-m-d H:i:s");
     }
     list($dateActe, $heureActe) = explode(" ", $heureCalcule);
     list($annee, $mois, $jour) = explode("-", $dateActe);
     substr($mois, 0, 1) == 0 ? $mois = substr($mois, 1, 1) : "";
     substr($jour, 0, 1) == 0 ? $jour = substr($jour, 1, 1) : "";
     list($heure, $minute, $seconde) = explode(":", $heureActe);
     substr($heure, 0, 1) == 0 ? $heure = substr($heure, 1, 1) : "";
     $dateActe = mktime(0, 0, 0, $mois, $jour, $annee);
     if ($heure >= 20 or $heure >= 6 and $heure < 8) {
         $majoCONS = "N";
     } elseif ($heure < 6) {
         $majoCONS = "NM";
     }
     //Gestion des dimanches
     if (date("w", $dateActe) == 0 and $majoCONS == "") {
         $majoCONS = "F";
     }
     //Gestion des jours fériés
     $dateFerie = new clDate($dateActe);
     if ($dateFerie->isHoliday() and $majoCONS == "") {
         $majoCONS = "F";
     }
     for ($i = 0; isset($res[identifiant][$i]); $i++) {
         $contenuInit = $res[numSejour][$i] . "|" . $res[idu][$i] . "|" . $res[nomu][$i] . "|" . $res[pren][$i] . "|" . $res[sexe][$i] . "|" . $res[dtnai][$i];
         $contenuInit3 = "|" . $res[numUFdem][$i];
         $dateDem = substr($res[dateDemande][$i], 0, 10);
         $heureDem = substr($res[dateDemande][$i], 11, 6) . "00";
         $dateReal = substr($res[dateEvent][$i], 0, 10);
         $heureReal = substr($res[dateEvent][$i], 11, 6) . "00";
         $contenuInit2 = "|" . $dateDem . "|" . $heureDem;
         // Cas des consultations spécialisées.
         if (substr($res[codeActe][$i], 0, 4) == "CONS") {
             $cotation = explode("+", $res[cotationNGAP][$i]);
             while (list($key, $val) = each($cotation)) {
                 // On gere le cas des actes du docteur qui prend en charge la patient
                 // Etape1
                 // Recupere l'indice de facturation
                 list($lc, $coeff) = explode(" ", $val);
                 if ($coeff == 0) {
                     $factu = "non";
                     $coeff = 1;
                 } else {
                     $factu = "oui";
                 }
                 // Etape2
                 // On colle le modificateur sur les consultes specialites
                 $majoNGAP = "";
                 //eko($lc);
                 if (substr($lc, 0, 1) == "C") {
                     // MAJO CS 1 CSC 1 CNPSY 1
                     $majoNGAP = $majoCONS;
                 }
                 $contenuSuite = "|{$type}|" . $res[identifiant][$i] . "|" . $res[codeActe][$i] . "||||{$dateReal}|{$heureReal}|" . $res[nomIntervenant][$i] . "||" . $res[matriculeIntervenant][$i] . "|" . $res[numUFexec][$i] . "||{$lc}|{$coeff}|{$factu}||{$majoNGAP}";
                 $contenu = $contenuInit . $contenuInit2 . $contenuInit3 . $contenuSuite;
                 //eko($contenu);
                 unset($param);
                 $param[DTINS] = date("Y-m-d H:i") . ":00";
                 $param[ETAT] = "P";
                 $param[DISCR] = $res[idEvent][$i];
                 $param[TYPE] = "NGAP";
                 $param[CONTENU] = $contenu;
                 $majrq = new clRequete(CCAM_BDD, "MBTV2", $param);
                 $sql = $majrq->addRecord();
             }
             unset($paramModif);
             $paramModif[validDefinitive] = "O";
             $requete = new clRequete(CCAM_BDD, "ccam_cotation_actes", $paramModif);
             $sql = $requete->updRecord("codeActe='" . $res[codeActe][$i] . "' and idDomaine=" . CCAM_IDDOMAINE . " and idEvent=" . $res[idEvent][$i]);
         } elseif (substr($res[codeActe][$i], 0, 4) == "NGAP") {
             // Il y aura deux intervenants le docteur et l'infirmier
             // Donc deux majorations possibles au maximun
             // La majoration forfaire collée pour l'un des actes ngap du docteur
             // La majoration forfaire collée pour l'un des actes ngap de l'infirmier
             $cotation = explode("+", $res[cotationNGAP][$i]);
             //eko ($cotation);
             while (list($key, $val) = each($cotation)) {
                 // On gere le cas des actes du docteur qui prend en charge la patient
                 // Etape1
                 // Recupere l'indice de facturation
                 list($lc, $coeff) = explode(" ", $val);
                 if ($coeff == 0) {
                     $factu = "non";
                     $coeff = 1;
                 } else {
                     $factu = "oui";
                 }
                 // Etape2
                 // On colle le modificateur sur le premier acte ngap du medecin la C ou CS
                 $majoNGAP = "";
                 //eko($lc);
                 if (substr($lc, 0, 1) == "C" and !$NGAPjoue) {
                     // C ou CS
                     $majoNGAP = $res[modificateurs][$i];
                     $NGAPjoue = 1;
                 }
                 /*else {
                         if ( !ereg ("AMI",$lc ) and 
                              !ereg ("AIS",$lc ) and
                              !ereg ("K",$lc   ) and
                              !ereg ("KC",$lc  ) and
                              !ereg ("PH",$lc  ) and
                 
                              !ereg ("MNO",$lc ) and // LISTE MAJO
                              !ereg ("MGE",$lc ) and
                              !ereg ("MCG",$lc ) and
                              !ereg ("MCC",$lc ) and
                              !ereg ("MPC",$lc ) and
                              !ereg ("MCS",$lc ) and
                              !ereg ("MPJ",$lc ) and
                              !ereg ("MNP",$lc ) and
                              !$NGAPjoue ) {
                           $majoNGAP = $res[modificateurs][$i];
                           $NGAPjoue = 1;
                         }
                       }*/
                 // On gere le cas des actes infirmiers
                 //LISTE MAJO pour les actes infirmiers
                 if (ereg("AMI", $lc) || ereg("AIS", $lc) || ereg("K", $lc) || ereg("KC", $lc) || ereg("PH", $lc) || ereg("INFN1", $lc) || ereg("INFN2", $lc) || ereg("MINFD", $lc)) {
                     if (strcmp($this->matriculeIDE, "") == 0) {
                         if (strcmp($options->getOption("codeAdeliInfirmier"), "") == 0) {
                             if (strcmp($this->matriculeIntervenant, "") == 0) {
                                 $matriculeIDE = $options->getOption("codeAdeliChefService");
                                 $nomIDE = $this->nomIntervenant;
                                 if (!$NGAPjoue) {
                                     $majoNGAP = $res[modificateurs][$i];
                                     $NGAPjoue = 1;
                                     $Majoration_A_Effectuee = "Oui";
                                 }
                             } else {
                                 $matriculeIDE = $this->matriculeIntervenant;
                                 $nomIDE = $this->nomIntervenant;
                                 if (!$NGAPjoue) {
                                     $majoNGAP = $res[modificateurs][$i];
                                     $NGAPjoue = 1;
                                     $Majoration_A_Effectuee = "Oui";
                                 }
                             }
                         } else {
                             $matriculeIDE = $options->getOption("codeAdeliInfirmier");
                             $nomIDE = $this->nomIDE;
                         }
                     } else {
                         $matriculeIDE = $this->matriculeIDE;
                         $nomIDE = $this->nomIDE;
                     }
                     //Premiere version avec la fonction gestionMajorationsActesInfirmiers
                     //                      et l'option EnvoiMajorationsActesInfirmiers
                     /* 
                     // Calcul des majo "NGAP" si on envoi pas les majo des "AMI" et "AIS"
                     if ( !$options->getOption ('EnvoiMajorationsActesInfirmiers') ){
                     //eko("majo ngap :".$lc);
                     // Concernant les actes infirmiers
                     // Soit on envoie les modificateurs pour les actes AMI et AIS
                     // Soit on envoie les majorations des actes AMI et AIS
                     // Mais pas les deux.
                     	  
                     //Gestion des modificateurs de nuit et jours fériés pour las actes NGAP infirmiers
                     //Gestion des tranches horaires pour las actes NGAP infirmiers
                     if (($heure>=20 or ($heure>=6 and $heure<8))) $majoNGAP="N";
                     elseif ($heure<6) $majoNGAP="NM";
                         
                     //Gestion des dimanches pour las actes NGAP infirmiers
                     if (date("w",$dateActe)==0 and $majoNGAP=="") $majoNGAP="F";
                         
                     //Gestion des jours fériés pour las actes NGAP infirmiers
                     $dateFerie=new clDate($dateActe);
                     if ($dateFerie->isHoliday() and $majoNGAP=="") $majoNGAP="F";
                       $modificateurs=$majoNGAP; 
                     }
                     */
                     // Nous avons l'heure
                     if (strcmp($Majoration_A_Effectuee, "Non") == 0) {
                         if ($heure >= 20 && $heure < 23 || $heure >= 5 && $heure < 8) {
                             $MajorationNGAP1 = "N";
                             $Majoration_A_Effectuee = "Oui";
                         }
                         if ($heure >= 23 || $heure < 5) {
                             $MajorationNGAP1 = "NM";
                             $Majoration_A_Effectuee = "Oui";
                         }
                         // pour les jours féries
                         $dateFerie = new clDate($dateActe);
                         if ($dateFerie->isHoliday() && strcmp($Majoration_A_Effectuee, "Non") == 0) {
                             $MajorationNGAP1 = "F";
                             $Majoration_A_Effectuee = "Oui";
                         }
                         // pour les dimanches
                         if (date("w", $dateActe) == 0 && strcmp($Majoration_A_Effectuee, "Non") == 0) {
                             $MajorationNGAP1 = "F";
                             $Majoration_A_Effectuee = "Oui";
                         }
                         // pour les samedis
                         if (date("w", $dateActe) == 6 && $heure >= 8 && strcmp($Majoration_A_Effectuee, "Non") == 0) {
                             $MajorationNGAP1 = "F";
                             $Majoration_A_Effectuee = "Oui";
                         }
                         $majoNGAP = $MajorationNGAP1;
                     }
                     $contenuSuite = "|{$type}|" . $res[identifiant][$i] . "|" . $res[codeActe][$i] . "||||{$dateReal}|{$heureReal}|" . $nomIDE . "||" . $matriculeIDE . "|" . $res[numUFexec][$i] . "||{$lc}|{$coeff}|{$factu}||{$majoNGAP}";
                     $contenu = $contenuInit . $contenuInit2 . $contenuInit3 . $contenuSuite;
                     //eko($contenu);
                     // Mise à jour de la table ccam_cotation_acte
                     if (strcmp($type, "creation") == 0) {
                         $paramModif["nomIntervenant"] = $nomIDE;
                         $paramModif["matriculeIntervenant"] = $matriculeIDE;
                         $requete = new clRequete(CCAM_BDD, "ccam_cotation_actes", $paramModif);
                         $sql = $requete->updRecord("idEvent=" . $this->idEvent . " and identifiant=" . $res["identifiant"][$i] . " and idDomaine=" . CCAM_IDDOMAINE);
                         //eko($res["identifiant"][$i]);
                     }
                 } else {
                     $contenuSuite = "|{$type}|" . $res[identifiant][$i] . "|" . $res[codeActe][$i] . "||||{$dateReal}|{$heureReal}|" . $res[nomIntervenant][$i] . "||" . $res[matriculeIntervenant][$i] . "|" . $res[numUFexec][$i] . "||{$lc}|{$coeff}|{$factu}||{$majoNGAP}";
                     $contenu = $contenuInit . $contenuInit2 . $contenuInit3 . $contenuSuite;
                     //eko($contenu);
                 }
                 unset($param);
                 $param[DTINS] = date("Y-m-d H:i") . ":00";
                 $param[ETAT] = "P";
                 $param[DISCR] = $res[idEvent][$i];
                 $param[TYPE] = "NGAP";
                 $param[CONTENU] = $contenu;
                 $majrq = new clRequete(CCAM_BDD, "MBTV2", $param);
                 $sql = $majrq->addRecord();
             }
             unset($paramModif);
             $paramModif[validDefinitive] = "O";
             $requete = new clRequete(CCAM_BDD, "ccam_cotation_actes", $paramModif);
             $sql = $requete->updRecord("codeActe='" . $res[codeActe][$i] . "' and idDomaine=" . CCAM_IDDOMAINE . " and idEvent=" . $res[idEvent][$i]);
         } else {
             if ($res[type][$i] == "ACTE") {
                 list($modificateurs1, $modificateurs4) = explode("|", $res[modificateurs][$i]);
                 if ($modificateurs1) {
                     $modificateursCotes = explode("~", $modificateurs1);
                     $modificateurs1 = "";
                     while (list($key, $val) = each($modificateursCotes)) {
                         if ($val == "F" or $val == "P" or $val == "S") {
                             if (!$modificateursJoues[$val] and !$indicateurs["C"] or $indicateurs["C"] and substr($res[codeActe][$i], 0, 3) == "DEQ") {
                                 $modificateurs1 .= "{$val}~";
                             }
                             //eko("indicC:$indicateurs[C]-val:$val-modif1:$modificateurs1-modifJoueAvant:".$modificateursJoues[$val]);
                         } else {
                             $modificateurs1 .= "{$val}~";
                         }
                         $modificateursJoues[$val] = 1;
                         //eko("val:$val-modif1:$modificateurs1-modifJoue:".$modificateursJoues[$val]);
                     }
                     /*eko("codeActe:".$res[codeActe][$i]);
                       eko($modificateursCotes);
                       eko("modif1Final:$modificateurs1");
                       eko($modificateursJoues);*/
                     if ($modificateurs1) {
                         $modificateurs1 = substr($modificateurs1, 0, -1);
                     }
                 }
                 $modificateurs4 = "";
                 list($intervenant1, $intervenant4) = explode("|", $res[matriculeIntervenant][$i]);
                 list($nomIntervenant1, $nomIntervenant4) = explode("|", $res[nomIntervenant][$i]);
                 $codeActe = $res[codeActe][$i];
                 $codeAssociation = $tabAsso[$codeActe];
                 $contenuSuite = "|{$type}|" . $res[identifiant][$i] . "|" . $res[codeActe][$i] . "||1|0|{$dateReal}|{$heureReal}|" . $nomIntervenant1 . "||" . $intervenant1 . "|" . $res[numUFexec][$i] . "|" . $modificateurs1 . "|||oui|{$codeAssociation}";
                 $contenu = $contenuInit . $contenuInit2 . $contenuInit3 . $contenuSuite;
                 unset($param);
                 $param[DTINS] = date("Y-m-d H:i") . ":00";
                 $param[ETAT] = "P";
                 $param[DISCR] = $res[idEvent][$i];
                 $param[TYPE] = "CCAM";
                 $param[CONTENU] = $contenu;
                 $majrq = new clRequete(CCAM_BDD, "MBTV2", $param);
                 $sql = $majrq->addRecord();
                 if ($res[codeActivite4][$i] == "O") {
                     /*//Recherche du nom de l'anesthésiste dans la liste
                     		unset($paramRq);
                     		$paramRq[code]=$intervenant4;
                     		$paramRq[idDomaine]=CCAM_IDDOMAINE;
                     		$paramRq[nomListe]="Anesthésie";
                     		$req=new clResultQuery;
                     		$res2=$req->Execute("Fichier","CCAM_getNomMed",$paramRq,"ResultQuery");
                     		//eko($res2[INDIC_SVC]);
                     		$nomMed4=$res2[nomItem][0];*/
                     $contenuSuite = "|{$type}|" . $res[identifiant][$i] . "|" . $res[codeActe][$i] . "||4|0|{$dateReal}|{$heureReal}|" . $nomIntervenant4 . "||" . $intervenant4 . "|" . $res[numUFexec][$i] . "|" . $modificateurs4 . "|||oui|{$codeAssociation}";
                     $contenu = $contenuInit . $contenuInit2 . $contenuInit3 . $contenuSuite;
                     unset($param);
                     $param[DTINS] = date("Y-m-d H:i:") . "00";
                     $param[ETAT] = "P";
                     $param[DISCR] = $res[idEvent][$i];
                     $param[TYPE] = "CCAM";
                     $param[CONTENU] = $contenu;
                     $majrq = new clRequete(CCAM_BDD, "MBTV2", $param);
                     $sql = $majrq->addRecord();
                 }
                 unset($paramModif);
                 $paramModif[validDefinitive] = "O";
                 $requete = new clRequete(CCAM_BDD, "ccam_cotation_actes", $paramModif);
                 $sql = $requete->updRecord("codeActe='" . $res[codeActe][$i] . "' and idDomaine=" . CCAM_IDDOMAINE . " and idEvent=" . $res[idEvent][$i]);
             } else {
                 $idEvent = $res[idEvent][$i];
                 /*$numSejour=$res[numSejour][$i];
                  	$idu=$res[idu][$i];
                  	$nomu=$res[nomu][$i];
                  	$pren=$res[pren][$i];
                  	$sexe=$res[sexe][$i];
                  	$dtnai=$res[dtnai][$i];
                  	$numUFdem=$res[numUFdem][$i];*/
                 $numUFexec = $res[numUFexec][$i];
                 $nomIntervenant = $res[nomIntervenant][$i];
                 $matriculeIntervenant = $res[matriculeIntervenant][$i];
                 $cptDiag == 1 ? $sep = "|" : ($sep = "~");
                 $contenuDiag .= $res[codeActe][$i] . $sep;
                 $cptDiag++;
             }
             // Cas du diagnostic
         }
         // Cas des actes CCAM
     }
     //for ($i=0;isset($res[identifiant][$i]);$i++)
     if ($contenuDiag) {
         /*unset($paramRq);
         	$paramRq[cw]="type='DIAG' and validDefinitive='O' and idEvent=".$res[idEvent][$i]." and idDomaine=".CCAM_IDDOMAINE;
         	$req=new clResultQuery;
         	$res=$req->Execute("Fichier","CCAM_getActesDiagsCotation",$paramRq,"ResultQuery");
         	//eko($res[INDIC_SVC]);
         	if ($res[INDIC_SVC][2]!=0) $type="modification";*/
         $cptDiag--;
         if ($cptDiag == 1) {
             $sepDiag = "|";
         } else {
             $sepDiag = "";
         }
         $contenuDiag = substr($contenuDiag, 0, -1);
         $contenuSuite = "|{$type}|" . $idEvent . "|" . $contenuDiag . $sepDiag . "|||{$dateReal}|{$heureReal}|" . $nomIntervenant . "||" . $matriculeIntervenant . "|" . $numUFexec . "||||";
         $contenu = $contenuInit . $contenuInit2 . $contenuInit3 . $contenuSuite;
         unset($param);
         $param[DTINS] = date("Y-m-d H:i:") . "00";
         $param[ETAT] = "P";
         $param[DISCR] = $idEvent;
         $param[TYPE] = "DIAG";
         $param[CONTENU] = $contenu;
         $majrq = new clRequete(CCAM_BDD, "MBTV2", $param);
         $sql = $majrq->addRecord();
         unset($paramModif);
         $paramModif[validDefinitive] = "O";
         $requete = new clRequete(CCAM_BDD, "ccam_cotation_actes", $paramModif);
         $sql = $requete->updRecord("type='DIAG' and idEvent=" . $idEvent . " and idDomaine=" . CCAM_IDDOMAINE);
     }
 }