UserService1.php 46 KB

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