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