import json, pickle
from datetime import date

TODAY = date(2026,6,16)
SCHED_OR_KEPT = {0,1,2,3,5,7,8,9}
KEPT = {3,5,8,9}

def parse_mmddyyyy(s):
    m,d,y = s.split('/')
    return date(int(y),int(m),int(d))

def parse_iso(s):
    y,m,d = s.split('-')[0:3]
    # s like 2026-06-15
    p = s.split('-')
    return date(int(p[0]),int(p[1]),int(p[2]))

# load candidate new-visits
cands = json.load(open('/tmp/sheet1_candidate_newvisits.json'))
bypid = pickle.load(open('/tmp/existing_bypid.pkl','rb'))

def anchor_date(pid):
    # earliest NEW no-show/cancel visit date among candidate rows
    rows = cands[pid]
    ds = [parse_iso(r['date']) for r in rows]
    return min(ds)

def newvisit_for_anchor(pid):
    rows = cands[pid]
    rows_sorted = sorted(rows, key=lambda r: parse_iso(r['date']))
    return rows_sorted[0]  # earliest

def sheet1_keep(pid, history_rows):
    """history_rows: list of dict with date(MM/DD/YYYY), apptstatus. Return (keep_bool, anchor)."""
    anch = anchor_date(pid)
    for r in history_rows:
        d = parse_mmddyyyy(r['date'])
        st = int(r['apptstatus'])
        if d > anch and st in SCHED_OR_KEPT:
            return (False, anch)  # has follow-up
    return (True, anch)

if __name__ == '__main__':
    import sys
    print("helper loaded")
