<?php
namespace MedBrief\MSR\Entity;
use ApiPlatform\Core\Annotation\ApiResource;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use MedBrief\MSR\Dto\ClinicalSummaryDto;
use MedBrief\MSR\Repository\ClinicalSummaryRepository;
use MedBrief\MSR\Service\PushToCollection\CollectionPushable\CollectionPushableInterface;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ApiResource(
* output={ClinicalSummaryDto::class, ClinicalSummaryMatterDto::class},
* description="A Clinical summary of a project",
* collectionOperations={
* "get"={"access_control"="is_granted('CLINICAL_SUMMARY_PROJECT_ADMINISTRATION', object.getProject())",},
* "post"={"access_control"="is_granted('CLINICAL_SUMMARY_PROJECT_ADMINISTRATION', object.getProject())",},
* },
* itemOperations={
* "get"={"access_control"="is_granted('CLINICAL_SUMMARY_PROJECT_ADMINISTRATION', object.getProject())",},
* "put"={"access_control"="is_granted('CLINICAL_SUMMARY_PROJECT_ADMINISTRATION', object.getProject())",},
* "delete"={"access_control"="is_granted('CLINICAL_SUMMARY_PROJECT_ADMINISTRATION', object.getProject())",},
* },
* normalizationContext={"groups"={"clinical_summary:full", "clinical_summary:read"}},
* denormalizationContext={"groups"={"clinical_summary:full"}},
* )
*
* @ORM\Entity(repositoryClass=ClinicalSummaryRepository::class)
*/
class ClinicalSummary implements CollectionPushableInterface
{
public const FROM_COMPANY = 'MedBrief';
/**
* @ORM\Id
*
* @Groups({"clinical_summary:read"})
*
* @ORM\GeneratedValue
*
* @ORM\Column(type="integer")
*/
private int $id;
/**
* @ORM\OneToOne(targetEntity=Project::class, inversedBy="clinicalSummary")
*
* @Groups({"clinical_summary:full"})
*
* @ORM\JoinColumn(name="project_id", referencedColumnName="id", nullable=false)
*/
private Project $project;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="string")
*/
private string $fromCompany = self::FROM_COMPANY;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="text")
*/
private string $conclusion;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="integer", nullable=true)
*/
private int $pagesConsidered;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="text")
*/
private string $trusts;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="text")
*/
private string $keyAllegations;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="text")
*/
private string $claimBackground;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="string", nullable=false)
*/
private string $indicationOfMedicalRecords;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="text", nullable=true)
*/
private ?string $breachOfDutyDetails;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="text", nullable=true)
*/
private ?string $clinicalFactsNoBreachDutyOfCare;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="text", nullable=true)
*/
private ?string $clinicalSupportDetails;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="string")
*/
private string $claimedHarmOrLossMedicalRecords;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="text", nullable=true)
*/
private ?string $patientHarmDetails;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="text", nullable=true)
*/
private ?string $patientNoHarmDetails;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="text", nullable=true)
*/
private ?string $clinicalFactsDetails;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="text", nullable=true)
*/
private ?string $pointOfNote;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="string")
*/
private string $medicalRecordsOfThirdParty;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="text", nullable=true)
*/
private ?string $natureOfMedicalRecords;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="string")
*/
private string $hasPrivilegedOrSafeguardingInfo;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="text", nullable=true)
*/
private ?string $privilegedSafeguardingInfoDescription;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="text", nullable=true)
*/
private ?string $clinicalFactsUnderminingClaim;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="text", nullable=true)
*/
private ?string $clinicalFactsChangingViewOnDefendantBreach;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="string")
*/
private string $investigationRecommendations;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="text", nullable=true)
*/
private ?string $investigationRecommendationsPrompt;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="string")
*/
private string $medicoLegalOpinionRecommendation;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="json", nullable=true)
*/
private ?string $patientHarmChangingView;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="string", nullable=true)
*/
private ?string $continueWithAdditionalService;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="datetime")
*
* @Gedmo\Timestampable(on="create")
*/
private DateTime $created;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="datetime")
*
* @Gedmo\Timestampable(on="update")
*/
private DateTime $updated;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="datetime", nullable=true)
*/
private ?DateTime $publishedAt;
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\Column(type="datetime", nullable=true)
*/
private ?DateTime $deletedAt;
// Not mapped to Database
private string $filePath = '';
// Not mapped to Database
private string $originalFilename = '';
/**
* @Groups({"clinical_summary:full"})
*
* @ORM\ManyToOne(targetEntity=User::class, inversedBy="clinicalSummaries")
*
* @ORM\JoinColumn(nullable=false)
*/
private User $creator;
/**
* @return int|null
*/
public function getId(): ?int
{
return $this->id;
}
/**
* @return Project
*/
public function getProject(): Project
{
return $this->project;
}
/**
* @param Project $project
*
* @return self
*/
public function setProject(Project $project): self
{
$this->project = $project;
return $this;
}
/**
* @return string|null
*/
public function getFromCompany(): ?string
{
return $this->fromCompany;
}
/**
* @param string $fromCompany
*
* @return self
*/
public function setFromCompany(string $fromCompany): self
{
$this->fromCompany = $fromCompany;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getPublishedAt(): ?\DateTimeInterface
{
return $this->publishedAt;
}
/**
* @param \DateTimeInterface|null $publishedAt
*
* @return self
*/
public function setPublishedAt(?\DateTimeInterface $publishedAt): self
{
if ($publishedAt !== null) {
$this->publishedAt = $publishedAt;
}
return $this;
}
/**
* Determine whether the clinical summary is published and not deleted.
*
* @return bool
*/
public function isPublished(): bool
{
return $this->getPublishedAt() !== null && $this->getDeletedAt() === null;
}
/**
* @return string|null
*/
public function getConclusion(): ?string
{
return $this->conclusion;
}
/**
* @param string $conclusion
*
* @return self
*/
public function setConclusion(string $conclusion): self
{
$this->conclusion = $conclusion;
return $this;
}
/**
* @return int|null
*/
public function getPagesConsidered(): ?int
{
return $this->pagesConsidered;
}
/**
* @param int|null $pagesConsidered
*
* @return self
*/
public function setPagesConsidered(?int $pagesConsidered): self
{
$this->pagesConsidered = $pagesConsidered;
return $this;
}
/**
* @return string|null
*/
public function getTrusts(): ?string
{
return $this->trusts;
}
/**
* @param string $trusts
*
* @return self
*/
public function setTrusts(string $trusts): self
{
$this->trusts = $trusts;
return $this;
}
/**
* @return string|null
*/
public function getKeyAllegations(): ?string
{
return $this->keyAllegations;
}
/**
* @param string $keyAllegations
*
* @return self
*/
public function setKeyAllegations(string $keyAllegations): self
{
$this->keyAllegations = $keyAllegations;
return $this;
}
/**
* @return string|null
*/
public function getClaimBackground(): ?string
{
return $this->claimBackground;
}
/**
* @param string $claimBackground
*
* @return self
*/
public function setClaimBackground(string $claimBackground): self
{
$this->claimBackground = $claimBackground;
return $this;
}
/**
* @return string|null
*/
public function getMedicalRecordsOfThirdParty(): ?string
{
return $this->medicalRecordsOfThirdParty;
}
/**
* @param string $medicalRecordsOfThirdParty
*
* @return self
*/
public function setMedicalRecordsOfThirdParty(string $medicalRecordsOfThirdParty): self
{
$this->medicalRecordsOfThirdParty = $medicalRecordsOfThirdParty;
return $this;
}
/**
* @return string|null
*/
public function getNatureOfMedicalRecords(): ?string
{
return $this->natureOfMedicalRecords;
}
/**
* @param string|null $natureOfMedicalRecords
*
* @return self
*/
public function setNatureOfMedicalRecords(?string $natureOfMedicalRecords): self
{
$this->natureOfMedicalRecords = $natureOfMedicalRecords;
return $this;
}
/**
* @return string|null
*/
public function getHasPrivilegedOrSafeguardingInfo(): ?string
{
return $this->hasPrivilegedOrSafeguardingInfo;
}
/**
* @param string $setHasPrivilegedOrSafeguardingInfo
* @param string $hasPrivilegedOrSafeguardingInfo
*
* @return self
*/
public function setHasPrivilegedOrSafeguardingInfo(string $hasPrivilegedOrSafeguardingInfo): self
{
$this->hasPrivilegedOrSafeguardingInfo = $hasPrivilegedOrSafeguardingInfo;
return $this;
}
/**
* @return string|null
*/
public function getPrivilegedSafeguardingInfoDescription(): ?string
{
return $this->privilegedSafeguardingInfoDescription;
}
/**
* @param string|null $privilegedSafeguardingInfoDescription
*
* @return self
*/
public function setPrivilegedSafeguardingInfoDescription(?string $privilegedSafeguardingInfoDescription): self
{
$this->privilegedSafeguardingInfoDescription = $privilegedSafeguardingInfoDescription;
return $this;
}
/**
* @return string|null
*/
public function getIndicationOfMedicalRecords(): ?string
{
return $this->indicationOfMedicalRecords;
}
/**
* @param string|null $indicationOfMedicalRecords
*
* @return self
*/
public function setIndicationOfMedicalRecords(?string $indicationOfMedicalRecords): self
{
$this->indicationOfMedicalRecords = $indicationOfMedicalRecords;
return $this;
}
/**
* @return string|null
*/
public function getClinicalFactsUnderminingClaim(): ?string
{
return $this->clinicalFactsUnderminingClaim;
}
/**
* @param string|null $clinicalFactsUnderminingClaim
*
* @return self
*/
public function setClinicalFactsUnderminingClaim(?string $clinicalFactsUnderminingClaim): self
{
$this->clinicalFactsUnderminingClaim = $clinicalFactsUnderminingClaim;
return $this;
}
/**
* @return string|null
*/
public function getClinicalFactsNoBreachDutyOfCare(): ?string
{
return $this->clinicalFactsNoBreachDutyOfCare;
}
/**
* @param string|null $clinicalFactsNoBreachDutyOfCare
*
* @return self
*/
public function setClinicalFactsNoBreachDutyOfCare(?string $clinicalFactsNoBreachDutyOfCare): self
{
$this->clinicalFactsNoBreachDutyOfCare = $clinicalFactsNoBreachDutyOfCare;
return $this;
}
/**
* @return string|null
*/
public function getClinicalFactsChangingViewOnDefendantBreach(): ?string
{
return $this->clinicalFactsChangingViewOnDefendantBreach;
}
/**
* @param string|null $clinicalFactsChangingViewOnDefendantBreach
*
* @return self
*/
public function setClinicalFactsChangingViewOnDefendantBreach(?string $clinicalFactsChangingViewOnDefendantBreach): self
{
$this->clinicalFactsChangingViewOnDefendantBreach = $clinicalFactsChangingViewOnDefendantBreach;
return $this;
}
/**
* @return string|null
*/
public function getClaimedHarmOrLossMedicalRecords(): ?string
{
return $this->claimedHarmOrLossMedicalRecords;
}
/**
* @param string $claimedHarmOrLossMedicalRecords
*
* @return self
*/
public function setClaimedHarmOrLossMedicalRecords(string $claimedHarmOrLossMedicalRecords): self
{
$this->claimedHarmOrLossMedicalRecords = $claimedHarmOrLossMedicalRecords;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getCreated(): ?\DateTimeInterface
{
return $this->created;
}
/**
* @param \DateTimeInterface $created
*
* @return self
*/
public function setCreated(\DateTimeInterface $created): self
{
$this->created = $created;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getUpdated(): ?\DateTimeInterface
{
return $this->updated;
}
/**
* @param \DateTimeInterface $updated
*
* @return self
*/
public function setUpdated(\DateTimeInterface $updated): self
{
$this->updated = $updated;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getDeletedAt(): ?\DateTimeInterface
{
return $this->deletedAt;
}
/**
* @param \DateTimeInterface|null $deletedAt
*
* @return self
*/
public function setDeletedAt(?\DateTimeInterface $deletedAt): self
{
$this->deletedAt = $deletedAt;
return $this;
}
/**
* @return string|null
*/
public function getPointOfNote(): ?string
{
return $this->pointOfNote;
}
/**
* @param string|null $pointOfNote
*
* @return self
*/
public function setPointOfNote(?string $pointOfNote): self
{
$this->pointOfNote = $pointOfNote;
return $this;
}
/**
* @return string|null
*/
public function getBreachOfDutyDetails(): ?string
{
return $this->breachOfDutyDetails;
}
/**
* @param string|null $breachOfDutyDetails
*
* @return self
*/
public function setBreachOfDutyDetails(?string $breachOfDutyDetails): self
{
$this->breachOfDutyDetails = $breachOfDutyDetails;
return $this;
}
/**
* @return string|null
*/
public function getClinicalSupportDetails(): ?string
{
return $this->clinicalSupportDetails;
}
/**
* Set the value of clinicalSupportDetails
*
* @param mixed $clinicalSupportDetails
*
* @return self
*/
public function setClinicalSupportDetails($clinicalSupportDetails)
{
$this->clinicalSupportDetails = $clinicalSupportDetails;
return $this;
}
/**
* @return string|null
*/
public function getPatientHarmDetails(): ?string
{
return $this->patientHarmDetails;
}
/**
* Set the value of patientHarmDetails
*
* @param mixed $patientHarmDetails
*
* @return self
*/
public function setPatientHarmDetails($patientHarmDetails): self
{
$this->patientHarmDetails = $patientHarmDetails;
return $this;
}
/**
* @return string|null
*/
public function getPatientNoHarmDetails(): ?string
{
return $this->patientNoHarmDetails;
}
/**
* Set the value of patientNoHarmDetails
*
* @param mixed $patientNoHarmDetails
*
* @return self
*/
public function setPatientNoHarmDetails($patientNoHarmDetails): self
{
$this->patientNoHarmDetails = $patientNoHarmDetails;
return $this;
}
/**
* @return string|null
*/
public function getClinicalFactsDetails(): ?string
{
return $this->clinicalFactsDetails;
}
/**
* Set the value of clinicalFactsDetails
*
* @param mixed $clinicalFactsDetails
*
* @return self
*/
public function setClinicalFactsDetails($clinicalFactsDetails): self
{
$this->clinicalFactsDetails = $clinicalFactsDetails;
return $this;
}
/**
* @return string|null
*/
public function getInvestigationRecommendations(): ?string
{
return $this->investigationRecommendations;
}
/**
* Set the value of investigationRecommendations
*
* @param mixed $investigationRecommendations
*
* @return self
*/
public function setInvestigationRecommendations($investigationRecommendations): self
{
$this->investigationRecommendations = $investigationRecommendations;
return $this;
}
/**
* @return string|null
*/
public function getInvestigationRecommendationsPrompt(): ?string
{
return $this->investigationRecommendationsPrompt;
}
/**
* Set the value of investigationRecommendationsPrompt
*
* @param mixed $investigationRecommendationsPrompt
*
* @return self
*/
public function setInvestigationRecommendationsPrompt($investigationRecommendationsPrompt): self
{
$this->investigationRecommendationsPrompt = $investigationRecommendationsPrompt;
return $this;
}
/**
* @return string
*/
public function getMedicoLegalOpinionRecommendation(): string
{
return $this->medicoLegalOpinionRecommendation;
}
/**
* Set the value of medicoLegalOpinionRecommendation
*
* @param mixed $medicoLegalOpinionRecommendation
*
* @return self
*/
public function setMedicoLegalOpinionRecommendation($medicoLegalOpinionRecommendation): self
{
$this->medicoLegalOpinionRecommendation = $medicoLegalOpinionRecommendation;
return $this;
}
/**
* @return string|null
*/
public function getPatientHarmChangingView(): ?string
{
return $this->patientHarmChangingView;
}
/**
* Set the value of patientHarmChangingView
*
* @param mixed $patientHarmChangingView
*
* @return self
*/
public function setPatientHarmChangingView($patientHarmChangingView): self
{
$this->patientHarmChangingView = $patientHarmChangingView;
return $this;
}
/**
* @return string|null
*/
public function getContinueWithAdditionalService(): ?string
{
return $this->continueWithAdditionalService;
}
/**
* Set the value of continueWithAdditionalService
*
* @param mixed $continueWithAdditionalService
*
* @return self
*/
public function setContinueWithAdditionalService(string $continueWithAdditionalService): self
{
$this->continueWithAdditionalService = $continueWithAdditionalService;
return $this;
}
/**
* Get the value of filePath
*/
public function getFilePath(): string
{
return $this->filePath;
}
/**
* Set the value of filePath
*
* @param mixed $filePath
*
* @return self
*/
public function setFilePath(string $filePath): self
{
$this->filePath = $filePath;
return $this;
}
/**
* @return bool
*/
public function getRemoveAfterProcessing(): bool
{
return true;
}
/**
* @param string|null $filename
*
* @return self
*/
public function setOriginalFilename(string $filename): self
{
$this->originalFilename = $filename;
return $this;
}
/**
* @return string|null
*/
public function getOriginalFilename(): ?string
{
return $this->originalFilename;
}
/**
* @return string|null
*/
public function getContainingCollectionName(): ?string
{
return null;
}
/**
* @return User
*/
public function getCreator(): User
{
return $this->creator;
}
/**
* @param ?User $creator
*
* @return self
*/
public function setCreator(?User $creator): self
{
$this->creator = $creator;
return $this;
}
/**
* @return array|null
*/
public function getPatientHarmChangingViewArray(): ?array
{
return json_decode($this->patientHarmChangingView);
}
}