diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..e53c39fd5a188bbbb2c2abc2db275cf1aa1827d2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +# Install Images +FROM python:3.10.7-slim + +# Set working directory +WORKDIR /home/app + +# Install packages +RUN apt-get update -y && apt-get upgrade -y + +# Copy all files into working directory +COPY . . + +# Install library +RUN pip3 install -r requirements.txt + +# (OPTIONAL) You can use you own port for expose port +EXPOSE 8000 + +# Run script +CMD ["python", "app.py"] \ No newline at end of file diff --git a/app.py b/app.py new file mode 100644 index 0000000000000000000000000000000000000000..76aab1d62b2bfb1db7e2045931ec2c4e292ddc78 --- /dev/null +++ b/app.py @@ -0,0 +1,961 @@ +import os +import uuid +from datetime import datetime + +from flask import Flask, redirect, render_template, request, session, send_file +from pysondb import db +from copy import deepcopy + +from flask_session import Session + +app = Flask(__name__) +app.config["SESSION_PERMANENT"] = False +app.config["SESSION_TYPE"] = "filesystem" +Session(app) +db_users = db.getDb(os.path.join(os.path.dirname(__file__), "db", "users.json")) +db_users_admin = db.getDb( + os.path.join(os.path.dirname(__file__), "db", "users_admin.json") +) + +rule_table = { + "R01": { + "result": "K02", + "rule": {"P01": True, "P02": True, "P03": True, "P04": True, "P05": True}, + }, + "R02": { + "result": "K02", + "rule": {"P01": True, "P02": True, "P03": True, "P04": True, "P05": False}, + }, + "R03": { + "result": "K02", + "rule": {"P01": True, "P02": True, "P03": True, "P04": False, "P05": True}, + }, + "R04": { + "result": "K02", + "rule": {"P01": True, "P02": True, "P03": False, "P04": True, "P05": True}, + }, + "R05": { + "result": "K02", + "rule": {"P01": True, "P02": False, "P03": True, "P04": True, "P05": True}, + }, + "R06": { + "result": "K01", + "rule": {"P01": False, "P02": True, "P03": True, "P04": True, "P05": True}, + }, + "R07": { + "result": "K02", + "rule": {"P01": True, "P02": True, "P03": True, "P04": False, "P05": False}, + }, + "R08": { + "result": "K02", + "rule": {"P01": True, "P02": True, "P03": False, "P04": False, "P05": True}, + }, + "R09": { + "result": "K02", + "rule": {"P01": True, "P02": True, "P03": False, "P04": True, "P05": False}, + }, + "R10": { + "result": "K02", + "rule": {"P01": True, "P02": False, "P03": False, "P04": True, "P05": True}, + }, + "R11": { + "result": "K01", + "rule": {"P01": False, "P02": True, "P03": False, "P04": True, "P05": True}, + }, + "R12": { + "result": "K01", + "rule": {"P01": False, "P02": False, "P03": True, "P04": True, "P05": True}, + }, + "R13": { + "result": "K01", + "rule": {"P01": False, "P02": True, "P03": True, "P04": True, "P05": False}, + }, + "R14": { + "result": "K02", + "rule": {"P01": True, "P02": False, "P03": True, "P04": False, "P05": True}, + }, + "R15": { + "result": "K02", + "rule": {"P01": True, "P02": False, "P03": True, "P04": True, "P05": False}, + }, + "R16": { + "result": "K01", + "rule": {"P01": False, "P02": True, "P03": True, "P04": False, "P05": True}, + }, + "R17": { + "result": "K02", + "rule": {"P01": True, "P02": True, "P03": False, "P04": False, "P05": False}, + }, + "R18": { + "result": "K02", + "rule": {"P01": True, "P02": False, "P03": False, "P04": False, "P05": True}, + }, + "R19": { + "result": "K01", + "rule": {"P01": False, "P02": False, "P03": False, "P04": True, "P05": True}, + }, + "R20": { + "result": "K02", + "rule": {"P01": True, "P02": False, "P03": True, "P04": False, "P05": False}, + }, + "R21": { + "result": "K01", + "rule": {"P01": False, "P02": True, "P03": False, "P04": True, "P05": False}, + }, + "R22": { + "result": "K01", + "rule": {"P01": False, "P02": True, "P03": False, "P04": True, "P05": False}, + }, + "R23": { + "result": "K01", + "rule": {"P01": False, "P02": False, "P03": True, "P04": False, "P05": True}, + }, + "R24": { + "result": "K01", + "rule": {"P01": False, "P02": False, "P03": True, "P04": True, "P05": False}, + }, + "R25": { + "result": "K02", + "rule": {"P01": True, "P02": False, "P03": False, "P04": True, "P05": False}, + }, + "R26": { + "result": "K01", + "rule": {"P01": False, "P02": True, "P03": False, "P04": False, "P05": True}, + }, + "R27": { + "result": "K01", + "rule": {"P01": False, "P02": False, "P03": False, "P04": False, "P05": True}, + }, + "R28": { + "result": "K01", + "rule": {"P01": False, "P02": False, "P03": False, "P04": True, "P05": False}, + }, + "R29": { + "result": "K01", + "rule": {"P01": False, "P02": False, "P03": True, "P04": False, "P05": False}, + }, + "R30": { + "result": "K01", + "rule": {"P01": False, "P02": True, "P03": False, "P04": False, "P05": False}, + }, + "R31": { + "result": "K01", + "rule": {"P01": True, "P02": False, "P03": False, "P04": False, "P05": False}, + }, + "R32": { + "result": "K01", + "rule": {"P01": False, "P02": False, "P03": False, "P04": False, "P05": False}, + }, +} +result_table = { + "K01": { + "detail": "Obesitas Primer", + "cause": ( + "faktor genetika / turunan", + "faktor aktivitas", + "faktor pola makan", + "faktor psikis", + ), + "solution": "Kenaikan berat badan diperlambat, Diet seimbang, makan dengan porsi kecil, hindari makanan dengan kalori tinggi, melakukan aktivitas fisik, dan kurangi menonton tv", + }, + "K02": { + "detail": "Obesitas Sekunder", + "cause": ("faktor kesehatan",), + "solution": "Pergi ke Dokter tentang penyakit anak anda lalu kenaikan berat badan harus diperlambat, Diet seimbang, makan dengan porsi kecil, hindari makanan yang tinggi kalori, melakukan aktivitas fisik, dan kurangi menonton tv", + }, +} + +@app.route("/", methods=("GET",)) +def index(): + return render_template("index.html") + +@app.route("/logout", methods=("GET",)) +def logout(): + session["user_session_data"] = None + return redirect("/") + +@app.route("/login", methods=("GET", "POST")) +def login(): + if session.get("user_session_data") is not None: + return redirect("/dashboard") + if request.method == "POST": + username = request.form["username"] + password = request.form["password"] + data_users_admin = db_users_admin.getAll() + login_success = False + for user_admin in data_users_admin: + if ( + username == user_admin["username"] + and password == user_admin["password"] + ): + user_session_data = deepcopy(user_admin) + user_session_data.pop("password") + session["user_session_data"] = user_session_data + login_success = True + if user_admin["role"] in ("admin", "kepala"): + return redirect("/dashboard") + else: + return redirect("/dashboard-layout-data-anak") + + if not login_success: + return render_template( + "login.html", error="Invalid username or password" + ) + + return render_template("login.html") + +@app.route("/balita/", methods=("GET",)) +def balita(uuid_balita): + if session.get("user_session_data") is None: + return redirect("/login") + + data_balita = db_users.getBy({"uuid": uuid_balita})[0] + nama_lengkap = data_balita["nama_lengkap"] + usia_dalam_bentuk_bulan = data_balita["usia_dalam_bentuk_bulan"] + tanggal_lahir = data_balita["tanggal_lahir"] + jenis_kelamin = data_balita["jenis_kelamin"] + berat_badan_dalam_bentuk_kg = data_balita["berat_badan_dalam_bentuk_kg"] + tinggi_badan_dalam_bentuk_cm = data_balita["tinggi_badan_dalam_bentuk_cm"] + imt = data_balita["imt"] + detail_konklusi = data_balita["detail_konklusi"] if isinstance(data_balita["detail_konklusi"], str) else data_balita["detail_konklusi"][0] + cause_konklusi = data_balita["cause_konklusi"] + solusi_konklusi = data_balita["solusi_konklusi"] + return render_template( + "card.html", + nama_lengkap=nama_lengkap, + usia_dalam_bentuk_bulan=usia_dalam_bentuk_bulan, + tanggal_lahir=tanggal_lahir, + jenis_kelamin=jenis_kelamin, + berat_badan_dalam_bentuk_kg=berat_badan_dalam_bentuk_kg, + tinggi_badan_dalam_bentuk_cm=tinggi_badan_dalam_bentuk_cm, + imt=imt, + detail_konklusi=detail_konklusi, + cause_konklusi=cause_konklusi, + solusi_konklusi=solusi_konklusi, + ) + +@app.route("/delete-balita/", methods=("GET",)) +def delete_balita(uuid_balita): + if session.get("user_session_data") is None: + return redirect("/login") + + + if session.get("user_session_data").get("role") == "admin": + return redirect("/dashboard") + + return redirect("/dashboard-layout-data-anak") + + db_users.deleteById(uuid_balita) + return redirect( + "/dashboard-layout-data-anak", + ) + +@app.route("/update-balita/", methods=("GET", "POST")) +def update_balita(id_balita): + if session.get("user_session_data") is None: + return redirect("/") + + + if request.method == "GET": + data_balita = db_users.getBy({"id": int(id_balita)})[0] + nama_lengkap = data_balita["nama_lengkap"] + usia_dalam_bentuk_bulan = data_balita["usia_dalam_bentuk_bulan"] + tanggal_lahir = data_balita["tanggal_lahir"] + jenis_kelamin = data_balita["jenis_kelamin"] + berat_badan_dalam_bentuk_kg = data_balita["berat_badan_dalam_bentuk_kg"] + tinggi_badan_dalam_bentuk_cm = data_balita["tinggi_badan_dalam_bentuk_cm"] + return render_template( + "dashboard-update-data-anak.html", + nama_lengkap=nama_lengkap, + usia_dalam_bentuk_bulan=usia_dalam_bentuk_bulan, + tanggal_lahir=tanggal_lahir, + jenis_kelamin=jenis_kelamin, + berat_badan_dalam_bentuk_kg=berat_badan_dalam_bentuk_kg, + tinggi_badan_dalam_bentuk_cm=tinggi_badan_dalam_bentuk_cm, + role=session.get("user_session_data").get("role").title(), + name=session.get("user_session_data").get("name").title(), + username=session.get("user_session_data").get("username"), + ) + elif request.method == "POST": + data_balita = db_users.getBy({"id": int(id_balita)})[0] + data_balita_uuid = data_balita["uuid"] + nama_lengkap = request.form["nama-lengkap"] + usia_dalam_bentuk_bulan = request.form["usia-dalam-bentuk-bulan"] + tanggal_lahir = datetime.strptime( + request.form["tanggal-lahir"], "%Y-%m-%d" + ).strftime("%Y-%m-%d") + jenis_kelamin = request.form["jenis-kelamin"] + berat_badan_dalam_bentuk_kg = request.form[ + "berat-badan-dalam-bentuk-kg" + ] + tinggi_badan_dalam_bentuk_cm = request.form[ + "tinggi-badan-dalam-bentuk-cm" + ] + imt = ( + float(berat_badan_dalam_bentuk_kg) + / (float(tinggi_badan_dalam_bentuk_cm) / 100) ** 2 + ) + datetime_now = datetime.now().strftime("%Y-%m-%d") + db_users.updateById( id_balita, + { + "nama_lengkap": nama_lengkap, + "usia_dalam_bentuk_bulan": usia_dalam_bentuk_bulan, + "tanggal_lahir": tanggal_lahir, + "jenis_kelamin": jenis_kelamin, + "berat_badan_dalam_bentuk_kg": berat_badan_dalam_bentuk_kg, + "tinggi_badan_dalam_bentuk_cm": tinggi_badan_dalam_bentuk_cm, + "tanggal_edit": datetime_now, + } + ) + return redirect("/balita/" + data_balita_uuid) + +@app.route("/test-obesitas/", methods=("GET", "POST")) +def test_obesitas(id_balita): + if session.get("user_session_data") is None: + return redirect("/") + + if session.get("user_session_data").get("role") == "kepala" or \ + session.get("user_session_data").get("role") == "kader": + + if session.get("user_session_data").get("role") == "kepala": + return redirect("/dashboard") + return redirect("/input-data-anak") + + if request.method == "GET": + data_balita = db_users.getBy({"uuid": id_balita}) + P01 = True if data_balita[0].get("P01") in [None, "ya", "YA", "Ya", "yA"] else False + P02 = True if data_balita[0].get("P02") in [None, "ya", "YA", "Ya", "yA"] else False + P03 = True if data_balita[0].get("P03") in [None, "ya", "YA", "Ya", "yA"] else False + P04 = True if data_balita[0].get("P04") in [None, "ya", "YA", "Ya", "yA"] else False + P05 = True if data_balita[0].get("P05") in [None, "ya", "YA", "Ya", "yA"] else False + + return render_template( + "dashboard-test-obesitas.html", + p01=P01, + p02=P02, + p03=P03, + p04=P04, + p05=P05, + role=session.get("user_session_data").get("role").title(), + name=session.get("user_session_data").get("name").title(), + username=session.get("user_session_data").get("username"), + ) + + elif request.method == "POST": + data_balita = db_users.getBy({"uuid": id_balita}) + P01 = True if request.form["P01"] in [None, "ya", "YA", "Ya", "yA"] else False + P02 = True if request.form["P02"] in [None, "ya", "YA", "Ya", "yA"] else False + P03 = True if request.form["P03"] in [None, "ya", "YA", "Ya", "yA"] else False + P04 = True if request.form["P04"] in [None, "ya", "YA", "Ya", "yA"] else False + P05 = True if request.form["P05"] in [None, "ya", "YA", "Ya", "yA"] else False + for keys_rule, _ in rule_table.items(): + if ( + rule_table[keys_rule]["rule"]["P01"] == P01 + and rule_table[keys_rule]["rule"]["P02"] == P02 + and rule_table[keys_rule]["rule"]["P03"] == P03 + and rule_table[keys_rule]["rule"]["P04"] == P04 + and rule_table[keys_rule]["rule"]["P05"] == P05 + ): + nama_lengkap = data_balita[0]["nama_lengkap"] + usia_dalam_bentuk_bulan = data_balita[0]["usia_dalam_bentuk_bulan"] + tanggal_lahir = data_balita[0]["tanggal_lahir"] + jenis_kelamin = data_balita[0]["jenis_kelamin"] + berat_badan_dalam_bentuk_kg = data_balita[0][ + "berat_badan_dalam_bentuk_kg" + ] + tinggi_badan_dalam_bentuk_cm = data_balita[0][ + "tinggi_badan_dalam_bentuk_cm" + ] + imt = data_balita[0]["imt"] + detail_konklusi = ( + result_table[rule_table[keys_rule]["result"]]["detail"], + ) + cause_konklusi = [] + if P01: + cause_konklusi.append(result_table["K02"]["cause"][0]) + if P02: + cause_konklusi.append(result_table["K01"]["cause"][0]) + if P03: + cause_konklusi.append(result_table["K01"]["cause"][1]) + if P04: + cause_konklusi.append(result_table["K01"]["cause"][2]) + if P05: + cause_konklusi.append(result_table["K01"]["cause"][3]) + + solusi_konklusi = "" + if all([P01]): + solusi_konklusi += "Periksa ke dokter tentang penyakit anak anda." + if all([P02, P03, P04]): + solusi_konklusi += " Kenaikan berat badan diperlambat, Diet seimbang, makan dengan porsi kecil, hindari makanan dengan kalori tinggi, melakukan aktivitas fisik, dan kurangi menonton tv." + if all([P05]): + solusi_konklusi += " Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food." + uuid_id = data_balita[0]["uuid"] + datetime_now = datetime.now().strftime("%Y-%m-%d") + db_users.updateById(data_balita[0]["id"], + { + "uuid": uuid_id, + "nama_lengkap": nama_lengkap, + "usia_dalam_bentuk_bulan": usia_dalam_bentuk_bulan, + "tanggal_lahir": tanggal_lahir, + "jenis_kelamin": jenis_kelamin, + "berat_badan_dalam_bentuk_kg": berat_badan_dalam_bentuk_kg, + "tinggi_badan_dalam_bentuk_cm": tinggi_badan_dalam_bentuk_cm, + "imt": imt, + "detail_konklusi": detail_konklusi, + "solusi_konklusi": solusi_konklusi, + "cause_konklusi": cause_konklusi, + "tanggal_periksa": data_balita[0]["tanggal_periksa"], + "tanggal_edit": datetime_now, + "p01": P01, + "p02": P02, + "p03": P03, + "p04": P04, + "p05": P05, + } + ) + return redirect("/balita/" + uuid_id) + +@app.route("/dashboard", methods=("GET",)) +def dashboard(): + if session.get("user_session_data") is None: + return redirect("/login") + + if session.get("user_session_data").get("role") == "kader" or \ + session.get("user_session_data").get("role") == "bidan": + + return redirect("/dashboard-layout-data-anak") + + data_users = db_users.getAll() + total_data_balita_laki_laki = len(list(filter(lambda x: x["jenis_kelamin"] == "Laki-Laki", data_users))) + total_data_balita_perempuan = len(list(filter(lambda x: x["jenis_kelamin"] == "Perempuan", data_users))) + data_tanggal_periksa = {} + for data in data_users: + tanggal_periksa = data["tanggal_periksa"][0] + tanggal_periksa_split = tanggal_periksa.split("-") + if tanggal_periksa_split[0] not in data_tanggal_periksa: + data_tanggal_periksa[tanggal_periksa_split[0]] = {} + if tanggal_periksa_split[1] not in data_tanggal_periksa[tanggal_periksa_split[0]]: + data_tanggal_periksa[tanggal_periksa_split[0]][tanggal_periksa_split[1]] = 0 + data_tanggal_periksa[tanggal_periksa_split[0]][tanggal_periksa_split[1]] += 1 + return render_template( + "dashboard-index.html", + role=session.get("user_session_data").get("role").title(), + name=session.get("user_session_data").get("name").title(), + username=session.get("user_session_data").get("username"), + total_data_balita_laki_laki=total_data_balita_laki_laki, + total_data_balita_perempuan=total_data_balita_perempuan, + data_tanggal_periksa=data_tanggal_periksa, + ) + +@app.route("/dashboard-layout-kategori", methods=("GET",)) +def dashboard_layout_kategori(): + if session.get("user_session_data") is None: + return redirect("/login") + + data_users = db_users.getAll() + cause_konklusi = [] + for data in data_users: + if data["jenis_kelamin"] == "Laki-Laki": + cause_konklusi.extend(data['cause_konklusi'] if isinstance(data['cause_konklusi'], list) else [data['cause_konklusi']]) + cause_konklusi = tuple(set(cause_konklusi)) + total_cause_konklusi = [] + for konklusi in cause_konklusi: + data = len([data for data in data_users if konklusi in data['cause_konklusi'] and data["jenis_kelamin"] == "Laki-Laki"]) + total_cause_konklusi.append(data) + + cause_konklusi_p = [] + for data in data_users: + if data["jenis_kelamin"] == "Perempuan": + cause_konklusi_p.extend(data['cause_konklusi'] if isinstance(data['cause_konklusi'], list) else [data['cause_konklusi']]) + cause_konklusi_p = tuple(set(cause_konklusi_p)) + total_cause_konklusi_p = [] + for konklusi in cause_konklusi_p: + data = len([data for data in data_users if konklusi in data['cause_konklusi'] and data["jenis_kelamin"] == "Perempuan"]) + total_cause_konklusi_p.append(data) + + return render_template( + "dashboard-layout-kategori.html", + cause_konklusi=cause_konklusi, + total_cause_konklusi=total_cause_konklusi, + cause_konklusi_p=cause_konklusi_p, + total_cause_konklusi_p=total_cause_konklusi_p, + role=session.get("user_session_data").get("role").title(), + name=session.get("user_session_data").get("name").title(), + username=session.get("user_session_data").get("username") + ) + +@app.route("/dashboard-layout-data-anak", methods=("GET", "POST")) +def dashboard_layout_data_anak(): + if session.get("user_session_data") is None: + return redirect("/login") + + if request.method == "GET": + data_users = db_users.getAll() + return render_template( + "dashboard-layout-data-anak.html", + username=session.get("user_session_data").get("username"), + role=session.get("user_session_data").get("role").title(), + name=session.get("user_session_data").get("name").title(), + data_users=data_users + ) + elif request.method == "POST": + data_users = db_users.getAll() + data_users = [data for data in data_users if request.form["cari-anak"].lower() in data["nama_lengkap"].lower()] + return render_template( + "dashboard-layout-data-anak.html", + data_users=data_users, + role=session.get("user_session_data").get("role").title(), + name=session.get("user_session_data").get("name").title(), + username=session.get("user_session_data").get("username") + ) + +@app.route("/dashboard-layout-data-anak-export-csv", methods=("POST",)) +def dashboard_layout_data_anak_export_csv(): + if session.get("user_session_data") is None: + return redirect("/login") + + data_users = db_users.getAll() + with open("export.csv", "w") as f: + f.write("nama_lengkap,usia,tanggal_lahir,jenis_kelamin,berat_badan (kg),tinggi_badan (cm),imt,detail_konklusi\n") + for data in data_users: + detail_konklusi = data["detail_konklusi"] + if detail_konklusi: + detail_konklusi = detail_konklusi[0].replace("[", "").replace("]", "") + f.write( + f"{data['nama_lengkap']},{data['usia_dalam_bentuk_bulan']},{data['tanggal_lahir']},{data['jenis_kelamin']},{data['berat_badan_dalam_bentuk_kg']},{data['tinggi_badan_dalam_bentuk_cm']},{data['imt']},{detail_konklusi}\n" + ) + return send_file("./export.csv", as_attachment=True) + +@app.route("/dashboard-input-data-anak", methods=("GET", "POST")) +def dashboard_input_data_anak(): + if session.get("user_session_data") is None: + return redirect("/login") + + if session.get("user_session_data").get("role") == "kepala": + return redirect("/dashboard") + + if request.method == "POST": + nama_lengkap = request.form["nama-lengkap"] + usia_dalam_bentuk_bulan = request.form["usia-dalam-bentuk-bulan"] + tanggal_lahir = datetime.strptime( + request.form["tanggal-lahir"], "%Y-%m-%d" + ).strftime("%Y-%m-%d") + jenis_kelamin = request.form["jenis-kelamin"] + berat_badan_dalam_bentuk_kg = request.form[ + "berat-badan-dalam-bentuk-kg" + ] + tinggi_badan_dalam_bentuk_cm = request.form[ + "tinggi-badan-dalam-bentuk-cm" + ] + imt = int(( + float(berat_badan_dalam_bentuk_kg) + / (float(tinggi_badan_dalam_bentuk_cm) / 100) ** 2 + )) + uuid_id = uuid.uuid4().hex + datetime_now = datetime.now().strftime("%Y-%m-%d"), + db_users.add( + { + "uuid": uuid_id, + "nama_lengkap": nama_lengkap, + "usia_dalam_bentuk_bulan": usia_dalam_bentuk_bulan, + "tanggal_lahir": tanggal_lahir, + "jenis_kelamin": jenis_kelamin, + "berat_badan_dalam_bentuk_kg": berat_badan_dalam_bentuk_kg, + "tinggi_badan_dalam_bentuk_cm": tinggi_badan_dalam_bentuk_cm, + "imt": imt, + "detail_konklusi": "Belum Periksa", + "solusi_konklusi": "Belum Periksa", + "cause_konklusi": "Belum Periksa", + "tanggal_periksa": datetime_now, + "tanggal_edit": datetime_now, + "p01": "Belum Periksa", + "p02": "Belum Periksa", + "p03": "Belum Periksa", + "p04": "Belum Periksa", + "p05": "Belum Periksa", + } + ) + return redirect("/balita/" + uuid_id) + + return render_template( + "dashboard-input-data-anak.html", + role=session.get("user_session_data").get("role").title(), + name=session.get("user_session_data").get("name").title(), + username=session.get("user_session_data").get("username"), + ) + +@app.route("/dashboard-input-data-kepala", methods=("GET", "POST")) +def dashboard_input_data_kepala(): + if session.get("user_session_data") is None: + return redirect("/login") + + if session.get("user_session_data").get("role") == "kader" or \ + session.get("user_session_data").get("role") == "bidan": + + return redirect("/dashboard-layout-data-anak") + + if request.method == "POST": + data_admin = db_users_admin.getAll() + data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")] + id_data = data_admin[0]["id"] + nama_lengkap = request.form["nama-lengkap"] + tanggal_lahir = datetime.strptime( + request.form["tanggal-lahir"], "%Y-%m-%d" + ).strftime("%Y-%m-%d") + jenis_kelamin = request.form["jenis-kelamin"] + alamat = request.form["alamat"] + username = request.form["username"] + password = request.form["password"] + db_users_admin.updateById(id_data, { + "name": nama_lengkap, + "tanggal_lahir": tanggal_lahir, + "jenis_kelamin": jenis_kelamin, + "alamat": alamat, + "username": username, + "password": password, + }) + data_admin = db_users_admin.getAll() + data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")] + return render_template( + "dashboard-input-data-kepala.html", + role=session.get("user_session_data").get("role").title(), + name_tampil=session.get("user_session_data").get("name").title(), + nama_lengkap=data_admin[0]["name"], + tanggal_lahir=data_admin[0]["tanggal_lahir"], + jenis_kelamin=data_admin[0]["jenis_kelamin"], + alamat=data_admin[0]["alamat"], + username=data_admin[0]["username"], + password=data_admin[0]["password"], + success="Berhasil Update Akun" + ) + + elif request.method == "GET": + data_admin = db_users_admin.getAll() + data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")] + + return render_template( + "dashboard-input-data-kepala.html", + role=session.get("user_session_data").get("role").title(), + name_tampil=session.get("user_session_data").get("name").title(), + nama_lengkap=data_admin[0]["name"], + tanggal_lahir=data_admin[0]["tanggal_lahir"], + jenis_kelamin=data_admin[0]["jenis_kelamin"], + alamat=data_admin[0]["alamat"], + username=data_admin[0]["username"], + password=data_admin[0]["password"], + ) + +@app.route("/dashboard-input-data-bidan", methods=("GET", "POST")) +def dashboard_input_data_bidan(): + if session.get("user_session_data") is None: + return redirect("/login") + + if session.get("user_session_data").get("role") == "kader" or \ + session.get("user_session_data").get("role") == "kepala": + + return redirect("/dashboard-layout-data-anak") + + if request.method == "GET": + data_admin = db_users_admin.getAll() + data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")] + return render_template( + "dashboard-input-data-bidan.html", + role=session.get("user_session_data").get("role").title(), + name_tampil=session.get("user_session_data").get("name").title(), + nama_lengkap=data_admin[0]["name"], + tanggal_lahir=data_admin[0]["tanggal_lahir"], + jenis_kelamin=data_admin[0]["jenis_kelamin"], + alamat=data_admin[0]["alamat"], + username=data_admin[0]["username"], + password=data_admin[0]["password"], + ) + + elif request.method == "POST": + data_admin = db_users_admin.getAll() + data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")] + id_data = data_admin[0]["id"] + nama_lengkap = request.form["nama-lengkap"] + tanggal_lahir = datetime.strptime( + request.form["tanggal-lahir"], "%Y-%m-%d" + ).strftime("%Y-%m-%d") + jenis_kelamin = request.form["jenis-kelamin"] + alamat = request.form["alamat"] + username = request.form["username"] + password = request.form["password"] + db_users_admin.updateById(id_data, { + "name": nama_lengkap, + "tanggal_lahir": tanggal_lahir, + "jenis_kelamin": jenis_kelamin, + "alamat": alamat, + "username": username, + "password": password, + }) + data_admin = db_users_admin.getAll() + data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")] + return render_template( + "dashboard-input-data-bidan.html", + role=session.get("user_session_data").get("role").title(), + name_tampil=session.get("user_session_data").get("name").title(), + nama_lengkap=data_admin[0]["name"], + tanggal_lahir=data_admin[0]["tanggal_lahir"], + jenis_kelamin=data_admin[0]["jenis_kelamin"], + alamat=data_admin[0]["alamat"], + username=data_admin[0]["username"], + password=data_admin[0]["password"], + success="Berhasil Update Akun" + ) + +@app.route("/dashboard-add-data-kepala", methods=("GET", "POST")) +def dashboard_add_data_kepala(): + if session.get("user_session_data") is None: + return redirect("/login") + + if session.get("user_session_data").get("role") == "kader" or \ + session.get("user_session_data").get("role") == "bidan": + + return redirect("/dashboard-layout-data-anak") + + if request.method == "POST": + nama_lengkap = request.form["nama-lengkap"] + tanggal_lahir = datetime.strptime( + request.form["tanggal-lahir"], "%Y-%m-%d" + ).strftime("%Y-%m-%d") + jenis_kelamin = request.form["jenis-kelamin"] + alamat = request.form["alamat"] + username = request.form["username"] + password = request.form["password"] + db_users_admin.add({ + "role": "kepala", + "name": nama_lengkap, + "tanggal_lahir": tanggal_lahir, + "jenis_kelamin": jenis_kelamin, + "alamat": alamat, + "username": username, + "password": password, + }) + return render_template( + "dashboard-add-data-kepala.html", + role=session.get("user_session_data").get("role").title(), + name_tampil=session.get("user_session_data").get("name").title(), + success="Berhasil menambah akun" + ) + + elif request.method == "GET": + return render_template( + "dashboard-add-data-kepala.html", + role=session.get("user_session_data").get("role").title(), + name_tampil=session.get("user_session_data").get("name").title(), + ) + +@app.route("/dashboard-add-data-bidan", methods=("GET", "POST")) +def dashboard_add_data_bidan(): + if session.get("user_session_data") is None: + return redirect("/login") + + if session.get("user_session_data").get("role") == "kader" or \ + session.get("user_session_data").get("role") == "kepala": + + return redirect("/dashboard-layout-data-anak") + + if request.method == "POST": + nama_lengkap = request.form["nama-lengkap"] + tanggal_lahir = datetime.strptime( + request.form["tanggal-lahir"], "%Y-%m-%d" + ).strftime("%Y-%m-%d") + jenis_kelamin = request.form["jenis-kelamin"] + alamat = request.form["alamat"] + username = request.form["username"] + password = request.form["password"] + db_users_admin.add({ + "role": "bidan", + "name": nama_lengkap, + "tanggal_lahir": tanggal_lahir, + "jenis_kelamin": jenis_kelamin, + "alamat": alamat, + "username": username, + "password": password, + }) + return render_template( + "dashboard-add-data-bidan.html", + role=session.get("user_session_data").get("role").title(), + name_tampil=session.get("user_session_data").get("name").title(), + success="Berhasil menambah akun" + ) + + elif request.method == "GET": + return render_template( + "dashboard-add-data-bidan.html", + role=session.get("user_session_data").get("role").title(), + name_tampil=session.get("user_session_data").get("name").title(), + ) + +@app.route("/dashboard-input-data-admin", methods=("GET", "POST")) +def dashboard_input_data_admin(): + if session.get("user_session_data") is None: + return redirect("/login") + + if session.get("user_session_data").get("role") == "kader" or \ + session.get("user_session_data").get("role") == "kepala" or \ + session.get("user_session_data").get("role") == "bidan": + + if session.get("user_session_data").get("role") == "kepala": + return redirect("/dashboard") + + return redirect("/dashboard-layout-data-anak") + + if request.method == "POST": + data_admin = db_users_admin.getAll() + data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")] + id_data = data_admin[0]["id"] + nama_lengkap = request.form["nama-lengkap"] + tanggal_lahir = datetime.strptime( + request.form["tanggal-lahir"], "%Y-%m-%d" + ).strftime("%Y-%m-%d") + jenis_kelamin = request.form["jenis-kelamin"] + alamat = request.form["alamat"] + username = request.form["username"] + password = request.form["password"] + db_users_admin.updateById(id_data, { + "name": nama_lengkap, + "tanggal_lahir": tanggal_lahir, + "jenis_kelamin": jenis_kelamin, + "alamat": alamat, + "username": username, + "password": password, + }) + data_admin = db_users_admin.getAll() + data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")] + return render_template( + "dashboard-input-data-admin.html", + role=session.get("user_session_data").get("role").title(), + name_tampil=session.get("user_session_data").get("name").title(), + nama_lengkap=data_admin[0]["name"], + tanggal_lahir=data_admin[0]["tanggal_lahir"], + jenis_kelamin=data_admin[0]["jenis_kelamin"], + alamat=data_admin[0]["alamat"], + username=data_admin[0]["username"], + password=data_admin[0]["password"], + success="Berhasil Update Akun" + ) + + elif request.method == "GET": + data_admin = db_users_admin.getAll() + data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")] + + return render_template( + "dashboard-input-data-admin.html", + role=session.get("user_session_data").get("role").title(), + name_tampil=session.get("user_session_data").get("name").title(), + nama_lengkap=data_admin[0]["name"], + tanggal_lahir=data_admin[0]["tanggal_lahir"], + jenis_kelamin=data_admin[0]["jenis_kelamin"], + alamat=data_admin[0]["alamat"], + username=data_admin[0]["username"], + password=data_admin[0]["password"], + ) + +@app.route("/dashboard-input-data-kader", methods=("GET", "POST")) +def dashboard_input_data_kader(): + if session.get("user_session_data") is None: + return redirect("/login") + + if session.get("user_session_data").get("role") == "kepala" or \ + session.get("user_session_data").get("role") == "bidan": + + return redirect("/dashboard-layout-data-anak") + + if request.method == "POST": + data_admin = db_users_admin.getAll() + data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")] + id_data = data_admin[0]["id"] + nama_lengkap = request.form["nama-lengkap"] + tanggal_lahir = datetime.strptime( + request.form["tanggal-lahir"], "%Y-%m-%d" + ).strftime("%Y-%m-%d") + jenis_kelamin = request.form["jenis-kelamin"] + alamat = request.form["alamat"] + username = request.form["username"] + password = request.form["password"] + db_users_admin.updateById(id_data, { + "name": nama_lengkap, + "tanggal_lahir": tanggal_lahir, + "jenis_kelamin": jenis_kelamin, + "alamat": alamat, + "username": username, + "password": password, + }) + data_admin = db_users_admin.getAll() + data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")] + return render_template( + "dashboard-input-data-kader.html", + role=session.get("user_session_data").get("role").title(), + name_tampil=session.get("user_session_data").get("name").title(), + nama_lengkap=data_admin[0]["name"], + tanggal_lahir=data_admin[0]["tanggal_lahir"], + jenis_kelamin=data_admin[0]["jenis_kelamin"], + alamat=data_admin[0]["alamat"], + username=data_admin[0]["username"], + password=data_admin[0]["password"], + success="Berhasil Update Akun" + ) + + elif request.method == "GET": + data_admin = db_users_admin.getAll() + data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")] + + return render_template( + "dashboard-input-data-kader.html", + role=session.get("user_session_data").get("role").title(), + name_tampil=session.get("user_session_data").get("name").title(), + nama_lengkap=data_admin[0]["name"], + tanggal_lahir=data_admin[0]["tanggal_lahir"], + jenis_kelamin=data_admin[0]["jenis_kelamin"], + alamat=data_admin[0]["alamat"], + username=data_admin[0]["username"], + password=data_admin[0]["password"], + ) + +@app.route("/dashboard-add-data-kader", methods=("GET", "POST")) +def dashboard_add_data_kader(): + if session.get("user_session_data") is None: + return redirect("/login") + + if session.get("user_session_data").get("role") == "kepala" or \ + session.get("user_session_data").get("role") == "bidan": + + return redirect("/dashboard-layout-data-anak") + + if request.method == "POST": + nama_lengkap = request.form["nama-lengkap"] + tanggal_lahir = datetime.strptime( + request.form["tanggal-lahir"], "%Y-%m-%d" + ).strftime("%Y-%m-%d") + jenis_kelamin = request.form["jenis-kelamin"] + alamat = request.form["alamat"] + username = request.form["username"] + password = request.form["password"] + db_users_admin.add({ + "role": "kader", + "name": nama_lengkap, + "tanggal_lahir": tanggal_lahir, + "jenis_kelamin": jenis_kelamin, + "alamat": alamat, + "username": username, + "password": password, + }) + return render_template( + "dashboard-add-data-kader.html", + role=session.get("user_session_data").get("role").title(), + name_tampil=session.get("user_session_data").get("name").title(), + success="Berhasil menambah akun" + ) + + elif request.method == "GET": + return render_template( + "dashboard-add-data-kader.html", + role=session.get("user_session_data").get("role").title(), + name_tampil=session.get("user_session_data").get("name").title(), + ) + +if __name__ == "__main__": + app.run(host="0.0.0.0", port=8000, debug=True) diff --git a/db/users.json b/db/users.json new file mode 100644 index 0000000000000000000000000000000000000000..0abd25c652c5482eb332c8e08fab0a0f2f3fa6af --- /dev/null +++ b/db/users.json @@ -0,0 +1,1426 @@ +{ + "data": [ + { + "uuid": "f619f56f7b984d43b5f21d41d699bd51", + "nama_lengkap": "Fadli Acmad", + "usia_dalam_bentuk_bulan": "2", + "tanggal_lahir": "2021-04-06", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "13.7", + "tinggi_badan_dalam_bentuk_cm": "95", + "imt": 15, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": " Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor pola makan", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-07" + ], + "tanggal_edit": "2023-07-17", + "p01": false, + "p02": false, + "p03": false, + "p04": true, + "p05": true, + "id": 115570172840878642 + }, + { + "uuid": "6f512b7a72814b94af04d7237b3b437c", + "nama_lengkap": "M Rizky", + "usia_dalam_bentuk_bulan": "2", + "tanggal_lahir": "2021-04-10", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "13.6", + "tinggi_badan_dalam_bentuk_cm": "76", + "imt": 23, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor genetika / turunan" + ], + "tanggal_periksa": [ + "2023-07-07" + ], + "tanggal_edit": "2023-07-07", + "p01": true, + "p02": true, + "p03": false, + "p04": false, + "p05": false, + "id": 273422043806511923 + }, + { + "uuid": "636d2cd539b943dd91ae038958dcfdcf", + "nama_lengkap": "Ratna", + "usia_dalam_bentuk_bulan": "1", + "tanggal_lahir": "2022-01-15", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "15.5", + "tinggi_badan_dalam_bentuk_cm": "85", + "imt": 21, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor genetika / turunan", + "faktor aktivitas" + ], + "tanggal_periksa": [ + "2023-07-07" + ], + "tanggal_edit": "2023-07-12", + "p01": true, + "p02": true, + "p03": true, + "p04": false, + "p05": false, + "id": 222168964568416049 + }, + { + "uuid": "c69cf99e18c6467f9e49c96a3c603efd", + "nama_lengkap": "Kasmirah", + "usia_dalam_bentuk_bulan": "2", + "tanggal_lahir": "2021-01-01", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "11.5", + "tinggi_badan_dalam_bentuk_cm": "79", + "imt": 18, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": " Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor aktivitas", + "faktor pola makan", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-07" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": false, + "p03": true, + "p04": true, + "p05": true, + "id": 332561390317278858 + }, + { + "uuid": "6c7b95926bf04fe3b2fb9e2efe4c07c3", + "nama_lengkap": "M Zakky", + "usia_dalam_bentuk_bulan": "3", + "tanggal_lahir": "2020-02-03", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "20", + "tinggi_badan_dalam_bentuk_cm": "99", + "imt": 20, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda. Kenaikan berat badan diperlambat, Diet seimbang, makan dengan porsi kecil, hindari makanan dengan kalori tinggi, melakukan aktivitas fisik, dan kurangi menonton tv. Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor genetika / turunan", + "faktor aktivitas", + "faktor pola makan", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-07" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": true, + "p03": true, + "p04": true, + "p05": true, + "id": 142406806229116928 + }, + { + "uuid": "d95397050ebe4b4788488ad6fbb0c2b9", + "nama_lengkap": "Qiana", + "usia_dalam_bentuk_bulan": "3", + "tanggal_lahir": "2020-03-28", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "15", + "tinggi_badan_dalam_bentuk_cm": "78", + "imt": 24, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor genetika / turunan" + ], + "tanggal_periksa": [ + "2023-07-07" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": true, + "p03": false, + "p04": false, + "p05": false, + "id": 191277911768836685 + }, + { + "uuid": "c125a3d1c278488693afb3699d5a051c", + "nama_lengkap": "Axle", + "usia_dalam_bentuk_bulan": "3", + "tanggal_lahir": "2020-04-10", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "10.5", + "tinggi_badan_dalam_bentuk_cm": "82", + "imt": 15, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor genetika / turunan", + "faktor aktivitas" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": true, + "p03": true, + "p04": false, + "p05": false, + "id": 195167419166317830 + }, + { + "uuid": "fde78361570045d39e4db86bc9a08bd4", + "nama_lengkap": "Intan", + "usia_dalam_bentuk_bulan": "3", + "tanggal_lahir": "2020-04-11", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "12.2", + "tinggi_badan_dalam_bentuk_cm": "90", + "imt": 15, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor genetika / turunan" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": true, + "p03": false, + "p04": false, + "p05": false, + "id": 315603360844968512 + }, + { + "uuid": "ede78433a3a643cc8ab62c535b343ebc", + "nama_lengkap": "Sultan", + "usia_dalam_bentuk_bulan": "4", + "tanggal_lahir": "2018-10-20", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "19", + "tinggi_badan_dalam_bentuk_cm": "102", + "imt": 18, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda. Kenaikan berat badan diperlambat, Diet seimbang, makan dengan porsi kecil, hindari makanan dengan kalori tinggi, melakukan aktivitas fisik, dan kurangi menonton tv.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor genetika / turunan", + "faktor aktivitas", + "faktor pola makan" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": true, + "p03": true, + "p04": true, + "p05": false, + "id": 213527791669185695 + }, + { + "uuid": "fac3479fd552422bbc9382d250c65c97", + "nama_lengkap": "Anisa", + "usia_dalam_bentuk_bulan": "4", + "tanggal_lahir": "2019-01-11", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "23", + "tinggi_badan_dalam_bentuk_cm": "97", + "imt": 24, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": " Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor pola makan", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": false, + "p03": false, + "p04": true, + "p05": true, + "id": 282078663475493733 + }, + { + "uuid": "540cabde93154305b8fee254c989d003", + "nama_lengkap": "Ubay", + "usia_dalam_bentuk_bulan": "4", + "tanggal_lahir": "2019-04-05", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "13", + "tinggi_badan_dalam_bentuk_cm": "90", + "imt": 16, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": " Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor pola makan", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": false, + "p03": false, + "p04": true, + "p05": true, + "id": 141872382811756361 + }, + { + "uuid": "0f186650f46c401e96ca8b625745bc1f", + "nama_lengkap": "Noah", + "usia_dalam_bentuk_bulan": "1", + "tanggal_lahir": "2022-01-01", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "9.2", + "tinggi_badan_dalam_bentuk_cm": "72", + "imt": 17, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": " Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": false, + "p03": false, + "p04": false, + "p05": true, + "id": 322927609902274096 + }, + { + "uuid": "c6cda0387b9d4fc59cbc0ca33cddfba9", + "nama_lengkap": "Nora", + "usia_dalam_bentuk_bulan": "2", + "tanggal_lahir": "2021-03-17", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "14.3", + "tinggi_badan_dalam_bentuk_cm": "91", + "imt": 17, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": " Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": false, + "p03": false, + "p04": false, + "p05": true, + "id": 307148089408474753 + }, + { + "uuid": "ac87576b1a4c44a6bf51a46d742b0dee", + "nama_lengkap": "Rafa", + "usia_dalam_bentuk_bulan": "2", + "tanggal_lahir": "2020-12-10", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "10.2", + "tinggi_badan_dalam_bentuk_cm": "79", + "imt": 16, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor genetika / turunan" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": true, + "p03": false, + "p04": false, + "p05": false, + "id": 322787729607616498 + }, + { + "uuid": "f6328f530c2749fcb2dd787f2463bdee", + "nama_lengkap": "Dafa", + "usia_dalam_bentuk_bulan": "2", + "tanggal_lahir": "2021-01-10", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "12.1", + "tinggi_badan_dalam_bentuk_cm": "90", + "imt": 14, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor genetika / turunan", + "faktor aktivitas" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": true, + "p03": true, + "p04": false, + "p05": false, + "id": 140829774532662577 + }, + { + "uuid": "3b13671ae17547f18f60ae0471beb079", + "nama_lengkap": "Hasna", + "usia_dalam_bentuk_bulan": "1", + "tanggal_lahir": "2022-04-01", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "10.5", + "tinggi_badan_dalam_bentuk_cm": "81", + "imt": 16, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": " Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor pola makan", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": false, + "p03": false, + "p04": true, + "p05": true, + "id": 171586817715662319 + }, + { + "uuid": "1e90c76cac0d48c5ad45dd35178e5e1a", + "nama_lengkap": "Aisyah", + "usia_dalam_bentuk_bulan": "2", + "tanggal_lahir": "2021-06-06", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "12.5", + "tinggi_badan_dalam_bentuk_cm": "89", + "imt": 15, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda. Kenaikan berat badan diperlambat, Diet seimbang, makan dengan porsi kecil, hindari makanan dengan kalori tinggi, melakukan aktivitas fisik, dan kurangi menonton tv. Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor genetika / turunan", + "faktor aktivitas", + "faktor pola makan", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": true, + "p03": true, + "p04": true, + "p05": true, + "id": 117548790693308124 + }, + { + "uuid": "df3420c6cf714e29b4822933b2334230", + "nama_lengkap": "Zakaria", + "usia_dalam_bentuk_bulan": "3", + "tanggal_lahir": "2020-05-15", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "11.5", + "tinggi_badan_dalam_bentuk_cm": "91", + "imt": 13, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor aktivitas", + "faktor pola makan" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": false, + "p03": true, + "p04": true, + "p05": false, + "id": 270890684808359877 + }, + { + "uuid": "397a6efb65d74f9ca38b62fd11dc210e", + "nama_lengkap": "Indana", + "usia_dalam_bentuk_bulan": "2", + "tanggal_lahir": "2021-06-20", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "17", + "tinggi_badan_dalam_bentuk_cm": "105", + "imt": 15, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda. Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor pola makan", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": false, + "p03": false, + "p04": true, + "p05": true, + "id": 118392613865800923 + }, + { + "uuid": "0512a296c48348f79183f1f4da5e45b9", + "nama_lengkap": "Andi", + "usia_dalam_bentuk_bulan": "2", + "tanggal_lahir": "2020-10-22", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "19", + "tinggi_badan_dalam_bentuk_cm": "98", + "imt": 19, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": " Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor aktivitas", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": false, + "p03": true, + "p04": false, + "p05": true, + "id": 348030082327234785 + }, + { + "uuid": "50cf00706f804e679f094e3413e1c843", + "nama_lengkap": "Halifatul H", + "usia_dalam_bentuk_bulan": "4", + "tanggal_lahir": "2019-03-10", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "23.1", + "tinggi_badan_dalam_bentuk_cm": "100", + "imt": 23, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor genetika / turunan", + "faktor pola makan" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": true, + "p03": false, + "p04": true, + "p05": false, + "id": 931520341748853979 + }, + { + "uuid": "fc022bf8e5a343a7a4452eab12f9c1c5", + "nama_lengkap": "Arya Januraja", + "usia_dalam_bentuk_bulan": "3", + "tanggal_lahir": "2019-01-25", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "27.9", + "tinggi_badan_dalam_bentuk_cm": "106.7", + "imt": 24, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor pola makan" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": false, + "p03": false, + "p04": true, + "p05": false, + "id": 278856179116763542 + }, + { + "uuid": "6f320ca984fc4ed2a58a237825f53003", + "nama_lengkap": "M Safian Altesai", + "usia_dalam_bentuk_bulan": "3", + "tanggal_lahir": "2019-08-21", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "21.9", + "tinggi_badan_dalam_bentuk_cm": "96", + "imt": 23, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": " Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor aktivitas", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": false, + "p03": true, + "p04": false, + "p05": true, + "id": 263281281469188343 + }, + { + "uuid": "6d38a24b18aa4ac6999ea99aebd1609f", + "nama_lengkap": "M rafa Azka", + "usia_dalam_bentuk_bulan": "1", + "tanggal_lahir": "2021-11-19", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "15", + "tinggi_badan_dalam_bentuk_cm": "79.5", + "imt": 23, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": "", + "cause_konklusi": [ + "faktor aktivitas" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": false, + "p03": true, + "p04": false, + "p05": false, + "id": 281643969177867282 + }, + { + "uuid": "6e726c96281a417cabc0117fa23a866d", + "nama_lengkap": "Fauzan Dwi Satria", + "usia_dalam_bentuk_bulan": "4", + "tanggal_lahir": "2019-05-13", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "29.8", + "tinggi_badan_dalam_bentuk_cm": "109", + "imt": 25, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": "", + "cause_konklusi": [ + "faktor genetika / turunan" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": true, + "p03": false, + "p04": false, + "p05": false, + "id": 260711059257955460 + }, + { + "uuid": "39fd0d639cf34f968638246a4b77f845", + "nama_lengkap": "Aradeya gea", + "usia_dalam_bentuk_bulan": "2", + "tanggal_lahir": "2020-08-27", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "20.4", + "tinggi_badan_dalam_bentuk_cm": "90", + "imt": 25, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": false, + "p03": false, + "p04": false, + "p05": false, + "id": 221604137004713860 + }, + { + "uuid": "f0f92016fe684b7e9b3dd9b9738d09b0", + "nama_lengkap": "Aisyah Khumairah", + "usia_dalam_bentuk_bulan": "1", + "tanggal_lahir": "2022-05-11", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "12", + "tinggi_badan_dalam_bentuk_cm": "73", + "imt": 22, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda. Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor aktivitas", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": false, + "p03": true, + "p04": false, + "p05": true, + "id": 276857820750805106 + }, + { + "uuid": "b59707a5c5da4d9e95c073ff16115098", + "nama_lengkap": "Biksan F", + "usia_dalam_bentuk_bulan": "1", + "tanggal_lahir": "2021-11-10", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "13.8", + "tinggi_badan_dalam_bentuk_cm": "80", + "imt": 21, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda. Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor pola makan", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": false, + "p03": false, + "p04": true, + "p05": true, + "id": 320976777984609325 + }, + { + "uuid": "81cde5c1ab824b5c99079f83a1a5ba07", + "nama_lengkap": "M Zaim Sholehhuddin ", + "usia_dalam_bentuk_bulan": "2", + "tanggal_lahir": "2020-12-01", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "16.5", + "tinggi_badan_dalam_bentuk_cm": "86", + "imt": 22, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor aktivitas" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": false, + "p03": true, + "p04": false, + "p05": false, + "id": 116568323117299787 + }, + { + "uuid": "8438ae9fa4a14408bc00f2bb877dd669", + "nama_lengkap": "A Fakharudin Attar", + "usia_dalam_bentuk_bulan": "4", + "tanggal_lahir": "2019-03-23", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "19.8", + "tinggi_badan_dalam_bentuk_cm": "98.8", + "imt": 20, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor genetika / turunan", + "faktor pola makan" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": true, + "p03": false, + "p04": true, + "p05": false, + "id": 183784888087633449 + }, + { + "uuid": "31f5f259517e4a899980bebbcb123482", + "nama_lengkap": "M Aqmal", + "usia_dalam_bentuk_bulan": "3", + "tanggal_lahir": "2020-01-03", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "18.2", + "tinggi_badan_dalam_bentuk_cm": "95", + "imt": 20, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": " Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor genetika / turunan", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": true, + "p03": false, + "p04": false, + "p05": true, + "id": 312327504242999001 + }, + { + "uuid": "28c7e8d75fc94877a743cebd9fce337f", + "nama_lengkap": "Nahda Irfana", + "usia_dalam_bentuk_bulan": "4", + "tanggal_lahir": "2019-03-08", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "31.5", + "tinggi_badan_dalam_bentuk_cm": "115.2", + "imt": 23, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor pola makan" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": false, + "p03": false, + "p04": true, + "p05": false, + "id": 807968453128497203 + }, + { + "uuid": "dd38ae38d6e942f08bed5a30a1bbbf36", + "nama_lengkap": "Aska Dina Kanziz Ilma", + "usia_dalam_bentuk_bulan": "3", + "tanggal_lahir": "2019-08-04", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "25", + "tinggi_badan_dalam_bentuk_cm": "102.8", + "imt": 23, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": " Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor genetika / turunan", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": true, + "p03": false, + "p04": false, + "p05": true, + "id": 702323225170053191 + }, + { + "uuid": "4ebb2ba16f1e4864a26aac43306d3ceb", + "nama_lengkap": "M Asifan Rafansyah Yudha", + "usia_dalam_bentuk_bulan": "3", + "tanggal_lahir": "2020-01-16", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "18.4", + "tinggi_badan_dalam_bentuk_cm": "94.5", + "imt": 20, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor genetika / turunan", + "faktor aktivitas" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": true, + "p03": true, + "p04": false, + "p05": false, + "id": 122904688606208057 + }, + { + "uuid": "e7f4fba114ca4ba995ef97f98b5b8535", + "nama_lengkap": "Rafardhan Atallah Pradana", + "usia_dalam_bentuk_bulan": "1", + "tanggal_lahir": "2021-10-12", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "14.5", + "tinggi_badan_dalam_bentuk_cm": "79", + "imt": 23, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": " Kenaikan berat badan diperlambat, Diet seimbang, makan dengan porsi kecil, hindari makanan dengan kalori tinggi, melakukan aktivitas fisik, dan kurangi menonton tv.", + "cause_konklusi": [ + "faktor genetika / turunan", + "faktor aktivitas", + "faktor pola makan" + ], + "tanggal_periksa": [ + "2023-07-08" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": true, + "p03": true, + "p04": true, + "p05": false, + "id": 203785639429406952 + }, + { + "uuid": "f0f5fc650a6b496186acce4844d76917", + "nama_lengkap": "Sevta Nourin", + "usia_dalam_bentuk_bulan": "4", + "tanggal_lahir": "2018-11-12", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "27.2", + "tinggi_badan_dalam_bentuk_cm": "109", + "imt": 22, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": " Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor aktivitas", + "faktor pola makan", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-13" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": false, + "p03": true, + "p04": true, + "p05": true, + "id": 518954609807545169 + }, + { + "uuid": "512b51a56ceb4671b53129be6c9c7052", + "nama_lengkap": "Bilqis", + "usia_dalam_bentuk_bulan": "4", + "tanggal_lahir": "2019-04-15", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "15.8", + "tinggi_badan_dalam_bentuk_cm": "87", + "imt": 20, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor genetika / turunan" + ], + "tanggal_periksa": [ + "2023-07-13" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": true, + "p03": false, + "p04": false, + "p05": false, + "id": 110514785841141761 + }, + { + "uuid": "ecb91b15ae694013b1ff84e30d31cc12", + "nama_lengkap": "M Faisal Hanif", + "usia_dalam_bentuk_bulan": "3", + "tanggal_lahir": "2020-01-10", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "20.8", + "tinggi_badan_dalam_bentuk_cm": "98.5", + "imt": 21, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": "", + "cause_konklusi": [ + "faktor genetika / turunan", + "faktor pola makan" + ], + "tanggal_periksa": [ + "2023-07-13" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": true, + "p03": false, + "p04": true, + "p05": false, + "id": 291879302260324158 + }, + { + "uuid": "99948102a43a4e3dab0f94c4da49c56c", + "nama_lengkap": "A Zainur Roziqin", + "usia_dalam_bentuk_bulan": "1", + "tanggal_lahir": "2021-09-10", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "11", + "tinggi_badan_dalam_bentuk_cm": "69.4", + "imt": 22, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda. Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-13" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": false, + "p03": false, + "p04": false, + "p05": true, + "id": 214521985843433320 + }, + { + "uuid": "ba5295d157ba4cd2a5d427c528636ee5", + "nama_lengkap": "Saputra", + "usia_dalam_bentuk_bulan": "2", + "tanggal_lahir": "2020-08-24", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "18.2", + "tinggi_badan_dalam_bentuk_cm": "87", + "imt": 24, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor aktivitas" + ], + "tanggal_periksa": [ + "2023-07-13" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": false, + "p03": true, + "p04": false, + "p05": false, + "id": 203140822645109067 + }, + { + "uuid": "8e4053a7bb7844ee8c33896a326f9b34", + "nama_lengkap": "Jhonatan", + "usia_dalam_bentuk_bulan": "4", + "tanggal_lahir": "2018-09-19", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "28.4", + "tinggi_badan_dalam_bentuk_cm": "110", + "imt": 23, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": "", + "cause_konklusi": [ + "faktor aktivitas", + "faktor pola makan" + ], + "tanggal_periksa": [ + "2023-07-13" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": false, + "p03": true, + "p04": true, + "p05": false, + "id": 792969575121374374 + }, + { + "uuid": "4b04d15038af47f6813016a780dfe3e0", + "nama_lengkap": "Laili", + "usia_dalam_bentuk_bulan": "4", + "tanggal_lahir": "2019-02-14", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "22.4", + "tinggi_badan_dalam_bentuk_cm": "103", + "imt": 21, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": "", + "cause_konklusi": [ + "faktor aktivitas", + "faktor pola makan" + ], + "tanggal_periksa": [ + "2023-07-13" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": false, + "p03": true, + "p04": true, + "p05": false, + "id": 160632057965280610 + }, + { + "uuid": "79c9cf9f635746639afc7ee27be47ac0", + "nama_lengkap": "Muhammad Devano S U", + "usia_dalam_bentuk_bulan": "4", + "tanggal_lahir": "2018-06-22", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "23.8", + "tinggi_badan_dalam_bentuk_cm": "106", + "imt": 21, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": "", + "cause_konklusi": [ + "faktor genetika / turunan", + "faktor pola makan" + ], + "tanggal_periksa": [ + "2023-07-13" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": true, + "p03": false, + "p04": true, + "p05": false, + "id": 254608892694459717 + }, + { + "uuid": "4aaa1f34f7934a4ca2a89762cf75ae1a", + "nama_lengkap": "Briyan Novara P", + "usia_dalam_bentuk_bulan": "4", + "tanggal_lahir": "2018-11-17", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "23.3", + "tinggi_badan_dalam_bentuk_cm": "106", + "imt": 20, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": " Kenaikan berat badan diperlambat, Diet seimbang, makan dengan porsi kecil, hindari makanan dengan kalori tinggi, melakukan aktivitas fisik, dan kurangi menonton tv.", + "cause_konklusi": [ + "faktor genetika / turunan", + "faktor aktivitas", + "faktor pola makan" + ], + "tanggal_periksa": [ + "2023-07-13" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": true, + "p03": true, + "p04": true, + "p05": false, + "id": 517014201643667088 + }, + { + "uuid": "807c48243d7f48a8b4ff4856cc41f9d4", + "nama_lengkap": "Assauqile Gibran", + "usia_dalam_bentuk_bulan": "3", + "tanggal_lahir": "2019-07-20", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "19", + "tinggi_badan_dalam_bentuk_cm": "96.2", + "imt": 20, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": " Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor pola makan", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-13" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": false, + "p03": false, + "p04": true, + "p05": true, + "id": 203955330227643625 + }, + { + "uuid": "be510597cf324fc7b391322987e851a7", + "nama_lengkap": "Kalisa", + "usia_dalam_bentuk_bulan": "2", + "tanggal_lahir": "2020-08-24", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "17.8", + "tinggi_badan_dalam_bentuk_cm": "88.5", + "imt": 22, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": "", + "cause_konklusi": [ + "faktor pola makan" + ], + "tanggal_periksa": [ + "2023-07-13" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": false, + "p03": false, + "p04": true, + "p05": false, + "id": 139571547885525584 + }, + { + "uuid": "b11412934ea14cdbba08a3637c1fed82", + "nama_lengkap": "Raka Arya", + "usia_dalam_bentuk_bulan": "3", + "tanggal_lahir": "2020-06-14", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "21.8", + "tinggi_badan_dalam_bentuk_cm": "96", + "imt": 23, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor aktivitas", + "faktor pola makan" + ], + "tanggal_periksa": [ + "2023-07-13" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": false, + "p03": true, + "p04": true, + "p05": false, + "id": 179011490536769256 + }, + { + "uuid": "c38ae43f86834c42a16506fbcb5d288c", + "nama_lengkap": "Azahra Cantika", + "usia_dalam_bentuk_bulan": "3", + "tanggal_lahir": "2020-04-01", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "20.2", + "tinggi_badan_dalam_bentuk_cm": "96", + "imt": 21, + "detail_konklusi": [ + "Obesitas Primer" + ], + "solusi_konklusi": " Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor genetika / turunan", + "faktor aktivitas", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-13" + ], + "tanggal_edit": "2023-07-13", + "p01": false, + "p02": true, + "p03": true, + "p04": false, + "p05": true, + "id": 846151191710266430 + }, + { + "uuid": "f0cab4def55140d4a8854807991ca894", + "nama_lengkap": "M Alfatih", + "usia_dalam_bentuk_bulan": "4", + "tanggal_lahir": "2019-03-26", + "jenis_kelamin": "Laki-Laki", + "berat_badan_dalam_bentuk_kg": "30.5", + "tinggi_badan_dalam_bentuk_cm": "112", + "imt": 24, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda. Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor aktivitas", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-13" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": false, + "p03": true, + "p04": false, + "p05": true, + "id": 223904969909941578 + }, + { + "uuid": "c79dcaee3c1f4f8ea75dc1e127dc6142", + "nama_lengkap": "Zahro Widia", + "usia_dalam_bentuk_bulan": "2", + "tanggal_lahir": "2021-02-11", + "jenis_kelamin": "Perempuan", + "berat_badan_dalam_bentuk_kg": "28.4", + "tinggi_badan_dalam_bentuk_cm": "110", + "imt": 23, + "detail_konklusi": [ + "Obesitas Sekunder" + ], + "solusi_konklusi": "Periksa ke dokter tentang penyakit tentang anda. Kenaikan berat badan diperlambat, Diet seimbang, makan dengan porsi kecil, hindari makanan dengan kalori tinggi, melakukan aktivitas fisik, dan kurangi menonton tv. Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food.", + "cause_konklusi": [ + "faktor kesehatan", + "faktor genetika / turunan", + "faktor aktivitas", + "faktor pola makan", + "faktor psikis" + ], + "tanggal_periksa": [ + "2023-07-13" + ], + "tanggal_edit": "2023-07-13", + "p01": true, + "p02": true, + "p03": true, + "p04": true, + "p05": true, + "id": 464007264702855274 + } + ] +} \ No newline at end of file diff --git a/db/users_admin.json b/db/users_admin.json new file mode 100644 index 0000000000000000000000000000000000000000..c3ff238f760bd2d4fac72cd3564d59e682fb0a76 --- /dev/null +++ b/db/users_admin.json @@ -0,0 +1,84 @@ +{ + "data": [ + { + "role": "admin", + "name": "Amin Azin", + "tanggal_lahir": "1999-01-06", + "jenis_kelamin": "Perempuan", + "alamat": "Dusun Krajan Tempeh Lor RT 10 RW 08", + "username": "admin", + "password": "admin", + "id": 284450867340872235 + }, + { + "role": "kepala", + "name": "Dzakiah Laili", + "tanggal_lahir": "1993-03-22", + "jenis_kelamin": "Perempuan", + "alamat": "Perum Asabri Tempeh Lor AA-28", + "username": "dzakiahlaili", + "password": "kintamani", + "id": 284450867340872236 + }, + { + "role": "kader", + "name": "Sinta Fahira ", + "tanggal_lahir": "1995-09-17", + "jenis_kelamin": "Perempuan", + "alamat": "Dusun Krajan Tempeh Lor RT 11 RW 03", + "username": "sinta222", + "password": "kintamani2", + "id": 284450867340872237 + }, + { + "role": "bidan", + "name": "Elvira", + "tanggal_lahir": "2002-07-29", + "jenis_kelamin": "Perempuan", + "alamat": "Dam Songo Tempeh Lumajang", + "username": "elvira222", + "password": "kintamani", + "id": 284450867340872238 + }, + { + "role": "kader", + "name": "Khusnul Aminah", + "tanggal_lahir": "1999-02-19", + "jenis_kelamin": "Perempuan", + "alamat": "Tempeh Lor", + "username": "khusnul", + "password": "kintamani", + "id": 258349686431188309 + }, + { + "role": "kepala", + "name": "sukma", + "tanggal_lahir": "2001-01-01", + "jenis_kelamin": "", + "alamat": "tes", + "username": "sukma", + "password": "sukma", + "id": 202493339910135417 + }, + { + "role": "bidan", + "name": "nadhir", + "tanggal_lahir": "2001-01-01", + "jenis_kelamin": "", + "alamat": "1", + "username": "nadhir", + "password": "nadhir", + "id": 247858236643526180 + }, + { + "role": "kader", + "name": "reza", + "tanggal_lahir": "2001-01-01", + "jenis_kelamin": "", + "alamat": "abb", + "username": "reza", + "password": "reza", + "id": 281135559967142361 + } + ] +} \ No newline at end of file diff --git a/export.csv b/export.csv new file mode 100644 index 0000000000000000000000000000000000000000..405e1a579f8ff49993860fd96ac8475199b1a83f --- /dev/null +++ b/export.csv @@ -0,0 +1,51 @@ +nama_lengkap,usia,tanggal_lahir,jenis_kelamin,berat_badan (kg),tinggi_badan (cm),imt,detail_konklusi +Fadli Acmad,2,2021-04-06,Laki-Laki,13.7,95,15,Obesitas Primer +M Rizky,2,2021-04-10,Laki-Laki,13.6,76,23,Obesitas Sekunder +Ratna,1,2022-01-15,Perempuan,15.5,85,21,Obesitas Sekunder +Kasmirah,2,2021-01-01,Perempuan,11.5,79,18,Obesitas Primer +M Zakky,3,2020-02-03,Laki-Laki,20,99,20,Obesitas Sekunder +Qiana,3,2020-03-28,Perempuan,15,78,24,Obesitas Sekunder +Axle,3,2020-04-10,Laki-Laki,10.5,82,15,Obesitas Sekunder +Intan,3,2020-04-11,Perempuan,12.2,90,15,Obesitas Sekunder +Sultan,4,2018-10-20,Laki-Laki,19,102,18,Obesitas Sekunder +Anisa,4,2019-01-11,Perempuan,23,97,24,Obesitas Primer +Ubay,4,2019-04-05,Laki-Laki,13,90,16,Obesitas Primer +Noah,1,2022-01-01,Laki-Laki,9.2,72,17,Obesitas Primer +Nora,2,2021-03-17,Perempuan,14.3,91,17,Obesitas Primer +Rafa,2,2020-12-10,Laki-Laki,10.2,79,16,Obesitas Sekunder +Dafa,2,2021-01-10,Laki-Laki,12.1,90,14,Obesitas Sekunder +Hasna,1,2022-04-01,Perempuan,10.5,81,16,Obesitas Primer +Aisyah,2,2021-06-06,Perempuan,12.5,89,15,Obesitas Sekunder +Zakaria,3,2020-05-15,Laki-Laki,11.5,91,13,Obesitas Sekunder +Indana,2,2021-06-20,Perempuan,17,105,15,Obesitas Sekunder +Andi,2,2020-10-22,Laki-Laki,19,98,19,Obesitas Primer +Halifatul H,4,2019-03-10,Perempuan,23.1,100,23,Obesitas Sekunder +Arya Januraja,3,2019-01-25,Laki-Laki,27.9,106.7,24,Obesitas Sekunder +M Safian Altesai,3,2019-08-21,Laki-Laki,21.9,96,23,Obesitas Primer +M rafa Azka,1,2021-11-19,Laki-Laki,15,79.5,23,Obesitas Primer +Fauzan Dwi Satria,4,2019-05-13,Laki-Laki,29.8,109,25,Obesitas Primer +Aradeya gea,2,2020-08-27,Perempuan,20.4,90,25,Obesitas Primer +Aisyah Khumairah,1,2022-05-11,Perempuan,12,73,22,Obesitas Sekunder +Biksan F,1,2021-11-10,Laki-Laki,13.8,80,21,Obesitas Sekunder +M Zaim Sholehhuddin ,2,2020-12-01,Laki-Laki,16.5,86,22,Obesitas Sekunder +A Fakharudin Attar,4,2019-03-23,Laki-Laki,19.8,98.8,20,Obesitas Sekunder +M Aqmal,3,2020-01-03,Laki-Laki,18.2,95,20,Obesitas Primer +Nahda Irfana,4,2019-03-08,Perempuan,31.5,115.2,23,Obesitas Sekunder +Aska Dina Kanziz Ilma,3,2019-08-04,Perempuan,25,102.8,23,Obesitas Primer +M Asifan Rafansyah Yudha,3,2020-01-16,Laki-Laki,18.4,94.5,20,Obesitas Sekunder +Rafardhan Atallah Pradana,1,2021-10-12,Laki-Laki,14.5,79,23,Obesitas Primer +Sevta Nourin,4,2018-11-12,Laki-Laki,27.2,109,22,Obesitas Primer +Bilqis,4,2019-04-15,Perempuan,15.8,87,20,Obesitas Sekunder +M Faisal Hanif,3,2020-01-10,Laki-Laki,20.8,98.5,21,Obesitas Primer +A Zainur Roziqin,1,2021-09-10,Laki-Laki,11,69.4,22,Obesitas Sekunder +Saputra,2,2020-08-24,Laki-Laki,18.2,87,24,Obesitas Sekunder +Jhonatan,4,2018-09-19,Laki-Laki,28.4,110,23,Obesitas Primer +Laili,4,2019-02-14,Perempuan,22.4,103,21,Obesitas Primer +Muhammad Devano S U,4,2018-06-22,Laki-Laki,23.8,106,21,Obesitas Primer +Briyan Novara P,4,2018-11-17,Laki-Laki,23.3,106,20,Obesitas Primer +Assauqile Gibran,3,2019-07-20,Perempuan,19,96.2,20,Obesitas Primer +Kalisa,2,2020-08-24,Perempuan,17.8,88.5,22,Obesitas Primer +Raka Arya,3,2020-06-14,Laki-Laki,21.8,96,23,Obesitas Sekunder +Azahra Cantika,3,2020-04-01,Perempuan,20.2,96,21,Obesitas Primer +M Alfatih,4,2019-03-26,Laki-Laki,30.5,112,24,Obesitas Sekunder +Zahro Widia,2,2021-02-11,Perempuan,28.4,110,23,Obesitas Sekunder diff --git a/flask_session/0555e35e41ac8f1a949990c0984e0cfb b/flask_session/0555e35e41ac8f1a949990c0984e0cfb new file mode 100644 index 0000000000000000000000000000000000000000..e3057dacb21bf82fb1f7816fef8e5ca045d1593f Binary files /dev/null and b/flask_session/0555e35e41ac8f1a949990c0984e0cfb differ diff --git a/flask_session/10e25321a6f00c978694fd187c10abc4 b/flask_session/10e25321a6f00c978694fd187c10abc4 new file mode 100644 index 0000000000000000000000000000000000000000..c2c88c9dd31bc7b55cae5ae759fd7fe7ba51abfa Binary files /dev/null and b/flask_session/10e25321a6f00c978694fd187c10abc4 differ diff --git a/flask_session/2029240f6d1128be89ddc32729463129 b/flask_session/2029240f6d1128be89ddc32729463129 new file mode 100644 index 0000000000000000000000000000000000000000..8a22b5861d1115f84e75a5f7357cd345e55dec2e Binary files /dev/null and b/flask_session/2029240f6d1128be89ddc32729463129 differ diff --git a/flask_session/2202dd7007f9bb3785b95f9f7fa056f7 b/flask_session/2202dd7007f9bb3785b95f9f7fa056f7 new file mode 100644 index 0000000000000000000000000000000000000000..9adbee137096062d55e9334f8c0d970ff148dbbf Binary files /dev/null and b/flask_session/2202dd7007f9bb3785b95f9f7fa056f7 differ diff --git a/flask_session/2b2a45b11a1ec2331338aaed0bd01b5d b/flask_session/2b2a45b11a1ec2331338aaed0bd01b5d new file mode 100644 index 0000000000000000000000000000000000000000..6fbecbf6fd143cff7763a780a125104f170d6a89 Binary files /dev/null and b/flask_session/2b2a45b11a1ec2331338aaed0bd01b5d differ diff --git a/flask_session/341c98d8fe2c4190a62fabbe88e9ba72 b/flask_session/341c98d8fe2c4190a62fabbe88e9ba72 new file mode 100644 index 0000000000000000000000000000000000000000..7454af191c50273eb636dea733ddd793a6ef7acc Binary files /dev/null and b/flask_session/341c98d8fe2c4190a62fabbe88e9ba72 differ diff --git a/flask_session/418808d40d5546be9fb8ce1ecb403d05 b/flask_session/418808d40d5546be9fb8ce1ecb403d05 new file mode 100644 index 0000000000000000000000000000000000000000..b4161ba6ac2e70216388a69c9ef7f93c74c0ce95 Binary files /dev/null and b/flask_session/418808d40d5546be9fb8ce1ecb403d05 differ diff --git a/flask_session/434dd888e0b14519a082ff8e3983fb19 b/flask_session/434dd888e0b14519a082ff8e3983fb19 new file mode 100644 index 0000000000000000000000000000000000000000..7233eed489c6cfe8a833945123c392331442442e Binary files /dev/null and b/flask_session/434dd888e0b14519a082ff8e3983fb19 differ diff --git a/flask_session/5e3727bf46ddd720e4dbc8818dbf6b85 b/flask_session/5e3727bf46ddd720e4dbc8818dbf6b85 new file mode 100644 index 0000000000000000000000000000000000000000..60d97df75a6d3fad70ad1bf1e30bb3b58ba751b8 Binary files /dev/null and b/flask_session/5e3727bf46ddd720e4dbc8818dbf6b85 differ diff --git a/flask_session/5e570896bb6d280cefe85a0743fc4378 b/flask_session/5e570896bb6d280cefe85a0743fc4378 new file mode 100644 index 0000000000000000000000000000000000000000..715585b10b08bc2662d1570026d7620080597491 Binary files /dev/null and b/flask_session/5e570896bb6d280cefe85a0743fc4378 differ diff --git a/flask_session/72664179816f497ac3372e8f9d2ffd39 b/flask_session/72664179816f497ac3372e8f9d2ffd39 new file mode 100644 index 0000000000000000000000000000000000000000..a2233b303f36262330d7d9b1329a56820d4c858f Binary files /dev/null and b/flask_session/72664179816f497ac3372e8f9d2ffd39 differ diff --git a/flask_session/78e83dad8df47cbc1a7bbfa54ae6192a b/flask_session/78e83dad8df47cbc1a7bbfa54ae6192a new file mode 100644 index 0000000000000000000000000000000000000000..7b885b950d86120a5e57628bc749566cacc724fa Binary files /dev/null and b/flask_session/78e83dad8df47cbc1a7bbfa54ae6192a differ diff --git a/flask_session/7d6d3d1dfecb2fcc22e8946b74802f82 b/flask_session/7d6d3d1dfecb2fcc22e8946b74802f82 new file mode 100644 index 0000000000000000000000000000000000000000..6f362ff4c96febdf8566972dff4c22cf406b37ef Binary files /dev/null and b/flask_session/7d6d3d1dfecb2fcc22e8946b74802f82 differ diff --git a/flask_session/9b438057d5971de7d654493efa2f530a b/flask_session/9b438057d5971de7d654493efa2f530a new file mode 100644 index 0000000000000000000000000000000000000000..2c0da9bf9ac02dcf85c20034c1b59db735e968c7 Binary files /dev/null and b/flask_session/9b438057d5971de7d654493efa2f530a differ diff --git a/flask_session/9baccf410aea2dc49b9327ebc65c77e4 b/flask_session/9baccf410aea2dc49b9327ebc65c77e4 new file mode 100644 index 0000000000000000000000000000000000000000..004dcb4780f1418880575bca35e302732cee5331 Binary files /dev/null and b/flask_session/9baccf410aea2dc49b9327ebc65c77e4 differ diff --git a/flask_session/9dc4e083e3952e85bc8021620e23151c b/flask_session/9dc4e083e3952e85bc8021620e23151c new file mode 100644 index 0000000000000000000000000000000000000000..e681cbf0db2fef0909797c50c35222857dbc9359 Binary files /dev/null and b/flask_session/9dc4e083e3952e85bc8021620e23151c differ diff --git a/flask_session/a348d38bd5ec6f3d4b770da9bade5859 b/flask_session/a348d38bd5ec6f3d4b770da9bade5859 new file mode 100644 index 0000000000000000000000000000000000000000..32eefd659fd6ac4f4482d07a30c9ef840f19f626 Binary files /dev/null and b/flask_session/a348d38bd5ec6f3d4b770da9bade5859 differ diff --git a/flask_session/a363ccfaa2121d411fd507df144e4bb5 b/flask_session/a363ccfaa2121d411fd507df144e4bb5 new file mode 100644 index 0000000000000000000000000000000000000000..e91d1267cf735efcdca1fdda0b936263fa5631e2 Binary files /dev/null and b/flask_session/a363ccfaa2121d411fd507df144e4bb5 differ diff --git a/flask_session/a3e0e25a91d3f327b87da1259170e975 b/flask_session/a3e0e25a91d3f327b87da1259170e975 new file mode 100644 index 0000000000000000000000000000000000000000..5171a7bf745432396287d1468c5249e80500548d Binary files /dev/null and b/flask_session/a3e0e25a91d3f327b87da1259170e975 differ diff --git a/flask_session/bd12d2fa23a7a22e0d0abf58f2627079 b/flask_session/bd12d2fa23a7a22e0d0abf58f2627079 new file mode 100644 index 0000000000000000000000000000000000000000..bcfa2b19c0640e1b3e17bd3a09b5a9d6c959fb67 Binary files /dev/null and b/flask_session/bd12d2fa23a7a22e0d0abf58f2627079 differ diff --git a/flask_session/da7a4b202b6b0fa548d83830a3135fa6 b/flask_session/da7a4b202b6b0fa548d83830a3135fa6 new file mode 100644 index 0000000000000000000000000000000000000000..617a01b1a23ecdaee4dbd37c230d15ded3ee5391 Binary files /dev/null and b/flask_session/da7a4b202b6b0fa548d83830a3135fa6 differ diff --git a/flask_session/dda0f415d2f69e8b0cb41e4655ee46b3 b/flask_session/dda0f415d2f69e8b0cb41e4655ee46b3 new file mode 100644 index 0000000000000000000000000000000000000000..a8ce3ebed7bc20786e6d4b9bcdc48e6daa12f767 Binary files /dev/null and b/flask_session/dda0f415d2f69e8b0cb41e4655ee46b3 differ diff --git a/flask_session/e2db2cc279d6e99ed18d4b219904dffb b/flask_session/e2db2cc279d6e99ed18d4b219904dffb new file mode 100644 index 0000000000000000000000000000000000000000..d643c588bb61d4c4eaac8539a113d5cbade5c271 Binary files /dev/null and b/flask_session/e2db2cc279d6e99ed18d4b219904dffb differ diff --git a/flask_session/e4b1dd890605ad0fa42946e5519d3349 b/flask_session/e4b1dd890605ad0fa42946e5519d3349 new file mode 100644 index 0000000000000000000000000000000000000000..43e7fa2af3ce1eab1b66cbb391a62492ded4d763 Binary files /dev/null and b/flask_session/e4b1dd890605ad0fa42946e5519d3349 differ diff --git a/flask_session/e63cbe5ee03207dd76c1461d3b0a0ac7 b/flask_session/e63cbe5ee03207dd76c1461d3b0a0ac7 new file mode 100644 index 0000000000000000000000000000000000000000..dc75d7dfa08d13117c94bf72e5c71a8f11debc47 Binary files /dev/null and b/flask_session/e63cbe5ee03207dd76c1461d3b0a0ac7 differ diff --git a/flask_session/ed523d93291f2505e4d771c86230b37e b/flask_session/ed523d93291f2505e4d771c86230b37e new file mode 100644 index 0000000000000000000000000000000000000000..eea266ce47448707d66c135ea58a29d05136cd78 Binary files /dev/null and b/flask_session/ed523d93291f2505e4d771c86230b37e differ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..7121015a7e538dd8220b3c2c23eb8618704fcd86 Binary files /dev/null and b/requirements.txt differ diff --git a/static/css/card.css b/static/css/card.css new file mode 100644 index 0000000000000000000000000000000000000000..6c682315953b2657545dd99d232bb8f4f96145e5 --- /dev/null +++ b/static/css/card.css @@ -0,0 +1,5 @@ +body { + background: #0c7178; + +} + diff --git a/static/css/dashboard-input-data.css b/static/css/dashboard-input-data.css new file mode 100644 index 0000000000000000000000000000000000000000..58849d0a4a6c899dccc1c1507713d563bc07df46 --- /dev/null +++ b/static/css/dashboard-input-data.css @@ -0,0 +1,405 @@ +/* =========== Google Fonts ============ */ +@import url("https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;400;500;700&display=swap"); + +/* =============== Globals ============== */ +* { + font-family: "Ubuntu", sans-serif; + margin: 0; + padding: 0; + box-sizing: border-box; +} + +:root { + --blue: #0c7178; + --white: #fff; + --gray: #f5f5f5; + --black1: #222; + --black2: #999; +} + +body { + min-height: 100vh; + overflow-x: hidden; +} + +.container { + position: relative; + width: 100%; +} + +/* =============== Navigation ================ */ +.navigation { + position: fixed; + width: 300px; + height: 100%; + background: var(--blue); + border-left: 10px solid var(--blue); + transition: 0.5s; + overflow: hidden; +} +.navigation.active { + width: 80px; +} + +.navigation ul { + position: absolute; + top: 0; + left: 0; + width: 100%; +} + +.navigation ul li { + position: relative; + width: 100%; + list-style: none; + border-top-left-radius: 30px; + border-bottom-left-radius: 30px; +} + +.navigation ul li:hover, +.navigation ul li.hovered { + background-color: var(--white); +} + +.navigation ul li:nth-child(1) { + margin-bottom: 40px; + pointer-events: none; +} + +.navigation ul li a { + position: relative; + display: block; + width: 100%; + display: flex; + text-decoration: none; + color: var(--white); +} +.navigation ul li:hover a, +.navigation ul li.hovered a { + color: var(--blue); +} + +.navigation ul li a .icon { + position: relative; + display: block; + min-width: 60px; + height: 60px; + line-height: 75px; + text-align: center; +} +.navigation ul li a .icon ion-icon { + font-size: 1.75rem; +} + +.navigation ul li a .title { + position: relative; + display: block; + padding: 0 10px; + height: 60px; + line-height: 60px; + text-align: start; + white-space: nowrap; +} + +/* --------- curve outside ---------- */ +.navigation ul li:hover a::before, +.navigation ul li.hovered a::before { + content: ""; + position: absolute; + right: 0; + top: -50px; + width: 50px; + height: 50px; + background-color: transparent; + border-radius: 50%; + box-shadow: 35px 35px 0 10px var(--white); + pointer-events: none; +} +.navigation ul li:hover a::after, +.navigation ul li.hovered a::after { + content: ""; + position: absolute; + right: 0; + bottom: -50px; + width: 50px; + height: 50px; + background-color: transparent; + border-radius: 50%; + box-shadow: 35px -35px 0 10px var(--white); + pointer-events: none; +} + +/* ===================== Main ===================== */ +.main { + position: absolute; + width: calc(100% - 300px); + left: 300px; + min-height: 100vh; + background: var(--white); + transition: 0.5s; +} +.main.active { + width: calc(100% - 80px); + left: 80px; +} + +.topbar { + width: 100%; + height: 60px; + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 10px; +} + +.toggle { + position: relative; + width: 60px; + height: 60px; + display: flex; + justify-content: center; + align-items: center; + font-size: 2.5rem; + cursor: pointer; +} + +.search { + position: relative; + width: 400px; + margin: 0 10px; +} + +.search label { + position: relative; + width: 100%; +} + +.search label input { + width: 100%; + height: 40px; + border-radius: 40px; + padding: 5px 20px; + padding-left: 35px; + font-size: 18px; + outline: none; + border: 1px solid var(--black2); +} + +.search label ion-icon { + position: absolute; + top: 0; + left: 10px; + font-size: 1.2rem; +} + +.user { + position: relative; + width: 40px; + height: 40px; + border-radius: 50%; + overflow: hidden; + cursor: pointer; +} + +.detailsPuskesmas { + color: #999; + font-size: 1.1rem; + margin-top: 5px; +} + +/* ======================= Cards ====================== */ +.cardBox { + position: relative; + width: 198%; + padding: 20px; + display: grid; + grid-template-columns: repeat(4, 1fr); + grid-gap: 30px; +} + +.cardBox .card { + position: relative; + background: var(--white); + padding: 30px; + border-radius: 20px; + display: flex; + justify-content: space-between; + cursor: pointer; + box-shadow: 0 7px 25px rgba(0, 0, 0, 0.08); +} + +.cardBox .card .numbers { + position: relative; + font-weight: 500; + font-size: 2.5rem; + color: var(--blue); +} + +.cardBox .card .cardName { + color: var(--black2); + font-size: 1.1rem; + margin-top: 5px; +} + +.cardBox .card .iconBx { + font-size: 3.5rem; + color: var(--black2); +} + +.cardBox .card:hover { + background: var(--blue); +} +.cardBox .card:hover .numbers, +.cardBox .card:hover .cardName, +.cardBox .card:hover .iconBx { + color: var(--white); +} + +/* ================== Order Details List ============== */ +.details { + position: relative; + width: 150%; + padding: 20px; + display: grid; + grid-template-columns: 2fr 1fr; + grid-gap: 30px; + /* margin-top: 10px; */ +} + +/* charts */ + + +.details-button:hover { +background-color: #45a049; +} + +.graphBox +{ + margin: 0 30px 0 20px; + /* position: relative; */ + padding: 20px; + width: calc(100% - 50px); + /* height: 200px; */ + padding: 20px; + box-shadow: 0 7px 25px rgba(0,0,0,0.08); + border-radius: 20px; + /* display: grid; */ + /* grid-template-columns: 1fr 2fr; */ + /* grid-gap: 30px; */ +} + +.graphBox .box +{ + position: relative; + background: #white; + width: 100%; + height: 2 + padding: 20px; + box-shadow: 0 7px 25px rgba(0,0,0,0.08); + border-radius: 20px; +} + +.details .chart { + position: relative; + display: grid; + min-height: 500px; + background: var(--white); + padding: 20px; + box-shadow: 0 7px 25px rgba(0, 0, 0, 0.08); + border-radius: 20px; +} + +.details .cardHeader { + display: flex; + justify-content: space-between; + align-items: flex-start; +} +.cardHeader h2 { + font-weight: 600; + color: var(--blue); +} +.cardHeader .btn { + position: relative; + padding: 5px 10px; + background: var(--blue); + text-decoration: none; + color: var(--white); + border-radius: 6px; +} + +.details table { + width: 100%; + border-collapse: collapse; + margin-top: 10px; +} +.details table thead td { + font-weight: 600; +} +/* ====================== Responsive Design ========================== */ +@media (max-width: 991px) { + + .graphBox{ + grid-template-columns: 1fr; + height: auto; + } + .navigation { + left: -300px; + } + .navigation.active { + width: 300px; + left: 0; + } + .main { + width: 100%; + left: 0; + } + .main.active { + left: 300px; + } + .cardBox { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (max-width: 768px) { + .details { + grid-template-columns: 1fr; + } + .recentOrders { + overflow-x: auto; + } + .status.inProgress { + white-space: nowrap; + } +} + +@media (max-width: 480px) { + .cardBox { + grid-template-columns: repeat(1, 1fr); + } + .cardHeader h2 { + font-size: 20px; + } + .user { + min-width: 40px; + } + .navigation { + width: 100%; + left: -100%; + z-index: 1000; + } + .navigation.active { + width: 100%; + left: 0; + } + .toggle { + z-index: 10001; + } + .main.active .toggle { + color: #fff; + position: fixed; + right: 0; + left: initial; + } +} + diff --git a/static/css/dashboard-layout-data-anak.css b/static/css/dashboard-layout-data-anak.css new file mode 100644 index 0000000000000000000000000000000000000000..e2fd4cf723c27a8bbd7ae4ce656d780d8ab35803 --- /dev/null +++ b/static/css/dashboard-layout-data-anak.css @@ -0,0 +1,455 @@ +/* =========== Google Fonts ============ */ +@import url("https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;400;500;700&display=swap"); + +/* =============== Globals ============== */ +* { + font-family: "Ubuntu", sans-serif; + margin: 0; + padding: 0; + box-sizing: border-box; +} + +:root { + --blue: #0c7178; + --white: #fff; + --gray: #f5f5f5; + --black1: #222; + --black2: #999; +} + +body { + min-height: 100vh; + overflow-x: hidden; +} + +.container { + position: relative; + width: 100%; +} + +/* =============== Navigation ================ */ +.navigation { + position: fixed; + width: 300px; + height: 100%; + background: var(--blue); + border-left: 10px solid var(--blue); + transition: 0.5s; + overflow: hidden; +} +.navigation.active { + width: 80px; +} + +.navigation ul { + position: absolute; + top: 0; + left: 0; + width: 100%; +} + +.navigation ul li { + position: relative; + width: 100%; + list-style: none; + border-top-left-radius: 30px; + border-bottom-left-radius: 30px; +} + +.navigation ul li:hover, +.navigation ul li.hovered { + background-color: var(--white); +} + +.navigation ul li:nth-child(1) { + margin-bottom: 40px; + pointer-events: none; +} + +.navigation ul li a { + position: relative; + display: block; + width: 100%; + display: flex; + text-decoration: none; + color: var(--white); +} +.navigation ul li:hover a, +.navigation ul li.hovered a { + color: var(--blue); +} + +.navigation ul li a .icon { + position: relative; + display: block; + min-width: 60px; + height: 60px; + line-height: 75px; + text-align: center; +} +.navigation ul li a .icon ion-icon { + font-size: 1.75rem; +} + +table { +border-collapse: collapse; +width: 100%; +} + +th, td { +padding: 8px; +text-align: left; +border-bottom: 1px solid #ddd; +} + +tr:nth-child(even) { +background-color: #f2f2f2; +} + +th { +background-color: var(--blue); +color: white; +} + +.details-button { +background-color: var(--blue); +border: none; +color: white; +padding: 8px 12px; +text-align: center; +text-decoration: none; +display: inline-block; +cursor: pointer; +font-size: 14px; +} + +.details-button:hover { +background-color: #45a049; +} + +.navigation ul li a .title { + position: relative; + display: block; + padding: 0 10px; + height: 60px; + line-height: 60px; + text-align: start; + white-space: nowrap; +} + +/* --------- curve outside ---------- */ +.navigation ul li:hover a::before, +.navigation ul li.hovered a::before { + content: ""; + position: absolute; + right: 0; + top: -50px; + width: 50px; + height: 50px; + background-color: transparent; + border-radius: 50%; + box-shadow: 35px 35px 0 10px var(--white); + pointer-events: none; +} +.navigation ul li:hover a::after, +.navigation ul li.hovered a::after { + content: ""; + position: absolute; + right: 0; + bottom: -50px; + width: 50px; + height: 50px; + background-color: transparent; + border-radius: 50%; + box-shadow: 35px -35px 0 10px var(--white); + pointer-events: none; +} + +/* ===================== Main ===================== */ +.main { + position: absolute; + width: calc(100% - 300px); + left: 300px; + min-height: 100vh; + background: var(--white); + transition: 0.5s; +} +.main.active { + width: calc(100% - 80px); + left: 80px; +} + +.topbar { + width: 100%; + height: 60px; + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 10px; +} + +.toggle { + position: relative; + width: 60px; + height: 60px; + display: flex; + justify-content: center; + align-items: center; + font-size: 2.5rem; + cursor: pointer; +} + +.search { + position: relative; + width: 400px; + margin: 0 10px; +} + +.search label { + position: relative; + width: 100%; +} + +.search label input { + width: 100%; + height: 40px; + border-radius: 40px; + padding: 5px 20px; + padding-left: 35px; + font-size: 18px; + outline: none; + border: 1px solid var(--black2); +} + +.search label ion-icon { + position: absolute; + top: 0; + left: 10px; + font-size: 1.2rem; +} + +.user { + position: relative; + width: 40px; + height: 40px; + border-radius: 50%; + overflow: hidden; + cursor: pointer; +} + +.detailsPuskesmas { + color: #999; + font-size: 1.1rem; + margin-top: 5px; +} + +/* ======================= Cards ====================== */ +.cardBox { + position: relative; + width: 198%; + padding: 20px; + display: grid; + grid-template-columns: repeat(4, 1fr); + grid-gap: 30px; +} + +.cardBox .card { + position: relative; + background: var(--white); + padding: 30px; + border-radius: 20px; + display: flex; + justify-content: space-between; + cursor: pointer; + box-shadow: 0 7px 25px rgba(0, 0, 0, 0.08); +} + +.cardBox .card .numbers { + position: relative; + font-weight: 500; + font-size: 2.5rem; + color: var(--blue); +} + +.cardBox .card .cardName { + color: var(--black2); + font-size: 1.1rem; + margin-top: 5px; +} + +.cardBox .card .iconBx { + font-size: 3.5rem; + color: var(--black2); +} + +.cardBox .card:hover { + background: var(--blue); +} +.cardBox .card:hover .numbers, +.cardBox .card:hover .cardName, +.cardBox .card:hover .iconBx { + color: var(--white); +} + +/* ================== Order Details List ============== */ +.details { + position: relative; + width: 150%; + padding: 20px; + display: grid; + grid-template-columns: 2fr 1fr; + grid-gap: 30px; + /* margin-top: 10px; */ +} + +/* charts */ +.graphBox +{ + margin: 0 30px 0 20px; + /* position: relative; */ + padding: 20px; + width: calc(100% - 50px); + /* height: 200px; */ + padding: 20px; + box-shadow: 0 7px 25px rgba(0,0,0,0.08); + border-radius: 20px; + /* display: grid; */ + /* grid-template-columns: 1fr 2fr; */ + /* grid-gap: 30px; */ +} + +.graphBox .box +{ + position: relative; + background: #white; + width: 100%; + height: 2 + padding: 20px; + box-shadow: 0 7px 25px rgba(0,0,0,0.08); + border-radius: 20px; +} + +.details .chart { + position: relative; + display: grid; + min-height: 500px; + background: var(--white); + padding: 20px; + box-shadow: 0 7px 25px rgba(0, 0, 0, 0.08); + border-radius: 20px; +} + +.details .cardHeader { + display: flex; + justify-content: space-between; + align-items: flex-start; +} +.cardHeader h2 { + font-weight: 600; + color: var(--blue); +} +.cardHeader .btn { + position: relative; + padding: 5px 10px; + background: var(--blue); + text-decoration: none; + color: var(--white); + border-radius: 6px; +} + +.details table { + width: 100%; + border-collapse: collapse; + margin-top: 10px; +} +.details table thead td { + font-weight: 600; +} +/* ====================== Responsive Design ========================== */ +@media (max-width: 991px) { + + .graphBox{ + grid-template-columns: 1fr; + height: auto; + } + .navigation { + left: -300px; + } + .navigation.active { + width: 300px; + left: 0; + } + .main { + width: 100%; + left: 0; + } + .main.active { + left: 300px; + } + .cardBox { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (max-width: 768px) { + .details { + grid-template-columns: 1fr; + } + .recentOrders { + overflow-x: auto; + } + .status.inProgress { + white-space: nowrap; + } +} + +@media (max-width: 480px) { + .cardBox { + grid-template-columns: repeat(1, 1fr); + } + .cardHeader h2 { + font-size: 20px; + } + .user { + min-width: 40px; + } + .navigation { + width: 100%; + left: -100%; + z-index: 1000; + } + .navigation.active { + width: 100%; + left: 0; + } + .toggle { + z-index: 10001; + } + .main.active .toggle { + color: #fff; + position: fixed; + right: 0; + left: initial; + } +} + +.search-container { + position: relative; + display: inline-block; + padding-bottom: 10px; +} + +.search-input { + padding: 10px; + border: 1px solid #ccc; + border-radius: 4px; +} + +.search-button { + float: right; + padding: 10px; + background-color: #ccc; + border: none; + border-radius: 4px; + cursor: pointer; +} diff --git a/static/css/dashboard-layout-kategori.css b/static/css/dashboard-layout-kategori.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/static/css/dashboard-style.css b/static/css/dashboard-style.css new file mode 100644 index 0000000000000000000000000000000000000000..966542107db6533c853e4d3301c536919ea84ded --- /dev/null +++ b/static/css/dashboard-style.css @@ -0,0 +1,404 @@ +/* =========== Google Fonts ============ */ +@import url("https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;400;500;700&display=swap"); + +/* =============== Globals ============== */ +* { + font-family: "Ubuntu", sans-serif; + margin: 0; + padding: 0; + box-sizing: border-box; +} + +:root { + --blue: #0c7178; + --white: #fff; + --gray: #f5f5f5; + --black1: #222; + --black2: #999; +} + +body { + min-height: 100vh; + overflow-x: hidden; +} + +.container { + position: relative; + width: 100%; +} + +/* =============== Navigation ================ */ +.navigation { + position: fixed; + width: 300px; + height: 100%; + background: var(--blue); + border-left: 10px solid var(--blue); + transition: 0.5s; + overflow: hidden; +} +.navigation.active { + width: 80px; +} + +.navigation ul { + position: absolute; + top: 0; + left: 0; + width: 100%; +} + +.navigation ul li { + position: relative; + width: 100%; + list-style: none; + border-top-left-radius: 30px; + border-bottom-left-radius: 30px; +} + +.navigation ul li:hover, +.navigation ul li.hovered { + background-color: var(--white); +} + +.navigation ul li:nth-child(1) { + margin-bottom: 40px; + pointer-events: none; +} + +.navigation ul li a { + position: relative; + display: block; + width: 100%; + display: flex; + text-decoration: none; + color: var(--white); +} +.navigation ul li:hover a, +.navigation ul li.hovered a { + color: var(--blue); +} + +.navigation ul li a .icon { + position: relative; + display: block; + min-width: 60px; + height: 60px; + line-height: 75px; + text-align: center; +} +.navigation ul li a .icon ion-icon { + font-size: 1.75rem; +} + +.navigation ul li a .title { + position: relative; + display: block; + padding: 0 10px; + height: 60px; + line-height: 60px; + text-align: start; + white-space: nowrap; +} + +/* --------- curve outside ---------- */ +.navigation ul li:hover a::before, +.navigation ul li.hovered a::before { + content: ""; + position: absolute; + right: 0; + top: -50px; + width: 50px; + height: 50px; + background-color: transparent; + border-radius: 50%; + box-shadow: 35px 35px 0 10px var(--white); + pointer-events: none; +} +.navigation ul li:hover a::after, +.navigation ul li.hovered a::after { + content: ""; + position: absolute; + right: 0; + bottom: -50px; + width: 50px; + height: 50px; + background-color: transparent; + border-radius: 50%; + box-shadow: 35px -35px 0 10px var(--white); + pointer-events: none; +} + +/* ===================== Main ===================== */ +.main { + position: absolute; + width: calc(100% - 300px); + left: 300px; + min-height: 100vh; + background: var(--white); + transition: 0.5s; +} +.main.active { + width: calc(100% - 80px); + left: 80px; +} + +.topbar { + width: 100%; + height: 60px; + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 10px; +} + +.toggle { + position: relative; + width: 60px; + height: 60px; + display: flex; + justify-content: center; + align-items: center; + font-size: 2.5rem; + cursor: pointer; +} + +.search { + position: relative; + width: 400px; + margin: 0 10px; +} + +.search label { + position: relative; + width: 100%; +} + +.search label input { + width: 100%; + height: 40px; + border-radius: 40px; + padding: 5px 20px; + padding-left: 35px; + font-size: 18px; + outline: none; + border: 1px solid var(--black2); +} + +.search label ion-icon { + position: absolute; + top: 0; + left: 10px; + font-size: 1.2rem; +} + +.user { + position: relative; + width: 40px; + height: 40px; + border-radius: 50%; + overflow: hidden; + cursor: pointer; +} + +.detailsPuskesmas { + color: #999; + font-size: 1.1rem; + margin-top: 5px; +} + +/* ======================= Cards ====================== */ +.cardBox { + position: relative; + width: 198%; + padding: 20px; + display: grid; + grid-template-columns: repeat(4, 1fr); + grid-gap: 30px; +} + +.cardBox .card { + position: relative; + background: var(--white); + padding: 30px; + border-radius: 20px; + display: flex; + justify-content: space-between; + cursor: pointer; + box-shadow: 0 7px 25px rgba(0, 0, 0, 0.08); +} + +.cardBox .card .numbers { + position: relative; + font-weight: 500; + font-size: 2.5rem; + color: var(--blue); +} + +.cardBox .card .cardName { + color: var(--black2); + font-size: 1.1rem; + margin-top: 5px; +} + +.cardBox .card .iconBx { + font-size: 3.5rem; + color: var(--black2); +} + +.cardBox .card:hover { + background: var(--blue); +} +.cardBox .card:hover .numbers, +.cardBox .card:hover .cardName, +.cardBox .card:hover .iconBx { + color: var(--white); +} + +/* ================== Order Details List ============== */ +.details { + position: relative; + width: 150%; + padding: 20px; + display: grid; + grid-template-columns: 2fr 1fr; + grid-gap: 30px; + /* margin-top: 10px; */ +} + +/* charts */ + + +.details-button:hover { +background-color: #45a049; +} + +.graphBox +{ + margin: 0 30px 0 20px; + /* position: relative; */ + padding: 20px; + width: calc(100% - 50px); + /* height: 200px; */ + padding: 20px; + box-shadow: 0 7px 25px rgba(0,0,0,0.08); + border-radius: 20px; + /* display: grid; */ + /* grid-template-columns: 1fr 2fr; */ + /* grid-gap: 30px; */ +} + +.graphBox .box +{ + position: relative; + background: #white; + width: 100%; + height: 2 + padding: 20px; + box-shadow: 0 7px 25px rgba(0,0,0,0.08); + border-radius: 20px; +} + +.details .chart { + position: relative; + display: grid; + min-height: 500px; + background: var(--white); + padding: 20px; + box-shadow: 0 7px 25px rgba(0, 0, 0, 0.08); + border-radius: 20px; +} + +.details .cardHeader { + display: flex; + justify-content: space-between; + align-items: flex-start; +} +.cardHeader h2 { + font-weight: 600; + color: var(--blue); +} +.cardHeader .btn { + position: relative; + padding: 5px 10px; + background: var(--blue); + text-decoration: none; + color: var(--white); + border-radius: 6px; +} + +.details table { + width: 100%; + border-collapse: collapse; + margin-top: 10px; +} +.details table thead td { + font-weight: 600; +} +/* ====================== Responsive Design ========================== */ +@media (max-width: 991px) { + + .graphBox{ + grid-template-columns: 1fr; + height: auto; + } + .navigation { + left: -300px; + } + .navigation.active { + width: 300px; + left: 0; + } + .main { + width: 100%; + left: 0; + } + .main.active { + left: 300px; + } + .cardBox { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (max-width: 768px) { + .details { + grid-template-columns: 1fr; + } + .recentOrders { + overflow-x: auto; + } + .status.inProgress { + white-space: nowrap; + } +} + +@media (max-width: 480px) { + .cardBox { + grid-template-columns: repeat(1, 1fr); + } + .cardHeader h2 { + font-size: 20px; + } + .user { + min-width: 40px; + } + .navigation { + width: 100%; + left: -100%; + z-index: 1000; + } + .navigation.active { + width: 100%; + left: 0; + } + .toggle { + z-index: 10001; + } + .main.active .toggle { + color: #fff; + position: fixed; + right: 0; + left: initial; + } +} diff --git a/static/css/index.css b/static/css/index.css new file mode 100644 index 0000000000000000000000000000000000000000..41fd274325098d513c6326cb10e81a99e62edb10 --- /dev/null +++ b/static/css/index.css @@ -0,0 +1,235 @@ +:root{ + --primary: #006400 ; + --bg: #fff; +} + +*{ + margin: 0; + padding: 0; + box-sizing: border-box; + outline: none; + border: none; +} + +body { + font-family: 'Poppins', sans-serif; + background-color: var(--bg); + color:#2F4F4F ; + min-height: 3000px; +} + + +.navbar { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1.4rem 7%; + background-color: #8FBC8F; + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 9999; +} + +.navbar .navbar-logo { + text-decoration: none; + font-size: 2rem; + font-weight: 700; + color: #fff; + font-style: italic; +} + +.navbar .navbar-logo span{ + color: var(--primary); +} + + +.navbar .navbar-nav a{ + color: #fff; + display: inline-block; + font-size: 1rem; + margin: 0 1rem; + text-decoration: none; +} + +.navbar .navbar-nav a:hover { + color: #DAA520; +} + +.navbar .navbar-nav a::after { + content: ''; + display: block; + padding-bottom: 0.5rem; + border-bottom: 0.1rem solid var(--primary); + transform: scaleX(0); + transition: 0.2s linear; +} + +.navbar .navbar-nav a:hover::after{ + transform: scaleX(0.5); +} + +.navbar .navbar-extra a { + color: #fff; + margin: 0 0.5rem; +} + +.navbar .navbar-extra a:hover { + color: var(--primary); +} + +#hamburger-menu{ + display: none; +} + +.hero { + min-height: 100vh; + display: flex; + align-items: center; + background-color: #fff; + background-repeat: no-repeat; + background-size: cover; + background-position: center; + position: relative; +} + +.hero .content { + padding: 1.4rem 7%; + max-width: 60rem; +} + +.hero .content h1{ + font-size: 4em; + color: black; + text-shadow: 1px 1px 3px rgba(1, 1, 3, 0.5); + line-height: 1.2; +} + +.hero .content h1 span{ + color: var(--primary); +} + +.hero .content p{ + font-size: 1.4rem; + margin-top: 0.6rem; + line-height: 1.4; +} + +.hero .content .cta{ + margin-top: 1rem; + display: inline-block; + padding: 1rem 3rem; + font-size: 1.4rem; + text-decoration: none; + color: #fff; + background-color: var(--primary); + border-radius: 2rem; + box-shadow: 1px 1px 3px rgba(1, 1, 3, 0.5) +} + +.about, +.imt { + padding: 8rem 7% 1.4rem; +} + +.about h2, +.imt h2{ + text-align: center; + font-size: 2.6rem; + margin-bottom: 3rem; +} + +.about .row, +.imt .row{ + display: flex; +} + +.about .row .about-img, +.imt .row .imt-img { + flex: 1 1 45rem; + +} + +.about .row .about-img img, +.imt .row .imt-img img { + width: 100%; + position: center; +} + + +.about .row .content, +.imt .row .content{ + flex: 1 1 35rem; + padding: 0 1rem; +} + + +.about .row .content h3, +.imt .row .content h3{ + font-size: 1.5rem; + margin-bottom: 1rem; +} + +.about .row .content p, +.about .row .content p{ + margin-bottom: 0.10rem; + font-size: 1rem; + line-height: 1.5; + +} + + +@media (max-width: 1366px){ + html { + font-size: 80%; + } +} + +@media (max-width: 758px){ + html { + font-size: 70.5%; +} + + + #hamburger-menu { + display: inline-block; +} + + .navbar .navbar-nav { + position: absolute; + top: 100%; + right: -100%; + background-color: #2F4F4F ; + width: 30rem; + height: 100vh; + transition: 0.3s; + } + + .navbar .navbar-nav.active { + right: 0; + } + + .navbar .navbar-nav a{ + color: var(--bg); + display: block; + margin: 1.5rem; + padding: 0.5rem; + font-size: 1.5rem; + } + + .navbar .navbar-nav a::after { + transform-origin: 0 0; + } + + .navbar .navbar-nav a:hover::after { + transform: scaleX(0.2); + } + + + +@media (max-width: 450px){ + html { + font-size: 55%; + } +} diff --git a/static/css/input_data.css b/static/css/input_data.css new file mode 100644 index 0000000000000000000000000000000000000000..f49bd4b13dde2380d9630a944e00393ab9880a54 --- /dev/null +++ b/static/css/input_data.css @@ -0,0 +1,78 @@ +body { + font-family: Arial, sans-serif; + background-color: #f4f4f4; + margin: 0; + padding: 0; + } + + .container { + max-width: 500px; + margin: 50px auto; + padding: 20px; + background-color: #fff; + border-radius: 5px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); + } + + h2 { + text-align: center; + margin-bottom: 20px; + color: #0c7178; + } + + .form-group { + margin-bottom: 20px; + } + + label { + display: block; + font-weight: bold; + margin-bottom: 5px; + } + + input[type="text"], + input[type="date"], + input[type="password"] { + width: 100%; + padding: 10px; + border: 1px solid #ccc; + border-radius: 4px; + } + + .form-check { + margin-top: 10px; + } + + .btn { + width: 100%; + padding: 10px; + background-color: #0c7178; + border: none; + color: #fff; + font-weight: bold; + cursor: pointer; + transition: background-color 0.3s ease; + } + + .btn:hover { + background-color: #0a5d62; + } + + .alert { + margin-top: 20px; + padding: 10px; + border-radius: 4px; + } + + .alert-danger { + background-color: #f8d7da; + color: #721c24; + border: 1px solid #f5c6cb; + } + + .alert-success { + background-color: #d4edda; + color: #155724; + border: 1px solid #c3e6cb; + } + \ No newline at end of file diff --git a/static/css/login.css b/static/css/login.css new file mode 100644 index 0000000000000000000000000000000000000000..d854289a313147f7e83fe9fb5143170ffdd1ff28 --- /dev/null +++ b/static/css/login.css @@ -0,0 +1,62 @@ + +body { + background: linear-gradient(90deg, #C7C5F4, #8FBC8F) + ; +} +.login-form { + background-color: #fff; + border-radius: 10px; + padding: 30px; + box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.1); + max-width: 500px; + margin: 0 auto; + margin-top: 100px; + font-family: Arial, sans-serif; + font-size: 14px; + color: #333; + line-height: 1.5; + letter-spacing: 0.5px; +} +.login-form h2 { + text-align: center; + margin-bottom: 30px; + font-weight: bold; + font-size: 24px; + color: #333; + text-transform: uppercase; + letter-spacing: 1px; +} +.form-group label { + font-weight: bold; + color: #333; + text-transform: uppercase; + letter-spacing: 0.5px; +} +.form-control { + padding: 10px 12px; + font-size: 14px; + border-radius: 5px; + border: 1px solid #ccc; + background-color: #f5f5f5; + color: #333; + box-shadow: none; + margin-bottom: 20px; +} +.form-control:focus { + border-color: #007bff; + box-shadow: none; +} +.btn-primary { + background-color: #007bff; + border-color: #007bff; + padding: 12px 20px; + font-size: 14px; + font-weight: bold; + text-transform: uppercase; + letter-spacing: 1px; +} +.btn-primary:hover, +.btn-primary:focus { + background-color: #0062cc; + border-color: #0062cc; +} diff --git a/static/css/register.css b/static/css/register.css new file mode 100644 index 0000000000000000000000000000000000000000..d854289a313147f7e83fe9fb5143170ffdd1ff28 --- /dev/null +++ b/static/css/register.css @@ -0,0 +1,62 @@ + +body { + background: linear-gradient(90deg, #C7C5F4, #8FBC8F) + ; +} +.login-form { + background-color: #fff; + border-radius: 10px; + padding: 30px; + box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.1); + max-width: 500px; + margin: 0 auto; + margin-top: 100px; + font-family: Arial, sans-serif; + font-size: 14px; + color: #333; + line-height: 1.5; + letter-spacing: 0.5px; +} +.login-form h2 { + text-align: center; + margin-bottom: 30px; + font-weight: bold; + font-size: 24px; + color: #333; + text-transform: uppercase; + letter-spacing: 1px; +} +.form-group label { + font-weight: bold; + color: #333; + text-transform: uppercase; + letter-spacing: 0.5px; +} +.form-control { + padding: 10px 12px; + font-size: 14px; + border-radius: 5px; + border: 1px solid #ccc; + background-color: #f5f5f5; + color: #333; + box-shadow: none; + margin-bottom: 20px; +} +.form-control:focus { + border-color: #007bff; + box-shadow: none; +} +.btn-primary { + background-color: #007bff; + border-color: #007bff; + padding: 12px 20px; + font-size: 14px; + font-weight: bold; + text-transform: uppercase; + letter-spacing: 1px; +} +.btn-primary:hover, +.btn-primary:focus { + background-color: #0062cc; + border-color: #0062cc; +} diff --git a/static/css/registrasi.css b/static/css/registrasi.css new file mode 100644 index 0000000000000000000000000000000000000000..d5a74b4c15b93178a416d7e5f7d0b026d8fc595e --- /dev/null +++ b/static/css/registrasi.css @@ -0,0 +1,64 @@ +/* registrasi */ + +body { + background: linear-gradient(90deg, #C7C5F4, #8FBC8F) + ; +} +.login-form { + background-color: #fff; + border-radius: 10px; + padding: 30px; + box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.1); + max-width: 500px; + margin: 0 auto; + margin-top: 100px; + margin-bottom: 100px; + font-family: Arial, sans-serif; + font-size: 14px; + color: #333; + line-height: 1.5; + letter-spacing: 0.5px; +} +.login-form h2 { + text-align: center; + margin-bottom: 30px; + font-weight: bold; + font-size: 24px; + color: #333; + text-transform: uppercase; + letter-spacing: 1px; +} +.form-group label { + font-weight: bold; + color: #333; + text-transform: uppercase; + letter-spacing: 0.5px; +} +.form-control { + padding: 10px 12px; + font-size: 14px; + border-radius: 5px; + border: 1px solid #ccc; + background-color: #f5f5f5; + color: #333; + box-shadow: none; + margin-bottom: 20px; +} +.form-control:focus { + border-color: #007bff; + box-shadow: none; +} +.btn-primary { + background-color: #007bff; + border-color: #007bff; + padding: 12px 20px; + font-size: 14px; + font-weight: bold; + text-transform: uppercase; + letter-spacing: 1px; +} +.btn-primary:hover, +.btn-primary:focus { + background-color: #0062cc; + border-color: #0062cc; +} diff --git a/static/image/avatar.svg b/static/image/avatar.svg new file mode 100644 index 0000000000000000000000000000000000000000..2f4c9690a68f8b83ba25594e111a2d93d146bac3 --- /dev/null +++ b/static/image/avatar.svg @@ -0,0 +1 @@ +profile pic \ No newline at end of file diff --git a/static/image/bg.svg b/static/image/bg.svg new file mode 100644 index 0000000000000000000000000000000000000000..fa47e74efd1f80e26a79d68eeb645f798fd83153 --- /dev/null +++ b/static/image/bg.svg @@ -0,0 +1 @@ +personalization \ No newline at end of file diff --git a/static/image/gambar.jpg b/static/image/gambar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a67119812733002407a157aac49fd55cd8aedfaa Binary files /dev/null and b/static/image/gambar.jpg differ diff --git a/static/image/image.jpg b/static/image/image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e7f6363e15028fc272e8cbceb112bfe0f69d2d6e Binary files /dev/null and b/static/image/image.jpg differ diff --git a/static/image/image1.png b/static/image/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..4554e36550068b6238677fe722bb6a7f3940cc9c Binary files /dev/null and b/static/image/image1.png differ diff --git a/static/image/wave.png b/static/image/wave.png new file mode 100644 index 0000000000000000000000000000000000000000..bc59616fc07ca86fc742fbb37f5c942161eb18c6 Binary files /dev/null and b/static/image/wave.png differ diff --git a/static/js/dashboard-main.js b/static/js/dashboard-main.js new file mode 100644 index 0000000000000000000000000000000000000000..53b23fffa4ae889a561bf2b410e24955504c6193 --- /dev/null +++ b/static/js/dashboard-main.js @@ -0,0 +1,21 @@ +// add hovered class to selected list item +let list = document.querySelectorAll(".navigation li"); + +function activeLink() { + list.forEach((item) => { + item.classList.remove("hovered"); + }); + this.classList.add("hovered"); +} + +list.forEach((item) => item.addEventListener("mouseover", activeLink)); + +// Menu Toggle +let toggle = document.querySelector(".toggle"); +let navigation = document.querySelector(".navigation"); +let main = document.querySelector(".main"); + +toggle.onclick = function () { + navigation.classList.toggle("active"); + main.classList.toggle("active"); +}; diff --git a/static/js/dashboard-my_chart.js b/static/js/dashboard-my_chart.js new file mode 100644 index 0000000000000000000000000000000000000000..a7361656201b0ce6d056d130acc6bbbea53fd5e8 --- /dev/null +++ b/static/js/dashboard-my_chart.js @@ -0,0 +1,33 @@ +var ctx = document.getElementById('myChart').getContext('2d'); +var myChart = new Chart(ctx, { + type: 'line', + data: { + labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'], + datasets: [{ + label: '# of Votes', + data: [12, 19, 3, 5, 2, 3], + backgroundColor: [ + 'rgba(255, 99, 132, 0.2)', + 'rgba(54, 162, 235, 0.2)', + 'rgba(255, 206, 86, 0.2)', + 'rgba(75, 192, 192, 0.2)', + 'rgba(153, 102, 255, 0.2)', + 'rgba(255, 159, 64, 0.2)' + ], + borderColor: [ + 'rgba(255, 99, 132, 1)', + 'rgba(54, 162, 235, 1)', + 'rgba(255, 206, 86, 1)', + 'rgba(75, 192, 192, 1)', + 'rgba(153, 102, 255, 1)', + 'rgba(255, 159, 64, 1)' + ], + borderWidth: 1 + }] + }, + options: { + scales: { + responsive: true, + } + } +}); \ No newline at end of file diff --git a/static/js/index.js b/static/js/index.js new file mode 100644 index 0000000000000000000000000000000000000000..b136cc73c73fb100f7ef704559bb57206efa8bc6 --- /dev/null +++ b/static/js/index.js @@ -0,0 +1,15 @@ +const navbarNav = document.querySelector + +('.navbar-nav'); +document.querySelector('#hamburger-menu'). +onclick = () => { + navbarNav.classList.toggle('active'); +}; + +const hamburger = document.querySelector +('#hamburger-menu'); +document.addEventListener('click', function(e){ + if(!hamburger.contains(e.target) && !navbarNav.contains(e.target)) { + navbarNav.classList.remove('active'); + } +}) \ No newline at end of file diff --git a/static/js/main.js b/static/js/main.js new file mode 100644 index 0000000000000000000000000000000000000000..9d3c80c43e41e2d335bbf9c469e911ff93d39d77 --- /dev/null +++ b/static/js/main.js @@ -0,0 +1,20 @@ +const inputs = document.querySelectorAll(".input"); + + +function addcl(){ + let parent = this.parentNode.parentNode; + parent.classList.add("focus"); +} + +function remcl(){ + let parent = this.parentNode.parentNode; + if(this.value == ""){ + parent.classList.remove("focus"); + } +} + + +inputs.forEach(input => { + input.addEventListener("focus", addcl); + input.addEventListener("blur", remcl); +}); diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000000000000000000000000000000000000..69777c327900c456b2d62ef889b301e0654bb7b0 --- /dev/null +++ b/templates/base.html @@ -0,0 +1,23 @@ + + + + + + {% block title %} {% endblock %} + + + + + {% block content %} {% endblock %} + + + diff --git a/templates/card.html b/templates/card.html new file mode 100644 index 0000000000000000000000000000000000000000..978440ac86e43d4957d1e6e6c7ad9900e1c36b40 --- /dev/null +++ b/templates/card.html @@ -0,0 +1,95 @@ +{% extends 'base.html' %} {% block title %} Hasil dari {{nama_lengkap}} {% +endblock %} {% block content %} + +
+
+
+
+
+
Hasil dari {{nama_lengkap}}
+
+
+
+

Nama Lengkap

+
{{nama_lengkap}}
+
+
+

Usia (Tahun)

+
{{usia_dalam_bentuk_bulan}}
+
+
+

Tanggal Lahir

+
{{tanggal_lahir}}
+
+
+

Jenis Kelamin

+
{{jenis_kelamin}}
+
+
+

Berat Badan (Kg)

+
+ {{berat_badan_dalam_bentuk_kg}} +
+
+
+

Tinggi Badan (Cm)

+
+ {{tinggi_badan_dalam_bentuk_cm}} +
+
+
+

IMT (Indeks Massa Tubuh)

+
{{imt}}
+
+
+
Konklusi
+
+
+

Detail Konklusi

+

{{detail_konklusi}}

+
+
+

Penyebab Konklusi

+ {% if cause_konklusi == "Belum Periksa" %} +

Belum Periksa

+ {% else %} + {% for konklusi in cause_konklusi %} +

{{konklusi}}

+ {% endfor %} + {% endif %} +
+
+

Solusi Konklusi

+

{{solusi_konklusi}}

+
+
+
+ + +
+
+
+
+
+ +{% endblock %} diff --git a/templates/dashboard-add-data-bidan.html b/templates/dashboard-add-data-bidan.html new file mode 100644 index 0000000000000000000000000000000000000000..23e3d892eef576a27612dca399efc57d3c5df14f --- /dev/null +++ b/templates/dashboard-add-data-bidan.html @@ -0,0 +1,447 @@ + + + + + + + + Dashboard Input Data Bidan + + + + + + + + + + + +
+
+
+ +
+ + + +
+ {{ name }} + +
+
+ + + +
+
+
+
+

Tambah Akun Bidan Posyandu

+
+ + +
+
+ + +
+
+ +
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+ + {% if error %} + + {% endif %} {% if success %} + + {% endif %} +
+
+
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/dashboard-add-data-kader.html b/templates/dashboard-add-data-kader.html new file mode 100644 index 0000000000000000000000000000000000000000..13596602c1ccb28394ef97c590451a4c63756d5e --- /dev/null +++ b/templates/dashboard-add-data-kader.html @@ -0,0 +1,446 @@ + + + + + + + + Dashboard Add Data Kader + + + + + + + + + + + +
+
+
+ +
+ + + +
+ {{ name }} + +
+
+ + + +
+
+
+
+

Tambah Akun Kader Posyandu

+
+ + +
+
+ + +
+
+ +
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+ + {% if error %} + + {% endif %} {% if success %} + + {% endif %} +
+
+
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/dashboard-add-data-kepala.html b/templates/dashboard-add-data-kepala.html new file mode 100644 index 0000000000000000000000000000000000000000..5fa65162d6ac6d0b4f1488efa231a6911a1e79f1 --- /dev/null +++ b/templates/dashboard-add-data-kepala.html @@ -0,0 +1,442 @@ + + + + + + + + Dashboard Input Data Kepala + + + + + + + + + + + +
+
+
+ +
+ + + +
+ {{ name }} + +
+
+ + + +
+
+
+
+ {% if role == "Admin" %} +

Tambah Akun Kepala Posyandu

+ {% endif %} +
+ + +
+
+ + +
+
+ +
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+ + {% if error %} + + {% endif %} + {% if success %} + + {% endif %} +
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/dashboard-index.html b/templates/dashboard-index.html new file mode 100644 index 0000000000000000000000000000000000000000..d8df0cef6812676ade41d60ed976c1566ab8e1b3 --- /dev/null +++ b/templates/dashboard-index.html @@ -0,0 +1,385 @@ + + + + + + + + Dashboard Index + + + + + + + +
+ + + +
+
+
+ +
+ + + +
+ {{ name }} + +
+
+ + +
+
+
+
{{ total_data_balita_laki_laki }}
+
Data Balita Laki - Laki yang masuk
+
+ +
+ +
+
+ +
+
+
{{ total_data_balita_perempuan }}
+
Data Balita Perempuan yang masuk
+
+ +
+ +
+
+
+ + + {% if role == "Admin" %} +
+ +
+
+ {% endif %} + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/dashboard-input-data-admin.html b/templates/dashboard-input-data-admin.html new file mode 100644 index 0000000000000000000000000000000000000000..ebbe25b76681f52966e3f3b1dcd48395d4c44213 --- /dev/null +++ b/templates/dashboard-input-data-admin.html @@ -0,0 +1,446 @@ + + + + + + + + Dashboard Input Data Admin + + + + + + + + + + + +
+
+
+ +
+ + + + +
+ + + +
+
+
+
+

Update Data Admin Posyandu

+
+ + +
+
+ + +
+
+ +
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+ + {% if error %} + + {% endif %} {% if success %} + + {% endif %} +
+
+
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/dashboard-input-data-anak.html b/templates/dashboard-input-data-anak.html new file mode 100644 index 0000000000000000000000000000000000000000..bd10623bd602731ba81229d0dc71cf9e6eb8777c --- /dev/null +++ b/templates/dashboard-input-data-anak.html @@ -0,0 +1,604 @@ + + + + + + + + Dashboard Input Data Anak + + + + + + + + + + + +
+
+
+ +
+ + + +
+ {{ name }} + +
+
+ + + +
+
+
+
+

Form Input Data Balita

+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+ + + + {% if error %} + + {% endif %} {% if success %} + + {% endif %} +
+
+
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/dashboard-input-data-bidan.html b/templates/dashboard-input-data-bidan.html new file mode 100644 index 0000000000000000000000000000000000000000..ff9ac2dcc0252e709f678f9bd379cd9aea92129f --- /dev/null +++ b/templates/dashboard-input-data-bidan.html @@ -0,0 +1,447 @@ + + + + + + + + Dashboard Input Data Bidan + + + + + + + + + + + +
+
+
+ +
+ + + +
+ {{ name }} + +
+
+ + + +
+
+
+
+

Update Akun Bidan Posyandu

+
+ + +
+
+ + +
+
+ +
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+ + {% if error %} + + {% endif %} {% if success %} + + {% endif %} +
+
+
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/dashboard-input-data-kader.html b/templates/dashboard-input-data-kader.html new file mode 100644 index 0000000000000000000000000000000000000000..f85a5334b398728d70cd956978db80609002d097 --- /dev/null +++ b/templates/dashboard-input-data-kader.html @@ -0,0 +1,446 @@ + + + + + + + + Dashboard Input Data Kader + + + + + + + + + + + +
+
+
+ +
+ + + +
+ {{ name }} + +
+
+ + + +
+
+
+
+

Update Akun Kader Posyandu

+
+ + +
+
+ + +
+
+ +
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+ + {% if error %} + + {% endif %} {% if success %} + + {% endif %} +
+
+
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/dashboard-input-data-kepala.html b/templates/dashboard-input-data-kepala.html new file mode 100644 index 0000000000000000000000000000000000000000..8066ec93292769b0cc321cd4bb466b572ad3deca --- /dev/null +++ b/templates/dashboard-input-data-kepala.html @@ -0,0 +1,442 @@ + + + + + + + + Dashboard Input Data Kepala + + + + + + + + + + + +
+
+
+ +
+ + + +
+ {{ name }} + +
+
+ + + +
+
+
+
+ {% if role == "Admin" %} +

Update Akun Kepala Posyandu

+ {% endif %} +
+ + +
+
+ + +
+
+ +
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+ + {% if error %} + + {% endif %} + {% if success %} + + {% endif %} +
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/dashboard-input-data.html b/templates/dashboard-input-data.html new file mode 100644 index 0000000000000000000000000000000000000000..4213e4ca432b84d3efcbc53bc2e0ec720b5210f1 --- /dev/null +++ b/templates/dashboard-input-data.html @@ -0,0 +1,429 @@ + + + + + + + + {{ username }} + + + + + + + + + + + +
+
+
+ +
+ + + + +
+ + + +
+
+
+
+

Data Balita

+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ +
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+ + {% if error %} + + {% endif %} {% if success %} + + {% endif %} +
+
+
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/dashboard-layout-data-anak.html b/templates/dashboard-layout-data-anak.html new file mode 100644 index 0000000000000000000000000000000000000000..34c551e6ee04f6df859b5827427c8823e02264bf --- /dev/null +++ b/templates/dashboard-layout-data-anak.html @@ -0,0 +1,440 @@ + + + + + + + + Dashboard Layout Data Anak + + + + + + + + +
+ + + +
+
+
+ +
+ + + +
+ {{ name }} + +
+
+ + + +
+
+
+ + +
+
+ {% if role in ["Admin", "Kepala"] %} +
+
+ +
+
+ {% endif %} + + + + + + + + + + + + + {% if role in ["Admin", "Bidan", "Kader"] %} + + {% endif %} + {% if role == "Bidan" %} + + {% endif %} + {% if role == "Admin" %} + + {% endif %} + {% if role == "Kepala" %} + + {% endif %} + + + + {% for data in data_users %} + + + + + + + + + + + {% if role == "Kepala" %} + + {% endif %} + + {% if role == "Bidan" and data.p01 == "Belum Periksa" %} + + {% endif %} + {% if role == "Admin" %} + + {% endif %} + + {% endfor %} + + +
NomorNama LengkapTanggal LahirBerat Badan (kg)IMTUsia (Tahun)Jenis KelaminTinggi Badan (cm)DetailsUpdate BalitaTestDelete BalitaHasil Pemeriksaan
{{loop.index}}{{data.nama_lengkap}}{{data.tanggal_lahir}}{{data.berat_badan_dalam_bentuk_kg}}{{data.imt}}{{data.usia_dalam_bentuk_bulan}}{{data.jenis_kelamin}}{{data.tinggi_badan_dalam_bentuk_cm}} + + {{ data.detail_konklusi|replace('[', '')|replace(']', '')|replace("'", '') }} + {% if role in ["Admin", "Bidan", "Kader"] %} + + {% endif %} + + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/dashboard-layout-kategori.html b/templates/dashboard-layout-kategori.html new file mode 100644 index 0000000000000000000000000000000000000000..979e2460d12007bc3f9116d7f0ab34158b51b6d2 --- /dev/null +++ b/templates/dashboard-layout-kategori.html @@ -0,0 +1,392 @@ + + + + + + + + Dashboard Layout Katgori + + + + + + + +
+ + + +
+
+
+ +
+ + + +
+ {{ name }} + +
+
+ + + + + +
+
+

Laki-Laki

+
+ +
+
+
+

Perempuan

+
+ +
+
+
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/dashboard-test-obesitas.html b/templates/dashboard-test-obesitas.html new file mode 100644 index 0000000000000000000000000000000000000000..24fa08a895562207de6c10f06ff406811bb8e96a --- /dev/null +++ b/templates/dashboard-test-obesitas.html @@ -0,0 +1,503 @@ + + + + + + + + Dashboard Test Obesitas + + + + + + + + + + + +
+
+
+ +
+ + + +
+ {{ name }} + +
+
+ + + +
+
+
+
+

Test Obesitas Balita

+
+ +
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+ + {% if error %} + + {% endif %} {% if success %} + + {% endif %} +
+
+
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/dashboard-update-data-anak.html b/templates/dashboard-update-data-anak.html new file mode 100644 index 0000000000000000000000000000000000000000..eedc04c01282f650a39f35549ce67f0bf805dc77 --- /dev/null +++ b/templates/dashboard-update-data-anak.html @@ -0,0 +1,428 @@ + + + + + + + + Dashboard Update Data Anak + + + + + + + + +
+ + + +
+
+
+ +
+ + + +
+ {{ name }} + +
+
+ + + +
+
+
+
+

Data Balita

+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+ + {% if error %} + + {% endif %} {% if success %} + + {% endif %} +
+
+
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/dashboard-update-data.html b/templates/dashboard-update-data.html new file mode 100644 index 0000000000000000000000000000000000000000..7cfbda146b3e76070ea75667a1693fe1d9166790 --- /dev/null +++ b/templates/dashboard-update-data.html @@ -0,0 +1,460 @@ + + + + + + + + {{ username }} + + + + + + + + +
+ + + +
+
+
+ +
+ + + + +
+ + + +
+
+
+
+

Data Balita

+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ +
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+ + {% if error %} + + {% endif %} {% if success %} + + {% endif %} +
+
+
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000000000000000000000000000000000000..ff826658b9edc0920334bf2447fc7134739143bb --- /dev/null +++ b/templates/index.html @@ -0,0 +1,86 @@ + + + + + + + + + Posyandu + + + + + + + + + + + + + + +
+
+

Ayo Hitung IMT

+

Untuk Menjaga Gizi Seimbang dan Berat Badan Ideal

+ Mulai +
+ +
+ +
+

Tentang Kami

+ +
+
+ Tentang Kami +
+
+

KLIK-IMT

+

Aplikasi ini akan mempermudah dalam mendeteksi faktor penyebab obesitas pada balita dengan menggunakan perhitungan IMT yang akan dilakukan di posyandu daerah Anda.

+

Dengan adanya aplikasi ini akan mempermudah kader posyandu dalam mendata balita dalam waktu yang singkat dan lebih efisien. Selain itu, oranag tua juga akan mendapatkan hasil pemeriksaan obesitas secara berkala. KLIK-IMT membantu kader dalam mengetahui faktor penyebah obesitas, sehingga para orang tua faktor penyebab obesitas tidak hanya disebabkan oleh porsi makan yang banyak, namun ada faktor lain yang belum diketahui oleh para orang

+

Melalui KLIK-IMT akan menambah wawasan orang tua dalam menjaga anaknya sejak dini agar tidak mempunyai catatan obesitas dalam hidupnya

+
+
+ +
+ +
+

IMT (Indeks Masa Tubuh)

+
+
+ IMT +
+
+

Apa itu IMT?

+

Indeks Masa Tubuh adalah bentuk alat ukur sederhana untuk mengontrol status gizi. IMT dijadikan sebagai indikator yang paling sering digunakandalam mengukur tingkat populasi overweight dan obesitas. Fakror yang mempengaruhi hasil perhitungan IMT adalah usia, jenis kelamin, genetik, pola makan, dan aktivitas fisik. Minimnya pengetahuan orang tua mengenai faktor penyebab terjadinya obesitas, membuat obesitas hanya didefinisikan kondisi karena banyaknya porsi makanan yang dikonsumsi. Aplikasi ini akan membantu para orang tua dalam mengidentifikasi penyebab obesitas pada balita dengan perhitungan IMT

+

Perhitungan Indeks Massa Tubuh dapat dilakukan dengan membagi berat badan dalam satuan kilogram dan tinggi badan dalam satuan meter kuadrat. Peningkatan hasil perhitungan IMT menandakan terjadinya peningkatan proporsi massa lemak terhadap massa bebas lemak tubuh.

+
+
+
+ + + + + + + \ No newline at end of file diff --git a/templates/login.html b/templates/login.html new file mode 100644 index 0000000000000000000000000000000000000000..6829373d2a94393f1ad821276d7185d0ae10829e --- /dev/null +++ b/templates/login.html @@ -0,0 +1,63 @@ + + + + + + {% block title %} {% endblock %} + + + + +
+
+
+ +
+
+
+ + + + diff --git a/templates/register.html b/templates/register.html new file mode 100644 index 0000000000000000000000000000000000000000..7c619a93b5c7ea6c832dedf44681ca6bb557d96d --- /dev/null +++ b/templates/register.html @@ -0,0 +1,99 @@ + + + + + + {% block title %} {% endblock %} + + + + +
+
+
+ +
+
+
+ + + \ No newline at end of file