diff --git a/controller/ttv/ttv.go b/controller/ttv/ttv.go index 1c71955eaca2cdb1ab312fb95510d6fd47dd5fcd..e779933b71728bc9632a55b31a4445cd209be020 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 5e1049f39b99b67cdf74f16bb8c9debbf64f96ad..252f768cc1f569c64ba990b80f3fecc9db10e99f 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 7ef85cdeb6eaa5354de5816a2e90f4e2dece60d7..7361a3da5283d936812a37b07f876f4427070e40 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 }