src/Entity/Patient.php line 13

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\PatientRepository;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use Gedmo\Mapping\Annotation as Gedmo;
  6. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  7. use Symfony\Component\Validator\Constraints as Assert;
  8. #[ORM\Entity(repositoryClassPatientRepository::class)]
  9. #[ORM\Table(name'patients'), UniqueEntity(fields: ['memberCode'], message'A patient already exists with this member code!')]
  10. class Patient implements \Stringable
  11. {
  12.     #[ORM\IdORM\GeneratedValueORM\Column(type'integer')]
  13.     private $id;
  14.     #[ORM\ManyToOne(targetEntityHospital::class), ORM\JoinColumn(nullablefalse)]
  15.     private $hospital;
  16.     #[ORM\Column(type'string'length50)]
  17.     private string $uhId 'UH-0001';
  18.     #[ORM\Column(type'string'), Assert\NotBlank]
  19.     #[Assert\Regex(pattern'/^[a-z]+$/i'message'Your first name invalid')]
  20.     #[Assert\Length(
  21.         min2,
  22.         max15,
  23.         minMessage'Your first name must be at least {{ limit }} characters long',
  24.         maxMessage'Your first name cannot be longer than {{ limit }} characters'
  25.     )]
  26.     private $firstName;
  27.     #[ORM\Column(type'string'length255nullabletrue)]
  28.     #[Assert\Regex(pattern'/^[a-z]+$/i'message'Your middle name invalid')]
  29.     #[Assert\Length(
  30.         min2,
  31.         max15,
  32.         minMessage'Your middle name must be at least {{ limit }} characters long',
  33.         maxMessage'Your middle name cannot be longer than {{ limit }} characters'
  34.     )]
  35.     private $middleName;
  36.     #[ORM\Column(type'string'length255), Assert\NotBlank]
  37.     #[Assert\Regex(pattern'/^[a-z]+$/i'message'Your Last name invalid')]
  38.     #[Assert\Length(
  39.         min2,
  40.         max15,
  41.         minMessage'Your Last name must be at least {{ limit }} characters long',
  42.         maxMessage'Your Last name cannot be longer than {{ limit }} characters'
  43.     )]
  44.     private $lastName;
  45.     #[ORM\Column(type'string'length255nullabletrue)]
  46.     #[Assert\Regex(pattern'/^[a-z]+$/i'message'Your Father/Husband`s Name  invalid')]
  47.     #[Assert\Length(
  48.         min2,
  49.         max20,
  50.         minMessage'Your Father/Husband`s Name must be at least {{ limit }} characters long',
  51.         maxMessage'Your Father/Husband`s Name cannot be longer than {{ limit }} characters'
  52.     )]
  53.     private $fatherHusbandName;
  54.     #[ORM\Column(type'string'length255nullabletrue)]
  55.     private $photo;
  56.     #[ORM\Column(name'gender'type'string'nullablefalsecolumnDefinition"enum('Male', 'Female', 'Transgender')")]
  57.     #[Assert\NotBlank]
  58.     private $gender;
  59.     #[ORM\Column(name'marital_status'type'string'nullablefalsecolumnDefinition"enum('Married', 'Unmarried', 'Other')")]
  60.     #[Assert\NotBlank]
  61.     private $maritalStatus;
  62.     #[ORM\Column(type'date'), Assert\NotBlank]
  63.     private $dob;
  64.     #[ORM\Column(type'string'length255), Assert\NotBlank]
  65.     private $housePlotNo;
  66.     #[ORM\Column(type'text'nullabletrue)]
  67.     private $address;
  68.     #[ORM\ManyToOne(targetEntityVillage::class)]
  69.     #[ORM\JoinColumn(nullablefalse), Assert\NotBlank]
  70.     private $village;
  71.     #[ORM\Column(type'string'length6), Assert\NotBlank]
  72.     #[Assert\Length(min6,  maxMessage'Pincode must have max. 6 digits')]
  73.     #[Assert\Regex(pattern'/^[0-9]*$/'message'Pincode must be in positive number')]
  74.     private $pincode;
  75.     #[ORM\Column(type'string'length15nullabletrue)]
  76.     #[Assert\Regex(pattern'/^[0-9]*$/'message'Mobile No. must be in digits only')]
  77.     #[Assert\Length(min10max15minMessage'Mobile No. must have min. {{ limit }} digits'maxMessage'Mobile No. must have max. {{ limit }} digits')]
  78.     private $mobile;
  79.     #[ORM\Column(type'string'length100nullabletrue)]
  80.     private $email;
  81.     #[ORM\Column(type'string'length12nullabletrue)]
  82.     private $adharNum;
  83.     #[ORM\Column(type'string'length15nullabletrue)]
  84.     #[Assert\Regex(pattern'/^[0-9a-zA-Z]+$/i'message'Your BPL Number invalid')]
  85.     #[Assert\Length(
  86.         max18,
  87.         maxMessage'Your BPL Number longer than {{ limit }} characters'
  88.     )]
  89.     private $bplNum;
  90.     #[ORM\Column(type'string'length50nullabletrue)]
  91.     private $healthIdNumber;
  92.     #[ORM\Column(type'string'length50nullabletrue)]
  93.     private $healthAddress;
  94.     #[ORM\Column(type'string'length50nullabletrue)]
  95.     private $abpmJay;
  96.     /* #[ORM\Column(name: 'cast', type: 'string', columnDefinition: "enum('General', 'OBC', 'SC', 'ST', 'SEBC', 'Nt-b', 'Nt-d')")]
  97.     private $cast; */
  98.     #[ORM\Column(type'string'length50nullabletrue)]
  99.     private $occupation;
  100.     #[ORM\Column(type'string'length10nullabletrue), Assert\NotBlank]
  101.     #[Assert\Length(min2,  maxMessage'Family Income must have max. 2 digits')]
  102.     #[Assert\Regex(pattern'/^[0-9]*$/'message'Family Income must be in positive number')]
  103.     private $familyIncome;
  104.     #[ORM\Column(type'boolean')]
  105.     private bool $isActive true;
  106.     #[ORM\Column(type'string'length50nullabletrue)]
  107.     private $bankName;
  108.     #[ORM\Column(type'string'length50nullabletrue)]
  109.     private $bankBranch;
  110.     #[ORM\Column(type'text'nullabletrue)]
  111.     private $bankBranchAddress;
  112.     #[ORM\Column(type'integer'length50nullabletrue)]
  113.     #[Assert\Regex(pattern'/^[0-9]+$/i'message'Your Account Number invalid')]
  114.     #[Assert\Length(
  115.         max18,
  116.         maxMessage'Your Account Number longer than {{ limit }} characters'
  117.     )]
  118.     private $bankAccount;
  119.     #[ORM\Column(type'string'length25nullabletrue)]
  120.     #[Assert\Regex(pattern'/^[a-zA-Z0-9]+$/i'message'IFSC code must be in alphabets')]
  121.     private $bankIfsCode;
  122.     #[Gedmo\Timestampable(on'create'), ORM\Column(type'datetime')]
  123.     private $createdAt;
  124.     #[Gedmo\Timestampable(on'update'), ORM\Column(type'datetime')]
  125.     private $updatedAt;
  126.     #[ORM\Column(type'string'length50nullabletrueuniquetrue)]
  127.     private $memberCode;
  128.     #[ORM\Column(type'boolean'options: ['default' => '1'])]
  129.     private bool $isAlive true;
  130.     #[ORM\ManyToOne(targetEntityDeathCause::class)]
  131.     private $deathCause;
  132.     #[Gedmo\Blameable(on'create'), ORM\ManyToOne(targetEntityUser::class), ORM\JoinColumn(name'created_by')]
  133.     private $createdBy;
  134.     #[Gedmo\Blameable(on'update'), ORM\ManyToOne(targetEntityUser::class), ORM\JoinColumn(name'updated_by')]
  135.     private $updatedBy;
  136.     #[ORM\Column(type'datetime'nullabletrue)]
  137.     private $expiredAt;
  138.     public function getId(): ?int
  139.     {
  140.         return $this->id;
  141.     }
  142.     public function getFirstName(): ?string
  143.     {
  144.         return $this->firstName;
  145.     }
  146.     public function setFirstName(string $firstName): self
  147.     {
  148.         $this->firstName strip_tags($firstName);
  149.         return $this;
  150.     }
  151.     public function getDob(): ?\DateTimeInterface
  152.     {
  153.         return $this->dob;
  154.     }
  155.     public function setDob(\DateTimeInterface $dob): self
  156.     {
  157.         $this->dob $dob;
  158.         return $this;
  159.     }
  160.     public function getAddress(): ?string
  161.     {
  162.         return $this->address;
  163.     }
  164.     public function setAddress(string $address): self
  165.     {
  166.         $this->address strip_tags($address);
  167.         return $this;
  168.     }
  169.     public function getVillage(): ?Village
  170.     {
  171.         return $this->village;
  172.     }
  173.     public function setVillage(Village $village): self
  174.     {
  175.         $this->village $village;
  176.         return $this;
  177.     }
  178.     public function getPincode(): ?string
  179.     {
  180.         return $this->pincode;
  181.     }
  182.     public function setPincode(string $pincode): self
  183.     {
  184.         $this->pincode $pincode;
  185.         return $this;
  186.     }
  187.     public function getHospital(): ?Hospital
  188.     {
  189.         return $this->hospital;
  190.     }
  191.     public function setHospital(Hospital $hospital): self
  192.     {
  193.         $this->hospital $hospital;
  194.         return $this;
  195.     }
  196.     public function getMobile(): ?string
  197.     {
  198.         return $this->mobile;
  199.     }
  200.     public function setMobile(string $mobile): self
  201.     {
  202.         $this->mobile $mobile;
  203.         return $this;
  204.     }
  205.     public function getEmail(): ?string
  206.     {
  207.         return $this->email;
  208.     }
  209.     public function setEmail(?string $email): self
  210.     {
  211.         $this->email strip_tags($email);
  212.         return $this;
  213.     }
  214.     public function getAdharNum(): ?string
  215.     {
  216.         return $this->adharNum;
  217.     }
  218.     public function setAdharNum(?string $adharNum): self
  219.     {
  220.         $this->adharNum $adharNum;
  221.         return $this;
  222.     }
  223.     public function getUhId(): ?string
  224.     {
  225.         return $this->uhId;
  226.     }
  227.     public function setUhId(string $uhId): self
  228.     {
  229.         $this->uhId $uhId;
  230.         return $this;
  231.     }
  232.     public function getIsActive(): ?bool
  233.     {
  234.         return $this->isActive;
  235.     }
  236.     public function setIsActive(bool $isActive): self
  237.     {
  238.         $this->isActive $isActive;
  239.         return $this;
  240.     }
  241.     public function getIsAlive(): ?bool
  242.     {
  243.         return $this->isAlive;
  244.     }
  245.     public function setIsAlive(bool $isAlive): self
  246.     {
  247.         $this->isAlive $isAlive;
  248.         return $this;
  249.     }
  250.     public function getDeathCause(): ?DeathCause
  251.     {
  252.         return $this->deathCause;
  253.     }
  254.     public function setDeathCause(?DeathCause $deathCause): self
  255.     {
  256.         $this->deathCause $deathCause;
  257.         return $this;
  258.     }
  259.     public function getBankName(): ?string
  260.     {
  261.         return $this->bankName;
  262.     }
  263.     public function setBankName(string $bankName): self
  264.     {
  265.         $this->bankName strip_tags($bankName);
  266.         return $this;
  267.     }
  268.     public function getBankBranch(): ?string
  269.     {
  270.         return $this->bankBranch;
  271.     }
  272.     public function setBankBranch(string $bankBranch): self
  273.     {
  274.         $this->bankBranch strip_tags($bankBranch);
  275.         return $this;
  276.     }
  277.     public function getBankBranchAddress(): ?string
  278.     {
  279.         return $this->bankBranchAddress;
  280.     }
  281.     public function setBankBranchAddress(string $bankBranchAddress): self
  282.     {
  283.         $this->bankBranchAddress strip_tags($bankBranchAddress);
  284.         return $this;
  285.     }
  286.     public function getBankAccount(): ?string
  287.     {
  288.         return $this->bankAccount;
  289.     }
  290.     public function setBankAccount(string $bankAccount): self
  291.     {
  292.         $this->bankAccount $bankAccount;
  293.         return $this;
  294.     }
  295.     public function getBankIfsCode(): ?string
  296.     {
  297.         return $this->bankIfsCode;
  298.     }
  299.     public function setBankIfsCode(string $bankIfsCode): self
  300.     {
  301.         $this->bankIfsCode strip_tags($bankIfsCode);
  302.         return $this;
  303.     }
  304.     public function getCreatedAt(): ?\DateTimeInterface
  305.     {
  306.         return $this->createdAt;
  307.     }
  308.     public function getUpdatedAt(): ?\DateTimeInterface
  309.     {
  310.         return $this->updatedAt;
  311.     }
  312.     public function getName()
  313.     {
  314.         return $this->firstName ' ' $this->middleName ' ' $this->lastName;
  315.     }
  316.     public function getMiddleName(): ?string
  317.     {
  318.         return $this->middleName;
  319.     }
  320.     public function setMiddleName(?string $middleName): self
  321.     {
  322.         $this->middleName strip_tags($middleName);
  323.         return $this;
  324.     }
  325.     public function getLastName(): ?string
  326.     {
  327.         return $this->lastName;
  328.     }
  329.     public function setLastName(string $lastName): self
  330.     {
  331.         $this->lastName strip_tags($lastName);
  332.         return $this;
  333.     }
  334.     public function getPhoto(): ?string
  335.     {
  336.         return $this->photo;
  337.     }
  338.     public function setPhoto(string $photo): self
  339.     {
  340.         $this->photo $photo;
  341.         return $this;
  342.     }
  343.     public function getFatherHusbandName(): ?string
  344.     {
  345.         return $this->fatherHusbandName;
  346.     }
  347.     public function setFatherHusbandName(string $fatherHusbandName): self
  348.     {
  349.         $this->fatherHusbandName strip_tags($fatherHusbandName);
  350.         return $this;
  351.     }
  352.     public function getGender(): ?string
  353.     {
  354.         return $this->gender;
  355.     }
  356.     public function setGender(string $gender): self
  357.     {
  358.         $this->gender $gender;
  359.         return $this;
  360.     }
  361.     public function getMaritalStatus(): ?string
  362.     {
  363.         return $this->maritalStatus;
  364.     }
  365.     public function setMaritalStatus(string $maritalStatus): self
  366.     {
  367.         $this->maritalStatus $maritalStatus;
  368.         return $this;
  369.     }
  370.     public function getHousePlotNo(): ?string
  371.     {
  372.         return $this->housePlotNo;
  373.     }
  374.     public function setHousePlotNo(string $housePlotNo): self
  375.     {
  376.         $this->housePlotNo strip_tags($housePlotNo);
  377.         return $this;
  378.     }
  379.     public function getBplNum(): ?string
  380.     {
  381.         return $this->bplNum;
  382.     }
  383.     public function setBplNum(?string $bplNum): self
  384.     {
  385.         $this->bplNum $bplNum;
  386.         return $this;
  387.     }
  388.     public function getAbpmJay(): ?string
  389.     {
  390.         return $this->abpmJay;
  391.     }
  392.     public function setAbpmJay(?string $abpmJay): self
  393.     {
  394.         $this->abpmJay strip_tags($abpmJay);
  395.         return $this;
  396.     }
  397.     /* public function getCast(): ?string
  398.     {
  399.         return $this->cast;
  400.     }
  401.     public function setCast(string $cast): self
  402.     {
  403.         $this->cast = $cast;
  404.         return $this;
  405.     } */
  406.     public function getOccupation(): ?string
  407.     {
  408.         return $this->occupation;
  409.     }
  410.     public function setOccupation(?string $occupation): self
  411.     {
  412.         $this->occupation strip_tags($occupation);
  413.         return $this;
  414.     }
  415.     public function getFamilyIncome(): ?int
  416.     {
  417.         return $this->familyIncome;
  418.     }
  419.     public function setFamilyIncome(?int $familyIncome): self
  420.     {
  421.         $this->familyIncome $familyIncome;
  422.         return $this;
  423.     }
  424.     public function getMemberCode(): ?string
  425.     {
  426.         return $this->memberCode;
  427.     }
  428.     public function setMemberCode(string $memberCode): self
  429.     {
  430.         $this->memberCode $memberCode;
  431.         return $this;
  432.     }
  433.     public function getCreatedBy(): ?User
  434.     {
  435.         return $this->createdBy;
  436.     }
  437.     public function getUpdatedBy(): ?User
  438.     {
  439.         return $this->updatedBy;
  440.     }
  441.     public function getExpiredAt(): ?\DateTimeInterface
  442.     {
  443.         return $this->expiredAt;
  444.     }
  445.     public function setExpiredAt(?\DateTimeInterface $expiredAt): self
  446.     {
  447.         $this->expiredAt $expiredAt;
  448.         return $this;
  449.     }
  450.     public function getHealthIdNumber(): ?string
  451.     {
  452.         return $this->healthIdNumber;
  453.     }
  454.     public function setHealthIdNumber(?string $healthIdNumber): self
  455.     {
  456.         $this->healthIdNumber $healthIdNumber;
  457.         return $this;
  458.     }
  459.     public function getHealthAddress(): ?string
  460.     {
  461.         return $this->healthAddress;
  462.     }
  463.     public function setHealthAddress(?string $healthAddress): self
  464.     {
  465.         $this->healthAddress $healthAddress;
  466.         return $this;
  467.     }
  468.     public function getAge()
  469.     {
  470.         $birth $this->getDob();
  471.         $end $this->getExpiredAt();
  472.         if (!$end) {
  473.             $end = new \DateTime('now');
  474.         }
  475.         $difference $end->diff($birth);
  476.         return $difference->format('%y years, %m months');
  477.     }
  478.     public function __toString(): string
  479.     {
  480.         return $this->getName();
  481.     }
  482. }