Merge pull request #182 from dikstub-rssa/feat/sync-from-simgos-161
merge old-to-new/patient
This commit is contained in:
@@ -0,0 +1,273 @@
|
||||
package m_pasien
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
ecore "simrs-vx/internal/domain/base-entities/core"
|
||||
e "simrs-vx/internal/domain/main-entities/patient"
|
||||
pr "simrs-vx/internal/domain/main-entities/person"
|
||||
pa "simrs-vx/internal/domain/main-entities/person-address"
|
||||
pab "simrs-vx/internal/domain/main-entities/person-address/base"
|
||||
pc "simrs-vx/internal/domain/main-entities/person-contact"
|
||||
rf "simrs-vx/internal/domain/references/person"
|
||||
|
||||
"time"
|
||||
)
|
||||
|
||||
type MPasienDto struct {
|
||||
Id uint `json:"id" gorm:"primaryKey;autoIncrement;column:id"`
|
||||
Nomr string `json:"nomr" gorm:"uniqueIndex;column:nomr"`
|
||||
Title string `json:"title" gorm:"column:title"`
|
||||
Nama string `json:"nama" gorm:"column:nama"`
|
||||
Tempat string `json:"tempat" gorm:"column:tempat"`
|
||||
Tgllahir string `json:"tgllahir" gorm:"column:tgllahir"`
|
||||
Jeniskelamin string `json:"jeniskelamin" gorm:"column:jeniskelamin"`
|
||||
Alamat string `json:"alamat" gorm:"column:alamat"`
|
||||
Kelurahan uint64 `json:"kelurahan" gorm:"column:kelurahan"`
|
||||
Kdkecamatan uint `json:"kdkecamatan" gorm:"column:kdkecamatan"`
|
||||
Kota uint `json:"kota" gorm:"column:kota"`
|
||||
Kdprovinsi uint `json:"kdprovinsi" gorm:"column:kdprovinsi"`
|
||||
Notelp string `json:"notelp" gorm:"column:notelp"`
|
||||
Noktp string `json:"noktp" gorm:"column:noktp"`
|
||||
SuamiOrtu *string `json:"suami_ortu" gorm:"column:suami_ortu"`
|
||||
Pekerjaan string `json:"pekerjaan" gorm:"column:pekerjaan"`
|
||||
Status uint `json:"status" gorm:"column:status"`
|
||||
Agama uint `json:"agama" gorm:"column:agama"`
|
||||
Pendidikan uint `json:"pendidikan" gorm:"column:pendidikan"`
|
||||
Kdcarabayar *uint `json:"kdcarabayar" gorm:"column:kdcarabayar"`
|
||||
Nip *string `json:"nip" gorm:"column:nip"`
|
||||
Tgldaftar string `json:"tgldaftar" gorm:"column:tgldaftar"`
|
||||
AlamatKtp string `json:"alamat_ktp" gorm:"column:alamat_ktp"`
|
||||
ParentNomr *string `json:"parent_nomr" gorm:"column:parent_nomr"`
|
||||
Kepercayaan string `json:"kepercayaan" gorm:"column:kepercayaan"`
|
||||
PenanggungjawabNama string `json:"penanggungjawab_nama" gorm:"column:penanggungjawab_nama"`
|
||||
PenanggungjawabHubungan string `json:"penanggungjawab_hubungan" gorm:"column:penanggungjawab_hubungan"`
|
||||
PenanggungjawabAlamat string `json:"penanggungjawab_alamat" gorm:"column:penanggungjawab_alamat"`
|
||||
PenanggungjawabPhone string `json:"penanggungjawab_phone" gorm:"column:penanggungjawab_phone"`
|
||||
NoKartu string `json:"no_kartu" gorm:"column:no_kartu"`
|
||||
JnsPasien string `json:"jns_pasien" gorm:"column:jns_pasien"`
|
||||
Nk *string `json:"nk" gorm:"column:nk"`
|
||||
Kdprovider *string `json:"kdprovider" gorm:"column:kdprovider"`
|
||||
Nmprovider *string `json:"nmprovider" gorm:"column:nmprovider"`
|
||||
Kelas *uint `json:"kelas" gorm:"column:kelas"`
|
||||
Sim *string `json:"sim" gorm:"column:sim"`
|
||||
Paspor *string `json:"paspor" gorm:"column:paspor"`
|
||||
Disabilitas *string `json:"disabilitas" gorm:"column:disabilitas"`
|
||||
Bahasa string `json:"bahasa" gorm:"column:bahasa"`
|
||||
HambatanKomunikasi string `json:"hambatan_komunikasi" gorm:"column:hambatan_komunikasi"`
|
||||
Kebangsaan string `json:"kebangsaan" gorm:"column:kebangsaan"`
|
||||
Notelprumah1 string `json:"notelprumah1" gorm:"column:notelprumah1"`
|
||||
Notelprumah2 *string `json:"notelprumah2" gorm:"column:notelprumah2"`
|
||||
Notelpkantor string `json:"notelpkantor" gorm:"column:notelpkantor"`
|
||||
NoHp *string `json:"no_hp" gorm:"column:no_hp"`
|
||||
AsalMasuk *string `json:"asal_masuk" gorm:"column:asal_masuk"`
|
||||
Diagnosa *string `json:"diagnosa" gorm:"column:diagnosa"`
|
||||
DiagnosaUtama *string `json:"diagnosa_utama" gorm:"column:diagnosa_utama"`
|
||||
Suku string `json:"suku" gorm:"column:suku"`
|
||||
AgamaLain string `json:"agama_lain" gorm:"column:agama_lain"`
|
||||
StDisabilitas uint `json:"stDisabilitas" gorm:"column:st_disabilitas"`
|
||||
TxtKelurahan string `json:"txt_kelurahan" gorm:"column:txt_kelurahan"`
|
||||
TxtKecamatan string `json:"txt_kecamatan" gorm:"column:txt_kecamatan"`
|
||||
TxtKota string `json:"txt_kota" gorm:"column:txt_kota"`
|
||||
TxtProvinsi string `json:"txt_provinsi" gorm:"column:txt_provinsi"`
|
||||
TxtStatus string `json:"txt_status" gorm:"column:txt_status"`
|
||||
TxtAgama string `json:"txt_agama" gorm:"column:txt_agama"`
|
||||
TxtPendidikan string `json:"txt_pendidikan" gorm:"column:txt_pendidikan"`
|
||||
NamaAyah string `json:"nama_ayah" gorm:"column:nama_ayah"`
|
||||
NamaIbu string `json:"nama_ibu" gorm:"column:nama_ibu"`
|
||||
PendidikanAyah string `json:"pendidikan_ayah" gorm:"column:pendidikan_ayah"`
|
||||
PendidikanIbu string `json:"pendidikan_ibu" gorm:"column:pendidikan_ibu"`
|
||||
StIdentitasOrtu int `json:"st_identitas_ortu" gorm:"column:st_identitas_ortu"`
|
||||
NomrBaru *string `json:"nomr_baru" gorm:"column:nomr_baru"`
|
||||
KtpFile *string `json:"ktp_file" gorm:"column:ktp_file"`
|
||||
KkFile *string `json:"kk_file" gorm:"column:kk_file"`
|
||||
CreatedAt *time.Time `json:"created_at" gorm:"column:created_at"`
|
||||
UpdatedAt *time.Time `json:"updated_at" gorm:"column:updated_at"`
|
||||
NoKk *string `json:"no_kk" gorm:"column:no_kk"`
|
||||
NoktpBaru string `json:"noktp_baru" gorm:"column:noktp_baru"`
|
||||
}
|
||||
|
||||
func (mp MPasienDto) ToPatient() e.Patient {
|
||||
|
||||
patient := e.Patient{
|
||||
Main: ecore.Main{
|
||||
Id: mp.Id,
|
||||
},
|
||||
NewBornStatus: mp.ParentNomr != nil,
|
||||
RegisteredAt: parseTimeDateOnly(mp.Tgldaftar),
|
||||
RegisteredBy_User_Name: mp.Nip,
|
||||
Number: &mp.Nomr,
|
||||
Parent_Number: mp.ParentNomr,
|
||||
// Status_Code: getActiveStatus(mp.Status),
|
||||
// mp.Status is marital status
|
||||
// Parent
|
||||
}
|
||||
|
||||
// person
|
||||
gc := getGender(mp.Jeniskelamin)
|
||||
rc := getReligion(mp.Agama)
|
||||
ec := getEducation(mp.Pendidikan)
|
||||
mc := getMaritalStatus(mp.Status)
|
||||
bc := getBirthRegencyCode(mp.Tempat)
|
||||
et := getEthnicCode(mp.Suku)
|
||||
lc := getLanguageCode(mp.Bahasa)
|
||||
|
||||
person := pr.Person{
|
||||
Name: mp.Nama,
|
||||
FrontTitle: &mp.Title,
|
||||
BirthDate: parseTimeDateOnly(mp.Tgllahir),
|
||||
BirthRegency_Code: &bc,
|
||||
Gender_Code: &gc,
|
||||
ResidentIdentityNumber: nilEmptyString(&mp.Noktp),
|
||||
PassportNumber: nilEmptyString(mp.Paspor),
|
||||
DrivingLicenseNumber: nilEmptyString(mp.Sim),
|
||||
Religion_Code: &rc,
|
||||
Education_Code: &ec,
|
||||
Ocupation_Name: &mp.Pekerjaan,
|
||||
MaritalStatus_Code: &mc,
|
||||
Nationality: &mp.Kebangsaan,
|
||||
Ethnic_Code: &et,
|
||||
Language_Code: &lc,
|
||||
CommunicationIssueStatus: mp.HambatanKomunikasi == "Y",
|
||||
Disability: mp.Disabilitas,
|
||||
ResidentIdentityFileUrl: mp.KtpFile,
|
||||
FamilyIdentityFileUrl: mp.KkFile,
|
||||
// EndTitle
|
||||
// Confidence
|
||||
// Ocupation_Code
|
||||
}
|
||||
var addresses []pa.PersonAddress
|
||||
if mp.Alamat != "" {
|
||||
vc := fmt.Sprintf("%d", mp.Kelurahan)
|
||||
addresses = append(addresses, pa.PersonAddress{
|
||||
PersonAddress: pab.PersonAddress{
|
||||
Address: mp.Alamat,
|
||||
LocationType_Code: rf.ALTCDom,
|
||||
Village_Code: &vc,
|
||||
},
|
||||
})
|
||||
}
|
||||
if mp.AlamatKtp != "" {
|
||||
addresses = append(addresses, pa.PersonAddress{
|
||||
PersonAddress: pab.PersonAddress{
|
||||
Address: mp.AlamatKtp,
|
||||
LocationType_Code: rf.ALTCIdn,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
var contacts []pc.PersonContact
|
||||
|
||||
if mp.NoHp != nil {
|
||||
|
||||
}
|
||||
|
||||
person.Addresses = &addresses
|
||||
person.Contacts = &contacts
|
||||
patient.Person = &person
|
||||
return patient
|
||||
}
|
||||
|
||||
func nilEmptyString(s *string) *string {
|
||||
if s == nil {
|
||||
return nil
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
func getGender(g string) rf.GenderCode {
|
||||
if g == "L" {
|
||||
return rf.GCMale
|
||||
} else if g == "P" {
|
||||
return rf.GCFemale
|
||||
}
|
||||
return rf.GCUnknown
|
||||
|
||||
}
|
||||
|
||||
func getReligion(r uint) rf.ReligionCode {
|
||||
switch r {
|
||||
case 1:
|
||||
return rf.RCIslam
|
||||
case 2:
|
||||
return rf.RCProtestan
|
||||
case 3:
|
||||
return rf.RCKatolik
|
||||
case 4:
|
||||
return rf.RCHindu
|
||||
case 5:
|
||||
return rf.RCBudha
|
||||
case 6:
|
||||
return rf.RCKonghucu
|
||||
default:
|
||||
// 9 "Lainnya"
|
||||
// 0 "Tidak diketahui"
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
func getEducation(e uint) rf.EducationCode {
|
||||
switch e {
|
||||
case 0:
|
||||
return rf.ECTS
|
||||
case 1:
|
||||
return rf.ECSD
|
||||
case 2:
|
||||
return rf.ECSLTP
|
||||
case 3:
|
||||
return rf.ECSLTA
|
||||
case 4:
|
||||
return rf.ECD3
|
||||
case 5:
|
||||
return rf.ECS1
|
||||
case 6:
|
||||
return rf.ECOther
|
||||
case 7:
|
||||
return rf.ECUnkown
|
||||
default:
|
||||
return rf.ECUnkown
|
||||
}
|
||||
}
|
||||
|
||||
func getMaritalStatus(m uint) rf.MaritalStatusCode {
|
||||
switch m {
|
||||
case 1:
|
||||
return rf.MaritalStatusSingle // S
|
||||
case 2:
|
||||
return rf.MaritalStatusMarried // M
|
||||
case 3:
|
||||
return rf.MaritalStatusWidowed // W
|
||||
case 4:
|
||||
return rf.MaritalStatusDivorced // D
|
||||
default:
|
||||
return "" // unknown
|
||||
}
|
||||
}
|
||||
|
||||
func getBirthRegencyCode(r string) string {
|
||||
if r != "" {
|
||||
// TODO get from database
|
||||
}
|
||||
return "3574"
|
||||
}
|
||||
|
||||
func getEthnicCode(s string) string {
|
||||
if s != "" {
|
||||
// TODO check database
|
||||
}
|
||||
return "jawa"
|
||||
}
|
||||
|
||||
func getLanguageCode(s string) string {
|
||||
if s != "" {
|
||||
// TODO check database
|
||||
}
|
||||
return "jawa"
|
||||
}
|
||||
|
||||
func parseTimeDateOnly(d string) *time.Time {
|
||||
do, err := time.Parse("2006-01-02", d)
|
||||
if err == nil {
|
||||
return &do
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user