Should this be an identifying relationship or not?
Patient and SpiProfessional are uniquely identified only by their relationship to User, which means they are in an identifying relationship. It can also be helpful to think of them as "depending" on User.

That was the original question. Then there were two design questions:


  So how do I recognize which one he is or whether he could be both(if that's possible)?


Without knowing more about the application's requirements or application logic, it seems that information can be determined by simple reports.

For example, to find Patients who are not also pros: 

SELECT u.* , p.*
FROM User u 
INNER JOIN Patient p 
ON u.idUser = p.idUser
LEFT OUTER JOIN SpiProfessional sp
ON  u.idUser = sp.idUser 
WHERE sp.idUser IS NULL


If you do not care about the User only being one type, then cut off the last three lines. In any case, the best way to do this depends on your application requirements.


  Should Patient and SpiProfessional have additional primary keys of their own?


It's becoming a popular practice to give every table a single column primary key. I like doing this, but it is a preference. 

See also this post on StackOverflow.