EffectiveTime::getElementTag()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
/**
4
 * The MIT License
5
 *
6
 * Copyright 2016 Julien Fastré <[email protected]>.
7
 *
8
 * Permission is hereby granted, free of charge, to any person obtaining a copy
9
 * of this software and associated documentation files (the "Software"), to deal
10
 * in the Software without restriction, including without limitation the rights
11
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
 * copies of the Software, and to permit persons to whom the Software is
13
 * furnished to do so, subject to the following conditions:
14
 *
15
 * The above copyright notice and this permission notice shall be included in
16
 * all copies or substantial portions of the Software.
17
 *
18
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
 * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE
21
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
 * THE SOFTWARE.
25
 */
26
27
namespace i3Soft\CDA\Elements;
28
29
use i3Soft\CDA\ClinicalDocument as CDA;
30
use i3Soft\CDA\DataType\Collection\Interval\IntervalOfTime;
31
use i3Soft\CDA\DataType\Collection\Interval\PeriodicIntervalOfTime;
32
use i3Soft\CDA\DataType\Quantity\DateAndTime\TimeStamp;
33
34
/**
35
 * @author Julien Fastré <[email protected]>
36
 */
37
class EffectiveTime extends AbstractElement
38
{
39
  /**
40
   *
41
   * @var TimeStamp|PeriodicIntervalOfTime|IntervalOfTime
42
   */
43
  protected $value;
44
45
  /**
46
   *
47
   * @var string
48
   */
49
  protected $operator;
50
51
  /**
52
   * EffectiveTime constructor.
53
   *
54
   * @param $value
55
   */
56
  public function __construct ($value)
57
  {
58
    $this->operator = '';
59
    $this->setValue($value);
60
  }
61
62
63
  /**
64
   * @return TimeStamp|PeriodicIntervalOfTime|IntervalOfTime
65
   */
66
  public function getValue ()
67
  {
68
    return $this->value;
69
  }
70
71
  /**
72
   * @param $value
73
   *
74
   * @return self
75
   */
76
  public function setValue ($value): self
77
  {
78
    if ($value instanceof PeriodicIntervalOfTime
79
        || $value instanceof TimeStamp
80
        || $value instanceof IntervalOfTime
81
    )
82
    {
83
      $this->value = $value;
84
    }
85
    else
86
    {
87
      throw new \UnexpectedValueException(sprintf('The timestamp must implements %s, %s or %s',
88
        PeriodicIntervalOfTime::class, TimeStamp::class, IntervalOfTime::class));
89
    }
90
    return $this;
91
  }
92
93
  /**
94
   *
95
   */
96
  public function setOperatorAppend ()
97
  {
98
    $this->operator = 'A';
99
  }
100
101
  /**
102
   * @param \DOMDocument $doc
103
   *
104
   * @return \DOMElement
105
   */
106
  public function toDOMElement (\DOMDocument $doc): \DOMElement
107
  {
108
    $el = $this->createElement($doc, ['value']);
109
    if ($this->operator === 'A')
110
    {
111
      $el->setAttribute(CDA::getNS() . 'operator', 'A');
112
    }
113
    return $el;
114
  }
115
116
  /**
117
   * @return string
118
   */
119
  protected function getElementTag (): string
120
  {
121
    return 'effectiveTime';
122
  }
123
}
124