create/update validation. validate diagnosa, tindakan, pasien
This commit is contained in:
@@ -3,9 +3,12 @@ package antrianoperasi
|
||||
import (
|
||||
"log"
|
||||
|
||||
diagnosa "antrian-operasi/internal/domain/reference/diagnosa"
|
||||
dokter "antrian-operasi/internal/domain/reference/dokter"
|
||||
kategori "antrian-operasi/internal/domain/reference/kategori"
|
||||
"antrian-operasi/internal/domain/reference/pasien"
|
||||
spesialis "antrian-operasi/internal/domain/reference/spesialis"
|
||||
tindakan "antrian-operasi/internal/domain/reference/tindakan"
|
||||
"antrian-operasi/internal/shared"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -16,15 +19,21 @@ type AntrianOperasiHandler struct {
|
||||
repoKategori kategori.IKategoriRepository
|
||||
repoSpesialis spesialis.ISpesialisRepository
|
||||
repoDokter dokter.IDokterRepository
|
||||
repoDiagnosa diagnosa.IDiagnosaRepository
|
||||
repoTindakan tindakan.ITindakanRepository
|
||||
repoPasien pasien.IPasienRepository
|
||||
}
|
||||
|
||||
func NewAntrianOperasiHandler(
|
||||
repo IAntrianOperasiRepository,
|
||||
repoKategori kategori.IKategoriRepository,
|
||||
repoSpesialis spesialis.ISpesialisRepository,
|
||||
repoDokter dokter.IDokterRepository) AntrianOperasiHandler {
|
||||
repoDokter dokter.IDokterRepository,
|
||||
repoDiagnosa diagnosa.IDiagnosaRepository,
|
||||
repoTindakan tindakan.ITindakanRepository,
|
||||
repoPasien pasien.IPasienRepository) AntrianOperasiHandler {
|
||||
return AntrianOperasiHandler{
|
||||
repo, repoKategori, repoSpesialis, repoDokter,
|
||||
repo, repoKategori, repoSpesialis, repoDokter, repoDiagnosa, repoTindakan, repoPasien,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,8 +10,6 @@ func (req CreatePasienOperasiRequest) DataValidation(c *gin.Context, handler Ant
|
||||
isValid := false
|
||||
var errValidation []string
|
||||
|
||||
// validasi status operasi (1,2,3,4)
|
||||
|
||||
// validasi kategori
|
||||
_, err := handler.repoKategori.GetKategoriById(c, req.RencanaOperasiData.KategoriOperasi)
|
||||
if err != nil {
|
||||
@@ -40,6 +38,33 @@ func (req CreatePasienOperasiRequest) DataValidation(c *gin.Context, handler Ant
|
||||
}
|
||||
}
|
||||
|
||||
// validasi kode diagnosa
|
||||
for _, dd := range req.DiagnosisItem {
|
||||
_, err := handler.repoDiagnosa.GetDiagnosaByKode(c, dd.KodeDiagnosa)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
errValidation = append(errValidation, err.Error())
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
// validasi kode tindakan
|
||||
for _, dt := range req.TindakanItems {
|
||||
_, err := handler.repoTindakan.GetTindakanByKode(c, *dt.KodeTindakan)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
errValidation = append(errValidation, err.Error())
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
// validasi no rekam medis
|
||||
_, err = handler.repoPasien.GetPasienByNoMr(c, req.FormData.NoRekamMedis)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
errValidation = append(errValidation, err.Error())
|
||||
}
|
||||
|
||||
if len(errValidation) == 0 {
|
||||
isValid = true
|
||||
}
|
||||
|
||||
@@ -2,9 +2,12 @@ package antrianoperasi
|
||||
|
||||
import (
|
||||
"antrian-operasi/internal/database"
|
||||
"antrian-operasi/internal/domain/reference/diagnosa"
|
||||
"antrian-operasi/internal/domain/reference/dokter"
|
||||
"antrian-operasi/internal/domain/reference/kategori"
|
||||
"antrian-operasi/internal/domain/reference/pasien"
|
||||
"antrian-operasi/internal/domain/reference/spesialis"
|
||||
"antrian-operasi/internal/domain/reference/tindakan"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
@@ -14,9 +17,12 @@ func RegisterRoutes(r *gin.RouterGroup, dbService database.Service) {
|
||||
kategoriRepo := kategori.NewRepository(dbService)
|
||||
spesialisRepo := spesialis.NewRepository(dbService)
|
||||
dokterRepo := dokter.NewRepository(dbService)
|
||||
diagnosaRepo := diagnosa.NewRepository(dbService)
|
||||
tindakanRepo := tindakan.NewRepository(dbService)
|
||||
pasienRepo := pasien.NewRepository(dbService)
|
||||
|
||||
antrianOperasiHandler := NewAntrianOperasiHandler(
|
||||
antrianOperasiRepo, kategoriRepo, spesialisRepo, dokterRepo)
|
||||
antrianOperasiRepo, kategoriRepo, spesialisRepo, dokterRepo, diagnosaRepo, tindakanRepo, pasienRepo)
|
||||
|
||||
r.POST("/antrian-operasi", antrianOperasiHandler.CreateAntrianOperasi)
|
||||
r.GET("/antrian-operasi", antrianOperasiHandler.GetListAntrianOperasi)
|
||||
|
||||
@@ -2,9 +2,12 @@ package diagnosa
|
||||
|
||||
import (
|
||||
"antrian-operasi/internal/database"
|
||||
"log"
|
||||
|
||||
queryUtils "antrian-operasi/internal/utils/query"
|
||||
|
||||
"errors"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
@@ -13,6 +16,7 @@ const TBL_NAME = "icd"
|
||||
|
||||
type IDiagnosaRepository interface {
|
||||
SearchableListDiagnosa(c *gin.Context) (ListDiagnosaModel, error)
|
||||
GetDiagnosaByKode(c *gin.Context, kode string) (DiagnosaModel, error)
|
||||
}
|
||||
|
||||
type diagnosaRepo struct {
|
||||
@@ -69,3 +73,48 @@ func (r diagnosaRepo) SearchableListDiagnosa(c *gin.Context) (ListDiagnosaModel,
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (r diagnosaRepo) GetDiagnosaByKode(c *gin.Context, kode string) (DiagnosaModel, error) {
|
||||
var resultQuery []DiagnosaModel
|
||||
var result DiagnosaModel
|
||||
|
||||
query := queryUtils.DynamicQuery{
|
||||
From: TBL_NAME,
|
||||
Fields: []queryUtils.SelectField{
|
||||
{Expression: "icd_code"},
|
||||
{Expression: "jenis_penyakit"},
|
||||
{Expression: "sebabpenyakit"},
|
||||
},
|
||||
Filters: []queryUtils.FilterGroup{
|
||||
{
|
||||
Filters: []queryUtils.DynamicFilter{
|
||||
{Column: "icd_code", Operator: queryUtils.OpILike, Value: kode},
|
||||
}, LogicOp: "AND",
|
||||
},
|
||||
},
|
||||
Limit: 1,
|
||||
}
|
||||
|
||||
dbconn, err := r.db.GetSQLXDB(DB_NAME)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
err = r.queryBuilder.ExecuteQuery(
|
||||
c, dbconn, query, &resultQuery)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
if len(resultQuery) == 0 {
|
||||
log.Println(query)
|
||||
notFoundError := errors.New("diagnosa not found : " + kode)
|
||||
return result, notFoundError
|
||||
}
|
||||
|
||||
for _, x := range resultQuery {
|
||||
log.Println(x.KodeDiagnosa)
|
||||
}
|
||||
|
||||
return resultQuery[0], nil
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ const TBL_NAME = "m_pasien"
|
||||
|
||||
type IPasienRepository interface {
|
||||
SearchableListPasien(c *gin.Context) (ListPasienModel, error)
|
||||
GetPasienByNoMr(c *gin.Context, id int) (PasienModel, error)
|
||||
GetPasienByNoMr(c *gin.Context, noMr string) (PasienModel, error)
|
||||
}
|
||||
|
||||
type pasienRepo struct {
|
||||
@@ -93,31 +93,29 @@ func (r pasienRepo) SearchableListPasien(c *gin.Context) (ListPasienModel, error
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (r pasienRepo) GetPasienByNoMr(c *gin.Context, id int) (PasienModel, error) {
|
||||
func (r pasienRepo) GetPasienByNoMr(c *gin.Context, noMr string) (PasienModel, error) {
|
||||
var resultQuery ListPasienModel
|
||||
var result PasienModel
|
||||
|
||||
query := baseSelectQuery()
|
||||
|
||||
query.Filters = append(query.Filters, queryUtils.FilterGroup{Filters: []queryUtils.DynamicFilter{
|
||||
{Column: "id", Operator: queryUtils.OpEqual, Value: id},
|
||||
{Column: "nomr", Operator: queryUtils.OpEqual, Value: noMr},
|
||||
}})
|
||||
|
||||
dbconn, err := r.db.GetSQLXDB(DB_NAME)
|
||||
if err != nil {
|
||||
// log.Fatalf("unable to connect db %s", err)
|
||||
return result, err
|
||||
}
|
||||
|
||||
err = r.queryBuilder.ExecuteQuery(
|
||||
c, dbconn, query, &resultQuery)
|
||||
if err != nil {
|
||||
// log.Fatalf("unable to execute query %s", err)
|
||||
return result, err
|
||||
}
|
||||
|
||||
if len(resultQuery) == 0 {
|
||||
notFoundError := errors.New("kategori not found")
|
||||
notFoundError := errors.New("pasien not found, no rekam medis : " + noMr)
|
||||
return result, notFoundError
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@ import (
|
||||
|
||||
queryUtils "antrian-operasi/internal/utils/query"
|
||||
|
||||
"errors"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
@@ -13,9 +15,10 @@ const TBL_NAME = "icd_cm"
|
||||
|
||||
type ITindakanRepository interface {
|
||||
SearchableListTindakan(c *gin.Context) (ListTindakanModel, error)
|
||||
GetTindakanByKode(c *gin.Context, kode string) (TindakanModel, error)
|
||||
}
|
||||
|
||||
type diagnosaRepo struct {
|
||||
type tindakanRepo struct {
|
||||
queryBuilder *queryUtils.QueryBuilder
|
||||
db database.Service
|
||||
}
|
||||
@@ -27,13 +30,13 @@ func NewRepository(dbService database.Service) ITindakanRepository {
|
||||
}).
|
||||
SetSecurityOptions(false, 100)
|
||||
|
||||
return diagnosaRepo{
|
||||
return tindakanRepo{
|
||||
queryBuilder: queryBuilder,
|
||||
db: dbService,
|
||||
}
|
||||
}
|
||||
|
||||
func (r diagnosaRepo) SearchableListTindakan(c *gin.Context) (ListTindakanModel, error) {
|
||||
func (r tindakanRepo) SearchableListTindakan(c *gin.Context) (ListTindakanModel, error) {
|
||||
var result ListTindakanModel
|
||||
search := c.Query("search")
|
||||
|
||||
@@ -67,3 +70,42 @@ func (r diagnosaRepo) SearchableListTindakan(c *gin.Context) (ListTindakanModel,
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (r tindakanRepo) GetTindakanByKode(c *gin.Context, kode string) (TindakanModel, error) {
|
||||
var resultQuery []TindakanModel
|
||||
var result TindakanModel
|
||||
|
||||
query := queryUtils.DynamicQuery{
|
||||
From: TBL_NAME,
|
||||
Fields: []queryUtils.SelectField{
|
||||
{Expression: "kode"},
|
||||
{Expression: "keterangan"},
|
||||
},
|
||||
Filters: []queryUtils.FilterGroup{
|
||||
{
|
||||
Filters: []queryUtils.DynamicFilter{
|
||||
{Column: "kode", Operator: queryUtils.OpILike, Value: kode},
|
||||
}, LogicOp: "AND",
|
||||
},
|
||||
},
|
||||
Limit: 1,
|
||||
}
|
||||
|
||||
dbconn, err := r.db.GetSQLXDB(DB_NAME)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
err = r.queryBuilder.ExecuteQuery(
|
||||
c, dbconn, query, &resultQuery)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
if len(resultQuery) == 0 {
|
||||
notFoundError := errors.New("tindakan not found : " + kode)
|
||||
return result, notFoundError
|
||||
}
|
||||
|
||||
return resultQuery[0], nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user