CreateSamplePatient.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383
  1. <?php
  2. require_once('vo/com/imt/intimamedia/vo/UserVo.php');
  3. require_once('vo/com/imt/intimamedia/vo/PersonVo.php');
  4. require_once('vo/com/imt/intimamedia/vo/PatientVo.php');
  5. require_once('vo/com/imt/intimamedia/vo/HospitalVo.php');
  6. require_once('vo/com/imt/intimamedia/vo/UltraSoundScannerVo.php');
  7. require_once('vo/com/imt/intimamedia/vo/ProbeVo.php');
  8. require_once('vo/com/imt/intimamedia/vo/MailVo.php');
  9. require_once('vo/com/imt/intimamedia/vo/TermsVo.php');
  10. require_once('vo/com/imt/intimamedia/vo/MessageVo.php');
  11. require_once('vo/com/imt/intimamedia/vo/AppointmentVo.php');
  12. require_once('vo/com/imt/intimamedia/vo/TobaccoVo.php');
  13. require_once('vo/com/imt/intimamedia/vo/AtsVo.php');
  14. require_once('vo/com/imt/intimamedia/vo/ReturnObjectVo.php');
  15. require_once('vo/com/imt/intimamedia/vo/PersonalHistoryVo.php');
  16. require_once('vo/com/imt/intimamedia/vo/FamilyHistoryVo.php');
  17. require_once('vo/com/imt/intimamedia/vo/CvExaminatorVo.php');
  18. require_once('vo/com/imt/intimamedia/vo/TreatmentVo.php');
  19. require_once('common/SQLServerManager.php');
  20. require_once('common/SecurityManager.php');
  21. require_once('common/ImtMail.php');
  22. require_once('PatientService.php');
  23. require_once('AcquisitionService.php');
  24. require_once('MeasureService.php');
  25. define ('INTIMAMEDIA_APPLICATION', 'INTIMA');
  26. define("IP_HOST", "37.187.89.74");
  27. define ('EXAMPLE_PATIENT_FILE_UID_1', 'by3xs8kXHn');
  28. define ('EXAMPLE_PATIENT_FILE_ORGANIZATION_1', 158);
  29. Throw new Exception("Update User Id");
  30. $key = "3HFdkfjdz*$)kn;!fdD1nsf~2@KL-{{";
  31. $userId = 159 ;
  32. /*$ff=fopen("tmp.jd", "a+");
  33. fprintf($ff, "activation, user=%s, password=%s\n", $user, $password);
  34. fclose($ff);*/
  35. $query = "SELECT id, last_connection FROM [evolucare].[dbo].[tj_user] WHERE id = '".$userId."';";
  36. $result = SQLServerManager::queryOnDatabase( $query );
  37. $idFound = 0;
  38. foreach( $result as $value )
  39. {
  40. $idFound = $value->id;
  41. $lastConnection = $value->last_connection;
  42. }
  43. if (!$idFound || $lastConnection)
  44. {
  45. Throw new Exception("");
  46. }
  47. // last, create example patient file, for testing purpose
  48. createIntimamediaExample($userId, EXAMPLE_PATIENT_FILE_UID_1, EXAMPLE_PATIENT_FILE_ORGANIZATION_1);
  49. $now = date( "Y-m-d H:i:s" );
  50. $query = "UPDATE [evolucare].[dbo].[tj_user] SET last_connection = '". $now ."' WHERE id = '" . $userId . "'";
  51. $transaction = SQLServerManager::startTransaction();
  52. $executeQuery = SQLServerManager::executeQueryForTransaction( $query, $transaction );
  53. SQLServerManager::commitTransaction( $transaction );
  54. function createIntimamediaExample($userId, $patientUid, $organizationId)
  55. {
  56. $token = time() + 1000;
  57. // get personId
  58. $query = "SELECT fk_person FROM [evolucare].[dbo].[tj_user] WHERE id = '". $userId ."'";
  59. $results = SQLServerManager::queryOnDatabase( $query );
  60. foreach( $results as $value )
  61. $personId = $value->fk_person;
  62. // get patient
  63. $returnObjectVo = new ReturnObjectVo();
  64. $patientService = new PatientService();
  65. $returnObjectVo = $patientService->searchPatient('', $organizationId, $token);
  66. $patientVo = new PatientVo();
  67. foreach( $returnObjectVo->value as $value )
  68. {
  69. if (strcmp($value->uid, $patientUid))
  70. continue;
  71. $patientVo->firstName = $value->firstName;
  72. $patientVo->lastName = $value->lastName;
  73. $patientVo->sex = $value->sex;
  74. $patientVo->uid = $value->uid;
  75. $patientVo->birthCountry = $value->birthCountry;
  76. $patientVo->ethnicGroup = $value->ethnicGroup;
  77. $patientVo->creation = $value->creation;
  78. $patientVo->birthDate = $value->birthDate;
  79. $patientVo->lastVisit = $value->lastVisit;
  80. break;
  81. }
  82. // createPatient
  83. $patientId = createExamplePatient($patientVo, $personId);
  84. // getAppointments
  85. $returnObjectVo = $patientService->searchAppointments($patientUid, $token);
  86. $appointmentVo = new AppointmentVo();
  87. $nbAppointment = 1;
  88. /*$ff=fopen("d:/tmp.jd", "a+");
  89. fprintf($ff, "createIntimamediaExample, nbappointment=%s\n", sizeof($returnObjectVo->value));
  90. fclose($ff);*/
  91. foreach( $returnObjectVo->value as $value )
  92. {
  93. $getMeasures = true;
  94. $appointmentVo->number = $nbAppointment;
  95. $appointmentVo->patientId = $patientId;
  96. $appointmentVo->date = $value->date;
  97. $appointmentVo->weight = $value->weight;
  98. $appointmentVo->height = $value->height;
  99. $appointmentVo->livingCountry = $value->livingCountry;
  100. $srcAppointmentId = $value->id;
  101. // create appointment
  102. $appointmentVo->id = createExampleAppointment($appointmentVo, $patientUid);
  103. $atsVo = new AtsVo();
  104. $atsVo = $value->ats;
  105. $tobaccoVo = new TobaccoVo();
  106. $tobaccoVo = $value->tobacco;
  107. $personalHistoryVo = new PersonalHistoryVo();
  108. $personalHistoryVo = $value->personalHistory;
  109. $familyHistoryVo = new FamilyHistoryVo();
  110. $familyHistoryVo = $value->familyHistory;
  111. $cvExaminatorVo = new CvExaminatorVo();
  112. $cvExaminatorVo = $value->cvExaminator;
  113. $treatments = array();
  114. $treatments = $value->treatments;
  115. if ($atsVo && $tobaccoVo)
  116. $patientService->addATSRiskToAnAppointment($atsVo, $tobaccoVo, $appointmentVo->id, $token);
  117. if ($personalHistoryVo)
  118. $patientService->addPersonalHistoryToAnAppointment($personalHistoryVo, $appointmentVo->id, $token);
  119. if ($familyHistoryVo)
  120. $patientService->addFamilyHistoryToAnAppointment($familyHistoryVo, $appointmentVo->id, $token);
  121. if ($cvExaminatorVo)
  122. $patientService->addCardiovascularExaminatorToAnAppointment($cvExaminatorVo, $appointmentVo->id, $token);
  123. if ($treatments)
  124. $patientService->addTreatmentsToAnAppointment($treatments, $appointmentVo->id, $token);
  125. // get markers
  126. $acquisitionService = new AcquisitionService();
  127. $markerArray = $acquisitionService->getMarkersFromAppointment($srcAppointmentId);
  128. $acquisitionService->saveMarker($markerArray, $appointmentVo->id);
  129. // get images
  130. $imageArray = $acquisitionService->getImagesFromAppointment($srcAppointmentId);
  131. $imageIdList = array();
  132. foreach( $imageArray as $image )
  133. array_push($imageIdList, $image->id);
  134. // get measures
  135. $measureService = new MeasureService();
  136. try {
  137. $measureArray = $measureService->getMeasures($imageIdList);
  138. } catch (Exception $e) {$getMeasures = false;}
  139. $matchingId = array();
  140. foreach( $imageArray as $image )
  141. {
  142. $newImageId = createExampleImage($image, $srcAppointmentId, $appointmentVo->id);
  143. $matchingId["$image->id"] = $newImageId;
  144. /*$ff=fopen("d:/tmp.jd", "a+");
  145. fprintf($ff, "createIntimamediaExample, oldimageId = %d, newimageId=%d\n", $image->id, $newImageId);
  146. fclose($ff);*/
  147. }
  148. if (!$getMeasures)
  149. {
  150. $nbAppointment++;
  151. continue;
  152. }
  153. $measuresToPersist = array();
  154. foreach( $measureArray as $measure )
  155. {
  156. $dragAndDropVo = new DragAndDropVo();
  157. /*$ff=fopen("d:/tmp.jd", "a+");
  158. fprintf($ff, "createIntimamediaExample, matching=%d %d\n", $matchingId["$measure->imageId"], $measure->imageId);
  159. fclose($ff);*/
  160. $dragAndDropVo->id = $matchingId["$measure->imageId"];
  161. $dragAndDropVo->scale = $measure->scale;
  162. $dragAndDropVo->distance = $measure->distance;
  163. $dragAndDropVo->area = $measure->area;
  164. $dragAndDropVo->area2 = $measure->area2;
  165. $dragAndDropVo->nwImtResult = $measure->nwImt;
  166. $dragAndDropVo->fwImtResult = $measure->fwImt;
  167. $dragAndDropVo->ultraSoundScanner = 0;
  168. array_push($measuresToPersist, $dragAndDropVo);
  169. }
  170. $measureService->saveMeasures($measuresToPersist);
  171. $nbAppointment++;
  172. }
  173. }
  174. function createExamplePatient(PatientVo $patientVo, $personId)
  175. {
  176. $query = "SELECT fk_organization FROM [evolucare].[dbo].[t_person] WHERE id = '". $personId ."'";
  177. $results = SQLServerManager::queryOnDatabase( $query );
  178. foreach( $results as $value )
  179. $fk_organization = $value->fk_organization;
  180. $patientVo->uid = substr($patientVo->uid, 3);
  181. $patientVo->uid .= $personId;
  182. $query = "INSERT INTO [evolucare].[dbo].[t_patient] (uid_physician, first_name, last_name, creation, sex, birth_date, birth_country, ethnic_group, last_visit, fk_physician, fk_organization) VALUES ('".
  183. $patientVo->uid ."','". SQLServerManager::convertStringToSQLServer( $patientVo->firstName ) ."','".
  184. SQLServerManager::convertStringToSQLServer( $patientVo->lastName ) ."','".
  185. $patientVo->creation ."','". $patientVo->sex ."','".
  186. $patientVo->birthDate ."', '". $patientVo->birthCountry ."', '". $patientVo->ethnicGroup ."', '".
  187. $patientVo->lastVisit ."', " . $personId .", ". $fk_organization .")";
  188. $results = SQLServerManager::queryOnDatabase( $query );
  189. if( $results == "exception")
  190. Throw new Exception("E007");
  191. $query = "SELECT id FROM [evolucare].[dbo].[t_patient] WHERE uid_physician = '". $patientVo->uid ."'";
  192. $results = SQLServerManager::queryOnDatabase( $query );
  193. $patientId = -1;
  194. foreach( $results as $value )
  195. $patientId = $value->id;
  196. return $patientId;
  197. }
  198. function createExampleAppointment(AppointmentVo $appointmentVo, $patientUid)
  199. {
  200. $query = "INSERT INTO [intimamedia_physician].[dbo].[tj_appointment] ( number, date, weight, height, fk_patient, fk_live_country ) VALUES (".
  201. $appointmentVo->number .",'". $appointmentVo->date ."',". $appointmentVo->weight .",".
  202. $appointmentVo->height .",". $appointmentVo->patientId .",'". $appointmentVo->livingCountry ."')";
  203. /*$ff=fopen("d:/tmp.jd", "a+");
  204. fprintf($ff, "createExampleAppointment, query=%s\n", $query);
  205. fclose($ff);*/
  206. $results = SQLServerManager::queryOnDatabase( $query );
  207. if( $results == "exception")
  208. Throw new Exception("E008");
  209. $query = "SELECT MAX(id) AS lastId FROM [intimamedia_physician].[dbo].[tj_appointment]";
  210. $results = SQLServerManager::queryOnDatabase( $query );
  211. $appointmentId = -1;
  212. foreach( $results as $value )
  213. $appointmentId = $value->lastId;
  214. /*$ff=fopen("d:/tmp.jd", "a+");
  215. fprintf($ff, "++++++++++ createExampleAppointment, appointmentId=%s\n", $appointmentId);
  216. fclose($ff);*/
  217. return $appointmentId;
  218. }
  219. function createExampleImage( DragAndDropVo $dragAndDropVo, $srcAppointmentId, $appointmentId )
  220. {
  221. $path = "../images/";
  222. $srcFolder = $path . $srcAppointmentId;
  223. $folder = $path . $appointmentId;
  224. $keyType = $dragAndDropVo->type;
  225. $imageHigh = substr($dragAndDropVo->imageHigh, strrpos($dragAndDropVo->imageHigh, '/')+1);
  226. $imageSmall = substr($dragAndDropVo->imageSmall, strrpos($dragAndDropVo->imageSmall, '/')+1);
  227. $width = $dragAndDropVo->width;
  228. $height = $dragAndDropVo->height;
  229. $collection = $dragAndDropVo->collection;
  230. $incidence = $dragAndDropVo->incidence;
  231. $dicom = ($dragAndDropVo->isDicom) ? 1 : 0;
  232. if( !is_dir ( $folder ) )
  233. {
  234. mkdir( $folder );
  235. }
  236. /*$ff=fopen("d:/tmp.jd", "a+");
  237. fprintf($ff, "saveImages, src=%s dest=%s\n", $srcFolder. "/" . $imageHigh, $folder. "/". $imageHigh);
  238. fclose($ff);*/
  239. copy( $srcFolder. "/" . $imageHigh, $folder. "/". $imageHigh);
  240. copy( $srcFolder. "/" . $imageSmall, $folder. "/". $imageSmall);
  241. $url = "/images/". $appointmentId ."/";
  242. $transaction = SQLServerManager::startTransaction();
  243. $imageQuery = "INSERT INTO [intimamedia_physician].[dbo].[t_image] ( image, image_small, width, height, collection, fk_type, fk_appointment, incidence, dicom ) VALUES ( '". $url . $imageHigh ."', '". $url . $imageSmall ."', ". $width .", ". $height .", '". $collection ."', '".$keyType ."', ". $appointmentId .", '". $incidence ."', " . $dicom . ")";
  244. $validImageQuery = SQLServerManager::executeQueryForTransaction( $imageQuery, $transaction );
  245. $idImage = SQLServerManager::getLastId( "[intimamedia_physician].[dbo].[t_image]", $transaction );
  246. if( $validImageQuery )
  247. {
  248. SQLServerManager::commitTransaction( $transaction );
  249. /*$ff=fopen("d:/tmp.jd", "a+");
  250. fprintf($ff, "saveImages, imageid=%s added\n", $idImage);
  251. fclose($ff);*/
  252. return $idImage;
  253. }
  254. Throw new Exception("E017");
  255. }
  256. function createExampleMeasures( $list )
  257. {
  258. foreach( $list as $value )
  259. {
  260. $imgId = $value->id;
  261. $scale = $value->scale;
  262. $distance = $value->distance;
  263. $area = $value->area;
  264. $area2 = $value->area2;
  265. $nwImtResult = $value->nwImtResult;
  266. $fwImtResult = $value->fwImtResult;
  267. $ultraSoundScanner = $value->ultrasoudscanner;
  268. $query = "SELECT id FROM [intimamedia_physician].[dbo].[tj_measure] WHERE fk_image = ". $imgId;
  269. /*$ff=fopen("d:/tmp.jd", "a+");
  270. fprintf($ff, "createExampleMeasures, list=%d %f %f %f %d %d\n", $imgId, $scale, $distance, $area, $nwImtResult, $fwImtResult);
  271. fprintf($ff, "createExampleMeasures, sql=%s\n", $query);
  272. fclose($ff);*/
  273. $results = SQLServerManager::queryOnDatabase( $query );
  274. $resultArray = array();
  275. $measureId = 0;
  276. foreach( $results as $val )
  277. {
  278. $measureId = $val->id;
  279. }
  280. $operation = INSERT;
  281. if ($measureId)
  282. {
  283. // update
  284. $operation = UPDATE;
  285. }
  286. /*$ff=fopen("d:/tmp.jd", "a+");
  287. fprintf($ff, "createExampleMeasures, measureId=%s\n", $measureId);
  288. fclose($ff);*/
  289. $measureService = new MeasureService();
  290. $measureService->persistMeasure($measureId, $imgId, $operation, $scale, $distance, $area, $area2, $fwImtResult, $nwImtResult, $ultraSoundScanner);
  291. }
  292. }
  293. ?>