From df68c6b36d711f9f832a0d8a59c56563d28f4c77 Mon Sep 17 00:00:00 2001
From: Fahrian Afdholi <89321009+fchrgrib@users.noreply.github.com>
Date: Sat, 4 May 2024 17:28:48 +0700
Subject: [PATCH] feat: add controller pemeriksaan dokter

---
 controller/pasien/pasien.go                   |   2 +-
 controller/pemeriksaan/dokter.go              | 293 +++++++++++++++++-
 .../dokter/find_pemeriksaan_dokter.go         |   2 +-
 .../dokter/patch_pemeriksaan_dokter.go        |  10 +-
 4 files changed, 299 insertions(+), 8 deletions(-)

diff --git a/controller/pasien/pasien.go b/controller/pasien/pasien.go
index 6ece81d..0cf7247 100644
--- a/controller/pasien/pasien.go
+++ b/controller/pasien/pasien.go
@@ -216,7 +216,7 @@ func UpdatePasien(c *gin.Context) {
 }
 
 func DeletePasien(c *gin.Context) {
-	updateBy := c.Query("update_by")
+	updateBy := c.Query("delete_by")
 	target := c.Query("target")
 
 	switch updateBy {
diff --git a/controller/pemeriksaan/dokter.go b/controller/pemeriksaan/dokter.go
index 5dd1746..8149241 100644
--- a/controller/pemeriksaan/dokter.go
+++ b/controller/pemeriksaan/dokter.go
@@ -1,5 +1,296 @@
 package pemeriksaan
 
-func AddPemeriksaanDokter() {
+import (
+	"github.com/gin-gonic/gin"
+	"net/http"
+	"seno-medika.com/model/common"
+	"seno-medika.com/model/station/doctorstation"
+	"seno-medika.com/query/pemeriksaan/dokter"
+)
 
+func AddPemeriksaanDokter(c *gin.Context) {
+	var (
+		pemeriksaan doctorstation.PemeriksaanDokter
+	)
+
+	if err := c.ShouldBindJSON(&pemeriksaan); err != nil {
+		c.JSON(http.StatusBadRequest, common.Response{
+			Message:    err.Error(),
+			Status:     "Bad Request",
+			StatusCode: http.StatusBadRequest,
+			Data:       nil,
+		})
+		return
+	}
+
+	if err := dokter.AddPemeriksaanDokterDefault(pemeriksaan); err != nil {
+		c.JSON(http.StatusInternalServerError, common.Response{
+			Message:    err.Error(),
+			Status:     "Internal Server Error",
+			StatusCode: http.StatusInternalServerError,
+			Data:       nil,
+		})
+		return
+	}
+
+	c.JSON(http.StatusCreated, common.Response{
+		Message:    "Successfully add pemeriksaan dokter",
+		Status:     "ok",
+		StatusCode: http.StatusCreated,
+		Data:       nil,
+	})
+	return
+}
+
+func DeletePemeriksaanDokter(c *gin.Context) {
+	deleteBy := c.Query("delete_by")
+	target := c.Query("target")
+
+	switch deleteBy {
+	case "id":
+		if err := dokter.DeletePemeriksaanDokter(target); 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 delete pemeriksaan dokter",
+			Status:     "ok",
+			StatusCode: http.StatusOK,
+			Data:       nil,
+		})
+		return
+	}
+}
+
+func PatchPemeriksaanDokter(c *gin.Context) {
+	updateBy := c.Query("update_by")
+	updateType := c.Query("update_type")
+	target := c.Query("target")
+
+	switch updateBy {
+	case "antrian_id":
+		switch updateType {
+		case "riwayat_pemeriksaan":
+			var (
+				riwayatPemeriksaan doctorstation.RiwayatPemeriksaan
+			)
+
+			if err := c.ShouldBindJSON(&riwayatPemeriksaan); err != nil {
+				c.JSON(http.StatusBadRequest, common.Response{
+					Message:    err.Error(),
+					Status:     "Bad Request",
+					StatusCode: http.StatusBadRequest,
+					Data:       nil,
+				})
+				return
+			}
+
+			if err := dokter.PatchRiwayatPemeriksaan(target, riwayatPemeriksaan); 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 update riwayat pemeriksaan",
+				Status:     "ok",
+				StatusCode: http.StatusOK,
+				Data:       nil,
+			})
+			return
+
+		case "keadaan_fisik":
+			var (
+				keadaanFisik doctorstation.KeadaanFisik
+			)
+
+			if err := c.ShouldBindJSON(&keadaanFisik); err != nil {
+				c.JSON(http.StatusBadRequest, common.Response{
+					Message:    err.Error(),
+					Status:     "Bad Request",
+					StatusCode: http.StatusBadRequest,
+					Data:       nil,
+				})
+				return
+			}
+
+			if err := dokter.PatchKeadaanFisik(target, keadaanFisik); 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 update keadaan fisik",
+				Status:     "ok",
+				StatusCode: http.StatusOK,
+				Data:       nil,
+			})
+			return
+
+		case "diagnosa":
+			var (
+				diagnosa doctorstation.Diagnosa
+			)
+
+			if err := c.ShouldBindJSON(&diagnosa); err != nil {
+				c.JSON(http.StatusBadRequest, common.Response{
+					Message:    err.Error(),
+					Status:     "Bad Request",
+					StatusCode: http.StatusBadRequest,
+					Data:       nil,
+				})
+				return
+			}
+
+			if err := dokter.PatchDiagnosa(target, diagnosa); 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 update diagnosa",
+				Status:     "ok",
+				StatusCode: http.StatusOK,
+				Data:       nil,
+			})
+			return
+
+		case "anatomi":
+			var (
+				anatomi doctorstation.Anatomi
+			)
+
+			if err := c.ShouldBindJSON(&anatomi); err != nil {
+				c.JSON(http.StatusBadRequest, common.Response{
+					Message:    err.Error(),
+					Status:     "Bad Request",
+					StatusCode: http.StatusBadRequest,
+					Data:       nil,
+				})
+				return
+			}
+
+			if err := dokter.PatchAnatomi(target, anatomi); 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 update anatomi",
+				Status:     "ok",
+				StatusCode: http.StatusOK,
+				Data:       nil,
+			})
+			return
+
+		case "pemeriksaan_fisik":
+			var (
+				pemeriksaanFisik doctorstation.PemeriksaanFisik
+			)
+
+			if err := c.ShouldBindJSON(&pemeriksaanFisik); err != nil {
+				c.JSON(http.StatusBadRequest, common.Response{
+					Message:    err.Error(),
+					Status:     "Bad Request",
+					StatusCode: http.StatusBadRequest,
+					Data:       nil,
+				})
+				return
+			}
+
+			if err := dokter.PatchPemeriksaanFisik(target, pemeriksaanFisik); 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 update pemeriksaan fisik",
+				Status:     "ok",
+				StatusCode: http.StatusOK,
+				Data:       nil,
+			})
+			return
+
+		}
+	}
+}
+
+func GetPemeriksaanDokter(c *gin.Context) {
+	findBy := c.Query("find_by")
+	target := c.Query("target")
+
+	switch findBy {
+	case "id":
+		data, err := dokter.FindPemeriksaanDokterById(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 pemeriksaan dokter",
+			Status:     "ok",
+			StatusCode: http.StatusOK,
+			Data:       data,
+		})
+		return
+
+	case "antrian_id":
+		data, err := dokter.FindPemeriksaanDokterByAntrianId(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 pemeriksaan dokter",
+			Status:     "ok",
+			StatusCode: http.StatusOK,
+			Data:       data,
+		})
+
+		return
+	}
 }
diff --git a/query/pemeriksaan/dokter/find_pemeriksaan_dokter.go b/query/pemeriksaan/dokter/find_pemeriksaan_dokter.go
index 542c164..1d0e8d9 100644
--- a/query/pemeriksaan/dokter/find_pemeriksaan_dokter.go
+++ b/query/pemeriksaan/dokter/find_pemeriksaan_dokter.go
@@ -75,7 +75,7 @@ func FindPemeriksaanDokterById(pemeriksaanId string) (doctorstation.PemeriksaanD
 	return pemeriksaan, nil
 }
 
-func FindPemeriksaanDokterByAntrianId(antrianId int) (doctorstation.PemeriksaanDokterMerge, error) {
+func FindPemeriksaanDokterByAntrianId(antrianId string) (doctorstation.PemeriksaanDokterMerge, error) {
 	var (
 		pemeriksaanId string
 		pemeriksaan   doctorstation.PemeriksaanDokterMerge
diff --git a/query/pemeriksaan/dokter/patch_pemeriksaan_dokter.go b/query/pemeriksaan/dokter/patch_pemeriksaan_dokter.go
index 13a718c..6bdf734 100644
--- a/query/pemeriksaan/dokter/patch_pemeriksaan_dokter.go
+++ b/query/pemeriksaan/dokter/patch_pemeriksaan_dokter.go
@@ -6,7 +6,7 @@ import (
 	"time"
 )
 
-func PatchPemeriksaanFisik(antrianId int, pemeriksaanFisik doctorstation.PemeriksaanFisik) error {
+func PatchPemeriksaanFisik(antrianId string, pemeriksaanFisik doctorstation.PemeriksaanFisik) error {
 	var (
 		pemeriksaanDokterId int
 	)
@@ -23,7 +23,7 @@ func PatchPemeriksaanFisik(antrianId int, pemeriksaanFisik doctorstation.Pemerik
 	return nil
 }
 
-func PatchRiwayatPemeriksaan(antrianId int, riwayatPemeriksaan doctorstation.RiwayatPemeriksaan) error {
+func PatchRiwayatPemeriksaan(antrianId string, riwayatPemeriksaan doctorstation.RiwayatPemeriksaan) error {
 	var (
 		pemeriksaanDokterId int
 	)
@@ -40,7 +40,7 @@ func PatchRiwayatPemeriksaan(antrianId int, riwayatPemeriksaan doctorstation.Riw
 	return nil
 }
 
-func PatchKeadaanFisik(antrianId int, keadaanFisik doctorstation.KeadaanFisik) error {
+func PatchKeadaanFisik(antrianId string, keadaanFisik doctorstation.KeadaanFisik) error {
 	var (
 		pemeriksaanDokterId int
 	)
@@ -57,7 +57,7 @@ func PatchKeadaanFisik(antrianId int, keadaanFisik doctorstation.KeadaanFisik) e
 	return nil
 }
 
-func PatchDiagnosa(antrianId int, diagnosa doctorstation.Diagnosa) error {
+func PatchDiagnosa(antrianId string, diagnosa doctorstation.Diagnosa) error {
 	var (
 		pemeriksaanDokterId int
 	)
@@ -75,7 +75,7 @@ func PatchDiagnosa(antrianId int, diagnosa doctorstation.Diagnosa) error {
 
 }
 
-func PatchAnatomi(antrianId int, anatomi doctorstation.Anatomi) error {
+func PatchAnatomi(antrianId string, anatomi doctorstation.Anatomi) error {
 	var (
 		pemeriksaanDokterId int
 	)
-- 
GitLab