I'm not sure it is possible to do what you are trying to. What you are trying to do seems to contradict itself. What I mean by this is the following:
1) You have a registration table to track patients.
2) You want to track which diseases that patient has by going through the tblDiseaseSpecialization table
3) Not all Diseases have a Specialization.
4) No record in the tblDiseaseSpecialization table can have a NULL Specialization.
Now, if a disease does not have a Specialization, then it can not be recorded in the tblDiseaseSpecialization table because NULL Specializations are not allowed. As a result, that disease can not be recorded in the registration table because no tblDiseaseSpecialization record exists.
What is wrong with using a table with NULL values? My only suggestion is to create a dummy Specialization called "No Specialization". This will allow you to record the dummy specialization as a specialization for diseases that don't have a true specialization while avoiding NULL specializationIDs; however, again, I don't see what is wrong with NULL specializationIDs.