API update status antrian
This commit is contained in:
@@ -173,6 +173,39 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"/antrian-operasi/{id}/update-status": {
|
||||
"put": {
|
||||
"tags": [
|
||||
"Antrian Operasi"
|
||||
],
|
||||
"summary": "Update Status Antrian Operasi",
|
||||
"parameters": [
|
||||
{
|
||||
"description": "Update Status Pasien Operasi",
|
||||
"name": "body",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/antrianoperasi.StatusPasienRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/shared.BaseResponse"
|
||||
}
|
||||
},
|
||||
"500": {
|
||||
"description": "Internal Server Error",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/shared.BaseErrorResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/dashboard/antrian-per-kategori/": {
|
||||
"get": {
|
||||
"tags": [
|
||||
|
||||
@@ -167,6 +167,39 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/antrian-operasi/{id}/update-status": {
|
||||
"put": {
|
||||
"tags": [
|
||||
"Antrian Operasi"
|
||||
],
|
||||
"summary": "Update Status Antrian Operasi",
|
||||
"parameters": [
|
||||
{
|
||||
"description": "Update Status Pasien Operasi",
|
||||
"name": "body",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/antrianoperasi.StatusPasienRequest"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/shared.BaseResponse"
|
||||
}
|
||||
},
|
||||
"500": {
|
||||
"description": "Internal Server Error",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/shared.BaseErrorResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/dashboard/antrian-per-kategori/": {
|
||||
"get": {
|
||||
"tags": [
|
||||
|
||||
@@ -485,6 +485,27 @@ paths:
|
||||
summary: Update Antrian Operasi
|
||||
tags:
|
||||
- Antrian Operasi
|
||||
/antrian-operasi/{id}/update-status:
|
||||
put:
|
||||
parameters:
|
||||
- description: Update Status Pasien Operasi
|
||||
in: body
|
||||
name: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/antrianoperasi.StatusPasienRequest'
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
schema:
|
||||
$ref: '#/definitions/shared.BaseResponse'
|
||||
"500":
|
||||
description: Internal Server Error
|
||||
schema:
|
||||
$ref: '#/definitions/shared.BaseErrorResponse'
|
||||
summary: Update Status Antrian Operasi
|
||||
tags:
|
||||
- Antrian Operasi
|
||||
/dashboard/antrian-per-kategori/:
|
||||
get:
|
||||
responses:
|
||||
|
||||
@@ -48,9 +48,9 @@ func (h AntrianOperasiHandler) CreateAntrianOperasi(c *gin.Context) {
|
||||
var req CreatePasienOperasiRequest
|
||||
// Binding format JSON
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(500, shared.BaseErrorResponse{
|
||||
c.JSON(400, shared.BaseErrorResponse{
|
||||
Success: false,
|
||||
Code: 500,
|
||||
Code: 400,
|
||||
Message: "error bind json",
|
||||
Errors: shared.ValidationError(err),
|
||||
})
|
||||
@@ -61,9 +61,9 @@ func (h AntrianOperasiHandler) CreateAntrianOperasi(c *gin.Context) {
|
||||
isValid, errValidation := req.DataValidation(c, h)
|
||||
if isValid == false {
|
||||
log.Printf("validation error : %s", errValidation)
|
||||
c.JSON(500, shared.BaseErrorResponse{
|
||||
c.JSON(400, shared.BaseErrorResponse{
|
||||
Success: false,
|
||||
Code: 500,
|
||||
Code: 400,
|
||||
Message: "validation error",
|
||||
Errors: errValidation,
|
||||
})
|
||||
@@ -153,9 +153,9 @@ func (h AntrianOperasiHandler) UpdateAntrianOperasi(c *gin.Context) {
|
||||
var req CreatePasienOperasiRequest
|
||||
// Binding format JSON
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(500, shared.BaseErrorResponse{
|
||||
c.JSON(400, shared.BaseErrorResponse{
|
||||
Success: false,
|
||||
Code: 500,
|
||||
Code: 400,
|
||||
Message: "error bind json",
|
||||
Errors: shared.ValidationError(err),
|
||||
})
|
||||
@@ -166,9 +166,9 @@ func (h AntrianOperasiHandler) UpdateAntrianOperasi(c *gin.Context) {
|
||||
isValid, errValidation := req.DataValidation(c, h)
|
||||
if isValid == false {
|
||||
log.Printf("validation error : %s", errValidation)
|
||||
c.JSON(500, shared.BaseErrorResponse{
|
||||
c.JSON(400, shared.BaseErrorResponse{
|
||||
Success: false,
|
||||
Code: 500,
|
||||
Code: 400,
|
||||
Message: "validation error",
|
||||
Errors: errValidation,
|
||||
})
|
||||
@@ -189,5 +189,56 @@ func (h AntrianOperasiHandler) UpdateAntrianOperasi(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(201, shared.ToBaseResponse(res, true, 201, "success update antrian operasi"))
|
||||
c.JSON(200, shared.ToBaseResponse(res, true, 200, "success update antrian operasi"))
|
||||
}
|
||||
|
||||
// UpdateStatusAntrianOperasi godoc
|
||||
// @Summary Update Status Antrian Operasi
|
||||
// @Tags Antrian Operasi
|
||||
// @Param body body StatusPasienRequest true "Update Status Pasien Operasi"
|
||||
// @Success 200 {object} shared.BaseResponse
|
||||
// @Failure 500 {object} shared.BaseErrorResponse
|
||||
// @Router /antrian-operasi/{id}/update-status [put]
|
||||
func (h AntrianOperasiHandler) UpdateStatusAntrianOperasi(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var req StatusPasienRequest
|
||||
// Binding format JSON
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(400, shared.BaseErrorResponse{
|
||||
Success: false,
|
||||
Code: 400,
|
||||
Message: "error bind json",
|
||||
Errors: shared.ValidationError(err),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// Request data master validation
|
||||
isValid, errValidation := req.UpdateStatusValidation()
|
||||
if isValid == false {
|
||||
log.Printf("validation error : %s", errValidation)
|
||||
c.JSON(400, shared.BaseErrorResponse{
|
||||
Success: false,
|
||||
Code: 400,
|
||||
Message: "validation error",
|
||||
Errors: errValidation,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// Start update database
|
||||
res, err := h.repo.UpdateStatusAntrianOperasi(c, id, req)
|
||||
if err != nil {
|
||||
log.Printf("update antrian error : %s", err)
|
||||
errMessage := []string{err.Error()}
|
||||
c.JSON(500, shared.BaseErrorResponse{
|
||||
Success: false,
|
||||
Code: 500,
|
||||
Message: "update error",
|
||||
Errors: errMessage,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(200, shared.ToBaseResponse(res, true, 200, "success update antrian operasi"))
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ type IAntrianOperasiRepository interface {
|
||||
SearchableListAntrianOperasi(c *gin.Context) (ListPasienOperasiPaginate, error)
|
||||
GetAntrianOperasiById(c *gin.Context, id string) (DetailPasienOperasiResultQuery, error)
|
||||
UpdateAntrianOperasi(c *gin.Context, id string, req CreatePasienOperasiRequest) (CreatePasienOperasiRequest, error)
|
||||
UpdateStatusAntrianOperasi(c *gin.Context, id string, req StatusPasienRequest) (StatusPasienRequest, error)
|
||||
}
|
||||
|
||||
type antrianOperasiRepo struct {
|
||||
@@ -307,7 +308,7 @@ func (r antrianOperasiRepo) CreateAntrianOperasi(c *gin.Context, req CreatePasie
|
||||
"\"Nomor_spesialis\"", "\"Nomor_sub_spesialis\"",
|
||||
}, Values: []interface{}{
|
||||
idAntrian,
|
||||
req.StatusPasienData.StatusOperasi,
|
||||
"draft",
|
||||
time.Now(),
|
||||
req.FormData.NoRekamMedis,
|
||||
req.FormData.NoKtp,
|
||||
@@ -319,7 +320,7 @@ func (r antrianOperasiRepo) CreateAntrianOperasi(c *gin.Context, req CreatePasie
|
||||
req.RencanaOperasiData.TanggalDaftar,
|
||||
req.RencanaOperasiData.KategoriOperasi,
|
||||
req.RencanaOperasiData.RencanaOperasi,
|
||||
req.StatusPasienData.StatusOperasi,
|
||||
"1",
|
||||
1, // nomor
|
||||
req.RencanaOperasiData.Spesialis,
|
||||
req.RencanaOperasiData.SubSpesialis,
|
||||
@@ -778,13 +779,13 @@ func (r antrianOperasiRepo) UpdateAntrianOperasi(c *gin.Context, id string, req
|
||||
Columns: []string{
|
||||
"date_updated", "\"No_rekam_medis\"", "\"No_KTP\"", "\"Nama_pasien\"", "\"Jenis_kelamin\"",
|
||||
"\"Tanggal_lahir\"", "\"Umur\"", "\"Alamat\"", "\"Kategori_operasi\"",
|
||||
"\"Rencana_operasi\"", "\"Keterangan\"", "\"Tanggal_selesai_operasi\"",
|
||||
"\"Rencana_operasi\"", "\"Keterangan\"",
|
||||
"\"Status_operasi\"", "\"Spesialis\"", "\"Sub_spesialis\"",
|
||||
},
|
||||
Values: []interface{}{
|
||||
time.Now(), req.FormData.NoRekamMedis, req.FormData.NoKtp, req.FormData.NamaPasien, req.FormData.JenisKelamin,
|
||||
req.FormData.TglLahir, req.FormData.Umur, req.FormData.Alamat, req.RencanaOperasiData.KategoriOperasi,
|
||||
req.RencanaOperasiData.RencanaOperasi, req.RencanaOperasiData.Keterangan, req.StatusPasienData.TglSelesai,
|
||||
req.RencanaOperasiData.RencanaOperasi, req.RencanaOperasiData.Keterangan,
|
||||
req.StatusPasienData.StatusOperasi, req.RencanaOperasiData.Spesialis, req.RencanaOperasiData.SubSpesialis,
|
||||
},
|
||||
}
|
||||
@@ -842,3 +843,48 @@ func (r antrianOperasiRepo) UpdateAntrianOperasi(c *gin.Context, id string, req
|
||||
|
||||
return req, nil
|
||||
}
|
||||
|
||||
func (r antrianOperasiRepo) UpdateStatusAntrianOperasi(c *gin.Context, id string, req StatusPasienRequest) (StatusPasienRequest, error) {
|
||||
// Update main table
|
||||
updateMainQuery := queryUtils.UpdateData{
|
||||
Columns: []string{
|
||||
"date_updated", "\"Keterangan\"", "\"Status_operasi\"",
|
||||
},
|
||||
Values: []interface{}{
|
||||
time.Now(), req.KeteranganStatus, req.StatusOperasi,
|
||||
},
|
||||
}
|
||||
|
||||
if req.StatusOperasi == "2" {
|
||||
updateMainQuery.Columns = append(updateMainQuery.Columns, "\"Tanggal_selesai_operasi\"")
|
||||
updateMainQuery.Values = append(updateMainQuery.Values, req.TglSelesai)
|
||||
}
|
||||
|
||||
filters := []queryUtils.FilterGroup{
|
||||
{
|
||||
Filters: []queryUtils.DynamicFilter{
|
||||
{Column: "id", Operator: queryUtils.OpEqual, Value: id},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
sqlUpdateMain, args, err := r.queryBuilder.BuildUpdateQuery(TBL_NAME, updateMainQuery, filters)
|
||||
if err != nil {
|
||||
log.Printf("Unable to create query update : %s", err)
|
||||
return req, err
|
||||
}
|
||||
|
||||
db, err := r.db.GetSQLXDB(DB_NAME)
|
||||
if err != nil {
|
||||
log.Printf("Erorr initiating db : %v", err)
|
||||
return req, err
|
||||
}
|
||||
|
||||
_, err = db.ExecContext(c, sqlUpdateMain, args...)
|
||||
if err != nil {
|
||||
log.Printf("Error executing query : %v", err)
|
||||
return req, err
|
||||
}
|
||||
|
||||
return req, nil
|
||||
}
|
||||
|
||||
@@ -71,3 +71,22 @@ func (req CreatePasienOperasiRequest) DataValidation(c *gin.Context, handler Ant
|
||||
|
||||
return isValid, errValidation
|
||||
}
|
||||
|
||||
func (req StatusPasienRequest) UpdateStatusValidation() (bool, []string) {
|
||||
isValid := false
|
||||
var errValidation []string
|
||||
|
||||
if req.StatusOperasi != "2" && req.TglSelesai != nil {
|
||||
errValidation = append(errValidation, "Tanggal selesai terisi ketika status belum selesai")
|
||||
}
|
||||
|
||||
if req.StatusOperasi == "2" && req.TglSelesai == nil {
|
||||
errValidation = append(errValidation, "Tanggal selesai harus diisi ketika status selesai")
|
||||
}
|
||||
|
||||
if len(errValidation) == 0 {
|
||||
isValid = true
|
||||
}
|
||||
|
||||
return isValid, errValidation
|
||||
}
|
||||
|
||||
@@ -28,4 +28,5 @@ func RegisterRoutes(r *gin.RouterGroup, dbService database.Service) {
|
||||
r.GET("/antrian-operasi", antrianOperasiHandler.GetListAntrianOperasi)
|
||||
r.GET("/antrian-operasi/:id", antrianOperasiHandler.GetDetailAntrianOperasi)
|
||||
r.PUT("/antrian-operasi/:id", antrianOperasiHandler.UpdateAntrianOperasi)
|
||||
r.PUT("/antrian-operasi/:id/update-status", antrianOperasiHandler.UpdateStatusAntrianOperasi)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user