/**
  * OBX Segment pulse generator and lead observation results
  *
  * @param DOMNode    $OBX       DOM node
  * @param CPatient   $patient   Person
  * @param COperation $operation Opération
  * @param string     $date      Date
  *
  * @return bool
  */
 function getPulseGeneratorAndLeadObservationResults(DOMNode $OBX, CPatient $patient, COperation $operation, $date)
 {
     $result_set = new CObservationResultSet();
     $datetime = $this->getOBXObservationDateTime($OBX) ?: $date;
     if ($datetime) {
         $result_set->patient_id = $patient->_id;
         $result_set->context_class = $operation->_class;
         $result_set->context_id = $operation->_id;
         $result_set->datetime = CMbDT::dateTime($datetime);
         if (!$result_set->loadMatchingObject()) {
             if ($msg = $result_set->store()) {
                 $this->codes[] = "E302";
             }
         }
     }
     // Traiter le cas où ce sont des paramètres sans résultat utilisable
     if ($this->getObservationResultStatus($OBX) === "X") {
         return true;
     }
     $result = new CObservationResult();
     $result->observation_result_set_id = $result_set->_id;
     $this->mappingObservationResult($OBX, $result);
     /* @todo à voir si on envoi un message d'erreur ou si on continu ... */
     if ($msg = $result->store()) {
         $this->codes[] = "E304";
     }
     return true;
 }
$period = CValue::post("period", 120);
// in seconds
$graph = new CSupervisionGraph();
/** @var CSupervisionGraph[] $graphs */
$graphs = $graph->loadList(array("disabled" => "= '0'"));
$n = 500;
$datetime = $datetime_start;
$times = array();
while (--$n > 0 && $datetime < $datetime_end) {
    $observation_result_set = new CObservationResultSet();
    $observation_result_set->context_class = $context_class;
    $observation_result_set->context_id = $context_id;
    $observation_result_set->patient_id = $patient_id;
    $observation_result_set->datetime = $datetime;
    $observation_result_set->loadMatchingObject();
    $observation_result_set->store();
    $times[$datetime] = $observation_result_set;
    $datetime = CMbDT::dateTime("+{$period} SECONDS", $datetime);
}
foreach ($graphs as $_graph) {
    $_axes = $_graph->loadRefsAxes();
    foreach ($_axes as $_axis) {
        $_series = $_axis->loadRefsSeries();
        foreach ($_series as $_serie) {
            $_samples = $_serie->getSampleData(array_keys($times));
            foreach ($_samples as $_sample) {
                list($_datetime, $_value) = $_sample;
                $result = new CObservationResult();
                $result->observation_result_set_id = $times[$_datetime]->_id;
                $result->unit_id = $_serie->value_unit_id ? $_serie->value_unit_id : "";
                $result->value_type_id = $_serie->value_type_id;