UserService.php 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090
  1. <?php
  2. // Recherche Utilisateur inscrit , Enregistrement Nouveau Patient ,INscription d'un praticien
  3. require_once('vo/com/imt/intimamedia/vo/UserVo.php');
  4. require_once('vo/com/imt/intimamedia/vo/PersonVo.php');
  5. require_once('vo/com/imt/intimamedia/vo/PatientVo.php');
  6. require_once('vo/com/imt/intimamedia/vo/HospitalVo.php');
  7. require_once('vo/com/imt/intimamedia/vo/UltraSoundScannerVo.php');
  8. require_once('vo/com/imt/intimamedia/vo/ProbeVo.php');
  9. require_once('vo/com/imt/intimamedia/vo/MailVo.php');
  10. require_once('vo/com/imt/intimamedia/vo/TermsVo.php');
  11. require_once('vo/com/imt/intimamedia/vo/MessageVo.php');
  12. require_once('vo/com/imt/intimamedia/vo/AppointmentVo.php');
  13. require_once('vo/com/imt/intimamedia/vo/TobaccoVo.php');
  14. require_once('vo/com/imt/intimamedia/vo/AtsVo.php');
  15. require_once('vo/com/imt/intimamedia/vo/ReturnObjectVo.php');
  16. require_once('vo/com/imt/intimamedia/vo/PersonalHistoryVo.php');
  17. require_once('vo/com/imt/intimamedia/vo/FamilyHistoryVo.php');
  18. require_once('vo/com/imt/intimamedia/vo/CvExaminatorVo.php');
  19. require_once('vo/com/imt/intimamedia/vo/TreatmentVo.php');
  20. require_once('common/SQLServerManager.php');
  21. require_once('common/SecurityManager.php');
  22. require_once('common/PhpMail.php');
  23. require_once('PatientService.php');
  24. require_once('AcquisitionService.php');
  25. require_once('MeasureService.php');
  26. require('sendgrid-php/sendgrid-php.php');
  27. define ('INTIMAMEDIA_APPLICATION', 'INTIMA');
  28. define ('EXAMPLE_PATIENT_FILE_UID_1', 'by3xs8kXHn');
  29. define ('EXAMPLE_PATIENT_FILE_ORGANIZATION_1', 158);
  30. class UserService
  31. {
  32. public function login(UserVo $user)
  33. {
  34. // search user= Recherche utilisateur
  35. $query = "SELECT DISTINCT u.*
  36. FROM [evolucare].[dbo].[tj_user] as u
  37. INNER JOIN [evolucare].[dbo].[tj_registration] as r ON u.id = r.fk_user
  38. INNER JOIN [evolucare].[dbo].[tr_application] as a ON r.fk_application = (SELECT id FROM [evolucare].[dbo].[tr_application] WHERE code = '".$user->application."')
  39. AND u.login = '".$user->login."' AND u.pass_print = '".$user->password."'";
  40. $results = SQLServerManager::queryOnDatabase( $query );
  41. if( count($results) != 1 )
  42. Throw new Exception("E003");
  43. foreach( $results as $value )
  44. {
  45. if ($value->last_connection == NULL)
  46. Throw new Exception("E005");
  47. $queryPerson = "SELECT * FROM [evolucare].[dbo].[t_person] WHERE id = '". $value->fk_person ."'";
  48. $resultsPerson = SQLServerManager::queryOnDatabase( $queryPerson );
  49. $personVo = new PersonVo();
  50. foreach( $resultsPerson as $valuePerson )
  51. {
  52. $personVo->id = $valuePerson->id;
  53. $personVo->uid = trim( $valuePerson->uid );
  54. $personVo->firstName = trim( $valuePerson->first_name );
  55. $personVo->lastName = trim( $valuePerson->last_name );
  56. $personVo->creation = $valuePerson->creation->format('Y-m-d');
  57. $personVo->phone = trim( $valuePerson->phone );
  58. $personVo->fax = trim( $valuePerson->fax );
  59. $personVo->activity = trim( $valuePerson->activity );
  60. $personVo->cellular = trim( $valuePerson->cellular );
  61. $personVo->mail = trim( $valuePerson->mail );
  62. $personVo->organization = $valuePerson->fk_organization;
  63. }
  64. // Nouvel utilisateur
  65. $userVo = new UserVo();
  66. $userVo->login = trim( $value->login );
  67. $userVo->person = $personVo;
  68. $userVo->id = $value->id;
  69. $userVo->uid = $value->uid;
  70. $userVo->help = ($value->help == 1)? true : false;
  71. $userVo->cptCredits = ($value->nbCredits);
  72. $userVo->cptMesures = ($value->nbMesures);
  73. $query = "SELECT * FROM [evolucare].[dbo].[t_organization] WHERE id = '". $valuePerson->fk_organization ."'";
  74. $resultsOrganization = SQLServerManager::queryOnDatabase( $query );
  75. $hospitalVo = new HospitalVo();
  76. foreach( $resultsOrganization as $valueOrganization )
  77. {
  78. $hospitalVo->id = $valueOrganization->id;
  79. $hospitalVo->name = trim($valueOrganization->name);
  80. $hospitalVo->addressInvoicing = trim($valueOrganization->address_invoicing);
  81. $hospitalVo->addressShipping = trim($valueOrganization->address_shipping);
  82. $hospitalVo->city = trim($valueOrganization->city);
  83. $hospitalVo->zipCode = trim($valueOrganization->zip_code);
  84. $hospitalVo->phone = trim($valueOrganization->phone);
  85. $hospitalVo->fax = trim($valueOrganization->fax);
  86. $hospitalVo->county = trim($valueOrganization->county);
  87. $hospitalVo->district = trim($valueOrganization->district);
  88. $hospitalVo->country = $valueOrganization->fk_country;
  89. $userVo->hospital = $hospitalVo;
  90. }
  91. // Choix de la langue
  92. $queryLanguage = "SELECT label
  93. FROM [evolucare].[dbo].[tr_language]
  94. WHERE id = '". $value->fk_language ."'";
  95. $resultLanguage = SQLServerManager::queryOnDatabase( $queryLanguage );
  96. foreach( $resultLanguage as $valueLanguage )
  97. {
  98. $userVo->language = trim($valueLanguage->label);
  99. }
  100. // Conditions générales de vente
  101. $query = "SELECT fk_cgv
  102. FROM [evolucare].[dbo].[tj_list_cgv]
  103. WHERE fk_user = '". $userVo->id ."'";
  104. $resultsConditions = SQLServerManager::queryOnDatabase( $query );
  105. foreach( $resultsConditions as $valueConditions )
  106. {
  107. $userVo->conditions = $valueConditions->fk_cgv;
  108. }
  109. // Questions matériel échographique
  110. $query = "SELECT fk_ultra_sound_scanner
  111. FROM [evolucare].[dbo].[tj_facilities]
  112. WHERE fk_organization = '". $valuePerson->fk_organization ."'";
  113. $resultsScanner = SQLServerManager::queryOnDatabase( $query );
  114. if( count($resultsScanner) > 0 )
  115. {
  116. foreach( $resultsScanner as $valueScanner )
  117. {
  118. $query = "SELECT u.id as scanner_id, u.name, u.brand, u.type, u.age, p.id as probe_id, p.frequency
  119. FROM [intimamedia_physician].[dbo].[tj_list_probe] as l
  120. INNER JOIN [intimamedia_physician].[dbo].[t_ultra_sound_scanner] as u ON u.id = l.fk_ultra_sound_scanner
  121. INNER JOIN [intimamedia_physician].[dbo].[t_probe] as p ON p.id = l.fk_probe
  122. WHERE l.fk_ultra_sound_scanner = '".$valueScanner->fk_ultra_sound_scanner."'";
  123. $r = SQLServerManager::queryOnDatabase( $query );
  124. $ultraSoundScannerVo = new UltraSoundScannerVo();
  125. $probeVo = new ProbeVo();
  126. foreach ( $r as $v )
  127. {
  128. $ultraSoundScannerVo->id = $v->scanner_id;
  129. $ultraSoundScannerVo->name = trim($v->name);
  130. $ultraSoundScannerVo->brand = trim($v->brand);
  131. $ultraSoundScannerVo->type = trim($v->type);
  132. $ultraSoundScannerVo->age = $v->age;
  133. $probeVo->id = $v->probe_id;
  134. $probeVo->frequency = $v->frequency;
  135. $userVo->ultraSoundScanner = $ultraSoundScannerVo;
  136. $userVo->probe = $probeVo;
  137. }
  138. }
  139. }
  140. }
  141. $returnObjectVo = new ReturnObjectVo();
  142. $returnObjectVo->token = SecurityManager::getToken();
  143. $returnObjectVo->value = $userVo;
  144. return $returnObjectVo;
  145. }
  146. // Mot de passe oublié
  147. public function forgetPassword(UserVo $user, $application)
  148. {
  149. // search user
  150. $query = "SELECT u.login, u.answer_one, u.answer_two, u.buyer, u.fk_question_one, u.fk_question_two
  151. FROM [evolucare].[dbo].[tj_user] as u
  152. INNER JOIN [evolucare].[dbo].[tj_registration] as r ON u.id = r.fk_user
  153. INNER JOIN [evolucare].[dbo].[tr_application] as a ON r.fk_application = (SELECT id FROM [evolucare].[dbo].[tr_application] WHERE code = '".$application."')
  154. AND u.login = '".$user->login."'";
  155. $results = SQLServerManager::queryOnDatabase( $query );
  156. if( count($results) != 1 )
  157. {
  158. Throw new Exception("E003");
  159. }
  160. $userVo = new UserVo();
  161. foreach( $results as $value )
  162. {
  163. $userVo->login = trim( $value->login );
  164. $userVo->buyer = trim( $value->buyer );
  165. $userVo->questionOne = trim( $value->fk_question_one );
  166. $userVo->questionTwo = trim( $value->fk_question_two );
  167. $userVo->answerOne = trim( $value->answer_one );
  168. $userVo->answerTwo = trim( $value->answer_two );
  169. }
  170. return $userVo;
  171. }
  172. public function post(MessageVo $messageVo)
  173. {
  174. $subject = "[" . utf8_decode($messageVo->organization) . "]". " Demande de contact de " . utf8_decode($messageVo->lastname) . " " . utf8_decode($messageVo->firstname);
  175. $body = "<html>Bonjour,<br><br>Vous venez de recevoir une demande via le formulaire de contact.<br /><br />".
  176. "Pr�nom : ". utf8_decode($messageVo->firstname) ."<br />".
  177. "Nom : ". utf8_decode($messageVo->lastname) ."<br />".
  178. ($messageVo->phone ? "T�l�phone : ". $messageVo->phone ."<br />" : "").
  179. "Mail : ". $messageVo->mail ."<br /><br />".
  180. "Organisation : <b>". utf8_decode($messageVo->organization) ."</b><br /><br />".
  181. "<u>Message</u> : <br /><br />\"". utf8_decode(nl2br($messageVo->message)) ."\"<br /><br />IIMT Support.".
  182. "</html>";
  183. $sguser = 'support@iimt.fr';
  184. $sgpass = 'Marignan;/8';
  185. $sendgrid = new SendGrid($sguser, $sgpass);
  186. $email = new SendGrid\Email();
  187. $email
  188. ->addTo('support@intimamedia.com')
  189. ->setFrom('support@iimt.fr')
  190. ->setSubject($subject)
  191. ->setText($subject)
  192. ->setHtml($body)
  193. ;
  194. try {
  195. $sendgrid->send($email);
  196. } catch(\SendGrid\Exception $e) {
  197. Throw new Exception("E002");
  198. // echo $e->getCode();
  199. // foreach($e->getErrors() as $er) {
  200. // echo $er;
  201. // }
  202. }
  203. /*
  204. if( !PhpMail::sendMail("support@intimamedia.com", $subject, $body) )
  205. {
  206. Throw new Exception("E002");
  207. }
  208. */
  209. }
  210. public function exportData(UserVo $userVo)
  211. {
  212. $subject = "Demande d'export de donn�es";
  213. $body = "<html>Bonjour,<br><br>Vous venez de recevoir une demande d'export de donn�es de l'utilisateur d'id " . $userVo->id . "<br /><br />IIMT Support.</html>";
  214. $sguser = 'support@iimt.fr';
  215. $sgpass = 'Marignan;/8';
  216. $sendgrid = new SendGrid($sguser, $sgpass);
  217. $email = new SendGrid\Email();
  218. $email
  219. ->addTo('support@intimamedia.com')
  220. ->setFrom('support@iimt.fr')
  221. ->setSubject($subject)
  222. ->setText($subject)
  223. ->setHtml($body)
  224. ;
  225. try {
  226. $sendgrid->send($email);
  227. } catch(\SendGrid\Exception $e) {
  228. Throw new Exception("E002");
  229. // echo $e->getCode();
  230. // foreach($e->getErrors() as $er) {
  231. // echo $er;
  232. // }
  233. }
  234. /* if( !PhpMail::sendMail("support@intimamedia.com", $subject, $body) )
  235. {
  236. Throw new Exception("E002");
  237. }
  238. */
  239. }
  240. public function validateAccount($userEncrypted, $passwordEncrypted)
  241. {
  242. if (!$userEncrypted || !$passwordEncrypted)
  243. {
  244. Throw new Exception("E006");
  245. }
  246. $key = "3HFdkfjdz*$)kn;!fdD1nsf~2@KL-{{";
  247. $userId = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode(rawurldecode($userEncrypted)), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
  248. $password = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode(rawurldecode($passwordEncrypted)), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
  249. /*$ff=fopen("tmp.jd", "a+");
  250. fprintf($ff, "activation, user=%s, password=%s\n", $user, $password);
  251. fclose($ff);*/
  252. $query = "SELECT id, last_connection FROM [evolucare].[dbo].[tj_user] WHERE id = '".$userId."' AND pass_print = '". $password ."';";
  253. $result = SQLServerManager::queryOnDatabase( $query );
  254. $idFound = 0;
  255. foreach( $result as $value )
  256. {
  257. $idFound = $value->id;
  258. $lastConnection = $value->last_connection;
  259. }
  260. if (!$idFound)
  261. {
  262. Throw new Exception("E006");
  263. }
  264. if ($lastConnection)
  265. {
  266. Throw new Exception("E025");
  267. }
  268. $now = date( "Y-m-d H:i:s" );
  269. $query = "UPDATE [evolucare].[dbo].[tj_user] SET last_connection = '". $now ."' WHERE id = '" . $userId . "'";
  270. $transaction = SQLServerManager::startTransaction();
  271. $executeQuery = SQLServerManager::executeQueryForTransaction( $query, $transaction );
  272. SQLServerManager::commitTransaction( $transaction );
  273. // last, create example patient file, for testing purpose
  274. $this->createIntimamediaExample($userId, EXAMPLE_PATIENT_FILE_UID_1, EXAMPLE_PATIENT_FILE_ORGANIZATION_1);
  275. //$this->createIntimamediaExample($userId, EXAMPLE_PATIENT_FILE_UID_2, EXAMPLE_PATIENT_FILE_ORGANIZATION_2);
  276. $returnObjectVo = new ReturnObjectVo();
  277. $returnObjectVo->token = SecurityManager::getToken();
  278. $returnObjectVo->value = $userId;
  279. /*$ff=fopen("d:/tmp.jd", "a+");
  280. fprintf($ff, "validateAccount, userId=%d\n", $userId);
  281. fclose($ff);*/
  282. return $returnObjectVo;
  283. }
  284. public function register(UserVo $userVo, $lang)
  285. {
  286. error_log("UserService->register");
  287. $hospitalVo = $userVo->hospital;
  288. $personVo = $userVo->person;
  289. $ultraSoundScannerVo = $userVo->ultraSoundScanner;
  290. $probeVo = $ultraSoundScannerVo->probes[0];
  291. $userExist = "SELECT login FROM [evolucare].[dbo].[tj_user] WHERE login = '". $userVo->login ."'";
  292. $userExistResult = SQLServerManager::queryOnDatabase( $userExist );
  293. if ($userExistResult)
  294. {
  295. error_log("UserService->register User already exists.");
  296. Throw new Exception("E004");
  297. }
  298. $query = "SELECT id FROM [evolucare].[dbo].[tr_application] WHERE code = '". $userVo->application ."'";
  299. $results = SQLServerManager::queryOnDatabase( $query );
  300. foreach( $results as $value )
  301. {
  302. $application = $value->id;
  303. }
  304. //D�but de la transaction
  305. //A chaque �tape une requ�te est pr�par�e, elle est execut�e puis si besoin l'id de l'insertion est r�cup�r�.
  306. $transaction = SQLServerManager::startTransaction();
  307. //Insertion de l'echographe (�tape 1)
  308. $ultraSoundScanner = "INSERT INTO [intimamedia_physician].[dbo].[t_ultra_sound_scanner] (name, brand, type, age) VALUES ".
  309. "('".SQLServerManager::convertStringToSQLServer( $ultraSoundScannerVo->name )."', '".SQLServerManager::convertStringToSQLServer( $ultraSoundScannerVo->brand )."', '".SQLServerManager::convertStringToSQLServer( $ultraSoundScannerVo->type )."', '01-01-".$ultraSoundScannerVo->age."')";
  310. $validUltraSoundScanner = SQLServerManager::executeQueryForTransaction( $ultraSoundScanner, $transaction );
  311. $idUltraSoundScanner = SQLServerManager::getLastId( "[intimamedia_physician].[dbo].[t_ultra_sound_scanner]", $transaction );
  312. // Organization insertion (step 2)
  313. $organization = "INSERT INTO [evolucare].[dbo].[t_organization] (name, creation, address_invoicing, address_shipping, city, zip_code, phone, fax, state, county, disctrict, fk_country) VALUES ".
  314. "('".SQLServerManager::convertStringToSQLServer( $hospitalVo->name )."', '".date( "Y-m-d", $hospitalVo->creation/1000 )."', '".SQLServerManager::convertStringToSQLServer( $hospitalVo->addressInvoicing )."', '".SQLServerManager::convertStringToSQLServer( $hospitalVo->addressShipping )."', '".SQLServerManager::convertStringToSQLServer( $hospitalVo->city )."', ".
  315. "'".$hospitalVo->zipCode."', '".$hospitalVo->phone."', '".$hospitalVo->fax."', '".SQLServerManager::convertStringToSQLServer( $hospitalVo->state )."', '".SQLServerManager::convertStringToSQLServer( $hospitalVo->county )."', '".SQLServerManager::convertStringToSQLServer( $hospitalVo->district )."', '".
  316. $hospitalVo->country ."')";
  317. error_log($organization);
  318. $validOrganization = SQLServerManager::executeQueryForTransaction( $organization, $transaction );
  319. $idOrganization = SQLServerManager::getLastId( "[evolucare].[dbo].[t_organization]", $transaction );
  320. // Probe insertion (step 3)
  321. $probe = "INSERT INTO [intimamedia_physician].[dbo].[t_probe] (frequency) VALUES (".$probeVo->frequency.")";
  322. $validProbe = SQLServerManager::executeQueryForTransaction( $probe, $transaction );
  323. $idProbe = SQLServerManager::getLastId( "[intimamedia_physician].[dbo].[t_probe]", $transaction );
  324. // Probe and scanner association insertion (step 4)
  325. $joinListProbe = "INSERT INTO [intimamedia_physician].[dbo].[tj_list_probe] (fk_ultra_sound_scanner, fk_probe) VALUES (".$idUltraSoundScanner.", ".$idProbe.")";
  326. $validJoinListProbe = SQLServerManager::executeQueryForTransaction( $joinListProbe, $transaction );
  327. // Probe and organization association insertion (step 5)
  328. $joinListFacilities = "INSERT INTO [evolucare].[dbo].[tj_facilities] (date, fk_organization, fk_ultra_sound_scanner) VALUES ('".date( "Y-m-d" )."', ".$idOrganization.", ".$idUltraSoundScanner.")";
  329. $validJoinListFacilities = SQLServerManager::executeQueryForTransaction( $joinListFacilities, $transaction );
  330. // Person insertion (step 6)
  331. $person = "INSERT INTO [evolucare].[dbo].[t_person] (uid, first_name, last_name, creation, phone, fax, activity, cellular, mail, fk_organization)".
  332. "VALUES ('".$personVo->uid."', '".SQLServerManager::convertStringToSQLServer( $personVo->firstName )."', '".SQLServerManager::convertStringToSQLServer( $personVo->lastName )."', '".date( "Y-m-d", $personVo->creation/1000 )."',".
  333. "'".$personVo->phone."', '".$personVo->fax."', '".SQLServerManager::convertStringToSQLServer( $personVo->activity )."', '".$personVo->cellular."', '".$personVo->mail."',".
  334. "".$idOrganization.")";
  335. $validPerson = SQLServerManager::executeQueryForTransaction( $person, $transaction );
  336. $personId = SQLServerManager::getLastId( "[evolucare].[dbo].[t_person]", $transaction );
  337. //Etape interm�diaire pour l'insertion de l'utilisateur
  338. $queryLanguage = "SELECT fk_language FROM [evolucare].[dbo].[tr_country] WHERE alpha2 = '".$lang."'";
  339. $result = SQLServerManager::queryOnDatabase( $queryLanguage );
  340. $languageId = 1;
  341. foreach( $result as $value )
  342. {
  343. $languageId = $value->fk_language;
  344. }
  345. // User insertion (step 7)
  346. $user = "INSERT INTO [evolucare].[dbo].[tj_user] (login, pass_print, answer_one, answer_two, help, last_connection, buyer, fk_person, fk_question_one, fk_question_two, fk_preference, fk_language)".
  347. "VALUES ('".$userVo->login."', '".$userVo->password."', '".$userVo->answerOne."', '".$userVo->answerTwo."', ".$userVo->help.", NULL,".
  348. "'".$userVo->buyer."', ".$personId.", '".$userVo->questionOne."', '".$userVo->questionTwo."', NULL , '".$languageId."')";
  349. $validUser = SQLServerManager::executeQueryForTransaction( $user, $transaction );
  350. $userId = SQLServerManager::getLastId( "[evolucare].[dbo].[tj_user]", $transaction );
  351. // User and application association insertion (step 8)
  352. $registration = "INSERT INTO [evolucare].[dbo].[tj_registration] (fk_user, fk_application)".
  353. "VALUES (".$userId.", ".$application.")";
  354. $validRegistration = SQLServerManager::executeQueryForTransaction( $registration, $transaction );
  355. // User and sales conditions association insertion (step 9)
  356. $termsId = $userVo->conditions;
  357. $terms = "INSERT INTO [evolucare].[dbo].[tj_list_cgv] (date, fk_user, fk_cgv)".
  358. "VALUES (". date( "Y-m-d" ) . ", ".$userId.", ".$termsId.")";
  359. $validTerms = SQLServerManager::executeQueryForTransaction( $terms, $transaction );
  360. if( $validUltraSoundScanner && $validOrganization && $validProbe && $validJoinListProbe && $validJoinListFacilities && $validPerson && $validUser && $validRegistration && $validTerms)
  361. {
  362. SQLServerManager::commitTransaction( $transaction );
  363. $subject = "Demande d'inscription IntimaMedia.com (Praticiens)";
  364. $body = "<html>Bonjour,<br><br>L'utilisateur ". $personVo->firstName ." ". $personVo->lastName ." a fait une demande d'inscription.<br>".
  365. "Voici ses coordonn&eacute;es :<br><br>".
  366. "Pr&eacute;nom : ". $personVo->firstName ."<br>".
  367. "Nom : ". $personVo->lastName ."<br>".
  368. "Mail : ". $userVo->login ."<br>".
  369. "T&eacute;l&eacute;phone : ". $personVo->phone ."<br>".
  370. "Fax : ". $personVo->fax ."<br>".
  371. "</html>";
  372. $sguser = 'support@iimt.fr';/*'support²ipsocloud.com'*/
  373. $sgpass = 'Marignan;/8';/*imtdev75015'*/
  374. $sendgrid = new SendGrid($sguser, $sgpass);
  375. $email = new SendGrid\Email();
  376. $email
  377. ->addTo('support@intimamedia.com')
  378. ->setFrom('support@iimt.fr')
  379. ->setSubject($subject)
  380. ->setText($subject)
  381. ->setHtml($body)
  382. ;
  383. try {
  384. $sendgrid->send($email);
  385. } catch(\SendGrid\Exception $e) {
  386. error_log("UserService->register Can't send email.");
  387. Throw new Exception("E002");
  388. // echo $e->getCode();
  389. // foreach($e->getErrors() as $er) {
  390. // echo $er;
  391. // }
  392. }
  393. /* if( !PhpMail::sendMail( "support@intimamedia.com", $subject, $body) )
  394. {
  395. Throw new Exception("E002");
  396. }
  397. */
  398. // send user confirmation = Confirmation par Email de l'inscription
  399. $key = "3HFdkfjdz*$)kn;!fdD1nsf~2@KL-{{";
  400. $userIdEncrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $userId, MCRYPT_MODE_CBC, md5(md5($key))));
  401. $pwdEncrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $userVo->password, MCRYPT_MODE_CBC, md5(md5($key))));
  402. if ($lang == 'FR')
  403. {
  404. $subject = "Votre demande d'inscription sur M'AthCloud";
  405. $body = "<HTML><HEAD></HEAD><BODY>Bonjour,<br /><br />Vous avez fait une demande d'inscription sur M'AthCloud.<br />".
  406. "Afin de terminer la validation de votre compte, merci de cliquer sur le lien d'activation ci-dessous:<br /><br />".
  407. "<a href=\"http://37.187.89.74?val1=" . rawurlencode($userIdEncrypted) . "&val2=" . rawurlencode($pwdEncrypted) . "\">Activer votre compte M'AthCloud</a><br /><br />".
  408. "Ou vous pouvez copier/coller ce lien directement dans votre navigateur.<br /><br />".
  409. "Cordialement.<br /><br />IMT Support</BODY></HTML>";
  410. }
  411. else if ($lang == 'ES')
  412. {
  413. $subject = "Su aplicación en M'AthCloud";
  414. $body = "<HTML><HEAD></HEAD><BODY>Hola,<br /><br />Usted ha hecho una solicitud de registro en M'AthCloud.<br />".
  415. "Para completar la validación de su cuenta, gracias clic en el enlace de activación a continuación:<br /><br />".
  416. "<a href=\"http://37.187.89.74?val1=" . rawurlencode($userIdEncrypted) . "&val2=" . rawurlencode($pwdEncrypted) . "\">Recibe en tu cuenta de M'AthCloud</a><br /><br />".
  417. "O usted puede copiar / pegar este enlace en su navegador.<br /><br />".
  418. "Cordialmente.<br /><br />IMT Soporte</BODY></HTML>";
  419. }
  420. else if ($lang == 'IT')
  421. {
  422. $subject = "L'applicazione su M'AthCloud";
  423. $body = "<HTML><HEAD></HEAD><BODY>Ciao,<br /><br />Hai fatto una domanda di registrazione su M'AthCloud.<br />".
  424. "Per completare la convalida del tuo account, grazie clicca sul link di attivazione qui sotto:<br /><br />".
  425. "<a href=\"http://37.187.89.74?val1=" . rawurlencode($userIdEncrypted) . "&val2=" . rawurlencode($pwdEncrypted) . "\">Attiva il tuo account M'AthCloud</a><br /><br />".
  426. "In alternativa, è possibile copiare / incollare questo link direttamente nel browser.<br /><br />".
  427. "Cordialmente.<br /><br />Assistenza di IMT</BODY></HTML>";
  428. }
  429. else if ($lang == 'PT')
  430. {
  431. $subject = "Sua aplicação no M'AthCloud";
  432. $body = "<HTML><HEAD></HEAD><BODY>Olá,<br /><br />Você fez um pedido de registo de M'AthCloud.<br />".
  433. "Para completar a validação de sua conta, agradecer você clicar no link de ativação abaixo:<br /><br />".
  434. "<a href=\"http://37.187.89.74?val1=" . rawurlencode($userIdEncrypted) . "&val2=" . rawurlencode($pwdEncrypted) . "\">Ative sua conta M'AthCloud</a><br /><br />".
  435. "Ou você pode copiar / colar este link diretamente em seu navegador.<br /><br />".
  436. "Cordialmente.<br /><br />Suporte do IMT</BODY></HTML>";
  437. }
  438. else if ($lang == 'DE')
  439. {
  440. $subject = "Uw aanvraag op M'AthCloud";
  441. $body = "<HTML><HEAD></HEAD><BODY>Hallo,<br /><br />U heeft een aanvraag tot inschrijving op M'AthCloud.<br />".
  442. "Om de validatie van uw account te voltooien, dank u klikt op de activatie link te klikken:<br /><br />".
  443. "<a href=\"http://37.187.89.74?val1=" . rawurlencode($userIdEncrypted) . "&val2=" . rawurlencode($pwdEncrypted) . "\">Activeer je account M'AthCloud</a><br /><br />".
  444. "Of u kunt kopiëren / plakken deze link rechtstreeks in uw browser.<br /><br />".
  445. "Hartelijk.<br /><br />Ondersteuning IMT</BODY></HTML>";
  446. }
  447. else
  448. {
  449. $subject = "Account Activation For M'AthCloud";
  450. $body = "<HTML><HEAD></HEAD><BODY>Welcome to M'AthCloud.<br /><br />We have received and processed your registration request.<br />".
  451. "To activate your account, please click the link below:<br /><br />".
  452. "<a href=\"http://37.187.89.74?val1=" . rawurlencode($userIdEncrypted) . "&val2=" . rawurlencode($pwdEncrypted) . "\">Activate your M'Ath Cloud account</a><br /><br />".
  453. "Or you can copy and paste this link directly into your browser.<br /><br />".
  454. "Best regards,<br /><br />IMT Support</BODY></HTML>";
  455. }
  456. $sguser = 'support@iimt.fr';/*'support@ipsocloud.com'*/
  457. $sgpass = 'Marignan;/8';/*'imtdev75015'*/
  458. $sendgrid = new SendGrid($sguser, $sgpass);
  459. $email = new SendGrid\Email();
  460. $email
  461. ->addTo($userVo->login)
  462. ->setFrom('support@iimt.fr') // ou support@intimamedia.fr
  463. ->setSubject($subject)
  464. ->setText($subject)
  465. ->setHtml($body)
  466. ;
  467. try {
  468. $sendgrid->send($email);
  469. } catch(\SendGrid\Exception $e) {
  470. error_log("UserService->register Can't send email2.");
  471. Throw new Exception("E002");
  472. // echo $e->getCode();
  473. // foreach($e->getErrors() as $er) {
  474. // echo $er;
  475. // }
  476. }
  477. /* if( !PhpMail::sendMail($userVo->login, $subject, $body) )
  478. {
  479. Throw new Exception("E002");
  480. }
  481. */
  482. }
  483. else
  484. {
  485. SQLServerManager::rollBackTransaction( $transaction );
  486. if(!$validUltraSoundScanner) error_log("UserService->register Invalid ultrasound scanner informations.");
  487. if(!$validOrganization) error_log("UserService->register Invalid organization informations.");
  488. if(!$validProbe) error_log("UserService->register Invalid probe informations.");
  489. if(!$validJoinListProbe) error_log("UserService->register Invalid list probe informations.");
  490. if(!$validJoinListFacilities) error_log("UserService->register Invalid list facilities informations.");
  491. if(!$validPerson) error_log("UserService->register Invalid person informations.");
  492. if(!$validUser) error_log("UserService->register Invalid user informations.");
  493. if(!$validRegistration) error_log("UserService->register Invalid registration informations.");
  494. if(!$validTerms) error_log("UserService->register Invalid terms informations.");
  495. Throw new Exception("E001");
  496. }
  497. $returnObjectVo = new ReturnObjectVo();
  498. $returnObjectVo->token = SecurityManager::getToken();
  499. $returnObjectVo->value = $userId;
  500. return $returnObjectVo;
  501. }
  502. public function userHelp($userId, $help)
  503. {
  504. if ($help == true)
  505. $help = 1;
  506. else
  507. $help = 0;
  508. $query = "UPDATE [evolucare].[dbo].[tj_user] set help='". $help ."'".
  509. " WHERE id = '".$userId."'";
  510. SQLServerManager::queryOnDatabase( $query );
  511. $returnObjectVo = new ReturnObjectVo();
  512. $returnObjectVo->token = SecurityManager::getToken();
  513. $returnObjectVo->value = $userId;
  514. return $returnObjectVo;
  515. }
  516. public function updateUser(UserVo $userVo)
  517. {
  518. $hospitalVo = $userVo->hospital;
  519. $personVo = $userVo->person;
  520. $ultraSoundScannerVo = $userVo->ultraSoundScanner;
  521. $probeVo = $ultraSoundScannerVo->probes[0];
  522. $transaction = SQLServerManager::startTransaction();
  523. $organizationQuery = "UPDATE [evolucare].[dbo].[t_organization] SET name = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->name) ).
  524. "', address_invoicing = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->addressInvoicing) ).
  525. "', address_shipping = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->addressShipping) ).
  526. "', city = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->city) )."', zip_code = '".trim($hospitalVo->zipCode).
  527. "', phone = '".trim($hospitalVo->phone)."', fax = '".trim($hospitalVo->fax).
  528. "', state = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->state) ).
  529. "', county = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->county) ).
  530. "', disctrict = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->district) )."', fk_country = '".$hospitalVo->country.
  531. "' WHERE id = '".$hospitalVo->id."'";
  532. /*$ff=fopen("d:/tmp.jd", "a+");
  533. fprintf($ff, "organizationQuery=%s\n", $organizationQuery);
  534. fclose($ff);*/
  535. $validOrganization = SQLServerManager::executeQueryForTransaction( $organizationQuery, $transaction );
  536. $personQuery = "UPDATE [evolucare].[dbo].[t_person] SET first_name = '".SQLServerManager::convertStringToSQLServer( trim($personVo->firstName) ).
  537. "', last_name = '".SQLServerManager::convertStringToSQLServer( trim($personVo->lastName) ).
  538. "', activity = '".SQLServerManager::convertStringToSQLServer( trim($personVo->activity) ).
  539. "', phone = '".SQLServerManager::convertStringToSQLServer( trim($personVo->phone) ).
  540. "', fax = '".SQLServerManager::convertStringToSQLServer( trim($personVo->fax) ).
  541. "' WHERE id = '" .$personVo->id. "'";
  542. /*$ff=fopen("d:/tmp.jd", "a+");
  543. fprintf($ff, "personQuery=%s\n", $personQuery);
  544. fclose($ff);*/
  545. $validPerson = SQLServerManager::executeQueryForTransaction( $personQuery, $transaction );
  546. $ultraSoundScannerQuery = "UPDATE [intimamedia_physician].[dbo].[t_ultra_sound_scanner] SET name = '".SQLServerManager::convertStringToSQLServer( trim($ultraSoundScannerVo->name) ).
  547. "', brand = '".SQLServerManager::convertStringToSQLServer( trim($ultraSoundScannerVo->brand) ).
  548. "', type = '".SQLServerManager::convertStringToSQLServer( trim($ultraSoundScannerVo->type) )."', age = '".$ultraSoundScannerVo->age.
  549. "' WHERE id = '" .$ultraSoundScannerVo->id. "'";
  550. /*$ff=fopen("d:/tmp.jd", "a+");
  551. fprintf($ff, "ultraSoundScannerQuery=%s\n", $ultraSoundScannerQuery);
  552. fclose($ff);*/
  553. $validUltraSoundScanner = SQLServerManager::executeQueryForTransaction( $ultraSoundScannerQuery, $transaction );
  554. $probeQuery = "UPDATE [intimamedia_physician].[dbo].[t_probe] SET frequency = '".$probeVo->frequency."' WHERE id = '".$probeVo->id."'";
  555. /*$ff=fopen("d:/tmp.jd", "a+");
  556. fprintf($ff, "validUltraSoundScanner=%s\n", $probeQuery);
  557. fclose($ff);*/
  558. $validProbe = SQLServerManager::executeQueryForTransaction( $probeQuery, $transaction );
  559. if( $validUltraSoundScanner && $validOrganization && $validProbe && $validPerson )
  560. {
  561. SQLServerManager::commitTransaction( $transaction );
  562. }
  563. else
  564. {
  565. SQLServerManager::rollBackTransaction( $transaction );
  566. Throw new Exception("E001");
  567. }
  568. $returnObjectVo = new ReturnObjectVo();
  569. $returnObjectVo->token = SecurityManager::getToken();
  570. $returnObjectVo->value = $userVo->id;
  571. return $returnObjectVo;
  572. }
  573. public function findCitiesByZipCode($zipCode, $country)
  574. {
  575. $table = "evolucare.dbo.tr_zip_code_" . strtolower( $country );
  576. $query = "SELECT DISTINCT city FROM ". $table ." WHERE zip_code = '". $zipCode ."'";
  577. $results = SQLServerManager::queryOnDatabase( $query );
  578. $resultArray = array();
  579. foreach( $results as $value )
  580. {
  581. $city = trim( $value->city );
  582. $city = ucfirst( strtolower( $value->city ) );
  583. array_push( $resultArray, $city );
  584. }
  585. return $resultArray;
  586. }
  587. public function findZipCodesByCity($city, $country)
  588. {
  589. $table = "evolucare.dbo.tr_zip_code_" . strtolower( $country );
  590. $query = "SELECT DISTINCT zip_code FROM ". $table ." WHERE city LIKE '". $city ."%'";
  591. $results = SQLServerManager::queryOnDatabase( $query );
  592. $resultArray = array();
  593. foreach( $results as $value )
  594. {
  595. array_push( $resultArray, $value->zip_code );
  596. }
  597. return $resultArray;
  598. }
  599. public function termsAndConditions($countryCode)
  600. {
  601. /*$query = "SELECT id, url FROM [evolucare].[dbo].[tr_cgv] ".
  602. "WHERE fk_country = '". $countryCode . "' " .
  603. "AND fk_application in (SELECT id FROM [evolucare].[dbo].[tr_application] WHERE code = '" . INTIMAMEDIA_APPLICATION . "')";*/
  604. $query = "SELECT id, url FROM [evolucare].[dbo].[tr_cgv] ".
  605. "WHERE fk_country = 'FR' " .
  606. "AND fk_application in (SELECT id FROM [evolucare].[dbo].[tr_application] WHERE code = '" . INTIMAMEDIA_APPLICATION . "')";
  607. $results = SQLServerManager::queryOnDatabase( $query );
  608. $termsVo = new TermsVo();
  609. foreach( $results as $value )
  610. {
  611. $termsVo->id = $value->id;
  612. $termsVo->url = $value->url;
  613. }
  614. $returnObjectVo = new ReturnObjectVo();
  615. $returnObjectVo->token = SecurityManager::getToken();
  616. $returnObjectVo->value = $termsVo;
  617. return $returnObjectVo;
  618. }
  619. public function termsAndConditionsAgreed($userId)
  620. {
  621. $query = "SELECT c.id, c.url FROM [evolucare].[dbo].[tr_cgv] as c "
  622. ."INNER JOIN [evolucare].[dbo].[tj_list_cgv] as lc ON c.id = lc.fk_cgv "
  623. ."WHERE lc.fk_user = '". $userId . "'";
  624. $results = SQLServerManager::queryOnDatabase( $query );
  625. $termsVo = new TermsVo();
  626. foreach( $results as $value )
  627. {
  628. $termsVo->id = $value->id;
  629. $termsVo->url = $value->url;
  630. }
  631. $returnObjectVo = new ReturnObjectVo();
  632. $returnObjectVo->token = SecurityManager::getToken();
  633. $returnObjectVo->value = $termsVo;
  634. return $returnObjectVo;
  635. }
  636. public function createIntimamediaExample($userId, $patientUid, $organizationId)
  637. {
  638. $token = time() + 1000;
  639. // get personId
  640. $query = "SELECT fk_person FROM [evolucare].[dbo].[tj_user] WHERE id = '". $userId ."'";
  641. $results = SQLServerManager::queryOnDatabase( $query );
  642. foreach( $results as $value )
  643. $personId = $value->fk_person;
  644. // get patient
  645. $returnObjectVo = new ReturnObjectVo();
  646. $returnObjectVo = PatientService::searchPatient('', $organizationId, $token);
  647. $patientVo = new PatientVo();
  648. foreach( $returnObjectVo->value as $value )
  649. {
  650. if (strcmp($value->uid, $patientUid))
  651. continue;
  652. $patientVo->firstName = $value->firstName;
  653. $patientVo->lastName = $value->lastName;
  654. $patientVo->sex = $value->sex;
  655. $patientVo->uid = $value->uid;
  656. $patientVo->birthCountry = $value->birthCountry;
  657. $patientVo->ethnicGroup = $value->ethnicGroup;
  658. $patientVo->creation = $value->creation;
  659. $patientVo->birthDate = $value->birthDate;
  660. $patientVo->lastVisit = $value->lastVisit;
  661. break;
  662. }
  663. // createPatient
  664. $patientId = $this->createExamplePatient($patientVo, $personId);
  665. // getAppointments
  666. $returnObjectVo = PatientService::searchAppointments($patientUid, $token);
  667. $appointmentVo = new AppointmentVo();
  668. $nbAppointment = 1;
  669. /*$ff=fopen("d:/tmp.jd", "a+");
  670. fprintf($ff, "createIntimamediaExample, nbappointment=%s\n", sizeof($returnObjectVo->value));
  671. fclose($ff);*/
  672. foreach( $returnObjectVo->value as $value )
  673. {
  674. $getMeasures = true;
  675. $appointmentVo->number = $nbAppointment;
  676. $appointmentVo->patientId = $patientId;
  677. $appointmentVo->date = $value->date;
  678. $appointmentVo->weight = $value->weight;
  679. $appointmentVo->height = $value->height;
  680. $appointmentVo->livingCountry = $value->livingCountry;
  681. $srcAppointmentId = $value->id;
  682. // create appointment
  683. $appointmentVo->id = $this->createExampleAppointment($appointmentVo, $patientUid);
  684. $atsVo = new AtsVo();
  685. $atsVo = $value->ats;
  686. $tobaccoVo = new TobaccoVo();
  687. $tobaccoVo = $value->tobacco;
  688. $personalHistoryVo = new PersonalHistoryVo();
  689. $personalHistoryVo = $value->personalHistory;
  690. $familyHistoryVo = new FamilyHistoryVo();
  691. $familyHistoryVo = $value->familyHistory;
  692. $cvExaminatorVo = new CvExaminatorVo();
  693. $cvExaminatorVo = $value->cvExaminator;
  694. $treatments = array();
  695. $treatments = $value->treatments;
  696. if ($atsVo && $tobaccoVo)
  697. PatientService::addATSRiskToAnAppointment($atsVo, $tobaccoVo, $appointmentVo->id, $token);
  698. if ($personalHistoryVo)
  699. PatientService::addPersonalHistoryToAnAppointment($personalHistoryVo, $appointmentVo->id, $token);
  700. if ($familyHistoryVo)
  701. PatientService::addFamilyHistoryToAnAppointment($familyHistoryVo, $appointmentVo->id, $token);
  702. if ($cvExaminatorVo)
  703. PatientService::addCardiovascularExaminatorToAnAppointment($cvExaminatorVo, $appointmentVo->id, $token);
  704. if ($treatments)
  705. PatientService::addTreatmentsToAnAppointment($treatments, $appointmentVo->id, $token);
  706. // get markers
  707. $markerArray = AcquisitionService::getMarkers($srcAppointmentId);
  708. AcquisitionService::saveMarker($markerArray, $appointmentVo->id);
  709. // get images
  710. $imageArray = AcquisitionService::getImages($srcAppointmentId);
  711. $imageIdList = array();
  712. foreach( $imageArray as $image )
  713. array_push($imageIdList, $image->id);
  714. // get measures
  715. try {
  716. $measureArray = MeasureService::getMeasures($imageIdList);
  717. } catch (Exception $e) {$getMeasures = false;}
  718. $matchingId = array();
  719. foreach( $imageArray as $image )
  720. {
  721. $newImageId = $this->createExampleImage($image, $srcAppointmentId, $appointmentVo->id);
  722. $matchingId["$image->id"] = $newImageId;
  723. /*$ff=fopen("d:/tmp.jd", "a+");
  724. fprintf($ff, "createIntimamediaExample, oldimageId = %d, newimageId=%d\n", $image->id, $newImageId);
  725. fclose($ff);*/
  726. }
  727. if (!$getMeasures)
  728. {
  729. $nbAppointment++;
  730. continue;
  731. }
  732. $measuresToPersist = array();
  733. foreach( $measureArray as $measure )
  734. {
  735. $dragAndDropVo = new DragAndDropVo();
  736. /*$ff=fopen("d:/tmp.jd", "a+");
  737. fprintf($ff, "createIntimamediaExample, matching=%d %d\n", $matchingId["$measure->imageId"], $measure->imageId);
  738. fclose($ff);*/
  739. $dragAndDropVo->id = $matchingId["$measure->imageId"];
  740. $dragAndDropVo->scale = $measure->scale;
  741. $dragAndDropVo->distance = $measure->distance;
  742. $dragAndDropVo->area = $measure->area;
  743. $dragAndDropVo->area2 = $measure->area2;
  744. $dragAndDropVo->nwImtResult = $measure->nwImt;
  745. $dragAndDropVo->fwImtResult = $measure->fwImt;
  746. $dragAndDropVo->ultraSoundScanner = 0;
  747. array_push($measuresToPersist, $dragAndDropVo);
  748. }
  749. MeasureService::saveMeasures($measuresToPersist, $token);
  750. $nbAppointment++;
  751. }
  752. }
  753. public function createExamplePatient(PatientVo $patientVo, $personId)
  754. {
  755. $query = "SELECT fk_organization FROM [evolucare].[dbo].[t_person] WHERE id = '". $personId ."'";
  756. $results = SQLServerManager::queryOnDatabase( $query );
  757. foreach( $results as $value )
  758. $fk_organization = $value->fk_organization;
  759. $patientVo->uid = substr($patientVo->uid, 3);
  760. $patientVo->uid .= $personId;
  761. $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 ('".
  762. $patientVo->uid ."','". SQLServerManager::convertStringToSQLServer( $patientVo->firstName ) ."','".
  763. SQLServerManager::convertStringToSQLServer( $patientVo->lastName ) ."','".
  764. $patientVo->creation ."','". $patientVo->sex ."','".
  765. $patientVo->birthDate ."', '". $patientVo->birthCountry ."', '". $patientVo->ethnicGroup ."', '".
  766. $patientVo->lastVisit ."', " . $personId .", ". $fk_organization .")";
  767. $results = SQLServerManager::queryOnDatabase( $query );
  768. if ($results == "exception")
  769. Throw new Exception("E007");
  770. $query = "SELECT id FROM [evolucare].[dbo].[t_patient] WHERE uid_physician = '". $patientVo->uid ."'";
  771. $results = SQLServerManager::queryOnDatabase( $query );
  772. $patientId = -1;
  773. foreach( $results as $value )
  774. $patientId = $value->id;
  775. return $patientId;
  776. }
  777. public function createExampleAppointment(AppointmentVo $appointmentVo, $patientUid)
  778. {
  779. $query = "INSERT INTO [intimamedia_physician].[dbo].[tj_appointment] ( number, date, weight, height, fk_patient, fk_live_country ) VALUES (".
  780. $appointmentVo->number .",'". $appointmentVo->date ."',". $appointmentVo->weight .",".
  781. $appointmentVo->height .",". $appointmentVo->patientId .",'". $appointmentVo->livingCountry ."')";
  782. /*$ff=fopen("d:/tmp.jd", "a+");
  783. fprintf($ff, "createExampleAppointment, query=%s\n", $query);
  784. fclose($ff);*/
  785. $results = SQLServerManager::queryOnDatabase( $query );
  786. if ($results == "exception")
  787. Throw new Exception("E008");
  788. $query = "SELECT MAX(id) AS lastId FROM [intimamedia_physician].[dbo].[tj_appointment]";
  789. $results = SQLServerManager::queryOnDatabase( $query );
  790. $appointmentId = -1;
  791. foreach( $results as $value )
  792. $appointmentId = $value->lastId;
  793. /*$ff=fopen("d:/tmp.jd", "a+");
  794. fprintf($ff, "++++++++++ createExampleAppointment, appointmentId=%s\n", $appointmentId);
  795. fclose($ff);*/
  796. return $appointmentId;
  797. }
  798. public function createExampleImage( DragAndDropVo $dragAndDropVo, $srcAppointmentId, $appointmentId )
  799. {
  800. $path = "../images/";
  801. $srcFolder = $path . $srcAppointmentId;
  802. $folder = $path . $appointmentId;
  803. $keyType = $dragAndDropVo->type;
  804. $imageHigh = substr($dragAndDropVo->imageHigh, strrpos($dragAndDropVo->imageHigh, '/')+1);
  805. $imageSmall = substr($dragAndDropVo->imageSmall, strrpos($dragAndDropVo->imageSmall, '/')+1);
  806. $width = $dragAndDropVo->width;
  807. $height = $dragAndDropVo->height;
  808. $collection = $dragAndDropVo->collection;
  809. $incidence = $dragAndDropVo->incidence;
  810. $dicom = ($dragAndDropVo->isDicom) ? 1 : 0;
  811. if( !is_dir ( $folder ) )
  812. {
  813. mkdir( $folder );
  814. }
  815. /*$ff=fopen("d:/tmp.jd", "a+");
  816. fprintf($ff, "saveImages, src=%s dest=%s\n", $srcFolder. "/" . $imageHigh, $folder. "/". $imageHigh);
  817. fclose($ff);*/
  818. copy( $srcFolder. "/" . $imageHigh, $folder. "/". $imageHigh);
  819. copy( $srcFolder. "/" . $imageSmall, $folder. "/". $imageSmall);
  820. $url = "http://" . IP_HOST . "/images/". $appointmentId ."/";
  821. $transaction = SQLServerManager::startTransaction();
  822. $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 . ")";
  823. $validImageQuery = SQLServerManager::executeQueryForTransaction( $imageQuery, $transaction );
  824. $idImage = SQLServerManager::getLastId( "[intimamedia_physician].[dbo].[t_image]", $transaction );
  825. if( $validImageQuery )
  826. {
  827. SQLServerManager::commitTransaction( $transaction );
  828. /*$ff=fopen("d:/tmp.jd", "a+");
  829. fprintf($ff, "saveImages, imageid=%s added\n", $idImage);
  830. fclose($ff);*/
  831. return $idImage;
  832. }
  833. Throw new Exception("E017");
  834. }
  835. public function createExampleMeasures( $list )
  836. {
  837. foreach( $list as $value )
  838. {
  839. $imgId = $value->id;
  840. $scale = $value->scale;
  841. $distance = $value->distance;
  842. $area = $value->area;
  843. $area2 = $value->area2;
  844. $nwImtResult = $value->nwImtResult;
  845. $fwImtResult = $value->fwImtResult;
  846. $ultraSoundScanner = $value->ultrasoudscanner;
  847. $query = "SELECT id FROM [intimamedia_physician].[dbo].[tj_measure] WHERE fk_image = ". $imgId;
  848. /*$ff=fopen("d:/tmp.jd", "a+");
  849. fprintf($ff, "createExampleMeasures, list=%d %f %f %f %d %d\n", $imgId, $scale, $distance, $area, $nwImtResult, $fwImtResult);
  850. fprintf($ff, "createExampleMeasures, sql=%s\n", $query);
  851. fclose($ff);*/
  852. $results = SQLServerManager::queryOnDatabase( $query );
  853. $resultArray = array();
  854. $measureId = 0;
  855. foreach( $results as $val )
  856. {
  857. $measureId = $val->id;
  858. }
  859. $operation = INSERT;
  860. if ($measureId)
  861. {
  862. // update
  863. $operation = UPDATE;
  864. }
  865. /*$ff=fopen("d:/tmp.jd", "a+");
  866. fprintf($ff, "createExampleMeasures, measureId=%s\n", $measureId);
  867. fclose($ff);*/
  868. MeasureService::persistMeasure($measureId, $imgId, $operation, $scale, $distance, $area, $area2, $fwImtResult, $nwImtResult, $ultraSoundScanner);
  869. }
  870. }
  871. }
  872. ?>