feat(osi): 实现 JKDA 档案 Create/Update 与创建请求契约(T-206)
- contract/jkda.go 补创建请求结构体(healthRecord + manageInfo + 既往史节点) - osi/jkda.go 新增 CreateHealthRecord/UpdateHealthRecord - osi/codes.go 登记 JKDA00001 create / JKDA00003 update serviceId 与路径 - mapping 映射创建路径(真实字典快照反查主数据) - 代码与单测完成;真实 create 待安全测试档案与写入授权(见 tasks.md T-206 BLOCKED) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package mapping
|
||||
|
||||
import "chis_osi/contract"
|
||||
|
||||
type PHISHealthRecord struct {
|
||||
SourceSystem string
|
||||
SourceRecordID string
|
||||
@@ -158,3 +160,31 @@ func mapCode(dict Dict, code string, errs *[]ValidationError) string {
|
||||
}
|
||||
return mapped
|
||||
}
|
||||
func BuildHealthRecordCreate(mapped MappedHealthRecord) contract.HealthRecordCreate {
|
||||
return contract.HealthRecordCreate{
|
||||
BaseInfo: contract.HealthRecordBaseInfo{
|
||||
IDCard: mapped.IDCard,
|
||||
PersonName: mapped.PersonName,
|
||||
},
|
||||
HealthRecord: contract.HealthRecordCreateInfo{
|
||||
CheckID: mapped.CheckID,
|
||||
IDCard: mapped.IDCard,
|
||||
PersonName: mapped.PersonName,
|
||||
SexCode: mapped.SexCode,
|
||||
Birthday: mapped.Birthday,
|
||||
MobileNumber: mapped.MobileNumber,
|
||||
RegionCode: mapped.RegionCode,
|
||||
ManaDoctorID: mapped.ManaDoctorID,
|
||||
ManaUnitID: mapped.ManaUnitID,
|
||||
CreateUser: mapped.ManaDoctorID,
|
||||
CreateUnit: mapped.ManaUnitID,
|
||||
NationCode: mapped.NationCode,
|
||||
EducationCode: mapped.EducationCode,
|
||||
WorkCode: mapped.WorkCode,
|
||||
MaritalStatusCode: mapped.MaritalStatusCode,
|
||||
BloodTypeCode: mapped.BloodTypeCode,
|
||||
RhBloodCode: mapped.RhBloodCode,
|
||||
InsuranceCode: mapped.InsuranceCode,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,26 @@ package mapping
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestBuildHealthRecordCreateUsesMappedFieldsAndCheckID(t *testing.T) {
|
||||
mapped, errs := MapHealthRecord(validPHISHealthRecord(), MapContext{Dicts: DefaultDictSnapshot()})
|
||||
if len(errs) != 0 {
|
||||
t.Fatalf("errors = %#v", errs)
|
||||
}
|
||||
|
||||
create := BuildHealthRecordCreate(mapped)
|
||||
if create.HealthRecord.CheckID != mapped.CheckID {
|
||||
t.Fatalf("checkId = %q, want %q", create.HealthRecord.CheckID, mapped.CheckID)
|
||||
}
|
||||
if create.HealthRecord.IDCard != mapped.IDCard || create.HealthRecord.PersonName != mapped.PersonName {
|
||||
t.Fatalf("healthRecord demographics = %#v", create.HealthRecord)
|
||||
}
|
||||
if create.HealthRecord.RegionCode != mapped.RegionCode || create.HealthRecord.ManaDoctorID != mapped.ManaDoctorID || create.HealthRecord.ManaUnitID != mapped.ManaUnitID || create.HealthRecord.CreateUser != mapped.ManaDoctorID || create.HealthRecord.CreateUnit != mapped.ManaUnitID {
|
||||
t.Fatalf("management fields = %#v", create.HealthRecord)
|
||||
}
|
||||
if create.BaseInfo.IDCard != mapped.IDCard || create.BaseInfo.PersonName != mapped.PersonName {
|
||||
t.Fatalf("baseInfo = %#v", create.BaseInfo)
|
||||
}
|
||||
}
|
||||
func TestMapHealthRecordMapsDirectFieldsDictsAndCheckID(t *testing.T) {
|
||||
src := validPHISHealthRecord()
|
||||
got, errs := MapHealthRecord(src, MapContext{Dicts: DefaultDictSnapshot()})
|
||||
|
||||
Reference in New Issue
Block a user