testing
This commit is contained in:
@@ -65,15 +65,15 @@ type CreateDto struct {
|
||||
}
|
||||
|
||||
type TRujukan struct {
|
||||
NoSep string `json:"noSep"`
|
||||
NoSep string `json:"noSep"` // Surat Eligibilitas Peserta
|
||||
TglRujukan string `json:"tglRujukan"`
|
||||
PpkDirujuk string `json:"ppkDirujuk"`
|
||||
JnsPelayanan string `json:"jnsPelayanan"`
|
||||
PpkDirujuk string `json:"ppkDirujuk"` // PPK (Provider Pelayanan Kesehatan) -> kode RS tujuan
|
||||
JnsPelayanan string `json:"jnsPelayanan"` // Jenis pelayanan yang dimintakan; 1 = RawatInap; 2 = RawatJalan
|
||||
Catatan string `json:"catatan"`
|
||||
DiagRujukan string `json:"diagRujukan"`
|
||||
TipeRujukan string `json:"tipeRujukan"`
|
||||
PoliRujukan string `json:"poliRujukan"`
|
||||
User string `json:"user"`
|
||||
DiagRujukan string `json:"diagRujukan"` // Kode Diagnosa
|
||||
TipeRujukan string `json:"tipeRujukan"` // 0 = Rujukan Penuh; 1 = Rujukan Partial (hanya untuk tindakan tertentu); 2 = Balik (dikembalikan ke faskes asal)
|
||||
PoliRujukan string `json:"poliRujukan"` // Kode Poli Tujuan
|
||||
User string `json:"user"` // user yang membuat rujukan
|
||||
}
|
||||
|
||||
type ReadListDto struct {
|
||||
@@ -105,24 +105,24 @@ type FilterDto struct {
|
||||
}
|
||||
|
||||
type ReadDetailDto struct {
|
||||
Id uint16 `json:"id"`
|
||||
Id uint `json:"id"`
|
||||
Includes string `json:"includes"`
|
||||
}
|
||||
|
||||
type UpdateDto struct {
|
||||
Id uint16 `json:"id"`
|
||||
Id uint `json:"id"`
|
||||
CreateDto
|
||||
}
|
||||
|
||||
type UpdateStatusDto struct {
|
||||
Id uint16 `json:"id"`
|
||||
Id uint `json:"id"`
|
||||
StatusCode erc.DataStatusCode `json:"status_code"`
|
||||
|
||||
pa.AuthInfo
|
||||
}
|
||||
|
||||
type DeleteDto struct {
|
||||
Id uint16 `json:"id"`
|
||||
Id uint `json:"id"`
|
||||
|
||||
pa.AuthInfo
|
||||
}
|
||||
|
||||
@@ -95,10 +95,10 @@ const (
|
||||
RTCPrivate RefTypeCode = "private" // Swasta
|
||||
RTCBpjs RefTypeCode = "bpjs" // BPJS
|
||||
|
||||
APMCJkn AllPaymentMethodCode = "jkn" // JKN
|
||||
APMCJkmm AllPaymentMethodCode = "jkmm" // JKMM
|
||||
APMCSpm AllPaymentMethodCode = "spm" // SPM
|
||||
APMCPks AllPaymentMethodCode = "pks" // PKS
|
||||
APMCJkn AllPaymentMethodCode = "jkn" // JKN -> Jaminan Kesehatan Nasional -> BPJS Kesehatan
|
||||
APMCJkmm AllPaymentMethodCode = "jkmm" // JKMM -> Jaminan Kesehatan Masyarakat Miskin -> Dibiayai oleh APBD daerah
|
||||
APMCSpm AllPaymentMethodCode = "spm" // SPM -> Surat Pernyataan Miskin
|
||||
APMCPks AllPaymentMethodCode = "pks" // PKS -> Perjanjian Kerjasama -> Pembayaran melalui instansi atau perusahaan yang memiliki kontrak dengan rumah sakit
|
||||
APMCUmum AllPaymentMethodCode = "umum"
|
||||
|
||||
SRTCInternal SEPRefTypeCode = "internal" // Rujukan Internal
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package division
|
||||
package m_polihfis
|
||||
|
||||
type MPolihfis struct {
|
||||
Id uint `json:"id" gorm:"primaryKey;autoIncrement;column:id"`
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package m_poly
|
||||
|
||||
type MPoly struct {
|
||||
Kode uint `json:"kode" gorm:"primaryKey;autoIncrement;column:kode"`
|
||||
Kode uint `json:"kode" gorm:"primaryKey;column:kode"`
|
||||
Nama string `json:"nama" gorm:"column:nama"`
|
||||
Jenispoly uint `json:"jenispoly" gorm:"column:jenispoly"`
|
||||
}
|
||||
|
||||
@@ -82,7 +82,6 @@ type TPendaftaran struct {
|
||||
DokterNameHfis *string `json:"dokter_name_hfis" gorm:"column:dokter_name_hfis"`
|
||||
DokterIdHfis *string `json:"dokter_id_hfis" gorm:"column:dokter_id_hfis"`
|
||||
StatusBridging *string `json:"status_bridging" gorm:"column:status_bridging"`
|
||||
NoSpri *string `json:"no_spri" gorm:"column:no_spri"`
|
||||
}
|
||||
|
||||
func (TPendaftaran) TableName() string {
|
||||
|
||||
@@ -64,7 +64,7 @@ func (obj myBase) GetDetail(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
dto := e.ReadDetailDto{}
|
||||
sf.UrlQueryParam(&dto, *r.URL)
|
||||
dto.Id = uint16(id)
|
||||
dto.Id = uint(id)
|
||||
res, err := u.ReadDetail(dto)
|
||||
rw.DataResponse(w, res, err)
|
||||
}
|
||||
@@ -84,7 +84,7 @@ func (obj myBase) Update(w http.ResponseWriter, r *http.Request) {
|
||||
if res := rw.ValidateStructByIOR(w, r.Body, &dto); !res {
|
||||
return
|
||||
}
|
||||
dto.Id = uint16(id)
|
||||
dto.Id = uint(id)
|
||||
dto.AuthInfo = *authInfo
|
||||
|
||||
res, err := u.Update(dto)
|
||||
@@ -103,7 +103,7 @@ func (obj myBase) Delete(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
dto := e.DeleteDto{}
|
||||
dto.Id = uint16(id)
|
||||
dto.Id = uint(id)
|
||||
dto.AuthInfo = *authInfo
|
||||
|
||||
res, err := u.Delete(dto)
|
||||
@@ -175,7 +175,7 @@ func (obj myBase) Process(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
dto := e.UpdateStatusDto{
|
||||
Id: uint16(id),
|
||||
Id: uint(id),
|
||||
StatusCode: erc.DSCProcess,
|
||||
}
|
||||
|
||||
@@ -195,7 +195,7 @@ func (obj myBase) Cancel(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
dto := e.UpdateStatusDto{
|
||||
Id: uint16(id),
|
||||
Id: uint(id),
|
||||
StatusCode: erc.DSCCancel,
|
||||
}
|
||||
|
||||
@@ -211,7 +211,7 @@ func (obj myBase) Reject(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
dto := e.UpdateStatusDto{
|
||||
Id: uint16(id),
|
||||
Id: uint(id),
|
||||
StatusCode: erc.DSCRejected,
|
||||
}
|
||||
|
||||
@@ -226,7 +226,7 @@ func (obj myBase) Skip(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
dto := e.UpdateStatusDto{
|
||||
Id: uint16(id),
|
||||
Id: uint(id),
|
||||
StatusCode: erc.DSCSkipped,
|
||||
}
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ func (obj myBase) Delete(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
dto := e.DeleteDto{}
|
||||
dto.Id = uint16(id)
|
||||
dto.Id = uint(id)
|
||||
|
||||
res, err := u.Delete(dto)
|
||||
rw.DataResponse(w, res, err)
|
||||
|
||||
@@ -22,6 +22,6 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Doctor) {
|
||||
data.IHS_Number = inputSrc.IHS_Number
|
||||
data.SIP_Number = inputSrc.SIP_Number
|
||||
data.Unit_Code = inputSrc.Unit_Code
|
||||
data.Specialist_Code = inputSrc.Code
|
||||
data.Subspecialist_Code = inputSrc.Code
|
||||
data.Specialist_Code = inputSrc.Specialist_Code
|
||||
data.Subspecialist_Code = inputSrc.Subspecialist_Code
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ func Create(input e.CreateDto) (*d.Data, error) {
|
||||
}
|
||||
|
||||
// validate encounter_id
|
||||
_, err := ue.ReadDetail(ee.ReadDetailDto{Id: uint16(*input.Encounter_Id)})
|
||||
_, err := ue.ReadDetail(ee.ReadDetailDto{Id: *input.Encounter_Id})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -118,7 +118,6 @@ func Create(input e.CreateDto) (*d.Data, error) {
|
||||
// insert vclaimReference
|
||||
if vr := input.VclaimReference; vr != nil {
|
||||
t, _ := time.Parse("2006-01-02", vr.TglRujukan)
|
||||
|
||||
_, err = uv.CreateData(ev.CreateDto{
|
||||
Encounter_Id: &data.Id,
|
||||
Date: &t,
|
||||
@@ -136,8 +135,10 @@ func Create(input e.CreateDto) (*d.Data, error) {
|
||||
}
|
||||
|
||||
dataEncounter, err := ReadDetailData(e.ReadDetailDto{
|
||||
Id: uint16(data.Id),
|
||||
Includes: "Adm_Employee.User,Patient.Person.Relatives,Patient.Person.VclaimMember,VclaimReference"},
|
||||
Id: data.Id,
|
||||
Includes: "Adm_Employee.User,Patient.Person.Relatives," +
|
||||
"Patient.Person.VclaimMember,VclaimReference," +
|
||||
"Patient.Person.Contacts,Patient.Person.Addresses"},
|
||||
&event, tx)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -311,7 +312,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
|
||||
}
|
||||
|
||||
dataEncounter, err := ReadDetailData(e.ReadDetailDto{
|
||||
Id: uint16(data.Id),
|
||||
Id: data.Id,
|
||||
Includes: "Adm_Employee.User,Patient.Person.Relatives,Patient.Person.VclaimMember"},
|
||||
&event, tx)
|
||||
if err != nil {
|
||||
@@ -429,7 +430,7 @@ func Delete(input e.DeleteDto) (*d.Data, error) {
|
||||
}
|
||||
|
||||
func CheckOut(input e.DischargeDto) (*d.Data, error) {
|
||||
rdDto := e.ReadDetailDto{Id: uint16(input.Id), Includes: "Ambulatory,Rehab"}
|
||||
rdDto := e.ReadDetailDto{Id: input.Id, Includes: "Ambulatory,Rehab"}
|
||||
var data *e.Encounter
|
||||
var err error
|
||||
|
||||
@@ -516,7 +517,7 @@ func CheckOut(input e.DischargeDto) (*d.Data, error) {
|
||||
}
|
||||
|
||||
dataEncounter, err := ReadDetailData(e.ReadDetailDto{
|
||||
Id: uint16(data.Id),
|
||||
Id: data.Id,
|
||||
Includes: "DeathCause"},
|
||||
&event, tx)
|
||||
if err != nil {
|
||||
@@ -658,7 +659,7 @@ func UpdateStatusCode(input e.UpdateStatusDto) (*d.Data, error) {
|
||||
}
|
||||
|
||||
func CheckIn(input e.CheckinDto) (*d.Data, error) {
|
||||
rdDto := e.ReadDetailDto{Id: uint16(input.Id), Includes: "Rehab,Ambulatory"}
|
||||
rdDto := e.ReadDetailDto{Id: input.Id, Includes: "Rehab,Ambulatory"}
|
||||
var data *e.Encounter
|
||||
var err error
|
||||
|
||||
@@ -743,7 +744,7 @@ func CheckIn(input e.CheckinDto) (*d.Data, error) {
|
||||
}
|
||||
|
||||
dataEncounter, err := ReadDetailData(e.ReadDetailDto{
|
||||
Id: uint16(data.Id),
|
||||
Id: data.Id,
|
||||
Includes: "Adm_Employee.User"},
|
||||
&event, tx)
|
||||
if err != nil {
|
||||
@@ -776,7 +777,7 @@ func CheckIn(input e.CheckinDto) (*d.Data, error) {
|
||||
}
|
||||
|
||||
func RequestSwitchUnit(input e.SwitchUnitDto) (*d.Data, error) {
|
||||
rdDto := e.ReadDetailDto{Id: uint16(input.Id), Includes: "Responsible_Doctor"}
|
||||
rdDto := e.ReadDetailDto{Id: input.Id, Includes: "Responsible_Doctor"}
|
||||
var data *e.Encounter
|
||||
var err error
|
||||
|
||||
@@ -865,7 +866,7 @@ func RequestSwitchUnit(input e.SwitchUnitDto) (*d.Data, error) {
|
||||
}
|
||||
|
||||
func ApproveSwitchUnit(input e.ApproveUnitDto) (*d.Data, error) {
|
||||
rdDto := e.ReadDetailDto{Id: uint16(input.Id), Includes: "Responsible_Doctor"}
|
||||
rdDto := e.ReadDetailDto{Id: input.Id, Includes: "Responsible_Doctor"}
|
||||
var data *e.Encounter
|
||||
var err error
|
||||
|
||||
|
||||
@@ -68,6 +68,7 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Encounter) {
|
||||
var inputSrc *e.CreateDto
|
||||
if inputT, ok := any(input).(*e.CreateDto); ok {
|
||||
inputSrc = inputT
|
||||
data.Status_Code = erc.DSCNew
|
||||
} else {
|
||||
inputTemp := any(input).(*e.UpdateDto)
|
||||
inputSrc = &inputTemp.CreateDto
|
||||
@@ -90,7 +91,6 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Encounter) {
|
||||
data.Responsible_Doctor_Code = inputSrc.Responsible_Doctor_Code
|
||||
data.RefSource_Name = inputSrc.RefSource_Name
|
||||
data.Appointment_Id = inputSrc.Appointment_Id
|
||||
data.Status_Code = erc.DSCProcess
|
||||
data.RefType_Code = &inputSrc.RefTypeCode
|
||||
data.NewStatus = inputSrc.NewStatus
|
||||
}
|
||||
@@ -556,6 +556,7 @@ func getSoapiByResponsibleDoctor(enc e.Encounter, event *pl.Event) (data []es.So
|
||||
Code: "no responsible-doctor found",
|
||||
Detail: "Encounter does not have responsible-doctor",
|
||||
}
|
||||
return nil, pl.SetLogError(event, enc)
|
||||
}
|
||||
|
||||
err = dg.I.
|
||||
|
||||
@@ -359,7 +359,7 @@ func Verify(input e.VerifyDto) (*d.Data, error) {
|
||||
func validateForeignKey(input e.CreateDto) error {
|
||||
// validate encounter
|
||||
if input.Encounter_Id != nil {
|
||||
if _, err := ue.ReadDetail(ee.ReadDetailDto{Id: uint16(*input.Encounter_Id)}); err != nil {
|
||||
if _, err := ue.ReadDetail(ee.ReadDetailDto{Id: *input.Encounter_Id}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package unit
|
||||
|
||||
import (
|
||||
"errors"
|
||||
e "simrs-vx/internal/domain/main-entities/unit"
|
||||
erc "simrs-vx/internal/domain/references/common"
|
||||
esync "simrs-vx/internal/domain/sync-entities/log"
|
||||
@@ -27,9 +28,22 @@ func Create(input e.CreateDto) (*d.Data, error) {
|
||||
|
||||
// Start log
|
||||
pl.SetLogInfo(&event, input, "started", "create")
|
||||
|
||||
// validate unit_code
|
||||
_, err := strconv.Atoi(input.Code)
|
||||
if err != nil {
|
||||
event.Status = "failed"
|
||||
event.ErrInfo = pl.ErrorInfo{
|
||||
Code: "invalid_code_format",
|
||||
Detail: "unit_code must be a valid integer",
|
||||
Raw: errors.New("invalid unit_code format"),
|
||||
}
|
||||
return nil, pl.SetLogError(&event, input)
|
||||
}
|
||||
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
|
||||
err := dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
if resData, err := CreateData(input, &event, tx); err != nil {
|
||||
return err
|
||||
} else {
|
||||
|
||||
@@ -12,8 +12,6 @@ import (
|
||||
etp "simrs-vx/internal/domain/simgos-entities/t-pendaftaran"
|
||||
esync "simrs-vx/internal/domain/sync-entities/encounter"
|
||||
elog "simrs-vx/internal/domain/sync-entities/log"
|
||||
|
||||
up "simrs-vx/internal/use-case/simgos-sync-use-case/new/patient"
|
||||
)
|
||||
|
||||
const source = "encounter"
|
||||
@@ -46,14 +44,8 @@ func Create(input e.Encounter) (*d.Data, error) {
|
||||
return err
|
||||
}
|
||||
|
||||
// STEP: 3 Get MPasien
|
||||
dataPatient, err := up.ReadDetailSimgosByNomrData(sgData.Nomr, &event, tx.Simgos)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// STEP 4: Update MPasien
|
||||
err = updatePatient(*dataPatient, &event, tx.Simgos)
|
||||
// STEP 3: Update MPasien
|
||||
err = updatePatientCaraBayar(*sgData, &event, tx.Simgos)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -123,13 +115,13 @@ func Update(input e.Encounter) (*d.Data, error) {
|
||||
pl.SetLogInfo(&event, input, "started", "update")
|
||||
|
||||
// STEP 1: Get Link
|
||||
syncLink, err := ReadDetailLinkData(uint16(input.Id), &event)
|
||||
syncLink, err := ReadDetailLinkData(input.Id, &event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// STEP 2: Get Simgos
|
||||
simgos, err := ReadTPendaftaranDetailData(uint16(syncLink.Simgos_Id), &event)
|
||||
simgos, err := ReadTPendaftaranDetailData(syncLink.Simgos_Id, &event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -137,7 +129,7 @@ func Update(input e.Encounter) (*d.Data, error) {
|
||||
tx := db.NewTx()
|
||||
err = tx.Simgos.Transaction(func(tx *gorm.DB) error {
|
||||
// Step 2: Update Simgos
|
||||
if err = UpdateTPendaftaranData(input, *simgos, "update", &event, tx); err != nil {
|
||||
if err = UpdateTPendaftaranData(input, simgos, "update", &event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -173,7 +165,7 @@ func Delete(input e.DeleteDto) (*d.Data, error) {
|
||||
}
|
||||
|
||||
// STEP 2: Get Simgos
|
||||
sgData, err := ReadTPendaftaranDetailData(uint16(syncLink.Simgos_Id), &event)
|
||||
sgData, err := ReadTPendaftaranDetailData(syncLink.Simgos_Id, &event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -226,13 +218,13 @@ func CheckIn(input e.Encounter) (*d.Data, error) {
|
||||
pl.SetLogInfo(&event, input, "started", "check-in")
|
||||
|
||||
// STEP 1: Get Link
|
||||
syncLink, err := ReadDetailLinkData(uint16(input.Id), &event)
|
||||
syncLink, err := ReadDetailLinkData(input.Id, &event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// STEP 2: Get Simgos
|
||||
simgos, err := ReadTPendaftaranDetailData(uint16(syncLink.Simgos_Id), &event)
|
||||
simgos, err := ReadTPendaftaranDetailData(syncLink.Simgos_Id, &event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -240,7 +232,7 @@ func CheckIn(input e.Encounter) (*d.Data, error) {
|
||||
tx := db.NewTx()
|
||||
err = tx.Simgos.Transaction(func(tx *gorm.DB) error {
|
||||
// Step 2: Update Simgos
|
||||
if err = UpdateTPendaftaranData(input, *simgos, "check-in", &event, tx); err != nil {
|
||||
if err = UpdateTPendaftaranData(input, simgos, "check-in", &event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -268,13 +260,13 @@ func CheckOut(input e.Encounter) (*d.Data, error) {
|
||||
pl.SetLogInfo(&event, input, "started", "check-out")
|
||||
|
||||
// STEP 1: Get Link
|
||||
syncLink, err := ReadDetailLinkData(uint16(input.Id), &event)
|
||||
syncLink, err := ReadDetailLinkData(input.Id, &event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// STEP 2: Get Simgos
|
||||
simgos, err := ReadTPendaftaranDetailData(uint16(syncLink.Simgos_Id), &event)
|
||||
simgos, err := ReadTPendaftaranDetailData(syncLink.Simgos_Id, &event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -282,7 +274,7 @@ func CheckOut(input e.Encounter) (*d.Data, error) {
|
||||
tx := db.NewTx()
|
||||
err = tx.Simgos.Transaction(func(tx *gorm.DB) error {
|
||||
// Step 2: Update Simgos
|
||||
if err = UpdateTPendaftaranData(input, *simgos, "check-out", &event, tx); err != nil {
|
||||
if err = UpdateTPendaftaranData(input, simgos, "check-out", &event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -310,13 +302,13 @@ func Cancel(input e.Encounter) (*d.Data, error) {
|
||||
pl.SetLogInfo(&event, input, "started", "cancel")
|
||||
|
||||
// STEP 1: Get Link
|
||||
syncLink, err := ReadDetailLinkData(uint16(input.Id), &event)
|
||||
syncLink, err := ReadDetailLinkData(input.Id, &event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// STEP 2: Get Simgos
|
||||
simgos, err := ReadTPendaftaranDetailData(uint16(syncLink.Simgos_Id), &event)
|
||||
simgos, err := ReadTPendaftaranDetailData(syncLink.Simgos_Id, &event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -324,7 +316,7 @@ func Cancel(input e.Encounter) (*d.Data, error) {
|
||||
tx := db.NewTx()
|
||||
err = tx.Simgos.Transaction(func(tx *gorm.DB) error {
|
||||
// Step 2: Update Simgos
|
||||
if err = UpdateTPendaftaranData(input, *simgos, "update-status", &event, tx); err != nil {
|
||||
if err = UpdateTPendaftaranData(input, simgos, "update-status", &event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -352,13 +344,13 @@ func RequestSwitchUnit(input e.Encounter) (*d.Data, error) {
|
||||
pl.SetLogInfo(&event, input, "started", "request-switch-unit")
|
||||
|
||||
// STEP 1: Get Link
|
||||
syncLink, err := ReadDetailLinkData(uint16(input.Id), &event)
|
||||
syncLink, err := ReadDetailLinkData(input.Id, &event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// STEP 2: Get Simgos
|
||||
tpendaftaran, err := ReadTPendaftaranDetailData(uint16(syncLink.Simgos_Id), &event)
|
||||
tpendaftaran, err := ReadTPendaftaranDetailData(syncLink.Simgos_Id, &event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -366,12 +358,12 @@ func RequestSwitchUnit(input e.Encounter) (*d.Data, error) {
|
||||
tx := db.NewTx()
|
||||
err = tx.Simgos.Transaction(func(tx *gorm.DB) error {
|
||||
// Step 2: Update TPendaftaran
|
||||
if err = UpdateTPendaftaranData(input, *tpendaftaran, "update-status", &event, tx); err != nil {
|
||||
if err = UpdateTPendaftaranData(input, tpendaftaran, "update-status", &event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Step 3: Insert TPemeriksaanHist
|
||||
if _, err := CreateBulkTPemeriksaanHistData(input, *tpendaftaran, &event, tx); err != nil {
|
||||
if _, err := CreateBulkTPemeriksaanHistData(input, tpendaftaran, &event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -399,13 +391,13 @@ func ApproveSwitchUnit(input e.Encounter) (*d.Data, error) {
|
||||
pl.SetLogInfo(&event, input, "started", "request-switch-unit")
|
||||
|
||||
// STEP 1: Get Link
|
||||
syncLink, err := ReadDetailLinkData(uint16(input.Id), &event)
|
||||
syncLink, err := ReadDetailLinkData(input.Id, &event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// STEP 2: Get Simgos
|
||||
tpendaftaran, err := ReadTPendaftaranDetailData(uint16(syncLink.Simgos_Id), &event)
|
||||
tpendaftaran, err := ReadTPendaftaranDetailData(syncLink.Simgos_Id, &event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -413,12 +405,12 @@ func ApproveSwitchUnit(input e.Encounter) (*d.Data, error) {
|
||||
tx := db.NewTx()
|
||||
err = tx.Simgos.Transaction(func(tx *gorm.DB) error {
|
||||
// Step 2: Update TPendaftaran
|
||||
if err = UpdateTPendaftaranData(input, *tpendaftaran, "update-status", &event, tx); err != nil {
|
||||
if err = UpdateTPendaftaranData(input, tpendaftaran, "update-status", &event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Step 3: Insert TPemeriksaanHist
|
||||
if _, err := CreateBulkTPemeriksaanHistData(input, *tpendaftaran, &event, tx); err != nil {
|
||||
if _, err := CreateBulkTPemeriksaanHistData(input, tpendaftaran, &event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ package encounter
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
epr "simrs-vx/internal/domain/main-entities/person-relative"
|
||||
epa "simrs-vx/internal/domain/main-entities/person-address"
|
||||
erc "simrs-vx/internal/domain/references/common"
|
||||
ere "simrs-vx/internal/domain/references/encounter"
|
||||
erp "simrs-vx/internal/domain/references/person"
|
||||
@@ -14,6 +14,8 @@ import (
|
||||
"strconv"
|
||||
|
||||
e "simrs-vx/internal/domain/main-entities/encounter"
|
||||
epc "simrs-vx/internal/domain/main-entities/person-contact"
|
||||
epr "simrs-vx/internal/domain/main-entities/person-relative"
|
||||
ep "simrs-vx/internal/domain/simgos-entities/m-pasien"
|
||||
etph "simrs-vx/internal/domain/simgos-entities/t-pemeriksaan-hist"
|
||||
etp "simrs-vx/internal/domain/simgos-entities/t-pendaftaran"
|
||||
@@ -47,20 +49,29 @@ func setDataCreateTPendaftaran(input *e.Encounter) (data etp.TPendaftaran, err e
|
||||
}
|
||||
data.NoKunjung = uint(noKunjung)
|
||||
|
||||
setDataTPendaftaran(input, data)
|
||||
if p := input.Patient.Person; p != nil {
|
||||
mapRelative(p.Relatives, &data)
|
||||
|
||||
if data.PenanggungjawabNama == "" {
|
||||
data.PenanggungjawabHubungan = "DIRI SENDIRI"
|
||||
data.PenanggungjawabNama = p.Name
|
||||
mapContact(p.Contacts, &data)
|
||||
mapAddress(p.Addresses, &data)
|
||||
}
|
||||
|
||||
if bpjs := p.VclaimMember; bpjs != nil {
|
||||
data.Nokartu = *bpjs.CardNumber
|
||||
}
|
||||
}
|
||||
|
||||
setDataTPendaftaran(input, &data)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func setDataTPendaftaran(input *e.Encounter, data etp.TPendaftaran) {
|
||||
func setDataTPendaftaran(input *e.Encounter, data *etp.TPendaftaran) {
|
||||
data.Tglreg = input.RegisteredAt
|
||||
|
||||
// set kddokter
|
||||
if d := input.Appointment_Doctor_Code; d != nil {
|
||||
kddokter, _ := strconv.Atoi(*input.Appointment_Doctor_Code)
|
||||
data.Kddokter = uint(kddokter)
|
||||
}
|
||||
|
||||
// set kdpoly
|
||||
if p := input.Unit_Code; p != nil {
|
||||
kdpoly, _ := strconv.Atoi(*input.Unit_Code)
|
||||
@@ -82,22 +93,18 @@ func setDataTPendaftaran(input *e.Encounter, data etp.TPendaftaran) {
|
||||
}
|
||||
}
|
||||
|
||||
if ref := input.VclaimReference; ref != nil {
|
||||
data.Ketrujuk = *ref.SrcCode
|
||||
data.Norujukan = *ref.Number
|
||||
data.Tglrujukan = ref.Date
|
||||
// set data if payment_method bpjs
|
||||
if input.RefSource_Name != nil {
|
||||
data.Ketrujuk = *input.RefSource_Name
|
||||
data.Strujukan = 1
|
||||
} else {
|
||||
data.Ketrujuk = "TR"
|
||||
data.Strujukan = 0
|
||||
}
|
||||
|
||||
if p := input.Patient.Person; p != nil {
|
||||
mapRelative(p.Relatives, data)
|
||||
|
||||
if bpjs := p.VclaimMember; bpjs != nil {
|
||||
data.Nokartu = *bpjs.CardNumber
|
||||
}
|
||||
if ref := input.VclaimReference; ref != nil {
|
||||
data.Norujukan = *ref.Number
|
||||
data.Tglrujukan = ref.Date
|
||||
}
|
||||
|
||||
data.Jamreg = input.RegisteredAt
|
||||
@@ -107,7 +114,7 @@ func setDataTPendaftaran(input *e.Encounter, data etp.TPendaftaran) {
|
||||
return
|
||||
}
|
||||
|
||||
func setDataCheckIn(input e.Encounter, data etp.TPendaftaran) {
|
||||
func setDataCheckIn(input e.Encounter, data *etp.TPendaftaran) {
|
||||
// set kddokter
|
||||
kddokter, _ := strconv.Atoi(*input.Responsible_Doctor_Code)
|
||||
data.Kddokter = uint(kddokter)
|
||||
@@ -125,7 +132,7 @@ func setDataCheckIn(input e.Encounter, data etp.TPendaftaran) {
|
||||
return
|
||||
}
|
||||
|
||||
func setDataRequestSwitchUnit(input e.Encounter, data etp.TPendaftaran) (hist []etph.TPemeriksaanHist) {
|
||||
func setDataRequestSwitchUnit(input e.Encounter, data *etp.TPendaftaran) (hist []etph.TPemeriksaanHist) {
|
||||
if enc := input.InternalReferences; enc != nil {
|
||||
for i, ref := range *enc {
|
||||
hist = append(hist, etph.TPemeriksaanHist{
|
||||
@@ -151,7 +158,7 @@ func setDataRequestSwitchUnit(input e.Encounter, data etp.TPendaftaran) (hist []
|
||||
return
|
||||
}
|
||||
|
||||
func setDataCheckOut(input e.Encounter, data etp.TPendaftaran) {
|
||||
func setDataCheckOut(input e.Encounter, data *etp.TPendaftaran) {
|
||||
data.Keluarpoly = input.Discharge_Date
|
||||
|
||||
// set status
|
||||
@@ -169,13 +176,13 @@ func setDataCheckOut(input e.Encounter, data etp.TPendaftaran) {
|
||||
return
|
||||
}
|
||||
|
||||
func setDataUpdateStatus(input e.Encounter, data etp.TPendaftaran) {
|
||||
func setDataUpdateStatus(input e.Encounter, data *etp.TPendaftaran) {
|
||||
if input.Status_Code == erc.DSCCancel {
|
||||
data.Status = 11
|
||||
}
|
||||
}
|
||||
|
||||
func setKdrujuk(input *ere.RefTypeCode, data etp.TPendaftaran) {
|
||||
func setKdrujuk(input *ere.RefTypeCode, data *etp.TPendaftaran) {
|
||||
switch *input {
|
||||
case ere.RTCGov:
|
||||
data.Kdrujuk = 1
|
||||
@@ -188,7 +195,7 @@ func setKdrujuk(input *ere.RefTypeCode, data etp.TPendaftaran) {
|
||||
}
|
||||
}
|
||||
|
||||
func setKdcarabayar(input ere.AllPaymentMethodCode, data etp.TPendaftaran) {
|
||||
func setKdcarabayar(input ere.AllPaymentMethodCode, data *etp.TPendaftaran) {
|
||||
switch input {
|
||||
case ere.APMCPks:
|
||||
data.Kdcarabayar = 12
|
||||
@@ -203,7 +210,7 @@ func setKdcarabayar(input ere.AllPaymentMethodCode, data etp.TPendaftaran) {
|
||||
}
|
||||
}
|
||||
|
||||
func setStatus(code *ere.DischargeMethodCode, data etp.TPendaftaran) {
|
||||
func setStatus(code *ere.DischargeMethodCode, data *etp.TPendaftaran) {
|
||||
switch *code {
|
||||
case ere.DMCHome:
|
||||
data.Status = 1
|
||||
@@ -250,7 +257,7 @@ func setStatus(code *ere.DischargeMethodCode, data etp.TPendaftaran) {
|
||||
}
|
||||
}
|
||||
|
||||
func mapRelative(relative *[]epr.PersonRelative, data etp.TPendaftaran) {
|
||||
func mapRelative(relative *[]epr.PersonRelative, data *etp.TPendaftaran) {
|
||||
if relative == nil || len(*relative) == 0 {
|
||||
return
|
||||
}
|
||||
@@ -322,10 +329,11 @@ func generateNoKunjung() (int, error) {
|
||||
// Lock rows for this prefix → prevents race condition
|
||||
if err := dg.IS["simrs"].
|
||||
Table("t_pendaftaran").
|
||||
Select("COALESCE(MAX(no_kunjung),0)").
|
||||
Select("no_kunjung").
|
||||
Where("tglreg = CURRENT_DATE").
|
||||
Order("no_kunjung DESC").
|
||||
Clauses(clause.Locking{Strength: "UPDATE"}).
|
||||
Limit(1).
|
||||
Scan(&lastNumber).Error; err != nil {
|
||||
return 0, err
|
||||
}
|
||||
@@ -339,7 +347,7 @@ func stringtouint(v string) *uint {
|
||||
return &point
|
||||
}
|
||||
|
||||
func updatePatient(patient ep.MPasien, event *pl.Event, dbx ...*gorm.DB) error {
|
||||
func updatePatientCaraBayar(input etp.TPendaftaran, event *pl.Event, dbx ...*gorm.DB) error {
|
||||
pl.SetLogInfo(event, nil, "started", "DBUpdate")
|
||||
|
||||
var tx *gorm.DB
|
||||
@@ -350,9 +358,9 @@ func updatePatient(patient ep.MPasien, event *pl.Event, dbx ...*gorm.DB) error {
|
||||
}
|
||||
|
||||
if err := tx.Model(&ep.MPasien{}).
|
||||
Where("\"nomr\" = ?", patient.Nomr).
|
||||
Where("\"nomr\" = ?", input.Nomr).
|
||||
Updates(map[string]interface{}{
|
||||
"kdcarabayar": patient.Kdcarabayar,
|
||||
"kdcarabayar": input.Kdcarabayar,
|
||||
}).Error; err != nil {
|
||||
event.Status = "failed"
|
||||
event.ErrInfo = pl.ErrorInfo{
|
||||
@@ -360,9 +368,30 @@ func updatePatient(patient ep.MPasien, event *pl.Event, dbx ...*gorm.DB) error {
|
||||
Detail: "Failed to update patient",
|
||||
Raw: err,
|
||||
}
|
||||
return pl.SetLogError(event, patient)
|
||||
return pl.SetLogError(event, input)
|
||||
}
|
||||
|
||||
pl.SetLogInfo(event, patient, "complete")
|
||||
pl.SetLogInfo(event, input, "complete")
|
||||
return nil
|
||||
}
|
||||
|
||||
func mapContact(contact *[]epc.PersonContact, data *etp.TPendaftaran) {
|
||||
if contact == nil || len(*contact) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
for _, c := range *contact {
|
||||
if c.Type_Code == erp.CTPhone || c.Type_Code == erp.CTMPhone {
|
||||
data.PenanggungjawabPhone = c.Value
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func mapAddress(addresses *[]epa.PersonAddress, data *etp.TPendaftaran) {
|
||||
if addresses == nil || len(*addresses) == 0 {
|
||||
return
|
||||
}
|
||||
a := (*addresses)[0]
|
||||
data.PenanggungjawabAlamat = a.Address
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ func CreateTPendaftaranData(input e.Encounter, event *pl.Event, dbx ...*gorm.DB)
|
||||
return &data, nil
|
||||
}
|
||||
|
||||
func ReadTPendaftaranDetailData(simgosId uint16, event *pl.Event) (*etp.TPendaftaran, error) {
|
||||
func ReadTPendaftaranDetailData(simgosId uint, event *pl.Event) (*etp.TPendaftaran, error) {
|
||||
pl.SetLogInfo(event, simgosId, "started", "DBReadDetail")
|
||||
data := etp.TPendaftaran{}
|
||||
|
||||
@@ -59,7 +59,7 @@ func ReadTPendaftaranDetailData(simgosId uint16, event *pl.Event) (*etp.TPendaft
|
||||
return &data, nil
|
||||
}
|
||||
|
||||
func UpdateTPendaftaranData(input e.Encounter, data etp.TPendaftaran, method string, event *pl.Event, dbx ...*gorm.DB) error {
|
||||
func UpdateTPendaftaranData(input e.Encounter, data *etp.TPendaftaran, method string, event *pl.Event, dbx ...*gorm.DB) error {
|
||||
pl.SetLogInfo(event, input, "started", "DBUpdate")
|
||||
|
||||
switch method {
|
||||
@@ -138,7 +138,7 @@ func CreateLinkData(simxId, simgosId uint, event *pl.Event, dbx ...*gorm.DB) (*e
|
||||
return &data, nil
|
||||
}
|
||||
|
||||
func ReadDetailLinkData(simxId uint16, event *pl.Event) (*esync.EncounterLink, error) {
|
||||
func ReadDetailLinkData(simxId uint, event *pl.Event) (*esync.EncounterLink, error) {
|
||||
pl.SetLogInfo(event, simxId, "started", "DBReadDetail")
|
||||
data := esync.EncounterLink{}
|
||||
|
||||
@@ -199,7 +199,7 @@ func CreateLogData(input esynclog.SimxLogDto, event *pl.Event, dbx ...*gorm.DB)
|
||||
return nil
|
||||
}
|
||||
|
||||
func CreateBulkTPemeriksaanHistData(input e.Encounter, data etp.TPendaftaran, event *pl.Event, dbx ...*gorm.DB) (hist []etph.TPemeriksaanHist, err error) {
|
||||
func CreateBulkTPemeriksaanHistData(input e.Encounter, data *etp.TPendaftaran, event *pl.Event, dbx ...*gorm.DB) (hist []etph.TPemeriksaanHist, err error) {
|
||||
pl.SetLogInfo(event, nil, "started", "DBCreate")
|
||||
|
||||
hist = setDataRequestSwitchUnit(input, data)
|
||||
|
||||
@@ -37,12 +37,15 @@ func setDataSimgos(input *e.Patient) (data esimgos.MPasien) {
|
||||
mapContact(input.Person.Contacts, &data)
|
||||
}
|
||||
|
||||
data.PenanggungjawabHubungan = "DIRI SENDIRI"
|
||||
data.PenanggungjawabNama = input.Person.Name
|
||||
data.PenanggungjawabPhone = data.Notelp
|
||||
data.PenanggungjawabAlamat = data.Alamat
|
||||
if input.Person != nil || input.Person.Relatives != nil {
|
||||
mapRelative(input.Person.Relatives, &data)
|
||||
if input.Person != nil {
|
||||
data.PenanggungjawabHubungan = "DIRI SENDIRI"
|
||||
data.PenanggungjawabNama = input.Person.Name
|
||||
data.PenanggungjawabPhone = data.Notelp
|
||||
data.PenanggungjawabAlamat = data.Alamat
|
||||
|
||||
if input.Person.Relatives != nil {
|
||||
mapRelative(input.Person.Relatives, &data)
|
||||
}
|
||||
}
|
||||
|
||||
data.Nip = input.RegisteredBy_User_Name
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
esync "simrs-vx/internal/domain/sync-entities/specialist"
|
||||
)
|
||||
|
||||
func setDataSimgos[T *e.CreateDto | *e.UpdateDto](input T) (data esimgos.MPolihfis) {
|
||||
func setDataSimgos[T *e.CreateDto | *e.UpdateDto](input T, data *esimgos.MPolihfis) {
|
||||
var inputSrc *e.CreateDto
|
||||
if inputT, ok := any(input).(*e.CreateDto); ok {
|
||||
inputSrc = inputT
|
||||
|
||||
@@ -20,7 +20,8 @@ var now = time.Now()
|
||||
func CreateSimgosData(input e.CreateDto, event *pl.Event, dbx ...*gorm.DB) (*esimgos.MPolihfis, error) {
|
||||
pl.SetLogInfo(event, nil, "started", "DBCreate")
|
||||
|
||||
data := setDataSimgos(&input)
|
||||
data := esimgos.MPolihfis{}
|
||||
setDataSimgos(&input, &data)
|
||||
|
||||
var tx *gorm.DB
|
||||
if len(dbx) > 0 {
|
||||
@@ -29,7 +30,7 @@ func CreateSimgosData(input e.CreateDto, event *pl.Event, dbx ...*gorm.DB) (*esi
|
||||
tx = dg.IS["simrs"]
|
||||
}
|
||||
|
||||
if err := tx.Create(&data).Error; err != nil {
|
||||
if err := tx.Debug().Create(&data).Error; err != nil {
|
||||
return nil, plh.HandleCreateError(input, event, err)
|
||||
}
|
||||
|
||||
@@ -58,7 +59,9 @@ func ReadDetailSimgosData(simgosId uint16, event *pl.Event) (*esimgos.MPolihfis,
|
||||
func UpdateSimgosData(input e.UpdateDto, dataSimgos *esync.SpecialistLink, event *pl.Event, dbx ...*gorm.DB) error {
|
||||
pl.SetLogInfo(event, input, "started", "DBUpdate")
|
||||
|
||||
data := setDataSimgos(&input)
|
||||
data := esimgos.MPolihfis{}
|
||||
|
||||
setDataSimgos(&input, &data)
|
||||
data.Id = dataSimgos.Simgos_Id
|
||||
|
||||
var tx *gorm.DB
|
||||
|
||||
@@ -7,6 +7,7 @@ package unit
|
||||
import (
|
||||
"encoding/json"
|
||||
erc "simrs-vx/internal/domain/references/common"
|
||||
"strconv"
|
||||
|
||||
e "simrs-vx/internal/domain/main-entities/unit"
|
||||
|
||||
@@ -27,6 +28,8 @@ func setDataSimgos[T *e.CreateDto | *e.UpdateDto](input T) (data esimgos.MPoly)
|
||||
data.Nama = inputSrc.Name
|
||||
data.Jenispoly = 0
|
||||
|
||||
kodePoly, _ := strconv.Atoi(inputSrc.Code)
|
||||
data.Kode = uint(kodePoly)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user