1
1
const { coding, reference } = require ( './snippets' ) ;
2
- const { ifAllArgsObj, ifSomeArgsObj } = require ( '../helpers/templateUtils' ) ;
2
+ const { ifAllArgsObj, ifSomeArgsObj, ifAllArgs } = require ( '../helpers/templateUtils' ) ;
3
3
4
- function eventTemplate ( { eventCode, eventSystem, eventDisplay } ) {
5
- let codeSystem = eventSystem ;
6
- if ( ! codeSystem ) {
7
- codeSystem = 'http://snomed.info/sct' ;
8
- }
4
+ function eventTemplate ( eventCoding ) {
9
5
return {
10
6
event : {
11
7
coding : [
12
- coding ( {
13
- code : eventCode ,
14
- system : codeSystem ,
15
- display : eventDisplay ,
16
- } ) ,
8
+ coding ( eventCoding ) ,
17
9
] ,
18
10
} ,
19
11
} ;
@@ -31,67 +23,50 @@ function suspectedCauseTemplate({ suspectedCauseId, suspectedCauseType }) {
31
23
}
32
24
33
25
34
- function seriousnessTemplate ( { seriousnessCode, seriousnessCodeSystem, seriousnessDisplayText } ) {
35
- let codeSystem = seriousnessCodeSystem ;
36
- if ( ! codeSystem ) {
37
- codeSystem = 'http://terminology.hl7.org/CodeSystem/adverse-event-seriousness' ;
38
- }
26
+ function seriousnessTemplate ( seriousnessCoding ) {
39
27
return {
40
28
seriousness : {
41
29
coding : [
42
- coding ( {
43
- code : seriousnessCode ,
44
- system : codeSystem ,
45
- display : seriousnessDisplayText ,
46
- } ) ,
30
+ coding ( seriousnessCoding ) ,
47
31
] ,
48
32
} ,
49
33
} ;
50
34
}
51
35
52
- function categoryTemplate ( { categoryCode, categoryCodeSystem, categoryDisplayText } ) {
53
- let codeSystem = categoryCodeSystem ;
54
- if ( ! codeSystem ) {
55
- codeSystem = 'http://terminology.hl7.org/CodeSystem/adverse-event-category' ;
56
- }
36
+ function categoryTemplate ( categoryCoding ) {
57
37
return {
58
- category : {
38
+ category : [ {
59
39
coding : [
60
- coding ( {
61
- code : categoryCode ,
62
- system : codeSystem ,
63
- display : categoryDisplayText ,
64
- } ) ,
40
+ coding ( categoryCoding ) ,
65
41
] ,
66
- } ,
42
+ } ] ,
67
43
} ;
68
44
}
69
45
70
- function severityTemplate ( { severityCode } ) {
46
+ function severityTemplate ( severityCode ) {
71
47
return {
72
48
severity : {
73
49
coding : [
74
50
coding ( {
75
51
code : severityCode ,
52
+ system : 'http://terminology.hl7.org/CodeSystem/adverse-event-severity' ,
76
53
} ) ,
77
54
] ,
78
55
} ,
79
56
} ;
80
57
}
81
58
82
- function actualityTemplate ( { actuality } ) {
83
- let actualityCode = actuality ;
84
- if ( ! actualityCode ) {
85
- actualityCode = 'https://www.hl7.org/fhir/valueset-adverse-event-actuality.html' ;
86
- }
59
+ function studyTemplate ( studyId ) {
87
60
return {
88
- actuality : {
89
- coding : [
90
- coding ( {
91
- code : actualityCode ,
92
- } ) ,
93
- ] ,
94
- } ,
61
+ study : [
62
+ reference ( { id : studyId , resourceType : 'ResearchStudy' } ) ,
63
+ ] ,
64
+ } ;
65
+ }
66
+
67
+ function recordedDateTemplate ( recordedDateTime ) {
68
+ return {
69
+ recordedDate : recordedDateTime ,
95
70
} ;
96
71
}
97
72
@@ -108,14 +83,14 @@ function adverseEventTemplate({
108
83
id,
109
84
subject : reference ( { id : subjectId , resourceType : 'Patient' } ) ,
110
85
...ifSomeArgsObj ( eventTemplate ) ( { code, system, display } ) ,
111
- ...ifAllArgsObj ( suspectedCauseTemplate ) ( { id : suspectedCauseId , resourceType : suspectedCauseType } ) ,
112
- ...ifSomeArgsObj ( seriousnessTemplate ) ( { seriousnessCode, seriousnessCodeSystem, seriousnessDisplayText } ) ,
113
- ...ifSomeArgsObj ( categoryTemplate ) ( { categoryCode, categoryCodeSystem, categoryDisplayText } ) ,
114
- ...ifAllArgsObj ( severityTemplate ) ( { severity } ) ,
115
- ... actualityTemplate ( actuality ) ,
116
- study : reference ( { id : studyId , resourceType : 'ResearchStudy' } ) ,
86
+ ...ifAllArgsObj ( suspectedCauseTemplate ) ( { suspectedCauseId, suspectedCauseType } ) ,
87
+ ...ifSomeArgsObj ( seriousnessTemplate ) ( { code : seriousnessCode , system : seriousnessCodeSystem , display : seriousnessDisplayText } ) ,
88
+ ...ifSomeArgsObj ( categoryTemplate ) ( { code : categoryCode , system : categoryCodeSystem , display : categoryDisplayText } ) ,
89
+ ...ifAllArgs ( severityTemplate ) ( severity ) ,
90
+ actuality,
91
+ ... ifAllArgs ( studyTemplate ) ( studyId ) ,
117
92
date : effectiveDateTime ,
118
- recordedDate : recordedDateTime ,
93
+ ... ifAllArgs ( recordedDateTemplate ) ( recordedDateTime ) ,
119
94
} ;
120
95
}
121
96
0 commit comments