Okay, hopefully the following will include what you need and you can get on with enjoying the weekend (five hours before I will

). You may need to make the odd tweak here and there, but these should get you started.
After you update the 'Patient ID' field or the (newly created, if necessary) 'Record Date' field on the main form, use the After Update event of the field to set the subform's record source to any of the following:
To just get all patient details:
Select [patient id],[date]
From
tablename
Order by [date];
To just get the dates for a particular month:
Select [patient id],[date]
From
tablename
Where
tablename.[date] =
some date you entered in a new field
Order by [date];
To just get the records for a given patient, irrespective of date:
Select [patient id],[date]
From
tablename
Where [patient id] =
the value from the patient id field, top left
Order by [date];
To get just the first date from each month for a given patient:
Select [patient id],
(Select Min([date] From
tablename Where Format([date],"mmmm") = "January") as Min_Jan,
..
..
..
(Select Min([date] From
tablename Where Format([date],"mmmm") = "December") as Min_Dec,
From
tablename
Order by [date];
One last comment: calling the field in the table 'Date' may have been a mistake, as it's one of Access' reserved words and might cause you some confusion later on.
Hawddamor.