Вы можете сделать следующее:
# Step 1
df2['Week'] = pd.to_datetime(df2.Week, format='%d-%m-%Y')
# Step 2
df2['Diff'] = df2.groupby(['ID', 'product']).Week.diff().dt.days
# Step 3
df2['Count'] = df2.groupby(['ID', 'product']).ID.transform('size')
# Fill NaN with 1
df2.Diff.fillna(1, inplace=True)
# Step 4
df_final = df2[(df2.Diff == 1) & (df2.Count == 4)].iloc[:, :4]
print(df_final)
ID product Week Orders
6 102 x 2019-02-07 10
5 102 x 2019-02-08 5
4 102 x 2019-02-09 15
3 102 x 2019-02-10 15
11 102 y 2019-02-01 10
12 102 y 2019-02-02 15
13 102 y 2019-02-03 20
14 102 y 2019-02-04 11
7 103 x 2019-02-01 10
8 103 x 2019-02-02 15
9 103 x 2019-02-03 20
10 103 x 2019-02-04 11
Для США вы можете ознакомиться с руководством HIPAA для веб-программистов.
Кроме того, рассмотрите возможность поддержки первой десятки OWASP.