and Android, and Platform, and Tracker. Those are the four product streams that we have within the DHS2 umbrella, and we will be introducing features from each of those over the course of this webinar. So again, thank you all for joining. With that, we'll kick it off. I'm going to start by giving a little bit of a framing for this release. We have previously, we've referred to DHS2 releases with a two at the beginning of the version number. And that's a little bit redundant because we have DHS2 and then version 240 or 2.40. And so from 240 or from version 40, which is released today, we'll be starting the transition to making the two part of the name, DHS2, and introducing the versions with the major version number that they are representing. So in this case today, we are releasing DHS2 version 40, which is out today. This helps also to make it easier to tell what is a major release, a patch release or a hot fix, which we have all three of those types of releases on different cadences and different, for different reasons throughout the course of a given year. So for example, DHS2 version 40 will have its first patch release, which will be DHS2 version 40.1. And it might have a hot fix if there happens to be a critical vulnerability or performance issue, that might be called DHS2 version 40.1.1 or .1.2, et cetera. So this gives those three parts to the version number, make it very clear what is being released when. So today we are releasing DHS2 version 40.0.0. So this is the first release of the DHS2 major version 40 work string. So the transition will take some time. You might see some references to 2.40 still in several places, but we're starting today and we think this will help to clarify a few things. The two is still there, it's just part of the name. So you won't be missing that too much. I also wanted to talk a little bit about the beta testing program that was introduced in the previous release in DHS version 39, but we have really expanded it this time, which with the version 40 release. So already before the release was even out, seven different partner groups, including Hisp groups and several NGOs and several major DHS2 implementers have been working very hard over the last two months to test the release of version 40 before it's even out into the wild. So this helps us to get a feel for what is already there, already in DHS2 that we wanna make sure we didn't break in this new change, as well as to get more eyes and more feedback on features before they're actually released into the wild. We had more than 11,000 tests performed by these beta testing partners, which is quite an extensive number. And we hope to expand that even in future version releases when we perform these beta testing programs. But that hopefully helps to give some context and some confidence to this release as we're releasing DHS2 version 40, that it has been tested by people that are using DHS2 extensively, previous versions. It's been tested on production databases with upgrades from previous releases and using the context and the use cases that are common on the ground in DHS2, but sometimes aren't brought early enough into the testing process. So we're hoping to do more and more of that. And hopefully you'll see a very high quality release in DHS2 version 40, because we've brought in so many people and been able to do extensive rounds of testing. We had a 96% pass rate, which means that of all of those tests that were performed, 96% of them passed the first time. And the ones that didn't pass, the ones that failed, we followed up. So we either fixed the issues already in 40.0.0 or we will fix them in the first patch release or we've noted them down as a known issue that we will address in a future at a future time. So we have a clear coverage of all of the functionality of DHS2 or a lot of the functionality of DHS2. There's a lot in there that has been tested and has been tested and shown to not be broken or to not be changed in a breaking way in the version 40 release. So we're very happy and very proud of this effort and big thanks to Phil who has been leading this on the DHS2 core team and as well as to all of the his groups and partners who have been putting time into to really test and help to make DHS2 version 40 a very high quality release. The last thing I wanted to mention as a general introduction before we turn it over to the products to introduce the features that are in this release is continuous delivery. So this has been something that's been around for some time. It's been around since about 35 release version 35 but it's continuously improving and also more and more applications are taking advantage of this functionality. So in the next several presentations from the different product leads we will hear about the different applications that are available now on the app hub. They might not be bundled in the DHS2 core release but they're available to download on the app hub or they might be bundled in that DHS2 core release but they can be updated at any time. So what's exciting about that is that several of the features you see today are actually already available in the app hub on the app hub and they're available even for DHS2 version 39 or 38. So things that are purely on the front end using affecting the user interface or the way that people interact with DHS2 those can oftentimes be supported even for previous releases. So the same version of the application can improve the functionality in 39 and 38 as well and so you can optionally go to the app management application in your DHS2 instance and update the version of an application that is already installed. So you'll see the screenshot here on the right shows that there are certain core applications that are available that have updates available. So those are the version that is installed in this DHS2 instance is older or different than the one that is available on the app hub. And this is very advantageous also for us as we have a long time between major DHS2 core releases because we can release applications more frequently. So if there's a small change or improvement or a bug that we need to fix that is only on the front end or only on the user interface of a particular functionality we can release that at any time and that will immediately be available to anyone that's out there running the versions that update supports. So even after version 240 we will be continually releasing new features and fixing bugs in applications and releasing those on the app hub for 240 as well. So you'll see updates become available for some of those applications as you start to use 240 or even if you're using 39 or 38 and if you update the version of the application that you're using in your instance you'll immediately have access to those new features. The other advantage there is that these updates that are available through the app hub of specific applications are much lower risk than updating the whole DHS2 instance. So you could upgrade in this example you could update the capture application and if there was something that you didn't like about that update or you found a bug or an issue that you wanted to go back to the version you had before with a single click you can downgrade again to the version that you had previously. So this also makes it very easy to install install a new version of an application and if something goes wrong you can immediately go back there's no changes to the database needed there's no issues with data integrity or those types of things that you need to take into account as you would with a major upgrade of the entire server. So some apps that we're introducing today or that we're talking about today in the different product presentations are not actually bundled with the DHS2 core release. So these are applications that need to be installed you can go to the app management app and then click on the app hub section and search for those applications and you can then install them. There are a few examples of this that we'll see through those presentations the line listing app is one of them the data exchange app is another one. And this doesn't mean that they're any less important than those apps that are bundled it's just a different way of delivering and letting people customize their DHS2 instances. So we hope that you'll go and install these applications test them out let us know what you think and start to use them because they are very powerful tools and we will also be increasingly making it easier to find and install these applications that are core but not maybe not bundled with the DHS2 core release. So with that, I'm going to turn it over to our first presenter. I believe Jan is on to present the features that are related to analytics in DHS2 version 40 and we will go through each of these products we have analytics and then Android and we have a special guest from the LMAF team George McGuire will be presenting a module that's introduced to the Android application that's specific for logistics or supply chain management and then we'll have some platform features to some of the core infrastructure that underlies a lot of what makes DHS2 run and makes DHS2 extensible and then Marcus will present the tracker product as well. So with that, I'll turn it over to Jan. Jan, are you there? Are you ready to take over the screen? Yes. Perfect, I'm going to stop sharing and I'll turn it over to you. Okay, can you see my screen? Yes. Okay, thanks. So hello everyone, my name is Jan and I'm gonna take you through the most important analytics updates in DHS2 version 40. So the first thing I'd like to mention is what Austin talked about. So most of our apps are now available on the app hub and set up for a continuous delivery. So that means that you can now go and install the latest analytics functionality like with a click of a button straight into your instance and I can show you how you can do that. So if you are a system admin, you can go here and find the app management app and then you can go and select app hub and from here you should be able to search and find all of our apps. So the line listing app should be here. You see there's been some updates here lately and make sure you have the latest version installed. You should be able to find the data visualizer app here. We just released the 100.1 version and make sure it's installed. You should also be able to find the maps app here already and very soon you should also be able to find the dashboard app. So with continuous delivery, you can expect more frequent updates. You can install the latest functionality straight into your instance. You don't have to wait for the full upgrade of a core. So in DHS2 version 40, we now support line lists on the dashboard. So I can show you how you can do that. You can go to the dashboard. I'm gonna create a new dashboard here and you can go to the dashboard item search. So you can search for a line list or you can just scroll down to this new line list section here and start to add line lists made in the new line listing app here. So let's change the layout a little bit and go into calls here and we can give it a name line lists and then we save it. And there you go. You have line lists made in the new line listing app on the dashboard. The next feature is kind of our main feature. It's the most wanted and most important feature in 240 because most users typically don't have access to managed indicators. They would like to go and play around with the data and create their own calculations, but typically they can't. So in 240 with this new feature, they can go and manage what we call kind of their own personal indicators. So I can show you how you can do this. You can go to the DataVisualizer app and the good thing here is you don't have to go to some other app to configure your custom calculations and then go back to DataVisualizer to visualize them. You can actually create and manage your custom calculations right here in DataVisualizer. So all you need to do is to go to the data selector. You can see that we've added calculations as one of the types in the filter. And to create a new one, you can just click this button here and that takes you to this new dialog. So in this dialog, you will find the data elements. You can use data elements in your formulas. You can filter by name. You can filter by group and you can choose between the totals and the breakdowns just like you can in the normal data selector. So to add a data element to the formula, you can either double click like that. You see it gets added to the formula section over here or you can just drag and drop the data element straight into the formula. And you can see we're using the same drag and drop systems we do in the Linesing app. So it's very easy to just position the item straight into the formula. Now, this doesn't look like a valid formula to me. So we can go and check that by clicking here and you see you get some feedback on what might be wrong here. So consecutive data elements means we need to add some operators. And this works the same way. So you can double click or you can just drag it straight into the formula. So I'm gonna add a couple of pluses here and this looks better. You don't have to click the check formula manually every time. You can just go and save the calculation and it will run the validation for you. So now we just need to give it a name. I'm gonna call it ANC one, two and three and I'm gonna save the calculation. And congratulations. We have made our first custom calculation. So a custom calculation is a data item just like all of the others. So you can use it in any visualization type and we're not ready to just click update to see our numbers. So if you want to display it in a table table, for instance, you can just go in and select table table and click update here. Now, if you want to edit your calculation you can go back to the data selector. You can click this edit icon and that takes you back to the formula builder and you can go and change your formula. Let's say we want to multiply it with some numbers. So I'm gonna drag in the number item which allows you to enter a fixed number. So now we can check the formula. We want to multiply the whole thing by two and we're gonna put the name a little bit here and I'm gonna save it. Now we call this on the fly calculations. So when I click update, you should be able to see the new values. So I click update and you see the dates values right there. So in terms of sharing, custom calculations are private by default. So in this section here, you only see your own calculations. Other users will only see their own calculations. They will not see your calculations. However, if you want to share your calculation, you can do so. And you just put it in a visualization, you share the visualization with someone else and when they go and open that visualization, they will see what we see here. Okay, so the next feature I would like to talk about is legends and stack charts. So we have been able to show legends in normal column and bar charts but in 2.4 you can also apply that to stack charts. So I'm gonna start from scratch here and I'm gonna change the visualization type to stack column and I'm gonna go and select a couple of indicators and click update. And the colors we see here are just the static normal default colors from the color set. So to give this chart a bit more meaning, you can go and apply a legend. And to do that, you go to options, you now find the legend tab available and the legend UI is exactly the same. So you can decide to go with the predefined legend assigned by the system admin to the indicators or you can freely choose from a list of legends. So I'm gonna apply the ANC coverage to the entire visualization and you can see that you now have legends in stack charts as well. This also applies to stack bar charts. Okay, so I said we haven't been improving the legend support in 240 and that also goes for a single values. So as you can see, you can apply legends to single values and we also support icons now. So if there is an icon configured for the indicator in the maintenance app by your admin, you can easily turn them on in data visualizer by going to the options. Okay, the next one in digital studio 248 you can now display the organic hierarchy in line lists. So this is good for various things. I'm gonna go to the licensing app and demonstrate this. So I'm gonna open a saved line list and you can imagine if you have a huge organic hierarchy then it could be difficult to know exactly which organ this is. So if you wanna give it a bit more context you can go to options and enable the organic hierarchy like that. You can also sort by the hierarchy and in that case it will sort by the entire hierarchy. So that will display the organets in this nice grouped way based on the parents and so on. So in the future, we can consider making this a bit more sophisticated. We can let the user decide which organic level you wanna display the organic hierarchy from for instance and so on. So we can make it a bit more sophisticated in the future. And the last feature I wanna mention is that we have improved the download experience of maps. So as you can see here, you can kind of go into download mode and you can configure your image. You can display the name of the description. You can display the legend and we also have this nice inset map over here and a North organic hierarchy. So I'm gonna demo how you can do that. I'm gonna go to the maps app and I'm gonna open a save map and then I'm gonna go into download mode. So I'm gonna go and click download on the toolbar and you can see here you have this nice inset map where you can scroll and you can pan so you can give it whatever context you want. You can toggle the name and the description and also the legend and the overview map if you want. We also have this North arrow, which is very nice if you want to pan or change your map a little bit like this to give some more context. You can do miles for this and you can also choose where you would like to display the indicator to make it very doesn't cover any data. So you can put it in the publisher. And then you can go and download your map and I can show you what that looks like. I'm gonna open the downloaded file in the browser and that looks like this. So you have a pretty good control over your map downloads now and you can print it out, you can put it on the wall and do whatever you want with your downloads. Okay, that's it from the analytics side. So I'm gonna hand it over to Andrea. Thank you, John. That was an impressive release, I have to say. So let me share my screen. We should be there now. So hello, everyone. Thank you, Austin. Hello, everyone. I am Marta. I'm going to present the work of the Android team that has gone to the Android version 2.8 to be released today as well. We are gonna go through, first we start with the Android web apps and then introduce there are two main areas where we have worked on in this release. One is user experience and the other one is supporting the implementation of mobile devices. We have a few improvements for web parity and then a very exciting use case specific model. So let's start with the available Android apps on the app app. This works exactly as John explained before. So I'm just gonna tell you that there are three available web apps for Android. In this case, they are used for adjusting certain configurations that are required only for if you use the mobile apps in your implementation. So the first one is the Android settings web app that has been there for a long time already is the one we use for configuring. Our synchronization parameters or some visuals, the analytics are configured there as well. That's not new, but there are two new apps that we'll be released next week. One is the APK distribution. The other one is the use case configuration. I'm gonna tell you what are they used for as we go through the presentations. To install them is just the same process that John explained, app management app and then app app. These are not core apps. So let's start with the user experience. The first feature that I want to introduce is the dataset resizing. It is the resizing of columns. This is a request that we have received from the first version of the application. We have made some items to offer a solution, particularly on the first column where we have the name of the data element, but we have implemented now what we think is the final solution for this is a drag and drop resizing of any columns. Either the first one for the data element, the name of the row or the ones that have the category options. And now the users can resize each specific column. They can resize all of them at once and they can also reset to the default sizing. So I'm gonna show you how that works here. So we're gonna add a new dataset for this period. I hope you can notice that there are small improvements in the design of the app here and there that make it look cleaner. So let's resize. To resize a column, I first have to tap. So right now we can resize the first one for the name. And if I wanna resize, I'm gonna use this table. Yes. If I wanna resize the other ones is the same, I just tap in the header and resize. If we don't like how it looks by tapping here the top right icon, I can reset to the default sizes. And if we wanna adjust the whole table at once, then we tap in the corner and now whatever we do, we'll apply to the whole table again. So we really hope this makes the datasets more usable, particularly for long names. Move this here. And then let's move to the next feature, which is the new error sync flow. We have implemented a new, let's say, flow for helping the user navigate from the home screen to the particular error. And we were doing this somehow before by offering different levels of information. So the contextual sync feedback is not really new, meaning that we adjust the message to where the user is. If you are in the home screen, we are not giving you a lot of details. We give you more details as to get inside the program or inside the track entity instance. However, it looks simpler and cleaner right now in the new version. And the most important, it lets the user navigate from the home screen to the specific error. So let's have a look at that. I am in the home screen now. So I'm gonna figure the sync process. So it's telling me that we have two programs that need to sync, but then there is one program, malaria case diagnosis treatment and investigation that has sync errors. And it's not giving me any details, it's just telling me that here to explore. So if I tap here, it's opening the program screen and triggering the sync process again. In this case, we have only one track entity instance with an error is showing me the first track entity instance attribute. If we had more, they would be listed. And then the user can select which one am I gonna fix? So we want to fix head. So I'm gonna tap on head. And now that it opens the track entity instance is when it's telling me what is the exact error which is a program in the system case ID, for example. So when I tap there, it's opening the form directly and it's highlighting in red in both places here on the section and here on the field where the problem is. So these are three steps, but we need to, in this example, I showed only one error in one program but the user might have errors in different programs and we need to offer different ways to navigate. So hopefully with this, we are facilitating the fixing errors or fixing sync errors for the end user. So let's move to the next which is user experience data entry. There are a few improvements. So I'm gonna present all of them together. The improvements that we have made in the data entry form for tracker and event programs. And I will make a small demo at the end. The first one is the signature rendering type. It has been requested for some time now that we want the user to be able to sign using the device in the screen, on the screen of the device. So we have implemented that now and it's based on either data element or attribute of type image.  This is available now from 240, sorry, from version 40 and the 28 of rendering. The next one is that we have implemented a few actionable value types. The value types that are actionable for now are the email value type, phone number value type and link value type. So when you use any of these value types in your track entity instance attributes, you will see in the form as you can see here on the screen that there is a little icon. So when you tap on the icon, the related application will open. Let's say if you tap on the phone, it will open the phone app or let you choose between phone, Skype, whatever apps you have for making phone calls directly from the track entity instance details. This is just based on the value type of the attribute so you don't really need to do any configuration to make it work out. I'll show you in a minute. Next one is that we have extended the rendering types for option sets. So there are different rendering types available already which are radio buttons and checkboxes either in vertical or horizontal and then visual data entry if they have icons connected to the options in the option set. The difference here with this new here is that now those rendering types are available for any value type that the option set has before it only worked for numbers in the case of visual and I think text for the others. But right now, as long as you have an option set you will be able to choose any rendering type to shape your layout of your data entry form. And then some other small things we have added even more loading banners in some screens that were reported to be I would slow in some cases we have improved the offline user experience by disabling the buttons that do not really make sense when the application doesn't have internet for example, sync. And we have improved the display of long text in some places. For example, the names of the stages when they are very long, they were cut before. So we have made those improvements in a few places. So let me show you the data entry. Let's go to the reproductive maternal health program. I'm gonna open the trapped entity instance, Mary and I wanna see her attributes. So I open person details and I go to her attributes. And if we go to the bottom of the form here we have a small example we can call her directly from here. There we are. We can send her an email if that's what we want. And we can, oops, don't, we can collect her signature. So we would, again, this signature is a trapped entity instance of type image with a specific rendering type called canvas. So now I type, sorry, I tap here and then she can just sign here to jump we can either clear or it didn't work well. Okay, let's make a new one and save. This is gonna be saved as an image in the server. Okay, let's keep going. We are gonna change now. This is all about user experience and we are gonna go now to implementation support. So the first thing very new for us, we are very excited to release this is centralized app distribution. What does that mean? We are trying to facilitate the control of the version that is used in your mobile implementations. So if you don't use Google Play, you can now use your DHIS to server to distribute your APKs and to control the version that you have distributed to your users. So the users that connect to your server will not have automatic updates. The application will check, am I in the right version? And if it's not, it will show a pop-up asking the user to update the version. And this will only happen when you administrator decide to change the version of the app that is used on your implementation. So this is done through one of the new web apps that I introduced before. It's the APK distribution or app distribution web app. So here is where you will update an APK. So this uses APKs that you can get from GitHub and then the app, oops, and then the app here will check if there is a software update. So this looks like this. It's in the settings. So the user now can check for updates and decide if they want to update or not. But they don't have to do it manually. There is an automatic check for updates internally happening as well. So we're really looking forward to see how this is adopted and how this is used. And hopefully we'll help controlling the version that you distribute and help you have more control on your implementation. There are other few things that we have implemented to support the admin. This is from an administration level. I will want to have the administrator that is managing the implementation. So first thing is that we have removed the limit for offline accounts. We have a maximum of three. There was no real reason for that despite the fact that every offline account keeps a separate and independent database stored in the device. So we were mostly worried about memory. We have removed that limitation. So now it's up to you to decide how many accounts you allow to use offline on your facilities. The accounts can be deleted as before, etc. The only difference now is that we are not imposing any limit in the number of offline accounts. And the other one, which was a strong request from the community as well, is that the Android Settings web app, the one that we use for configuring appearance, analytics, and setting parameters, does not need the permission all anymore. It was the case before, like the user that was configuring the settings for Android required to have the all permission. And that's definitely giving way more permissions than required because with all you can do absolutely everything on the server configuration. So that has been changed since version 40. And the Android Settings web app has now a specific authority that will need to be given to the user, which will only give access to this application. And that's all from implementation support about functional parity, which are functionalities that we don't support and we need to align with web. In this case, we have two functionalities that were supported by Tracker and not by Android, which is the file value type. So if you remember before when you had a file, we had here the message saying this value type is not supported. So this is the only difference. The files are supported now on Android so the users can upload a file from the device, from the data entry screen. The files can be linked to a user or to a program stage, like in this case with a birth certificate. And the maximum size of the file that the app will accept is configured in the Android Settings web app. This can definitely have impact on your implementations based on bandwidth and memory allocations as well. So be aware of how you configure the maximum size of the files. If you decide to use it and it will apply for the files that are uploaded from the application. So I'm gonna move to the next one, which is the working list. Marcus will tell us more about this later with Tracker, but there are working lists now that allow a since last version that let you select data elements as well for your working lists in addition to the attributes. So the Android app is now also reading those working lists, have to be configured on the web side with the capture app. But the Android app downloads them and offers them to the user here in the stop bar together with the filters. And I'm gonna move now to the last part, the very exciting use case specific user interface. What does that mean? Use case specific user interface. A use case specific user interface is we have integrated the possibility or implemented the possibility to offer a different user interface and a different user experience based on the program that is selected. So there have been three groups working on this, the LMIS team, the digital team and the Android team to make this a reality. And this is a huge step towards increasing our functional extensibility. For now it is in the application, like inside the code. The code has been restructured and now this specific user interface has its own module but needs to be added at compilation time. And then it will be offered when the user uses the selected program. We are hoping and exploring options to make this even more modularized. But for now, this is how it works. We are very excited to present it. So I'm gonna... I'm gonna... We are gonna have George Maguire to explain us the functionality in a minute. So I'm gonna stay in the generic level right now. How does this work on the HIS2? It is again configured with a web app, the second one that I mentioned before, the new one. So it's called use case configuration web app. And this app is gonna let you choose which program type you want to use. We only have logistics type for now. So you will say, I wanna use logistics program which means logistics program type which means I wanna have a logistics user interface or logistics data entry flow for the program that I select down here. In this case, real time stock management. So this is made at the server level. So we are saying that the real time stock management which is a tracker program, we use the user experience, we'll offer the user experience use the data entry flow that has been developed for logistics. In the app, that program is totally integrated. You can still use all the functionalities for the other programs on the analytics. So it is integrated in the current solution. However, if you remember when we open a tracker program in Android right now, this is a default screen for any tracker program. We have a list if it's configured to be displayed either in the child program or the active health program. So this is the default user experience for user interface for tracker programs. But now when I opened real time stock management because I said in the server that this program will have this type, the app has now loaded this configuration. There are some parameters that need to be configured. The app will guide you through it, the web app. And then when you open, it's offering you a different screen. So here is our program stages or units and other units where you can deliver. So this UI is designed and tailored to certain user data entry flow for real time stock management. I'm not gonna give more details about the use case because we actually have George here, George Maguire from the LMIS team. So George, I think I'm done with the Android features and I'm gonna let you explain us a bit more about this exciting use case that has been integrated. Thank you. Are you with us, George? Yes, thank you very much. I just wish you might be. Over to you. Hi, my name is George Maguire working with Breno on the LMIS and very honored to present right after Marta. So I'm just going to show one slide and then give a very short live demo. So we're very happy to introduce a real time stock management module that was specifically designed for logistics management which allows real time stock management at health care facility level. So we are talking about community health workers, dispensaries or pharmacies and it is not intended for medical stores and warehouses. So it's not replacing LMI software. It provides barcode scanner support that I will present. We have currently three workflows, distribution, discard correction and very exciting. Now we have a real time stamp so you can actually have a exact record of when the distribution was made on a mobile device even if the mobile device is offline. So native offline capability is really important. So you don't have to have internet connection at the time of caring of using the app. Of course you eventually have to synchronize the mobile device, but you can do that. We recommend that you do it at least once a day but you are not blocked from using the app if the wifi of the internet connection is poor and you can just continue with your work and then complete it once the network is restored. And our recommended way of using this app is you can use it standalone but we recommend to integrate it with an upstream national ELMS and especially for having the automatic stock received in case you were wondering. So when you shift stocks from the warehouse to the facility that you can actually update your stock on hand automatically from the upstream LMS. So and this slide very briefly just to stress again that this is the overall concept to use this app really at the last mile as we call it the hospital the community health worker or at the dispensary and not at upstream stores. So with that I'm going to change my screen to the actual mobile app. So as Marta just explained you can see here the real-time stock management on top it looks like any other program, DHS2 program but because of the use case app that Marta just explained when you tap on it actually uses a dedicated user interface. So I'm just going to show the most common features. So there are three, you basically have three options you can discard stock. That means that if the stock is expired or let's say you have a vaccine that was damaged from the failure of your cold chain then you might, you will have to remove it from the stock and you have to update your stock and you can do that by entering a stock discard and you have then a record. The other option is to have a stock correction. So sooner or later you might have a discrepancy between the stock on your shelf and the stock as recorded in the app because some kind of mistake was made and you can correct that with this stock correction menu and you can see it beautifully changes the background color so that the user is all sure what transaction they are working on and don't confuse it. So the most common transaction hopefully is a distribution that means that a nurse or another healthcare worker let's say from the pediatrics ward will present to the central pharmacy once a day or once a week with a list of items and I'm the storekeeper and need to prepare the stocks and issue it to the pediatrics ward. So I will select distribution. Mahasat is going to appear by default because I have access only to this health to this organization unit. If of course you can also configure having the whole organization unit tree and selecting an OU if you are assigned to seven of them. And then there basically as a user you only have one selection to make and that is this drop down menu of deliver two. So this is a list of the words and facilities that you're distributing to and that will appear in your reports and your digital stock card. So this is a list that is customized with an option set. So this is a recommendation or it's an available list but you can change it simply in the option set. So that makes the application very flexible because you can just attach it to your needs. So we said I had a request from the pediatrics ward which I'm going to select here and it will now display the list of items that I have in stock. I can collapse the header. I don't no longer need to edit it. It will steal everything will appear on the top. You see distribution very small Mahasat pediatrics department. So the user always knows exactly what transaction they're working on. So now I have a list of my entire stock that you can configure as needed. So you can use the item description used in the country. You can use any kind of coding system that is being used. You can scroll up and down the list and let's say I'm going to tap on the full C meet and you see that the stock is 1,290 and I'm going to select now 90 and tap in the next field or on the confirm button. And you can see that the stock on hand has changed from 1,290 to 1,200. So that's why we call it the real-time stock system application because the system will recalculate the current stock in real-time and anybody who has access to the data provided the mobile devices synchronized can view this updated data. So you have three ways of search of looking for the items, selecting the items. You can make a search which I will not show now. You can just scroll up and down the list and enter values. I'm going to enter another value. Let's say for Alben, that's all. I'm going to enter 50, tap on the next screen. It will again change the stock on hand to 850. I just want to show that of course if you make a mistake, you can always go back and you can correct the number or if you found that it's around item, you can always delete it completely. But the preferred way of actually selecting the item is that you label all your items in the pharmacy with a barcode. So this has been done actually in the field in several places and works very well. So I'm going to go back and show you. I'm going to open the little icon which is opens the barcode scanner and I have prepared here three barcodes. So the first one is Parasitamol. It will beep probably in here and it will bring up only the Parasitamol so you can see it here, the description and that's very convenient because it prevents the storekeeper from entering numbers in the wrong field. And you see as you type, you have a separate user interface opening here with the full length of the description and the interface for entering the quantity. If you enter a quantity that is larger than is in stock, you will get the warning. So I'll confirm this 200 now again, you see that the stock on hand is updated to 8,500. I'm going to open the barcode scanner for the second item which is for the asset. So the barcode scanner has recognized the item. I'm going to take 400 of those and I'm going to select the last item with my barcode scanner. You see that we have tried to make it really as simple as possible. The fewer clicks, the fewer options, the easier and more convenient for the storekeeper to use. I'm going to select 100. That was my last item. Now, let's say I have selected the three items that have been requested from the pediatric ward. I want to double check my list. So I'm going to go on the review screen. So you see there's actually only two interfaces, one for selecting the item and then for the review. So these are the four items that I have selected. I can still edit them. I can delete the quantity entirely or change the quantity and can check it against the items that I have picked and against the list that I received from the pediatric ward. And once I'm happy with the result, you can see that it says under review so that I know that this is like the final state. I click on confirm and that will complete the transactions. So my mobile phone is a bit slow. It tells me here that the transaction was successfully completed. Now it's important to synchronize the transaction. So I'm going back to the main screen. You can see this gray double arrow. That means that their status is synchronized. I'm going to tap on it. And you have just seen it in the demo format. So this is a new synchronization interface. And you can see that the synchronization arrow has disappeared. That means that the synchronization was successful. And now the data is synchronized with the server. So there are many visualizations that are available. I'm just going to show one of them, which is the line listing in the... I'm sorry, apologies. I just have to run the analytics table for updating the line listing so I can show you the actual transactions. In the meantime, so this is basically the digital stock card that is intended to replace the paper stock card that is used in the pharmacy. So you can see the organization unit, which was Mahasot. These are entries from the morning. You can see where the goods have been delivered to the item, the previous stock balance, the stock that was distributed, and the final stock. It doesn't look very spectacular, but keep in mind that now you can basically, all you need to do is to take the goods off the shelf, scan the barcode, enter the quantity, and you will have your monthly, you will have your stock card reporting directly in DHRs too. And you will also, there's an also aggregated report, like a monthly report that will show you the total distribution by department and so on. So I'm going to check if this just wanted to show you the actual transactions that we just conducted with the updates. You can find it, yeah. So I'm going to filter by the, yeah. So you can see these are the, these are actually the items that I created earlier. So you can see that these are the transactions from, sorry, yeah. I leave it like that. I didn't manage to show the actual transactions. Sorry for that. Brenna, do you have anything to add? Thanks a lot, George. I'm not sure of Brenna. I don't think Brenna has permission to unmute. So I think we'll go ahead. Thank you very much, George. That was a great presentation of the LMS module in the Android Capture app. Really excited to see use case specific flows coming to DHRs too, in particular in the Android Capture app, but we'll see more and more than situations where the interface and the user flows can be tailored to different use cases. So really excited to see that moving forward. I'm going to now share a bit about the platform product and the releases, the features that are in the version 40 release. So I'm going to share my screen again as well. One moment, please. No, that's not the right one. Apologies, one moment. Too many tabs open. Okay, so I'm going to talk now a bit about the features that are in the platform product stream for DHS2 version 40. We'll start with as we saw in both the analytics and the Android presentations, there are some apps in the platform product stream which are available via the app hub. In particular, the data exchange application is in available to the app hub. It's not bundled into the DHS2 core in version 40, but it's available for both 39 and 40 via the app hub. So anyone can install it and use it. And I'll talk more about what's in that application a little bit later, that was released shortly after the version 39 release late last year. Many other applications, too many to list here are available as continuous delivery, which means that they are, even if they're bundled within the 40 release or you have a version already installed, you can update them when new versions are available in the app management app. So be sure to check your app management app for updates that are available. And as I mentioned earlier, we'll be trying to highlight and make it more easy to discover and find these applications and these application updates and see what's in them, what's included in those changes in the future. This is also importantly available for 39 and 38 users as well. So if you have some of the features that you see here that might be interesting and changes to the user interface that you think are exciting, you can adopt those even in 38 and 39. But most of the applications that we are releasing with version 40 will also continue to be updated over the course of the next year as new things come about. So the first feature in the platform product stream that I want to talk about today is multi-select option sets. This is something that has been requested for a very long time and we're really excited to see it released in version 40. This is supported in aggregate data entry at the moment. It will be expanded into the other parts of the platform in the future. But to start off, we have implemented an option set type of text with multiple values. So this allows you to specify that the user should be able to select multiple values within this option set when they're entering data in the aggregate data entry application. This is a very big, exciting feature. We're hoping to see it also come to tracker and analytics in the near future. You can already do some things with analytics but we'll be expanding on that in the future as well. So look for more. And I think this is gonna be the groundwork for some really useful user interfaces and data flows for form design, for tracker in particular, for being able to select from a group of options which in the past has been a bit cumbersome to do with the built-in functionality of the HSD. So look for that coming to tracker and analytics in the future and we're excited to see it in analytics or sorry, aggregate data entry today. So this is what it looks like in the new data entry app which was released in version 39. You can see here that there is an option set with red, blue and green as the three options that are available and you can select multiple of them. So it's a quite intuitive interface. You can select and deselect very easily the options. You can clear the entire selection and you can select several of these options based on what's available. So this is quite useful in a lot of public health settings and we think it's useful in aggregate but also particularly in tracker as we get to expanding into that in the future. The second functionality that I wanted to introduce on the platform product stream is new app icons. So everybody is probably quite familiar with the icons that are on the left side of this slide. These have been around for a very long time. Some of them are older than others. Some of them are newer but still in sort of the same style or in very different styles. So it's not very consistent. So we're very excited to introduce a new set of icons for the core DHS2 applications that all have the same design style and look just quite a bit cleaner and better than the previous versions that have been around and evolved over time. And so excited to see these new application icons. The apps haven't necessarily changed. It's just a new fresher look and hopefully you'll see some resemblance between for example, the Maps application icon on the left side here and the Maps application icon in version 40 that is similar has a throwback to that previous icon. So hopefully you can still recognize those icons and just see the new style that's been introduced. The next feature that I wanna do, I'll actually first go through the core functionality that was introduced in version 39 of DHS2 and then talk about the web application that was released shortly thereafter and is available in 39 and now into 40 as well. This is the data exchange functionality. So in version 39 and now 40 as well, we have the ability to submit or send data from one DHS2 instance to another as well as to transform data within a particular DHS2 instance. This is a very powerful feature, particularly when you have multiple instances spread out within a country or maybe multiple countries reporting to a global instance or those types of workflows because it allows the user of the downstream instance to configure and then review a submission before it gets sent to the upstream service. And then everything else happens behind the scenes. So the configuration needs to happen to say this data element should go to this data element in my target system. And then I want to review that before I send it and then I can click go. What we'll talk about in a minute which was introduced shortly after the 39 release and is now included in the 40 release is the ability to review that data in a visual user interface and then click submit to actively submit it. I'll talk also a little bit about the functionality of transforming data within a particular DHS2 instance. This is incredibly powerful because it supports tracker data as well. So you can actually transform a program indicator into a data value in the DHS2 instance and also do that across the boundary between different DHS2 instances. So you could submit the program indicator output from data that is collected in the tracker data model and you can then put that into an aggregate data model within the same instance or in another instance upstream where it can then be compared with other data without needing access to the individual level data. So this is again just describing what is happening under the hood there. Importantly, you can run this ad hoc which we'll talk about how you can do that with the new data exchange application. And you can also run it as a scheduled job. So it just happens automatically behind the scenes without any user needing to interact with or review it. The target is always aggregate data model but you can start from either aggregate or tracker which is very powerful. So this is one way to aggregate tracker data into an HMIS instance, for example. So if you have a tracker COVID-19 vaccination tracker and you want to basically aggregate the total number of vaccines delivered by age group and then send that to the HMIS instance where you want to store just the aggregate total numbers, you can do that with the aggregate data exchange app and the tracker data stays in the COVID-19 instance and the aggregate data lives in the HMIS instance. So there are many other use cases for this. Data portals are also or public data access is also another one where you want to send and review only the specific data that gets sent to a separate DHS2 instance, particularly for public data access for security and privacy concerns that is possible with this functionality as well. And again, the value of pre-computing program indicators and sending those into the aggregate data model is quite powerful. So this is what the application actually looks like. This again was introduced after DHS2 version 39 was released and it's available for both 39 and 40. It's available on the app hub and what it allows you to do is to review and submit data for one of these data exchanges. So once the exchange has been configured within your DHS2 instance, you can review that data. As you can see here, you're reviewing the different organization units and the actual data for different periods and different, in this case, data elements that you want to submit to the upstream system. And then you click the submit data button and it allows you to actually perform that submission. Again, you can do this. This is the way you can do it manually or ad hoc but you can also schedule this to run on an automated basis if you don't need to review it every single time. But this is very helpful for being able to review that data and then submit it. This is useful also for global reporting from countries to international donors. Next feature that I'd like to talk about is improved data integration integrity checks. So we have a number of new integrity checks introduced in version 40 and also a new infrastructure for defining and running those integrity checks which makes them faster, more reliable and also easier to develop and expand. So we'll be hoping to introduce more and more integrity checks to be able to help instance administrators to understand the quality of their data, understand where there are gaps, where there are issues with the data in the database so that we can expose that information to them and help them to fix it. And this is what it looks like similar to probably what you've seen before but you can see a lot more integrity checks running and some more detail about what's going on in that integrity check run. So this is again in the data administration application that has been around for quite some time and we are continuing to expand on the set of integrity checks that are bundled with DHS-2 in future versions we'll be adding more as well. The next functionality that has been introduced in version 40 is job sequencing. This is quite exciting for scheduled jobs or scheduled tasks in DHS-2 because you can define a group of those jobs that can be run in sequence. So this means that you know that you need to finish the analytics table export before you run a notification job for example or something like that. And you can do these now in sequence. So you run job one and then you run job two and those can't run at the same time you have to finish job one before job two begins but then job three and job four have to run after job two but they can be run in parallel. So this allows you to clearly define the sequence of jobs that need to be run after each other and also which ones can be run at the same time so that you don't need to wait for job three to finish before you start running job four. And this is a little bit under the hood kind of a platform feature but we're really excited to see it and it'll be available in the scheduler app as a user interface shortly as well. So that will be introduced in continuous delivery but this is available as a core functionality of the scheduler service in DHS2 and the scheduler API for version 40. The next one is quite exciting for those that like to play around with the DHS2 API or have found themselves needing to play around with the DHS2 API. And this one is the open API three specification. So for a long time, we've had an API in DHS2. It's been quite extensive. It still is quite extensive and very powerful but sometimes it's too extensive and it's hard to really figure out what's going on, what's available, what's where. Some things are, most things are documented but some things are a little bit harder to determine. It's difficult to inspect or to automatically kind of generate clients or those types of things for the very extensive DHS2 API. And so in version 40, we're very excited to release a specification for the entire DHS2 API in the open API three specification format. So you can see that you can download that API specification at from your DHS2 instance in version 40 and above. You can also download subsections of that API because it is quite big and that can be problematic for some clients. So you can actually download a section of that specification. So only the specification for the user's portion of the API, for example, using a different URL. Both JSON and YAML formats are available. This is an API feature. So it's kind of behind the scenes but you can also visualize and see what that API looks like using an open API specification browser. And there will be one linked shortly to docs.dhs2.org and soon also will be available as a DHS2 application embedded in DHS2 itself to be able to see and explore the API within the instance that you have running. This is just an example of an open API specification browser called Spotlight, Stoplight, sorry, which allows you to use that specification document in JSON and to explore visually what different endpoints are available, what options they take, what HTTP methods that are available and what type that would return. And this also gives you examples of how to authenticate with this API and how to use Curl to test it out and many other things. So we're excited to explore more ways to expand this API specification visualization tool to expose it in docs.dhs2.org as well as in DHS2 instances themselves. So this next feature is also incredibly powerful. The next few features we're labeling as preview features for the version 40 release. This isn't to say that they're incomplete. It means that they are quite big functionality that we want to get out there and let people start to use so that we can improve them and maybe make some changes to the API or the way that they work in the future. So the next three features are labeled as preview features, but I'll go through them and they are available and fully functional in version 240, version 40, apologies. The first of those is the event hooks. So event hooks are a very exciting way to listen to DHS2. When something happens in DHS2 and in 240 or version 40, you have two sources for those events, metadata changes and scheduled jobs. And you can listen to events and in some way send those events out to other systems which can then respond when those happen. This hasn't been possible or hasn't been easy in previous versions of DHS2 because you had to pull or regularly check in again with the DHS2 API to be able to see what had changed and you wouldn't get notified when something changed immediately. And so for version 40, we have support for metadata changes, which means when any object in the metadata of a DHS2 instance is created, updated or deleted, a notification can be sent out. And we have multiple targets for these notifications that can be sent to the console, which means that it just gets put into the DHS2 log that can be sent out as a web hook, which is a long requested feature that is quite powerful. And that allows you to send an HTTP request to another service which can listen to those HTTP requests and then do something in response. It can also support more advanced queuing functionality through Apache Artemis and some specific workflows with Apache Kafka and we'll be exploring sharing more of the kind of recipes for how to use those tools in listening to events to perform different types of actions in software that's outside of the DHS2 server, but wants to listen to those events that happen within DHS2. And metadata create, update and delete is the first one and then scheduler, scheduled jobs is the other one. So you can probably the most requested feature here is to be able to listen to when the export of analytics tables completes and then be able to do something in an external service once that happens. So we will be looking at expanding this in the future. So we've introduced metadata and scheduler events in version 40, but we'll be looking at data and user events as well. So data would be when a data value set is submitted or completed or when a tracker event is created, those types of things and users would be creating updating and deleting users, maybe also different ways to hook into the login system or things like that. But these are quite performance intensive ways to use or to listen to events because there are many of them. There are many data events, there are many user events. And so we're not introducing those in version 40. We're starting with metadata and scheduler and we'll be expanding to other areas of DHS2 in the future. And we wanna see how you use this and how you want to use this functionality of event hooks. So this is a preview feature in version 40, it does need to be enabled in the DHS Conf, which is a protection against any performance impacts that might happen because of this. We don't expect there to be many, but because this is a preview feature, we wanna see what happens in real-world scenarios before we give it a stamp of approval. So hopefully people can use this and leverage it for their architectures in production environments. And we can see how that works and continue to improve on this functionality in the future. The next preview feature that I wanna talk about is called the route API. And this is again, a very powerful functionality for application developers in particular. It's also available through the API, so it doesn't have to be a DHS2 web application, but it's very powerful for a web application that is deployed through DHS2. And what it supports is being able to access an external service through the DHS2 server API. So previously before version 40, in order to access this external service, you had to either have that external service exposed to the public internet and then have the web browser talk to that external service directly, which opens up a lot of security and confidentiality issues that should have strictly be necessary. So what is introduced in version 40 is what's called a route API. You can define a route, which points from the DHS2 server to an external service. And this can include credentials, which are stored on the DHS2 server. So they never need to be exposed to the browser or the DHS web application. The web app simply makes a request to slash API slash routes and then specifies the route that it wants and the path and the query string and the headers that it wants to send to that external service. The DHS server then authenticates that request to say, this route is only available to users with a particular authority or this particular group of users. So if you're not in that group of users, I'm going to reject that right now. But if it is allowed, it will forward that request on to that external service and include some credentials and some other headers and enrich that request with certain properties that are configured in the DHS2 server. So those properties are not exposed to or the DHS web application doesn't need to know about them. Then that gets sent on to the external service, which has access to a custom header called X forwarded user, which specifies which user of DHS2 actually made that request. So then that external service can make a request back to the DHS2 server to figure out what that user has access to or what the particular form that they want to access or anything like that. Finally, that external service sends a response back to the DHS2 server, which forwards that response on to the web application. So from the web application perspective, it's just making a request to DHS2. And behind the scenes that's going off and doing some other things with this external service that importantly doesn't need to be exposed to the public internet, which adds a lot of security to the system. This is another preview feature. So there are a lot of powerful functionality that's already available in version 40, but there's a lot more that we wanna do with this as well. And we know that there's some very interesting use cases that we want to explore. So there will be more changes and improvements coming to this functionality as well in version 41 and beyond. Finally, the last preview feature that I want to introduce is called user impersonation. And this is mostly used internally by DHS2. It will be used for generating reports using a server-side headless browser. That's a technical terminology, but basically this allows you to access the DHS2 API as if you were another user in the system. So this is obviously something that most users of DHS2, almost all users of DHS2 should never have access to. But in very specific situations with integrations with external services or certain administrators, it can be very useful to be able to see what another user in DHS2 would see. And this lets you say, all right, I want to basically generate this dashboard as if I were this other user and then send that to them via email. So this is used internally in the DHS2 core teams work on push analytics in the near term. It is a preview feature, so it will be potentially some changes or improvements going forward in version 41. But we are also curious to hear what the use cases that you might have for these functionalities could be so that we can incorporate that in the future. There's also security implications to this. So it should be only enabled for very specific situations and it's disabled by default. So it's not exposed to any instance that doesn't want it. But if it's something that might be useful to you, you can explore using this feature in version 40 and talk to us about how we can improve it in version 41 and beyond. Finally, I just want to talk a little bit about a few of the API improvements that are not big enough for their own slide but are also included in version 40. And there are many more of these that are not listed here. You can go to the release notes to find out more. The first of these is a dedicated ping endpoint. So this is useful for checking if a service is available, if DHS2 is available. So you can use this ping endpoint without requiring authentication. It doesn't extend the user session. So if the DHS2 application platform uses this automatically to detect if the user is connected to the DHS2 server, but it doesn't extend that user session if they just send that ping. So you can send it as many times as you want without worrying about the security implications of that. The second feature here is a very small one, but system info has been added to the data summary endpoint which shows you a lot of details about what DHS2 system you're running and how many objects are represented in that system. So what are the statistics of that DHS2 instance? So that now has some more information about the version, revision, build time, and system ID of the DHS2 instance that you're talking to. And then data store information is, sharing information is now returned in the data store metadata API. This is just again another example of an extension to the DHS2 API that is included in version 40. And there are many, many more examples of these small improvements or changes to the API which are listed in the release notes or in the detailed JIRA issue breakdown that is also included with the version 40 release. So I think that's it. We'll wrap up now for the platform portion of our webinar and turn it over to Marcus who will be presenting the tracker functionality that's released in version 40. Marcus, are you there? Thanks a lot, Austin. I trust you can hear me. Yes. We, in the tracker side, are very excited to see these platform enhancements and looking forward to the implications that webhooks might have for tracker implementations, for example, and looking forward to the coming releases to build on with some of the features that you guys have done in platform. Absolutely. Cool. I will share my screen and take over. Let's see. And there, you should be able to see my slide. In this session, I will go through some of the new features we have in the captrap. And as you know, the captrap has been on continuous delivery since 238. It was one of the first apps to be released in this way. And many of the features I'll show you today will be available all the way from 238 and up. So I will try to make sure whenever I'm showing a feature to tell you if this is not the case, if it requires version 239 or if it requires version 40, I will make a point of that as I go. You can update the captrap in the app management app to get the latest version. I will go through many features that we call captrap parity, which really means that we have this functionality in the old tracker captrap. And we have now implemented, and in most cases, we decide and reimagine the functionality in the captrap. We have one new feature, one completely new feature that I will go through on the very end. On the backend API side, we have made many technical enhancements and have also a few new features that I'm gonna mention. But before I get into any of that, I will show you two new tracker analytics features. The first one is a new operator for program indicators in operator. And we are all used to writing program indicators like this. We would maybe have a data element that might have several options. In this case, I'm using the data element for an ongoing or initiated ARV regimen. And I want to count everyone that has either an ongoing or a recently initiated ARV regimen. With only two options, this doesn't take too much space, but in some cases, you might have 10 or maybe a hundred options that you want to filter and your expression might become very long. We now have a new operator that will allow us to write it in a slightly different way. And if I go to the next slide, you can see the small change in the expression there. We now can simply list the option data elements and then individually list the options behind it so that we will get the much shorter and more readable expression. In addition to being easier to use, this is also faster on the database layer. And as we know, program indicators are an area where we do need to optimize and be as efficient as possible. So this is good to know that you should try to use this way of addressing multiple options for one data element. The underlying query and performance will be faster. The next feature I'll show you is the ownership analytics feature. And this is a little bit of... This is a collaborative effort between many teams. It ended up on my plate to demo, but in reality, this is an analytics backend feature as well as front end. It's a maintenance app platform front end feature and I'm representing it here today on behalf of all these other teams. On the user interface, it doesn't look too impressive or conspicuous. We have one new dropdown field in the program indicator screen called organization unit field. And this field is there to allow analytics that specifically targets the owner of tracker data. As we know, a tracker, a HIV patient, for example, might be enrolled in one clinic, but throughout their treatment, they might move many times, their record might be moved many times between other clinics. So, this is better illustrated on this slide and we can see that we have the purple line there describing the point of which our patient moved from organit A to organit B. This is an enrollment that started in organit A. It was then moved to organit B later. To make efficient analytics on this, we, before we did not have the ability to analyze the data based on where the patient was currently owned, we only had the ability to analyze the data based on where the organit, where the user actually started out. But with the ownership analytics feature and the new selection in the program indicators to user interface, you will be able to count based on both methods. You can either count based on where people started out where they were first enrolled or you can do the count based on where patients or records currently are located. The use cases that requires this might include HIV and tuberculosis, but the list doesn't end there. I encourage you to look into the implementation guide as this, both the functionality and the explanation for the different use cases is much better covered there or is about to be much better covered there in the tracker design section. Okay. The next section here is going to cover capture app parity. This is features that used to be in the tracker capture app and that now have been redesigned and reimagined in the capture app. And the first feature I'm going to show you in this category is called breaking the glass. It is a feature that is useful when your end users needs to have a means of accessing records that is outside their immediate capture organets. Without giving the full access to everyone, to all organets, you can now with the protected program level, the access level protected, designate that users should have the possibility of breaking the glass and accessing records outside their capture scope. If they can find a person, they are able to break in, as we say, if they need to, as long as they provide a reason. I'm going to give a short demo of this now and I'm in my search form in a version of the Sierra Leone database. I'm logged in with the user that has access to Neon Dama only and I'm searching for a patient that I know is not in Neon Dama. The program is slightly modified from the standard Sierra Leone database as the WHO RMNCH tracker program has been set to access level protected. If I search in my own organets, I will not find any results, but if I go and search in all organets and programs, I will find a person called Ava Dedrickstone, which was my search terms. But trying to open her RMNCH, WHO RMNCH dashboard, I get this screen and I do have to provide a reason to get access to the record. She logged in and I'm in my search. The reason I provide here is stored in the database in an audit table and each implementation should have a followup routines to make sure that any abuse is followed up by the system admins. Clicking the check for enrollments, there is one enrollment that is active and I'm directly taken into this screen and seeing Ava's record in the WHO RMNCH tracker. The access will be retained for two hours. So I will be able to add to the record, work with her in the record for two hours before the glass would have to be broken again for this user. The original user, the original org unit will retain access as well. So breaking in to record does not take it over, you just gain an extra temporary access to the record. Okay, the next feature I'm gonna show you is a quite small one. It's also a parity feature. It is the program stage setting that is called ask user to create a new event when stage is complete. You can see it to the left here and I will give you a short demonstration of how this works. The use cases for this is two-fold. You can speed up back entry scenarios where a user would have to normally enter many events one after the other. This is a more direct access to creating a new event with less clicks. The other use case it supports is a reminder in clinical settings or point of care settings where you would generally have a new visit scheduled when you finish the current one. This would, for example, cover ANC visits where you would normally schedule a new visit at the end of a current one.  I'm gonna open this already ongoing and not to care of a ongoing and not to care visit here. And I'm gonna complete the ongoing visits and save it. And when I do, I get this box. I can agree to creating a new event if that's what I want. And then I will be presented with the possible stages that can be added. Then in this case, I'm going with the ANC visit again. And the default screen here is for going directly to reporting a new visit. But what I want to do now is schedule a new visit later. So I'll go to schedule and click schedule. And as you can see, the schedule visit ended up here. Yeah. The next feature I'm gonna show you is search form enhancement, creating a new tracked entry instance from search term. We now have a button for adding a new tracked entry instance if you don't find any or is not happy with your search results. This button will take you to the registration form but keep all the search terms that you had entered in your program. So I'm gonna do a short demonstration. And search by attributes. This is not a person that exists. And I can create new. And the search terms are carried over to this form. The use cases that is strengthened by this is mainly allowing users to start by searching all of the time. And this being a part of the user's workflow will potentially reduce duplicates in the end user and in the data in later rounds. The next feature I'm gonna show you is a very short one. I'm not gonna do a demo but mention that the hide due date flag is now fully supported. And when hide due date is checked for a program stage the due date will be hidden around the capture app and the scheduling will be affected. This is useful to reduce complexity in the user interface and remove unnecessary data in the capture apps user interface. The next one is the attribute option combination selection for tracker. This is also a parity feature. We now allow selecting attribute option combinations in tracker programs. This is a screenshot but I'll give you a quick demo. Switch to the child program up here. And as you can see, oops, if I open a existing record and oops, prepare there, add the new events. I did not, okay, I'm completely sure it will happen there. We'll have to do something that happened to my method of data apparently. So I'm going back to my screenshots instead of figuring out what's wrong. The implementing partner and projects was the demo category. And as you can see here, the implementing partner projects category combo is presented now as one of the choices in adding the event to the enrollment. It's below the basic info above the standard form when a category combination is used. So here you can see the implementing partner which is one of the combinations being filled out and the project in the process of being filled out. To get this feature, you will actually have to upgrade your capture app after installing 240.0. The bundled version of the capture app in the 240.0 version is not containing this feature, but the latest capture app version in the app hub, in the app management store will contain this feature. So just make sure you update your app if this is a useful feature for you. It would work from 238 and up as all of the other issues we have gone over so far. We have many updates to the usability in the capture app. Most of them quite small, and we have many small visual updates. We have enhanced the keyboard data entry. We have made sure we have loading, where that makes sense, loading indicators. We have added a lot of messages when the lists are empty and done a lot of enhancements that we hope will make the capture app feel better, more professional, without maybe you even noticing what actually changed. One of the bigger usability updates we have done is the header bar, and therefore I have a separate slide for this. We can also see here that generally the header bar in the latest versions of the capture app takes less space. It looks the same as the header bar in other apps, more specifically in the data entry app. They're using the same underlying technical components. And we have changed the strategy for selecting org units so that we have a pop over instead of a growing header bar when you want to select among many options like this. This will create a user interface that is more present to look at and that doesn't change as much. When you, for example, want to change the org units, the rest of the page is not pushed down. So we think this looks better, more professional, and also gives better space for the rest of the data in the page. I'm going to talk a little bit about the backend of TrackerNow and one of the biggest updates we have there is that we are from version 30 no longer referring to the new Tracker. We are going to talk about the Tracker endpoint only and when we mentioned Tracker, this is the new Tracker. We have renamed in the documentation the existing Tracker endpoints to old or deprecated Tracker and we are encouraging everyone to stop using the old Tracker endpoint and start using the new one from version 40. Under the hood, we have separated the code and we are getting ready to leave. Yeah, someone unmuted. We are getting ready to remove and delete the old endpoints. The Capture app web and also the Android Capture app are now both using the new Tracker as the standard or as we will call it from now, the Tracker endpoint. We have two minor features added to the backend and one of them is on the Tracker endpoint. It's the API support for downloading Tracker entities as CSV that might be useful sometimes to download TEIs into CSV. We also have an API for downloading files that has been uploaded on Tracker entity attributes. This did not exist before and it has been implemented now. One last feature before we leave, this is a new feature and this is the only feature that is not feature parity and this is the saved program stage working lists. Since 239, we have been supporting program stage working lists in the Capture app but from 240 onwards, it is also possible to save this program stage working list and they will show up on Android so you will see the saved lists both on web and Android. I'm gonna give you a short demo before rounding off today and I will share a different screen and let's see. This feature was also released after the after the 240 release or the version 240 was frozen. So to get this feature, you will also have to update your Capture app version in the app management app. That will share my Firefox there. You should be able to see my Firefox and this is a version of the WHO RMSH Tracker where I have prepared a small demo of these new working lists. The new working lists are very conspicuously hidden under the option of more filters here. I'm looking at the standard working list and under more filters, I can find the attributes and other tract entry instance related filters as usual but I also have a new option at the very bottom called program stage and when you select this option, then the list here, although looking the same, goes into a different mode and I'm selecting now the antinatal care visit program stage to make a demonstrator list for you. This is a list that combines tract entry attributes and data elements but only from the antinatal care visit stage. It will allow me to do things like selecting only records where the patient is smoking. I can filter the columns based on what is useful for me. I can maybe remove some of these attributes and I can add, for example, the smoking and whether they got smoking cessation counseling. And I now have a working list to follow up on. I can say that I have these two patients smoking and for some reason we did not give cessation counseling to Linda Bailey and even though she was smoking and this might be one thing that you want to follow up on in your data. We know there are use cases in lab, in contact tracing where you want to follow up on events linked to a tract entry instance in a tracker program where we think this feature will be very useful. Another use case can be like my pre, already saved working list here called overdue events in ANC or scheduled ANC visits where you want to see a list of upcoming visits and their appointment dates over here. And we think there is many other use cases that will also benefit from this. This list looks like the tracker lists and you don't really see a difference between the scheduled ANC visits and the tract entry instance list that is called active pregnancies. And clicking them, you will be able to navigate between them like you would expect. They also work the same as the tract entry instance lists when it comes to sharing. So you will be able to share it with other users in the same way as you can for other working lists. As Marta mentioned, they are also available on Android. So we hope this is a feature that will be helpful in many use cases. This is also my last slide. So I'll stop sharing and hand it back to Austin. Thanks for listening. Thanks Marcus, really great functionality coming to Tracker as well in version 40. So we're really excited to see that. And as you can see, there are a lot of things that cross over between the different product streams. So as Marcus just mentioned, this saved working lists functionality is in Tracker for web, but it's also in the Android capture application. And as Marcus mentioned at the beginning of his presentation as well, a lot of the extensibility functionality such as the routes API and other things, the event hooks, have impact on use cases in Tracker as well. So really looking forward to seeing more of the kind of cross cutting features and cross collaboration between the different product streams to make DHS2 as a whole product really shine. So we are just about out of time. So pretty perfect timing on behalf of the presenters. I did wanna say a huge thank you to everybody who made this release possible. That's all of the developers, all of the testers, all of the beta testers, the product managers, the design team, everybody who helps to put this release together and get it out to you today. And it is released as of today. So there was a release announcement on the community of practice. And it's also available on dhs2.org. And you can go there to see some of the highlights of these features. We'll be adding more kind of highlights and details about some of these features in the coming days. And we have release notes and upgrade notes. So if you're upgrading to version 40, be sure to read both of those. They tell you about what's in that release and also what you need to keep in mind if you're upgrading from a previous release of DHS2. I'm gonna go ahead and actually click on these so that you can see them. You can see here the announcement with all a list of a lot of the features that you heard about today. And down here you have links to the upgrade notes that I just mentioned, where to download the latest release of DHS2, list of all the features, the source code, lots of different fun tidbits here. This is for both version 40 of DHS2 as well as for version 2.8 of the Android Capture application. So you can find this on the community practice. We can also find the version 40 overview on dhs2.org that is linked from the homepage. So dhs2.org and you can click on the version 40 overview or the Android Capture version 2.8 overview and see more about those releases. And again, we'll be sharing more kind of textualized and deep dive functionality updates and documentation and those types of things in the coming weeks. The last thing actually on the same point, you'll see at the top of this page and also on dhs2.org that we have the annual conference coming up in middle of June. So we'll also be sharing quite a bit more about the version 40 release and what's coming next in version 41 with a big focus on quality and usability and technical infrastructure for that release. So we'll be sharing more about what's coming, when that's coming, how we're going about it, how we're releasing applications on continuous delivery to make sure that we're getting people as quick access to bug fixes and new changes as possible. So there'll be that and much, much more with the community of several hundred people in Oslo and also free access online for that annual conference that takes place June 12th through 15th. So feel free to register by going to dhs2.org to learn more. And finally, we wanna hear from you. So there's that post on the community of practice. You can also reach us by email post at dhs2.org. You can also just ask questions on the community of practice about the version 40 release. And if you wanna get involved with some of the design efforts that are going on, feel free to reach out as well. Or if part of that beta testing for the next release, we really want to get engaged with the community. So we wanna hear from you. Please let us know what you think about this release about the features that you just heard about today and any questions that you might have about the functionality that's in there or maybe something that you think we should highlight or prioritize in the near future. So with that, I'll wrap it up today. I don't know if all the presenters can turn on their videos quickly just to say thank you to the presenters, the product managers and people from the different product teams for presenting your features for version 40 today. It looks like maybe they're already taking off so not gonna turn off the on their video, but thank you for all the presenters and thank you to everyone for all the work that went into making this release a great one. And with that, we'll wrap it up and thank you all for joining. I know it was a long webinar. We'll also be taking chunks of it and putting those out as smaller videos hopefully in the near future as well. You can also go back and rewatch anything that you missed on the recording that is going to be pretty much immediately available on YouTube, it's also linked from the community of practice. So once again, thank you all very much. Hope you enjoy version 40 of DHS2, which is out today and please let us know what you think. Thank you. Well, thanks everyone. I'm just gonna close this down now so you'll all be seated down in a minute.