cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Mike_N
Helper I
Helper I

Gallery, collection, and updating a SharePoint list

So I've looked everywhere, watched all the YouTubes, etc and can't figure this one out.  I have a gallery that is populated by a collection.  When I'm just viewing a record, it works great.  The problem is when I want to add a new record or records (multiple lines of vital signs).  I'm struggling with creating a blank collection, adding data to it from the gallery, and then getting that in to the SharePoint list.  

Below is my list:

Mike_N_0-1612469699478.png

When I am creating a new patient record, I create my "blank" collection with the following (Vitals is the name of my list in SP:

ClearCollect(colVitalsFormData, Defaults(Vitals));
ClearCollect(colTest, AddColumns(colVitalsFormData, "GalID", 1));

 

And I get this collection:

Mike_N_3-1612470351863.png

 

 

And then I populate my gallery with colTest and it shows one blank line like this:

Mike_N_2-1612470070089.png

 

Per another example on the interwebs, I use GalID to help determine where the Add button is with this:

 

If( 
    !IsEmpty(colTest),
    If(
        ThisItem.GalID = Last(colTest).GalID,
//determine if i'm editing or just viewing
        If(varFormMode = FormMode.Edit,
        true,
        false)
    )
   ) 

 



The onSelect of my Add button tries to patch the collection and update the GalID.  But it's been through so many changes, it doesn't work and I can't even remember what what kind of working before.

Patch(colTest, ThisItem, {GalID: ThisItem.GalID +1})

 

And finally I have a button at the bottom that should save every thing to the list but of course I can't get that working because I can't get the collection updated.   I currently have the below code on my save button (varPatientID is created on another page when I add a new record to my patient table:

Patch(Vitals, colVitalsFormData, {Patient_ID: varPatient_ID})

 

I know this has been done...probably by a lot of people but I can't figure it out or find an example on the web.  Can anyone help me figure this out??

 

Thanks!

1 ACCEPTED SOLUTION

Accepted Solutions

So I was able to come up with a solution that works.  I created a gallery that just displays the vitals tied to the current patient.  They come from a collection created when an existing patient is selected or a new patient is being entered.  If it's an existing patient, the rows of vitals are displayed with text inputs to add more (edit option coming soon).  If it's a new patient, it's empty and there is a set of text inputs at the bottom with an add button.  The add button takes all the data from the text inputs and adds them to the collection above (the gallery).  From there you can save the page and I use a collect function to dump temp collection to the list on SP.

So it looks like have a solid way to add new records, just need to work on the ability to edit the existing ones.  For anyone that wants to see what I did, it's below.  Thanks again for your help @Drrickryp 


New patient:

Mike_N_0-1612548745983.png  

Existing patient:

Mike_N_1-1612548800111.png

 

Add button:

Collect(
    colVitalsScreenData,
    {
        Time: TextInput_Time.Text,
        Pulse: TextInput_Pulse.Text,
        RR_x002f_Sounds: TextInput_RR.Text,
        B_x002f_P: TextInput_BP.Text,
        Pupils: TextInput_Pupils.Text,
        SPO2_x002f_Temp: TextInput_SPO2.Text,
        BGL: TextInput_BGL.Text,
        Monitor: TextInput_Monitor.Text,
        Treatment_x002f_Meds: TextInput_TxMed.Text,
        Patient_ID: varPatient_ID
    }
);

Reset(TextInput_Time);
Reset(TextInput_Pulse);
Reset(TextInput_RR);
Reset(TextInput_BP);
Reset(TextInput_Pupils);
Reset(TextInput_SPO2);
Reset(TextInput_BGL);
Reset(TextInput_Monitor);
Reset(TextInput_TxMed)

 

Save button:

Collect(Vitals, colVitalsScreenData);
Navigate(NarrativeScreen, ScreenTransition.Fade)

 

View solution in original post

5 REPLIES 5
Drrickryp
Super User
Super User

Hi @Mike_N 

You need to consider that you have at least one, maybe more,  one to many relationships in your list.  Ie. One Patient, many encounters, one encounter, many treatments and many diagnoses. 

If so, you need to make a separate list for each of the many sides.  A simplified model schema for your app would be:_2.jpg

This is the basic model that I use for my practice and have used for 18 years. 

 

 

@Drrickryp I would love to have a backend that would let me do actual relationships like that (that sentence seems like it belongs on a different forum....haha).  I work for the government and what I have available right now is SP lists.  And the way this will be set up, I don't foresee repeat patients and if we do have any, it won't be an issue with having them in the more than once.  I do realize that one patient can/will have multiple "vitals" records.  I am using the ID from my patient list as my unique ID to make my relationships to the other lists.  So the Patient_ID in the Vitals list is how I tie the rows back to individual patients.  So I need to figure out how to get the row or rows from that gallery, into the Vitals list on SP....and that is where I'm stuck. 

I'm trying to recreate a very simple EMS pt care chart (see attached).

Drrickryp
Super User
Super User

@Mike_N 

It really helps to understand the basic principles of database design before creating an app that is more than just a simple table.  I wrote a series of short blog posts to give prospective designers an understanding of the principles and how they are used in PowerApps.  They apply to all databases regardless of whether the data is stored in Excel tables, SharePoint lists, or SQL tables. If you are serious about becoming a PowerApps designer, I strongly recommend that you review them starting here.  https://powerusers.microsoft.com/t5/News-Announcements/Database-Design-Fundamentals-and-PowerApps-An... 

SharePoint has its own intricacies and @WarrenBelz  has put together an excellent blog that discusses what the PowerApps designer should know before starting to build an app. https://www.practicalpowerapps.com/ .  

These two blogs will give you a strong foundation.  Without them you are likely to end up with something like this:Pisa tower.jpg

 

Thanks @Drrickryp, I'll check those out. I actually have a degree in computer info sys and worked in the field....a long time ago before I switched over to law enforcement.  So I have some knowledge it's just a little dated and out of practice.  @WarrenBelz has helped me with another issue related to this project and was super helpful.  I've also watched a lot of @Shanescows videos on YouTube and his site. Either way, I'll keep plugging away and hope I can get something to work for this part.  Thanks again.

So I was able to come up with a solution that works.  I created a gallery that just displays the vitals tied to the current patient.  They come from a collection created when an existing patient is selected or a new patient is being entered.  If it's an existing patient, the rows of vitals are displayed with text inputs to add more (edit option coming soon).  If it's a new patient, it's empty and there is a set of text inputs at the bottom with an add button.  The add button takes all the data from the text inputs and adds them to the collection above (the gallery).  From there you can save the page and I use a collect function to dump temp collection to the list on SP.

So it looks like have a solid way to add new records, just need to work on the ability to edit the existing ones.  For anyone that wants to see what I did, it's below.  Thanks again for your help @Drrickryp 


New patient:

Mike_N_0-1612548745983.png  

Existing patient:

Mike_N_1-1612548800111.png

 

Add button:

Collect(
    colVitalsScreenData,
    {
        Time: TextInput_Time.Text,
        Pulse: TextInput_Pulse.Text,
        RR_x002f_Sounds: TextInput_RR.Text,
        B_x002f_P: TextInput_BP.Text,
        Pupils: TextInput_Pupils.Text,
        SPO2_x002f_Temp: TextInput_SPO2.Text,
        BGL: TextInput_BGL.Text,
        Monitor: TextInput_Monitor.Text,
        Treatment_x002f_Meds: TextInput_TxMed.Text,
        Patient_ID: varPatient_ID
    }
);

Reset(TextInput_Time);
Reset(TextInput_Pulse);
Reset(TextInput_RR);
Reset(TextInput_BP);
Reset(TextInput_Pupils);
Reset(TextInput_SPO2);
Reset(TextInput_BGL);
Reset(TextInput_Monitor);
Reset(TextInput_TxMed)

 

Save button:

Collect(Vitals, colVitalsScreenData);
Navigate(NarrativeScreen, ScreenTransition.Fade)

 

View solution in original post

Helpful resources

Announcements
UG GA Amplification 768x460.png

Launching new user group features

Learn how to create your own user groups today!

Community Connections 768x460.jpg

Community & How To Videos

Check out the new Power Platform Community Connections gallery!

M365 768x460.jpg

Microsoft 365 Collaboration Conference | December 7–9, 2021

Join us, in-person, December 7–9 in Las Vegas, for the largest gathering of the Microsoft community in the world.

Top Solution Authors
Top Kudoed Authors
Users online (2,965)