Our healthcare customers needed a clinical task management system linked to the Electronic Medical Records (EMR) with a notification function to a mobile app.

What it does

MedxPlanner links Microsoft Teams and Planner to Electronic Medical Records via the FHIR API with the bi-directional interface using the Graph API

How we built it

Technologies used
  • Teams Toolkit for Visual Studio Code.
  • Node.js Bot Framework for bots and messaging extensions.
  • Python 3 for running Cron job.
  • Angular Framework for building front-end of tabs.
  • HTML/SCSS for designing.
  • Azure App Services to host the backend API services.
Features MedxPlanner hold

Our application is fully based on MS Teams. We have used several services of Microsoft to build the application.

  • For authentication we have used AAD Authentication Flow AAD . This gives us the power to authenticate users and have secure access to web API's using tokens from the MS Identity platform.
  • Our application mainly holds a Configurational Tab (channel tab) and most interestingly Message Extension.
  • The MedxPlanner is a fully Angular project which is then embedded into the MS Teams configurational tab using manifest.json In this we added some personalized configuration:

"configurableTabs": [{
  "configurationUrl": "",
  "canUpdateConfiguration": true,
  "scopes": [

  • The most fascinating thing about our application is Adding a task to our Planner using message extension. We have built this in JavaScrip are using TeamsActivityHandler from botbuilder and for authentication, we have silent authentication. Here we are using two types of extensions: Search Commands and Action Commands.
    The action command help to generate add task form using an async function handleTeamsMessagingExtensionFetchTask which pop-up an Adaptive Card and, uses handleTeamsMessagingExtensionSubmitAction async function to submit the task. Search commands enable to see the task created and also, allow users to filter task based on task and notes. It is using an async function handleTeamsMessagingExtensionQuery to fetch the task and o365ConnectorCard to display.
We are using Microsoft Azure for the deployment of services:
  • Azure App Services, is used to host the application and allow us to build API's and makes infrastructure managing super simple.
  • Azure Key Vault, helps us to enhance data protection and compliance. Along with that, it safeguards cryptographic keys and other secrets used by cloud app and services.
  • Azure Monitoring, helps us to aggregates and stores telemetry in a log data store that's optimized for cost and performance.
  • AAD, popularly known as Azure Active Directory, solves the issue of sign-in and access resources. It is basically an identity and access management service.

Try it out

For a complete setup guide, please email to request the getting started documentation.

What's next for MedxPlanner

The next thing on which our team has already started working on is Message Action This collaboration is more than messaging, it provides the user to take action right from ellipsis on the message in the chat, it uses message as a command in the manifest file. Here we are trying to fetch the information from the card and create a task based on that.

Built With

Share this project:


posted an update

LinkedIn Post: We're delighted to launch our new Microsoft Teams app - MedxPlanner MedxPlanner integrates clinical tasks from the Electronic Patient Record (EPR) with Microsoft Teams and Microsoft Planner. Built for the Devpost Microsoft Teams App Development Challenge with help from our partner Dev Centre House and launching soon at University Hospital Southampton NHS FT #FHIR #digitalhealth #NHS #MSPartner #partnersmakemorepossible

Log in or sign up for Devpost to join the conversation.