@@ -7,9 +7,10 @@ import (
77 "net/http"
88
99 dstu2pb "github.com/google/fhir/go/proto/google/fhir/proto/dstu2/resources_go_proto"
10+ stu3pb "github.com/google/fhir/go/proto/google/fhir/proto/stu3/resources_go_proto"
1011)
1112
12- func (c * Client ) CreateAuditEvent (event * dstu2pb.AuditEvent ) (* dstu2pb .ContainedResource , * Response , error ) {
13+ func (c * Client ) CreateAuditEvent (event * dstu2pb.AuditEvent ) (* stu3pb .ContainedResource , * Response , error ) {
1314 eventJSON , err := c .ma .MarshalResource (event )
1415 if err != nil {
1516 return nil , nil , err
@@ -20,22 +21,24 @@ func (c *Client) CreateAuditEvent(event *dstu2pb.AuditEvent) (*dstu2pb.Contained
2021 }
2122 _ = c .httpSigner .SignRequest (req )
2223 var operationResponse bytes.Buffer
23- resp , err := c .Do (req , & operationResponse )
24- if (err != nil && err != io .EOF ) || resp == nil {
25- if resp == nil && err != nil {
26- err = ErrEmptyResult
24+ resp , doErr := c .Do (req , & operationResponse )
25+ if (doErr != nil && ! ( doErr == io .EOF || doErr == ErrBadRequest ) ) || resp == nil {
26+ if resp == nil && doErr != nil {
27+ doErr = ErrEmptyResult
2728 }
28- return nil , resp , err
29+ return nil , resp , doErr
2930 }
30- // Success
31- contained := & dstu2pb.ContainedResource {}
31+ contained := & stu3pb.ContainedResource {}
3232 if resp .StatusCode == http .StatusCreated {
3333 return contained , resp , nil
3434 }
3535 // OperationOutcome
3636 unmarshalled , err := c .um .Unmarshal (operationResponse .Bytes ())
37- if err == nil {
38- contained = unmarshalled .(* dstu2pb.ContainedResource )
37+ if err != nil {
38+ return nil , resp , fmt .Errorf ("c.um.Unmarshal: %w" , err )
39+ }
40+ if unmarshalled != nil {
41+ contained = unmarshalled .(* stu3pb.ContainedResource )
3942 }
40- return contained , resp , err
43+ return contained , resp , doErr
4144}
0 commit comments