80 lines
1.3 KiB
Go
80 lines
1.3 KiB
Go
package generatefile
|
|
|
|
import (
|
|
"errors"
|
|
|
|
pl "simrs-vx/pkg/logger"
|
|
|
|
dg "github.com/karincake/apem/db-gorm-pg"
|
|
d "github.com/karincake/dodol"
|
|
"gorm.io/gorm"
|
|
|
|
ere "simrs-vx/internal/domain/references/encounter"
|
|
)
|
|
|
|
const source = "generate-file"
|
|
|
|
func Generate(input GenerateDto) (*d.Data, error) {
|
|
event := pl.Event{
|
|
Feature: "Generate",
|
|
Source: source,
|
|
}
|
|
|
|
var (
|
|
response *ResponseDto
|
|
err error
|
|
)
|
|
|
|
// Start log
|
|
pl.SetLogInfo(&event, input, "started", "create")
|
|
|
|
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
|
switch input.Type_Code {
|
|
// general-consent
|
|
case ere.DTCGC:
|
|
response, err = generateGC(input, event, tx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// control-letter
|
|
case ere.DTCVSCL:
|
|
response, err = generateCL(input, event, tx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// resume
|
|
case ere.DTCResume:
|
|
response, err = generateResume(input, event, tx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// screening
|
|
case ere.DTCScreening:
|
|
response, err = generateScreening(input, event, tx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
default:
|
|
return errors.New("invalid type code")
|
|
}
|
|
|
|
return nil
|
|
})
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &d.Data{
|
|
Meta: d.II{
|
|
"source": source,
|
|
"structure": "single-data",
|
|
"status": "created",
|
|
},
|
|
Data: response,
|
|
}, nil
|
|
}
|