00:00:00:09 - 00:00:31:16 Julius F. All right, So here's our final project demo. Obviously, our product is ready. Ready. I'm Sandra Botero, and everyone else can introduce themselves when they get to their parts. Okay, so the overview is health is an important part of any person's life. And in today's society, people have begun looking time to check up on their self. And that's where everybody comes in. 00:00:33:14 - 00:01:04:22 Sandra M. So on the graph, patient wait times for in-person appointments can be quite long. And oftentimes a person will opt to decide that they don't have time to go get seen in between work or school. And so they will neglect their health. So many is a solution to this. As an online health contractor with a database to correlate symptoms from the patient with our existing database of illnesses. 00:01:05:06 - 00:01:34:00 Sandra M. We get the symptoms from the patient through a questionnaire which will evaluate their answers. Calculate. Sorry. Yeah, but you wait the answers and then reference the database from the correlating systems and then output a percentage of the likelihood of set illness based on the based on an algorithm. Okay. So the first quiz designed is what I worked on. 00:01:34:17 - 00:02:05:19 Sandra M. It's test question page dot P, It's currently not on. It's on the current version of the website. But it did serve as kind of a basis for the current version. It uses the form builder tool by Josh can help, which was approved as as I said before, because the database to the database also has its own question table with the question and in one row and then the answers in another row. 00:02:05:19 - 00:02:33:23 Sandra M. So it just loads those in two variables from the database. And then after after you're done, you hit submit and then it will and then it output it. The the likelihood based on the first algorithm. They were passed as binary values and then the the function takes care of that. But I'll let on the back end team talk about their algorithm when it gets to it. 00:02:34:21 - 00:03:07:06 Sandra M. Okay. So at this point, I'm going to move on to the demo portion. So here is the P for the test question page. It's very repetitive because at one point I thought that the for loop was breaking it and not having it display and I didn't really get a chance to condense it because after the see your project expo, we Kristie, began working on a new question page so this this is the or is it. 00:03:07:08 - 00:03:33:10 Sandra M. Yeah so this is the check on this function. I'm not going to go into detail about that. But so from here we have the database connections and then it imports the, the, the form builder does this to get the for the for the form. Okay. So like I said, it's one at a time. So this is in the format for the form builder. 00:03:33:10 - 00:03:58:00 Sandra M. So it's going to look different than Chrissy's version, which doesn't use the form builder. So it loads in, it loads in the answers, puts them in the array, and then it does that. It's just like it's really repetitive. And then we build the form and then it posted the, the binary values from the question into these variables, which then go into the check illness. 00:03:58:22 - 00:04:25:08 Sandra M. Another thing that I also did I did is just some minor, minor, minor up appearance changes. And then I also worked on Chrissy's current quiz a little bit. I'm not sure if this is the correct file, but the point is I did make it so that it displayed them one at a time. However, it also breaks the the evaluation algorithm. 00:04:25:08 - 00:04:45:07 Sandra M. So this is currently not on the live version, but I thought I'd show it anyway. And then I also made this change the home page a little bit. I added the background image, design a new logo, and then put the text over here and then there's a button right here that goes to the quiz. All right, So that about does it for my portion. 00:04:45:07 - 00:04:47:01 Sandra M. I'm going to pass it off now. 00:04:48:09 - 00:05:18:05 Kristine C. Hello, my name is Christine, and originally I started out as the well supposed to be the back end. Only were Julius and Michael, but due to time complications and scheduling sorts of things, I kind of ended up winding up being the full stack dev for the team. So was touching both front end stuff and back and stuff. Like I had to share my screen for sure. 00:05:18:05 - 00:06:06:22 Kristine C. Everything was already secure. Sorry so much on screen so the first part here, I think I may have skipped the slide now. I'll just get to it later. Okay. So just going back and forth, I'll move over to the quiz portion first, essentially, after the Senior Expo, I redesigned what Sandra had created and focused on getting that for loop to work. 00:06:06:22 - 00:06:35:04 Kristine C. Essentially, I was very focused on getting everything in our project more optimized, and what I encountered was the reason why Sandra had to sort of hard code. Those specific questions and answers was because, well, initially there wasn't a question ID or really a foreign key from the questions to the symptoms. So there's no way to correlate that information back over to the questions. 00:06:35:13 - 00:07:03:00 Kristine C. So what I did was create a set of several sub queries as we'll see where this first section was simply just gathering the data of the questions with their names related to the symptoms that the user may have said yes to. And down here below you'll see that I'm printing out the question and its associated answer in that database, which is simply yes or no. 00:07:03:00 - 00:07:35:18 Kristine C. But the only difference is that when a user submits yes, it will store the actual symptom value that correlates to the question. And by doing some inner joins with question ID as well as a new column that I added in both tables, that's how I was able to get those together before kids and going through this is where after the user submits their answers, it stores their symptoms in a symptom array from here. 00:07:36:15 - 00:08:06:17 Kristine C. Essentially what I'm trying to do is just gather all of the subdomains that the user said yes to, and that will be important for this next part where we're trying to compare all of the illnesses that respond to the submitted symptom. So in our symptom, our illness symptom table, there are several duplicates of symptoms. And that's because, well, if you have a cough, that doesn't simply mean you have cold, but it can mean that you can have a multitude of things. 00:08:07:23 - 00:08:45:09 Kristine C. So what I'm doing here from a previous slide, I counted only the distinct symptoms in that way going through. I only count the distinct amount of times that a symptom applies to its respected illness. And as you can tell from the previous slides, there a lot of queries and such, but by using the distinct symptoms, say like cough applies to cold and flu, that will be counted twice and not necessarily like ten times since cough was duplicated several times in this table. 00:08:46:09 - 00:09:23:17 Kristine C. And here essentially I'm just sorting out the illnesses that are the slides I gather gathered, gathered and it counts how many times each lady or each illness had occurred. And the excuse me when after this user submitted their symptoms and it calculates how many symptoms that they said yes to, this essentially counts, how many times that particular illness was accounted for from those submitted symptoms. 00:09:23:22 - 00:09:56:22 Kristine C. So, for instance, say like based on how many times cough was or how many times the symptoms that correlated to cough were counted, that means her cold was counted. That means colds kind of three times or flu is counted three times. Their excuse me get nervous right now from here, we're essentially just printing out the names of the symptoms that the user had. 00:09:57:07 - 00:10:35:05 Kristine C. This particular slide was going to be used for the history functionality, which unfortunately I was not able to implement. So essentially what would have happened if we were able to get this functionality partnered would have been where if the user had gone to their history profile, they would be able to see the list of symptoms that they had said yes to in previous quiz attempts, and that would be stored in their account every time that they submit a quiz. 00:10:35:17 - 00:10:44:00 Kristine C. So if I see here, I go to go and switch over to to. 00:10:45:16 - 00:10:48:21 Jesus R. See. 00:10:48:21 - 00:11:22:17 Kristine C. See, see? Oh, to here right now. I currently have the older UI set up where it has this pinkish color. So if I click on say like yes, overweight is sleep deprived. No, no high body fat, no insomnia to snore loudly. It doesn't have to be all the questions submitted, but essentially any list of them I could say yes or no to, I hit submit. 00:11:23:10 - 00:11:54:18 Kristine C. It refreshes the entire page at the very bottom based on the amount of symptoms selected. Yes, to 50% of those symptoms that I had selected applied to the illness, obesity. And that illness ID for obesity is 13. And Joan at the bottom would have been the list of symptoms that had counted towards the user and this would have been stored in the user table. 00:11:54:18 - 00:12:25:20 Kristine C. So, for instance, if I have here the tables we have J test J test three myself. So if I say describe this currently right now the empty since I wasn't able to pass these results over successfully, but if I describe this, it would show the test ID which would have been like, Oh, this is your first test, second test, third test, etc. And another algorithm that I was able to implement would have been calculating the top three results. 00:12:26:13 - 00:12:46:14 Kristine C. So in the meantime, I created a first or first illness first percentage, second illness and so forth. And so I'll go ahead and passes over to the next person. 00:12:46:14 - 00:13:15:09 Jesus R. Hello, my name is Jesus Rojas, so I want to take a little break in our implementation and talk about how we were responsible in managing our files in this nice website project that we know we had going. Essentially, we hosted our gate repository on GitHub or GitHub. Repository link can be shown in the yellow text. Our policies are like any other normal where it was a little bit more lenient. 00:13:15:09 - 00:13:42:18 Jesus R. We for pushing to the main branch. We wanted our team members to have a working code to be in order. There have been times where one code could affect other people's code, but we quickly resolved with that with some good time speaking on such as discord and other message intermediaries to get things going with this, our code had to be written in the chain or style, so to speak. 00:13:43:01 - 00:14:05:01 Jesus R. With this, we were all encouraged to set up our own branch, merge accordingly. I'll take you through our repo and just a little bit just to navigate how that is going as well. Currently, I am the one that created the GitHub repository. With this. I oversaw Paul Merges and all that sort just to merge to see what files were going in and out. 00:14:05:12 - 00:14:36:00 Jesus R. And with this currently our visibility for the GitHub repository is private at the moment, but we do plan to change that towards the end of the semester, end of May 2023. As with this future development, as time crunches and all where we could implement some features, we do want to keep this going in the future because it's a great website that if we plan accordingly a little bit more, we can get things going with that. 00:14:36:00 - 00:14:59:05 Jesus R. With this, I'll take you to the user login page and in a little bit I'll take you through the GitHub and the actual website. So we can navigate altogether. Well, a little bit of the login page, we decided to give user access to what they can. So essentially when the users log in, we check for the username just to be sure they're not already logged. 00:14:59:20 - 00:15:26:21 Jesus R. They're not if they don't even have an account created yet. We always double check that. And if there's no username or in this case there is one we check if it's if the password is good against their hash password that we have implement inside the database. Therefore we have the session active once they're logged in and we reject any bad username and or password and we indicate that as well. 00:15:27:02 - 00:16:00:15 Jesus R. Just to make sure we don't have any SQL injections, other vulnerabilities that may come forth, we like to be responsible with this. We take a step with the user registration. Originally, I create this website by using the resources of Dr. Nick Twin. I based our registered page against a file that he was using for his Tempus database course in that sense, where features were added by Christine later on. 00:16:00:22 - 00:16:27:18 Jesus R. So as she mentioned earlier as well for the unique user tables as allows, when an account is registered, it will be registered in the user table with among those values such as first name, last name, email, and that will be shown in a little bit once we go to the website. How actually looks, of course, with this I'll just demonstrate how our GitHub is running. 00:16:28:01 - 00:16:50:19 Jesus R. As you can see on the main page, we don't have all the files presented. When I created this, I assumed that we would have different files everywhere, so therefore that's why we created a website folder just to show what's actually in here. Here. This is where most of our files for the website are coming from. We go back one. 00:16:50:19 - 00:17:23:03 Jesus R. We do have a quick temporary file folder for temporary files. This one was made last minute, but it shouldn't be too much to look at. Of course. And just a text file for insert statements that we had earlier on with this. Let me show you our actual website. So this is the final look. We are in index H command to the front page, as they say, not the home page, but the home of the index page, so to speak. 00:17:23:13 - 00:18:12:06 Jesus R. I will show the first option of take our health scan. This is a button that you can click on and it should show the final current look of the health scan. As Christine was mentioning earlier, and this is where it's a little bit more polished to look with this, we can start back and then I'll take you to the about page, because when you want to send a message to anyone who actually visits our website, this this since this is live on Artemus with this we provide a contact page not to contact the team members directly, but to show what they have been doing in this project, such as front end and back in development. 00:18:12:18 - 00:18:39:12 Jesus R. With this to the right, we have a good login button that takes us to a login. If you're now registered user, this is where the registered PHP page comes in handy. Therefore you can put in your first name, last name, email, address, username and password, and a disclaimer at the end as for our website does indicate for health scanning, it's only meant to be used as a guide, not so much to replace a doctor and or nurse practitioner. 00:18:40:02 - 00:19:15:11 Jesus R. And let me just show how the logging could work. In this sense I put in my name for purposes will use a old email that I had just for the sign up will hit enter and our account is made. This one could work. If not, let me try one more time just to be sure. As we do our testing, we may have used other user names. 00:19:15:11 - 00:20:02:06 Jesus R. Of course. I know I'm just typing in a password. We'll here register one more time and therefore. But down below it does show echo segments of your your own table being created that would be used to save information as well. Now we'll go back in to the log in for this one. Go here. And then just for reference, we do have a guest user option where we click this. 00:20:02:06 - 00:20:29:03 Jesus R. It'll take us to the link that was earlier where it says take our health scan or try to log in and then it takes us to our homepage. At the moment we have it where it echoes your username. Our account button just takes us back to the home page. We do have old tests. If we click on this, it will take us to a maintenance page as we want to implement a history portion, as my colleague Christine said earlier. 00:20:29:12 - 00:21:08:16 Jesus R. But due to time constraints, we did not make it to that time. But nevertheless, we can go to new tests and this is where the actual full scan is at again. And just to try this one more time or just click a few options and it will show us our results like indicated earlier, we can start over and we'll go back to accounts and then we have the option to log out the user. 00:21:08:16 - 00:21:37:02 Julius F. And that takes us right back to the login screen and that is it for my portion. Let me hand it off to the next person as well. Hi, I am Julius. Am I here? My call is unfortunately not here. He is the first other person who worked on the tape, mostly the back end. So me and Michael very mostly worked on the back end. 00:21:37:02 - 00:22:17:13 Julius F. We set up the database on the item a cigaret cube, and we use re IDB as the database management system. We essentially created the foundation of the database that the website uses to get its data. So it basically contains users as patients as well as a number of illnesses common in Kern County. Me and Michael would research on using Medline, Gov or Medline plus stack us to search for illnesses and then cross-reference them with other symptoms that that. 00:22:18:09 - 00:23:01:02 Julius F. Here's an example of some of the illnesses. We would also have a table of symptoms which is this, and we would also have the relation between those two as many symptoms or many illnesses have the same symptoms and different symptoms. And this is the relation between that and this is how this table is also where we connect the questions on the web page with the symptoms that Augustine's code uses. 00:23:01:02 - 00:23:13:01 Julius F. And I also worked on the air with Michael, which is officially not here, but we do have a recording of has to play that. 00:23:20:04 - 00:23:52:22 Michael E. Our group want to look into implementing an air to our project. The idea behind this is the possibility of further optimizing a wellness checker, for example, increasing the accuracy of illness predictions. So Julius and I were tasked with looking into it. We did. We discussed building the and optimize way, but with the focus being on making it easily adjustable to add additional data sets or features like age, sex and density, and possibly changing the questionnaire to include other response selections besides yes or no answers to symptoms. 00:23:52:22 - 00:24:25:15 Michael E. Asked because this would further refine our results, making our predictions accuracy increase. After initial discussions, we decided on a feed for neural network with an input layer to handle layers and output layer. There would be two activation functions, and if you read the you is used in the hand layers that perform nine linearly and an soc max classification function and the output layer converts to data passed through the thin layer through the upper layer into a distributed probability. 00:24:26:12 - 00:25:01:05 Michael E. Next, we started working to build the last function. We decided on using a cross entropy loss function since we wanted the possibility of predicting not only the illness based on the symptoms, but potentially multiple different illnesses based on a multitude of symptoms. However, time ran short and we were not able to finish the project, but we were able to test and confirm the first part of the I worked having it take in sample data, converted non linearly, then distribute it into a probability for our future. 00:25:01:05 - 00:25:28:11 Michael E. With the API, we would need to fix the loss function and other bugs that are currently happening in the code. We'd also need a one hot vector on the output for seeing which illness was more most likely if we were not making changes. But since we are looking more towards multiple illnesses based off multiple multitude of symptoms, we think creating and using a multiclass label instead of one hot would be better for the ultimate scenario. 00:25:28:11 - 00:25:31:11 Michael E. We are looking at. 00:25:31:11 - 00:25:33:06 Julius F. And that's the end of Michael's question. 00:25:35:07 - 00:25:48:23 Sandra M. Okay. Well, in that case, I believe that concludes our general demo. Thank you so much and thank you for the semester. Dr. Cheeseman. And yeah, that's pretty much it. Thank you.