Problem

Table: Patients

1
2
3
4
5
6
7
+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| patient_id   | int     |
| patient_name | varchar |
| conditions   | varchar |
+--------------+---------+

patient_id is the primary key (column with unique values) for this table. ‘conditions’ contains 0 or more code separated by spaces. This table contains information of the patients in the hospital.

Write a solution to find the patient_id, patient_name, and conditions of the patients who have Type I Diabetes. Type I Diabetes always starts with DIAB1 prefix.

Return the result table in any order.

The result format is in the following example.

Examples

Example 1:

Input: Patients table:

1
2
3
4
5
6
7
8
9
+------------+--------------+--------------+
| patient_id | patient_name | conditions   |
+------------+--------------+--------------+
| 1          | Daniel       | YFEV COUGH   |
| 2          | Alice        |              |
| 3          | Bob          | DIAB100 MYOP |
| 4          | George       | ACNE DIAB100 |
| 5          | Alain        | DIAB201      |
+------------+--------------+--------------+

Output:

1
2
3
4
5
6
+------------+--------------+--------------+
| patient_id | patient_name | conditions   |
+------------+--------------+--------------+
| 3          | Bob          | DIAB100 MYOP |
| 4          | George       | ACNE DIAB100 | 
+------------+--------------+--------------+

Explanation: Bob and George both have a condition that starts with DIAB1.

Solution

Method 1 - Using Regexp

Code

1
SELECT * FROM patients WHERE REGEXP_LIKE(conditions, '\\bDIAB1')
1
SELECT * FROM patients WHERE conditions REGEXP '\\bDIAB1'
1
2
3
4
5
6
import pandas as pd

def find_patients(patients: pd.DataFrame) -> pd.DataFrame:
    patients_with_diabetes = patients[patients['conditions'].str.contains(r'\bDIAB1')]
    result_df = patients_with_diabetes[['patient_id', 'patient_name', 'conditions']]
    return result_df

Method 2 - Using like Operator

Code

1
2
3
SELECT * FROM patients WHERE
conditions LIKE '% DIAB1%' OR
conditions LIKE 'DIAB1%';