Imprimer

Stage Amar Halassa Semaine16

Affichage des prescriptions dans le module Soins?

Après le chargement des séjours liés à un praticien et correspondant à une date donnée, on peut maintenant consulter la prescription de sejour pour un patient. sachant qu'une prescription de type sejour est liée à un sejour par sejour_id, la requête qui permet de récupérer les médicaments, les commentaires ainsi que quelques informations comme la posologie est la suivante.

$prescription = new CPrescription();
$where = array();
$where["object_id"]    = " = '$sejour_id'";
$where["object_class"] = " = 'CSejour'";
$where["type"]         = " = 'sejour'";
$prescription->loadObject($where);

$prescription->loadRefsLinesMedComments();
    foreach($prescription->_ref_lines_med_comments as $type => $lines_by_type){
      foreach($lines_by_type as $med_id => $_line_med){
        $_line_med->getAdvancedPerms($is_praticien, $mode_protocole, $mode_pharma);
        if($_line_med->_class_name == "CPrescriptionLineMedicament"){
          $_line_med->countBackRefs("administration");
          $_line_med->loadRefsSubstitutionLines();
          $_line_med->loadRefParentLine();
        }
      }
    }

Ce qui renvoie cette page

La même approche est utilisée pour afficher les autres éléments d'une prescription comme les séances de kiné par exemple en remplaçant "loadRefsLinesMedComments() " par "loadRefsLinesElementsComments('',$chapitre)" chapitre, pour définir le type de l'élément.

Pour compléter le module soins un affichage des antecedants d'un patient et des documents du séjour(juste le lien avec le nom du document) sont affichés

Correction de quelques bugs

En premier, l'affichage que des modules qui possèdent un arbre de navigation. Exemple d'un arbre de navigation

$pathway = array (
   "noeud1" = array ( "page11", "page12"),
   "noeud2" = array (
      "noeud21" = array ("page211", "page212"),
      "page21"
    ),
    "page1"
)

Deuxième bug : le parcourt de cet arbre qui rencontrait un problème de récursivité, et ne traite pas le cas d'un noeud possédant une seule feuille, la fonction de parcourt :

static function find_page($tableau,$cle_choix){
	  $list_pages = array(
	    "node" => array(),
	    "page" => array()
	  );
	  $trouve = false;
	  
	  foreach ($tableau as $cle => $valeur) { 
	    if (($valeur === $cle_choix) || ($cle === $cle_choix)){
	    	$trouve = true;
	      if(is_array($valeur)) {
	      	self::$path[]= $cle;
	        $list_pages = self::view_tab($valeur);  
	      } 
	      else { 
	        $list_pages["page"][] = $valeur; 
	      } 
	    }
	    elseif (!$trouve) {
	      if(is_array($valeur)){
	      	self::$path[] = $cle;
	        $list_pages  = self::find_page($valeur,$cle_choix);
	      }
	    }
	  }
	  return $list_pages;
	}

Correction d'un bug lors de la génération des templates compilés qui devait se faire dans le dossier tmp à la racine de mediboard et non pas dans le répertoire mobile en utilisant la variable $extrapath qui sert aussi à charger un fichier JS du répértoire mobile dans un template. voila un bout de fonction pour la creation des templates compliés

global $version, $can, $m, $a, $tab, $g, $action, $actionType, $dialog, $ajax, $suppressHeaders;
    
    $rootDir = CAppUI::conf("root_dir");
    $extraPath = self::$extraPath;

    $root = $extraPath ? "$rootDir/$extraPath" : $rootDir;

    $tmpDir = "$rootDir/tmp";
    
    if (!$dir) {
      $dir = "$root/modules/$m"; 
      $this->compile_dir = "$tmpDir/templates_c/{$extraPath}modules/$m/";
    }
    else {
      $this->compile_dir = "$tmpDir/templates_c/{$extraPath}$dir/";
    }


Dernièrement modifié par amar1629 points  .
Modifiée dernièrement le mercredi 02 de juin, 2010 17h17m17.

Sponsors privilégiés

Mediboard project