-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdiscontinued_medication.go
128 lines (106 loc) · 5.34 KB
/
discontinued_medication.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package elation
import (
"context"
"fmt"
"net/http"
"strconv"
"time"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/trace"
)
type DiscontinuedMedicationServicer interface {
Create(ctx context.Context, create *DiscontinuedMedicationCreate) (*DiscontinuedMedication, *http.Response, error)
Find(ctx context.Context, opts *FindDiscontinuedMedicationsOptions) (*Response[[]*DiscontinuedMedication], *http.Response, error)
Get(ctx context.Context, id int64) (*DiscontinuedMedication, *http.Response, error)
}
var _ DiscontinuedMedicationServicer = (*DiscontinuedMedicationService)(nil)
type DiscontinuedMedicationService struct {
client *HTTPClient
}
type DiscontinuedMedicationCreate struct {
MedOrder int64 `json:"med_order"`
DiscontinueDate string `json:"discontinue_date,omitempty"`
Reason string `json:"reason,omitempty"`
IsDocumented *bool `json:"is_documented,omitempty"`
DocumentingPersonnel int64 `json:"documenting_personnel,omitempty"`
}
func (s *DiscontinuedMedicationService) Create(ctx context.Context, create *DiscontinuedMedicationCreate) (*DiscontinuedMedication, *http.Response, error) {
ctx, span := s.client.tracer.Start(ctx, "create discontinued medication", trace.WithSpanKind(trace.SpanKindClient))
defer span.End()
out := &DiscontinuedMedication{}
res, err := s.client.request(ctx, http.MethodPost, "/discontinued_medications", nil, create, &out)
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, "error making request")
return nil, res, fmt.Errorf("making request: %w", err)
}
return out, res, nil
}
type DiscontinuedMedication struct {
ID int64 `json:"id"`
LastMedicationOrder int64 `json:"last_medication_order"`
MedOrder int64 `json:"med_order"`
Thread int64 `json:"thread"`
DiscontinueDate string `json:"discontinue_date"`
Reason string `json:"reason"`
PrescribingPhysician int64 `json:"prescribing_physician"`
SupervisingPhysician int64 `json:"supervising_physician"`
IsDocumented bool `json:"is_documented"`
Medication *DiscontinuedMedicationMedication `json:"medication"`
DocumentingPersonnel int64 `json:"documenting_personnel"`
DocumentDate time.Time `json:"document_date"`
ChartDate time.Time `json:"chart_date"`
CreatedDate time.Time `json:"created_date"`
DeletedDate *time.Time `json:"deleted_date"`
SignedDate *time.Time `json:"signed_date"`
SignedBy int64 `json:"signed_by"`
Patient int64 `json:"patient"`
Practice int64 `json:"practice"`
}
type DiscontinuedMedicationMedication struct {
ID int64 `json:"id"`
RxnormCuis []string `json:"rxnorm_cuis"`
NDCs []string `json:"ndcs"`
Name string `json:"name"`
BrandName string `json:"brand_name"`
GenericName string `json:"generic_name"`
IsControlled bool `json:"is_controlled"`
MedicationType string `json:"type"`
Route string `json:"route"`
Strength string `json:"strength"`
Form string `json:"form"`
}
type FindDiscontinuedMedicationsOptions struct {
*Pagination
Patient []int64 `url:"patient,omitempty"`
Practice []int64 `url:"practice,omitempty"`
DocumentDateLTE time.Time `url:"document_date__lte,omitempty"`
DocumentDateGTE time.Time `url:"document_date__gte,omitempty"`
DiscontinueDateGTE time.Time `url:"discontinue_date__gte,omitempty"`
DiscontinueDateLTE time.Time `url:"discontinue_date__lte,omitempty"`
}
func (s *DiscontinuedMedicationService) Find(ctx context.Context, opts *FindDiscontinuedMedicationsOptions) (*Response[[]*DiscontinuedMedication], *http.Response, error) {
ctx, span := s.client.tracer.Start(ctx, "find discontinued medications", trace.WithSpanKind(trace.SpanKindClient))
defer span.End()
out := &Response[[]*DiscontinuedMedication]{}
res, err := s.client.request(ctx, http.MethodGet, "/discontinued_medications", opts, nil, &out)
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, "error making request")
return nil, res, fmt.Errorf("making request: %w", err)
}
return out, res, nil
}
func (s *DiscontinuedMedicationService) Get(ctx context.Context, id int64) (*DiscontinuedMedication, *http.Response, error) {
ctx, span := s.client.tracer.Start(ctx, "get discontinued medication", trace.WithSpanKind(trace.SpanKindClient), trace.WithAttributes(attribute.Int64("elation.discontinued_medication_id", id)))
defer span.End()
out := &DiscontinuedMedication{}
res, err := s.client.request(ctx, http.MethodGet, "/discontinued_medications/"+strconv.FormatInt(id, 10), nil, nil, &out)
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, "error making request")
return nil, res, fmt.Errorf("making request: %w", err)
}
return out, res, nil
}