From dbe57a73d81fe66506cbb7ab5d79f36980c059da Mon Sep 17 00:00:00 2001
From: Eunice Sarah Siregar <13521013@mahasiswa.itb.ac.id>
Date: Sun, 5 May 2024 17:42:10 +0700
Subject: [PATCH] fix: be ttv

---
 controller/ttv/ttv.go  | 24 +++++++++++++--
 query/ttv/find_ttv.go  | 67 ++++++++++++++++++++++++++++++++++++++++--
 query/ttv/patch_ttv.go | 43 +++++++++++++++++++++------
 3 files changed, 120 insertions(+), 14 deletions(-)

diff --git a/controller/ttv/ttv.go b/controller/ttv/ttv.go
index 1c71955..e779933 100644
--- a/controller/ttv/ttv.go
+++ b/controller/ttv/ttv.go
@@ -1,14 +1,15 @@
 package ttv
 
 import (
-	"github.com/gin-gonic/gin"
 	"net/http"
+	"sync"
+
+	"github.com/gin-gonic/gin"
 	"seno-medika.com/config/db"
 	"seno-medika.com/model/common"
 	"seno-medika.com/model/doctorstation"
 	"seno-medika.com/model/nursestation"
 	"seno-medika.com/query/ttv"
-	"sync"
 )
 
 func AddTTV(c *gin.Context) {
@@ -267,6 +268,25 @@ func FindTTV(c *gin.Context) {
 			return
 		}
 
+		c.JSON(http.StatusOK, common.Response{
+			Message:    "Successfully get ttv",
+			Status:     "ok",
+			StatusCode: http.StatusOK,
+			Data:       ttvVar,
+		})
+		return
+	case "pasien_id":
+		ttvVar, err := ttv.FindNurseStationByPasienId(target)
+		if err != nil {
+			c.JSON(http.StatusInternalServerError, common.Response{
+				Message:    err.Error(),
+				Status:     "Internal Server Error",
+				StatusCode: http.StatusInternalServerError,
+				Data:       nil,
+			})
+			return
+		}
+
 		c.JSON(http.StatusOK, common.Response{
 			Message:    "Successfully get ttv",
 			Status:     "ok",
diff --git a/query/ttv/find_ttv.go b/query/ttv/find_ttv.go
index 5e1049f..252f768 100644
--- a/query/ttv/find_ttv.go
+++ b/query/ttv/find_ttv.go
@@ -1,11 +1,12 @@
 package ttv
 
 import (
+	"strconv"
+	"sync"
+
 	"seno-medika.com/config/db"
 	"seno-medika.com/model/doctorstation"
 	"seno-medika.com/model/nursestation"
-	"strconv"
-	"sync"
 )
 
 func FindSkriningAwalById(
@@ -87,7 +88,7 @@ func FindRiwayatPenyakitById(
 ) {
 	defer wg.Done()
 
-	if err := db.DB.QueryRow("SELECT * FROM riwayat_penyakit WHERE rwt_penyakit_id = $1", id).Scan(
+	if err := db.DB.QueryRow("SELECT * FROM riwayat_penyakit WHERE riwayat_penyakit_id = $1", id).Scan(
 		&riwayatPenyakitRes.RiwayatPenyakitID,
 		&riwayatPenyakitRes.RPS,
 		&riwayatPenyakitRes.RPD,
@@ -126,6 +127,34 @@ func FindAnamnesisById(
 	return
 }
 
+func FindAnamnesisByPasienId(
+	id string, errorChan *error,
+	riwayatPenyakitRes *doctorstation.Anamnesis,
+	wg *sync.WaitGroup,
+) {
+	defer wg.Done()
+
+	if err := db.DB.QueryRow("SELECT * FROM anamnesis WHERE pasien_id = $1", id).Scan(
+		&riwayatPenyakitRes.AnamnesisID,
+		&riwayatPenyakitRes.PasienID,
+		&riwayatPenyakitRes.SkrinAwalID,
+		&riwayatPenyakitRes.SkrinGiziID,
+		&riwayatPenyakitRes.TTVID,
+		&riwayatPenyakitRes.RiwayatPenyakitID,
+		&riwayatPenyakitRes.AlergiID,
+		&riwayatPenyakitRes.DokterID,
+		&riwayatPenyakitRes.PerawatID,
+		&riwayatPenyakitRes.KeluhanUtama,
+		&riwayatPenyakitRes.KeluhanTambahan,
+		&riwayatPenyakitRes.LamaSakit,
+	); err != nil {
+		*errorChan = err
+		return
+	}
+
+	return
+}
+
 func FindAlergiById(
 	id string, errorChan chan error,
 	wg *sync.WaitGroup, alergiRes *doctorstation.Alergi,
@@ -245,3 +274,35 @@ func FindNurseStationById(id string) (nurseStationRes nursestation.NurseStation,
 
 	return nurseStationRes, nil
 }
+func FindNurseStationByPasienId(id string) (nurseStationRes nursestation.NurseStation, err error) {
+	var wg sync.WaitGroup
+	wg.Add(1)
+	var anamnesisID string;
+	go FindAnamnesisByPasienId(id, &err, &nurseStationRes.Anamnesis, &wg)
+	err = db.DB.QueryRow("SELECT anamnesis_id FROM anamnesis WHERE pasien_id = $1", id).Scan(&anamnesisID)
+
+	wg.Wait()
+
+	if err != nil {
+		return nursestation.NurseStation{}, err
+	}
+
+	errorChan := make(chan error, 5)
+	wg.Add(5)
+	go FindAlergiById(anamnesisID, errorChan, &wg, &nurseStationRes.Alergi)
+	go FindSkriningAwalById(anamnesisID, errorChan, &wg, &nurseStationRes.SkriningAwal)
+	go FindSkriningGiziById(anamnesisID, errorChan, &wg, &nurseStationRes.SkriningGizi)
+	go FindTTVById(anamnesisID, errorChan, &wg, &nurseStationRes.TTV)
+	go FindRiwayatPenyakitById(anamnesisID, errorChan, &wg, &nurseStationRes.RiwayatPenyakit)
+
+	wg.Wait()
+	close(errorChan)
+
+	for err := range errorChan {
+		if err != nil {
+			return nursestation.NurseStation{}, err
+		}
+	}
+
+	return nurseStationRes, nil
+}
diff --git a/query/ttv/patch_ttv.go b/query/ttv/patch_ttv.go
index 7ef85cd..7361a3d 100644
--- a/query/ttv/patch_ttv.go
+++ b/query/ttv/patch_ttv.go
@@ -7,6 +7,11 @@ import (
 )
 
 func ChangeSkriningAwalById(id string, skriningAwal nursestation.SkriningAwal) error {
+	var skrinAwalID string
+	errID := db.DB.QueryRow("SELECT skrin_awal_id FROM anamnesis WHERE pasien_id = $1 ORDER BY skrin_awal_id DESC LIMIT 1", id).Scan(&skrinAwalID)
+	if errID != nil {
+		return errID
+	}
 	val, err := db.DB.Exec(
 		`UPDATE skrining_awal SET
 	           disabilitas = $1,
@@ -20,7 +25,7 @@ func ChangeSkriningAwalById(id string, skriningAwal nursestation.SkriningAwal) e
 	           nyeri_berulang = $9,
 			   sifat_nyeri = $10
 	           WHERE skrin_awal_id = $11`,
-		skriningAwal.Disabilitas, skriningAwal.Ambulansi, skriningAwal.HambatanKomunikasi, skriningAwal.JalanTidakSeimbang, skriningAwal.JalanAlatBantu, skriningAwal.MenopangSaatDuduk, skriningAwal.HasilCaraJalan, skriningAwal.SkalaNyeri, skriningAwal.NyeriBerulang, skriningAwal.SifatNyeri, id)
+		skriningAwal.Disabilitas, skriningAwal.Ambulansi, skriningAwal.HambatanKomunikasi, skriningAwal.JalanTidakSeimbang, skriningAwal.JalanAlatBantu, skriningAwal.MenopangSaatDuduk, skriningAwal.HasilCaraJalan, skriningAwal.SkalaNyeri, skriningAwal.NyeriBerulang, skriningAwal.SifatNyeri, skrinAwalID)
 	if err != nil {
 		return err
 	}
@@ -33,6 +38,11 @@ func ChangeSkriningAwalById(id string, skriningAwal nursestation.SkriningAwal) e
 }
 
 func ChangeSkriningGiziById(id string, skriningGizi nursestation.SkriningGizi) error {
+	var skrinGiziID string
+	errID := db.DB.QueryRow("SELECT skrin_gizi_id FROM anamnesis WHERE pasien_id = $1 ORDER BY skrin_gizi_id DESC LIMIT 1", id).Scan(&skrinGiziID)
+	if errID != nil {
+		return errID
+	}
 	val, err := db.DB.Exec(
 		`UPDATE skrining_gizi SET
 	           penurunan_bb = $1,
@@ -40,7 +50,7 @@ func ChangeSkriningGiziById(id string, skriningGizi nursestation.SkriningGizi) e
 	           diagnosis_khusus = $3,
 	           nama_penyakit = $4,
 	           WHERE skrin_gizi_id = $5`,
-		skriningGizi.PenurunanBB, skriningGizi.TdkNafsuMakan, skriningGizi.DiagnosisKhusus, skriningGizi.NamaPenyakit, id)
+		skriningGizi.PenurunanBB, skriningGizi.TdkNafsuMakan, skriningGizi.DiagnosisKhusus, skriningGizi.NamaPenyakit, skrinGiziID)
 	if err != nil {
 		return err
 	}
@@ -53,6 +63,11 @@ func ChangeSkriningGiziById(id string, skriningGizi nursestation.SkriningGizi) e
 }
 
 func ChangeTTVById(id string, ttv nursestation.TTV) error {
+	var ttvID string
+	errID := db.DB.QueryRow("SELECT ttv_id FROM anamnesis WHERE pasien_id = $1 ORDER BY ttv_id DESC LIMIT 1", id).Scan(&ttvID)
+	if errID != nil {
+		return errID
+	}
 	val, err := db.DB.Exec(
 		`UPDATE ttv SET
 	           kesadaran = $1,
@@ -71,7 +86,7 @@ func ChangeTTVById(id string, ttv nursestation.TTV) error {
 	           psikolososial_spirit = $14,
 	           keterangan = $15
 	           WHERE ttv_id = $16`,
-		ttv.Kesadaran, ttv.Sistole, ttv.Diastole, ttv.TinggiBadan, ttv.CaraUkurTB, ttv.BeratBadan, ttv.LingkarPerut, ttv.DetakNadi, ttv.Nafas, ttv.Saturasi, ttv.Suhu, ttv.DetakJantung, ttv.Triage, ttv.PsikolososialSpirit, ttv.Keterangan, id)
+		ttv.Kesadaran, ttv.Sistole, ttv.Diastole, ttv.TinggiBadan, ttv.CaraUkurTB, ttv.BeratBadan, ttv.LingkarPerut, ttv.DetakNadi, ttv.Nafas, ttv.Saturasi, ttv.Suhu, ttv.DetakJantung, ttv.Triage, ttv.PsikolososialSpirit, ttv.Keterangan, ttvID)
 	if err != nil {
 		return err
 	}
@@ -84,13 +99,18 @@ func ChangeTTVById(id string, ttv nursestation.TTV) error {
 }
 
 func ChangeRiwayatPenyakitById(id string, riwayatPenyakit nursestation.RiwayatPenyakit) error {
+	var riwayatID string
+	errID := db.DB.QueryRow("SELECT riwayat_penyakit_id FROM anamnesis WHERE pasien_id = $1 ORDER BY riwayat_penyakit_id DESC LIMIT 1", id).Scan(&riwayatID)
+	if errID != nil {
+		return errID
+	}
 	val, err := db.DB.Exec(
 		`UPDATE riwayat_penyakit SET
-	           rps = $1,
-	           rpd = $2,
-	           rpk = $3
-	           WHERE riwayat_penyakit_id = $4`,
-		riwayatPenyakit.RPS, riwayatPenyakit.RPD, riwayatPenyakit.RPK, id)
+			   rps = $1,
+			   rpd = $2,
+			   rpk = $3
+			   WHERE riwayat_penyakit_id = $4`,
+		riwayatPenyakit.RPS, riwayatPenyakit.RPD, riwayatPenyakit.RPK, riwayatID)
 	if err != nil {
 		return err
 	}
@@ -103,13 +123,18 @@ func ChangeRiwayatPenyakitById(id string, riwayatPenyakit nursestation.RiwayatPe
 }
 
 func ChangeAlergiById(id string, alergi doctorstation.Alergi) error {
+	var alergiID string
+	errID := db.DB.QueryRow("SELECT alergi_id FROM anamnesis WHERE pasien_id = $1 ORDER BY alergi_id DESC LIMIT 1", id).Scan(&alergiID)
+	if errID != nil {
+		return errID
+	}
 	val, err := db.DB.Exec(
 		`UPDATE alergi SET
 	           obat = $1,
 	           makanan = $2,
 	           lainnya = $3
 	           WHERE alergi_id = $4`,
-		alergi.Obat, alergi.Makanan, alergi.Lainnya, id)
+		alergi.Obat, alergi.Makanan, alergi.Lainnya, alergiID)
 	if err != nil {
 		return err
 	}
-- 
GitLab