update worker

This commit is contained in:
meninjar
2026-07-29 06:38:42 +00:00
parent cc62620719
commit 7137774c32
15 changed files with 1060 additions and 108 deletions
@@ -48,6 +48,7 @@ type ServiceRequestJson struct {
Coding []struct {
Code string `json:"code"`
Display string `json:"display"`
System string `json:"system"`
} `json:"coding"`
} `json:"code"`
Requester struct {
@@ -50,9 +50,11 @@ func MapRadiologyToInternalAPI(dbData *ServiceRequestRadDB) map[string]interface
codeVal := ""
codeDisplay := ""
codeSystem := ""
if len(parsedData.Code.Coding) > 0 {
codeVal = parsedData.Code.Coding[0].Code
codeDisplay = parsedData.Code.Coding[0].Display
codeSystem = parsedData.Code.Coding[0].System
}
requesterID := dbData.RequesterID.String
@@ -86,6 +88,7 @@ func MapRadiologyToInternalAPI(dbData *ServiceRequestRadDB) map[string]interface
"category_display": categoryDisplay,
"code": codeVal,
"display": codeDisplay,
"system": codeSystem,
"requester_id": requesterID,
"performer_id": performerID,
"authored_on": parsedData.AuthoredOn,
+72 -68
View File
@@ -11,11 +11,6 @@ import (
"service/internal/infrastructure/database"
"service/internal/interfaces/satusehat"
"service/internal/master/kfa"
"service/internal/worker/satusehat/imagingstudy"
"service/internal/worker/satusehat/medication"
"service/internal/worker/satusehat/medicationdispense"
"service/internal/worker/satusehat/medicationrequest"
"service/internal/worker/satusehat/servicerequest"
"service/pkg/logger"
)
@@ -45,9 +40,18 @@ func (m *Manager) Start(ctx context.Context) {
logger.Default().Info("Starting background workers...")
// Lakukan login awal untuk mendapatkan token bagi semua worker
if err := m.login(ctx); err != nil {
logger.Default().Fatal("Initial login for workers failed, stopping.", logger.ErrorField(err))
return
maxRetries := 6
for i := 1; i <= maxRetries; i++ {
err := m.login(ctx)
if err == nil {
break
}
logger.Default().Warn(fmt.Sprintf("Initial login attempt %d/%d failed, retrying in 5 seconds...", i, maxRetries), logger.ErrorField(err))
if i == maxRetries {
logger.Default().Fatal("Initial login for workers failed after maximum retries, stopping.", logger.ErrorField(err))
return
}
time.Sleep(5 * time.Second)
}
var wg sync.WaitGroup
@@ -86,17 +90,17 @@ func (m *Manager) Start(ctx context.Context) {
// // condition.NewWorker(...).Run(c)
// },
// },
{
name: "Medication (Master)",
delay: 0, // Master data berjalan seketika
run: func(c context.Context) {
medication.NewWorker(medication.Config{
DBManager: m.db,
InternalBaseURL: internalBaseURL,
OrganizationID: orgID,
}, m).Run(c)
},
},
// {
// name: "Medication (Master)",
// delay: 2, // Master data berjalan seketika
// run: func(c context.Context) {
// medication.NewWorker(medication.Config{
// DBManager: m.db,
// InternalBaseURL: internalBaseURL,
// OrganizationID: orgID,
// }, m).Run(c)
// },
// },
// {
// name: "Observation",
// delay: 2 * time.Second,
@@ -148,17 +152,17 @@ func (m *Manager) Start(ctx context.Context) {
// }, m).Run(c)
// },
// },
{
name: "ServiceRequest (Radiology)",
delay: 2 * time.Second,
run: func(c context.Context) {
servicerequest.NewRadiologyWorker(servicerequest.Config{
DBManager: m.db,
InternalBaseURL: internalBaseURL,
OrganizationID: orgID,
}, m).Run(c)
},
},
// {
// name: "ServiceRequest (Radiology)",
// delay: 2 * time.Second,
// run: func(c context.Context) {
// servicerequest.NewRadiologyWorker(servicerequest.Config{
// DBManager: m.db,
// InternalBaseURL: internalBaseURL,
// OrganizationID: orgID,
// }, m).Run(c)
// },
// },
// {
// name: "Specimen",
// delay: 2 * time.Second,
@@ -175,16 +179,16 @@ func (m *Manager) Start(ctx context.Context) {
// // diagnosticreport.NewWorker(...).Run(c)
// },
// },
{
name: "ImagingStudy",
delay: 2 * time.Second,
run: func(c context.Context) {
// The Manager 'm' now acts as the TokenManager
imagingstudy.NewWorker(imagingstudy.Config{
DBManager: m.db, InternalBaseURL: internalBaseURL, OrganizationID: orgID,
}, m).Run(c)
},
},
// {
// name: "ImagingStudy",
// delay: 2 * time.Second,
// run: func(c context.Context) {
// // The Manager 'm' now acts as the TokenManager
// imagingstudy.NewWorker(imagingstudy.Config{
// DBManager: m.db, InternalBaseURL: internalBaseURL, OrganizationID: orgID,
// }, m).Run(c)
// },
// },
// {
// name: "Composition",
// delay: 2 * time.Second,
@@ -209,40 +213,40 @@ func (m *Manager) Start(ctx context.Context) {
// // episodeofcare.NewWorker(...).Run(c)
// },
// },
{
name: "MedicationRequest",
delay: 2 * time.Second,
run: func(c context.Context) {
medicationrequest.NewWorker(medicationrequest.Config{
DBManager: m.db,
InternalBaseURL: internalBaseURL,
OrganizationID: orgID,
}, m).Run(c)
},
},
{
name: "MedicationDispense",
delay: 2 * time.Second,
run: func(c context.Context) {
medicationdispense.NewWorker(medicationdispense.Config{
DBManager: m.db,
InternalBaseURL: internalBaseURL,
OrganizationID: orgID,
}, m).Run(c)
},
},
// {
// name: "KFA Master Puller",
// delay: 5 * time.Second,
// name: "MedicationRequest",
// delay: 2 * time.Second,
// run: func(c context.Context) {
// repo := kfa.NewCommandRepository(m.db, "default")
// kfa.NewWorker(kfa.Config{
// medicationrequest.NewWorker(medicationrequest.Config{
// DBManager: m.db,
// InternalBaseURL: internalBaseURL,
// PageSize: 100,
// }, repo, m).Run(c)
// OrganizationID: orgID,
// }, m).Run(c)
// },
// },
// {
// name: "MedicationDispense",
// delay: 2 * time.Second,
// run: func(c context.Context) {
// medicationdispense.NewWorker(medicationdispense.Config{
// DBManager: m.db,
// InternalBaseURL: internalBaseURL,
// OrganizationID: orgID,
// }, m).Run(c)
// },
// },
{
name: "KFA Master Puller",
delay: 5 * time.Second,
run: func(c context.Context) {
repo := kfa.NewCommandRepository(m.db, "default")
kfa.NewWorker(kfa.Config{
InternalBaseURL: internalBaseURL,
PageSize: 100,
}, repo, m).Run(c)
},
},
// {
// name: "MedicationStatement",
// delay: 2 * time.Second,
// run: func(c context.Context) {