2

So I am trying to display a table from my db on my web app. however when I run the program, I get all of my data on 1 row instead of lined up in the proper columns. Parts of my HTML and Python code is below. I am using pythonanywhere to launch my web app. Any advice on where I am messing up?

ID.HTML

<table style="margin-left: 20px;">
<!-- Table headers -->
    <th>
         <tr style="color: black; ">

        <th>Last Name</th>
        <th>First Name</th>
        <th>SSN</th>
        <th>MRN</th>
        <th>Age</th>
        <th>Sex</th>
        <th>Incounter Type</th>
        <th>Provider Last Name</th>
        <th>Provider First Name</th>
        <th>Admin Date</th>
        <th>Admin Time</th>
        <th>Hospital</th>
        <th>Floor</th>
        <th>Room</th>
        <th>Bed</th>

        </tr>
    </th>

    <tr>
    {%for patient_id in query%}

    <td>
        {{patient_id.lname}}
     </td>
     <td>
        {{patient_id.fname}}
    </td>
    <td>
        {{patient_id.ssn}}
    </td>
    <td>
        {{patient_id.mrn}}
    </td>
    <td>
        {{patient_id.age}}
    </td>
    <td>
        {{patient_id.sex}}
    </td>
    <td>
        {{patient_id.incounter_type}}
    </td>
    <td>
        {{patient_id.provider_lname}}
    </td>
    <td>
        {{patient_id.provider_fname}}
    </td>
    <td>
        {{patient_id.admin_date}}
    </td>
    <td>
        {{patient_id.admin_time}}
    </td>
    <td>
        {{patient_id.location_hospital}}
    </td>
    <td>
        {{patient_id.location_floor}}
    </td>
    <td>
        {{patient_id.location_room}}
    </td>
    <td>
        {{patient_id.location_bed}}
    </td>
    {%endfor%}
    </tr>
 </table>

flask_app.py

class patient_ID(db.Model):

__tablename__ = "patient_ID"

incounter_types = [('inpatient', 'inpatient'),
               ('outpatient', 'outpatient')
               ]

lname = db.Column(db.String(128))
fname = db.Column(db.String(128))
ssn = db.Column(db.String(9))
mrn = db.Column(db.String(8),primary_key=True)
age = db.Column(db.String(3))
sex = db.Column(db.String(6))
incounter_type = db.Column(db.String(128))#, choices=incounter_types)
provider_lname = db.Column(db.String(128))
provider_fname = db.Column(db.String(128))
admin_date = db.Column(db.String(128))
admin_time = db.Column(db.String(128))
location_hospital = db.Column(db.String(128))
location_floor = db.Column(db.String(3))
location_room = db.Column(db.String(10))
location_bed = db.Column(db.String(1))


@app.route("/Patient_Info/", methods=["GET", "POST"])
@login_required
def patient_info_page():
     if request.method == "GET":
         return render_template("ID.html", query=patient_ID.query.all())

     if not current_user.is_authenticated:
         return redirect(url_for('index'))
     ID = patient_ID(mrn=request.form["mrns"])

     return redirect(url_for('patient_info_page'), query)

1 Answer 1

4

The for loop needs to be outside of the 'tr'-html tags. You want a row for each patient, so write:

{% for patient_id in query %}
<tr>
  <td>
    {{patient_id.lname}}
  </td>
...
</tr>
{% endfor %}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.