File size: 6,186 Bytes
4304d82
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "schedule-parser-schema-v1",
  "title": "PocketTrials fallback schedule parser output",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version",
    "status",
    "reference_event",
    "phases",
    "window",
    "issues",
    "overall_confidence"
  ],
  "properties": {
    "schema_version": {"const": "schedule-parser-schema-v1"},
    "status": {"enum": ["parsed", "ambiguous", "unsupported"]},
    "reference_event": {"$ref": "#/$defs/inferenceReferenceEvent"},
    "phases": {
      "type": "array",
      "maxItems": 4,
      "items": {"$ref": "#/$defs/inferencePhase"}
    },
    "window": {
      "oneOf": [
        {"type": "null"},
        {"$ref": "#/$defs/inferenceWindow"}
      ]
    },
    "issues": {
      "type": "array",
      "items": {"$ref": "#/$defs/inferenceIssue"}
    },
    "overall_confidence": {"type": "number", "minimum": 0, "maximum": 1}
  },
  "$defs": {
    "unit": {"enum": ["day", "week", "month", "year"]},
    "referenceType": {
      "enum": [
        "C1D1",
        "REGISTRATION",
        "RANDOMIZATION",
        "TREATMENT_START",
        "ENROLLMENT",
        "OTHER",
        "UNSPECIFIED"
      ]
    },
    "expected": {
      "type": "object",
      "additionalProperties": false,
      "required": ["status", "reference_event", "phases", "window", "issues"],
      "properties": {
        "status": {"enum": ["parsed", "ambiguous", "unsupported"]},
        "reference_event": {"$ref": "#/$defs/expectedReferenceEvent"},
        "phases": {
          "type": "array",
          "maxItems": 4,
          "items": {"$ref": "#/$defs/expectedPhase"}
        },
        "window": {
          "oneOf": [
            {"type": "null"},
            {"$ref": "#/$defs/expectedWindow"}
          ]
        },
        "issues": {
          "type": "array",
          "uniqueItems": true,
          "items": {"type": "string", "minLength": 1}
        }
      }
    },
    "expectedReferenceEvent": {
      "type": "object",
      "additionalProperties": false,
      "required": ["type", "source_text"],
      "properties": {
        "type": {"$ref": "#/$defs/referenceType"},
        "source_text": {"type": ["string", "null"]}
      }
    },
    "expectedInterval": {
      "type": "object",
      "additionalProperties": false,
      "required": ["value", "unit", "source_text"],
      "properties": {
        "value": {"type": "number", "exclusiveMinimum": 0},
        "unit": {"$ref": "#/$defs/unit"},
        "source_text": {"type": "string", "minLength": 1}
      }
    },
    "expectedBoundary": {
      "type": "object",
      "additionalProperties": false,
      "required": ["type", "value", "unit", "source_text"],
      "properties": {
        "type": {"enum": ["absolute", "duration", "indefinite"]},
        "value": {"type": ["number", "null"]},
        "unit": {
          "oneOf": [{"$ref": "#/$defs/unit"}, {"type": "null"}]
        },
        "source_text": {"type": ["string", "null"]}
      }
    },
    "expectedPhase": {
      "type": "object",
      "additionalProperties": false,
      "required": ["interval", "boundary"],
      "properties": {
        "interval": {"$ref": "#/$defs/expectedInterval"},
        "boundary": {"$ref": "#/$defs/expectedBoundary"}
      }
    },
    "expectedWindow": {
      "type": "object",
      "additionalProperties": false,
      "required": ["before_days", "after_days", "source_text"],
      "properties": {
        "before_days": {"type": "integer", "minimum": 0},
        "after_days": {"type": "integer", "minimum": 0},
        "source_text": {"type": "string", "minLength": 1}
      }
    },
    "confidence": {"type": "number", "minimum": 0, "maximum": 1},
    "inferenceReferenceEvent": {
      "type": "object",
      "additionalProperties": false,
      "required": ["type", "source_text", "confidence"],
      "properties": {
        "type": {"$ref": "#/$defs/referenceType"},
        "source_text": {"type": ["string", "null"]},
        "confidence": {"$ref": "#/$defs/confidence"}
      }
    },
    "inferenceInterval": {
      "type": "object",
      "additionalProperties": false,
      "required": ["value", "unit", "source_text", "confidence"],
      "properties": {
        "value": {"type": "number", "exclusiveMinimum": 0},
        "unit": {"$ref": "#/$defs/unit"},
        "source_text": {"type": "string"},
        "confidence": {"$ref": "#/$defs/confidence"}
      }
    },
    "inferenceBoundary": {
      "type": "object",
      "additionalProperties": false,
      "required": ["type", "value", "unit", "source_text", "confidence"],
      "properties": {
        "type": {"enum": ["absolute", "duration", "indefinite"]},
        "value": {"type": ["number", "null"]},
        "unit": {
          "oneOf": [{"$ref": "#/$defs/unit"}, {"type": "null"}]
        },
        "source_text": {"type": ["string", "null"]},
        "confidence": {"$ref": "#/$defs/confidence"}
      }
    },
    "inferencePhase": {
      "type": "object",
      "additionalProperties": false,
      "required": ["interval", "boundary", "confidence"],
      "properties": {
        "interval": {"$ref": "#/$defs/inferenceInterval"},
        "boundary": {"$ref": "#/$defs/inferenceBoundary"},
        "confidence": {"$ref": "#/$defs/confidence"}
      }
    },
    "inferenceWindow": {
      "type": "object",
      "additionalProperties": false,
      "required": ["before_days", "after_days", "source_text", "confidence"],
      "properties": {
        "before_days": {"type": "integer", "minimum": 0},
        "after_days": {"type": "integer", "minimum": 0},
        "source_text": {"type": "string"},
        "confidence": {"$ref": "#/$defs/confidence"}
      }
    },
    "inferenceIssue": {
      "type": "object",
      "additionalProperties": false,
      "required": ["type", "message", "source_text", "confidence"],
      "properties": {
        "type": {"type": "string", "minLength": 1},
        "message": {"type": "string", "minLength": 1},
        "source_text": {"type": ["string", "null"]},
        "confidence": {"$ref": "#/$defs/confidence"}
      }
    }
  }
}