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