A method implemented by an automatic medication scheduling system, the method comprising: generating, at an automatic medication scheduling server of the automatic medication scheduling system, an initial medication schedule for a patient, wherein the medication schedule comprises a plurality of days each divided into at least two time slots and wherein times slot are allocated to at least one medication event comprising taking a medication at a dosage; querying, at the automatic medication scheduling server, at least one drug database for conflict information associated with the medication events in the initial medication schedule; at the automatic medication scheduling server, iteratively, for each medication event in the initial medication schedule, determining, by analyzing the conflict information, whether the medication event conflicts with another medication event in the initial medication schedule and, if so, reassigning one of the medication event and the other medication event to a time slot that is different to that to which the one of the medication event and the other medication is currently assigned, wherein the iterative determining is repeated until all conflicts have been resolved or, in the event that all conflicts cannot be resolved, a predetermined number of repetitions has been performed, wherein the time slot to which the one of the medication event and the other medication is reassigned is a time slot which resolves the determined conflict; subsequently, examining, at the automatic medication scheduling server, time slots which have only one medication event assigned to the time slot; determining, at the automatic medication scheduling server, that a first medication event, which is the only medication event assigned to a particular time slot, has an unspecified time-of-day taking requirement; at the automatic medication scheduling server and responsive to determining that the first medication event, which is the only medication event assigned to a particular time slot, has an unspecified time-of-day taking requirement, identifying a candidate time slot to which a second medication event is assigned, wherein the candidate time slot is different to the particular time slot; at the automatic medication scheduling server, analyzing the conflict information to determine whether the first medication event conflicts with the second medication event assigned to the candidate time slot; re-assigning, at the automatic medication scheduling server, the first medication event to the candidate time slot in the medication schedule when it is determined that there is no conflict between the first and second medication events; and electronically outputting from the medication scheduling server the medication schedule to the patient, a pharmacy, or a prescriber. generating, at an automatic medication scheduling server of the automatic medication scheduling system, an initial medication schedule for a patient, wherein the medication schedule comprises a plurality of days each divided into at least two time slots and wherein times slot are allocated to at least one medication event comprising taking a medication at a dosage; querying, at the automatic medication scheduling server, at least one drug database for conflict information associated with the medication events in the initial medication schedule; at the automatic medication scheduling server, iteratively, for each medication event in the initial medication schedule, determining, by analyzing the conflict information, whether the medication event conflicts with another medication event in the initial medication schedule and, if so, reassigning one of the medication event and the other medication event to a time slot that is different to that to which the one of the medication event and the other medication is currently assigned, wherein the iterative determining is repeated until all conflicts have been resolved or, in the event that all conflicts cannot be resolved, a predetermined number of repetitions has been performed, wherein the time slot to which the one of the medication event and the other medication is reassigned is a time slot which resolves the determined conflict; subsequently, examining, at the automatic medication scheduling server, time slots which have only one medication event assigned to the time slot; determining, at the automatic medication scheduling server, that a first medication event, which is the only medication event assigned to a particular time slot, has an unspecified time-of-day taking requirement; at the automatic medication scheduling server and responsive to determining that the first medication event, which is the only medication event assigned to a particular time slot, has an unspecified time-of-day taking requirement, identifying a candidate time slot to which a second medication event is assigned, wherein the candidate time slot is different to the particular time slot; at the automatic medication scheduling server, analyzing the conflict information to determine whether the first medication event conflicts with the second medication event assigned to the candidate time slot; re-assigning, at the automatic medication scheduling server, the first medication event to the candidate time slot in the medication schedule when it is determined that there is no conflict between the first and second medication events; and electronically outputting from the medication scheduling server the medication schedule to the patient, a pharmacy, or a prescriber.