 Okay, I'm going to serve my screen. Can you see the screen now? Yes. Thank you. Okay, so now I'm going to try to resolve the exercise three from yesterday, the one that in which we want to display the list of programs. Okay, so first of all, you have to switch to the branch. And now when you're here, you go to the programs activity, which is that activity, you can find the exercise. So here, you have to do to get the program list. Okay, we're gonna remove it. And now, if we check in our emulator, we can go to the programs and see that now programs were found because we didn't resolve the exercise. So now we are going to resolve it. So first of all, we can call to the SDK and then get the two. So if you remember, this method, if you go to the SDK class, we'll call the digital manager get the two so you're gonna have the two class to start working. So now that we have the two, we can access the module. We want to go to the program module. If you can see that we have a lot of modules here, you can see the already module, the category module, and all the modules that are in the two. So we just want to go to the program module. So we select it. And then in the program module, we have a bunch of repositories. So we want to go to the program repository now because we want to get the programs. And then we can just call the get. So if we get paid, and the exercise says that we want to pay them 20 by 20. So we put here 20. And now, and now we have the programs. So if we want to see what happened, we can just relaunch the activity. Then it will run a build. And after that, we should say here, yeah, all the programs, we have here all the programs. So now we're going to start the filtering. We're going to use these two filters here. So after program, we can filter by, well, if you write by, you're going to see all the filters that you have by display name, by organization unit scope, by program type, organization unit list, by color, spray this icon, you can filter it by almost all the properties. So the exercise is telling you that you have to filter by program type. So we're going to go to the program type. And then call your two equals, you can use equals in and also there is some operators here, here. So the equal operator. And then we are going to type with registration, which is what the exercise is telling you to do. Just filter by with registration. We're going to add another filter here by the scope. So you can find the writing. And then we're going to add the scope. You can use the scope, the search, but also the scope that capture is required by the exercise. So now we're going to see if it's working. So we can click here to apply the changes. And we'll restart the activity. So if you wait for a few seconds, you're going to say that the program without registration are going to disappear. So now we are, we have only like three, three different programs. So also here, it's telling you to order the programs by name, A to C. But that's the default. It is by default, the programs are like that. So we are going to do it in the other way just to see the changes. So order by display name. And then we can use the order by direction. We have here the sending and ascending. We're going to use now sending. So opposite that, the exercise is telling you that we are going to do it that way. So again, we'll refresh the activity. And now this one should be the first one and the type around should be the last one. Yeah. So now we have the list of programs in the other direction. If, for example, we want to remove the other filters and add another new filter, we can just, for example, by display name, we're filtering by display name, like, and maybe we can write mal to try to get the malaria programs. So if we filter now, after the synchronization, we'll see that here, only the malaria programs like the malaria focus investigation. And yeah, it's here, malaria focus investigation, malaria case registration, and xx mal because also right here in malaria case. So that's how we sort of resolve the exercise. And well, if you have any question, I'm already happy to try to solve it. Have any questions so far? Okay. If you don't have any question, I think we can move to Victor. You have to make the next exercise. I'm going to stop sharing my screen. All yours. Okay. Okay. This session is about more about listing, in this case, data in the Android app. This is about searching target entity instances. Because in the previous exercise, we saw how to filter and display metadata in the Android app. For metadata, it's always the same. You can filter. It's very generic. Yeah. Once you have done with programs, you can do the same for other things. In the case of data, in some cases, data is quite, has a few things that are different to metadata. And in this case, well, the target entity instance class or the target entity endpoint in the API is something different. It's special. It allows you to filter by other things. I mean, not just properties in the target entity instance class itself, but for example, if the instance has an enrollment or has an attribute of a particular type, or the opening date of the enrollment, things like that. So it's more complex. It's more complex than a regular filter, let's say. In the SDK, this repository, this functionality is both in the target entity instance collection repository, query collection repository. So it allows you to filter by... This is the same as in the Word API. So if you are with a Word API, this will sound from the app to you. For example, you can filter by query, which means search for a value across all the attributes in the TI. Or you can filter by a particular value in a particular attribute. For example, instance whose first name is John, for example. Or you can see that are enrolled in a particular program or with a particular enrollment date. What is different in this repository is that it has the ability to create results online, because we talk always that how the typical workflow in the application is to download the metadata and the data, and then access the local database to solve the results and work with the local data. In this case, the SDK allows you to get the results both locally and remotely, coming from the remote server. And you can combine the results. And this is important because, for example, in large implementations with thousands of TI, you don't want to download all of them in the device. Maybe you only want to download most recent TI's because they are more likely to be used in the device. And then if you want to access another TI, you can search online. So here, in this repository, we have four modes, offline only. It means only store locally, offline first. It shows the local results, local TI, the TI fetch from the database in first place. And then it gets more results from the API online only and online first. And of course, for online only and online first, you need an internet connection, a connection to the server. Well, so this is quite intuitive, but just to show you a diagram about how it works. So we have, in the website, we have the track entity instance query repository, feed the name by attribute, by program, whatever. And we apply the strategy offline first, which means local results in first place, and then it goes to the API. So the flow will be, this will be done by USTK. So USTK will get results from the database in first place. And then the USTK will query the API to get more results, results that are not included in the local database. Okay. The syntax is the same, it's very, very similar to the syntax to access other repository. You have to access the P2 instance, track entity module, track entity instance query, and then filter by whatever you want. And the thing that is different is the method offline only, offline first, online only, online first, that you want to apply. And the case page has this. Okay. So let's do an exercise. So first of all, I would like to show the exercise for you to know where you can check that the result, that your solution is fine. So the first thing you have to do, as usual, is to move to the, to the branch, to the online. This is the exercise five. Sorry for that. Actually, it's four, but we have to switch exercises. So this is the five, a TI search. Check out. Okay. If you learn this grant, so here we have them. Let's get it done up. I'm already logged in with the zero. So if you go to the left, left side menu, the third entry is track entity search. You go there. This is a very, very simple form to query by any activity you want in any program you want by any value. So here we don't have any validation that this attribute belongs to the program. It's just a simple form to check the query input. Oh, yeah. Well, at the front, continue. This branch, the branch exercise five TI search was included yesterday afternoon. So probably you have to update the project. You need to come here, version control and update project because otherwise you are not going to see the branch. Okay. If you go here, you can, for example, select first name, type program and look for John. For example, if I click here, I can click, it's going to crash because the method is not implemented. So let's go to the code. Yeah. Track entity instance search. So here we have this method. Here we have to write the code, very similar to the code that is in the slide. So take a look at that. You have to use this information in the parameters to filter. So you have to filter by this or unit using the standard mode by this, the attributes, by this, by this program, by this attribute, and the attribute should be like this value. Okay. So what you have to do is to write the query and one, once you have the query and you return the dislike data, the pages like data, if you go to the application and you perform any search, you will be able to see the result in the list. So we go back here, exercise five. So the recommendation to test the result is to search by first name, like John, in the program, type program. Because you have there, I can say that you have some results there. And to try different modes, for example, you can try offline only in first play, then offline first, to see the differences or offline only on plain first. Try to do that and give rest in a second. So yes, I think that's all from my side. Okay. I think we can, we can switch to break rooms.