What I can suggest you would be to check the Load on demand
article from our online help documentation. The second section of the article (Using the VisibleRangeChangedCommand) demonstrates how the bind the VisibleRangeChangedCommand to a command in the ViewModel and pass the current visible range. Afterward depending on the current visible range you would be able to load only the needed appointments.
Hope this helps.
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.