Question : T-SQL Help Needed - Case Statement Help

I need assistance with the following line of code:

CASE WHEN Cast(PI.EligibilityNotes as varchar(8000)) like '%IHC%' THEN 'Yes' ELSE 'No' END AS [IHC Patient],

Previously, this was ok and working .... then the client came back and added a small twist to it. They mentioned they used "Declined IHC" or "Decline IHC" (ommitting the d) --- thus making this a 'No". So they are using IHC by itself as a 'YES' and a "Declined IHC' or a 'Decline IHC' for a 'NO'.

Can someone lend me a hand here?

My query:

SET NOCOUNT ON

---DECLARE @Zip varchar(40)
---SELECT @Zip = LTRIM(RTRIM('NULL')) + '%'

SELECT       PatientID,
      RespSameAsPatient=isnull(PatientSameAsGuarantor,0),
      CASE WHEN Cast(PI.EligibilityNotes as varchar(8000)) like '%IHC%' THEN 'Yes' ELSE 'No' END AS [IHC Patient],
      pi.eligibilitynotes,
      PatientName=CASE
      WHEN RTRIM(pp.Last + ' ' + ISNULL(pp.Suffix,'')) <> '' THEN
      RTRIM(RTRIM(pp.Last + ' ' + ISNULL(pp.Suffix,'')) + ', ' + ISNULL(pp.First,'') + ' ' + ISNULL(pp.Middle,''))
      ELSE RTRIM(ISNULL(pp.First,'') + ' ' + ISNULL(pp.Middle,''))
      END,
      CASE
      WHEN pp.Sex = 'M' THEN 'Male'
      WHEN pp.Sex = 'F' THEN 'Female'
      ELSE ISNULL(pp.Sex,'')
      END AS [Patient Sex],
      IsNull(ic.Name,'')AS 'Carrier Name',
            pi.InsuredID,
            pi.GroupID,
      ISNULL(Convert(VarChar(20),pi.InsCardEffectiveDate,101),'')AS [PrimaryInsEffDate],
       ISNULL(Convert(VarChar(20),pi.inscardterminationdate,101),'')AS [PrimaryInsTermDate],
      ISNULL(pp.MedicalRecordNumber,'') AS [Medical Record #],
      ISNULL(Convert(VarChar(20),pp.birthdate,101),'') as [Patient DOB],
      (select top 1 apptstart from appointments a where a.ownerID = pp.PatientProfileID and datediff(day, getDate(), apptstart) < 0 order by apptstart desc) as [Last Appt Date],
      (select top 1 apptstart from appointments a where a.ownerID = pp.PatientProfileID and datediff(day, getDate(), apptstart) > 0 order by apptstart asc) as [Next Appt Date],
      ISNULL(pcp.Listname,'') AS PCP,
      PatientAddr1=pp.Address1, PatientAddr2=pp.Address2,
      PatientCity=pp.City, PatientState=pp.State, PatientZip=pp.Zip,
      ISNULL(dbo.formatphone(pp.phone1,1),'') AS [Phone 1 #],
      ISNULL(pp.Phone1Type,'') AS [Phone 1 Type],
      ISNULL(dbo.formatphone(pp.Phone2,1),'') AS [Phone 2 #],
      ISNULL(pp.Phone2Type,'') AS [Phone 2 Type],
      PatientRespName=CASE
      WHEN RTRIM(pr.Last + ' ' + ISNULL(pr.Suffix,'')) <> '' THEN
      RTRIM(RTRIM(pr.Last + ' ' + ISNULL(pr.Suffix,'')) + ', ' + ISNULL(pr.First,'') + ' ' + ISNULL(pr.Middle,''))
      ELSE RTRIM(ISNULL(pr.First,'') + ' ' + ISNULL(pr.Middle,''))
      END,
      PatientRespAddr1=pr.Address1, PatientRespAddr2=pr.Address2, PatientRespCity=pr.City,
      PatientRespState=pr.State, PatientRespZip=pr.Zip, FinancialClass=isnull(ml.Description,'none'),
      Doctor=df.ListName,Facility=df1.OrgName,Balance=isnull(ppa.PatBalance,0)+isnull(ppa.InsBalance,0)
      ---pp.DeathDate,
      ---CASE WHEN ISNULL(pp.Inactive,0) = 0 THEN 'No' ELSE 'Yes' END AS Inactive

FROM       PatientProfile pp
      JOIN PatientProfileAgg ppa ON pp.PatientProfileID = ppa.PatientProfileID
      LEFT JOIN Guarantor pr ON pp.GuarantorID = pr.GuarantorID
      LEFT JOIN MedLists ml ON pp.FinancialClassMID = ml.MedListsID
      LEFT JOIN DoctorFacility df ON pp.DoctorID = df.DoctorFacilityID
      LEFT JOIN DoctorFacility df1 ON pp.FacilityId = df1.DoctorFacilityID
      LEFT JOIN DoctorFacility pcp ON pp.PrimaryCareDoctorId = pcp.DoctorFacilityId
      LEFT JOIN PatientInsurance pi ON pp.PatientProfileID = pi.PatientProfileID AND pi.orderforclaims = 1
            LEFT JOIN InsuranceCarriers ic ON pi.InsuranceCarriersID = ic.InsuranceCarriersId

WHERE  --Filter on patient
      (
      (NULL IS NOT NULL AND pp.PatientProfileID IN (NULL)) OR
      (NULL IS NULL)
      )
      AND  --Filter on doctor
      (
      (NULL IS NOT NULL AND pp.DoctorID IN (NULL)) OR
      (NULL IS NULL)
      )
      AND  --Filter on doctor
      (
      (NULL IS NOT NULL AND pp.PrimaryCareDoctorID IN (NULL)) OR
      (NULL IS NULL)
      )
      AND  --Filter on insurance carrier
      (
      (NULL IS NOT NULL AND ic.InsuranceCarriersId IN (NULL)) OR
      (NULL IS NULL)
      )
      AND  --Filter on facility
      (
      (NULL IS NOT NULL AND pp.FacilityID IN (NULL)) OR
      (NULL IS NULL)
      )

Answer : T-SQL Help Needed - Case Statement Help


CASE WHEN Cast(PI.EligibilityNotes as varchar(8000)) like '%Declined IHC%'
     THEN 'No'
     WHEN Cast(PI.EligibilityNotes as varchar(8000)) like '%Decline IHC%'
     THEN 'No'
     WHEN Cast(PI.EligibilityNotes as varchar(8000)) like '%IHC%'
     THEN 'Yes'
     ELSE 'No'
     END AS [IHC Patient],
Random Solutions  
 
programming4us programming4us