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
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
|
--$Revision: 6.3 $
--**********************************************************************
--
-- NCBI General Data elements
-- by James Ostell, 1990
-- Version 3.0 - June 1994
--
--**********************************************************************
NCBI-General DEFINITIONS ::=
BEGIN
EXPORTS Date, Person-id, Object-id, Dbtag, Int-fuzz, User-object;
-- StringStore is really a VisibleString. It is used to define very
-- long strings which may need to be stored by the receiving program
-- in special structures, such as a ByteStore, but it's just a hint.
-- AsnTool stores StringStores in ByteStore structures.
-- OCTET STRINGs are also stored in ByteStores by AsnTool
--
-- typedef struct bsunit { /* for building multiline strings */
-- Nlm_Handle str; /* the string piece */
-- Nlm_Int2 len_avail,
-- len;
-- struct bsunit PNTR next; } /* the next one */
-- Nlm_BSUnit, PNTR Nlm_BSUnitPtr;
--
-- typedef struct bytestore {
-- Nlm_Int4 seekptr, /* current position */
-- totlen, /* total stored data length in bytes */
-- chain_offset; /* offset in ByteStore of first byte in curchain */
-- Nlm_BSUnitPtr chain, /* chain of elements */
-- curchain; /* the BSUnit containing seekptr */
-- } Nlm_ByteStore, PNTR Nlm_ByteStorePtr;
--
-- AsnTool incorporates this as a primitive type, so the definition
-- is here just for completeness
--
-- StringStore ::= [APPLICATION 1] IMPLICIT OCTET STRING
--
-- BigInt is really an INTEGER. It is used to warn the receiving code to expect
-- a value bigger than Int4 (actually Int8). It will be stored in DataVal.bigintvalue
--
-- Like StringStore, AsnTool incorporates it as a primitive. The definition would be:
-- BigInt ::= [APPLICATION 2] IMPLICIT INTEGER
--
-- Date is used to replace the (overly complex) UTCTtime, GeneralizedTime
-- of ASN.1
-- It stores only a date
--
Date ::= CHOICE {
str VisibleString , -- for those unparsed dates
std Date-std } -- use this if you can
Date-std ::= SEQUENCE { -- NOTE: this is NOT a unix tm struct
year INTEGER , -- full year (including 1900)
month INTEGER OPTIONAL , -- month (1-12)
day INTEGER OPTIONAL , -- day of month (1-31)
season VisibleString OPTIONAL , -- for "spring", "may-june", etc
hour INTEGER OPTIONAL , -- hour of day (0-23)
minute INTEGER OPTIONAL , -- minute of hour (0-59)
second INTEGER OPTIONAL } -- second of minute (0-59)
-- Dbtag is generalized for tagging
-- eg. { "Social Security", str "023-79-8841" }
-- or { "member", id 8882224 }
Dbtag ::= SEQUENCE {
db VisibleString , -- name of database or system
tag Object-id } -- appropriate tag
-- Object-id can tag or name anything
--
Object-id ::= CHOICE {
id INTEGER ,
str VisibleString }
-- Person-id is to define a std element for people
--
Person-id ::= CHOICE {
dbtag Dbtag , -- any defined database tag
name Name-std , -- structured name
ml VisibleString , -- MEDLINE name (semi-structured)
-- eg. "Jones RM"
str VisibleString } -- unstructured name
Name-std ::= SEQUENCE { -- Structured names
last VisibleString ,
first VisibleString OPTIONAL ,
middle VisibleString OPTIONAL ,
full VisibleString OPTIONAL , -- full name eg. "J. John Smith, Esq"
initials VisibleString OPTIONAL, -- first + middle initials
suffix VisibleString OPTIONAL , -- Jr, Sr, III
title VisibleString OPTIONAL } -- Dr., Sister, etc
--**** Int-fuzz **********************************************
--*
--* uncertainties in integer values
Int-fuzz ::= CHOICE {
p-m INTEGER , -- plus or minus fixed amount
range SEQUENCE { -- max to min
max INTEGER ,
min INTEGER } ,
pct INTEGER , -- % plus or minus (x10) 0-1000
lim ENUMERATED { -- some limit value
unk (0) , -- unknown
gt (1) , -- greater than
lt (2) , -- less than
tr (3) , -- space to right of position
tl (4) , -- space to left of position
circle (5) , -- artificial break at origin of circle
other (255) } , -- something else
alt SET OF INTEGER } -- set of alternatives for the integer
--**** User-object **********************************************
--*
--* a general object for a user defined structured data item
--* used by Seq-feat and Seq-descr
User-object ::= SEQUENCE {
class VisibleString OPTIONAL , -- endeavor which designed this object
type Object-id , -- type of object within class
data SEQUENCE OF User-field } -- the object itself
User-field ::= SEQUENCE {
label Object-id , -- field label
num INTEGER OPTIONAL , -- required for strs, ints, reals, oss
data CHOICE { -- field contents
str VisibleString ,
int INTEGER ,
real REAL ,
bool BOOLEAN ,
os OCTET STRING ,
object User-object , -- for using other definitions
strs SEQUENCE OF VisibleString ,
ints SEQUENCE OF INTEGER ,
reals SEQUENCE OF REAL ,
oss SEQUENCE OF OCTET STRING ,
fields SEQUENCE OF User-field ,
objects SEQUENCE OF User-object } }
END
--$Revision: 6.2 $
--****************************************************************
--
-- NCBI Bibliographic data elements
-- by James Ostell, 1990
--
-- Taken from the American National Standard for
-- Bibliographic References
-- ANSI Z39.29-1977
-- Version 3.0 - June 1994
-- PubMedId added in 1996
-- ArticleIds and eprint elements added in 1999
--
--****************************************************************
NCBI-Biblio DEFINITIONS ::=
BEGIN
EXPORTS Cit-art, Cit-jour, Cit-book, Cit-pat, Cit-let, Id-pat, Cit-gen,
Cit-proc, Cit-sub, Title, Author, PubMedId;
IMPORTS Person-id, Date, Dbtag FROM NCBI-General;
-- Article Ids
ArticleId ::= CHOICE { -- can be many ids for an article
pubmed PubMedId , -- see types below
medline MedlineUID ,
doi DOI ,
pii PII ,
pmcid PmcID ,
pmcpid PmcPid ,
pmpid PmPid ,
other Dbtag } -- generic catch all
PubMedId ::= INTEGER -- Id from the PubMed database at NCBI
MedlineUID ::= INTEGER -- Id from MEDLINE
DOI ::= VisibleString -- Document Object Identifier
PII ::= VisibleString -- Controlled Publisher Identifier
PmcID ::= INTEGER -- PubMed Central Id
PmcPid ::= VisibleString -- Publisher Id supplied to PubMed Central
PmPid ::= VisibleString -- Publisher Id supplied to PubMed
ArticleIdSet ::= SET OF ArticleId
-- Status Dates
PubStatus ::= INTEGER { -- points of publication
received (1) , -- date manuscript received for review
accepted (2) , -- accepted for publication
epublish (3) , -- published electronically by publisher
ppublish (4) , -- published in print by publisher
revised (5) , -- article revised by publisher/author
pmc (6) , -- article first appeared in PubMed Central
pmcr (7) , -- article revision in PubMed Central
pubmed (8) , -- article citation first appeared in PubMed
pubmedr (9) , -- article citation revision in PubMed
aheadofprint (10), -- epublish, but will be followed by print
premedline (11), -- date into PreMedline status
medline (12), -- date made a MEDLINE record
other (255) }
PubStatusDate ::= SEQUENCE { -- done as a structure so fields can be added
pubstatus PubStatus ,
date Date } -- time may be added later
PubStatusDateSet ::= SET OF PubStatusDate
-- Citation Types
Cit-art ::= SEQUENCE { -- article in journal or book
title Title OPTIONAL , -- title of paper (ANSI requires)
authors Auth-list OPTIONAL , -- authors (ANSI requires)
from CHOICE { -- journal or book
journal Cit-jour ,
book Cit-book ,
proc Cit-proc } ,
ids ArticleIdSet OPTIONAL } -- lots of ids
Cit-jour ::= SEQUENCE { -- Journal citation
title Title , -- title of journal
imp Imprint }
Cit-book ::= SEQUENCE { -- Book citation
title Title , -- Title of book
coll Title OPTIONAL , -- part of a collection
authors Auth-list, -- authors
imp Imprint }
Cit-proc ::= SEQUENCE { -- Meeting proceedings
book Cit-book , -- citation to meeting
meet Meeting } -- time and location of meeting
-- Patent number and date-issue were made optional in 1997 to
-- support patent applications being issued from the USPTO
-- Semantically a Cit-pat must have either a patent number or
-- an application number (or both) to be valid
Cit-pat ::= SEQUENCE { -- patent citation
title VisibleString ,
authors Auth-list, -- author/inventor
country VisibleString , -- Patent Document Country
doc-type VisibleString , -- Patent Document Type
number VisibleString OPTIONAL, -- Patent Document Number
date-issue Date OPTIONAL, -- Patent Issue/Pub Date
class SEQUENCE OF VisibleString OPTIONAL , -- Patent Doc Class Code
app-number VisibleString OPTIONAL , -- Patent Doc Appl Number
app-date Date OPTIONAL , -- Patent Appl File Date
applicants Auth-list OPTIONAL , -- Applicants
assignees Auth-list OPTIONAL , -- Assignees
priority SEQUENCE OF Patent-priority OPTIONAL , -- Priorities
abstract VisibleString OPTIONAL } -- abstract of patent
Patent-priority ::= SEQUENCE {
country VisibleString , -- Patent country code
number VisibleString , -- number assigned in that country
date Date } -- date of application
Id-pat ::= SEQUENCE { -- just to identify a patent
country VisibleString , -- Patent Document Country
id CHOICE {
number VisibleString , -- Patent Document Number
app-number VisibleString } , -- Patent Doc Appl Number
doc-type VisibleString OPTIONAL } -- Patent Doc Type
Cit-let ::= SEQUENCE { -- letter, thesis, or manuscript
cit Cit-book , -- same fields as a book
man-id VisibleString OPTIONAL , -- Manuscript identifier
type ENUMERATED {
manuscript (1) ,
letter (2) ,
thesis (3) } OPTIONAL }
-- NOTE: this is just to cite a
-- direct data submission, see NCBI-Submit
-- for the form of a sequence submission
Cit-sub ::= SEQUENCE { -- citation for a direct submission
authors Auth-list , -- not necessarily authors of the paper
imp Imprint OPTIONAL , -- this only used to get date.. will go
medium ENUMERATED { -- medium of submission
paper (1) ,
tape (2) ,
floppy (3) ,
email (4) ,
other (255) } OPTIONAL ,
date Date OPTIONAL , -- replaces imp, will become required
descr VisibleString OPTIONAL } -- description of changes for public view
Cit-gen ::= SEQUENCE { -- NOT from ANSI, this is a catchall
cit VisibleString OPTIONAL , -- anything, not parsable
authors Auth-list OPTIONAL ,
muid INTEGER OPTIONAL , -- medline uid
journal Title OPTIONAL ,
volume VisibleString OPTIONAL ,
issue VisibleString OPTIONAL ,
pages VisibleString OPTIONAL ,
date Date OPTIONAL ,
serial-number INTEGER OPTIONAL , -- for GenBank style references
title VisibleString OPTIONAL , -- eg. cit="unpublished",title="title"
pmid PubMedId OPTIONAL } -- PubMed Id
-- Authorship Group
Auth-list ::= SEQUENCE {
names CHOICE {
std SEQUENCE OF Author , -- full citations
ml SEQUENCE OF VisibleString , -- MEDLINE, semi-structured
str SEQUENCE OF VisibleString } , -- free for all
affil Affil OPTIONAL } -- author affiliation
Author ::= SEQUENCE {
name Person-id , -- Author, Primary or Secondary
level ENUMERATED {
primary (1),
secondary (2) } OPTIONAL ,
role ENUMERATED { -- Author Role Indicator
compiler (1),
editor (2),
patent-assignee (3),
translator (4) } OPTIONAL ,
affil Affil OPTIONAL ,
is-corr BOOLEAN OPTIONAL } -- TRUE if corresponding author
Affil ::= CHOICE {
str VisibleString , -- unparsed string
std SEQUENCE { -- std representation
affil VisibleString OPTIONAL , -- Author Affiliation, Name
div VisibleString OPTIONAL , -- Author Affiliation, Division
city VisibleString OPTIONAL , -- Author Affiliation, City
sub VisibleString OPTIONAL , -- Author Affiliation, County Sub
country VisibleString OPTIONAL , -- Author Affiliation, Country
street VisibleString OPTIONAL , -- street address, not ANSI
email VisibleString OPTIONAL ,
fax VisibleString OPTIONAL ,
phone VisibleString OPTIONAL ,
postal-code VisibleString OPTIONAL }}
-- Title Group
-- Valid for = A = Analytic (Cit-art)
-- J = Journals (Cit-jour)
-- B = Book (Cit-book)
-- Valid for:
Title ::= SET OF CHOICE {
name VisibleString , -- Title, Anal,Coll,Mono AJB
tsub VisibleString , -- Title, Subordinate A B
trans VisibleString , -- Title, Translated AJB
jta VisibleString , -- Title, Abbreviated J
iso-jta VisibleString , -- specifically ISO jta J
ml-jta VisibleString , -- specifically MEDLINE jta J
coden VisibleString , -- a coden J
issn VisibleString , -- ISSN J
abr VisibleString , -- Title, Abbreviated B
isbn VisibleString } -- ISBN B
Imprint ::= SEQUENCE { -- Imprint group
date Date , -- date of publication
volume VisibleString OPTIONAL ,
issue VisibleString OPTIONAL ,
pages VisibleString OPTIONAL ,
section VisibleString OPTIONAL ,
pub Affil OPTIONAL, -- publisher, required for book
cprt Date OPTIONAL, -- copyright date, " " "
part-sup VisibleString OPTIONAL , -- part/sup of volume
language VisibleString DEFAULT "ENG" , -- put here for simplicity
prepub ENUMERATED { -- for prepublication citations
submitted (1) , -- submitted, not accepted
in-press (2) , -- accepted, not published
other (255) } OPTIONAL ,
part-supi VisibleString OPTIONAL , -- part/sup on issue
retract CitRetract OPTIONAL , -- retraction info
pubstatus PubStatus OPTIONAL , -- current status of this publication
history PubStatusDateSet OPTIONAL } -- dates for this record
CitRetract ::= SEQUENCE {
type ENUMERATED { -- retraction of an entry
retracted (1) , -- this citation retracted
notice (2) , -- this citation is a retraction notice
in-error (3) , -- an erratum was published about this
erratum (4) } , -- this is a published erratum
exp VisibleString OPTIONAL } -- citation and/or explanation
Meeting ::= SEQUENCE {
number VisibleString ,
date Date ,
place Affil OPTIONAL }
END
--$Revision: 6.0 $
--**********************************************************************
--
-- MEDLINE data definitions
-- James Ostell, 1990
--
-- enhanced in 1996 to support PubMed records as well by simply adding
-- the PubMedId and making MedlineId optional
--
--**********************************************************************
NCBI-Medline DEFINITIONS ::=
BEGIN
EXPORTS Medline-entry, Medline-si;
IMPORTS Cit-art, PubMedId FROM NCBI-Biblio
Date FROM NCBI-General;
-- a MEDLINE or PubMed entry
Medline-entry ::= SEQUENCE {
uid INTEGER OPTIONAL , -- MEDLINE UID, sometimes not yet available if from PubMed
em Date , -- Entry Month
cit Cit-art , -- article citation
abstract VisibleString OPTIONAL ,
mesh SET OF Medline-mesh OPTIONAL ,
substance SET OF Medline-rn OPTIONAL ,
xref SET OF Medline-si OPTIONAL ,
idnum SET OF VisibleString OPTIONAL , -- ID Number (grants, contracts)
gene SET OF VisibleString OPTIONAL ,
pmid PubMedId OPTIONAL , -- MEDLINE records may include the PubMedId
pub-type SET OF VisibleString OPTIONAL, -- may show publication types (review, etc)
mlfield SET OF Medline-field OPTIONAL , -- additional Medline field types
status INTEGER {
publisher (1) , -- record as supplied by publisher
premedline (2) , -- premedline record
medline (3) } DEFAULT medline } -- regular medline record
Medline-mesh ::= SEQUENCE {
mp BOOLEAN DEFAULT FALSE , -- TRUE if main point (*)
term VisibleString , -- the MeSH term
qual SET OF Medline-qual OPTIONAL } -- qualifiers
Medline-qual ::= SEQUENCE {
mp BOOLEAN DEFAULT FALSE , -- TRUE if main point
subh VisibleString } -- the subheading
Medline-rn ::= SEQUENCE { -- medline substance records
type ENUMERATED { -- type of record
nameonly (0) ,
cas (1) , -- CAS number
ec (2) } , -- EC number
cit VisibleString OPTIONAL , -- CAS or EC number if present
name VisibleString } -- name (always present)
Medline-si ::= SEQUENCE { -- medline cross reference records
type ENUMERATED { -- type of xref
ddbj (1) , -- DNA Data Bank of Japan
carbbank (2) , -- Carbohydrate Structure Database
embl (3) , -- EMBL Data Library
hdb (4) , -- Hybridoma Data Bank
genbank (5) , -- GenBank
hgml (6) , -- Human Gene Map Library
mim (7) , -- Mendelian Inheritance in Man
msd (8) , -- Microbial Strains Database
pdb (9) , -- Protein Data Bank (Brookhaven)
pir (10) , -- Protein Identification Resource
prfseqdb (11) , -- Protein Research Foundation (Japan)
psd (12) , -- Protein Sequence Database (Japan)
swissprot (13) , -- SwissProt
gdb (14) } , -- Genome Data Base
cit VisibleString OPTIONAL } -- the citation/accession number
Medline-field ::= SEQUENCE {
type INTEGER { -- Keyed type
other (0) , -- look in line code
comment (1) , -- comment line
erratum (2) } , -- retracted, corrected, etc
str VisibleString , -- the text
ids SEQUENCE OF DocRef OPTIONAL } -- pointers relevant to this text
DocRef ::= SEQUENCE { -- reference to a document
type INTEGER {
medline (1) ,
pubmed (2) ,
ncbigi (3) } ,
uid INTEGER }
END
--$Revision: 6.0 $
--********************************************************************
--
-- Publication common set
-- James Ostell, 1990
--
-- This is the base class definitions for Publications of all sorts
--
-- support for PubMedId added in 1996
--********************************************************************
NCBI-Pub DEFINITIONS ::=
BEGIN
EXPORTS Pub, Pub-set, Pub-equiv;
IMPORTS Medline-entry FROM NCBI-Medline
Cit-art, Cit-jour, Cit-book, Cit-proc, Cit-pat, Id-pat, Cit-gen,
Cit-let, Cit-sub, PubMedId FROM NCBI-Biblio;
Pub ::= CHOICE {
gen Cit-gen , -- general or generic unparsed
sub Cit-sub , -- submission
medline Medline-entry ,
muid INTEGER , -- medline uid
article Cit-art ,
journal Cit-jour ,
book Cit-book ,
proc Cit-proc , -- proceedings of a meeting
patent Cit-pat ,
pat-id Id-pat , -- identify a patent
man Cit-let , -- manuscript, thesis, or letter
equiv Pub-equiv, -- to cite a variety of ways
pmid PubMedId } -- PubMedId
Pub-equiv ::= SET OF Pub -- equivalent identifiers for same citation
Pub-set ::= CHOICE {
pub SET OF Pub ,
medline SET OF Medline-entry ,
article SET OF Cit-art ,
journal SET OF Cit-jour ,
book SET OF Cit-book ,
proc SET OF Cit-proc , -- proceedings of a meeting
patent SET OF Cit-pat }
END
|