 Good morning and good afternoon. Hello everyone. My name is Yuri and I'm working here in Norway with tracker implementation. I hope you can hear me well and Scott, do you see my screen? Looks great and here you find. Okay. So I will show you how to move the tracker data to aggregate data sets today. And as Scott mentioned, capturing this individual level data in DHS2 does improve the quality of data that we reports to aggregate HMIS, but it also helps us to get to the analysis of data as regular as often as required. So I first got familiar with this question of how we transfer the data when I was working on the TB case surveillance on the tracker module that has been published now in August. And so my examples that I will share with you will be based on the TB case surveillance. So as you know, for countries that implement tracker, it is recommended that they use two instances for one for aggregate modules and one for tracker. And so by maintaining these separate track and aggregate instances, the performance can be best managed by admins and choosers so that the data can be protected and used as required. So basically, what we do is that when we collect the individual data in tracker, it is being aggregated via program indicators. So when we produce analytics in tracker, sometimes we're lacking those dimensions that the aggregate world allows us to use. And therefore, we need that step of transferring the data from tracker to the aggregate modules. And I'm going to talk about two ways of doing that. One is more user friendly. And this is a solution that has been developed by his Uganda. And I just would like to say thank you to my colleagues in Uganda who shared that information with me and helped me at the beginning. And the other way, the other solution I will talk about is a script approach that requires more tech knowledge. So first, the app that you can all use in DHS2 is called the data import wizard developed by his Uganda. So it has a user friendly interface. It supports various import types and you can save your mappings and edit them and have a good way of controlling them. But the consideration that you need, well, the things that you need to think about as you use that app is that the mapping process is manual and it's best suited for small scale datasets. So basically, if you have to transfer a lot of data from your tracker to the aggregate modules and you have a lot of indicators or data elements to feed, you'll be better off using the other solutions. So how does it work? I'll just say a few words and then I will show it to you on the example of our on the instance. So once you install the app from the app store in DHS2, you have to do it in your aggregate instance and then you can start with a new mapping. So and as you configure it, I will walk you through the steps. Now you will see that it's quite simple. So let me see if you can... I'm trying to make sure that... Scott, did you see that I switched the screen now? Yes, we can see that you're looking at DHS2, the WHO, Hive and Dev. Yeah, okay. So as you see here is my tracker instance with a whole list of program indicators that I have created for my data. And as I said, for each of the data element in the aggregate set, I have to create a program indicator. So I need to create one for the age desegregation for sex and so on and so forth. Here is my aggregate instance with the report forms on the TB. And as you see, this form is empty now. So we'll try to fill it in with some data. So here is the app that I was talking about, the data import wizard. So once I started, it actually serves many purposes. It can help you import dummy data into your instance or data from Excel or whatever. But we are talking about the aggregate. So once I start a new mapping, so basically I will have an overview of the data sets that are present in my instance. And here I will go and take the TB case notification. So I have to create a mapping name and choose the import type. So in this case, I'm going to import DHS2 indicators into a DHS2 aggregate data set. So I go for program indicators. I have to specify the address of my tracker instance, which will be this. So I put it here. And then I have to log in with the system admin password that has access to the instance. See if I get it right this time. Because in the app, you can see the actual password. You don't see the stars. Let's see. So that was right. So now here I have to specify what period of time I want my mapping to work for. So I will take 2020 and I will take the first quarter indicator aggregation level. Okay, so we can do a facility. And then we need to map the facilities on the tracker instance with the facilities or with org units on the aggregate instance. But as you see, if the names are matching, then the mapping happens automatically. I don't need to do much here. Then I can filter my indicators. And these are the indicators that I want to send data to my aggregate modules. And I've been using the prefixing in the indicators that I've created. So I can assign all of that. And then I can move to the next step. Here I have the data sets that you see that I need to manually map. And this is what I mentioned earlier, that for data sets that are included, just a few indicators. This is the way to go with this app. If you have several hundreds or thousands of elements you need to map, this will be a cumbersome process. So let's say here is my agent sex TV form. And here I can select the indicators that I that can feed into it. And so I can also look for for the indicators. Okay, so it's this one. And here it's, I don't know, that was a female, sorry, sorry. Female here. And then I will find the one for female here. And so on. So I proceed like that till I reach the end. And when I click next. So right now I didn't do all of this. But if I did, I would, I would be shown the, I will see the status that all of my indicators in that form were mapped. I guess it takes, it takes so long because of the fact that I have not selected everything here yet. So I will, I will just interrupt this process and I will show you a mapping that I've created earlier. And you will see that it's what it does. So let's say I move on to the next step. So here are my mappings. And here you can see that the import summary of my job that I have updated eight values from my mapping. And I can save it as a JSON file or I can, I can also see, I can, I could also see the report on what has been done. And if I go to my aggregate module now, I will be able to see the data that has been filled in. Okay. So this is how this app works. Basically, what's in the background, there's a JSON file that is generated with a payload. And then it's uploaded to the, to the aggregate module. So the next way of doing, of moving the data to the, to the aggregate modules is the script. And here I'm referring to the script that has been developed by Love Popper. A lot of you might know him. And we are now working on upgrading this script so that it will be more universal in what it's doing and also provide more feedback to the user once, once it's run. So it's a shell executable script that requires some initial setup. And I will walk you through that. And you can also set up automated periodic export of data with that script to, to aggregate with the world by using, let's say, a task schedule. So there's some work that needs to be done for that. And this is where, what I started when I, when I worked on the TB case surveillance. So basically, on the aggregate side, you have the data elements and the category option combinations that need to be coded. So here is an example, as you can see of a data element and a code that it receives. And here's an example of a category option combination with the, with the code. So I will need these codes to map my program indicators in the tracker instance of, in order to, for this transfer to be successful. So on the tracker, we will need, as you see here, I will move to my indicators. As you see here, there is an element or an attribute here called category option combination for aggregate data export. So here I map my category option combinations from the aggregate modules. And I will also need to create a custom attribute, which we call data element for aggregate data export. So we can then map it to the data element in the aggregate package. At this stage, I would, I would just like to point out that there is a bug in the current, in the DHS2 now that prevents the user from creating the custom attribute for program indicators in the maintenance app. We are working on that bug, but when we deliver our generic packages, let's say TBK surveillance, these come with these custom attributes, because these custom attributes can still be injected into the properties of an indicator via API. So if you have any questions on that, or how this can be done, you can, you can get in touch with us and we will help you in this process. But once, once this bug has been resolved, it will be easier for users to actually just enter those mappings here, because this is where it will appear when you create that attribute. So what is done afterwards? So you have a, this is what the script looks like now. So basically, we, we need to edit the list of program indicators that we are going to use to push the data. We have to specify the org unit levels at which we do this transfer, as well as the periods. And then we need to specify the data attribute, UID, and this is the attribute that I was talking about the, for the data elements. And then we need to specify the servers that we're using. So here is our source URL. This is the tracker and our target URL, which is the aggregate package. We make sure that the date format is correct in this field. And then we specify the file name that will be created for transferring the data and the comments that will be added to the database. And basically, then we need to update the user in the password for the servers. And basically, this is it. So we need to, because it's a shell script, we need to make it executable with the C H M O D command. And then we can run it in the, in the shell or in the terminal on the Mac. And then if you need automated data transfer, you can use the a, a scheduler in order to make these transfers periodic. And I think I've forgotten to say, but in the, the his Puganda app, the, the, the import wizard also offers you scheduling for the jobs that you create there. So this is basically what I wanted to show today. And as a, as I said, if you have any questions, please use the, the, the channel on the community of practice to will be happy to answer these questions. And if you need support with the, with the, with the script, or with the transfer from aggregate, please do get in touch with us and we'll guide you further in that process. So thanks. Thanks so much, Yuri. There are a few questions that maybe you can answer right away for us here. There's quite a, actually, there's quite a lot of conversation here. So the, the, so one question that's, one question that's been asked a couple of times, and I think you just answered it is these, using that application, the history of Puganda application, you can schedule jobs. So you, once you set up the mapping, you can schedule it to run periodically, correct? Yes. Yes. Okay. And then what if you have aggregate and tracker data in the same instance, does that app also work for in that situation? Yes, I don't think there's any restriction in regard to that. So you will just have to specify the same instance twice. And then you will be, if the transfer will happen. Great. Then is there, are you able to provide contact details for folks who may need assistance using the app or using the script? Yes, with pleasure. So how do I, do I just paste it in the, in the chat here? Well, I can, if you're fine with me just giving out your email, I can paste it here in the, yeah, in the chat or in our, in our Slack. Yeah. Okay. Is there a step-by-step guide that you have for using the application? We are, I don't have a step-by-step guide right now. So I can, I can, I can copy from the notes that I made for the person over and I can upload it to, or I can either post it on Slack or on the community of practice. And I will also do the same for the, for the script. So the script will be the way it looks now. And so, so basically what we are trying to do is that we're trying to make it more, more user-friendly. So it will give you feedback and it will, you know, on what it's doing basically. So there'll be more kind of validation of the process. But again, you know, the interface requires more time than the actual, you know, script that does the job. Right. Right. Yeah, those would be two very useful resources. Another question is, are we using that same app? Are you able to move data to have interoperability between two DHIS-2 instances that are just having aggregate data? For example, you have aggregate data in one and you want to move that aggregated data to another. Are you also able to use that app for that? I have not tested it for this, but from what I see when I, when I create, when I create a new app. So let me just create a new mapping. So feel free to, you can share your screen again as well. Okay. Let me see. We are here now. Okay. So if I, if I take more, create a new mapping. So these are the options that I have. I have a DHIS-2 to DHIS-2 data set, which I think is the answer to the question. So I can move that from one data set to the other or from indicators. Let's say I could even move the data from the aggregate indicators here to the DHIS-2 data set. Right. Okay. So both ways are possible. Cool. That's great to see. I think we actually have some HIST Uganda folks that are participants. And so they're actually answering some of the questions themselves, which is really cool. And in general, I think it's important to point out that this is a great example of how the DHIS-2 community is able to help each other, right? So we're, what, what Yuri's presenting is not an app made by the University of Oslo. Is an, is it a fantastic app made by the, by HIST Uganda? And it's just made in a generic way so that everyone in the world can use it. But that being said, if you are using this app and you are dependent on this app, I would strongly encourage you to consider supporting HIST Uganda. You know, everything in DHIS-2 is open and free to use, but that doesn't mean that things are sustainable indefinitely. And I just want to strongly say, encourage you that if you start to use this app, appreciate that this app is not developed by the University of Oslo and that there's a development team in Uganda that is working to keep this app alive. And if you are dependent on this app, I would strongly encourage you to get in contact with HIST Uganda. We can provide those contact information and talk to them about how you can support their effort to develop, continue to develop and keep this app alive. There are many apps in DHIS-2 that, you know, the University of Oslo, we only made, we only developed about 30 apps, but there are over 100 apps out there. And so if there's a good chance that you're actually using an app that we didn't develop, and if you want to continue using these apps, I strongly encourage you to figure out who developed them and then to figure out if you can support them. In this case, HIST Uganda, fantastic app. So good that we're supporting it or that we're presenting it here in the academy is kind of one of our default solutions. There is one more question for you, Yuri. Have you, are you aware of the metadata sync app at all? No. Well, is that what is called metadata sync? I think the question's coming from Lisa from WHO. She's asking if we're aware of the metadata sync app and it would be nice if we joined the efforts. I'm not fully aware. Again, there's many apps being developed all the time. I'm finding out about new apps almost on a weekly basis myself. I'm not aware of that app and maybe that app may do something similar, I'm assuming. I have seen this app to be honest. I have not tried it out but it's the metadata sync app. I looked at it briefly when I was preparing for this because I wanted to make sure that I see if there are other apps that serve the same purpose because I'm sure that even with this script that I presented that we might have some community members that have developed their own ways and maybe they're more advanced than what I shared. This is just to emphasize what you said about the power of community. It is great that we can reach out to each other and get each other's support in this but I will definitely look into the metadata sync app and see what it will be. Yeah, it's coming from Lisa Grout and Tina Konjument. I think that they would, maybe we can connect the dots and they can reach out as well. They just posted a link to it. Scott, by the way, can you add me to the Slack channel? Yeah, we'll have Martin do that as well. Thank you. Scott? Yes? There are two questions about using this app to import data from Excel into Tracker on announcements, I think. Have you experienced that, Yuri, or I believe Sam from Histugandas also in the call? Have either of you imported data from Excel into Tracker using this app? I haven't been using this app for that purpose but maybe Sam can answer the other question. Hello. Hello. Hi there, Sam. Hey, how are you? So I was working with the Afghanistan team and specifically this year we used the app to import Tracker data, which was coming through Excel from the professional health laboratory. So it is possible to import it using the Tracker that the team present. Great. I think that's a very clear answer. Thank you so much. And again, example of the power of the communities that Sam just happened to be here and be the right person to answer the question at the right time. So that's fantastic.