UserServiceold.php 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092
  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@iimt.fr';
  178. $sgpass = 'Marignan;/8';
  179. $sendgrid = new SendGrid($sguser, $sgpass);
  180. $email = new SendGrid\Email();
  181. $email
  182. ->addTo('support@intimamedia.com')
  183. ->setFrom('support@iimt.fr')
  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@iimt.fr';
  209. $sgpass = 'Marignan;/8';
  210. $sendgrid = new SendGrid($sguser, $sgpass);
  211. $email = new SendGrid\Email();
  212. $email
  213. ->addTo('support@intimamedia.com')
  214. ->setFrom('support@iimt.fr')
  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 (�tape 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 (step 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 (step 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 (step 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 (step 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 (step 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 (step 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. $validUser = SQLServerManager::executeQueryForTransaction( $user, $transaction );
  344. $userId = SQLServerManager::getLastId( "[evolucare].[dbo].[tj_user]", $transaction );
  345. // User and application association insertion (step 8)
  346. $registration = "INSERT INTO [evolucare].[dbo].[tj_registration] (fk_user, fk_application)".
  347. "VALUES (".$userId.", ".$application.")";
  348. $validRegistration = SQLServerManager::executeQueryForTransaction( $registration, $transaction );
  349. // User and sales conditions association insertion (step 9)
  350. $termsId = $userVo->conditions;
  351. $terms = "INSERT INTO [evolucare].[dbo].[tj_list_cgv] (date, fk_user, fk_cgv)".
  352. "VALUES (". date( "Y-m-d" ) . ", ".$userId.", ".$termsId.")";
  353. $validTerms = SQLServerManager::executeQueryForTransaction( $terms, $transaction );
  354. if( $validUltraSoundScanner && $validOrganization && $validProbe && $validJoinListProbe && $validJoinListFacilities && $validPerson && $validUser && $validRegistration && $validTerms)
  355. {
  356. SQLServerManager::commitTransaction( $transaction );
  357. $subject = "Demande d'inscription IntimaMedia.com (Praticiens)";
  358. $body = "<html>Bonjour,<br><br>L'utilisateur ". $personVo->firstName ." ". $personVo->lastName ." a fait une demande d'inscription.<br>".
  359. "Voici ses coordonn&eacute;es :<br><br>".
  360. "Pr&eacute;nom : ". $personVo->firstName ."<br>".
  361. "Nom : ". $personVo->lastName ."<br>".
  362. "Mail : ". $userVo->login ."<br>".
  363. "T&eacute;l&eacute;phone : ". $personVo->phone ."<br>".
  364. "Fax : ". $personVo->fax ."<br>".
  365. "</html>";
  366. $sguser = 'support@iimt.fr';
  367. $sgpass = 'Marignan;/8';
  368. $sendgrid = new SendGrid($sguser, $sgpass);
  369. $email = new SendGrid\Email();
  370. $email
  371. ->addTo('support@intimamedia.com')
  372. ->setFrom('support@iimt.fr')
  373. ->setSubject($subject)
  374. ->setText($subject)
  375. ->setHtml($body)
  376. ;
  377. try {
  378. $sendgrid->send($email);
  379. } catch(\SendGrid\Exception $e) {
  380. error_log("UserService->register Can't send email.");
  381. Throw new Exception("E002");
  382. // echo $e->getCode();
  383. // foreach($e->getErrors() as $er) {
  384. // echo $er;
  385. // }
  386. }
  387. /* if( !PhpMail::sendMail( "support@intimamedia.com", $subject, $body) )
  388. {
  389. Throw new Exception("E002");
  390. }
  391. */
  392. // send user confirmation
  393. $key = "3HFdkfjdz*$)kn;!fdD1nsf~2@KL-{{";
  394. $userIdEncrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $userId, MCRYPT_MODE_CBC, md5(md5($key))));
  395. $pwdEncrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $userVo->password, MCRYPT_MODE_CBC, md5(md5($key))));
  396. if ($lang == 'FR')
  397. {
  398. $subject = "Votre demande d'inscription sur M'AthCloud";
  399. $body = "<HTML><HEAD></HEAD><BODY>Bonjour,<br /><br />Vous avez fait une demande d'inscription sur M'AthCloud.<br />".
  400. "Afin de terminer la validation de votre compte, merci de cliquer sur le lien d'activation ci-dessous:<br /><br />".
  401. "<a href=\"http://37.187.89.74?val1=" . rawurlencode($userIdEncrypted) . "&val2=" . rawurlencode($pwdEncrypted) . "\">Activer votre compte M'AthCloud</a><br /><br />".
  402. "Ou vous pouvez copier/coller ce lien directement dans votre navigateur.<br /><br />".
  403. "Cordialement.<br /><br />IMT Support</BODY></HTML>";
  404. }
  405. else if ($lang == 'ES')
  406. {
  407. $subject = "Su aplicación en M'AthCloud";
  408. $body = "<HTML><HEAD></HEAD><BODY>Hola,<br /><br />Usted ha hecho una solicitud de registro en M'AthCloud.<br />".
  409. "Para completar la validación de su cuenta, gracias clic en el enlace de activación a continuación:<br /><br />".
  410. "<a href=\"http://37.187.89.74?val1=" . rawurlencode($userIdEncrypted) . "&val2=" . rawurlencode($pwdEncrypted) . "\">Recibe en tu cuenta de M'AthCloud</a><br /><br />".
  411. "O usted puede copiar / pegar este enlace en su navegador.<br /><br />".
  412. "Cordialmente.<br /><br />IMT Soporte</BODY></HTML>";
  413. }
  414. else if ($lang == 'IT')
  415. {
  416. $subject = "L'applicazione su M'AthCloud";
  417. $body = "<HTML><HEAD></HEAD><BODY>Ciao,<br /><br />Hai fatto una domanda di registrazione su M'AthCloud.<br />".
  418. "Per completare la convalida del tuo account, grazie clicca sul link di attivazione qui sotto:<br /><br />".
  419. "<a href=\"http://37.187.89.74?val1=" . rawurlencode($userIdEncrypted) . "&val2=" . rawurlencode($pwdEncrypted) . "\">Attiva il tuo account M'AthCloud</a><br /><br />".
  420. "In alternativa, è possibile copiare / incollare questo link direttamente nel browser.<br /><br />".
  421. "Cordialmente.<br /><br />Assistenza di IMT</BODY></HTML>";
  422. }
  423. else if ($lang == 'PT')
  424. {
  425. $subject = "Sua aplicação no M'AthCloud";
  426. $body = "<HTML><HEAD></HEAD><BODY>Olá,<br /><br />Você fez um pedido de registo de M'AthCloud.<br />".
  427. "Para completar a validação de sua conta, agradecer você clicar no link de ativação abaixo:<br /><br />".
  428. "<a href=\"http://37.187.89.74?val1=" . rawurlencode($userIdEncrypted) . "&val2=" . rawurlencode($pwdEncrypted) . "\">Ative sua conta M'AthCloud</a><br /><br />".
  429. "Ou você pode copiar / colar este link diretamente em seu navegador.<br /><br />".
  430. "Cordialmente.<br /><br />Suporte do IMT</BODY></HTML>";
  431. }
  432. else if ($lang == 'DE')
  433. {
  434. $subject = "Uw aanvraag op M'AthCloud";
  435. $body = "<HTML><HEAD></HEAD><BODY>Hallo,<br /><br />U heeft een aanvraag tot inschrijving op M'AthCloud.<br />".
  436. "Om de validatie van uw account te voltooien, dank u klikt op de activatie link te klikken:<br /><br />".
  437. "<a href=\"http://37.187.89.74?val1=" . rawurlencode($userIdEncrypted) . "&val2=" . rawurlencode($pwdEncrypted) . "\">Activeer je account M'AthCloud</a><br /><br />".
  438. "Of u kunt kopiëren / plakken deze link rechtstreeks in uw browser.<br /><br />".
  439. "Hartelijk.<br /><br />Ondersteuning IMT</BODY></HTML>";
  440. }
  441. else
  442. {
  443. $subject = "Account Activation For M'AthCloud";
  444. $body = "<HTML><HEAD></HEAD><BODY>Welcome to M'AthCloud.<br /><br />We have received and processed your registration request.<br />".
  445. "To activate your account, please click the link below:<br /><br />".
  446. "<a href=\"http://37.187.89.74?val1=" . rawurlencode($userIdEncrypted) . "&val2=" . rawurlencode($pwdEncrypted) . "\">Activate your M'Ath Cloud account</a><br /><br />".
  447. "Or you can copy and paste this link directly into your browser.<br /><br />".
  448. "Best regards,<br /><br />IMT Support</BODY></HTML>";
  449. }
  450. $sguser = 'support@iimt.fr';/*Modifié , avant ipsocloud.com*/;
  451. $sgpass = 'Marignan;/8';/*Modifié,avant imtdev75015*/
  452. $sendgrid = new SendGrid($sguser, $sgpass);
  453. $email = new SendGrid\Email();
  454. $email
  455. ->addTo($userVo->login)
  456. ->setFrom('support@iimt.fr')
  457. ->setSubject($subject)
  458. ->setText($subject)
  459. ->setHtml($body)
  460. ;
  461. try {
  462. $sendgrid->send($email);
  463. } catch(\SendGrid\Exception $e) {
  464. error_log("UserService->register Can't send email2.");
  465. Throw new Exception("E002");
  466. // echo $e->getCode();
  467. // foreach($e->getErrors() as $er) {
  468. // echo $er;
  469. // }
  470. }
  471. /* if( !PhpMail::sendMail($userVo->login, $subject, $body) )
  472. {
  473. Throw new Exception("E002");
  474. }
  475. */
  476. } /******
  477. else
  478. {
  479. SQLServerManager::rollBackTransaction( $transaction );
  480. if(!$validUltraSoundScanner) error_log("UserService->register Invalid ultrasound scanner informations.");
  481. if(!$validOrganization) error_log("UserService->register Invalid organization informations.");
  482. if(!$validProbe) error_log("UserService->register Invalid probe informations.");
  483. if(!$validJoinListProbe) error_log("UserService->register Invalid list probe informations.");
  484. if(!$validJoinListFacilities) error_log("UserService->register Invalid list facilities informations.");
  485. if(!$validPerson) error_log("UserService->register Invalid person informations.");
  486. if(!$validUser) error_log("UserService->register Invalid user informations.");
  487. if(!$validRegistration) error_log("UserService->register Invalid registration informations.");
  488. if(!$validTerms) error_log("UserService->register Invalid terms informations.");
  489. Throw new Exception("E001");
  490. }******/
  491. $returnObjectVo = new ReturnObjectVo();
  492. $returnObjectVo->token = SecurityManager::getToken();
  493. $returnObjectVo->value = $userId;
  494. return $returnObjectVo;
  495. }
  496. public function userHelp($userId, $help)
  497. {
  498. if ($help == true)
  499. $help = 1;
  500. else
  501. $help = 0;
  502. $query = "UPDATE [evolucare].[dbo].[tj_user] set help='". $help ."'".
  503. " WHERE id = '".$userId."'";
  504. SQLServerManager::queryOnDatabase( $query );
  505. $returnObjectVo = new ReturnObjectVo();
  506. $returnObjectVo->token = SecurityManager::getToken();
  507. $returnObjectVo->value = $userId;
  508. return $returnObjectVo;
  509. }
  510. public function updateUser(UserVo $userVo)
  511. {
  512. $hospitalVo = $userVo->hospital;
  513. $personVo = $userVo->person;
  514. $ultraSoundScannerVo = $userVo->ultraSoundScanner;
  515. $probeVo = $ultraSoundScannerVo->probes[0];
  516. $transaction = SQLServerManager::startTransaction();
  517. $organizationQuery = "UPDATE [evolucare].[dbo].[t_organization] SET name = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->name) ).
  518. "', address_invoicing = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->addressInvoicing) ).
  519. "', address_shipping = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->addressShipping) ).
  520. "', city = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->city) )."', zip_code = '".trim($hospitalVo->zipCode).
  521. "', phone = '".trim($hospitalVo->phone)."', fax = '".trim($hospitalVo->fax).
  522. "', state = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->state) ).
  523. "', county = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->county) ).
  524. "', disctrict = '".SQLServerManager::convertStringToSQLServer( trim($hospitalVo->district) )."', fk_country = '".$hospitalVo->country.
  525. "' WHERE id = '".$hospitalVo->id."'";
  526. /*$ff=fopen("d:/tmp.jd", "a+");
  527. fprintf($ff, "organizationQuery=%s\n", $organizationQuery);
  528. fclose($ff);*/
  529. $validOrganization = SQLServerManager::executeQueryForTransaction( $organizationQuery, $transaction );
  530. $personQuery = "UPDATE [evolucare].[dbo].[t_person] SET first_name = '".SQLServerManager::convertStringToSQLServer( trim($personVo->firstName) ).
  531. "', last_name = '".SQLServerManager::convertStringToSQLServer( trim($personVo->lastName) ).
  532. "', activity = '".SQLServerManager::convertStringToSQLServer( trim($personVo->activity) ).
  533. "', phone = '".SQLServerManager::convertStringToSQLServer( trim($personVo->phone) ).
  534. "', fax = '".SQLServerManager::convertStringToSQLServer( trim($personVo->fax) ).
  535. "' WHERE id = '" .$personVo->id. "'";
  536. /*$ff=fopen("d:/tmp.jd", "a+");
  537. fprintf($ff, "personQuery=%s\n", $personQuery);
  538. fclose($ff);*/
  539. $validPerson = SQLServerManager::executeQueryForTransaction( $personQuery, $transaction );
  540. $ultraSoundScannerQuery = "UPDATE [intimamedia_physician].[dbo].[t_ultra_sound_scanner] SET name = '".SQLServerManager::convertStringToSQLServer( trim($ultraSoundScannerVo->name) ).
  541. "', brand = '".SQLServerManager::convertStringToSQLServer( trim($ultraSoundScannerVo->brand) ).
  542. "', type = '".SQLServerManager::convertStringToSQLServer( trim($ultraSoundScannerVo->type) )."', age = '".$ultraSoundScannerVo->age.
  543. "' WHERE id = '" .$ultraSoundScannerVo->id. "'";
  544. /*$ff=fopen("d:/tmp.jd", "a+");
  545. fprintf($ff, "ultraSoundScannerQuery=%s\n", $ultraSoundScannerQuery);
  546. fclose($ff);*/
  547. $validUltraSoundScanner = SQLServerManager::executeQueryForTransaction( $ultraSoundScannerQuery, $transaction );
  548. $probeQuery = "UPDATE [intimamedia_physician].[dbo].[t_probe] SET frequency = '".$probeVo->frequency."' WHERE id = '".$probeVo->id."'";
  549. /*$ff=fopen("d:/tmp.jd", "a+");
  550. fprintf($ff, "validUltraSoundScanner=%s\n", $probeQuery);
  551. fclose($ff);*/
  552. $validProbe = SQLServerManager::executeQueryForTransaction( $probeQuery, $transaction );
  553. if( $validUltraSoundScanner && $validOrganization && $validProbe && $validPerson )
  554. {
  555. SQLServerManager::commitTransaction( $transaction );
  556. }
  557. else
  558. {
  559. SQLServerManager::rollBackTransaction( $transaction );
  560. Throw new Exception("E001");
  561. }
  562. $returnObjectVo = new ReturnObjectVo();
  563. $returnObjectVo->token = SecurityManager::getToken();
  564. $returnObjectVo->value = $userVo->id;
  565. return $returnObjectVo;
  566. }
  567. public function findCitiesByZipCode($zipCode, $country)
  568. {
  569. $table = "evolucare.dbo.tr_zip_code_" . strtolower( $country );
  570. $query = "SELECT DISTINCT city FROM ". $table ." WHERE zip_code = '". $zipCode ."'";
  571. $results = SQLServerManager::queryOnDatabase( $query );
  572. $resultArray = array();
  573. foreach( $results as $value )
  574. {
  575. $city = trim( $value->city );
  576. $city = ucfirst( strtolower( $value->city ) );
  577. array_push( $resultArray, $city );
  578. }
  579. return $resultArray;
  580. }
  581. public function findZipCodesByCity($city, $country)
  582. {
  583. $table = "evolucare.dbo.tr_zip_code_" . strtolower( $country );
  584. $query = "SELECT DISTINCT zip_code FROM ". $table ." WHERE city LIKE '". $city ."%'";
  585. $results = SQLServerManager::queryOnDatabase( $query );
  586. $resultArray = array();
  587. foreach( $results as $value )
  588. {
  589. array_push( $resultArray, $value->zip_code );
  590. }
  591. return $resultArray;
  592. }
  593. public function termsAndConditions($countryCode)
  594. {
  595. /*$query = "SELECT id, url FROM [evolucare].[dbo].[tr_cgv] ".
  596. "WHERE fk_country = '". $countryCode . "' " .
  597. "AND fk_application in (SELECT id FROM [evolucare].[dbo].[tr_application] WHERE code = '" . INTIMAMEDIA_APPLICATION . "')";*/
  598. $query = "SELECT id, url FROM [evolucare].[dbo].[tr_cgv] ".
  599. "WHERE fk_country = 'FR' " .
  600. "AND fk_application in (SELECT id FROM [evolucare].[dbo].[tr_application] WHERE code = '" . INTIMAMEDIA_APPLICATION . "')";
  601. $results = SQLServerManager::queryOnDatabase( $query );
  602. $termsVo = new TermsVo();
  603. foreach( $results as $value )
  604. {
  605. $termsVo->id = $value->id;
  606. $termsVo->url = $value->url;
  607. }
  608. $returnObjectVo = new ReturnObjectVo();
  609. $returnObjectVo->token = SecurityManager::getToken();
  610. $returnObjectVo->value = $termsVo;
  611. return $returnObjectVo;
  612. }
  613. public function termsAndConditionsAgreed($userId)
  614. {
  615. $query = "SELECT c.id, c.url FROM [evolucare].[dbo].[tr_cgv] as c "
  616. ."INNER JOIN [evolucare].[dbo].[tj_list_cgv] as lc ON c.id = lc.fk_cgv "
  617. ."WHERE lc.fk_user = '". $userId . "'";
  618. $results = SQLServerManager::queryOnDatabase( $query );
  619. $termsVo = new TermsVo();
  620. foreach( $results as $value )
  621. {
  622. $termsVo->id = $value->id;
  623. $termsVo->url = $value->url;
  624. }
  625. $returnObjectVo = new ReturnObjectVo();
  626. $returnObjectVo->token = SecurityManager::getToken();
  627. $returnObjectVo->value = $termsVo;
  628. return $returnObjectVo;
  629. }
  630. public function createIntimamediaExample($userId, $patientUid, $organizationId)
  631. {
  632. $token = time() + 1000;
  633. // get personId
  634. $query = "SELECT fk_person FROM [evolucare].[dbo].[tj_user] WHERE id = '". $userId ."'";
  635. $results = SQLServerManager::queryOnDatabase( $query );
  636. foreach( $results as $value )
  637. $personId = $value->fk_person;
  638. // get patient
  639. $returnObjectVo = new ReturnObjectVo();
  640. $returnObjectVo = PatientService::searchPatient('', $organizationId, $token);
  641. $patientVo = new PatientVo();
  642. foreach( $returnObjectVo->value as $value )
  643. {
  644. if (strcmp($value->uid, $patientUid))
  645. continue;
  646. $patientVo->firstName = $value->firstName;
  647. $patientVo->lastName = $value->lastName;
  648. $patientVo->sex = $value->sex;
  649. $patientVo->uid = $value->uid;
  650. $patientVo->birthCountry = $value->birthCountry;
  651. $patientVo->ethnicGroup = $value->ethnicGroup;
  652. $patientVo->creation = $value->creation;
  653. $patientVo->birthDate = $value->birthDate;
  654. $patientVo->lastVisit = $value->lastVisit;
  655. break;
  656. }
  657. // createPatient
  658. $patientId = $this->createExamplePatient($patientVo, $personId);
  659. // getAppointments
  660. $returnObjectVo = PatientService::searchAppointments($patientUid, $token);
  661. $appointmentVo = new AppointmentVo();
  662. $nbAppointment = 1;
  663. /*$ff=fopen("d:/tmp.jd", "a+");
  664. fprintf($ff, "createIntimamediaExample, nbappointment=%s\n", sizeof($returnObjectVo->value));
  665. fclose($ff);*/
  666. foreach( $returnObjectVo->value as $value )
  667. {
  668. $getMeasures = true;
  669. $appointmentVo->number = $nbAppointment;
  670. $appointmentVo->patientId = $patientId;
  671. $appointmentVo->date = $value->date;
  672. $appointmentVo->weight = $value->weight;
  673. $appointmentVo->height = $value->height;
  674. $appointmentVo->livingCountry = $value->livingCountry;
  675. $srcAppointmentId = $value->id;
  676. // create appointment
  677. $appointmentVo->id = $this->createExampleAppointment($appointmentVo, $patientUid);
  678. $atsVo = new AtsVo();
  679. $atsVo = $value->ats;
  680. $tobaccoVo = new TobaccoVo();
  681. $tobaccoVo = $value->tobacco;
  682. $personalHistoryVo = new PersonalHistoryVo();
  683. $personalHistoryVo = $value->personalHistory;
  684. $familyHistoryVo = new FamilyHistoryVo();
  685. $familyHistoryVo = $value->familyHistory;
  686. $cvExaminatorVo = new CvExaminatorVo();
  687. $cvExaminatorVo = $value->cvExaminator;
  688. $treatments = array();
  689. $treatments = $value->treatments;
  690. if ($atsVo && $tobaccoVo)
  691. PatientService::addATSRiskToAnAppointment($atsVo, $tobaccoVo, $appointmentVo->id, $token);
  692. if ($personalHistoryVo)
  693. PatientService::addPersonalHistoryToAnAppointment($personalHistoryVo, $appointmentVo->id, $token);
  694. if ($familyHistoryVo)
  695. PatientService::addFamilyHistoryToAnAppointment($familyHistoryVo, $appointmentVo->id, $token);
  696. if ($cvExaminatorVo)
  697. PatientService::addCardiovascularExaminatorToAnAppointment($cvExaminatorVo, $appointmentVo->id, $token);
  698. if ($treatments)
  699. PatientService::addTreatmentsToAnAppointment($treatments, $appointmentVo->id, $token);
  700. // get markers
  701. $markerArray = AcquisitionService::getMarkers($srcAppointmentId);
  702. AcquisitionService::saveMarker($markerArray, $appointmentVo->id);
  703. // get images
  704. $imageArray = AcquisitionService::getImages($srcAppointmentId);
  705. $imageIdList = array();
  706. foreach( $imageArray as $image )
  707. array_push($imageIdList, $image->id);
  708. // get measures
  709. try {
  710. $measureArray = MeasureService::getMeasures($imageIdList);
  711. } catch (Exception $e) {$getMeasures = false;}
  712. $matchingId = array();
  713. foreach( $imageArray as $image )
  714. {
  715. $newImageId = $this->createExampleImage($image, $srcAppointmentId, $appointmentVo->id);
  716. $matchingId["$image->id"] = $newImageId;
  717. /*$ff=fopen("d:/tmp.jd", "a+");
  718. fprintf($ff, "createIntimamediaExample, oldimageId = %d, newimageId=%d\n", $image->id, $newImageId);
  719. fclose($ff);*/
  720. }
  721. if (!$getMeasures)
  722. {
  723. $nbAppointment++;
  724. continue;
  725. }
  726. $measuresToPersist = array();
  727. foreach( $measureArray as $measure )
  728. {
  729. $dragAndDropVo = new DragAndDropVo();
  730. /*$ff=fopen("d:/tmp.jd", "a+");
  731. fprintf($ff, "createIntimamediaExample, matching=%d %d\n", $matchingId["$measure->imageId"], $measure->imageId);
  732. fclose($ff);*/
  733. $dragAndDropVo->id = $matchingId["$measure->imageId"];
  734. $dragAndDropVo->scale = $measure->scale;
  735. $dragAndDropVo->distance = $measure->distance;
  736. $dragAndDropVo->area = $measure->area;
  737. $dragAndDropVo->area2 = $measure->area2;
  738. $dragAndDropVo->nwImtResult = $measure->nwImt;
  739. $dragAndDropVo->fwImtResult = $measure->fwImt;
  740. $dragAndDropVo->ultraSoundScanner = 0;
  741. array_push($measuresToPersist, $dragAndDropVo);
  742. }
  743. MeasureService::saveMeasures($measuresToPersist, $token);
  744. $nbAppointment++;
  745. }
  746. }
  747. public function createExamplePatient(PatientVo $patientVo, $personId)
  748. {
  749. $query = "SELECT fk_organization FROM [evolucare].[dbo].[t_person] WHERE id = '". $personId ."'";
  750. $results = SQLServerManager::queryOnDatabase( $query );
  751. foreach( $results as $value )
  752. $fk_organization = $value->fk_organization;
  753. $patientVo->uid = substr($patientVo->uid, 3);
  754. $patientVo->uid .= $personId;
  755. $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 ('".
  756. $patientVo->uid ."','". SQLServerManager::convertStringToSQLServer( $patientVo->firstName ) ."','".
  757. SQLServerManager::convertStringToSQLServer( $patientVo->lastName ) ."','".
  758. $patientVo->creation ."','". $patientVo->sex ."','".
  759. $patientVo->birthDate ."', '". $patientVo->birthCountry ."', '". $patientVo->ethnicGroup ."', '".
  760. $patientVo->lastVisit ."', " . $personId .", ". $fk_organization .")";
  761. $results = SQLServerManager::queryOnDatabase( $query );
  762. if ($results == "exception")
  763. Throw new Exception("E007");
  764. $query = "SELECT id FROM [evolucare].[dbo].[t_patient] WHERE uid_physician = '". $patientVo->uid ."'";
  765. $results = SQLServerManager::queryOnDatabase( $query );
  766. $patientId = -1;
  767. foreach( $results as $value )
  768. $patientId = $value->id;
  769. return $patientId;
  770. }
  771. public function createExampleAppointment(AppointmentVo $appointmentVo, $patientUid)
  772. {
  773. $query = "INSERT INTO [intimamedia_physician].[dbo].[tj_appointment] ( number, date, weight, height, fk_patient, fk_live_country ) VALUES (".
  774. $appointmentVo->number .",'". $appointmentVo->date ."',". $appointmentVo->weight .",".
  775. $appointmentVo->height .",". $appointmentVo->patientId .",'". $appointmentVo->livingCountry ."')";
  776. /*$ff=fopen("d:/tmp.jd", "a+");
  777. fprintf($ff, "createExampleAppointment, query=%s\n", $query);
  778. fclose($ff);*/
  779. $results = SQLServerManager::queryOnDatabase( $query );
  780. if ($results == "exception")
  781. Throw new Exception("E008");
  782. $query = "SELECT MAX(id) AS lastId FROM [intimamedia_physician].[dbo].[tj_appointment]";
  783. $results = SQLServerManager::queryOnDatabase( $query );
  784. $appointmentId = -1;
  785. foreach( $results as $value )
  786. $appointmentId = $value->lastId;
  787. /*$ff=fopen("d:/tmp.jd", "a+");
  788. fprintf($ff, "++++++++++ createExampleAppointment, appointmentId=%s\n", $appointmentId);
  789. fclose($ff);*/
  790. return $appointmentId;
  791. }
  792. public function createExampleImage( DragAndDropVo $dragAndDropVo, $srcAppointmentId, $appointmentId )
  793. {
  794. $path = "../images/";
  795. $srcFolder = $path . $srcAppointmentId;
  796. $folder = $path . $appointmentId;
  797. $keyType = $dragAndDropVo->type;
  798. $imageHigh = substr($dragAndDropVo->imageHigh, strrpos($dragAndDropVo->imageHigh, '/')+1);
  799. $imageSmall = substr($dragAndDropVo->imageSmall, strrpos($dragAndDropVo->imageSmall, '/')+1);
  800. $width = $dragAndDropVo->width;
  801. $height = $dragAndDropVo->height;
  802. $collection = $dragAndDropVo->collection;
  803. $incidence = $dragAndDropVo->incidence;
  804. $dicom = ($dragAndDropVo->isDicom) ? 1 : 0;
  805. if( !is_dir ( $folder ) )
  806. {
  807. mkdir( $folder );
  808. }
  809. /*$ff=fopen("d:/tmp.jd", "a+");
  810. fprintf($ff, "saveImages, src=%s dest=%s\n", $srcFolder. "/" . $imageHigh, $folder. "/". $imageHigh);
  811. fclose($ff);*/
  812. copy( $srcFolder. "/" . $imageHigh, $folder. "/". $imageHigh);
  813. copy( $srcFolder. "/" . $imageSmall, $folder. "/". $imageSmall);
  814. $url = "http://" . IP_HOST . "/images/". $appointmentId ."/";
  815. $transaction = SQLServerManager::startTransaction();
  816. $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 . ")";
  817. $validImageQuery = SQLServerManager::executeQueryForTransaction( $imageQuery, $transaction );
  818. $idImage = SQLServerManager::getLastId( "[intimamedia_physician].[dbo].[t_image]", $transaction );
  819. if( $validImageQuery )
  820. {
  821. SQLServerManager::commitTransaction( $transaction );
  822. /*$ff=fopen("d:/tmp.jd", "a+");
  823. fprintf($ff, "saveImages, imageid=%s added\n", $idImage);
  824. fclose($ff);*/
  825. return $idImage;
  826. }
  827. Throw new Exception("E017");
  828. }
  829. public function createExampleMeasures( $list )
  830. {
  831. foreach( $list as $value )
  832. {
  833. $imgId = $value->id;
  834. $scale = $value->scale;
  835. $distance = $value->distance;
  836. $area = $value->area;
  837. $area2 = $value->area2;
  838. $nwImtResult = $value->nwImtResult;
  839. $fwImtResult = $value->fwImtResult;
  840. $ultraSoundScanner = $value->ultrasoudscanner;
  841. $query = "SELECT id FROM [intimamedia_physician].[dbo].[tj_measure] WHERE fk_image = ". $imgId;
  842. /*$ff=fopen("d:/tmp.jd", "a+");
  843. fprintf($ff, "createExampleMeasures, list=%d %f %f %f %d %d\n", $imgId, $scale, $distance, $area, $nwImtResult, $fwImtResult);
  844. fprintf($ff, "createExampleMeasures, sql=%s\n", $query);
  845. fclose($ff);*/
  846. $results = SQLServerManager::queryOnDatabase( $query );
  847. $resultArray = array();
  848. $measureId = 0;
  849. foreach( $results as $val )
  850. {
  851. $measureId = $val->id;
  852. }
  853. $operation = INSERT;
  854. if ($measureId)
  855. {
  856. // update
  857. $operation = UPDATE;
  858. }
  859. /*$ff=fopen("d:/tmp.jd", "a+");
  860. fprintf($ff, "createExampleMeasures, measureId=%s\n", $measureId);
  861. fclose($ff);*/
  862. MeasureService::persistMeasure($measureId, $imgId, $operation, $scale, $distance, $area, $area2, $fwImtResult, $nwImtResult, $ultraSoundScanner);
  863. }
  864. }
  865. }
  866. ?>