Issues (113)

lib/Elements/EthnicGroupCode.php (1 issue)

Severity
1
<?php
2
3
/**
4
 * The MIT License
5
 *
6
 * Copyright 2018  Peter Gee <https://github.com/pgee70>.
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
/**
28
 *
29
 * @package     i3Soft\CDA
30
 * @author      Peter Gee <https://github.com/pgee70>
31
 * @link        https://github.com/pgee70/cda
32
 *
33
 * see http://meteor.aihw.gov.au/content/index.phtml/itemId/291036 for details.
34
 *
35
 */
36
37
38
namespace i3Soft\CDA\Elements;
39
40
use i3Soft\CDA\DataType\Code\CodedValue;
41
42
/**
43
 * Class EthnicGroupCode
44
 *
45
 * @package i3Soft\CDA\Elements
46
 */
47
class EthnicGroupCode extends Code
48
{
49
  const status_aboriginal                       = 1;
50
  const status_torres_strait                    = 2;
51
  const status_both_aboriginal_torres_strait    = 3;
52
  const status_neither_aboriginal_torres_strait = 4;
53
  const status_unknown                          = 9;
54
55
  /**
56
   * EthnicGroupCode constructor.
57
   * either use a coded value in the constuctor, or the METeOR Indigenous Status int.
58
   *
59
   * @param int|CodedValue $value
60
   */
61
  public function __construct (int $value)
62
  {
63
    if ($value instanceof CodedValue)
0 ignored issues
show
$value is never a sub-type of i3Soft\CDA\DataType\Code\CodedValue.
Loading history...
64
    {
65
      parent::__construct($value);
66
      return;
67
    }
68
    $values = array(
69
      self::status_aboriginal                       => 'Aboriginal but not Torres Strait Islander origin',
70
      self::status_torres_strait                    => 'Torres Strait Islander but not Aboriginal origin',
71
      self::status_both_aboriginal_torres_strait    => 'Both Aboriginal and Torres Strait Islander origin',
72
      self::status_neither_aboriginal_torres_strait => 'Neither Aboriginal nor Torres Strait Islander origin',
73
      self::status_unknown                          => 'Not stated/inadequately described'
74
    );
75
    if (array_key_exists((int)$value, $values) === FALSE)
76
    {
77
      throw new \InvalidArgumentException("The ethnic group code {$value} is not allowed!");
78
    }
79
    $coded_value = new CodedValue ($value,
80
      $values[$value],
81
      '2.16.840.1.113883.3.879.291036',
82
      'METeOR Indigenous Status');
83
    parent::__construct($coded_value);
84
  }
85
86
  /**
87
   * @return string
88
   */
89
  public function getElementTag (): string
90
  {
91
    return 'ethnicGroupCode';
92
  }
93
}