As you noted, the other solutions does not work as intended if there are NULL values involved. Here is one that does:
Update [dbo].[tblPatients]
Set [FirstName] = @FirstName
, [MiddleName] = @MiddleName
, [LastName] = @LastName
, [DOB] = @DOB
, [StartDiet] = @StartDiet
, [EndDiet] = @EndDiet
, [Gender] = @Gender
, [StatusID] = @StatusIDint
, [MedRecordNo] = @MedRecordNo
Where PatiendID = @PatientID
AND NOT EXISTS (SELECT PatientID, FirstName, MiddleName, LastName, DOB, StartDiet,
EndDiet, Gender, StatusID, MedRecordNo
INTERSECT
SELECT @PatientID, @FirstName, @MiddleName, @LastName, @DOB, @StartDiet,
@EndDiet, @Gender, @StatusID, @MedRecordNo)