feat (vclaim-sep-control-letter): add delete and detail by control letter number

This commit is contained in:
dpurbosakti
2025-12-15 13:14:59 +07:00
parent 44b37e2d49
commit a87eed7eaa
8 changed files with 260 additions and 174 deletions
@@ -40,8 +40,9 @@ type UpdateDto struct {
}
type DeleteDto struct {
Id uint `json:"id"`
Number *string `json:"number"`
Id uint `json:"id"`
Number *string `json:"number"`
RequestPayload string `json:"requestPayload" validate:"maxLength=1024"`
}
type MetaDto struct {
@@ -52,10 +53,11 @@ type MetaDto struct {
type ResponseDto struct {
ecore.Main
VclaimSep_Number *string `json:"vclaimSep_number"`
Number *string `json:"number"`
Value *string `json:"value"`
FileUrl *string `json:"fileUrl"`
VclaimSep_Number *string `json:"vclaimSep_number"`
Number *string `json:"number"`
Value *string `json:"value"`
FileUrl *string `json:"fileUrl"`
Detail *FullResponse `json:"detail,omitempty"`
}
func (d VclaimSepControlLetter) ToResponse() ResponseDto {
@@ -64,6 +66,7 @@ func (d VclaimSepControlLetter) ToResponse() ResponseDto {
Number: d.Number,
Value: d.Value,
FileUrl: d.FileUrl,
Detail: d.Detail,
}
resp.Main = d.Main
return resp
@@ -77,6 +80,15 @@ func ToResponseList(data []VclaimSepControlLetter) []ResponseDto {
return resp
}
func (d DeleteDto) RequestPayloadIntoJson() ([]byte, error) {
payload := map[string]interface{}{}
err := json.Unmarshal([]byte(d.RequestPayload), &payload)
if err != nil {
return nil, err
}
return json.Marshal(payload)
}
func (c CreateDto) RequestPayloadIntoJson() ([]byte, error) {
payload := map[string]interface{}{}
err := json.Unmarshal([]byte(c.RequestPayload), &payload)
@@ -122,3 +134,154 @@ func (v ResponseForPDF) GenerateBirthDate() string {
t, _ := time.Parse("2006-01-02", v.VclaimSep.VclaimMember.BirthDate)
return pu.FormatIndonesianDate(t)
}
type SuratKontrol struct {
NoSuratKontrol string `json:"noSuratKontrol"`
TglRencanaKontrol string `json:"tglRencanaKontrol"`
TglTerbit string `json:"tglTerbit"`
JnsKontrol string `json:"jnsKontrol"`
PoliTujuan string `json:"poliTujuan"`
NamaPoliTujuan string `json:"namaPoliTujuan"`
KodeDokter string `json:"kodeDokter"`
NamaDokter string `json:"namaDokter"`
FlagKontrol string `json:"flagKontrol"`
KodeDokterPembuat *string `json:"kodeDokterPembuat"`
NamaDokterPembuat *string `json:"namaDokterPembuat"`
NamaJnsKontrol string `json:"namaJnsKontrol"`
Sep Sep `json:"sep"`
}
type Sep struct {
NoSep string `json:"noSep"`
TglSep string `json:"tglSep"`
JnsPelayanan string `json:"jnsPelayanan"`
Poli string `json:"poli"`
Diagnosa string `json:"diagnosa"`
Peserta Peserta `json:"peserta"`
ProvUmum ProvUmum `json:"provUmum"`
ProvPerujuk ProvPerujuk `json:"provPerujuk"`
}
type Peserta struct {
NoKartu string `json:"noKartu"`
Nama string `json:"nama"`
TglLahir string `json:"tglLahir"`
Kelamin string `json:"kelamin"`
HakKelas string `json:"hakKelas"`
}
type ProvUmum struct {
KdProvider string `json:"kdProvider"`
NmProvider string `json:"nmProvider"`
}
type ProvPerujuk struct {
KdProviderPerujuk string `json:"kdProviderPerujuk"`
NmProviderPerujuk string `json:"nmProviderPerujuk"`
AsalRujukan string `json:"asalRujukan"`
NoRujukan string `json:"noRujukan"`
TglRujukan string `json:"tglRujukan"`
}
type VclaimResponse struct {
MetaData MetaData `json:"metaData"`
Response *SuratKontrol `json:"response"` // nullable
}
type DetailVclaimResponse struct {
MetaData MetaData `json:"metaData"`
Response *FullResponse `json:"response"` // nullable
}
type MetaData struct {
Code string `json:"code"`
Message string `json:"message"`
}
func (r VclaimResponse) ToPDFNeeds() ([]byte, error) {
response := ResponseForPDF{
Number: r.Response.Sep.NoSep,
PlannedControlDate: r.Response.TglRencanaKontrol,
IssuedDate: r.Response.TglTerbit,
Doctor_Name: r.Response.NamaDokter,
DstUnit_Name: r.Response.NamaPoliTujuan,
ResponsibleDoctor_Name: *r.Response.NamaDokterPembuat,
VclaimSep: VclaimSep{
VclaimMember: VclaimMember{
CardNumber: r.Response.Sep.Peserta.NoKartu,
Name: r.Response.Sep.Peserta.Nama,
BirthDate: r.Response.Sep.Peserta.TglLahir,
Gender: r.Response.Sep.Peserta.Kelamin,
},
Diagnose: r.Response.Sep.Diagnosa,
Number: r.Response.Sep.NoSep,
},
}
return json.Marshal(response)
}
type FullResponse struct {
NoSuratKontrol string `json:"noSuratKontrol"`
TglRencanaKontrol string `json:"tglRencanaKontrol"`
TglTerbit string `json:"tglTerbit"`
JnsKontrol string `json:"jnsKontrol"`
PoliTujuan string `json:"poliTujuan"`
NamaPoliTujuan string `json:"namaPoliTujuan"`
KodeDokter string `json:"kodeDokter"`
NamaDokter string `json:"namaDokter"`
FlagKontrol string `json:"flagKontrol"`
KodeDokterPembuat string `json:"kodeDokterPembuat"`
NamaDokterPembuat string `json:"namaDokterPembuat"`
NamaJnsKontrol string `json:"namaJnsKontrol"`
Sep Sep `json:"sep"`
FormPRB FormPRB `json:"formPRB"`
}
type Provider struct {
KdProvider string `json:"kdProvider"`
NmProvider string `json:"nmProvider"`
}
type FormPRB struct {
KdStatusPRB *string `json:"kdStatusPRB"`
Data PRBData `json:"data"`
}
type PRBData struct {
HBA1C *string `json:"HBA1C"`
GDP *string `json:"GDP"`
GD2JPP *string `json:"GD2JPP"`
EGFR *string `json:"eGFR"`
TD_Sistolik *string `json:"TD_Sistolik"`
TD_Diastolik *string `json:"TD_Diastolik"`
LDL *string `json:"LDL"`
Rata_TD_Sistolik *string `json:"Rata_TD_Sistolik"`
Rata_TD_Diastolik *string `json:"Rata_TD_Diastolik"`
JantungKoroner *string `json:"JantungKoroner"`
Stroke *string `json:"Stroke"`
VaskularPerifer *string `json:"VaskularPerifer"`
Aritmia *string `json:"Aritmia"`
AtrialFibrilasi *string `json:"AtrialFibrilasi"`
SesakNapas3Bulan *string `json:"SesakNapas3Bulan"`
NyeriDada3Bulan *string `json:"NyeriDada3Bulan"`
Terkontrol *string `json:"Terkontrol"`
Gejala2xMinggu *string `json:"Gejala2xMinggu"`
BangunMalam *string `json:"BangunMalam"`
KeterbatasanFisik *string `json:"KeterbatasanFisik"`
FungsiParu *string `json:"FungsiParu"`
SkorMMRC *string `json:"SkorMMRC"`
Eksaserbasi1Tahun *string `json:"Eksaserbasi1Tahun"`
MampuAktivitas *string `json:"MampuAktivitas"`
Epileptik6Bulan *string `json:"Epileptik6Bulan"`
EfekSampingOAB *string `json:"EfekSampingOAB"`
HamilMenyusui *string `json:"HamilMenyusui"`
Remisi *string `json:"Remisi"`
TerapiRumatan *string `json:"TerapiRumatan"`
Usia *string `json:"Usia"`
AsamUrat *string `json:"AsamUrat"`
RemisiSLE *string `json:"RemisiSLE"`
Hamil *string `json:"Hamil"`
NadiIstirahat *string `json:"NadiIstirahat"`
SesakNapasAktivitas *string `json:"SesakNapasAktivitas"`
NyeriDadaAktivitas *string `json:"NyeriDadaAktivitas"`
}
@@ -10,4 +10,6 @@ type VclaimSepControlLetter struct {
Number *string `json:"number" gorm:"unique;size:20"`
Value *string `json:"value"`
FileUrl *string `json:"fileUrl" gorm:"unique;size:1024"`
Detail *FullResponse `json:"detail,omitempty" gorm:"-"`
}