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