Nodes are not being created using the neo4j python driver

One possible issue (I'm not 100% sure), is if the Id is actually an integer in this python statement:
id = patient[0]

and some cypher, later you have this statement which looks like you're assigning an integer:
SET p.id = {id}

Then this MATCH will fail because it's explicitly a string:
MATCH (p:Patient {{id: "{Id}"}})

and a string isn't going to match an integer.