1

我有一个计算字段(字段:length_of_stay)用于计算内容类型“患者”的开始日期(字段:date_of_admission)和当前日期之间的差异。
我在字段设置中的计算代码 (PHP) 是:

`$field_date_of_admission = array_pop(field_get_items($entity_type, $entity, 
'field_date_of_admission'));
$start_date = new DateObject($field_date_of_admission['value'], '');
$current_date = new DateObject('now', '', 'm/d/Y');
$length_of_stay = $start_date->difference($current_date, 'days');
$entity_field[0]['value'] =  $length_of_stay;
}`

显示代码为:

`$display_output = $entity_field_item['value'];`  

尽管它从 0 日期开始,但它可以工作。

我的问题是,当我想停用患者时,计算字段会继续计算差异,这对于我的应用程序而言似乎是错误的。(内容类型 Patient 还具有字段:active,可接受值为 Yes 或 No)。

是否可以使用 if 语句或其他东西?我实际上并不了解 PHP。有人可以在这里提供一些指导吗?

4

2 回答 2

0

一位朋友给了我这段代码并为我工作,所以它适用于任何可能需要类似东西的人。它计算活跃或不活跃患者的住院时间。内容类型:“患者”。字段:field_length_of_stay(计算字段)、field_date_of_admission(日期)、field_date_of_discharge(日期)、field_active(布尔值 1/是,0/否)。

$field_date_of_admission = array_pop(field_get_items($entity_type, $entity, 'field_date_of_admission'));
$field_active = field_get_items($entity_type, $entity, 'field_active');
$field_date_of_discharge = array_pop(field_get_items($entity_type, $entity, 'field_date_of_discharge'));

 if ($field_active[0]['value'] == '1') {
  $ad_date = new DateObject($field_date_of_admission['value'], '');
  $current_date = new DateObject('now', '', 'm/d/Y');
  $los = $ad_date->difference($current_date, 'days');
  $entity_field[0]['value'] =  $los;
} else {
  $ad_date = new DateObject($field_date_of_admission['value'], '');
  $dis_date = new DateObject($field_date_of_discharge['value'], '');
  $los = $ad_date->difference($dis_date, 'days');
  $entity_field[0]['value'] =  $los;
}
于 2018-01-09T14:30:29.110 回答
0

您需要用以下代码替换代码,并且需要仔细检查field_active现场机器名称。

$field_date_of_admission = array_pop(field_get_items($entity_type, $entity, 'field_date_of_admission'));
$active = array_pop(field_get_items($entity_type, $entity, 'field_active'));
if ($active) {
    $start_date = new DateObject($field_date_of_admission['value'], '');
    $current_date = new DateObject('now', '', 'm/d/Y');
    $length_of_stay = $start_date->difference($current_date, 'days');
    $entity_field[0]['value'] = $length_of_stay;
} else {
    $entity_field[0]['value'] = 0;
}

希望这会帮助你。

于 2018-01-05T14:27:28.680 回答