 Okay. So, now that recording started, we can get started with our introduction to program notifications. What exactly they are and how you might use them as you're configuring your tracker program. So our learning objectives for today are that we're going to describe what program notifications are. We're going to identify times when program notifications can be used. We will create a program reminder at both the program and program stage level. So we'll discuss a bit about why you might want to use one of them over the other. And we'll understand how template messages populate when notifications are sent. So how exactly are these template messages actually being filled in with data from across the enrollment or event? And then how are they actually delivered to recipients? So we will also understand the different ways that types of recipients can be specified to receive notifications. So, broadly, the definition of a program notification is that program notifications provide a way to create template message reminders which are sent to users or entities for events and tracker programs. Program notifications consist broadly of schedules, recipients, and a template message. So those are sort of the key components of a program notification to consider. The notifications can be configured both for the entire program or for a given stage. So you can, for example, have one notification that's sent at enrollment into a program and you can have further levels of program notifications that are sent out once an event is completed or by other conditions through program rules which we can discuss a bit. So here's just one example and we will trigger a program notification like this during the interactive section. But you can see here that this is a program notification that is delivered when a client is enrolled in the antinatal care program, right? And so you can see that this is not just a generic SMS that's sent to all of the clients. But what's interesting is that this message is actually filled in with some information about the client and their enrollment, right? So you can see here that it includes the first and last name of the client as well as the program that they've been enrolled in and the location where it happened as well, right? So program notifications are very useful to provide more detailed information to a client or to any type of end user who might receive a message and not just sending out a bulk message to all the phone numbers that are in the system. And finally you can also include some nudging behavior like please keep track of your visit dates, right? So you can incentivize types of behavior. Okay, so what are the two different types of program notifications? Well, they can be created at two different levels within the program. As alluded to earlier, there is a program notification which uses the parameters of an enrollment to determine when to send out a notification. For example, this can be a notification that's sent out when someone is enrolled in the program the first time or when someone completes the program. So after all the stages have been entered and the end user has clicked complete. Or it can also be sent X number of days after an enrollment to remind a client or a care provider or another manager that this enrollment has occurred. So that's very broadly some different examples of when you might use program notifications. Program stage notifications, however, are a little bit different because these use parameters within a program stage, right? So for example, when a program stage is completed, so say if there is like a disease outbreak and the program stage about this outbreak was just completed, then a message could be sent to the person in charge of managing outbreaks for this area. Or it can be sent X number of days before or after the due date for a program stage. So remember how you can schedule program stages to occur into the future. So if that occurs, you could schedule a program notification to send out, say, a week before that program stage is scheduled to occur, right? Another thing to think about with program stage notifications is that you could also use a data element value in the message as well. So while your program notifications, you can use tracked entity attributes like first and last name. With program stage notifications, you can use those tracked entity attributes like their first, last name, their date of birth, etc. in your message. But you can also use things like the data element value, for example, the date of their test result when it arrives. So program notifications can also be triggered for a program or a program stage via a program rule. And we don't have much time to go through program notifications triggered by program rule today. But if you look in the program rule actions of a program rule, you will see that there are also options to have an action for a program rule. That is either send message or schedule message. And so if we have time and there's interest from participants, then we can discuss that later today. So very broadly, we need to specify the recipients and the message type to configure a program notification, right? So we need to identify the types of people who should receive the message in the program and the medium in which this program notification will be sent. So currently, there are two different mediums to send program notifications in DHIS too. Those are with SMS or with email. And you need to set up an SMS gateway or an email client in order to deliver them through SMS or email. So we won't really go into the configuration and setup for that. But again, I'll direct you to the user guide for more details on those specifications. But anyway, the types of people who might receive the message in the program would be the track density instance, right? So your client who has enrolled in the program, they could receive an SMS or an email if that has been entered for their record. You can also send it to an organization unit phone number. So this might be more about the organization unit contact or the person in charge of this clinic that has reported this event occurring. It could also be to all users in the organization unit, so to say to all care providers at the local clinic that there's been a disease outbreak, for example. And it can also go to a specific user group. So say that there is a person in charge of registering births in the area and you have a birth notification program that's set up. So you could send a message for each new birth notification to the person that's in charge for creating birth certificates as one example. And you would configure that through a user group. Okay. So the very first thing that we're going to do here is we are going to do a short demo on the demo instance. And you can all follow along with this here too. So if you go into tracker capture, again, we are on the demo instance here, right, academy.demos.dhc2.org slash demo. And we'll go to the antinatal care program here. Okay. Now if we were to register a new patient here, and I can enter this person's name. And now I'm going to enter in a email address, a valid email address for this person in the demo system. And the phone number can be anything else, village, I don't know. Now I'm going to, I'm sorry, I'm going to click save and continue. Right. And so now I've enrolled a new patient. If I were to go into my email address that I just sent this to, I can see I just received a program notification zero minutes ago. Dear Daffy duck, you are now enrolled in antinatal care at Cardinal Hospital PHC. Please keep track of your dates. Right. And so I would encourage you all in the next few minutes here before we get into the demo of how to build a program notification template to try this in the demo instance for yourselves to create a new enrollment in the antinatal care program. You can register here and enter in your email address that you would want to receive or a reminder into. And then you can open it up in your email and you can find this automated message that has been delivered. Okay. So that's just as one example. I'll give just a couple minutes for people to do that. And then I'll come back and we'll go into the details of how to actually create a program notification. Just a reminder, everyone, this is in the Moodle if you want to follow along. Okay, there's the section on program notifications. There's a learner's guide there. So this is exercise one. If you pull that out, it'll have if you've kind of weren't able to completely follow anything that Brian did, but you're just registering a new person essentially and using your email, but you can follow along. There's other exercises there as well for this session. So you can download that and review it there. Okay, so there's that. So we have the so we have a, we also have an SMS gateway, as I said, set up on this server as well. So just to quickly demonstrate how the SMS program notifications can work as a sort of proof of concept. I will just quickly go to a the Antenna Care program of this instance. Okay. And now I'm going to again register a new patient. So let me just check really quickly that there is indeed a program notification. Yep, I will come up to us. Okay, so I'm going to create a new patient here and I'll close and then I will give a birth date to this client. And I'm going to add in my phone number here and my email here. So at the same time, I also have a email set up here and I will also screen share my Android for you here. And so I will click Save and continue here. And so you can see that I've received a an SMS from DHIS too. Welcome to the ANC program. And at the same time, I've also received a email from the same instance. Welcome to the Antenna Care program. Okay. So that's the summary for this SMS type of program notification. Again, we won't go into how to set up an SMS gateway here. But the next step, and this is where you will also be doing this as part of your learner's guide is to follow the same example for setting up a program notification yourselves. So how do we actually go about setting up a program notification? So we're going to log into these, the customize instance. Actually, first I will use the demo instance. Sorry. First, I will use the demo instance. And I'm going to create a new program notification step by step. Okay. So I'm going to go to first here, program. Now under program management, I'm going to see select antenatal care. And you remember this part from when you configured your programs for the first time, right? Program details, enrollment details, attributes, program stages, access, and notifications. So today we're going to click on notifications. And here we can see that we actually have two different types of the program notifications described earlier. We have program stage notifications. And we have program notifications. So I'm just going to quickly delete this earlier one that we had. And then I'm going to recreate this same program notification again. Okay. So the first step is to click this plus icon here. And you can see it gives us the two options of program notification or program stage notification. I'll just zoom in so it's a bit more clear. Program notification or program stage notification. So because I want this message to be sent at the time of enrollment, I'm going to select program notification. Okay. And here it gives me a number of different screens, basically saying what do I want to send? When do I want to send it? And to whom should I send it? Who to send it to? Right? So I'm going to call this one, this program notification, enrollment in ANC welcome message. Okay. And now the message template. The subject template is basically what's going to be used as the subject of your email if you were to send this as an email. So I would say you are enrolled in antenatal care or you could even actually make this enrolled in program name in organization name. Okay. You can see that on the right here, we have a number of different template variables. Right? So I just used program name and organization name. But there's also the current date that can be used. You can also use any of the track entity attributes that have been created for this person as well. So we have the date of birth, first name, last name, insurance number, et cetera. Okay. But in the message template, I'm going to actually again use some of these track density instance attributes as part of the template. So dear, first name, last name, right? This is how you address the client. You are now enrolled in, again, go to programming at organization name. Please keep track of your visit dates. Okay. So essentially, this template is creating the frame for the message. And then all of these variables will be filled in while the message is being sent. Okay. So as the message is being sent, it's going to look for what the first name and last name of the client is, what the organization unit name of the enrollment is, and then it's going to deliver it with everything filled in. Okay. So you can sort of think of these as place holders in the template. So after I've created this template, I'm going to say when to send it. It's important to note here that there are a number of different triggers for sending your program notification. So day schedule, for example, will allow for specifying the number of days after enrollment or incident date that the message should be sent. Okay. So for example, if I say enrollment date, then you should say this. Which is because I'm zoomed in here really. Two days after a scheduled date, for example. You can also have this be triggered by program rule. And again, we can discuss in more detail about how to trigger them by program rule. And you can also trigger by program completion. So this will send the reminder as soon as the enrollment is completed. But we're going to use program enrollment because we want this message to send as soon as our patient or our client are enrolled into the program. So the third component to consider is who do I want to send this to? Right. And so now we have a number of different options as described earlier. Tract entity instance, the organization unit contact, the users at the organization unit, so that's the users that are assigned to the organization unit, the user group or the program attribute. If a user group is selected, then the different user groups that are available in DHIS2 would be available there. So I could say like send us to ANC staff. And I can say just notify the users in the hierarchy. So just notify ANC users that are in the ANC staff user group that are actually underneath the organization unit that triggered this message. If I say organization unit contact, then this is defined when you're creating organization units, what their number and email is for the organization unit contact. But for this one I'm going to use program attribute because you remember that there is a program attribute for the patient's email. So I'm going to select the antinatal care email program attribute here. Okay. And then the last thing I'm going to do is click done and save. So now I'm going to test this one out again to make sure it's still there. Going to go to clear cache first. And then I'm going to go to tracker caption. Another fun test. I'm going to say basic number and then have my email open again. I'm just going to click save. And I says I have a new message. Dear another fun test, you are now enrolled in antinatal care. Yeah. Okay. So now it's over to all of you to create a program notification in the config system for your ANC systems. So that's in the sound in the where you have been creating your ANC your ANC programs. Okay. Going to and now I'm going to go to the tracker program again. And so when I go click program and go back into antinatal care and back to notifications and where we were earlier. Okay. So we can see as mentioned before that we have program stage notifications and program notifications. Right. So what we just created earlier in the demo instance where program notifications. Right. Now our next step is doing program stage notifications. And remember in the intro we discussed that there are a couple differences which we will see now about what is a program stage notification and what is a program notification. So if I were to click open new and say program stage notification, we can see that there are program stage here is selected instead of just sending it for the program. Right. So we have to select which program stage this notification will be sent for. All right. So for this one we're going to make it not ANC registration on the first stage but the ANC visit. Okay. So I'm going to call this one ANC reminder visit in two days. So the purpose of this program stage notification is to send a reminder to our client two days before they are scheduled ANC visit. Okay. So this one we might do this as an SMS just as a demonstration. But so the template doesn't really, the subject template doesn't really matter as much because the body of the message will be in the message template. However I can just call this one antenatal care clinic visit in two days. All right. And now for the actual message template you see here the different template variables. I have program name. I also have program stage name. I have days since or days until due date. I have current date. I have all of their track density attributes. First name, last name, date of birth, etc. And now in addition I also have a number of data elements that are associated with the ANC visit as well. Now we won't be using these for this particular type of program stage notification because this one will be about a scheduled ANC visit. But it's still interesting to note that say if you are going to be sending this at the completion of an ANC visit for example you might say your BP at your last visit was too high. It was like 190 over 150 something like that. And then you can actually insert the values for the blood pressure or IPT dose given into the message itself. All right. So for the message template I'm going to say dear first name, last name, first name, last name. You have an antinatal care visit and and insert the organization unit scheduled for due date. We look forward to your visit. Okay. So that is what we're actually going to send. Now when to send it. Now we have some different options here for when to send. So we can send a program stage completion. That's when a stage is actually a click complete. We can do day scheduled based on the due date or we can do it by program rule. Again won't get so much into these. Today we will just discuss the due date option. And I'm going to say that I want to send this two days before the schedule date. Trying to get rid of that zero. It doesn't look like it's going to move. Yeah, there we are. Two days before the schedule date. All right. Who do we send it to? Once again we're going to send this to the program attribute. And we'll send it to the client's phone number. If you see the notification recipient here, again with program to stage notifications, we can use data element values as well now. So say for example that the woman's phone number was actually being recorded as a data element at the very first visit. Then you could send it to a data element instead. So I'm going to say this as the antiocare phone number. And click done. And now click save. All right. So unfortunately it's not really possible to show this reminder being sent because this is a reminder for a visit that's upcoming in two days. But you might be thinking to yourself that this reminder is not sent instantaneously, but this reminder will be sent two days before the visit. But what time will that message actually be sent? And so we have a way of saying when messages should be sent from DHIs to, when these scheduled messages rather should be sent from DHIs to. And that's using this scheduler app. All right. So I already have a job type scheduled here for sending program notifications. But I'm going to delete this and then we can walk through the steps of doing that together. All right. So you just created program notifications. That's going to schedule a reminder for women to attend their next antiocare visit two days before the due date. So I'm going to click new job. I'm going to call this send program notifications. And I'm going to select my job type. So I'm not going to go into all these other options here. A lot of these are for routine data administration purposes, doing things like monitoring validation rules, running predictors. A lot of these more advanced DHIs two tasks that can be run routinely. But the one that I want to draw your attention to here is send program notifications. So program notifications job are basically going to see at this time every day which messages are scheduled to be sent out and then deliver them to the appropriate email addresses or phone numbers with all of these variables filled into our templates. All right. So you might be asking what a chron expression is. There's a lot of different ways to look at what a chron expression is and there's different types for scheduling. But essentially, a chron expression is just a way to tell the server what time and how frequently your sending of program notifications should occur. So it's an encoded expression that might say we want our messages to be sent every day at noon. That's a nice, not intrusive time to send program notifications. You probably wouldn't want to send SMS messages at 3 a.m., for example, or at midnight. But every day at noon might be a good time to send them. You can see that this is actually sending Monday through Friday. So I'm going to say make this Monday through Sunday. So there's a variety of different options for how to configure chron expressions. You can just Google chron expressions if you're unfamiliar with them. But essentially, this is just like a day-to-day hour. And I might say I actually want to send this at 13 hours or 15 hours every day to send it at 3 p.m., for example, Monday through Sunday. And there's actually an interpretation of this chron message, hopefully displayed for you underneath here. All right. So then we can click Save. We'll update chron expression is invalid because I've probably changed something. Okay. I'll say every day at noon and just keep it to that. Oh, it might be because I just deleted that one earlier. So I'm going to say Save there. Yep. Okay. Someone's already created a program notification job in the demo system. Please do this if you're going to follow in the config system. That way, there's no confusion about it. So importantly to note is that the program notifications will be sent for all programs and all notifications in your DHIs2 system. And they will be sent just once in that day, right? So if there's another program notifications operation that's run at 12, then all of them that are scheduled for today will be sent at 12 and nothing will be sent at 1 o'clock. This is also sometimes useful to think about this scheduling because say, for example, you've scheduled a message to be sent out on the current date. Like say you're saying the message should be sent out at the end of the day today, right? Well, then you have to define what's the appropriate time to do that because people might be updating their tracker programs even at like 4 or 5 p.m., right? So you should make sure that you are sending out the program notifications at an appropriate time where data entry has been closed for the day so that you're not losing anything else that day, right? Unfortunately, this is also a universal configuration right now. So you can't specify I want program notifications for the ANC program to be sent at noon and I want my IDSR program notifications to be sent out at 9 a.m. Unfortunately, right now it just works for all programs within your system, all right? So that's about it for configuring the time that this should be sent. I think we might have some more exercises to look through in the learner's guide now. And one other thing that I did want to show before we take a quick break for the implementation presentation after this is that say you wanted to know which messages have been sent out by your system, if you were to use a SQL view, which I know we won't get into too much, but these these data are actually accessible through SQL view on the program message table. So if you wanted to know how many messages have been sent out, check with your database administrator for accessing this table and then you can see that they are, it lists all the messages that have been sent out and whether it was correctly sent or failed. So that might be useful for your monitoring and evaluation of SMS messages that have been sent out, for example, or emails that have been sent out, okay? So that concludes today. Anything else that you wanted to add to this one, Shurji? No, that's okay for me. I think so people had some questions about just generally if we could send them to healthcare workers, for example, let them know there's overdue. So I think just for viewing the recipient types, different recipient types, it will be a good idea. You'll be able to see, for example, you can send it to user groups instead of a specific tract entity attribute. There's quite a few things you can do. I think the other thing to keep in mind with all this notification stuff is how frequently are you sending it out? You don't want it to become kind of static, especially if you're setting it to healthcare staff, just sending emails all the time for everyone registered or something like that, then they're going to ignore it. And so you have to be really kind of targeted in terms of how you utilize this feature. Otherwise, it becomes overwhelming, both for the person, right? They don't want to receive a bunch of spam in their phone or their email, as well as anyone working with the system. If they need to check something for a specific reason, not just someone's enrolled in your program and you have thousands of mothers or whatever, right? So you just have to be a bit careful how you utilize this feature, but it does lend itself to a number of different use cases, yeah. Yeah, I was seeing in the chat as well. It's definitely inconvenient if you have multiple time zones for your program and you're just configuring it to send out once saying just be considered that this is based on the server time zone. So if it's being, or server is being hosted in another time zone, it can be important to think about. And once again, we can also review, again, the program notification templates to see some of the options for sending things out to user groups, for example, or to organization contacts, if that would be helpful. Brian, I have one question here. If you can just repeat how you populate the template with some of the attribute information. Yeah, yeah, of course. And I can also be sure to zoom in a bit more this time. So I will resume my share here. And I'll go to program and needle care notifications. This last one that we just had for, say, enrollment in the ANC welcome message. So I'll move this. See that there's a list of template variables here, right. And each of these, if you click on it, will populate with where your cursor was in the message template. So if I click current date, I will show current date there. If I scroll down to Anthony will care, which is the name of the program, first name, and then I click first name, then it's going to show this attribute here. So I'm just going to copy and paste that over here. This is just the UID or the first name track density attribute. So it's nothing fancy really, but it's just to this is a helper to direct you to the right UID for your track density attribute. So first name, last name, you are now enrolled in the program. Okay, can save that there. Maybe I can go to once again, who to send this to. So I can say program attribute, user group, users that organization unit, track density instance. Okay. And I'm going to say organization unit contact. If you go to the organization units, then you should see a contact listed for a phone number or for email. Usually the person in charge. If I were to say a user group. Again, I can select ANSI staff. And if I say users in hierarchy, and that means just the people at the clinic that triggered this notification or below. So maybe like a high risk facility that's underneath the clinic in the working at hierarchy. Or maybe I want this to be a notification to the district level that we have a case of rabies or something like that that needs to be looked into or some other highly contagious disease. And then you would say notify a parent organization unit only and only like the, let's see here, area managers. So you can send this up or send this down or unit hierarchy for a specific user group if you so chose. Or again, you can send this to all users at an organization unit. The organization unit here, if you were to go to say a hospital, then you can see that there is a email and phone number attribute just for this hospital. So if I were to send an email based program notification to the hospital, then it would go to this email address here. I think maybe we have a bit more time just in the last few minutes here to also go over the program rule very briefly for sending out a message. So let's say, for example, in the entanglement care program, I want a message not to go out to all women that are enrolled, but only the women that are below 16 weeks gestational age and that have agreed to receive an SMS. Then I can do a condition here for what their gestational age should be. So it's over 16. And then in the program rule actions here, if you open this up, you can see that there's options for schedule or send message. So if I say schedule message, then that would be I might want to add another four days from the current date or a number of days from the due date for the next message or based at when she turns 16 weeks gestational age, for example. Or I can just send a message immediately. And then you see here in the dropdown, it says which one of these templates do you want to use for this message. And so generally, you would select the one that you've said in the template trigger this one on program rule. And so this would only be sent the this would only be sent or scheduled the first time that the program rule evaluates to true, right. So there's a number of different ways in which you can schedule program notifications with a program rule. It opens up a lot of possibilities. So we won't go into it in so much detail now. But just just to say if you wanted to explore this a bit more, just go to program rule actions and look for a schedule or send message. Okay, no questions. Should we take a quick break here, Sharjeet, before the next presentation?