create antrian operasi structure
This commit is contained in:
No files matched your search
@@ -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)
|
||||||
|
}
|
||||||
@@ -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"`
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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"`
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package antrianoperasi
|
||||||
|
|
||||||
|
import "log"
|
||||||
|
|
||||||
|
func (req CreatePasienOperasiRequest) DataValidation() error {
|
||||||
|
log.Println("TODO : Data Validation")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -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 (
|
import (
|
||||||
"antrian-operasi/internal/config"
|
"antrian-operasi/internal/config"
|
||||||
"antrian-operasi/internal/database"
|
"antrian-operasi/internal/database"
|
||||||
|
antrianoperasi "antrian-operasi/internal/domain/antrian_operasi"
|
||||||
"antrian-operasi/internal/domain/reference/dokter"
|
"antrian-operasi/internal/domain/reference/dokter"
|
||||||
"antrian-operasi/internal/domain/reference/kategori"
|
"antrian-operasi/internal/domain/reference/kategori"
|
||||||
"antrian-operasi/internal/domain/reference/spesialis"
|
"antrian-operasi/internal/domain/reference/spesialis"
|
||||||
@@ -34,6 +35,7 @@ func RegisterRoutes(cfg *config.Config, dbService database.Service) *gin.Engine
|
|||||||
kategori.RegisterRoutes(api, dbService)
|
kategori.RegisterRoutes(api, dbService)
|
||||||
spesialis.RegisterRoutes(api, dbService)
|
spesialis.RegisterRoutes(api, dbService)
|
||||||
dokter.RegisterRoutes(api, dbService)
|
dokter.RegisterRoutes(api, dbService)
|
||||||
|
antrianoperasi.RegisterRoutes(api, dbService)
|
||||||
}
|
}
|
||||||
|
|
||||||
return router
|
return router
|
||||||
|
|||||||
Reference in New Issue
Block a user