src/Controller/PatientController.php line 467

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Patient;
  4. use App\Finder\Patient as PatientFinder;
  5. use App\Form\PatientType;
  6. use App\Repository\{PatientRepositoryVillageRepository};
  7. use App\Service\Sms;
  8. use App\Util\Uploader;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Nzo\UrlEncryptorBundle\Annotations\ParamDecryptor;
  11. use Nzo\UrlEncryptorBundle\Encryptor\Encryptor;
  12. use Sensio\Bundle\FrameworkExtraBundle\Configuration\{IsGrantedSecurity};
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpClient\HttpClient;
  15. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  16. use Symfony\Component\HttpFoundation\{JsonResponseRequestResponse};
  17. use Symfony\Component\Routing\Annotation\Route;
  18. #[Route(path'/patients'), IsGranted(data'IS_AUTHENTICATED_REMEMBERED')]
  19. class PatientController extends AbstractController
  20. {
  21.     private $encryptor;
  22.     public function __construct(private PatientFinder $patientFinder, private Sms $smsEncryptor $encryptor)
  23.     {
  24.         $this->encryptor $encryptor;
  25.     }
  26.     #[Route(path'/abhaabdm'name'abha_patient_list'methods: ['GET'])]
  27.     public function abdmlist(PatientRepository $patientRepoRequest $request): Response
  28.     {
  29.         if ($this->getUser()->getisActive() == false && $this->getUser()->getRoles() != 'ROLE_HOSP_ADMIN') {
  30.             return $this->render('bundles/TwigBundle/Exception/errorBlock.html.twig');
  31.         }
  32.         $qb $patientRepo->createQueryBuilder('p')
  33.             ->where('p.hospital = :hospital')
  34.             ->setParameter('hospital'$this->getUser()->getHospital())
  35.             ->andWhere('p.healthAddress IS NOT NULL')
  36.             ->andWhere('p.healthIdNumber IS NOT NULL')
  37.             ->orderBy('p.createdAt''DESC');
  38.         return $this->render('patient/abdmlist.html.twig', [
  39.             'patients' => $qb->getQuery()->getResult(),
  40.         ]);
  41.     }
  42.     #[Route(path'/'name'patient_index'methods: ['GET'])]
  43.     public function index(PatientRepository $patientRepoRequest $request): Response
  44.     {
  45.         if ($this->getUser()->getisActive() == false && $this->getUser()->getRoles() != 'ROLE_HOSP_ADMIN') {
  46.             return $this->render('bundles/TwigBundle/Exception/errorBlock.html.twig');
  47.         }
  48.         $hospital $this->getUser()->getHospital();
  49.         return $this->render('patient/index.html.twig', [
  50.             'patients' => $patientRepo->findBy(['hospital' => $hospital], ['createdAt' => 'DESC'])
  51.         ]);
  52.     }
  53.     #[Route(path'/new'name'patient_new'methods: ['GET''POST'])]
  54.     #[Security("is_granted('ROLE_HOSP_ADMIN') or is_granted('ROLE_DOC') or is_granted('ROLE_CHO') or is_granted('ROLE_DENT') or is_granted('ROLE_RECEP')")]
  55.     public function new(Request $requestVillageRepository $villageRepoEntityManagerInterface $entityManagerUploader $uploaderPatientRepository $patientRepo): Response
  56.     {
  57.         if ($this->getUser()->getisActive() == false && $this->getUser()->getRoles() != 'ROLE_HOSP_ADMIN') {
  58.             return $this->render('bundles/TwigBundle/Exception/errorBlock.html.twig');
  59.         }
  60.         $patient = new Patient();
  61.         $hofName '';
  62.         $readOnly false;
  63.         $hideFields 'd-none';
  64.         $token '';
  65.         $session $request->getSession();
  66.         if ($request->getMethod() == 'GET' && $request->get('hof') || $request->get('data') || $session->has('v3data') || $request->get('dataLink')) {
  67.             $member $this->patientFinder->getMemberDetails($request->get('hof'));
  68.             if ($member) {
  69.                 $hofName $member['first_name'] . ' ' $member['middle_name'] . ' ' $member['last_name'];
  70.                 $patient
  71.                     ->setFatherHusbandName($hofName)
  72.                     ->setHousePlotNo($member['house_plot_no'])
  73.                     ->setAddress($member['address'])
  74.                     ->setPincode($member['pincode'])
  75.                     ->setFamilyIncome($member['family_income'] ?: 0)
  76.                     ->setMemberCode($member['member_code']);
  77.                 $village $villageRepo->find($member['village']);
  78.                 if (!$village) {
  79.                     $village $villageRepo->find(1);
  80.                 }
  81.                 if (isset($member['healthIdNumber']) && !empty($member['healthIdNumber'] && isset($member['healthAddress']) && !empty($member['healthAddress']))) {
  82.                     $hideFields '';
  83.                 }
  84.                 $patient->setVillage($village);
  85.             } else {
  86.                 $readOnly true;
  87.                 $hideFields '';
  88.                 if ($request->get('data')) {
  89.                     $data $request->get('data');
  90.                     $token = isset($data['token']) ? $data['token'] : '';
  91.                     $village $villageRepo->find(1);
  92.                     if ($data['gender'] == 'M') {
  93.                         $gender 'Male';
  94.                     } elseif ($data['gender'] == 'F') {
  95.                         $gender 'Female';
  96.                     } elseif ($data['gender'] == 'O') {
  97.                         $gender 'Other';
  98.                     } elseif ($data['gender'] == 'U') {
  99.                         $gender 'Male';
  100.                     }
  101.                     $dob '';
  102.                     if (isset($data['monthOfBirth'], $data['dayOfBirth'], $data['yearOfBirth'])) {
  103.                         $dob $data['yearOfBirth'] . '-' $data['monthOfBirth'] . '-' $data['dayOfBirth'];
  104.                     }
  105.                     $patient
  106.                         ->setFirstName($data['firstName'])
  107.                         ->setMiddleName($data['middleName'])
  108.                         ->setLastName($data['lastName'])
  109.                         ->setMobile($data['mobile'])
  110.                         ->setGender($gender)
  111.                         ->setHealthIdNumber($data['healthIdNumber'])
  112.                         ->setHealthAddress($data['healthIdAddress'])
  113.                         ->setDob(new \DateTime('@' strtotime($dob)));
  114.                 } elseif ($request->get('dataLink')) {
  115.                     $data $request->get('dataLink');
  116.                     $token = isset($data['token']) ? $data['token'] : '';
  117.                     $dob $gender '';
  118.                     if (isset($data['monthOfBirth'], $data['dayOfBirth'], $data['yearOfBirth'])) {
  119.                         $dob $data['yearOfBirth'] . '-' $data['monthOfBirth'] . '-' $data['dayOfBirth'];
  120.                     }
  121.                     if ($data['gender'] == 'M') {
  122.                         $gender 'Male';
  123.                     } elseif ($data['gender'] == 'F') {
  124.                         $gender 'Female';
  125.                     } elseif ($data['gender'] == 'O') {
  126.                         $gender 'Other';
  127.                     } elseif ($data['gender'] == 'U') {
  128.                         $gender 'Male';
  129.                     }
  130.                     $patient
  131.                         ->setFirstName($data['firstName'])
  132.                         ->setMiddleName($data['middleName'])
  133.                         ->setLastName($data['lastName'])
  134.                         ->setGender($gender)
  135.                         ->setMobile($data['mobile'])
  136.                         ->setHealthIdNumber($data['healthIdNumber'])
  137.                         ->setHealthAddress($data['healthIdAddress']);
  138.                     if ($dob) {
  139.                         $patient->setDob(new \DateTime('@' strtotime($dob)));
  140.                     }
  141.                 } elseif ($session->has('v3data')) {
  142.                     $data $session->get('v3data');
  143.                     // dd($data);
  144.                     $session->remove('v3data');
  145.                     $token = isset($data['token']) ? $data['token'] : '';
  146.                     $village $villageRepo->find(1);
  147.                     if ($data['gender'] == 'M') {
  148.                         $gender 'Male';
  149.                     } elseif ($data['gender'] == 'F') {
  150.                         $gender 'Female';
  151.                     } elseif ($data['gender'] == 'O') {
  152.                         $gender 'Other';
  153.                     } elseif ($data['gender'] == 'U') {
  154.                         $gender 'Male';
  155.                     }
  156.                     $dob = isset($data['yearOfBirth'], $data['monthOfBirth'], $data['dayOfBirth'])
  157.                         ? sprintf('%s-%s-%s'$data['yearOfBirth'], $data['monthOfBirth'], $data['dayOfBirth'])
  158.                         : '';
  159.                     $patient
  160.                         ->setFirstName($data['firstName'])
  161.                         ->setMiddleName($data['middleName'])
  162.                         ->setLastName($data['lastName'])
  163.                         ->setMobile($data['mobile'])
  164.                         ->setAddress($data['address'])
  165.                         ->setPincode($data['pincode'])
  166.                         // ->setPhoto($data['profilePhoto'])
  167.                         ->setGender($gender)
  168.                         ->setHealthIdNumber($data['healthIdNumber'])
  169.                         ->setHealthAddress($data['healthIdAddress'])
  170.                         ->setDob(new \DateTime('@' strtotime($dob)));
  171.                 }
  172.             }
  173.         }
  174.         $form $this->createForm(PatientType::class, $patient);
  175.         $form->handleRequest($request);
  176.         if ($form->isSubmitted() && $form->isValid()) {
  177.             $hospital $this->getUser()->getHospital();
  178.             $patient->setHospital($hospital);
  179.             if ($request->files->get('patient')['photo']) {
  180.                 $command 'exiftool -all= ' $request->files->get('patient')['photo'];
  181.                 shell_exec($command);
  182.                 $patient->setPhoto($uploader->processUpload(
  183.                     $this->getParameter('upload_dir') . DIRECTORY_SEPARATOR 'patient_photos',
  184.                     $request->files->get('patient')['photo']
  185.                 ));
  186.             }
  187.             $entityManager->persist($patient);
  188.             $entityManager->flush();
  189.             $patient->setUHId(date('Y') . sprintf('%04d'$hospital->getId()) . sprintf('%010d'$patient->getId()));
  190.             if (!$patient->getMemberCode()) {
  191.                 $patient->setMemberCode($patient->getUHId());
  192.             }
  193.             $data $request->get('data');
  194.             if ($data) {
  195.                 $abhaArr['healthIdNumber'] = $data['healthIdNumber'] ? $data['healthIdNumber'] : '';
  196.                 $abhaArr['healthIdAddress'] = $data['healthIdAddress'] ? $data['healthIdAddress'] : '';
  197.                 $abhaArr['token'] = $data['token'] ? $data['token'] : '';
  198.                 $abhaArr['refresh_token'] = isset($data['refresh_token']) ? $data['refresh_token'] : '';
  199.                 $patientRepo->addAbhaDetail($abhaArr$patient->getId());  // add details in abha table
  200.             }
  201.             $entityManager->persist($patient);
  202.             $entityManager->flush();
  203.             $this->addFlash(
  204.                 'success',
  205.                 'New patient registered successfully!'
  206.             );
  207.             return $this->redirectToRoute('case_new', ['patient_id' => $this->encryptor->encrypt($patient->getId())]);
  208.         }
  209.         return $this->renderForm('patient/new.html.twig', [
  210.             'patient' => $patient,
  211.             'form' => $form,
  212.             'token' => $token,
  213.             'name' => $hofName,
  214.             'read_only' => $readOnly,
  215.             'hideAbha' => $hideFields
  216.         ]);
  217.     }
  218.     #[Route(path'/register'name'patient_register'methods: ['POST'])]
  219.     #[Security("is_granted('ROLE_HOSP_ADMIN') or is_granted('ROLE_DOC') or is_granted('ROLE_CHO') or is_granted('ROLE_DENT') or is_granted('ROLE_RECEP')")]
  220.     public function registerFromCnmgts(Request $requestVillageRepository $villageRepoEntityManagerInterface $entityManager): Response
  221.     {
  222.         if ($this->getUser()->getisActive() == false && $this->getUser()->getRoles() != 'ROLE_HOSP_ADMIN') {
  223.             return $this->render('bundles/TwigBundle/Exception/errorBlock.html.twig');
  224.         }
  225.         $member $this->patientFinder->getMemberDetails($request->request->get('member_id'));
  226.         $patient = new Patient();
  227.         $patient
  228.             ->setFirstName($member['first_name'])
  229.             ->setMiddleName($member['middle_name'])
  230.             ->setLastName($member['last_name'])
  231.             ->setAdharNum($member['adhar_num'])
  232.             ->setDob(new \DateTime('@' strtotime($member['dob'])))
  233.             ->setHousePlotNo($member['house_plot_no'])
  234.             ->setAddress($member['address'])
  235.             ->setPincode($member['pincode'])
  236.             ->setMemberCode($member['member_code'])
  237.             ->setMobile($member['mobile'])
  238.             ->setEmail($member['email'])
  239.             ->setFatherHusbandName($member['father_husband_name'])
  240.             ->setGender($member['gender'])
  241.             ->setMaritalStatus($member['marrital_status'])
  242.             ->setBplNum($member['bpl_num'])
  243.             ->setAbpmJay($member['abpm_jay'])
  244.             // ->setCast($member['cast'] ?: 'General')
  245.             ->setOccupation($member['occupation'])
  246.             ->setFamilyIncome((int) $member['family_income'] ?: 0)
  247.             ->setHospital($this->getUser()->getHospital());
  248.         $village $villageRepo->find($member['village']);
  249.         if (!$village) {
  250.             $village $villageRepo->find(1);
  251.         }
  252.         $patient->setVillage($village);
  253.         try {
  254.             $entityManager->persist($patient);
  255.             $entityManager->flush();
  256.             $hospital $this->getUser()->getHospital();
  257.             $patient->setUHId('UH-' $hospital->getType() . '-' date('Y') . '-' sprintf('%04d'$hospital->getId()) . '-' sprintf('%010d'$patient->getId()));
  258.             $entityManager->persist($patient);
  259.             $entityManager->flush();
  260.             $this->addFlash(
  261.                 'success',
  262.                 'New patient registered successfully!'
  263.             );
  264.             return $this->redirectToRoute('case_new', ['patient_id' => $patient->getId()]);
  265.         } catch (\Exception) {
  266.             $this->addFlash(
  267.                 'danger',
  268.                 'Patient already exists!'
  269.             );
  270.             return $this->redirectToRoute('patient_index');
  271.         }
  272.     }
  273.     #[Route(path'/edit/{id}'name'patient_edit'methods: ['GET''POST'])]
  274.     #[ParamDecryptor(['id'])]
  275.     #[Security("is_granted('ROLE_HOSP_ADMIN') or is_granted('ROLE_DOC') or is_granted('ROLE_CHO') or is_granted('ROLE_DENT') or is_granted('ROLE_RECEP') or is_granted('ROLE_ADMIN')")]
  276.     public function edit(Request $requestSessionInterface $sessionPatient $patientEntityManagerInterface $entityManagerUploader $uploader): Response
  277.     {
  278.         if ($this->getUser()->getHospital()->getId() != $patient->getHospital()->getId()) {
  279.             return $this->render('bundles/TwigBundle/Exception/errorAccess.html.twig');
  280.         }
  281.         if ($this->getUser()->getisActive() == false && $this->getUser()->getRoles() != 'ROLE_HOSP_ADMIN') {
  282.             return $this->render('bundles/TwigBundle/Exception/errorBlock.html.twig');
  283.         }
  284.         if ($request->getMethod() == 'GET' || $request->getMethod() == 'POST' && $this->getUser()->getHospital()->getId() == $patient->getHospital()->getId() && $patient->getisAlive() == true) {
  285.             $session->set('_id'$request->attributes->get('id'));
  286.             $form $this->createForm(PatientType::class, $patient);
  287.             $form->handleRequest($request);
  288.             $readOnly '';
  289.             if ($form->isSubmitted() && $form->isValid()) {
  290.                 if ($request->files->get('patient')['photo']) {
  291.                     $command 'exiftool -all= ' $request->files->get('patient')['photo'];
  292.                     shell_exec($command);
  293.                     $patient->setPhoto($uploader->processUpload(
  294.                         $this->getParameter('upload_dir') . DIRECTORY_SEPARATOR 'patient_photos',
  295.                         $request->files->get('patient')['photo'],
  296.                         $patient->getPhoto()
  297.                     ));
  298.                 }
  299.                 $entityManager->flush();
  300.                 $session->remove('_id');
  301.                 $entityManager->flush();
  302.                 $session->remove('_id');
  303.                 $this->addFlash(
  304.                     'success',
  305.                     'Patient updated successfully!'
  306.                 );
  307.                 return $this->redirectToRoute('patient_index');
  308.             }
  309.             return $this->renderForm('patient/edit.html.twig', [
  310.                 'patient' => $patient,
  311.                 'form' => $form,
  312.                 'read_only' => $readOnly
  313.             ]);
  314.         } else {
  315.             if ($session->has('_id')) {
  316.                 if ($session->get('_id') != $request->attributes->get('id')) {
  317.                     $this->createAccessDeniedException();
  318.                 }
  319.             } else {
  320.                 $this->createAccessDeniedException();
  321.             }
  322.         }
  323.         return $this->render('bundles/TwigBundle/Exception/errorAccess.html.twig');
  324.     }
  325.     #[Route(path'/show/{id}'name'patient_show'methods: ['GET'])]
  326.     #[ParamDecryptor(['id'])]
  327.     public function show(Patient $patient): Response
  328.     {
  329.         if ($this->getUser()->getisActive() == false && $this->getUser()->getRoles() != 'ROLE_HOSP_ADMIN') {
  330.             return $this->render('bundles/TwigBundle/Exception/errorBlock.html.twig');
  331.         }
  332.         if ($this->getUser()->getHospital()->getId() == $patient->getHospital()->getId()) {
  333.             return $this->render('patient/show.html.twig', [
  334.                 'patient' => $patient
  335.             ]);
  336.         } else {
  337.             return $this->render('bundles/TwigBundle/Exception/errorAccess.html.twig');
  338.         }
  339.     }
  340.     #[Route(path'/delete/{id}'name'patient_delete'methods: ['GET'])]
  341.     #[Security("is_granted('ROLE_HOSP_ADMIN') or is_granted('ROLE_DOC') or is_granted('ROLE_CHO') or is_granted('ROLE_DENT') or is_granted('ROLE_RECEP')")]
  342.     #[ParamDecryptor(['id'])]
  343.     public function delete(Patient $patientEntityManagerInterface $entityManager): Response
  344.     {
  345.         if ($this->getUser()->getHospital()->getId() == $patient->getHospital()->getId() && $patient->getisAlive() == true) {
  346.             try {
  347.                 $entityManager->remove($patient);
  348.                 $entityManager->flush();
  349.                 $this->addFlash(
  350.                     'success',
  351.                     'Patient deleted successfully!'
  352.                 );
  353.             } catch (\Exception) {
  354.                 $this->addFlash(
  355.                     'danger',
  356.                     'Patient could not be deleted! There may be related cases.'
  357.                 );
  358.             }
  359.             return $this->redirectToRoute('patient_index');
  360.         } else {
  361.             return $this->render('bundles/TwigBundle/Exception/errorAccess.html.twig');
  362.         }
  363.     }
  364.     #[Route(path'/search'name'patient_search'methods: ['GET'])]
  365.     #[Security("is_granted('ROLE_HOSP_ADMIN') or is_granted('ROLE_DOC') or is_granted('ROLE_CHO') or is_granted('ROLE_DENT') or is_granted('ROLE_RECEP') or is_granted('ROLE_LAB_TECH')")]
  366.     public function searchPatient(): Response
  367.     {
  368.         if ($this->getUser()->getisActive() == false && $this->getUser()->getRoles() != 'ROLE_HOSP_ADMIN') {
  369.             return $this->render('bundles/TwigBundle/Exception/errorBlock.html.twig');
  370.         }
  371.         return $this->render('patient/search.html.twig');
  372.     }
  373.     #[Route(path'/local-search-results'name'local_search_patient'methods: ['GET'])]
  374.     #[Security("is_granted('ROLE_HOSP_ADMIN') or is_granted('ROLE_DOC') or is_granted('ROLE_CHO') or is_granted('ROLE_DENT') or is_granted('ROLE_RECEP') or is_granted('ROLE_LAB_TECH')")]
  375.     public function localSearchResults(Request $requestPatientRepository $patientRepo): JsonResponse
  376.     {
  377.         if ($this->getUser()->getisActive() == false && $this->getUser()->getRoles() != 'ROLE_HOSP_ADMIN') {
  378.             return $this->render('bundles/TwigBundle/Exception/errorBlock.html.twig');
  379.         }
  380.         return $this->json($patientRepo->findSearchResults($request->query->get('search')));
  381.     }
  382.     #[Route(path'/global-search-results'name'global_search_member'methods: ['GET'])]
  383.     #[Security("is_granted('ROLE_HOSP_ADMIN') or is_granted('ROLE_DOC') or is_granted('ROLE_CHO') or is_granted('ROLE_DENT') or is_granted('ROLE_RECEP') or is_granted('ROLE_LAB_TECH')")]
  384.     public function globalSearchResults(Request $request): JsonResponse
  385.     {
  386.         if ($this->getUser()->getisActive() == false && $this->getUser()->getRoles() != 'ROLE_HOSP_ADMIN') {
  387.             return $this->render('bundles/TwigBundle/Exception/errorBlock.html.twig');
  388.         }
  389.         $patients $this->patientFinder->getGlobalSearchResults($request->query->get('search'));
  390.         return $this->json($patients);
  391.     }
  392.     #[Route(path'/family-details'name'get_family'methods: ['POST'])]
  393.     #[Security("is_granted('ROLE_HOSP_ADMIN') or is_granted('ROLE_DOC') or is_granted('ROLE_CHO') or is_granted('ROLE_DENT') or is_granted('ROLE_RECEP')")]
  394.     public function familyDetails(Request $request): JsonResponse
  395.     {
  396.         if ($this->getUser()->getisActive() == false && $this->getUser()->getRoles() != 'ROLE_HOSP_ADMIN') {
  397.             return $this->render('bundles/TwigBundle/Exception/errorBlock.html.twig');
  398.         }
  399.         return $this->json($this->patientFinder->getFamilyList($request->request->get('hofID')));
  400.     }
  401.     #[Route(path'/personal-info'name'patient_personal_info')]
  402.     public function personalInfo(PatientRepository $patientRepo$id 0): Response
  403.     {
  404.         if ($this->getUser()->getisActive() == false && $this->getUser()->getRoles() != 'ROLE_HOSP_ADMIN') {
  405.             return $this->render('bundles/TwigBundle/Exception/errorBlock.html.twig');
  406.         }
  407.         return $this->render('patient/personal_info.html.twig', [
  408.             'patient' => $patientRepo->find($id)
  409.         ]);
  410.     }
  411.     #[Route(path'/id-card/{id}'name'patient_id_card')]
  412.     #[ParamDecryptor(['id'])]
  413.     public function idCard(Request $requestPatient $patient): Response
  414.     {
  415.         if ($this->getUser()->getHospital()->getId() == $patient->getHospital()->getId()) {
  416.             return $this->render('patient/id_card.html.twig', ['patient' => $patient'type' => 'patient_list']);
  417.         } else {
  418.             return $this->render('bundles/TwigBundle/Exception/errorAccess.html.twig');
  419.         }
  420.     }
  421.     #[Route(path'/print/{id}'name'patient_print'methods: ['GET'])]
  422.     #[ParamDecryptor(['id'])]
  423.     public function print(Patient $patient): Response
  424.     {
  425.         if ($this->getUser()->getHospital()->getId() == $patient->getHospital()->getId()) {
  426.             return $this->render('patient/print.html.twig', ['patient' => $patient]);
  427.         } else {
  428.             return $this->render('bundles/TwigBundle/Exception/errorAccess.html.twig');
  429.         }
  430.     }
  431.     #[Route(path'/search_abha'name'patient_search_with_abha'methods: ['GET''POST'])]
  432.     public function searchAbha(Request $requestPatientRepository $patientRepo): Response
  433.     {
  434.         // get request check empty or not
  435.         // is request is empty
  436.         /* if (!$request->request->get('search')) {
  437.             $this->addFlash(
  438.                 'danger',
  439.                 'please enter abha address'
  440.             );
  441.             // set error and redirect to this template
  442.             return $this->render('patient/search_abha.html.twig');
  443.         } */
  444.         if ($request->request->get('search')) {  // get request check empty or not
  445.             $responseData $patientRepo->getAbhaAddressBySearch($request->request->get('search'));  // get response by search abha address
  446.             if (!empty($responseData)) {
  447.                 $session $request->getSession();
  448.                 $session->set('patient_id'$responseData[0]['id']);
  449.                 return new JsonResponse(['responseData' => $responseData]);  // json response
  450.             }
  451.         }
  452.         return $this->render('patient/search_abha.html.twig');
  453.     }
  454.     #[Route(path'/shared-profile'name'shared_profile'methods: ['GET''POST'])]
  455.     public function sharedProfile(Request $request): Response
  456.     {
  457.         // TODO data encrypted
  458.         // define hip code and get code from hospital table
  459.         $hipCode $this->getUser()->getProfile()->getHospital()->getHIPCode();
  460.         // define payload
  461.         $payload = [
  462.             'hip_id' => $hipCode,
  463.         ];
  464.         $client HttpClient::create();
  465.         $response $client->request('POST''https://abdm.7mantra.in/data-link/get-shared-profile', [
  466.             'headers' => [
  467.                 'Content-Type' => 'application/json'
  468.             ],
  469.             'json' => $payload
  470.         ]);
  471.         $responseData json_decode($response->getContent());
  472.         return new JsonResponse(['responseData' => $responseData]);
  473.     }
  474. }