Lets go through the logic.
Pass 1
Select @dupCount = Count(PatientKey)
From PatientAccess
Where PatientKey = @PatientKey
@dupCount = 0
If @dupCount > 1 GoTo DUPLICATE_ERROR
Condition is false.
Pass 2
Select @dupCount = Count(PatientKey)
From PatientAccess
Where PatientKey = @PatientKey
@dupCount = 1
If @dupCount > 1 GoTo DUPLICATE_ERROR
Condition is false, as 1 is not Greater than 1
Pass 3
Select @dupCount = Count(PatientKey)
From PatientAccess
Where PatientKey = @PatientKey
@dupCount = 2
If @dupCount > 1 GoTo DUPLICATE_ERROR
Condition is true because two is greater than 1.
-------------------------------------------------------------------------------
Consider using Greater than 0 for your condition, or Greater than or equal to 1.
Hogan