We have seen in many places within Profile the ability to build custom actions and sometimes large solutions. However to achieve this is still within the confine of the Profile application using dialog boxes, report windows, macros, forms, etc.
What if we want to create a more modern looking full blown application that can still interact with Profile's rich objects.
Since Profile is mostly written in .Net it is easier than ever to include an assembly and call methods within those assemblies but you are only getting a very small fraction of functionality. Of course you can write an application to talk directly to the database, but most customers are cloud hosted so the database is not directly accessible, not to mention the immense effort to reverse engineer their database design, which I must add is done very well and is complex.
There are many cases in which you would want to create a rich interface that tightly integrates with Profile where you don't have access to the database directly and not have the time to build an API web service.
An example that perhaps most can visualize is an appointment sign-in kiosk. This could be sitting at the front desk signed into a clerical account and the kiosk app is launched as a full-screen Windows application (WPF/Winforms). A touch screen keyboard presents the user with the ability to search for their appointment by last name, or a swipe reader attached to swipe your health card. This action would show your appointment and you can sign in and maybe even get a number for in the lobby to be called. As a developer the application seems very straight forward but to have real-time appointment information becomes the big challenge.
In my example I didn't create a kiosk but a proof of concept to demonstrate some of the principles needed.
All the source code needed is available on my github at https://github.com/DigitalOxCanada/ProfileWpfApp1
So below shows the WPF App after being called from inside Profile. The yellow highlighted data was declared inside the WPF app code, the green highlighted data was declared inside the calling macro in Profile. When you click the Click Me button it calls a macro directly inside Profile which is responsible of throwing up that Hello message box.
This might not seem overly impressive but from a developer standpoint this is a very powerful approach. There is automatic databinding on the controls and you get the use of a full rich Visual Studio editing experience with colour syntax highlighting and auto-completion.
I hope this opens the doors for those that can think a bit outside of the box. I know when I discovered I could do this a bunch of ideas came to mind that would be so much nicer to develop this way.
To share some of my ideas:
- Sign-in Kiosk
- Appointment SMS reminders
- User Auditing
- Family hierarchy management (Genetics)
- Data Scraping
- etc. (can't give you all my great ideas now can I ?!)
Let me know if you found this useful. The in-depth technical details will be on the github repository.