ongoing seed subspecialist
This commit is contained in:
No files matched your search
@@ -15,6 +15,7 @@ import (
|
||||
type Dto struct {
|
||||
LoginNip []string `json:"loginNip"`
|
||||
Instalasi_Code string `json:"instalasi_code"`
|
||||
SeedTableName string `json:"seedTableName"`
|
||||
}
|
||||
|
||||
func Send(method string, endpoint string, body *bytes.Buffer, username string) ([]byte, error) {
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
package installation
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"log"
|
||||
"net/http"
|
||||
ere "simrs-vx/internal/domain/references/encounter"
|
||||
db "simrs-vx/pkg/dualtrx-helper"
|
||||
pl "simrs-vx/pkg/logger"
|
||||
"strconv"
|
||||
|
||||
ei "simrs-vx/internal/domain/main-entities/installation"
|
||||
eu "simrs-vx/internal/domain/simgos-entities/m-unit"
|
||||
|
||||
ui "simrs-vx/internal/use-case/simgos-sync-use-case/new/installation"
|
||||
"simrs-vx/internal/use-case/simgos-sync-use-case/seeder"
|
||||
)
|
||||
|
||||
func SeedInstallation(event *pl.Event, tx *db.Dualtx) error {
|
||||
unit := []eu.MUnit{}
|
||||
|
||||
// Get M_Unit
|
||||
err := tx.Simgos.Model(&eu.MUnit{}).
|
||||
Find(&unit).Error
|
||||
if err != nil {
|
||||
log.Println("Error Querying MUnit:", err)
|
||||
return err
|
||||
}
|
||||
|
||||
// Mapping To Installation
|
||||
var installationData []ei.CreateDto
|
||||
for _, v := range unit {
|
||||
|
||||
codeString := strconv.Itoa(int(v.KodeUnit))
|
||||
installationData = append(installationData, ei.CreateDto{
|
||||
Name: v.NamaUnit,
|
||||
EncounterClass_Code: ere.ECAmbulatory,
|
||||
Code: &codeString,
|
||||
})
|
||||
}
|
||||
|
||||
dataInstallation, err := CreateBulkInstallation(ei.CreateBulkDto{Value: installationData})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = ui.CreateBulkLinkData(dataInstallation, event, tx.Sync)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
func CreateBulkInstallation(ins ei.CreateBulkDto) ([]ei.Installation, error) {
|
||||
var path = "installation/bulk"
|
||||
|
||||
// create request body
|
||||
jsonData, err := json.Marshal(ins)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
reqBody := bytes.NewBuffer(jsonData)
|
||||
// send data to main-api
|
||||
resp, err := seeder.Send(http.MethodPost, path, reqBody, "von")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
type MetaData struct {
|
||||
Source string `json:"source"`
|
||||
Status string `json:"status"`
|
||||
Structure string `json:"structure"`
|
||||
}
|
||||
|
||||
type MainApiResp struct {
|
||||
Meta MetaData `json:"meta"`
|
||||
Data []ei.Installation `json:"data"`
|
||||
}
|
||||
|
||||
// getting response
|
||||
var data MainApiResp
|
||||
err = json.Unmarshal(resp, &data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return data.Data, nil
|
||||
}
|
||||
@@ -2,9 +2,6 @@ package seeder
|
||||
|
||||
import (
|
||||
"log"
|
||||
"simrs-vx/internal/use-case/simgos-sync-use-case/seeder/doctor"
|
||||
"simrs-vx/internal/use-case/simgos-sync-use-case/seeder/nurse"
|
||||
"simrs-vx/internal/use-case/simgos-sync-use-case/seeder/regular"
|
||||
|
||||
db "simrs-vx/pkg/dualtrx-helper"
|
||||
pl "simrs-vx/pkg/logger"
|
||||
@@ -14,6 +11,13 @@ import (
|
||||
el "simrs-vx/internal/domain/simgos-entities/m-login"
|
||||
|
||||
"simrs-vx/internal/use-case/simgos-sync-use-case/seeder"
|
||||
|
||||
"simrs-vx/internal/use-case/simgos-sync-use-case/seeder/doctor"
|
||||
"simrs-vx/internal/use-case/simgos-sync-use-case/seeder/installation"
|
||||
"simrs-vx/internal/use-case/simgos-sync-use-case/seeder/nurse"
|
||||
"simrs-vx/internal/use-case/simgos-sync-use-case/seeder/regular"
|
||||
"simrs-vx/internal/use-case/simgos-sync-use-case/seeder/specialist"
|
||||
"simrs-vx/internal/use-case/simgos-sync-use-case/seeder/subspecialist"
|
||||
)
|
||||
|
||||
const source = "seeder"
|
||||
@@ -33,52 +37,69 @@ func SeedToSimx(input seeder.Dto) (*d.Data, error) {
|
||||
kddokter, kdperawat []uint
|
||||
)
|
||||
|
||||
// Get M_login
|
||||
err := tx.Simgos.Model(&el.MLogin{}).
|
||||
Select(`DISTINCT ON (nip) m_login.*`).
|
||||
Where(`"nip" IN (?)`, input.LoginNip).
|
||||
Find(&mlogin).Error
|
||||
if err != nil {
|
||||
log.Println("Error Querying Mlogin:", err)
|
||||
return nil, err
|
||||
}
|
||||
switch input.SeedTableName {
|
||||
case "installation":
|
||||
if err := installation.SeedInstallation(&event, tx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
case "specialist":
|
||||
if err := specialist.SeedSpecialist(&event, tx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
case "subspecialist":
|
||||
if err := subspecialist.SeedSubspecialist(&event, tx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// SET data
|
||||
if len(mlogin) > 0 {
|
||||
for _, l := range mlogin {
|
||||
if l.KdDokter != 0 {
|
||||
kddokter = append(kddokter, l.KdDokter)
|
||||
continue
|
||||
default:
|
||||
|
||||
// Get M_login
|
||||
err := tx.Simgos.Model(&el.MLogin{}).
|
||||
Select(`DISTINCT ON (nip) m_login.*`).
|
||||
Where(`"nip" IN (?)`, input.LoginNip).
|
||||
Find(&mlogin).Error
|
||||
if err != nil {
|
||||
log.Println("Error Querying Mlogin:", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// SET data
|
||||
if len(mlogin) > 0 {
|
||||
for _, l := range mlogin {
|
||||
if l.KdDokter != 0 {
|
||||
kddokter = append(kddokter, l.KdDokter)
|
||||
continue
|
||||
}
|
||||
|
||||
if l.KdPerawat != 0 {
|
||||
kdperawat = append(kdperawat, l.KdPerawat)
|
||||
continue
|
||||
}
|
||||
|
||||
regLogin = append(regLogin, l)
|
||||
}
|
||||
}
|
||||
|
||||
if l.KdPerawat != 0 {
|
||||
kdperawat = append(kdperawat, l.KdPerawat)
|
||||
continue
|
||||
// Seed based on role
|
||||
if len(kddokter) > 0 {
|
||||
err = doctor.SeedDoctor(kddokter, &event, tx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
regLogin = append(regLogin, l)
|
||||
}
|
||||
}
|
||||
|
||||
// Seed based on role
|
||||
if len(kddokter) > 0 {
|
||||
err = doctor.SeedDoctor(kddokter, &event, tx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
if len(kdperawat) > 0 {
|
||||
err = nurse.SeedNurse(kdperawat, &event, tx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if len(kdperawat) > 0 {
|
||||
err = nurse.SeedNurse(kdperawat, &event, tx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
if len(regLogin) > 0 {
|
||||
err = regular.SeedRegular(regLogin, input.Instalasi_Code)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
if len(regLogin) > 0 {
|
||||
err = regular.SeedRegular(regLogin, input.Instalasi_Code)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
package specialist
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"log"
|
||||
"net/http"
|
||||
db "simrs-vx/pkg/dualtrx-helper"
|
||||
pl "simrs-vx/pkg/logger"
|
||||
"strconv"
|
||||
|
||||
es "simrs-vx/internal/domain/main-entities/specialist"
|
||||
er "simrs-vx/internal/domain/simgos-entities/m-ruang"
|
||||
|
||||
us "simrs-vx/internal/use-case/simgos-sync-use-case/new/specialist"
|
||||
"simrs-vx/internal/use-case/simgos-sync-use-case/seeder"
|
||||
)
|
||||
|
||||
func SeedSpecialist(event *pl.Event, tx *db.Dualtx) error {
|
||||
ruang := []er.MRuang{}
|
||||
|
||||
// Get M_Ruang
|
||||
err := tx.Simgos.Model(&er.MRuang{}).
|
||||
Find(&ruang).Error
|
||||
if err != nil {
|
||||
log.Println("Error Querying MRuang:", err)
|
||||
return err
|
||||
}
|
||||
|
||||
// Mapping To Installation
|
||||
var speData []es.CreateDto
|
||||
for _, v := range ruang {
|
||||
|
||||
codeString := strconv.Itoa(int(v.No))
|
||||
speData = append(speData, es.CreateDto{
|
||||
Code: codeString,
|
||||
Name: v.Nama,
|
||||
})
|
||||
}
|
||||
|
||||
dataSpe, err := CreateBulkSpecialist(es.CreateBulkDto{Value: speData})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = us.CreateBulkLinkData(dataSpe, event, tx.Sync)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
func CreateBulkSpecialist(ins es.CreateBulkDto) ([]es.Specialist, error) {
|
||||
var path = "specialist/bulk"
|
||||
|
||||
// create request body
|
||||
jsonData, err := json.Marshal(ins)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
reqBody := bytes.NewBuffer(jsonData)
|
||||
// send data to main-api
|
||||
resp, err := seeder.Send(http.MethodPost, path, reqBody, "von")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
type MetaData struct {
|
||||
Source string `json:"source"`
|
||||
Status string `json:"status"`
|
||||
Structure string `json:"structure"`
|
||||
}
|
||||
|
||||
type MainApiResp struct {
|
||||
Meta MetaData `json:"meta"`
|
||||
Data []es.Specialist `json:"data"`
|
||||
}
|
||||
|
||||
// getting response
|
||||
var data MainApiResp
|
||||
err = json.Unmarshal(resp, &data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return data.Data, nil
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
package subspecialist
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"log"
|
||||
"net/http"
|
||||
db "simrs-vx/pkg/dualtrx-helper"
|
||||
pl "simrs-vx/pkg/logger"
|
||||
|
||||
es "simrs-vx/internal/domain/main-entities/subspecialist"
|
||||
eds "simrs-vx/internal/domain/satu-entities/daftar-specialist"
|
||||
esb "simrs-vx/internal/domain/sync-entities/subspecialist"
|
||||
|
||||
us "simrs-vx/internal/use-case/simgos-sync-use-case/new/subspecialist"
|
||||
"simrs-vx/internal/use-case/simgos-sync-use-case/seeder"
|
||||
)
|
||||
|
||||
func SeedSubspecialist(event *pl.Event, tx *db.Dualtx) error {
|
||||
dspe := []eds.DaftarSpesialis{}
|
||||
subspeMap := make(map[string]uint)
|
||||
|
||||
// Get Daftar Specialist
|
||||
err := tx.Satu.Model(&eds.DaftarSpesialis{}).
|
||||
Find(&dspe).Error
|
||||
if err != nil {
|
||||
log.Println("Error Querying DaftarSpecialist:", err)
|
||||
return err
|
||||
}
|
||||
|
||||
// Mapping To Subspecialist
|
||||
var speData []es.CreateDto
|
||||
for _, v := range dspe {
|
||||
speData = append(speData, es.CreateDto{
|
||||
Code: v.Kode,
|
||||
Name: v.Spesialis,
|
||||
})
|
||||
|
||||
subspeMap[v.Kode] = v.ID
|
||||
}
|
||||
|
||||
dataSpe, err := CreateBulkSubSpecialist(es.CreateBulkDto{Value: speData})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// mapping link for subspecialist
|
||||
var subspecliast []esb.SubspecialistLink
|
||||
for _, v := range dataSpe {
|
||||
subspecliast = append(subspecliast, esb.SubspecialistLink{
|
||||
Simx_Id: uint(v.Id),
|
||||
Simgos_Id: subspeMap[v.Code],
|
||||
})
|
||||
}
|
||||
|
||||
_, err = us.CreateBulkLinkData(subspecliast, event, tx.Sync)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
func CreateBulkSubSpecialist(ins es.CreateBulkDto) ([]es.Subspecialist, error) {
|
||||
var path = "subspecialist/bulk"
|
||||
|
||||
// create request body
|
||||
jsonData, err := json.Marshal(ins)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
reqBody := bytes.NewBuffer(jsonData)
|
||||
// send data to main-api
|
||||
resp, err := seeder.Send(http.MethodPost, path, reqBody, "von")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
type MetaData struct {
|
||||
Source string `json:"source"`
|
||||
Status string `json:"status"`
|
||||
Structure string `json:"structure"`
|
||||
}
|
||||
|
||||
type MainApiResp struct {
|
||||
Meta MetaData `json:"meta"`
|
||||
Data []es.Subspecialist `json:"data"`
|
||||
}
|
||||
|
||||
// getting response
|
||||
var data MainApiResp
|
||||
err = json.Unmarshal(resp, &data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return data.Data, nil
|
||||
}
|
||||
Reference in New Issue
Block a user