create antrian operasi structure
This commit is contained in:
43
internal/domain/antrian_operasi/handler.go
Normal file
43
internal/domain/antrian_operasi/handler.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package antrianoperasi
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type AntrianOperasiHandler struct {
|
||||
repo IAntrianOperasiRepository
|
||||
}
|
||||
|
||||
func NewAntrianOperasiHandler(repo IAntrianOperasiRepository) AntrianOperasiHandler {
|
||||
return AntrianOperasiHandler{repo}
|
||||
}
|
||||
|
||||
func (h AntrianOperasiHandler) CreateAntrianOperasi(c *gin.Context) {
|
||||
var req CreatePasienOperasiRequest
|
||||
// Binding format JSON
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
log.Printf("error bind json : %s", err)
|
||||
c.JSON(500, err)
|
||||
return
|
||||
}
|
||||
|
||||
// Request data master validation
|
||||
errValidation := req.DataValidation()
|
||||
if errValidation != nil {
|
||||
log.Printf("validation error : %s", errValidation)
|
||||
c.JSON(500, errValidation)
|
||||
return
|
||||
}
|
||||
|
||||
// Start insert database
|
||||
res, err := h.repo.CreateAntrianOperasi(c, req)
|
||||
if err != nil {
|
||||
log.Printf("insert error : %s", err)
|
||||
c.JSON(500, err)
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(201, res)
|
||||
}
|
||||
50
internal/domain/antrian_operasi/model.go
Normal file
50
internal/domain/antrian_operasi/model.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package antrianoperasi
|
||||
|
||||
import "database/sql"
|
||||
|
||||
type ListDiagnosaPasienOperasi struct {
|
||||
ID int `json:"id" db:"id"`
|
||||
KodeDiagnosa string `json:"kode_diagnosa" db:"Kode_diagnosa"`
|
||||
Diagnosa string `json:"diagnosa" db:"Diagnosa"`
|
||||
Keterangan string `json:"keterangan" db:"Keterangan"`
|
||||
JenisDiagnosa string `json:"jenis_diagnosa" db:"Jenis_diagnosa"`
|
||||
}
|
||||
|
||||
type ListTindakanPasienOperasi struct {
|
||||
ID int `json:"id" db:"id"`
|
||||
KodeTindakan string `json:"kode_tindakan" db:"Kode_tindakan"`
|
||||
Tindakan string `json:"tindakan" db:"Tindakan"`
|
||||
TindakanTambahan string `json:"tindakan_tambahan" db:"Tindakan_tambahan"`
|
||||
}
|
||||
|
||||
type ListTeleponPasienOperasi struct {
|
||||
ID int `json:"id" db:"id"`
|
||||
NoTelepon string `json:"no_telepon" db:"Nomor_telepon"`
|
||||
}
|
||||
|
||||
type ListPasienOperasi struct {
|
||||
ID string `db:"id"`
|
||||
Status string `db:"status"`
|
||||
NoRekamMedis string `db:"No_rekam_medis"`
|
||||
NoKtp string `db:"No_KTP"`
|
||||
NamaPasien string `db:"Nama_pasien"`
|
||||
JenisKelamin string `db:"Jenis_kelamin"`
|
||||
TglLahir sql.NullTime `db:"Tanggal_lahir"`
|
||||
Umur string `db:"Umur"`
|
||||
Alamat string `db:"Alamat"`
|
||||
TglDaftar sql.NullTime `db:"Tanggal_daftar"`
|
||||
IdKategoriOperasi int `db:"Kategori_operasi"`
|
||||
RencanaOperasi string `db:"Rencana_operasi"`
|
||||
Keterangan string `db:"Keterangan"`
|
||||
TglSelesaiOperasi sql.NullTime `db:"Tanggal_selesai_operasi"`
|
||||
StatusOperasi string `db:"Status_operasi"`
|
||||
Nomor int `db:"Nomor"`
|
||||
OldKategori int `db:"Old_kategori"`
|
||||
IdSpesialis int `db:"Spesialis"`
|
||||
IdSubSpesialis int `db:"Sub_spesialis"`
|
||||
KeteranganStatusPasien string `db:"Keterangan_status_pasien"`
|
||||
NomorSpesialis int `db:"Nomor_spesialis"`
|
||||
NomorSubSpesialis int `db:"Nomor_sub_spesialis"`
|
||||
OldSpesialis int `db:"Old_spesialis"`
|
||||
OldSubSpesialis int `db:"Old_sub_spesialis"`
|
||||
}
|
||||
53
internal/domain/antrian_operasi/repository.go
Normal file
53
internal/domain/antrian_operasi/repository.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package antrianoperasi
|
||||
|
||||
import (
|
||||
"antrian-operasi/internal/database"
|
||||
queryUtils "antrian-operasi/internal/utils/query"
|
||||
"log"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
const DB_NAME = "db_antrian"
|
||||
const TABLE_NAME = "data_pasien_operasi"
|
||||
|
||||
type IAntrianOperasiRepository interface {
|
||||
CreateAntrianOperasi(c *gin.Context, req CreatePasienOperasiRequest) (CreatePasienOperasiRequest, error)
|
||||
}
|
||||
|
||||
type antrianOperasiRepo struct {
|
||||
queryBuilder *queryUtils.QueryBuilder
|
||||
db database.Service
|
||||
}
|
||||
|
||||
func NewAntrianOperasiRepo(dbService database.Service) IAntrianOperasiRepository {
|
||||
queryBuilder := queryUtils.NewQueryBuilder(queryUtils.DBTypePostgreSQL).
|
||||
SetAllowedColumns([]string{})
|
||||
queryBuilder.SetSecurityOptions(false, 100)
|
||||
|
||||
return antrianOperasiRepo{
|
||||
queryBuilder: queryBuilder,
|
||||
db: dbService,
|
||||
}
|
||||
}
|
||||
|
||||
func (r antrianOperasiRepo) CreateAntrianOperasi(c *gin.Context, req CreatePasienOperasiRequest) (CreatePasienOperasiRequest, error) {
|
||||
db, err := r.db.GetSQLXDB(DB_NAME)
|
||||
if err != nil {
|
||||
return req, err
|
||||
}
|
||||
|
||||
// START TRANSACTION
|
||||
tx, err := db.BeginTx(c, nil)
|
||||
if err != nil {
|
||||
return req, err
|
||||
}
|
||||
|
||||
// INSERTING
|
||||
log.Println("TODO : insert tables")
|
||||
|
||||
// COMMIT TRANSACTION
|
||||
tx.Commit()
|
||||
|
||||
return req, nil
|
||||
}
|
||||
59
internal/domain/antrian_operasi/request.go
Normal file
59
internal/domain/antrian_operasi/request.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package antrianoperasi
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type FormDataRequest struct {
|
||||
NoRekamMedis string `json:"noRekamMedis"`
|
||||
NoKtp *string `json:"noKtp"`
|
||||
NamaPasien *string `json:"namaPasien"`
|
||||
JenisKelamin *string `json:"jenisKelamin"`
|
||||
TglLahir *string `json:"tanggalLahir"`
|
||||
Umur *string `json:"umur"`
|
||||
Alamat *string `json:"alamat"`
|
||||
NoTelepon *[]string `json:"nomorTelepon"`
|
||||
}
|
||||
|
||||
type DiagnosisItemRequest struct {
|
||||
KodeDiagnosa *string `json:"kodeDiagnosa"`
|
||||
Diagnosa *string `json:"diagnosa"`
|
||||
JenisDiagnosa *string `json:"jenisDiagnosa"`
|
||||
}
|
||||
|
||||
type TindakanItemRequest struct {
|
||||
KodeTindakan *string `json:"kodeTindakan"`
|
||||
Tindakan *string `json:"tindakan"`
|
||||
TindakanTambahan *string `json:"tindakanTambahan"`
|
||||
}
|
||||
|
||||
type RencanaOperasiRequest struct {
|
||||
Spesialis int `json:"spesialis"`
|
||||
SubSpesialis int `json:"subSpesialis"`
|
||||
TanggalDaftar *time.Time `json:"tanggalDaftar"`
|
||||
KategoriOperasi int `json:"kategoriOperasi"`
|
||||
RencanaOperasi *string `json:"rencanaOperasi"`
|
||||
Keterangan *string `json:"keterangan"`
|
||||
}
|
||||
|
||||
type DokterPelaksanaItemRequest struct {
|
||||
Id *int `json:"id"`
|
||||
Nip *string `json:"nip"`
|
||||
Nama *string `json:"nama"`
|
||||
SatuanKerja *string `json:"satuan_kerja"`
|
||||
}
|
||||
|
||||
type StatusPasienRequest struct {
|
||||
TglSelesai *time.Time `json:"tanggalSelesai"`
|
||||
StatusOperasi *string `json:"statusOperasi"`
|
||||
KeteranganStatus *string `json:"keteranganStatus"`
|
||||
}
|
||||
|
||||
type CreatePasienOperasiRequest struct {
|
||||
FormData FormDataRequest `json:"formData"`
|
||||
DiagnosisItem []DiagnosisItemRequest `json:"diagnosisItems"`
|
||||
TindakanItems []TindakanItemRequest `json:"tindakanItems"`
|
||||
RencanaOperasiData RencanaOperasiRequest `json:"rencanaOperasiData"`
|
||||
DokterPelaksanaItems []DokterPelaksanaItemRequest `json:"dokterPelaksanaItems"`
|
||||
StatusPasienData StatusPasienRequest `json:"statusPasienData"`
|
||||
}
|
||||
8
internal/domain/antrian_operasi/requestValidation.go
Normal file
8
internal/domain/antrian_operasi/requestValidation.go
Normal file
@@ -0,0 +1,8 @@
|
||||
package antrianoperasi
|
||||
|
||||
import "log"
|
||||
|
||||
func (req CreatePasienOperasiRequest) DataValidation() error {
|
||||
log.Println("TODO : Data Validation")
|
||||
return nil
|
||||
}
|
||||
14
internal/domain/antrian_operasi/routes.go
Normal file
14
internal/domain/antrian_operasi/routes.go
Normal file
@@ -0,0 +1,14 @@
|
||||
package antrianoperasi
|
||||
|
||||
import (
|
||||
"antrian-operasi/internal/database"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func RegisterRoutes(r *gin.RouterGroup, dbService database.Service) {
|
||||
antrianOperasiRepo := NewAntrianOperasiRepo(dbService)
|
||||
antrianOperasiHandler := NewAntrianOperasiHandler(antrianOperasiRepo)
|
||||
|
||||
r.POST("/antrian-operasi", antrianOperasiHandler.CreateAntrianOperasi)
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package routes
|
||||
import (
|
||||
"antrian-operasi/internal/config"
|
||||
"antrian-operasi/internal/database"
|
||||
antrianoperasi "antrian-operasi/internal/domain/antrian_operasi"
|
||||
"antrian-operasi/internal/domain/reference/dokter"
|
||||
"antrian-operasi/internal/domain/reference/kategori"
|
||||
"antrian-operasi/internal/domain/reference/spesialis"
|
||||
@@ -34,6 +35,7 @@ func RegisterRoutes(cfg *config.Config, dbService database.Service) *gin.Engine
|
||||
kategori.RegisterRoutes(api, dbService)
|
||||
spesialis.RegisterRoutes(api, dbService)
|
||||
dokter.RegisterRoutes(api, dbService)
|
||||
antrianoperasi.RegisterRoutes(api, dbService)
|
||||
}
|
||||
|
||||
return router
|
||||
|
||||
Reference in New Issue
Block a user