src/Controller/DashboardController.php line 102

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Patient;
  4. use App\Form\DashboardType;
  5. use App\Repository\PatientRepository;
  6. use App\Repository\PrimaryHipRepository;
  7. use App\Repository\PrimaryKneeRepository;
  8. use App\Repository\RevisionHipRepository;
  9. use App\Repository\RevisionKneeRepository;
  10. use App\Entity\PrimaryHip;
  11. use App\Entity\PrimaryKnee;
  12. use App\Entity\RevisionHip;
  13. use App\Entity\RevisionKnee;
  14. use App\Entity\User;
  15. use App\Entity\Hospital;
  16. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\HttpFoundation\JsonResponse;
  20. use Symfony\Component\Routing\Annotation\Route;
  21. use Symfony\Component\Form\Extension\Core\Type\TextType;
  22. use Symfony\Component\PropertyAccess\PropertyAccess;
  23. use Symfony\Component\Serializer\Encoder\JsonEncoder;
  24. use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
  25. use Symfony\Component\Serializer\Serializer;
  26. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  27. //use PhpOffice\PhpSpreadsheet\Settings;
  28. use Doctrine\ORM\EntityManagerInterface;
  29. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  30. use Symfony\Component\HttpFoundation\StreamedResponse;
  31. //use Cache\Adapter\Apcu\ApcuCachePool;
  32. //use Cache\Bridge\SimpleCache\SimpleCacheBridge;
  33. use App\Service\OperationRegistryFunctions;
  34. use App\Form\ExportFilterType;
  35. /**
  36.   * @Route("/")
  37.   */
  38. class DashboardController extends AbstractController
  39. {
  40.   public function __constructEntityManagerInterface $entityManagerOperationRegistryFunctions $OPFunctions)
  41.   {
  42.       $this->entityManager $entityManager;
  43.       $this->OPFunctions $OPFunctions;
  44.   }
  45.   private function validateDate($date$format 'Y-m-d')
  46.   {
  47.       $d date_create_from_format($format$date);
  48.       // The Y ( 4 digits year ) returns TRUE for any integer with any number of digits so changing the comparison from == to === fixes the issue.
  49.       return $d && $d->format($format) === $date;
  50.   }
  51.   //Data to identifier. Data is array. First element date second identifier
  52.   private function ageAverage ($data) {
  53.     return $pHipAgeAverageByDoctor array_sum($data)/count($data);
  54.   }
  55.   
  56.   //Age list. Data is array. First element date second identifier
  57.   private function ageList ($data) {
  58.     if($data == []) {
  59.       $pHipAgeListByDoctor 0;
  60.     }
  61.     else{
  62.       foreach ($data as $value){
  63.         $birthDate $this->OPFunctions->IdentifierToDate($value['identifier']);
  64.         $age "";
  65.         $age date_diff(date_create($birthDate), date_create($value['Date']))->y;
  66.         $pHipAgeListByDoctor[] = $age;
  67.       }
  68.     }
  69.     return $pHipAgeListByDoctor;
  70.   }
  71.   //Skaičiuojam standartinį nuokrypį
  72.   function standDeviation($arr)
  73.     {
  74.         $num_of_elements count($arr);
  75.           
  76.         $variance 0.0;
  77.           
  78.                 // calculating mean using array_sum() method
  79.         $average array_sum($arr)/$num_of_elements;
  80.           
  81.         foreach($arr as $i)
  82.         {
  83.             // sum of squares of differences between 
  84.                         // all numbers and means.
  85.             $variance += pow(($i $average), 2);
  86.         }
  87.           
  88.         return (float)sqrt($variance/$num_of_elements);
  89.     }
  90.   
  91.   /**
  92.   * @Route("/", name="app_homepage")
  93.   */
  94.   
  95.   public function stat(PrimaryHipRepository $primaryHipRepositoryPrimaryKneeRepository $primaryKneeRepositoryRevisionHipRepository $revisionHipRepositoryRevisionKneeRepository $revisionKneeRepository): Response
  96.   {
  97.     $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
  98.     $userId $this->getUser()->getId();
  99.     $hospital $this->getUser()->getHospital();
  100.     $users $hospital->getUsers();
  101.     foreach ($users as $user){
  102.       $usersId[] = $user->getId();
  103.     }
  104.     $primaryHipCount $primaryHipRepository->countAll();
  105.     $primaryKneeCount $primaryKneeRepository->countAll();
  106.     $revisionHipCount $revisionHipRepository->countAll();
  107.     $revisionKneeCount $revisionKneeRepository->countAll();
  108.     $primaryHipMyHospitalCount $primaryHipRepository->countByDoctors($usersId);
  109.     $primaryKneeMyHospitalCount $primaryKneeRepository->countByDoctors($usersId);
  110.     $revisionHipMyHospitalCount $revisionHipRepository->countByDoctors($usersId);
  111.     $revisionKneeMyHospitalCount $revisionKneeRepository->countByDoctors($usersId);
  112.     
  113.     $primaryHipMyCount $primaryHipRepository->countByDoctor($userId);
  114.     $primaryKneeMyCount $primaryKneeRepository->countByDoctor($userId);
  115.     $revisionHipMyCount $revisionHipRepository->countByDoctor($userId);
  116.     $revisionKneeMyCount $revisionKneeRepository->countByDoctor($userId);
  117.     $allPrimary $primaryHipCount $primaryKneeCount;
  118.     $allRevision $revisionHipCount $revisionKneeCount;
  119.     $allOperation $allPrimary $allRevision;
  120.     $allHips $primaryHipCount $revisionHipCount;
  121.     $allKnees $primaryKneeCount $revisionKneeCount;
  122.     $allMyPrimary $primaryHipMyCount $primaryKneeMyCount;
  123.     $allMyRevision $revisionHipMyCount $revisionKneeMyCount;
  124.     $allMyOperation $allMyPrimary $allMyRevision;
  125.     $allMyHips $primaryHipMyCount $revisionHipMyCount;
  126.     $allMyKnees $primaryKneeMyCount $revisionKneeMyCount;
  127.     $allMyHospitalPrimary $primaryHipMyHospitalCount $primaryKneeMyHospitalCount;
  128.     $allMyHospitalRevision $revisionHipMyHospitalCount $revisionKneeMyHospitalCount;
  129.     $allMyHospitalOperation $allMyHospitalPrimary $allMyHospitalRevision;
  130.     $allMyHospitalHips $primaryHipMyHospitalCount $revisionHipMyHospitalCount;
  131.     $allMyHospitalKnees $primaryKneeMyHospitalCount $revisionKneeMyHospitalCount;
  132.     return $this->render('dashboard.html.twig', [
  133.       'all_primary' => $allPrimary,
  134.       'all_revision' => $allRevision,
  135.       'all_operation' => $allOperation,
  136.       'all_hip' => $allHips,
  137.       'all_knee' => $allKnees,
  138.       'all_my_primary' => $allMyPrimary,
  139.       'all_my_revision' => $allMyRevision,
  140.       'all_my_operation' => $allMyOperation,
  141.       'all_my_hip' => $allMyHips,
  142.       'all_my_knee' => $allMyKnees,
  143.       'all_my_hospital_primary' => $allMyHospitalPrimary,
  144.       'all_my_hospital_revision' => $allMyHospitalRevision,
  145.       'all_my_hospital_operation' => $allMyHospitalOperation,
  146.       'all_my_hospital_hip' => $allMyHospitalHips,
  147.       'all_my_hospital_knee' => $allMyHospitalKnees,
  148.       'primary_hip' => $primaryHipCount,
  149.       'primary_knee' => $primaryKneeCount,
  150.       'revision_hip' => $revisionHipCount,
  151.       'revision_knee' => $revisionKneeCount,
  152.       'primary_hip_my' => $primaryHipMyCount,
  153.       'primary_knee_my' => $primaryKneeMyCount,
  154.       'revision_hip_my' => $revisionHipMyCount,
  155.       'revision_knee_my' => $revisionKneeMyCount,
  156.       'primary_hip_my_hospital' => $primaryHipMyHospitalCount,
  157.       'primary_knee_my_hospital' => $primaryKneeMyHospitalCount,
  158.       'revision_hip_my_hospital' => $revisionHipMyHospitalCount,
  159.       'revision_knee_my_hospital' => $revisionKneeMyHospitalCount,
  160.     ]);
  161.   }
  162.     /**
  163.   * @Route("/stat/ajax")
  164.   */
  165.   public function statAjax(PrimaryHipRepository $primaryHipRepositoryPrimaryKneeRepository $primaryKneeRepositoryRevisionHipRepository $revisionHipRepositoryRevisionKneeRepository $revisionKneeRepository): Response
  166.   {
  167.     $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
  168.     $userId $this->getUser()->getId();
  169.     $users $this->getUser()->getHospital()->getUsers();
  170.     foreach ($users as $user){
  171.       $usersId[] = $user->getId();
  172.     }
  173.     $primaryHipMyCount $primaryHipRepository->countByDoctor($userId);
  174.     $primaryKneeMyCount $primaryKneeRepository->countByDoctor($userId);
  175.     $revisionHipMyCount $revisionHipRepository->countByDoctor($userId);
  176.     $revisionKneeMyCount $revisionKneeRepository->countByDoctor($userId);
  177.     
  178.     $primaryHipMyHospitalCount $primaryHipRepository->countByDoctors($usersId) - $primaryHipMyCount;
  179.     $primaryKneeMyHospitalCount $primaryKneeRepository->countByDoctors($usersId) - $primaryKneeMyCount;
  180.     $revisionHipMyHospitalCount $revisionHipRepository->countByDoctors($usersId) - $revisionHipMyCount;
  181.     $revisionKneeMyHospitalCount $revisionKneeRepository->countByDoctors($usersId) - $revisionKneeMyCount;
  182.     $primaryHipCount $primaryHipRepository->countAll() - $primaryHipMyHospitalCount $primaryHipMyCount;
  183.     $primaryKneeCount $primaryKneeRepository->countAll() - $primaryKneeMyHospitalCount $primaryKneeMyCount;
  184.     $revisionHipCount $revisionHipRepository->countAll() - $revisionHipMyHospitalCount $revisionHipMyCount;
  185.     $revisionKneeCount $revisionKneeRepository->countAll() - $revisionKneeMyHospitalCount $revisionKneeMyCount;    
  186.     $Allinfo = [
  187.       'primary_hip' => $primaryKneeCount,
  188.       'primary_knee' => $primaryHipCount,
  189.       'revision_hip' => $revisionHipCount,
  190.       'revision_knee' => $revisionKneeCount,
  191.       'primary_hip_my' => $primaryHipMyCount,
  192.       'primary_knee_my' => $primaryKneeMyCount,
  193.       'revision_hip_my' => $revisionHipMyCount,
  194.       'revision_knee_my' => $revisionKneeMyCount,
  195.       'primary_hip_my_hospital' => $primaryHipMyHospitalCount,
  196.       'primary_knee_my_hospital' => $primaryKneeMyHospitalCount,
  197.       'revision_hip_my_hospital' => $revisionHipMyHospitalCount,
  198.       'revision_knee_my_hospital' => $revisionKneeMyHospitalCount,
  199.     ];
  200.     return new JsonResponse($Allinfo);
  201.   }
  202.   /**
  203.   * @Route("/stat/age/ajax")
  204.   */
  205.   public function statAgeAjax(PrimaryHipRepository $primaryHipRepositoryPrimaryKneeRepository $primaryKneeRepositoryRevisionHipRepository $revisionHipRepositoryRevisionKneeRepository $revisionKneeRepository): Response
  206.   {
  207.     $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
  208.     $doctor $this->getUser();
  209.     $userId $doctor->getId();
  210.     $hospitalId $doctor->getHospital()->getId();
  211.     
  212.     //Doctor patient
  213.     $male = [1,3,5];
  214.     $female = [2,4,6];
  215.     $diagnosis = ["Pirminė artrozė" => 1,  "Šlaunikaulio kaklo lūžis" => 1"Aseptinė nekrozė" => 1,  "Potrauminė artrozė" => 1"Reumatoidinis artritas" => 1"Displazija" => 1"Perthes liga" => 1"Po natyvinio koksito" => 1];
  216.       //All average
  217.       $pHipAllAgeByDoctor $this->ageList($primaryHipRepository->mapAgeByDoctor($userId));
  218.       $pHipAllDiagnosisByDoctor array_count_values(array_map('strval',array_column($primaryHipRepository->mapAgeByDoctor($userId),'Diagnosis')));
  219.       $part1 array_intersect_key($pHipAllDiagnosisByDoctor$diagnosis);
  220.       $part2 array_sum(array_diff_key($pHipAllDiagnosisByDoctor$diagnosis));
  221.       $part1["Kita"] = $part2;
  222.       $pHipAllDiagnosisByDoctor $part1;
  223.       //Male average
  224.       $pHipMaleAgeByDoctor $this->ageList($primaryHipRepository->mapAgeByDoctor($userId$male));
  225.       //Female average
  226.       $pHipFemaleAgeByDoctor $this->ageList($primaryHipRepository->mapAgeByDoctor($userId$female));
  227.     //Hospital patient
  228.       //all average
  229.       $pHipAllAgeByHospital $this->ageList($primaryHipRepository->mapAgeByHospital($hospitalId));
  230.       $pHipAllDiagnosisByHospital array_count_values(array_map('strval',array_column($primaryHipRepository->mapAgeByHospital($hospitalId),'Diagnosis')));
  231.       $part1 array_intersect_key($pHipAllDiagnosisByHospital$diagnosis);
  232.       $part2 array_sum(array_diff_key($pHipAllDiagnosisByHospital$diagnosis));
  233.       $part1["Kita"] = $part2;
  234.       $pHipAllDiagnosisByHospital $part1;
  235.       //Male average
  236.       $pHipMaleAgeByHospital $this->ageList($primaryHipRepository->mapAgeByHospital($hospitalId$male));
  237.       //Female average
  238.       $pHipFemaleAgeByHospital $this->ageList($primaryHipRepository->mapAgeByHospital($hospitalId$female));
  239.       
  240.     //Registry patiens
  241.       //All average
  242.       $pHipAllAge $this->ageList($primaryHipRepository->mapAllAge());
  243.       $pHipAllDiagnos array_count_values(array_map('strval',array_column($primaryHipRepository->mapAllAge(),'Diagnosis')));
  244.       $part1 array_intersect_key($pHipAllDiagnos$diagnosis);
  245.       $part2 array_sum(array_diff_key($pHipAllDiagnos$diagnosis));
  246.       $part1["Kita"] = $part2;
  247.       $pHipAllDiagnos $part1;
  248.       //Male average
  249.       $pHipMaleAge $this->ageList($primaryHipRepository->mapAllAge($male));
  250.       //Female average
  251.       $pHipFemaleAge $this->ageList($primaryHipRepository->mapAllAge($female));
  252.     $Allinfo = [
  253.       //Doctor
  254.       'pHipAllAgeByDoctor' => $pHipAllAgeByDoctor,
  255.       'pHipAllDiagnosisByDoctorValues' => array_values($pHipAllDiagnosisByDoctor),
  256.       'pHipAllDiagnosisByDoctorKeys' => array_keys($pHipAllDiagnosisByDoctor),
  257.         //Male
  258.       'pHipMaleAgeByDoctor' => $pHipMaleAgeByDoctor,
  259.         //Female
  260.       'pHipFemaleAgeByDoctor' => $pHipFemaleAgeByDoctor,
  261.       //Hospital
  262.       'pHipAllAgeByHospital' => $pHipAllAgeByHospital,
  263.       'pHipMaleAgeByHospital' => $pHipMaleAgeByHospital,
  264.       'pHipFemaleAgeByHospital' => $pHipFemaleAgeByHospital,
  265.       'pHipAllDiagnosisByHospitalValues' => array_values($pHipAllDiagnosisByHospital),
  266.       'pHipAllDiagnosisByHospitalKeys' => array_keys($pHipAllDiagnosisByHospital),
  267.       'pHipAllAge' => $pHipAllAge,
  268.       'pHipMaleAge' => $pHipMaleAge,
  269.       'pHipFemaleAge' => $pHipFemaleAge,
  270.       'pHipAllDiagnosisValues' => array_values($pHipAllDiagnos),
  271.       'pHipAllDiagnosisKeys' => array_keys($pHipAllDiagnos),
  272.     ];
  273.    // dd($Allinfo);
  274.     return new JsonResponse($Allinfo);
  275.   }
  276.   /**
  277.    * @Route("/admin/primaryKnee", name="primaryKnee_index", methods={"GET"})
  278.    */
  279.   public function primaryKnee(): Response
  280.   {
  281.     $title "Первичные дорожные операции";
  282.       return $this->render('operationTable.html.twig', [
  283.         'title' => $title
  284.       ]);
  285.   }
  286.   /**
  287.    * @Route("/admin/primaryHip", name="primaryHip_index", methods={"GET"})
  288.    */
  289.   public function primaryHip(): Response
  290.   {
  291.     $title "Первичные операции на бедре";
  292.       return $this->render('operationTable.html.twig', [
  293.         'title' => $title
  294.       ]);
  295.   }
  296.    /**
  297.    * @Route("/admin/revisionKnee", name="revisionKnee_index", methods={"GET"})
  298.    */
  299.   public function revisionKnee(): Response
  300.   {
  301.     $title "Ревизионные дорожные операции";
  302.       return $this->render('operationTable.html.twig', [
  303.         'title' => $title
  304.       ]);
  305.   }
  306.   /**
  307.    * @Route("/admin/revisionHip", name="revisionHip_index", methods={"GET"})
  308.    */
  309.   public function revisionHip(): Response
  310.   {
  311.     $title "Ревизионные операции на бедре";
  312.       return $this->render('operationTable.html.twig', [
  313.         'title' => $title
  314.       ]);
  315.   }
  316.   /**
  317.   * @Route("/admin/primaryKnee/indexAjax", methods={"GET"})
  318.   */
  319.   public function primaryKneeAjax(PrimaryKneeRepository $primaryKneeRepositoryOperationRegistryFunctions $OpRegFRequest $request): Response
  320.   {
  321.     $offset $request->query->get('start');
  322.     if ($offset == 0) {
  323.         $offset null;
  324.     }
  325.     $entryCount $request->query->get('length');
  326.     $searchString =  $request->query->get('search');
  327.     $order $request->query->get('order');
  328.     $orderBy $order[0]['column'];
  329.     switch ($orderBy) {
  330.       case 7:
  331.           $orderBy 'Date';
  332.           break;
  333.       case 4:
  334.           $orderBy 'Diagnosis';
  335.           break;
  336.       case 8:
  337.         $orderBy 'otherImplants';
  338.         break;
  339.       case 9:
  340.         $orderBy 'comment';
  341.         break;
  342.     }
  343.     $orderDir $order[0]['dir'];
  344.     $primaryKneeCount $primaryKneeRepository->countAll();
  345.     $totaEntryCount $primaryKneeCount;
  346.     if ($searchString['value'] === ""){
  347.         $primaryKnee $primaryKneeRepository->findBy([], [$orderBy => $orderDir], $entryCount$offset);
  348.         $entryCountFiltered $totaEntryCount;
  349.     }
  350.     else {
  351.         $primaryKnee $primaryKneeRepository->findByString($searchString['value'], $offset$entryCount);
  352.         $entryCountFiltered $primaryKneeRepository->findByStringCount($searchString['value']);
  353.     }
  354.     if (!empty($primaryKnee)){
  355.       $primary_data $OpRegF->jsonPrimaryDataUnit([],$primaryKnee);
  356.       $primary['recordsTotal'] = $totaEntryCount;
  357.       $primary['recordsFiltered'] = $entryCountFiltered;
  358.       $primary['draw'] = $request->query->get('draw');
  359.       $primary['data'] = $primary_data;
  360.     }
  361.     else{
  362.       $primary['recordsTotal'] = 0;
  363.       $primary['recordsFiltered'] = 0;
  364.       $primary['data'] = "";
  365.     }
  366.     return new JsonResponse($primary);
  367.   }
  368.   /**
  369.   * @Route("/admin/primaryHip/indexAjax", methods={"GET"})
  370.   */
  371.   public function primaryHipAjax(PrimaryHipRepository $primaryHipRepositoryOperationRegistryFunctions $OpRegFRequest $request): Response
  372.   {
  373.     $offset $request->query->get('start');
  374.     if ($offset == 0) {
  375.         $offset null;
  376.     }
  377.     $entryCount $request->query->get('length');
  378.     $searchString =  $request->query->get('search');
  379.     $order $request->query->get('order');
  380.     $orderBy $order[0]['column'];
  381.     switch ($orderBy) {
  382.       case 7:
  383.           $orderBy 'Date';
  384.           break;
  385.       case 4:
  386.           $orderBy 'Diagnosis';
  387.           break;
  388.       case 8:
  389.         $orderBy 'otherImplants';
  390.         break;
  391.       case 9:
  392.         $orderBy 'comment';
  393.         break;
  394.     }
  395.     $orderDir $order[0]['dir'];
  396.     $primaryHipCount $primaryHipRepository->countAll();
  397.     $totaEntryCount $primaryHipCount;
  398.     if ($searchString['value'] === ""){
  399.         $primaryHip $primaryHipRepository->findBy([], [$orderBy => $orderDir], $entryCount$offset);
  400.         $entryCountFiltered $totaEntryCount;
  401.     }
  402.     else {
  403.         $primaryHip $primaryHipRepository->findByString($searchString['value'], $offset$entryCount);
  404.         $entryCountFiltered $primaryHipRepository->findByStringCount($searchString['value']);
  405.     }
  406.     if (!empty($primaryHip)){
  407.       $primary_data $OpRegF->jsonPrimaryDataUnit($primaryHip, []);
  408.       $primary['recordsTotal'] = $totaEntryCount;
  409.       $primary['recordsFiltered'] = $entryCountFiltered;
  410.       $primary['draw'] = $request->query->get('draw');
  411.       $primary['data'] = $primary_data;
  412.     }
  413.     else{
  414.       $primary['recordsTotal'] = 0;
  415.       $primary['recordsFiltered'] = 0;
  416.       $primary['data'] = "";
  417.     }
  418.     return new JsonResponse($primary);
  419.   }
  420.   /**
  421.   * Surenkame PIRMINĖS KLUBO operacijos duomenis pasiuntimui
  422.   */
  423.   private function primaryHipData(): array
  424.   {
  425.     //ini_set("memory_limit",-1);
  426.     if($dateFrom == "" && $dateTo == ""){
  427.       $primaryHip $this->entityManager->getRepository(PrimaryHip::class)->findAll();
  428.     }
  429.     else {
  430.         if ($dateTo == "") {$dateTo date("Y-m-d");}
  431.         dd("here");
  432.       $primaryHip $this->entityManager->getRepository(PrimaryHip::class)->findFromTo($dateFrom$dateTo);
  433.     }
  434.     
  435.     $first_row = array(
  436.       'id','identifier''doctor''hospital','PatientId''PatientFirstName''PatientLastName''birth''Age''gender',
  437.       'Date''Side''Diagnosis''Incision''AdditionalInfo',
  438.       'BipolarCupName''BipolarCupRef''CementName''CementRef''CementedCupName''CementedCupRef''CementedMonoblockName''CementedMonoblockRef',
  439.       'CementedStemName''CementedStemRef''CeramicHeadName','CeramicHeadRef','CeramicLinerName''CeramicLinerRef''MetalHeadName''MetalHeadRef',
  440.       'PolyethilenLinerName''PolyethilenLinerRef''ResurfacingHeadName''ResurfacingHeadRef''RevisionStemName''RevisionStemRef',
  441.       'ShellName''ShellRef''UncementedStemName''UncementedStemRef'
  442.     );
  443.     foreach ($primaryHip as $hip){
  444.       $primary_data_unit = [];
  445.       $primary_data_unit array_fill_keys($first_row'');
  446.       $primary_data_unit['id'] = $hip->getId();
  447.       $primary_data_unit['Joint'] = "Klubas";
  448.       $primary_data_unit['Diagnosis'] = $hip->getDiagnosis();
  449.       $primary_data_unit['Technique'] = implode("; ", (array) $hip->getTechnique());
  450.       $primary_data_unit['Incision'] = $hip->getIncision();
  451.       $primary_data_unit['AdditionalInfo'] = implode("; ", (array) $hip->getAdditionalInfo());
  452.       $implants "";
  453.       $implants $hip->getImplants();
  454.       if (!empty($implants)){
  455.         $implantList = [];
  456.         foreach ($implants as $implant){
  457.           $implantList[] = $implant->getRef()."||".$implant->getName()."||".$implant->getType();
  458.           switch ($implant->getType()){
  459.             case 'Bipolar cup':
  460.               $primary_data_unit['BipolarCupName'] = $implant->getName();
  461.               $primary_data_unit['BipolarCupRef'] = $implant->getRef();
  462.               break;
  463.             case 'Bone cement':
  464.             case 'Bone cement ':
  465.               $primary_data_unit['CementName'] = $implant->getName();
  466.               $primary_data_unit['CementRef'] = $implant->getRef();
  467.               break;
  468.             case 'Cemented cup':
  469.             case 'Cup':
  470.               $primary_data_unit['CementedCupName'] = $implant->getName();
  471.               $primary_data_unit['CementedCupRef'] = $implant->getRef();
  472.               break;
  473.             case 'Cemented monoblock':
  474.               $primary_data_unit['CementedMonoblockName'] = $implant->getName();
  475.               $primary_data_unit['CementedMonoblockRef'] = $implant->getRef();
  476.               break;
  477.             case 'Cemented stem':
  478.               $primary_data_unit['CementedStemName'] = $implant->getName();
  479.               $primary_data_unit['CementedStemRef'] = $implant->getRef();
  480.               break;
  481.             case 'Ceramic head':
  482.               $primary_data_unit['CeramicHeadName'] = $implant->getName();
  483.               $primary_data_unit['CeramicHeadRef'] = $implant->getRef();
  484.               break;
  485.             case 'Ceramic liner':
  486.               $primary_data_unit['CeramicLinerName'] = $implant->getName();
  487.               $primary_data_unit['CeramicLinerRef'] = $implant->getRef();
  488.               break;
  489.             case 'Metal head':
  490.               $primary_data_unit['MetalHeadName'] = $implant->getName();
  491.               $primary_data_unit['MetalHeadRef'] = $implant->getRef();
  492.               break;
  493.             case 'Polyethilen liner':
  494.             case 'Polyethylene liner':
  495.               $primary_data_unit['PolyethilenLinerName'] = $implant->getName();
  496.               $primary_data_unit['PolyethilenLinerRef'] = $implant->getRef();
  497.               break;
  498.             case 'Resurfising head':
  499.               $primary_data_unit['ResurfacingHeadName'] = $implant->getName();
  500.               $primary_data_unit['ResurfacingHeadRef'] = $implant->getRef();
  501.               break;
  502.             case 'Revision stem':
  503.               $primary_data_unit['RevisionStemName'] = $implant->getName();
  504.               $primary_data_unit['RevisionStemRef'] = $implant->getRef();
  505.               break;
  506.             case 'Shell':
  507.               $primary_data_unit['ShellName'] = $implant->getName();
  508.               $primary_data_unit['ShellRef'] = $implant->getRef();
  509.               break;
  510.             case 'Uncemented stem':
  511.               $primary_data_unit['UncementedStemName'] = $implant->getName();
  512.               $primary_data_unit['UncementedStemRef'] = $implant->getRef();
  513.               break;
  514.           }
  515.         }
  516.       $primary_data_unit['Implants'] = implode("; "$implantList);
  517.       }
  518.       else{
  519.         $primary_data_unit['Implants'] = "";
  520.       }
  521.       $primary_data_unit['doctor'] = $hip->getDoctor()->getFirstName()." ".$hip->getDoctor()->getLastName();
  522.       $primary_data_unit['hospital'] = $hip->getDoctor()->getHospital()->getHospitalName();
  523.       if($hip->getPatientLeftHip() != null){
  524.         $joint $hip->getPatientLeftHip();
  525.         $primary_data_unit['Side'] = "Kairė";
  526.         $primary_data_unit['PatientId'] = $joint->getId();
  527.         $primary_data_unit['PatientFirstName'] = $joint->getFirstName();
  528.         $primary_data_unit['PatientLastName'] = $joint->getLastName();
  529.         $primary_data_unit['identifier'] = $joint->getIdentifier();
  530.         $primary_data_unit['gender'] = $this->IdentifierToGender($joint->getIdentifier());
  531.         $primary_data_unit['birth'] = $this->IdentifierToDate($joint->getIdentifier());
  532.       }
  533.       elseif ($hip->getPatientRightHip() != null) {
  534.         $joint $hip->getPatientRightHip();
  535.         $primary_data_unit['Side'] = "Dešinė";
  536.         $primary_data_unit['PatientId'] = $joint->getId();
  537.         $primary_data_unit['PatientFirstName'] = $joint->getFirstName();
  538.         $primary_data_unit['PatientLastName'] = $joint->getLastName();
  539.         $primary_data_unit['identifier'] = $joint->getIdentifier();
  540.         $primary_data_unit['gender'] = $this->IdentifierToGender($joint->getIdentifier());
  541.         $primary_data_unit['birth'] = $this->IdentifierToDate($joint->getIdentifier());
  542.       }
  543.       else {
  544.         $primary_data_unit['Side'] = "Patikrinkite įrašą, duomenys išsibarstę";
  545.         $primary_data_unit['PatientId'] = "???";
  546.         $primary_data_unit['PatientFirstName'] = "???";
  547.         $primary_data_unit['PatientLastName'] = "???";
  548.         $primary_data_unit['identifier'] = "???";
  549.         $primary_data_unit['gender'] = "???";
  550.         $primary_data_unit['birth'] = '1900-01-01';
  551.       }
  552.       $primary_data_unit['Date'] = $hip->getDate();
  553.       $age date_diff(date_create($primary_data_unit['birth']), date_create($primary_data_unit['Date']));
  554.       $primary_data_unit['Age'] = $age->format("%y");
  555.       $primary_data[] = $primary_data_unit;
  556.     }
  557.     return $primary_data;
  558.   }
  559.   /**
  560.   * Surenkame PIRMINĖS KELIO operacijos duomenis pasiuntimui
  561.   */
  562.   private function primaryKneeData(): array
  563.   {
  564.     ini_set("memory_limit",-1);
  565.     $primaryKnee $this->entityManager->getRepository(PrimaryKnee::class)->findAll();
  566.     foreach ($primaryKnee as $knee){
  567.       $primary_data_unit = [];
  568.       $primary_data_unit['id'] = $knee->getId();
  569.       $primary_data_unit['Joint'] = "Kelis";
  570.       $primary_data_unit['Diagnosis'] = $knee->getDiagnosis();
  571.       $primary_data_unit['Technique'] = implode("; ", (array) $knee->getTechnique());
  572.       $primary_data_unit['Incision'] = $knee->getIncision();
  573.       $primary_data_unit['AdditionalInfo'] = implode("; ", (array) $knee->getAdditionatInfo());
  574.       $primary_data_unit['CementName'] = "";
  575.       $primary_data_unit['CementRef'] = "";
  576.       $primary_data_unit['FemoralComponentName'] = "";
  577.       $primary_data_unit['FemoralComponentRef'] = "";
  578.       $primary_data_unit['InsertName'] = "";
  579.       $primary_data_unit['InsertRef'] = "";
  580.       $primary_data_unit['PatellaName'] = "";
  581.       $primary_data_unit['PatellaRef'] = "";
  582.       $primary_data_unit['TibialComponentName'] = "";
  583.       $primary_data_unit['TibialComponentRef'] = "";
  584.       $implants "";
  585.       $implants $knee->getImplants();
  586.       if (!empty($implants)){
  587.         $implantList = [];
  588.         foreach ($implants as $implant){
  589.           $implantList[] = $implant->getRef()."||".$implant->getName()."||".$implant->getType();
  590.           switch ($implant->getType()){
  591.             case 'Bone cement':
  592.             case 'Bone cement ':
  593.               $primary_data_unit['CementName'] = $implant->getName();
  594.               $primary_data_unit['CementRef'] = $implant->getRef();
  595.               break;
  596.             case 'Femoral component':
  597.               $primary_data_unit['FemoralComponentName'] = $implant->getName();
  598.               $primary_data_unit['FemoralComponentRef'] = $implant->getRef();
  599.               break;
  600.             case 'Insert':
  601.             case 'Insert ':
  602.               $primary_data_unit['InsertName'] = $implant->getName();
  603.               $primary_data_unit['InsertRef'] = $implant->getRef();
  604.               break;
  605.             case 'Patella':
  606.             case 'Pattela':
  607.               $primary_data_unit['PatellaName'] = $implant->getName();
  608.               $primary_data_unit['PatellaRef'] = $implant->getRef();
  609.               break;
  610.             case 'Tibial component':
  611.               $primary_data_unit['TibialComponentName'] = $implant->getName();
  612.               $primary_data_unit['TibialComponentRef'] = $implant->getRef();
  613.               break;
  614.           }
  615.         }
  616.       $primary_data_unit['Implants'] = implode("; "$implantList);
  617.       }
  618.       else{
  619.         $primary_data_unit['Implants'] = "";
  620.       }
  621.       $primary_data_unit['doctor'] = $knee->getDoctor()->getFirstName()." ".$knee->getDoctor()->getLastName()." iš ".$knee->getDoctor()->getHospital()->getHospitalName();
  622.       if($knee->getPatientLeftKnee() != null){
  623.         $joint $knee->getPatientLeftKnee();
  624.         $primary_data_unit['Side'] = "Kairė";
  625.         $primary_data_unit['PatientId'] = $joint->getId();
  626.         $primary_data_unit['PatientFullName'] = $joint->getFirstName()." ".$joint->getLastName();
  627.         $primary_data_unit['PatientId'] = $joint->getId();
  628.         $primary_data_unit['identifier'] = $joint->getIdentifier();
  629.         $primary_data_unit['birth'] = $this->IdentifierToDate($joint->getIdentifier());
  630.       }
  631.       elseif ($knee->getPatientRightKnee() != null) {
  632.         $joint $knee->getPatientRightKnee();
  633.         $primary_data_unit['Side'] = "Dešinė";
  634.         $primary_data_unit['PatientId'] = $joint->getId();
  635.         $primary_data_unit['PatientFullName'] = $joint->getFirstName()." ".$joint->getLastName();
  636.         $primary_data_unit['PatientId'] = $joint->getId();
  637.         $primary_data_unit['identifier'] = $joint->getIdentifier();
  638.         $primary_data_unit['birth'] = $this->IdentifierToDate($joint->getIdentifier());
  639.       }
  640.       else {
  641.         $primary_data_unit['Side'] = "Patikrinkite įrašą, duomenys išsibarstę";
  642.       }
  643.       $primary_data_unit['Date'] = $knee->getDate();
  644.       $primary_data[] = $primary_data_unit;
  645.     }
  646.     
  647.     return $primary_data;
  648.   }
  649.   /**
  650.   * Surenkame REVIZINES KLUBO operacijos duomenis pasiuntimui
  651.   */
  652.   private function revisionHipData(): array
  653.   {
  654.     ini_set("memory_limit",-1);
  655.     $revisionHip $this->entityManager->getRepository(RevisionHip::class)->findAll();
  656.       foreach ($revisionHip as $hip){
  657.           $revision_data_unit = [];
  658.           $revision_data_unit['id'] = $hip->getId();
  659.           $revision_data_unit['Joint'] = "Klubas";
  660.           $revision_data_unit['primaryHip'] = $hip->getPrimaryHip()->getId();
  661.           $revision_data_unit['RevisionCause'] = $hip->getRevisionCause();
  662.           $revision_data_unit['RevisionType'] = $hip->getRevisionType();
  663.           $revision_data_unit['Incision'] = $hip->getIncision();
  664.           $revision_data_unit['AdditionalInfo'] = implode(" ;", (array) $hip->getAdditionalInfo());
  665.           $revision_data_unit['Technique'] = implode(" ;", (array) $hip->getTechnique());
  666.           $revision_data_unit['BipolarCupName'] = "";
  667.           $revision_data_unit['BipolarCupRef'] = "";
  668.           $revision_data_unit['CementName'] = "";
  669.           $revision_data_unit['CementRef'] = "";
  670.           $revision_data_unit['CementedCupName'] = "";
  671.           $revision_data_unit['CementedCupRef'] = "";
  672.           $revision_data_unit['CementedMonoblockName'] = "";
  673.           $revision_data_unit['CementedMonoblockRef'] = "";
  674.           $revision_data_unit['CementedStemName'] = "";
  675.           $revision_data_unit['CementedStemRef'] = "";
  676.           $revision_data_unit['CeramicHeadName'] = "";
  677.           $revision_data_unit['CeramicHeadRef'] = "";
  678.           $revision_data_unit['CeramicLinerName'] = "";
  679.           $revision_data_unit['CeramicLinerRef'] = "";
  680.           $revision_data_unit['MetalHeadName'] = "";
  681.           $revision_data_unit['MetalHeadRef'] = "";
  682.           $revision_data_unit['PolyethilenLinerName'] = "";
  683.           $revision_data_unit['PolyethilenLinerRef'] = "";
  684.           $revision_data_unit['ResurfacingHeadName'] = "";
  685.           $revision_data_unit['ResurfacingHeadRef'] = "";
  686.           $revision_data_unit['RevisionStemName'] = "";
  687.           $revision_data_unit['RevisionStemRef'] = "";
  688.           $revision_data_unit['ShellName'] = "";
  689.           $revision_data_unit['ShellRef'] = "";
  690.           $revision_data_unit['UncementedStemName'] = "";
  691.           $revision_data_unit['UncementedStemRef'] = "";
  692.           $implants "";
  693.           $implants $hip->getImplants();
  694.           if (!empty($implants)){
  695.               $implantList = [];
  696.             foreach ($implants as $implant){
  697.               $implantList[] = $implant->getRef()."||".$implant->getName()."||".$implant->getType();
  698.               switch ($implant->getType()){
  699.                 case 'Bipolar cup':
  700.                   $revision_data_unit['BipolarCupName'] = $implant->getName();
  701.                   $revision_data_unit['BipolarCupRef'] = $implant->getRef();
  702.                   break;
  703.                 case 'Bone cement':
  704.                 case 'Bone cement ':
  705.                   $revision_data_unit['CementName'] = $implant->getName();
  706.                   $revision_data_unit['CementRef'] = $implant->getRef();
  707.                   break;
  708.                 case 'Cemented cup':
  709.                 case 'Cup':
  710.                   $revision_data_unit['CementedCupName'] = $implant->getName();
  711.                   $revision_data_unit['CementedCupRef'] = $implant->getRef();
  712.                   break;
  713.                 case 'Cemented monoblock':
  714.                   $revision_data_unit['CementedMonoblockName'] = $implant->getName();
  715.                   $revision_data_unit['CementedMonoblockRef'] = $implant->getRef();
  716.                   break;
  717.                 case 'Cemented stem':
  718.                   $revision_data_unit['CementedStemName'] = $implant->getName();
  719.                   $revision_data_unit['CementedStemRef'] = $implant->getRef();
  720.                   break;
  721.                 case 'Ceramic head':
  722.                   $revision_data_unit['CeramicHeadName'] = $implant->getName();
  723.                   $revision_data_unit['CeramicHeadRef'] = $implant->getRef();
  724.                   break;
  725.                 case 'Ceramic liner':
  726.                   $revision_data_unit['CeramicLinerName'] = $implant->getName();
  727.                   $revision_data_unit['CeramicLinerRef'] = $implant->getRef();
  728.                   break;
  729.                 case 'Metal head':
  730.                   $revision_data_unit['MetalHeadName'] = $implant->getName();
  731.                   $revision_data_unit['MetalHeadRef'] = $implant->getRef();
  732.                   break;
  733.                 case 'Polyethilen liner':
  734.                 case 'Polyethylene liner':
  735.                   $revision_data_unit['PolyethilenLinerName'] = $implant->getName();
  736.                   $revision_data_unit['PolyethilenLinerRef'] = $implant->getRef();
  737.                   break;
  738.                 case 'Resurfising head':
  739.                   $revision_data_unit['ResurfacingHeadName'] = $implant->getName();
  740.                   $revision_data_unit['ResurfacingHeadRef'] = $implant->getRef();
  741.                   break;
  742.                 case 'Revision stem':
  743.                   $revision_data_unit['RevisionStemName'] = $implant->getName();
  744.                   $revision_data_unit['RevisionStemRef'] = $implant->getRef();
  745.                   break;
  746.                 case 'Shell':
  747.                   $revision_data_unit['ShellName'] = $implant->getName();
  748.                   $revision_data_unit['ShellRef'] = $implant->getRef();
  749.                   break;
  750.                 case 'Uncemented stem':
  751.                   $revision_data_unit['UncementedStemName'] = $implant->getName();
  752.                   $revision_data_unit['UncementedStemRef'] = $implant->getRef();
  753.                   break;
  754.               }
  755.             }
  756.           $revision_data_unit['Implants'] = implode("; "$implantList);
  757.           }
  758.           else{
  759.             $revision_data_unit['Implants'] = "";
  760.           }
  761.           $revision_data_unit['doctor'] = $hip->getDoctor()->getFirstName()." ".$hip->getDoctor()->getLastName()." iš ".$hip->getDoctor()->getHospital()->getHospitalName();
  762.           if($hip->getPrimaryHip()->getPatientLeftHip() != null){
  763.             $joint $hip->getPrimaryHip()->getPatientLeftHip();
  764.             $revision_data_unit['Side'] = "Kairė";
  765.             $revision_data_unit['PatientId'] = $joint->getId();
  766.             $revision_data_unit['PatientFullName'] = $joint->getFirstName()." ".$joint->getLastName();
  767.             $revision_data_unit['identifier'] = $joint->getIdentifier();
  768.             $revision_data_unit['birth'] = $this->IdentifierToDate($joint->getIdentifier());
  769.           }
  770.           elseif ($hip->getPrimaryHip()->getPatientRightHip() != null) {
  771.             $joint $hip->getPrimaryHip()->getPatientRightHip();
  772.             $revision_data_unit['Side'] = "Dešinė";
  773.             $revision_data_unit['PatientId'] = $joint->getId();
  774.             $revision_data_unit['PatientFullName'] = $joint->getFirstName()." ".$joint->getLastName();
  775.             $revision_data_unit['identifier'] = $joint->getIdentifier();
  776.             $revision_data_unit['birth'] = $this->IdentifierToDate($joint->getIdentifier());
  777.           }
  778.           else {
  779.             $revision_data_unit['Side'] = "Patikrinkite įrašą, duomenys išsibarstę";
  780.             $revision_data_unit['PatientFullName'] = "???";
  781.             $revision_data_unit['identifier'] = "???";
  782.             $revision_data_unit['birth'] = '???';
  783.           }
  784.           $revision_data_unit['Date'] = $hip->getDate();
  785.           $revision_data[] = $revision_data_unit;
  786.       }
  787.     
  788.     return $revision_data;
  789.   }
  790.   /**
  791.   * Surenkame REVIZINES KELIO operacijos duomenis pasiuntimui
  792.   */
  793.   private function revisionKneeData(): array
  794.   {
  795.     ini_set("memory_limit",-1);
  796.     $revisionKnee $this->entityManager->getRepository(RevisionKnee::class)->findAll();
  797.       foreach ($revisionKnee as $knee){
  798.         $revision_data_unit['id'] = $knee->getId();
  799.         $revision_data_unit['Joint'] = "Kelis";
  800.         $revision_data_unit['primaryKnee'] = $knee->getPrimaryKnee()->getId();
  801.         $revision_data_unit['RevisionCause'] = $knee->getRevisionCause();
  802.         $revision_data_unit['RevisionType'] = $knee->getRevisionType();
  803.           $revision_data_unit['Incision'] = $knee->getIncision();
  804.           $revision_data_unit['AdditionalInfo'] = implode(" ;", (array) $knee->getAdditionalInfo());
  805.           $revision_data_unit['Technique'] = implode(" ;", (array) $knee->getTechnique());
  806.           $revision_data_unit['CementName'] = "";
  807.           $revision_data_unit['CementRef'] = "";
  808.           $revision_data_unit['FemoralComponentName'] = "";
  809.           $revision_data_unit['FemoralComponentRef'] = "";
  810.           $revision_data_unit['InsertName'] = "";
  811.           $revision_data_unit['InsertRef'] = "";
  812.           $revision_data_unit['PatellaName'] = "";
  813.           $revision_data_unit['PatellaRef'] = "";
  814.           $revision_data_unit['TibialComponentName'] = "";
  815.           $revision_data_unit['TibialComponentRef'] = "";
  816.           $implants "";
  817.           $implants $knee->getImplants();
  818.           if (!empty($implants)){
  819.               $implantList = [];
  820.             foreach ($implants as $implant){
  821.               $implantList[] = $implant->getRef()."||".$implant->getName()."||".$implant->getType();
  822.               switch ($implant->getType()){
  823.                 case 'Bone cement':
  824.                 case 'Bone cement ':
  825.                   $revision_data_unit['CementName'] = $implant->getName();
  826.                   $revision_data_unit['CementRef'] = $implant->getRef();
  827.                   break;
  828.                 case 'Femoral component':
  829.                   $revision_data_unit['FemoralComponentName'] = $implant->getName();
  830.                   $revision_data_unit['FemoralComponentRef'] = $implant->getRef();
  831.                   break;
  832.                 case 'Insert':
  833.                 case 'Insert ':
  834.                   $revision_data_unit['InsertName'] = $implant->getName();
  835.                   $revision_data_unit['InsertRef'] = $implant->getRef();
  836.                   break;
  837.                 case 'Patella':
  838.                 case 'Pattela':
  839.                   $revision_data_unit['PatellaName'] = $implant->getName();
  840.                   $revision_data_unit['PatellaRef'] = $implant->getRef();
  841.                   break;
  842.                 case 'Tibial component':
  843.                   $revision_data_unit['TibialComponentName'] = $implant->getName();
  844.                   $revision_data_unit['TibialComponentRef'] = $implant->getRef();
  845.                   break;
  846.               }
  847.             }
  848.           $revision_data_unit['Implants'] = implode("; "$implantList);
  849.           }
  850.           else{
  851.             $revision_data_unit['Implants'] = "";
  852.           }
  853.         $revision_data_unit['doctor'] = $knee->getDoctor()->getFirstName()." ".$knee->getDoctor()->getLastName()." iš ".$knee->getDoctor()->getHospital()->getHospitalName();
  854.         if($knee->getPrimaryKnee()->getPatientLeftKnee() != null){
  855.           $joint $knee->getPrimaryKnee()->getPatientLeftKnee();
  856.           $revision_data_unit['Side'] = "Kairė";
  857.           $revision_data_unit['PatientId'] = $joint->getId();
  858.           $revision_data_unit['PatientFullName'] = $joint->getFirstName()." ".$joint->getLastName();
  859.           $revision_data_unit['identifier'] = $joint->getIdentifier();
  860.           $revision_data_unit['birth'] = $this->IdentifierToDate($joint->getIdentifier());
  861.         }
  862.         elseif ($knee->getPrimaryKnee()->getPatientRightKnee() != null) {
  863.           $joint $knee->getPrimaryKnee()->getPatientRightKnee();
  864.           $revision_data_unit['Side'] = "Dešinė";
  865.           $revision_data_unit['PatientId'] = $joint->getId();
  866.           $revision_data_unit['PatientFullName'] = $joint->getFirstName()." ".$joint->getLastName();
  867.           $revision_data_unit['identifier'] = $joint->getIdentifier();
  868.           $revision_data_unit['birth'] = $this->IdentifierToDate($joint->getIdentifier());
  869.         }
  870.         else {
  871.           $revision_data_unit['Side'] = "Patikrinkite įrašą, duomenys išsibarstę";
  872.         }
  873.         $revision_data_unit['Date'] = $knee->getDate();
  874.         $revision_data[] = $revision_data_unit;
  875.       }
  876.     
  877.     return $revision_data;
  878.   
  879.   }
  880.   /**
  881.   * Surenkame PIRMINES ir Pirmas REVIZIENS KLUBO operacijas pasiuntimui
  882.   */
  883.   private function primaryAndRevisionHipData(string $dateFrom ""string $dateTo ""): array
  884.   {
  885.     ini_set("memory_limit",-1);
  886.     if($dateFrom == "" && $dateTo == ""){
  887.       $primaryHip $this->entityManager->getRepository(PrimaryHip::class)->findAll();
  888.     }
  889.     else {
  890.         if ($dateTo == "") {$dateTo date("Y-m-d");}
  891.         
  892.       $primaryHip $this->entityManager->getRepository(PrimaryHip::class)->findFromTo($dateFrom$dateTo);
  893.     }
  894.     
  895.     $first_row = array(
  896.       'id''Joint','identifier''doctor''hospital','PatientId''PatientFirstName''PatientLastName''birth''Age''gender',
  897.       'Date''Side''Diagnosis''Incision''Technique','AdditionalInfo',
  898.       'BipolarCupName''BipolarCupRef''CementName''CementRef''CementedCupName''CementedCupRef''CementedMonoblockName''CementedMonoblockRef',
  899.       'CementedStemName''CementedStemRef''CeramicHeadName','CeramicHeadRef','CeramicLinerName''CeramicLinerRef''MetalHeadName''MetalHeadRef',
  900.       'PolyethilenLinerName''PolyethilenLinerRef''ResurfacingHeadName''ResurfacingHeadRef''RevisionStemName''RevisionStemRef',
  901.       'ShellName''ShellRef''UncementedStemName''UncementedStemRef''Implants',
  902.       'RevId''RevDate''DeathDate''RevDiagnosis',
  903.       'RevBipolarCupName''RevBipolarCupRef''RevCementName''RevCementRef''RevCementedCupName''RevCementedCupRef''RevCementedMonoblockName''RevCementedMonoblockRef',
  904.       'RevCementedStemName''RevCementedStemRef''RevCeramicHeadName','RevCeramicHeadRef','RevCeramicLinerName''RevCeramicLinerRef''RevMetalHeadName''RevMetalHeadRef',
  905.       'PolyethilenLinerName''PolyethilenLinerRef''ResurfacingHeadName''ResurfacingHeadRef''RevisionStemName''RevisionStemRef',
  906.       'RevShellName''RevShellRef''RevUncementedStemName''RevUncementedStemRef''RevImplants'
  907.     );
  908.     foreach ($primaryHip as $hip){
  909.       $primary_data_unit = [];
  910.       $primary_data_unit array_fill_keys($first_row'');
  911.       $primary_data_unit['id'] = $hip->getId();
  912.       $primary_data_unit['Joint'] = "Klubas";
  913.       $primary_data_unit['Diagnosis'] = $this->OPFunctions->hipDiagnosisEncoder($hip->getDiagnosis());
  914.       $primary_data_unit['Technique'] = implode("; ", (array) $this->OPFunctions->hipTechniqueEncoder($hip->getTechnique()));
  915.       $primary_data_unit['Incision'] = $hip->getIncision();
  916.       $primary_data_unit['AdditionalInfo'] = implode("; ", (array) $this->OPFunctions->hipAdditionalInfoEncoder($hip->getAdditionalInfo()));
  917.       $implants "";
  918.       $implants $hip->getImplants();
  919.       if (!empty($implants)){
  920.         $implantList = [];
  921.         foreach ($implants as $implant){
  922.           $implantList[] = $implant->getRef()."||".$implant->getName()."||".$implant->getType();
  923.           switch ($implant->getType()){
  924.             case 'Bipolar cup':
  925.               $primary_data_unit['BipolarCupName'] = $implant->getName();
  926.               $primary_data_unit['BipolarCupRef'] = $implant->getRef();
  927.               break;
  928.             case 'Bone cement':
  929.             case 'Bone cement ':
  930.               $primary_data_unit['CementName'] = $implant->getName();
  931.               $primary_data_unit['CementRef'] = $implant->getRef();
  932.               break;
  933.             case 'Cemented cup':
  934.             case 'Cup':
  935.               $primary_data_unit['CementedCupName'] = $implant->getName();
  936.               $primary_data_unit['CementedCupRef'] = $implant->getRef();
  937.               break;
  938.             case 'Cemented monoblock':
  939.               $primary_data_unit['CementedMonoblockName'] = $implant->getName();
  940.               $primary_data_unit['CementedMonoblockRef'] = $implant->getRef();
  941.               break;
  942.             case 'Cemented stem':
  943.               $primary_data_unit['CementedStemName'] = $implant->getName();
  944.               $primary_data_unit['CementedStemRef'] = $implant->getRef();
  945.               break;
  946.             case 'Ceramic head':
  947.               $primary_data_unit['CeramicHeadName'] = $implant->getName();
  948.               $primary_data_unit['CeramicHeadRef'] = $implant->getRef();
  949.               break;
  950.             case 'Ceramic liner':
  951.               $primary_data_unit['CeramicLinerName'] = $implant->getName();
  952.               $primary_data_unit['CeramicLinerRef'] = $implant->getRef();
  953.               break;
  954.             case 'Metal head':
  955.               $primary_data_unit['MetalHeadName'] = $implant->getName();
  956.               $primary_data_unit['MetalHeadRef'] = $implant->getRef();
  957.               break;
  958.             case 'Polyethilen liner':
  959.             case 'Polyethylene liner':
  960.               $primary_data_unit['PolyethilenLinerName'] = $implant->getName();
  961.               $primary_data_unit['PolyethilenLinerRef'] = $implant->getRef();
  962.               break;
  963.             case 'Resurfising head':
  964.               $primary_data_unit['ResurfacingHeadName'] = $implant->getName();
  965.               $primary_data_unit['ResurfacingHeadRef'] = $implant->getRef();
  966.               break;
  967.             case 'Revision stem':
  968.               $primary_data_unit['RevisionStemName'] = $implant->getName();
  969.               $primary_data_unit['RevisionStemRef'] = $implant->getRef();
  970.               break;
  971.             case 'Shell':
  972.               $primary_data_unit['ShellName'] = $implant->getName();
  973.               $primary_data_unit['ShellRef'] = $implant->getRef();
  974.               break;
  975.             case 'Uncemented stem':
  976.               $primary_data_unit['UncementedStemName'] = $implant->getName();
  977.               $primary_data_unit['UncementedStemRef'] = $implant->getRef();
  978.               break;
  979.           }
  980.         }
  981.       $primary_data_unit['Implants'] = implode("; "$implantList);
  982.       $implantList = [];
  983.       }
  984.       else{
  985.         $primary_data_unit['Implants'] = "";
  986.       }
  987.       $primary_data_unit['doctor'] = $hip->getDoctor()->getFirstName()." ".$hip->getDoctor()->getLastName();
  988.       $primary_data_unit['hospital'] = $hip->getDoctor()->getHospital()->getHospitalName();
  989.       if($hip->getPatientLeftHip() != null){
  990.         $joint $hip->getPatientLeftHip();
  991.         $primary_data_unit['Side'] = "Kairė";
  992.         $primary_data_unit['PatientId'] = $joint->getId();
  993.         $primary_data_unit['PatientFirstName'] = $joint->getFirstName();
  994.         $primary_data_unit['PatientLastName'] = $joint->getLastName();
  995.         $primary_data_unit['identifier'] = $joint->getIdentifier();
  996.         $primary_data_unit['gender'] = $this->OPFunctions->IdentifierToGender($joint->getIdentifier());
  997.         $primary_data_unit['birth'] = $this->OPFunctions->IdentifierToDate($joint->getIdentifier());
  998.         $primary_data_unit['DeathDate'] = $joint->getDeathDate();
  999.       }
  1000.       elseif ($hip->getPatientRightHip() != null) {
  1001.         $joint $hip->getPatientRightHip();
  1002.         $primary_data_unit['Side'] = "Dešinė";
  1003.         $primary_data_unit['PatientId'] = $joint->getId();
  1004.         $primary_data_unit['PatientFirstName'] = $joint->getFirstName();
  1005.         $primary_data_unit['PatientLastName'] = $joint->getLastName();
  1006.         $primary_data_unit['identifier'] = $joint->getIdentifier();
  1007.         $primary_data_unit['gender'] = $this->OPFunctions->IdentifierToGender($joint->getIdentifier());
  1008.         $primary_data_unit['birth'] = $this->OPFunctions->IdentifierToDate($joint->getIdentifier());
  1009.         $primary_data_unit['DeathDate'] = $joint->getDeathDate();
  1010.       }
  1011.       else {
  1012.         $primary_data_unit['Side'] = "Patikrinkite įrašą, duomenys išsibarstę";
  1013.         $primary_data_unit['PatientId'] = "???";
  1014.         $primary_data_unit['PatientFirstName'] = "???";
  1015.         $primary_data_unit['PatientLastName'] = "???";
  1016.         $primary_data_unit['identifier'] = "???";
  1017.         $primary_data_unit['gender'] = "???";
  1018.         $primary_data_unit['birth'] = '1900-01-01';
  1019.         $primary_data_unit['DeathDate'] = '';
  1020.       }
  1021.       $primary_data_unit['Date'] = $hip->getDate();
  1022.       $age date_diff(date_create($primary_data_unit['birth']), date_create($primary_data_unit['Date']));
  1023.       $primary_data_unit['Age'] = $age->format("%y");
  1024.       
  1025.       $revisions null;
  1026.       $revisions $hip->getRevisionHip();
  1027.       $revision null;
  1028.       foreach($revisions as $rev){
  1029.         if ($revision == null) {
  1030.           if (strtotime($rev->getDate()) >= strtotime($primary_data_unit['Date'])){
  1031.             $revision $rev;
  1032.           }
  1033.         }
  1034.         else {
  1035.           if (strtotime($rev->getDate()) > strtotime($primary_data_unit['Date']) && (strtotime($rev->getDate()) < strtotime($revision->getDate()))){
  1036.           $revision $rev;
  1037.           }
  1038.         }
  1039.       }
  1040.       if($revision!=null){
  1041.         $primary_data_unit['RevId'] = $revision->getId();
  1042.         $primary_data_unit['RevDiagnosis'] = $this->OPFunctions->hipRevisionCauseEncoder($revision->getRevisionCause());
  1043.         $implants "";
  1044.         $implants $revision->getImplants();
  1045.         $implantList = [];
  1046.         if (!empty($implants)){
  1047.             $implantList = [];
  1048.           foreach ($implants as $implant){
  1049.             $implantList[] = $implant->getRef()."||".$implant->getName()."||".$implant->getType();
  1050.             switch ($implant->getType()){
  1051.               case 'Bipolar cup':
  1052.                 $primary_data_unit['RevBipolarCupName'] = $implant->getName();
  1053.                 $primary_data_unit['RevBipolarCupRef'] = $implant->getRef();
  1054.                 break;
  1055.               case 'Bone cement':
  1056.               case 'Bone cement ':
  1057.                 $primary_data_unit['RevCementName'] = $implant->getName();
  1058.                 $primary_data_unit['RevCementRef'] = $implant->getRef();
  1059.                 break;
  1060.               case 'Cemented cup':
  1061.               case 'Cup':
  1062.                 $primary_data_unit['RevCementedCupName'] = $implant->getName();
  1063.                 $primary_data_unit['RevCementedCupRef'] = $implant->getRef();
  1064.                 break;
  1065.               case 'Cemented monoblock':
  1066.                 $primary_data_unit['RevCementedMonoblockName'] = $implant->getName();
  1067.                 $primary_data_unit['RevCementedMonoblockRef'] = $implant->getRef();
  1068.                 break;
  1069.               case 'Cemented stem':
  1070.                 $primary_data_unit['RevCementedStemName'] = $implant->getName();
  1071.                 $primary_data_unit['RevCementedStemRef'] = $implant->getRef();
  1072.                 break;
  1073.               case 'Ceramic head':
  1074.                 $primary_data_unit['RevCeramicHeadName'] = $implant->getName();
  1075.                 $primary_data_unit['RevCeramicHeadRef'] = $implant->getRef();
  1076.                 break;
  1077.               case 'Ceramic liner':
  1078.                 $primary_data_unit['RevCeramicLinerName'] = $implant->getName();
  1079.                 $primary_data_unit['RevCeramicLinerRef'] = $implant->getRef();
  1080.                 break;
  1081.               case 'Metal head':
  1082.                 $primary_data_unit['RevMetalHeadName'] = $implant->getName();
  1083.                 $primary_data_unit['RevMetalHeadRef'] = $implant->getRef();
  1084.                 break;
  1085.               case 'Polyethilen liner':
  1086.               case 'Polyethylene liner':
  1087.                 $primary_data_unit['RevPolyethilenLinerName'] = $implant->getName();
  1088.                 $primary_data_unit['RevPolyethilenLinerRef'] = $implant->getRef();
  1089.                 break;
  1090.               case 'Resurfising head':
  1091.                 $primary_data_unit['RevResurfacingHeadName'] = $implant->getName();
  1092.                 $primary_data_unit['RevResurfacingHeadRef'] = $implant->getRef();
  1093.                 break;
  1094.               case 'Revision stem':
  1095.                 $primary_data_unit['RevRevisionStemName'] = $implant->getName();
  1096.                 $primary_data_unit['RevRevisionStemRef'] = $implant->getRef();
  1097.                 break;
  1098.               case 'Shell':
  1099.                 $primary_data_unit['RevShellName'] = $implant->getName();
  1100.                 $primary_data_unit['RevShellRef'] = $implant->getRef();
  1101.                 break;
  1102.               case 'Uncemented stem':
  1103.                 $primary_data_unit['RevUncementedStemName'] = $implant->getName();
  1104.                 $primary_data_unit['RevUncementedStemRef'] = $implant->getRef();
  1105.                 break;
  1106.             }
  1107.           }
  1108.         $primary_data_unit['RevImplants'] = implode("; "$implantList);
  1109.         }
  1110.         else{
  1111.           $primary_data_unit['RevImplants'] = "";
  1112.         }
  1113.         $primary_data_unit['RevDate'] = $revision->getDate();
  1114.       }
  1115.       $primary_data[] = $primary_data_unit;
  1116.     }
  1117.     
  1118.     //dd($primary_data[49]);
  1119.     return $primary_data;
  1120.   }
  1121.   /**
  1122.   * Surenkame REVIZINES ir REVIZINES KLUBO operacijos duomenis pasiuntimui
  1123.   */
  1124.   private function revisionAndRevisionHipData(string $dateFrom ""string $dateTo ""): array
  1125.   {
  1126.     ini_set("memory_limit",-1);
  1127.     if($dateFrom == "" && $dateTo == ""){
  1128.       $revisionHip $this->entityManager->getRepository(RevisionHip::class)->findAll();
  1129.     }
  1130.     else {
  1131.         if ($dateTo == "") {$dateTo date("Y-m-d");}
  1132.         
  1133.       $revisionHip $this->entityManager->getRepository(RevisionHip::class)->findFromTo($dateFrom$dateTo);
  1134.     }
  1135.     
  1136.     $first_row = array(
  1137.       'id','primaryHip''Joint','identifier''doctor''hospital','PatientId''PatientFirstName''PatientLastName''birth''Age''gender',
  1138.       'Date''Side''RevisionCause''RevisionType''Incision''Technique','AdditionalInfo',
  1139.       'BipolarCupName''BipolarCupRef''CementName''CementRef''CementedCupName''CementedCupRef''CementedMonoblockName''CementedMonoblockRef',
  1140.       'CementedStemName''CementedStemRef''CeramicHeadName','CeramicHeadRef','CeramicLinerName''CeramicLinerRef''MetalHeadName''MetalHeadRef',
  1141.       'PolyethilenLinerName''PolyethilenLinerRef''ResurfacingHeadName''ResurfacingHeadRef''RevisionStemName''RevisionStemRef',
  1142.       'ShellName''ShellRef''UncementedStemName''UncementedStemRef''Implants',
  1143.       'RevId''RevDate''DeathDate''RevDiagnosis',
  1144.       'RevBipolarCupName''RevBipolarCupRef''RevCementName''RevCementRef''RevCementedCupName''RevCementedCupRef''RevCementedMonoblockName''RevCementedMonoblockRef',
  1145.       'RevCementedStemName''RevCementedStemRef''RevCeramicHeadName','RevCeramicHeadRef','RevCeramicLinerName''RevCeramicLinerRef''RevMetalHeadName''RevMetalHeadRef',
  1146.       'PolyethilenLinerName''PolyethilenLinerRef''ResurfacingHeadName''ResurfacingHeadRef''RevisionStemName''RevisionStemRef',
  1147.       'RevShellName''RevShellRef''RevUncementedStemName''RevUncementedStemRef''RevImplants'
  1148.     );
  1149.       foreach ($revisionHip as $hip){
  1150.           $revision_data_unit = [];
  1151.           $revision_data_unit array_fill_keys($first_row'');
  1152.           $revision_data_unit['id'] = $hip->getId();
  1153.           $revision_data_unit['Joint'] = "Klubas";
  1154.           $revision_data_unit['primaryHip'] = $hip->getPrimaryHip()->getId();
  1155.           $revision_data_unit['RevisionCause'] = $this->OPFunctions->hipRevisionCauseEncoder($hip->getRevisionCause());
  1156.           $revision_data_unit['RevisionType'] = $this->OPFunctions->hipRevisionTypeEncoder($hip->getRevisionType());
  1157.           $revision_data_unit['Incision'] = $hip->getIncision();
  1158.           $revision_data_unit['AdditionalInfo'] = implode("; ", (array) $this->OPFunctions->hipAdditionalInfoEncoder($hip->getAdditionalInfo()));
  1159.           $revision_data_unit['Technique'] = implode("; ", (array) $this->OPFunctions->hipTechniqueEncoder($hip->getTechnique()));
  1160.           $implants "";
  1161.           $implants $hip->getImplants();
  1162.           $implantList = [];
  1163.           if (!empty($implants)){
  1164.               $implantList = [];
  1165.             foreach ($implants as $implant){
  1166.               $implantList[] = $implant->getRef()."||".$implant->getName()."||".$implant->getType();
  1167.               switch ($implant->getType()){
  1168.                 case 'Bipolar cup':
  1169.                   $revision_data_unit['BipolarCupName'] = $implant->getName();
  1170.                   $revision_data_unit['BipolarCupRef'] = $implant->getRef();
  1171.                   break;
  1172.                 case 'Bone cement':
  1173.                 case 'Bone cement ':
  1174.                   $revision_data_unit['CementName'] = $implant->getName();
  1175.                   $revision_data_unit['CementRef'] = $implant->getRef();
  1176.                   break;
  1177.                 case 'Cemented cup':
  1178.                 case 'Cup':
  1179.                   $revision_data_unit['CementedCupName'] = $implant->getName();
  1180.                   $revision_data_unit['CementedCupRef'] = $implant->getRef();
  1181.                   break;
  1182.                 case 'Cemented monoblock':
  1183.                   $revision_data_unit['CementedMonoblockName'] = $implant->getName();
  1184.                   $revision_data_unit['CementedMonoblockRef'] = $implant->getRef();
  1185.                   break;
  1186.                 case 'Cemented stem':
  1187.                   $revision_data_unit['CementedStemName'] = $implant->getName();
  1188.                   $revision_data_unit['CementedStemRef'] = $implant->getRef();
  1189.                   break;
  1190.                 case 'Ceramic head':
  1191.                   $revision_data_unit['CeramicHeadName'] = $implant->getName();
  1192.                   $revision_data_unit['CeramicHeadRef'] = $implant->getRef();
  1193.                   break;
  1194.                 case 'Ceramic liner':
  1195.                   $revision_data_unit['CeramicLinerName'] = $implant->getName();
  1196.                   $revision_data_unit['CeramicLinerRef'] = $implant->getRef();
  1197.                   break;
  1198.                 case 'Metal head':
  1199.                   $revision_data_unit['MetalHeadName'] = $implant->getName();
  1200.                   $revision_data_unit['MetalHeadRef'] = $implant->getRef();
  1201.                   break;
  1202.                 case 'Polyethilen liner':
  1203.                 case 'Polyethylene liner':
  1204.                   $revision_data_unit['PolyethilenLinerName'] = $implant->getName();
  1205.                   $revision_data_unit['PolyethilenLinerRef'] = $implant->getRef();
  1206.                   break;
  1207.                 case 'Resurfising head':
  1208.                   $revision_data_unit['ResurfacingHeadName'] = $implant->getName();
  1209.                   $revision_data_unit['ResurfacingHeadRef'] = $implant->getRef();
  1210.                   break;
  1211.                 case 'Revision stem':
  1212.                   $revision_data_unit['RevisionStemName'] = $implant->getName();
  1213.                   $revision_data_unit['RevisionStemRef'] = $implant->getRef();
  1214.                   break;
  1215.                 case 'Shell':
  1216.                   $revision_data_unit['ShellName'] = $implant->getName();
  1217.                   $revision_data_unit['ShellRef'] = $implant->getRef();
  1218.                   break;
  1219.                 case 'Uncemented stem':
  1220.                   $revision_data_unit['UncementedStemName'] = $implant->getName();
  1221.                   $revision_data_unit['UncementedStemRef'] = $implant->getRef();
  1222.                   break;
  1223.               }
  1224.             }
  1225.           $revision_data_unit['Implants'] = implode("; "$implantList);
  1226.           }
  1227.           else{
  1228.             $revision_data_unit['Implants'] = "";
  1229.           }
  1230.           $revision_data_unit['doctor'] = $hip->getDoctor()->getFirstName()." ".$hip->getDoctor()->getLastName();
  1231.           $revision_data_unit['hospital'] = $hip->getDoctor()->getHospital()->getHospitalName();
  1232.           if($hip->getPrimaryHip()->getPatientLeftHip() != null){
  1233.             $joint $hip->getPrimaryHip()->getPatientLeftHip();
  1234.             $revision_data_unit['Side'] = "Kairė";
  1235.             $revision_data_unit['PatientId'] = $joint->getId();
  1236.             $revision_data_unit['PatientFirstName'] = $joint->getFirstName();
  1237.             $revision_data_unit['PatientLastName'] = $joint->getLastName();
  1238.             $revision_data_unit['identifier'] = $joint->getIdentifier();
  1239.             $revision_data_unit['gender'] = $this->OPFunctions->IdentifierToGender($joint->getIdentifier());
  1240.             $revision_data_unit['birth'] = $this->OPFunctions->IdentifierToDate($joint->getIdentifier());
  1241.             $revision_data_unit['DeathDate'] = $joint->getDeathDate();
  1242.           }
  1243.           elseif ($hip->getPrimaryHip()->getPatientRightHip() != null) {
  1244.             $joint $hip->getPrimaryHip()->getPatientRightHip();
  1245.             $revision_data_unit['Side'] = "Dešinė";
  1246.             $revision_data_unit['PatientId'] = $joint->getId();
  1247.             $revision_data_unit['PatientFirstName'] = $joint->getFirstName();
  1248.             $revision_data_unit['PatientLastName'] = $joint->getLastName();
  1249.             $revision_data_unit['identifier'] = $joint->getIdentifier();
  1250.             $revision_data_unit['gender'] = $this->OPFunctions->IdentifierToGender($joint->getIdentifier());
  1251.             $revision_data_unit['birth'] = $this->OPFunctions->IdentifierToDate($joint->getIdentifier());
  1252.             $revision_data_unit['DeathDate'] = $joint->getDeathDate();
  1253.           }
  1254.           else {
  1255.             $revision_data_unit['Side'] = "Patikrinkite įrašą, duomenys išsibarstę";
  1256.             $revision_data_unit['PatientFirstName'] = "???";
  1257.             $revision_data_unit['PatientLastName'] = "???";
  1258.             $revision_data_unit['identifier'] = "???";
  1259.             $revision_data_unit['birth'] = '???';
  1260.             $revision_data_unit['gender'] = "???";
  1261.             $revision_data_unit['birth'] = '1900-01-01';
  1262.             $revision_data_unit['DeathDate'] = '';
  1263.           }
  1264.           $revision_data_unit['Date'] = $hip->getDate();
  1265.           $age date_diff(date_create($revision_data_unit['birth']), date_create($revision_data_unit['Date']));
  1266.           $revision_data_unit['Age'] = $age->format("%y");
  1267.           $revisions null;
  1268.           $revisions $hip->getPrimaryHip()->getRevisionHip();
  1269.           $revision null;
  1270.           foreach($revisions as $rev){
  1271.             if ($revision == null) {
  1272.               if (strtotime($rev->getDate()) > strtotime($revision_data_unit['Date'])){
  1273.                 $revision $rev;
  1274.               }
  1275.             }
  1276.             else {
  1277.               if (strtotime($rev->getDate()) > strtotime($revision_data_unit['Date']) && (strtotime($rev->getDate()) < strtotime($revision->getDate()))){
  1278.               $revision $rev;
  1279.               }
  1280.             }
  1281.           }
  1282.           if($revision!=null){
  1283.             $revision_data_unit['RevId'] = $revision->getId();
  1284.             $revision_data_unit['RevDiagnosis'] = $this->OPFunctions->hipRevisionCauseEncoder($revision->getRevisionCause());
  1285.             $implants "";
  1286.             $implants $revision->getImplants();
  1287.             if (!empty($implants)){
  1288.                 $implantList = [];
  1289.               foreach ($implants as $implant){
  1290.                 $implantList[] = $implant->getRef()."||".$implant->getName()."||".$implant->getType();
  1291.                 switch ($implant->getType()){
  1292.                   case 'Bipolar cup':
  1293.                     $revision_data_unit['RevBipolarCupName'] = $implant->getName();
  1294.                     $revision_data_unit['RevBipolarCupRef'] = $implant->getRef();
  1295.                     break;
  1296.                   case 'Bone cement':
  1297.                   case 'Bone cement ':
  1298.                     $revision_data_unit['RevCementName'] = $implant->getName();
  1299.                     $revision_data_unit['RevCementRef'] = $implant->getRef();
  1300.                     break;
  1301.                   case 'Cemented cup':
  1302.                   case 'Cup':
  1303.                     $revision_data_unit['RevCementedCupName'] = $implant->getName();
  1304.                     $revision_data_unit['RevCementedCupRef'] = $implant->getRef();
  1305.                     break;
  1306.                   case 'Cemented monoblock':
  1307.                     $revision_data_unit['RevCementedMonoblockName'] = $implant->getName();
  1308.                     $revision_data_unit['RevCementedMonoblockRef'] = $implant->getRef();
  1309.                     break;
  1310.                   case 'Cemented stem':
  1311.                     $revision_data_unit['RevCementedStemName'] = $implant->getName();
  1312.                     $revision_data_unit['RevCementedStemRef'] = $implant->getRef();
  1313.                     break;
  1314.                   case 'Ceramic head':
  1315.                     $revision_data_unit['RevCeramicHeadName'] = $implant->getName();
  1316.                     $revision_data_unit['RevCeramicHeadRef'] = $implant->getRef();
  1317.                     break;
  1318.                   case 'Ceramic liner':
  1319.                     $revision_data_unit['RevCeramicLinerName'] = $implant->getName();
  1320.                     $revision_data_unit['RevCeramicLinerRef'] = $implant->getRef();
  1321.                     break;
  1322.                   case 'Metal head':
  1323.                     $revision_data_unit['RevMetalHeadName'] = $implant->getName();
  1324.                     $revision_data_unit['RevMetalHeadRef'] = $implant->getRef();
  1325.                     break;
  1326.                   case 'Polyethilen liner':
  1327.                   case 'Polyethylene liner':
  1328.                     $revision_data_unit['RevPolyethilenLinerName'] = $implant->getName();
  1329.                     $revision_data_unit['RevPolyethilenLinerRef'] = $implant->getRef();
  1330.                     break;
  1331.                   case 'Resurfising head':
  1332.                     $revision_data_unit['RevResurfacingHeadName'] = $implant->getName();
  1333.                     $revision_data_unit['RevResurfacingHeadRef'] = $implant->getRef();
  1334.                     break;
  1335.                   case 'Revision stem':
  1336.                     $revision_data_unit['RevRevisionStemName'] = $implant->getName();
  1337.                     $revision_data_unit['RevRevisionStemRef'] = $implant->getRef();
  1338.                     break;
  1339.                   case 'Shell':
  1340.                     $revision_data_unit['RevShellName'] = $implant->getName();
  1341.                     $revision_data_unit['RevShellRef'] = $implant->getRef();
  1342.                     break;
  1343.                   case 'Uncemented stem':
  1344.                     $revision_data_unit['RevUncementedStemName'] = $implant->getName();
  1345.                     $revision_data_unit['RevUncementedStemRef'] = $implant->getRef();
  1346.                     break;
  1347.                 }
  1348.               }
  1349.             $revision_data_unit['RevImplants'] = implode("; "$implantList);
  1350.             }
  1351.             else{
  1352.               $revision_data_unit['RevImplants'] = "";
  1353.             }
  1354.             $revision_data_unit['RevDate'] = $revision->getDate();
  1355.           }
  1356.           $revision_data[] = $revision_data_unit;
  1357.           $revision_data_unit = [];
  1358.       }
  1359.     //dd($revision_data);
  1360.     return $revision_data;
  1361.   }
  1362.     /**
  1363.   * Surenkame PIRMINĖS ir REVIZINĖS KELIO operacijos duomenis pasiuntimui
  1364.   */
  1365.   private function primaryAndRevisionKneeData(string $dateFrom ""string $dateTo ""): array
  1366.   {
  1367.     ini_set("memory_limit",-1);
  1368.     if($dateFrom == "" && $dateTo == ""){
  1369.       $primaryKnee $this->entityManager->getRepository(PrimaryKnee::class)->findAll();
  1370.     }
  1371.     else {
  1372.         if ($dateTo == "") {$dateTo date("Y-m-d");}
  1373.         
  1374.       $primaryKnee $this->entityManager->getRepository(PrimaryKnee::class)->findFromTo($dateFrom$dateTo);
  1375.     }
  1376.     
  1377.     $first_row = array(
  1378.       'id''Joint','identifier''doctor''hospital','PatientId''PatientFirstName''PatientLastName''birth''Age''gender',
  1379.       'Date''Side''Diagnosis''Incision''Technique','AdditionalInfo',
  1380.       'CementName''CementRef''FemoralComponentName''FemoralComponentRef''InsertName''InsertRef',
  1381.       'PatellaName''PatellaRef''TibialComponentName','TibialComponentRef''Implants',
  1382.       'RevId''RevDate''DeathDate''RevDiagnosis',
  1383.       'RevCementName''RevCementRef''RevFemoralComponentName''RevFemoralComponentRef''RevInsertName''RevInsertRef',
  1384.       'RevPatellaName''RevPatellaRef''RevTibialComponentName','RevTibialComponentRef''RevImplants'
  1385.     );
  1386.     foreach ($primaryKnee as $knee){
  1387.       $primary_data_unit = [];
  1388.       $primary_data_unit array_fill_keys($first_row'');
  1389.       $primary_data_unit['id'] = $knee->getId();
  1390.       $primary_data_unit['Joint'] = "Kelis";
  1391.       $primary_data_unit['Diagnosis'] = $this->OPFunctions->kneeDiagnosisEncoder($knee->getDiagnosis());
  1392.       $primary_data_unit['Technique'] = implode("; ", (array) $this->OPFunctions->kneeTechniqueEncoder($knee->getTechnique()));
  1393.       $primary_data_unit['Incision'] = $knee->getIncision();
  1394.       $primary_data_unit['AdditionalInfo'] = implode("; ", (array) $this->OPFunctions->kneeAdditionalInfoEncoder($knee->getAdditionatInfo()));
  1395.       $implants "";
  1396.       $implants $knee->getImplants();
  1397.       if (!empty($implants)){
  1398.         $implantList = [];
  1399.         foreach ($implants as $implant){
  1400.           $implantList[] = $implant->getRef()."||".$implant->getName()."||".$implant->getType();
  1401.           switch ($implant->getType()){
  1402.             case 'Bone cement':
  1403.             case 'Bone cement ':
  1404.               $primary_data_unit['CementName'] = $implant->getName();
  1405.               $primary_data_unit['CementRef'] = $implant->getRef();
  1406.               break;
  1407.             case 'Femoral component':
  1408.               $primary_data_unit['FemoralComponentName'] = $implant->getName();
  1409.               $primary_data_unit['FemoralComponentRef'] = $implant->getRef();
  1410.               break;
  1411.             case 'Insert':
  1412.             case 'Insert ':
  1413.               $primary_data_unit['InsertName'] = $implant->getName();
  1414.               $primary_data_unit['InsertRef'] = $implant->getRef();
  1415.               break;
  1416.             case 'Patella':
  1417.             case 'Pattela':
  1418.               $primary_data_unit['PatellaName'] = $implant->getName();
  1419.               $primary_data_unit['PatellaRef'] = $implant->getRef();
  1420.               break;
  1421.             case 'Tibial component':
  1422.               $primary_data_unit['TibialComponentName'] = $implant->getName();
  1423.               $primary_data_unit['TibialComponentRef'] = $implant->getRef();
  1424.               break;
  1425.           }
  1426.         }
  1427.       $primary_data_unit['Implants'] = implode("; "$implantList);
  1428.       }
  1429.       else{
  1430.         $primary_data_unit['Implants'] = "";
  1431.       }
  1432.       $primary_data_unit['doctor'] = $knee->getDoctor()->getFirstName()." ".$knee->getDoctor()->getLastName();
  1433.       $primary_data_unit['hospital'] = $knee->getDoctor()->getHospital()->getHospitalName();
  1434.       if($knee->getPatientLeftKnee() != null){
  1435.         $joint $knee->getPatientLeftKnee();
  1436.         $primary_data_unit['Side'] = "Kairė";
  1437.         $primary_data_unit['PatientId'] = $joint->getId();
  1438.         $primary_data_unit['PatientFirstName'] = $joint->getFirstName();
  1439.         $primary_data_unit['PatientLastName'] = $joint->getLastName();
  1440.         $primary_data_unit['identifier'] = $joint->getIdentifier();
  1441.         $primary_data_unit['gender'] = $this->OPFunctions->IdentifierToGender($joint->getIdentifier());
  1442.         $primary_data_unit['birth'] = $this->OPFunctions->IdentifierToDate($joint->getIdentifier());
  1443.         $primary_data_unit['DeathDate'] = $joint->getDeathDate();
  1444.       }
  1445.       elseif ($knee->getPatientRightKnee() != null) {
  1446.         $joint $knee->getPatientRightKnee();
  1447.         $primary_data_unit['Side'] = "Dešinė";
  1448.         $primary_data_unit['PatientId'] = $joint->getId();
  1449.         $primary_data_unit['PatientFirstName'] = $joint->getFirstName();
  1450.         $primary_data_unit['PatientLastName'] = $joint->getLastName();
  1451.         $primary_data_unit['identifier'] = $joint->getIdentifier();
  1452.         $primary_data_unit['gender'] = $this->OPFunctions->IdentifierToGender($joint->getIdentifier());
  1453.         $primary_data_unit['birth'] = $this->OPFunctions->IdentifierToDate($joint->getIdentifier());
  1454.         $primary_data_unit['DeathDate'] = $joint->getDeathDate();
  1455.       }
  1456.       else {
  1457.         $primary_data_unit['Side'] = "Patikrinkite įrašą, duomenys išsibarstę";
  1458.         $primary_data_unit['PatientId'] = "???";
  1459.         $primary_data_unit['PatientFirstName'] = "???";
  1460.         $primary_data_unit['PatientLastName'] = "???";
  1461.         $primary_data_unit['hospital'] = "???";
  1462.         $primary_data_unit['identifier'] = "???";
  1463.         $primary_data_unit['gender'] = "???";
  1464.         $primary_data_unit['birth'] = '1900-01-01';
  1465.         $primary_data_unit['DeathDate'] = '';
  1466.       }
  1467.       $primary_data_unit['Date'] = $knee->getDate();
  1468.         $age "";
  1469.         if($this->validateDate($primary_data_unit['birth']) && $this->validateDate($primary_data_unit['Date'])){
  1470.           $age =date_diff(date_create($primary_data_unit['birth']), date_create($primary_data_unit['Date']));
  1471.           $primary_data_unit['Age'] = $age->format("%y");
  1472.         }
  1473.         else{
  1474.           $primary_data_unit['Age'] = "???";
  1475.         }
  1476.         
  1477.       $revisions null;
  1478.       $revisions $knee->getRevisionKnees();
  1479.       $revision null;
  1480.       foreach($revisions as $rev){
  1481.         if ($revision == null) {
  1482.           if (strtotime($rev->getDate()) >= strtotime($primary_data_unit['Date'])){
  1483.             $revision $rev;
  1484.           }
  1485.         }
  1486.         else {
  1487.           if (strtotime($rev->getDate()) > strtotime($primary_data_unit['Date']) && (strtotime($rev->getDate()) < strtotime($revision->getDate()))){
  1488.           $revision $rev;
  1489.           }
  1490.         }
  1491.       }
  1492.       if($revision!=null){
  1493.         $primary_data_unit['RevId'] = $revision->getId();
  1494.         $primary_data_unit['RevDiagnosis'] = $this->OPFunctions->kneeRevisionCauseEncoder($revision->getRevisionCause());
  1495.         $implants "";
  1496.         $implants $revision->getImplants();
  1497.         if (!empty($implants)){
  1498.             $implantList = [];
  1499.           foreach ($implants as $implant){
  1500.             $implantList[] = $implant->getRef()."||".$implant->getName()."||".$implant->getType();
  1501.             switch ($implant->getType()){
  1502.               case 'Bone cement':
  1503.               case 'Bone cement ':
  1504.                 $primary_data_unit['RevCementName'] = $implant->getName();
  1505.                 $primary_data_unit['RevCementRef'] = $implant->getRef();
  1506.                 break;
  1507.               case 'Femoral component':
  1508.                 $primary_data_unit['RevFemoralComponentName'] = $implant->getName();
  1509.                 $primary_data_unit['RevFemoralComponentRef'] = $implant->getRef();
  1510.                 break;
  1511.               case 'Insert':
  1512.               case 'Insert ':
  1513.                 $primary_data_unit['RevInsertName'] = $implant->getName();
  1514.                 $primary_data_unit['RevInsertRef'] = $implant->getRef();
  1515.                 break;
  1516.               case 'Patella':
  1517.               case 'Pattela':
  1518.                 $primary_data_unit['RevPatellaName'] = $implant->getName();
  1519.                 $primary_data_unit['RevPatellaRef'] = $implant->getRef();
  1520.                 break;
  1521.               case 'Tibial component':
  1522.                 $primary_data_unit['RevTibialComponentName'] = $implant->getName();
  1523.                 $primary_data_unit['RevTibialComponentRef'] = $implant->getRef();
  1524.                 break;
  1525.             }
  1526.           }
  1527.         $primary_data_unit['Implants'] = implode("; "$implantList);
  1528.         }
  1529.         else{
  1530.           $primary_data_unit['Implants'] = "";
  1531.         }
  1532.         $primary_data_unit['RevDate'] = $revision->getDate();
  1533.       }
  1534.       $primary_data[] = $primary_data_unit;
  1535.     }
  1536.     
  1537.     return $primary_data;
  1538.   }
  1539.   /**
  1540.   * Surenkame REVIZINIS ir Pirmas REVIZIENS KELIO operacijas pasiuntimui
  1541.   */
  1542.   private function revisionAndRevisionKneeData(string $dateFrom ""string $dateTo ""): array
  1543.   {
  1544.     ini_set("memory_limit",-1);
  1545.     if($dateFrom == "" && $dateTo == ""){
  1546.       $revisionKnee $this->entityManager->getRepository(RevisionKnee::class)->findAll();
  1547.     }
  1548.     else {
  1549.         if ($dateTo == "") {$dateTo date("Y-m-d");}
  1550.         
  1551.       $revisionKnee $this->entityManager->getRepository(RevisionKnee::class)->findFromTo($dateFrom$dateTo);
  1552.     }
  1553.     
  1554.     $first_row = array(
  1555.       'id''Joint','identifier''doctor''hospital','PatientId''PatientFirstName''PatientLastName''birth''Age''gender',
  1556.       'Date''Side''RevisionCause''RevisionType''Incision''Technique','AdditionalInfo',
  1557.       'CementName''CementRef''FemoralComponentName''FemoralComponentRef''InsertName''InsertRef',
  1558.       'PatellaName''PatellaRef''TibialComponentName','TibialComponentRef''Implants',
  1559.       'RevId''RevDate''DeathDate''RevDiagnosis',
  1560.       'RevCementName''RevCementRef''RevFemoralComponentName''RevFemoralComponentRef''RevInsertName''RevInsertRef',
  1561.       'RevPatellaName''RevPatellaRef''RevTibialComponentName','RevTibialComponentRef''RevImplants'
  1562.     );
  1563.       foreach ($revisionKnee as $knee){
  1564.         $revision_data_unit = [];
  1565.         $revision_data_unit array_fill_keys($first_row'');
  1566.         $revision_data_unit['id'] = $knee->getId();
  1567.         $revision_data_unit['Joint'] = "Kelis";
  1568.         $revision_data_unit['primaryKnee'] = $knee->getPrimaryKnee()->getId();
  1569.         $revision_data_unit['RevisionCause'] = $this->OPFunctions->kneeRevisionCauseEncoder($knee->getRevisionCause());
  1570.         $revision_data_unit['RevisionType'] = $this->OPFunctions->kneeRevisionTypeEncoder($knee->getRevisionType());
  1571.         $revision_data_unit['Incision'] = $knee->getIncision();
  1572.         $revision_data_unit['AdditionalInfo'] = implode(" ;", (array) $this->OPFunctions->kneeAdditionalInfoEncoder($knee->getAdditionalInfo()));
  1573.         $revision_data_unit['Technique'] = implode(" ;", (array) $this->OPFunctions->kneeTechniqueEncoder($knee->getTechnique()));
  1574.         $implants "";
  1575.         $implants $knee->getImplants();
  1576.         if (!empty($implants)){
  1577.             $implantList = [];
  1578.           foreach ($implants as $implant){
  1579.             $implantList[] = $implant->getRef()."||".$implant->getName()."||".$implant->getType();
  1580.             switch ($implant->getType()){
  1581.               case 'Bone cement':
  1582.               case 'Bone cement ':
  1583.                 $revision_data_unit['CementName'] = $implant->getName();
  1584.                 $revision_data_unit['CementRef'] = $implant->getRef();
  1585.                 break;
  1586.               case 'Femoral component':
  1587.                 $revision_data_unit['FemoralComponentName'] = $implant->getName();
  1588.                 $revision_data_unit['FemoralComponentRef'] = $implant->getRef();
  1589.                 break;
  1590.               case 'Insert':
  1591.               case 'Insert ':
  1592.                 $revision_data_unit['InsertName'] = $implant->getName();
  1593.                 $revision_data_unit['InsertRef'] = $implant->getRef();
  1594.                 break;
  1595.               case 'Patella':
  1596.               case 'Pattela':
  1597.                 $revision_data_unit['PatellaName'] = $implant->getName();
  1598.                 $revision_data_unit['PatellaRef'] = $implant->getRef();
  1599.                 break;
  1600.               case 'Tibial component':
  1601.                 $revision_data_unit['TibialComponentName'] = $implant->getName();
  1602.                 $revision_data_unit['TibialComponentRef'] = $implant->getRef();
  1603.                 break;
  1604.             }
  1605.           }
  1606.         $revision_data_unit['Implants'] = implode("; "$implantList);
  1607.         }
  1608.           else{
  1609.             $revision_data_unit['Implants'] = "";
  1610.           }
  1611.         $revision_data_unit['doctor'] = $knee->getDoctor()->getFirstName()." ".$knee->getDoctor()->getLastName();
  1612.         $revision_data_unit['hospital'] = $knee->getDoctor()->getHospital()->getHospitalName();
  1613.         if($knee->getPrimaryKnee()->getPatientLeftKnee() != null){
  1614.           $joint $knee->getPrimaryKnee()->getPatientLeftKnee();
  1615.           $revision_data_unit['Side'] = "Kairė";
  1616.           $revision_data_unit['PatientId'] = $joint->getId();
  1617.             $revision_data_unit['PatientFirstName'] = $joint->getFirstName();
  1618.             $revision_data_unit['PatientLastName'] = $joint->getLastName();
  1619.             $revision_data_unit['identifier'] = $joint->getIdentifier();
  1620.             $revision_data_unit['gender'] = $this->OPFunctions->IdentifierToGender($joint->getIdentifier());
  1621.             $revision_data_unit['birth'] = $this->OPFunctions->IdentifierToDate($joint->getIdentifier());
  1622.             $revision_data_unit['DeathDate'] = $joint->getDeathDate();
  1623.         }
  1624.         elseif ($knee->getPrimaryKnee()->getPatientRightKnee() != null) {
  1625.           $joint $knee->getPrimaryKnee()->getPatientRightKnee();
  1626.           $revision_data_unit['Side'] = "Dešinė";
  1627.           $revision_data_unit['PatientId'] = $joint->getId();
  1628.             $revision_data_unit['PatientFirstName'] = $joint->getFirstName();
  1629.             $revision_data_unit['PatientLastName'] = $joint->getLastName();
  1630.             $revision_data_unit['identifier'] = $joint->getIdentifier();
  1631.             $revision_data_unit['gender'] = $this->OPFunctions->IdentifierToGender($joint->getIdentifier());
  1632.             $revision_data_unit['birth'] = $this->OPFunctions->IdentifierToDate($joint->getIdentifier());
  1633.             $revision_data_unit['DeathDate'] = $joint->getDeathDate();
  1634.         }
  1635.         else {
  1636.           $revision_data_unit['Side'] = "Patikrinkite įrašą, duomenys išsibarstę";
  1637.             $revision_data_unit['PatientFirstName'] = "???";
  1638.             $revision_data_unit['PatientLastName'] = "???";
  1639.             $revision_data_unit['identifier'] = "???";
  1640.             $revision_data_unit['birth'] = '???';
  1641.             $revision_data_unit['gender'] = "???";
  1642.             $revision_data_unit['birth'] = '1900-01-01';
  1643.             $revision_data_unit['DeathDate'] = '';
  1644.         }
  1645.         $revision_data_unit['Date'] = $knee->getDate();
  1646.         $age date_diff(date_create($revision_data_unit['birth']), date_create($revision_data_unit['Date']));
  1647.         $revision_data_unit['Age'] = $age->format("%y");
  1648.         $revisions null
  1649.         $revisions $knee->getPrimaryKnee()->getRevisionKnees();
  1650.           $revision null;
  1651.             foreach($revisions as $rev){
  1652.               if ($revision == null) {
  1653.                 if (strtotime($rev->getDate()) > strtotime($revision_data_unit['Date'])){
  1654.                   $revision $rev;
  1655.                 }
  1656.               }
  1657.               else {
  1658.                 if (strtotime($rev->getDate()) > strtotime($revision_data_unit['Date']) && (strtotime($rev->getDate()) < strtotime($revision->getDate()))){
  1659.                 $revision $rev;
  1660.                 }
  1661.               }
  1662.             }
  1663.         if($revision!=null){
  1664.           $revision_data_unit['RevId'] = $revision->getId();
  1665.           $revision_data_unit['RevDiagnosis'] = $this->OPFunctions->kneeRevisionCauseEncoder($revision->getRevisionCause());
  1666.           $implants "";
  1667.           $implants $revision->getImplants();
  1668.           if (!empty($implants)){
  1669.               $implantList = [];
  1670.             foreach ($implants as $implant){
  1671.               $implantList[] = $implant->getRef()."||".$implant->getName()."||".$implant->getType();
  1672.               switch ($implant->getType()){
  1673.                 case 'Bone cement':
  1674.                 case 'Bone cement ':
  1675.                   $revision_data_unit['RevCementName'] = $implant->getName();
  1676.                   $revision_data_unit['RevCementRef'] = $implant->getRef();
  1677.                   break;
  1678.                 case 'Femoral component':
  1679.                   $revision_data_unit['RevFemoralComponentName'] = $implant->getName();
  1680.                   $revision_data_unit['RevFemoralComponentRef'] = $implant->getRef();
  1681.                   break;
  1682.                 case 'Insert':
  1683.                 case 'Insert ':
  1684.                   $revision_data_unit['RevInsertName'] = $implant->getName();
  1685.                   $revision_data_unit['RevInsertRef'] = $implant->getRef();
  1686.                   break;
  1687.                 case 'Patella':
  1688.                 case 'Pattela':
  1689.                   $revision_data_unit['RevPatellaName'] = $implant->getName();
  1690.                   $revision_data_unit['RevPatellaRef'] = $implant->getRef();
  1691.                   break;
  1692.                 case 'Tibial component':
  1693.                   $revision_data_unit['RevTibialComponentName'] = $implant->getName();
  1694.                   $revision_data_unit['RevTibialComponentRef'] = $implant->getRef();
  1695.                   break;
  1696.               }
  1697.             }
  1698.           $revision_data_unit['Implants'] = implode("; "$implantList);
  1699.           }
  1700.           else{
  1701.             $revision_data_unit['Implants'] = "";
  1702.           }
  1703.           $revision_data_unit['RevDate'] = $revision->getDate();
  1704.         }
  1705.         $revision_data[] = $revision_data_unit;
  1706.       }
  1707.     
  1708.     return $revision_data;
  1709.   
  1710.   }
  1711.   /**
  1712.   * Surenkame KLUBO Implantų duomenis pasiuntimui
  1713.   */
  1714.   private function hipImplantData(string $dateFrom ""string $dateTo ""): array
  1715.   {
  1716.     ini_set("memory_limit",-1);
  1717.     if($dateFrom == "" && $dateTo == ""){
  1718.       $primaryHip $this->entityManager->getRepository(PrimaryHip::class)->findAll();
  1719.     }
  1720.     else {
  1721.         if ($dateTo == "") {$dateTo date("Y-m-d");}
  1722.         
  1723.       $primaryHip $this->entityManager->getRepository(PrimaryHip::class)->findFromTo($dateFrom$dateTo);
  1724.     }
  1725.     
  1726.     $first_row = array(
  1727.       'personalID''institution','name''surname''operationDate','operationType''side''Stem''Cup''Shell''Head'
  1728.     );
  1729.     foreach ($primaryHip as $hip){
  1730.       $primary_data_unit = [];
  1731.       $primary_data_unit array_fill_keys($first_row'');
  1732.       $primary_data_unit['operationDate'] = $hip->getDate();
  1733.       $primary_data_unit['operationType'] = 'primary';
  1734.       $implants "";
  1735.       $implants $hip->getImplants();
  1736.       if (!empty($implants)){
  1737.         $implantList = [];
  1738.         $partInfo "";
  1739.         foreach ($implants as $implant){
  1740.           $partInfo $implant->getName()."||".$implant->getRef()."||".$implant->getFirm();
  1741.           switch ($implant->getType()){
  1742.             //Stems
  1743.             case 'Revision stem':
  1744.             case 'Uncemented stem':
  1745.             case 'Cemented stem':
  1746.               $primary_data_unit['Stem'] = $partInfo;
  1747.               break;
  1748.             //Cups
  1749.             case 'Bipolar cup':
  1750.             case 'Cemented cup':
  1751.             case 'Cup':
  1752.               $primary_data_unit['Cup'] = $partInfo;
  1753.               break;
  1754.             //Shells
  1755.             case 'Shell':
  1756.               $primary_data_unit['Shell'] = $partInfo;
  1757.               break;
  1758.             //Heads
  1759.             case 'Ceramic head':
  1760.             case 'Metal head':
  1761.             case 'Resurfising head':
  1762.               $primary_data_unit['Head'] = $partInfo;
  1763.               break;
  1764.           }
  1765.           $partInfo "";
  1766.         }
  1767.       }
  1768.       $primary_data_unit['institution'] = $hip->getHospital()->getId();
  1769.       if($hip->getPatientLeftHip() != null){
  1770.         $joint $hip->getPatientLeftHip();
  1771.         $primary_data_unit['side'] = "Kairė";
  1772.         $primary_data_unit['name'] = $joint->getFirstName();
  1773.         $primary_data_unit['surname'] = $joint->getLastName();
  1774.         $primary_data_unit['personalID'] = $joint->getIdentifier();
  1775.       }
  1776.       elseif ($hip->getPatientRightHip() != null) {
  1777.         $joint $hip->getPatientRightHip();
  1778.         $primary_data_unit['side'] = "Dešinė";
  1779.         $primary_data_unit['name'] = $joint->getFirstName();
  1780.         $primary_data_unit['surname'] = $joint->getLastName();
  1781.         $primary_data_unit['personalID'] = $joint->getIdentifier();
  1782.       }
  1783.       else {
  1784.         $primary_data_unit['side'] = "Patikrinkite įrašą, duomenys išsibarstę";
  1785.         $primary_data_unit['name'] = "???";
  1786.         $primary_data_unit['surname'] = "???";
  1787.         $primary_data_unit['personalID'] = "???";
  1788.       }
  1789.       
  1790.       $primary_data[] = $primary_data_unit;
  1791.       
  1792.       $revisions $hip->getRevisionHip();
  1793.       if (!empty($revisions)){
  1794.       foreach ($revisions as $revision){
  1795.         $primary_data_unit['operationType'] = '';
  1796.         $primary_data_unit['operationDate'] = '';
  1797.         $primary_data_unit['Stem'] = '';
  1798.         $primary_data_unit['Cup'] = '';
  1799.         $primary_data_unit['Shell'] = '';
  1800.         $primary_data_unit['Head'] = '';
  1801.         if($revision!=null){
  1802.           $primary_data_unit['operationType'] = 'revision';
  1803.           $primary_data_unit['operationDate'] = $revision->getDate();
  1804.           $implants "";
  1805.           $implants $revision->getImplants();
  1806.           if (!empty($implants)){
  1807.               $partInfo "";
  1808.             foreach ($implants as $implant){
  1809.               $partInfo $implant->getName()."||".$implant->getRef()."||".$implant->getFirm();
  1810.               switch ($implant->getType()){
  1811.                 //Stems
  1812.                 case 'Revision stem':
  1813.                 case 'Uncemented stem':
  1814.                 case 'Cemented stem':
  1815.                   $primary_data_unit['Stem'] = $partInfo;
  1816.                   break;
  1817.                 //Cups
  1818.                 case 'Bipolar cup':
  1819.                 case 'Cemented cup':
  1820.                 case 'Cup':
  1821.                   $primary_data_unit['Cup'] = $partInfo;
  1822.                   break;
  1823.                 //Shells
  1824.                 case 'Shell':
  1825.                   $primary_data_unit['Shell'] = $partInfo;
  1826.                   break;
  1827.                 //Heads
  1828.                 case 'Ceramic head':
  1829.                 case 'Metal head':
  1830.                 case 'Resurfising head':
  1831.                   $primary_data_unit['Head'] = $partInfo;
  1832.                   break;
  1833.               }
  1834.               $partInfo "";
  1835.             }
  1836.           }
  1837.         }
  1838.         $primary_data[] = $primary_data_unit;
  1839.       }
  1840.       }
  1841.     }
  1842.     
  1843.     //dd($primary_data[49]);
  1844.     return $primary_data;
  1845.   }
  1846.   /**
  1847.   * Surenkame KELIO Implantų duomenis pasiuntimui
  1848.   */
  1849.   private function kneeImplantData(): array
  1850.   {
  1851.     ini_set("memory_limit",-1);
  1852.     $primaryKnee $this->entityManager->getRepository(PrimaryKnee::class)->findAll();
  1853.     $first_row = array(
  1854.       'personalID''institution','name''surname''operationDate','operationType''side''Distal plug''Femoral component''Tibial component''Insert'
  1855.     );
  1856.     foreach ($primaryKnee as $knee){
  1857.       
  1858.       $primary_data_unit = [];
  1859.       $primary_data_unit array_fill_keys($first_row'');
  1860.       $primary_data_unit['operationDate'] = $knee->getDate();
  1861.       $primary_data_unit['operationType'] = 'primary';
  1862.       $implants "";
  1863.       $implants $knee->getImplants();
  1864.       if (!empty($implants)){
  1865.         $implantList = [];
  1866.         $partInfo "";
  1867.         foreach ($implants as $implant){
  1868.           $partInfo $implant->getName()."||".$implant->getRef()."||".$implant->getFirm();
  1869.           switch ($implant->getType()){
  1870.             //Distal plug
  1871.             case 'Distal plug':
  1872.               $primary_data_unit['Distal plug'] = $partInfo;
  1873.               break;
  1874.             //Femoral component
  1875.             case 'Femoral component':
  1876.               $primary_data_unit['Femoral component'] = $partInfo;
  1877.               break;
  1878.             //Tibial component
  1879.             case 'Tibial component':
  1880.               $primary_data_unit['Tibial component'] = $partInfo;
  1881.               break;
  1882.             //Insert
  1883.             case 'Insert':
  1884.               $primary_data_unit['Insert'] = $partInfo;
  1885.               break;
  1886.           }
  1887.           $partInfo "";
  1888.         }
  1889.       }
  1890.               
  1891.       //dd($implantList);
  1892.       $primary_data_unit['institution'] = $knee->getHospital()->getId();
  1893.       if($knee->getPatientLeftKnee() != null){
  1894.         $joint $knee->getPatientLeftKnee();
  1895.         $primary_data_unit['side'] = "Kairė";
  1896.         $primary_data_unit['name'] = $joint->getFirstName();
  1897.         $primary_data_unit['surname'] = $joint->getLastName();
  1898.         $primary_data_unit['personalID'] = $joint->getIdentifier();
  1899.       }
  1900.       elseif ($knee->getPatientRightKnee() != null) {
  1901.         $joint $knee->getPatientRightKnee();
  1902.         $primary_data_unit['side'] = "Dešinė";
  1903.         $primary_data_unit['name'] = $joint->getFirstName();
  1904.         $primary_data_unit['surname'] = $joint->getLastName();
  1905.         $primary_data_unit['personalID'] = $joint->getIdentifier();
  1906.       }
  1907.       else {
  1908.         $primary_data_unit['side'] = "Patikrinkite įrašą, duomenys išsibarstę";
  1909.         $primary_data_unit['name'] = "???";
  1910.         $primary_data_unit['surname'] = "???";
  1911.         $primary_data_unit['personalID'] = "???";
  1912.       }
  1913.       $primary_data[] = $primary_data_unit;
  1914.       $revisions $knee->getRevisionKnees();
  1915.       if (!empty($revisions)){
  1916.       foreach ($revisions as $revision){
  1917.         $primary_data_unit['operationType'] = '';
  1918.         $primary_data_unit['operationDate'] = '';
  1919.         $primary_data_unit['Distal plug'] = '';
  1920.         $primary_data_unit['Femoral component'] = '';
  1921.         $primary_data_unit['Tibial component'] = '';
  1922.         $primary_data_unit['Insert'] = '';
  1923.         if($revision!=null){
  1924.           $primary_data_unit['operationType'] = 'revision';
  1925.           $primary_data_unit['operationDate'] = $revision->getDate();
  1926.           $implants "";
  1927.           $implants $revision->getImplants();
  1928.           if (!empty($implants)){
  1929.               $partInfo "";
  1930.             foreach ($implants as $implant){
  1931.               $partInfo $implant->getName()."||".$implant->getRef()."||".$implant->getFirm();
  1932.               switch ($implant->getType()){
  1933.                 //Distal plug
  1934.                 case 'Distal plug':
  1935.                   $primary_data_unit['Distal plug'] = $partInfo;
  1936.                   break;
  1937.                 //Femoral component
  1938.                 case 'Femoral component':
  1939.                   $primary_data_unit['Femoral component'] = $partInfo;
  1940.                   break;
  1941.                 //Tibial component
  1942.                 case 'Tibial component':
  1943.                   $primary_data_unit['Tibial component'] = $partInfo;
  1944.                   break;
  1945.                 //Insert
  1946.                 case 'Insert':
  1947.                   $primary_data_unit['Insert'] = $partInfo;
  1948.                   break;
  1949.               }
  1950.               $partInfo "";
  1951.             }
  1952.           }
  1953.         }
  1954.         $primary_data[] = $primary_data_unit;
  1955.       }
  1956.       }
  1957.     }
  1958.     
  1959.     //dd($primary_data);
  1960.     return $primary_data;
  1961.   }
  1962.   /**
  1963.   * @Route("/admin/export",  name="exportpage")
  1964.   */
  1965.   public function exportPage(Request $requestExportFilterType $exportFilter): Response
  1966.   {
  1967.     $form $this->createForm(ExportFilterType::class, $exportFilter);
  1968.     $form->handleRequest($request);
  1969.     if ($form->isSubmitted() && $form->isValid()) {
  1970.       $dateFrom $form['DateFrom']->getData();
  1971.       $dateTo $form['DateTo']->getData();
  1972.       $registras $form['Registras']->getData();
  1973.       switch ($registras){
  1974.         case 'exportPrimaryRevisionKnee':
  1975.           return $this->forward($this->exportPrimaryRevisionKnee($dateFrom$dateTo));
  1976.           break;
  1977.         case 'exportRevisionRevisionKnee':
  1978.           return $this->forward($this->exportRevisionRevisionKnee($dateFrom$dateTo));
  1979.           break;
  1980.         case 'exportPrimaryRevisionHip':
  1981.           return $this->forward($this->exportPrimaryRevisionHip($dateFrom$dateTo));
  1982.           break;
  1983.         case 'exportRevisionRevisionHip':
  1984.           return $this->forward($this->exportRevisionRevisionHip($dateFrom$dateTo));
  1985.           break;
  1986.         case 'exportHipImplantData':
  1987.           return $this->forward($this->exportHipImplantData($dateFrom$dateTo));
  1988.           break;
  1989.         case 'exportKneeImplantData':
  1990.           return $this->forward($this->exportKneeImplantData($dateFrom$dateTo));
  1991.           break;       
  1992.       }
  1993.     }
  1994.     return $this->render('admin/export.html.twig', [
  1995.       'form' => $form->createView(),
  1996.     ]);
  1997.   }
  1998.   /**
  1999.   * @Route("/admin/export/primaryRevisionHip",  name="exportPrimaryRevisionHip")
  2000.   */
  2001.   public function exportPrimaryRevisionHip(string $dateFrom ""string $dateTo ""){
  2002.     
  2003.     //dd($records);
  2004.     $filename =  "PirminiaiKlubai".time();
  2005.     //header('Content-Encoding: ANSI');
  2006.     //header('Content-type: text/csv; charset=UTF-16LE');
  2007.     header("Content-Type: application/vnd.ms-excel");
  2008.     header("Content-Disposition: attachment; filename=\"$filename\"");
  2009.     $records $this->primaryAndRevisionHipData($dateFrom$dateTo);
  2010.     //print_r($records);
  2011.     $heading false;
  2012.       if(!empty($records)){
  2013.         foreach($records as $row) {
  2014.           if(!$heading) {
  2015.             // display field/column names as a first row
  2016.             $table implode("\t"array_keys($row)) . "\n";
  2017.             $heading true;
  2018.           }
  2019.           $table .= implode("\t"array_values($row)) . "\n";
  2020.         }
  2021.       }
  2022.     
  2023.     //echo utf8_decode($table);
  2024.     //echo iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $table),
  2025.     //echo mb_convert_encoding($table, 'ISO-8859-1//TRANSLIT');
  2026.     echo $table;
  2027.     exit;
  2028.   }
  2029.   /**
  2030.   * @Route("/admin/export/revisionRevisionHip",  name="exportRevisionRevisionHip")
  2031.   */
  2032.   public function exportRevisionRevisionHip(string $dateFrom ""string $dateTo ""){
  2033.     
  2034.     //dd($records);
  2035.     $filename =  "ReviziniaiKlubai".time();
  2036.     header("Content-Type: application/vnd.ms-excel");
  2037.     header("Content-Disposition: attachment; filename=\"$filename\"");
  2038.     $records $this->revisionAndRevisionHipData($dateFrom$dateTo);
  2039.     //print_r($records);
  2040.     $heading false;
  2041.       if(!empty($records)){
  2042.         foreach($records as $row) {
  2043.           if(!$heading) {
  2044.             // display field/column names as a first row
  2045.             $table implode("\t"array_keys($row)) . "\n";
  2046.             $heading true;
  2047.           }
  2048.           $table .= implode("\t"array_values($row)) . "\n";
  2049.         }
  2050.       }
  2051.     
  2052.     //echo utf8_decode($table);
  2053.     //echo iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $table),
  2054.     //echo mb_convert_encoding($table, 'ISO-8859-1//TRANSLIT');
  2055.     echo $table;
  2056.     exit;
  2057.   }
  2058.   /**
  2059.   * @Route("/admin/export/primaryRevisionKnee",  name="exportPrimaryRevisionKnee")
  2060.   */
  2061.   public function exportPrimaryRevisionKnee(string $dateFrom ""string $dateTo ""){
  2062.     $filename =  "PirminiaiKeliai".time();
  2063.     header("Content-Type: application/vnd.ms-excel");
  2064.     header("Content-Disposition: attachment; filename=\"$filename\"");
  2065.     $records $this->primaryAndRevisionKneeData($dateFrom$dateTo);
  2066.     $heading false;
  2067.       if(!empty($records)){
  2068.         foreach($records as $row) {
  2069.           if(!$heading) {
  2070.             // display field/column names as a first row
  2071.             $table implode("\t"array_keys($row)) . "\n";
  2072.             $heading true;
  2073.           }
  2074.           $table .= implode("\t"array_values($row)) . "\n";
  2075.         }
  2076.       }
  2077.     echo $table;
  2078.     exit;
  2079.   }
  2080.   /**
  2081.   * @Route("/admin/export/revisionRevisionKnee",  name="exportRevisionRevisionKnee")
  2082.   */
  2083.   public function exportRevisionRevisionKnee(string $dateFrom ""string $dateTo ""){
  2084.     
  2085.     $filename =  "ReviziniaiKeliai".time();
  2086.     header("Content-Type: application/vnd.ms-excel");
  2087.     header("Content-Disposition: attachment; filename=\"$filename\"");
  2088.     $records $this->revisionAndRevisionKneeData($dateFrom$dateTo);
  2089.     $heading false;
  2090.       if(!empty($records)){
  2091.         foreach($records as $row) {
  2092.           if(!$heading) {
  2093.             // display field/column names as a first row
  2094.             $table implode("\t"array_keys($row)) . "\n";
  2095.             $heading true;
  2096.           }
  2097.           $table .= implode("\t"array_values($row)) . "\n";
  2098.         }
  2099.       }
  2100.     echo $table;
  2101.     exit;
  2102.   }
  2103.   /**
  2104.   * @Route("/admin/export/HipImplantData",  name="exportHipImplantData")
  2105.   */
  2106.   public function exportHipImplantData(string $dateFrom ""string $dateTo ""){
  2107.     
  2108.     //dd($records);
  2109.     $filename =  "KlubuImplantai".time();
  2110.     //header('Content-Encoding: ANSI');
  2111.     //header('Content-type: text/csv; charset=UTF-16LE');
  2112.     header("Content-Type: application/vnd.ms-excel");
  2113.     header("Content-Disposition: attachment; filename=\"$filename\"");
  2114.     $records $this->hipImplantData($dateFrom$dateTo);
  2115.     //print_r($records);
  2116.     $heading false;
  2117.       if(!empty($records)){
  2118.         foreach($records as $row) {
  2119.           if(!$heading) {
  2120.             // display field/column names as a first row
  2121.             $table implode("\t"array_keys($row)) . "\n";
  2122.             $heading true;
  2123.           }
  2124.           $table .= implode("\t"array_values($row)) . "\n";
  2125.         }
  2126.       }
  2127.     
  2128.     //echo utf8_decode($table);
  2129.     //echo iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $table),
  2130.     //echo mb_convert_encoding($table, 'ISO-8859-1//TRANSLIT');
  2131.     echo $table;
  2132.     exit;
  2133.   }
  2134.   /**
  2135.   * @Route("/admin/export/KneeImplantData",  name="exportKneeImplantData")
  2136.   */
  2137.   public function exportKneeImplantData(){
  2138.     
  2139.     //dd($records);
  2140.     $filename =  "KeliuImplantai".time();
  2141.     //header('Content-Encoding: ANSI');
  2142.     //header('Content-type: text/csv; charset=UTF-16LE');
  2143.     header("Content-Type: application/vnd.ms-excel");
  2144.     header("Content-Disposition: attachment; filename=\"$filename\"");
  2145.     $records $this->kneeImplantData();
  2146.     //dd($records);
  2147.     $heading false;
  2148.       if(!empty($records)){
  2149.         foreach($records as $row) {
  2150.           if(!$heading) {
  2151.             // display field/column names as a first row
  2152.             $table implode("\t"array_keys($row)) . "\n";
  2153.             $heading true;
  2154.           }
  2155.           $table .= implode("\t"array_values($row)) . "\n";
  2156.         }
  2157.       }
  2158.     
  2159.     //echo utf8_decode($table);
  2160.     //echo iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $table),
  2161.     //echo mb_convert_encoding($table, 'ISO-8859-1//TRANSLIT');
  2162.     echo $table;
  2163.     exit;
  2164.   }
  2165.   /**
  2166.   * @Route("/admin/export/primaryHip",  name="exportPrimaryHip")
  2167.   */
  2168.   public function exportPrimaryHip(){
  2169.     ini_set("memory_limit",-1);
  2170.     //$pool = new ApcuCachePool();
  2171.     //$simpleCache = new SimpleCacheBridge($pool);
  2172.     //Settings::setCache($simpleCache);
  2173.       $spreadsheet = new Spreadsheet();
  2174.       //1 lapas
  2175.       $sheet1 $spreadsheet->getActiveSheet();
  2176.       $sheet1->setTitle('Pirminiai klubai');
  2177.       $sheet1->fromArray(['ID''Sąnarys''Diagnozė''Technika''Pjūvis''Papildoma info''BipolarCupName''BipolarCupRef''CementName''CementRef''CementedCupName''CementedCupRef''CementedMonoblockName''CementedMonoblockRef''CementedStemName''CementedStemRef''CeramicHeadName''CeramicHeadRef''CeramicLinerName''CeramicLinerRef''MetalHeadName''MetalHeadRef''PolyethilenLinerName''PolyethilenLinerRef''ResurfacingHeadName''ResurfacingHeadRef''RevisionStemName''RevisionStemRef''ShellName''ShellRef''UncementedStemName''UncementedStemRef''Protezai''Operatororius''Pusė''Paciento ID''Vardas pavardė''A.k.''Gimimo data''Op. data'],null'A1'true);
  2178.       $sheet1->fromArray($this->primaryAndRevisionHipData(),null'A2'true);
  2179.     //dd($sheet1);
  2180.       $writer = new Xlsx($spreadsheet);
  2181.       $response =  new StreamedResponse(
  2182.         function () use ($writer) {
  2183.             $writer->setPreCalculateFormulas(false);
  2184.             $writer->save('php://output');
  2185.         }
  2186.     );
  2187.     $response->headers->set('Content-Type''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  2188.     $response->headers->set('Content-Disposition''attachment;filename="KluboRegistrasPirminis"');
  2189.     $response->headers->set('Cache-Control','max-age=0');
  2190.     return $response;
  2191.   }
  2192.    /**
  2193.   * @Route("/admin/export/revisionHip",  name="exportRevisionHip")
  2194.   */
  2195.   public function exportRevisionHip()
  2196.   {
  2197.     ini_set("memory_limit",-1);
  2198.       $spreadsheet = new Spreadsheet();
  2199.        //3 lapas
  2200.       $sheet3 $spreadsheet->getActiveSheet();
  2201.       $sheet3->setTitle('Reviziniai klubai');
  2202.       $sheet3->fromArray(['ID''Sąnarys''Pirminis ID''Priežastis''Revizijos tipas''Pjūvis''Papildoma info''Technika''BipolarCupName''BipolarCupRef''CementName''CementRef''CementedCupName''CementedCupRef''CementedMonoblockName''CementedMonoblockRef''CementedStemName''CementedStemRef''CeramicHeadName''CeramicHeadRef''CeramicLinerName''CeramicLinerRef''MetalHeadName''MetalHeadRef''PolyethilenLinerName''PolyethilenLinerRef''ResurfacingHeadName''ResurfacingHeadRef''RevisionStemName''RevisionStemRef''ShellName''ShellRef''UncementedStemName''UncementedStemRef''Protezai''Operatororius''Pusė''Paciento ID''Vardas pavardė''A.k.''Gimimo data''Op. data'],null'A1'true);
  2203.       $sheet3->fromArray($this->revisionHipData(),null'A2'true);
  2204.       $writer = new Xlsx($spreadsheet);
  2205.       $response =  new StreamedResponse(
  2206.         function () use ($writer) {
  2207.             $writer->save('php://output');
  2208.         }
  2209.     );
  2210.     $response->headers->set('Content-Type''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  2211.     $response->headers->set('Content-Disposition''attachment;filename="KluboRegistrasRevizinis"');
  2212.     $response->headers->set('Cache-Control','max-age=0');
  2213.     return $response;
  2214.   }
  2215.     /**
  2216.   * @Route("/admin/export/primaryKnee",  name="exportPrimaryKnee")
  2217.   */
  2218.   public function exportPrimaryKnee()
  2219.   {
  2220.     ini_set("memory_limit",-1);
  2221.       $spreadsheet = new Spreadsheet();
  2222.       //2 lapas
  2223.       $sheet2 $spreadsheet->getActiveSheet();
  2224.       $sheet2 $spreadsheet->getActiveSheet()->setTitle('Pirminiai keliai');
  2225.       $sheet2->fromArray(['ID''Sąnarys''Diagnozė''Technika''Pjūvis''Papildoma info''CementName''CementRef''FemoralComponentName''FemoralComponentRef''InsertName''InsertRef''PatellaName''PatellaRef''TibialComponentName''TibialComponentRef''Protezai''Operatororius''Pusė''Paciento ID''Vardas pavardė''A.k.''Gimimo data''Op. data'],null'A1'true);
  2226.       $sheet2->fromArray($this->primaryKneeData(),null'A2'true);
  2227.       //4 lapas
  2228.       $spreadsheet->createSheet(); 
  2229.       $spreadsheet->setActiveSheetIndex(1);
  2230.       $sheet4 $spreadsheet->getActiveSheet()->setTitle('Reviziniai keliai');
  2231.       $sheet4->fromArray(['ID''Sąnarys''Pirminis ID''Priežastis''Revizijos tipas''Pjūvis''Papildoma info''Technika''CementName''CementRef''FemoralComponentName''FemoralComponentRef''InsertName''InsertRef''PatellaName''PatellaRef''TibialComponentName''TibialComponentRef''Protezai''Operatororius''Pusė''Paciento ID''Vardas pavardė''A.k.''Gimimo data''Op. data'],null'A1'true);
  2232.       $sheet4->fromArray($this->revisionKneeData(),null'A2'true);
  2233.       $writer = new Xlsx($spreadsheet);
  2234.       $response =  new StreamedResponse(
  2235.         function () use ($writer) {
  2236.             $writer->save('php://output');
  2237.         }
  2238.     );
  2239.     $response->headers->set('Content-Type''application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  2240.     $response->headers->set('Content-Disposition''attachment;filename="KelioRegistras"');
  2241.     $response->headers->set('Cache-Control','max-age=0');
  2242.     return $response;
  2243.   }
  2244.   /**
  2245.   * @Route("/admin/revisionKnee/indexAjax", methods={"GET"})
  2246.   */
  2247.   public function revisionKneeAjax(RevisionKneeRepository $revisionKneeRepositoryOperationRegistryFunctions $OpRegFRequest $request): Response
  2248.   {
  2249.     $offset $request->query->get('start');
  2250.     if ($offset == 0) {
  2251.         $offset null;
  2252.     }
  2253.     $entryCount $request->query->get('length');
  2254.     $searchString =  $request->query->get('search');
  2255.     $order $request->query->get('order');
  2256.     $orderBy $order[0]['column'];
  2257.     switch ($orderBy) {
  2258.       case 7:
  2259.           $orderBy 'Date';
  2260.           break;
  2261.       case 4:
  2262.           $orderBy 'RevisionCause';
  2263.           break;
  2264.       case 8:
  2265.         $orderBy 'otherImplants';
  2266.         break;
  2267.       case 9:
  2268.         $orderBy 'comment';
  2269.         break;
  2270.     }
  2271.     $orderDir $order[0]['dir'];
  2272.     $revisionKneeCount $revisionKneeRepository->countAll();
  2273.     $totaEntryCount $revisionKneeCount;
  2274.     if ($searchString['value'] === ""){
  2275.         $revisionKnee $revisionKneeRepository->findBy([], [$orderBy => $orderDir], $entryCount$offset);
  2276.         $entryCountFiltered $totaEntryCount;
  2277.     }
  2278.     else {
  2279.         $revisionKnee $revisionKneeRepository->findByString($searchString['value'], $offset$entryCount);
  2280.         $entryCountFiltered $revisionKneeRepository->findByStringCount($searchString['value']);
  2281.     }
  2282.     $revision_data = [];
  2283.     if (!empty($revisionKnee)){
  2284.       $revision_data $OpRegF->jsonRevisionDataUnit([], $revisionKnee);
  2285.       $revision['recordsTotal'] = $totaEntryCount;
  2286.       $revision['recordsFiltered'] = $entryCountFiltered;
  2287.       $revision['draw'] = $request->query->get('draw');
  2288.       $revision['data'] = $revision_data;
  2289.     }
  2290.     else{
  2291.       $revision['recordsTotal'] = 0;
  2292.       $revision['recordsFiltered'] = 0;
  2293.       $revision['data'] = "";
  2294.     }
  2295.     
  2296.     return new JsonResponse($revision);
  2297.   
  2298.   }
  2299.   /**
  2300.   * @Route("/admin/revisionHip/indexAjax", methods={"GET"})
  2301.   */
  2302.   public function revisionHipAjax(RevisionHipRepository $revisionHipRepositoryOperationRegistryFunctions $OpRegFRequest $request): Response
  2303.   {
  2304.     $offset $request->query->get('start');
  2305.     if ($offset == 0) {
  2306.         $offset null;
  2307.     }
  2308.     $entryCount $request->query->get('length');
  2309.     $searchString =  $request->query->get('search');
  2310.     $order $request->query->get('order');
  2311.     $orderBy $order[0]['column'];
  2312.     switch ($orderBy) {
  2313.       case 7:
  2314.           $orderBy 'Date';
  2315.           break;
  2316.       case 4:
  2317.           $orderBy 'RevisionCause';
  2318.           break;
  2319.       case 8:
  2320.         $orderBy 'otherImplants';
  2321.         break;
  2322.       case 9:
  2323.         $orderBy 'comment';
  2324.         break;
  2325.     }
  2326.     $orderDir $order[0]['dir'];
  2327.     $revisionHipCount $revisionHipRepository->countAll();
  2328.     $totaEntryCount $revisionHipCount;
  2329.     if ($searchString['value'] === ""){
  2330.         $revisionHip $revisionHipRepository->findBy([], [$orderBy => $orderDir], $entryCount$offset);
  2331.         $entryCountFiltered $totaEntryCount;
  2332.     }
  2333.     else {
  2334.         $revisionHip $revisionHipRepository->findByString($searchString['value'], $offset$entryCount);
  2335.         $entryCountFiltered $revisionHipRepository->findByStringCount($searchString['value']);
  2336.     }
  2337.     $revision_data = [];
  2338.     if (!empty($revisionHip)){
  2339.       $revision_data $OpRegF->jsonRevisionDataUnit($revisionHip, []);
  2340.       $revision['recordsTotal'] = $totaEntryCount;
  2341.       $revision['recordsFiltered'] = $entryCountFiltered;
  2342.       $revision['draw'] = $request->query->get('draw');
  2343.       $revision['data'] = $revision_data;
  2344.     }
  2345.     else{
  2346.       $revision['recordsTotal'] = 0;
  2347.       $revision['recordsFiltered'] = 0;
  2348.       $revision['data'] = "";
  2349.     }
  2350.     
  2351.     return new JsonResponse($revision);
  2352.   
  2353.   }
  2354.   /**
  2355.   * @Route("/indexAjax/one", methods={"GET"})
  2356.   */
  2357.   public function primaryAjaxOne(Request $requestPrimaryHipRepository $primaryHipRepositoryPrimaryKneeRepository $primaryKneeRepositoryRevisionHipRepository $revisionHipRepositoryRevisionKneeRepository $revisionKneeRepository): Response
  2358.   {
  2359.     //dd($request->query);
  2360.     $joint_id $request->query->get('entryID');
  2361.     $joint_joint $request->query->get('joint');
  2362.     $joint_joint2 $request->query->get('joint2');
  2363.     switch ([$joint_joint$joint_joint2]) {
  2364.       case ['Kelis''primaryKnee']:
  2365.       case ['Kelis''primary']:
  2366.           $joint 'primaryKnee';
  2367.           break;
  2368.       case ['Kelis''revisionKnee']:
  2369.       case ['Kelis''revision']:
  2370.           $joint 'revisionKnee';
  2371.           break;
  2372.       case ['Klubas''primaryHip']:
  2373.       case ['Klubas''primary']:
  2374.           $joint 'primaryHip';
  2375.           break;
  2376.       case ['Klubas''revisionHip']:
  2377.       case ['Klubas''revision']:
  2378.           $joint 'revisionHip';
  2379.           break;
  2380.     }
  2381.     if ($joint == "primaryHip"){
  2382.       $primaryJoint $primaryHipRepository->findOneBy(["id" => $joint_id]);
  2383.       $primary_data['Anamnesis'] = $primaryJoint->getAnamnesis();
  2384.       $primary_data['Technique'] = $primaryJoint->getTechnique();
  2385.       $primary_data['Incision'] = $primaryJoint->getIncision();
  2386.       $primary_data['AdditionalInfo'] = $primaryJoint->getAdditionalInfo();
  2387.       $primary_data['comment'] = $primaryJoint->getComment();
  2388.       $primary_data['OtherImplants'] = $primaryJoint->getOtherImplants();
  2389.       $implants $primaryJoint->getImplants();
  2390.       foreach ($implants as $implant){
  2391.           $implant_unit['Ref'] = $implant->getRef();
  2392.           $implant_unit['Type'] = $implant->getType();
  2393.           $implant_unit['Name'] = $implant->getName();
  2394.           $primary_data['Implants'][]=$implant_unit;
  2395.         }
  2396.       $primary $primary_data;
  2397.       return new JsonResponse($primary);
  2398.     }
  2399.     elseif ($joint == "primaryKnee"){
  2400.       $primaryJoint $primaryKneeRepository->findOneBy(["id" => $joint_id]);
  2401.       $primary_data['Anamnesis'] = $primaryJoint->getAnamnesis();
  2402.       $primary_data['Technique'] = $primaryJoint->getTechnique();
  2403.       $primary_data['Incision'] = $primaryJoint->getIncision();
  2404.       $primary_data['AdditionalInfo'] = $primaryJoint->getAdditionatInfo();
  2405.       $primary_data['comment'] = $primaryJoint->getComment();
  2406.       $primary_data['OtherImplants'] = $primaryJoint->getOtherImplants();
  2407.       $primary_data['doctor'] = $primaryJoint->getDoctor()->getFirstName()." ".$primaryJoint->getDoctor()->getLastName()." iš ".$primaryJoint->getDoctor()->getHospital()->getHospitalName();
  2408.       $implants $primaryJoint->getImplants();
  2409.       foreach ($implants as $implant){
  2410.           $implant_unit['Ref'] = $implant->getRef();
  2411.           $implant_unit['Type'] = $implant->getType();
  2412.           $implant_unit['Name'] = $implant->getName();
  2413.           $primary_data['Implants'][]=$implant_unit;
  2414.         }
  2415.       $primary $primary_data;
  2416.       return new JsonResponse($primary);
  2417.     } 
  2418.     elseif ($joint == "revisionHip"){
  2419.       $primaryJoint $revisionHipRepository->findOneBy(["id" => $joint_id]);
  2420.       $primary_data['RevisionType'] = $primaryJoint->getRevisionType();
  2421.       $primary_data['Technique'] = $primaryJoint->getTechnique();
  2422.       $primary_data['Incision'] = $primaryJoint->getIncision();
  2423.       $primary_data['AdditionalInfo'] = $primaryJoint->getAdditionalInfo();
  2424.       $primary_data['comment'] = $primaryJoint->getComment();
  2425.       $primary_data['OtherImplants'] = $primaryJoint->getOtherImplants();
  2426.       $primary_data['doctor'] = $primaryJoint->getDoctor()->getFirstName()." ".$primaryJoint->getDoctor()->getLastName()." iš ".$primaryJoint->getDoctor()->getHospital()->getHospitalName();
  2427.       $implants $primaryJoint->getImplants();
  2428.       foreach ($implants as $implant){
  2429.           $implant_unit['Ref'] = $implant->getRef();
  2430.           $implant_unit['Type'] = $implant->getType();
  2431.           $implant_unit['Name'] = $implant->getName();
  2432.           $primary_data['Implants'][]=$implant_unit;
  2433.         }
  2434.       $primary $primary_data;
  2435.       return new JsonResponse($primary);
  2436.     }
  2437.     elseif ($joint == "revisionKnee"){
  2438.       $primaryJoint $revisionKneeRepository->findOneBy(["id" => $joint_id]);
  2439.       $primary_data['RevisionType'] = $primaryJoint->getRevisionType();
  2440.       $primary_data['Technique'] = $primaryJoint->getTechnique();
  2441.       $primary_data['Incision'] = $primaryJoint->getIncision();
  2442.       $primary_data['AdditionalInfo'] = $primaryJoint->getAdditionalInfo();
  2443.       $primary_data['comment'] = $primaryJoint->getComment();
  2444.       $primary_data['OtherImplants'] = $primaryJoint->getOtherImplants();
  2445.       $primary_data['doctor'] = $primaryJoint->getDoctor()->getFirstName()." ".$primaryJoint->getDoctor()->getLastName()." iš ".$primaryJoint->getDoctor()->getHospital()->getHospitalName();
  2446.       $implants $primaryJoint->getImplants();
  2447.       foreach ($implants as $implant){
  2448.           $implant_unit['Ref'] = $implant->getRef();
  2449.           $implant_unit['Type'] = $implant->getType();
  2450.           $implant_unit['Name'] = $implant->getName();
  2451.           $primary_data['Implants'][]=$implant_unit;
  2452.         }
  2453.       $primary $primary_data;
  2454.       return new JsonResponse($primary);
  2455.     }  
  2456.   }
  2457.   /**
  2458.   * @Route("/ajax", name="app_homepage_ajax")
  2459.   */
  2460.   public function patientResponse(Request $requestPatientRepository $patientRepository): Response
  2461.   {
  2462.     // This is optional.
  2463.     // Only include it if the function is reserved for ajax calls only.
  2464.     if (!$request->isXmlHttpRequest()) {
  2465.       return new JsonResponse(array(
  2466.           'status' => 'Error',
  2467.           'exist' => 'Error'),
  2468.       400);
  2469.     }
  2470.     if(isset($request->request))
  2471.     {   
  2472.       // Get data from ajax
  2473.       $patientidd $request->request->get('inputVariabile');
  2474.       // Check if a Patient with the given idtf already exists
  2475.       $patient $patientRepository->findOneBy(['identifier' => $patientidd]);
  2476.       
  2477.       if ($patient === null)
  2478.       {
  2479.         // Patient does not exist
  2480.         return new JsonResponse(array(
  2481.         'status' => 'OK',
  2482.         'exist' => 0),
  2483.         200);
  2484.       }
  2485.       else
  2486.       {
  2487.         $arrayPatient = [];
  2488.          $arrayPatient['id'] = $patient->getId();
  2489.           // Patient exists
  2490.         return new JsonResponse([
  2491.         "status" => "OK",
  2492.         "exist" => 1,
  2493.         "patient" => $arrayPatient
  2494.         ],
  2495.         200);
  2496.         return $jsonResponse;
  2497.       }
  2498.     }
  2499.   }
  2500. }