1/* 2 3 ASN.1 specification of the File Exchange Format for Vital Signs 4 The info was manually extracted from CEN/TC251/PT-40/4002N005 5 A number of bugs and typos were fixed. 6 7 $Id$ 8 Copyright (C) 2009 Alois Schloegl <a.schloegl@ieee.org> 9 This file is part of BioSig http://biosig.sf.net/ 10 11 BioSig is free software; you can redistribute it and/or 12 modify it under the terms of the GNU General Public License 13 as published by the Free Software Foundation; either version 3 14 of the License, or (at your option) any later version. 15 16*/ 17 18 19ModuleTest DEFINITIONS ::= 20BEGIN 21 22/* 23B.1.1 ASN.1 built-in types used 24INTEGER 25ISO/IEC 8824-1:1998 Ch. 18 26REAL 27ISO/IEC 8824-1:1998 Ch. 20 28BIT-STRING 29ISO/IEC 8824-1:1998 Ch. 21 30OCTET-STRING 31ISO/IEC 8824-1:1998 Ch. 22 32SEQUENCE 33ISO/IEC 8824-1:1998 Ch. 24 34SEQUENCE-OF 35ISO/IEC 8824-1:1998 Ch. 25 36CHOICE 37ISO/IEC 8824-1:1998 Ch. 28 38Tagged types 39ISO/IEC 8824-1:1998 Ch. 30 40UTF8String 41ISO/IEC 8824-1:1998 Ch. 36.13; ISO/IEC 10646-1 42Generalized time 43ISO/IEC 8824-1:1998 Ch. 41; ISO 8601 44Constrained types 45ISO/IEC 8824-1:1998 Ch. 44 46*/ 47 48INT-U64 ::= INTEGER -- (0 .. 18446744073709551615) /* make asn1c v0.9.22 happy */ 49INT-I64 ::= INTEGER -- (-9223372036854775808 .. 9223372036854775807) /* reduced to make asn1c v0.9.22 happy */ 50 51INT-U32 ::= INTEGER (0 .. 4294967295) 52INT-I32 ::= INTEGER (-2147483648 .. 2147483647) 53INT-U16 ::= INTEGER (0 .. 65535) 54INT-I16 ::= INTEGER (-32768 .. 32767) 55INT-U8 ::= INTEGER (0 .. 255) 56INT-I8 ::= INTEGER (-128 .. 127) 57 58BITS-32 ::= BIT STRING SIZE (32) 59BITS-16 ::= BIT STRING SIZE (16) 60BITS-8 ::= BIT STRING SIZE (8) 61 62FEFString ::= UTF8String 63FEFFloat ::= REAL 64 65 66Fraction ::= SEQUENCE { 67 numerator [1] INT-I32, -- INT-32 is not defined 68 denominator [2] INT-I32 69} 70 71AbsoluteRange ::= SEQUENCE { 72 lowervalue [1] FEFFloat, 73 uppervalue [2] FEFFloat 74} 75 76Handle ::= [APPLICATION 2337] INT-U16 77HandleRef ::= INT-U16 78DeviceCode ::= INT-U16 79 -- block A: Device Nomenclature 80UnitsOfMeasurementCode ::= INT-U16 81 -- block B: Units of Measurement 82MetricsCode ::= INT-U16 83 -- block C: Metrics 84BodySiteCode ::= INT-U16 85 -- block D: Body Sites 86AlertCode ::= INT-U16 87 -- block E: Alert Codes 88ExtNomenclatureCode ::= INT-U16 89 -- block F: External Nomenclatures 90ParameterGroupCode ::= INT-U16 91 -- unassigned block: Parameter Groups 92PrivateCode ::= INT-U16 93 -- code specified by the user or manufacturer 94 -- ENV 13734 uses the term “PrivateOID” here 95 96Placeholder ::= [APPLICATION 6499] OCTET STRING 97 98 99-- missing definitions 100HealthCareProviderId ::= FEFString 101Address ::= FEFString 102UnitCode ::= FEFString 103 104ManufacturerID ::= CHOICE { 105 oid [1] OBJECT IDENTIFIER, 106 -- ISO 8824 object identifier 107 108 uuid [2] OCTET STRING SIZE (16) 109 -- ISO 11578 universal unique identifier 110} 111 112AbsoluteTime ::= GeneralizedTime 113RelativeTime ::= INT-U32 114HighResRelativeTime ::= INT-U64 115 116ObservationTime ::= SEQUENCE { 117 absolutetimestamp [APPLICATION 2448] AbsoluteTime, --OPTIONAL, 118 relativetimestamp [APPLICATION 2449] RelativeTime, --OPTIONAL, 119 hirestimerelativestamp [APPLICATION 2537] HighResRelativeTime --OPTIONAL 120} 121 122SimpleColour ::= INTEGER { 123 colblack (0), -- RGB=000 124 colred (1), -- RGB=100 125 colgreen (2), -- RGB=010 126 colyellow (3), -- RGB=110 127 colblue (4), -- RGB=001 128 colmagenta (5), -- RGB=101 129 colcyan (6), -- RGB=011 130 colwhite (7) -- RGB=111 131} (0..65535) 132 133ExtNomenRef ::= SEQUENCE { 134 nomenclatureid ExtNomenclatureCode, 135 nomenclaturecode ANY DEFINED BY nomenclatureid 136} 137 138MetricMeasure ::= SEQUENCE { 139 metricmeasurevalue [1] FEFFloat, 140 metricmeasuremnit [2] UnitsOfMeasurementCode 141} 142 143PersonNameGroup ::= SEQUENCE { 144 familyname [1] FEFString, 145 givenname [2] FEFString, 146 middlename [3] FEFString, 147 prefix [4] FEFString, 148 suffix [5] FEFString, 149 degree [6] FEFString 150} 151 152PersonName ::= SEQUENCE { 153 ungroupedname [APPLICATION 6001] FEFString OPTIONAL, 154 characternamegroup [APPLICATION 6002] PersonNameGroup OPTIONAL, 155 ideographicnamegroup [APPLICATION 6003] PersonNameGroup OPTIONAL, 156 phoneticnamegroup [APPLICATION 6004] PersonNameGroup OPTIONAL 157 -- at least one of the groups must be present 158 -- this will be the characternamegroup for European names 159} 160-- 161-- Object Identifier Type as defined in nomenclature 162-- (do not confuse with ASN.1 OBJECT IDENTIFIER) 163-- 164OID-Type ::= INT-U16 -- 16 bit integer type 165 166 167SessionArchiveSection ::= [APPLICATION 7001] SEQUENCE { 168 handle Handle, 169 -- unique (within a file) handle 170 s-archive-id [APPLICATION 2507] FEFString, 171 s-archive-name [APPLICATION 2513] FEFString, 172 s-archive-comments [APPLICATION 2530] FEFString OPTIONAL, 173 starttime [APPLICATION 2538] AbsoluteTime, 174 stoptime [APPLICATION 2539] AbsoluteTime, 175 protection [APPLICATION 2519] ArchiveProtection OPTIONAL, 176 placeholder Placeholder OPTIONAL, 177 manufacturerspecific [APPLICATION 7002] ManufacturerSpecificSection OPTIONAL, 178 healthcareprovider [APPLICATION 7003] HealthCareProviderSection OPTIONAL, 179 demographics [APPLICATION 7004] PatientDemographicsSection, 180 sessions [APPLICATION 7015] SEQUENCE SIZE (1..MAX) OF 181 SessionTestSection, /* SIZE (1..*), -- to make asn1c v0.9.22 happy */ 182 notes [APPLICATION 7016] SEQUENCE OF 183 SessionNotesSection DEFAULT {} 184} 185 186ArchiveProtection ::= SEQUENCE { 187 protectiontype [1] PrivateCode, 188 protectionkey [2] ANY DEFINED BY protection-type 189} 190ManufacturerSpecificSection ::= SEQUENCE { 191 manufacturerid [APPLICATION 6005] ManufacturerID, 192 -- 193 encodedentries [APPLICATION 6006] SEQUENCE OF 194 ManufacturerSpecificEncoded 195 DEFAULT {}, 196 binaryentries [APPLICATION 6007] SEQUENCE OF 197 ManufacturerSpecificBinary 198 DEFAULT {} 199} 200 201ManufacturerSpecificEncoded ::= SEQUENCE { 202 code [1] PrivateCode, 203 data [2] ANY DEFINED BY code 204} 205 206ManufacturerSpecificBinary ::= SEQUENCE { 207 code [1] PrivateCode, 208 data [2] OCTET STRING 209} 210 211HealthCareProviderSection ::= SEQUENCE { 212 identification [APPLICATION 6008] HealthCareProviderId, 213 -- 214 name [APPLICATION 6009] FEFString, 215 -- 216 address [APPLICATION 6010] Address OPTIONAL, 217 -- 218 placeholder Placeholder OPTIONAL, 219 healthcareprofessionals [APPLICATION 7008] SEQUENCE OF 220 HealthCareProfessionalSection 221 DEFAULT {} 222} 223 224HealthCareProfessionalSection ::= SEQUENCE { 225 handle Handle, 226 -- unique (within a file) handle 227 COMPONENTS OF PersonName, 228 -- use common person name attributes 229 identification [APPLICATION 6011] FEFString OPTIONAL, 230 -- optional textual unique identification 231 identificationcode [APPLICATION 6012] ExtNomenRef OPTIONAL, 232 -- optional coded unique identification 233 authorization-level [APPLICATION 2481] Authorization OPTIONAL, 234 -- optional organisation specific code 235 function [APPLICATION 6048] FEFString OPTIONAL, 236 -- optional textual function specification 237 functioncode [APPLICATION 6049] ExtNomenRef OPTIONAL, 238 -- optional coded function specification 239 placeholder Placeholder OPTIONAL 240} 241 242Authorization ::= SEQUENCE { 243 authorization-type [1] PrivateCode, 244 authorization-key [2] ANY DEFINED BY authorization-type 245} 246 247PatientDemographicsSection ::= SEQUENCE { 248 handle Handle, 249 -- unique (within file) handle 250 patientid [APPLICATION 2394] FEFString OPTIONAL, 251 COMPONENTS OF PersonName, 252 -- use common person name attributes 253 birthname [APPLICATION 2398] FEFString OPTIONAL, 254 -- maiden name 255 sex [APPLICATION 2401] PatientSex OPTIONAL, 256 race [APPLICATION 2526] PatientRace OPTIONAL, 257 patienttype [APPLICATION 2402] PatientType OPTIONAL, 258 dateofbirth [APPLICATION 2392] AbsoluteTime OPTIONAL, 259 patientgeninfo [APPLICATION 2393] FEFString OPTIONAL, 260 -- textual Patient related Information 261 patientage [APPLICATION 2520] PatMeasure OPTIONAL, 262 -- for neonatal, e.g. in hours or in weeks 263 gestationalage [APPLICATION 2521] PatMeasure OPTIONAL, 264 -- for neonatal 265 patientheight [APPLICATION 2524] PatMeasure OPTIONAL, 266 patientweight [APPLICATION 2527] PatMeasure OPTIONAL, 267 patientbirthlength [APPLICATION 2522] PatMeasure OPTIONAL, 268 patientbirthweight [APPLICATION 2523] PatMeasure OPTIONAL, 269 motherpatientid [APPLICATION 2504] FEFString OPTIONAL, 270 mothername [APPLICATION 2525] PersonName OPTIONAL, 271 -- for neonatal 272 patientheadcircumference[APPLICATION 2490] PatMeasure OPTIONAL, 273 patientbsa [APPLICATION 2390] PatMeasure OPTIONAL, 274 -- Body Surface Area, can be calculated 275 bedid [APPLICATION 2501] FEFString OPTIONAL, 276 diagnosticinfo [APPLICATION 2496] FEFString OPTIONAL, 277 diagnosticcodes [APPLICATION 2492] SEQUENCE OF 278 ExtNomenRef 279 DEFAULT {}, 280 admittingphysician [APPLICATION 2515] HandleRef OPTIONAL, 281 -- for ICU; references HealthCareProfessionalSection 282 attendingphysician [APPLICATION 2516] HandleRef OPTIONAL, 283 -- for ICU; references HealthCareProfessionalSection 284 dateofprocedure [APPLICATION 2518] AbsoluteTime OPTIONAL, 285 -- for OR 286 proceduredescription [APPLICATION 2495] FEFString OPTIONAL, 287 -- for OR 288 procedurecodes [APPLICATION 2493] SEQUENCE OF 289 ExtNomenRef 290 DEFAULT {}, 291 -- for OR - procedure codes are specified in a 292 -- nomenclature scheme not defined in this standard 293 anaesthetist [APPLICATION 2479] HandleRef OPTIONAL, 294 -- for OR; references HealthCareProfessionalSection 295 surgeon [APPLICATION 2532] HandleRef OPTIONAL 296 -- for OR; references HealthCareProfessionalSection 297} 298 299PatMeasure ::= SEQUENCE { 300 value [1] FEFFloat, 301 m-unit [2] UnitsOfMeasurementCode 302 -- code for units of measure 303} 304 305-- Patient Sex according to ISO 5218 306PatientSex ::= INTEGER { 307 sex-unknown (0), 308 male (1), 309 female (2), 310 sex-unspecified (9) 311} (0..65535) 312 313PatientType ::= INTEGER { 314 pt-unspecified (0), 315 adult (1), 316 pediatric (2), 317 neonatal (3) 318} (0..65535) 319 320-- Patient Race according to SCP ECG 321PatientRace ::= INTEGER { 322 race-unspecified (0), 323 race-caucasian (1), 324 race-black (2), 325 race-oriental (3) 326} (0..65535) 327 328SessionTestSection ::= SEQUENCE { 329 handle Handle, 330 -- unique (within a file) handle 331 st-archive-id [APPLICATION 2506] FEFString, 332 st-archive-name [APPLICATION 2512] FEFString, 333 st-archive-comments [APPLICATION 2529] FEFString OPTIONAL, 334 starttime [APPLICATION 2538] AbsoluteTime, 335 stoptime [APPLICATION 2539] AbsoluteTime, 336 protection [APPLICATION 2519] ArchiveProtection OPTIONAL, 337 placeholder Placeholder OPTIONAL, 338 medicaldevicesystem [APPLICATION 7005] MedicalDeviceSystemSection, 339 multimedia [APPLICATION 7006] SEQUENCE OF 340 MultimediaSection DEFAULT {}, 341 phases [APPLICATION 7017] SEQUENCE SIZE (1..MAX) OF 342 SessionPhaseSection /* SIZE (1..*) -- to make asn1c v0.9.22 happy */ 343} 344 345MedicalDeviceSystemSection ::= SEQUENCE { 346 handle Handle, 347 -- unique (within file) handle 348 systemtype [APPLICATION 2438] DeviceCode, 349 -- e.g. ventilator, monitor as 350 -- defined in nomenclature 351 systemmodel [APPLICATION 2344] SystemModel, 352 -- model describes manufacturer and 353 -- model no 354 systemid [APPLICATION 2436] FEFString, 355 -- manufacturer specified system ID 356 -- e.g. serial number 357 compatibilityid [APPLICATION 2336] INT-U32 OPTIONAL, 358 -- for manufacturer use 359 nomenclatureversion [APPLICATION 2376] INT-U32, 360 -- version of nomenclature used by 361 -- the system 362 requirednomenclatureversion [APPLICATION 6013] AbsoluteTime, 363 -- required revision of nomenclature to 364 -- interpret any information from 365 -- this medical device system 366 usednomenclatureversion [APPLICATION 6014] AbsoluteTime, 367 -- revision of nomenclature to 368 -- interpret all information from 369 -- this medical device system 370 systemspecification [APPLICATION 2437] 371 SEQUENCE OF SystemSpecEntry 372 DEFAULT {}, 373 -- defines functional components 374 productionspecification [APPLICATION 2349] 375 SEQUENCE OF ProdSpecEntry 376 DEFAULT {}, 377 -- component revisions, serial 378 -- numbers etc. 379 bedlabel [APPLICATION 2334] FEFString OPTIONAL, 380 -- printable string identifying 381 -- system location 382 softid [APPLICATION 2350] FEFString OPTIONAL, 383 -- settable, e.g. hospital 384 -- inventory number 385 operatingmode [APPLICATION 2374] PrivateCode OPTIONAL, 386 applicationarea [APPLICATION 2317] ApplicationArea OPTIONAL, 387 powerstatus [APPLICATION 2389] PowerStatus OPTIONAL, 388 -- onBatteryoronMains 389 altitude [APPLICATION 2316] INT-I16 OPTIONAL, 390 -- above or below sea level in metres 391 linefrequency [APPLICATION 2357] LineFrequency OPTIONAL, 392 -- frequency of mains 393 placeholder Placeholder OPTIONAL, 394 395 components MedicalDeviceComponents 396} 397 398SystemModel ::= SEQUENCE { 399 manufacturer [1] FEFString, 400 model-number [2] FEFString 401} 402 403SystemSpecEntry ::= SEQUENCE { 404 component-capab-id [1] PrivateCode, 405 component-spec [2] ANY DEFINED BY component-capab-id 406} 407 408ProdSpecEntryType ::= INTEGER { 409 unspecified (0), 410 serial-number (1), 411 part-number (2), 412 hw-revision (3), 413 sw-revision (4), 414 fw-revision (5), 415 protocol-revision (6) 416} (0..65535) 417 418ProdSpecEntry ::= SEQUENCE { 419 spec-type [1] ProdSpecEntryType, 420 component-id [2] PrivateCode, 421 prod-spec [3] FEFString 422} 423 424 425ApplicationArea ::= INTEGER { 426 area-unspec (0), 427 area-operating-room (1), 428 area-intensive-care (2) 429} (0..65535) 430 431PowerStatus ::= BIT STRING { 432 onMains (0), 433 onBattery (1), 434 chargingFull (8), 435 chargingTrickle (9), 436 chargingOff (10) 437} SIZE(16) 438 439LineFrequency ::= INTEGER { 440 line-f-unspec (0), 441 line-f-50hz (1), 442 line-f-60hz (2) 443} (0..65535) 444 445MedicalDeviceComponents ::= CHOICE { 446 medicaldevice [APPLICATION 7009] VirtualMedicalDeviceSection, 447 -- Simple MDS 448 medicaldevices [APPLICATION 7010] SEQUENCE SIZE (2..MAX) OF 449 VirtualMedicalDeviceSection, /* SIZE (2..*), -- to make asn1c v0.9.22 happy */ 450 -- Hydra MDS 451 subsystems [APPLICATION 7011] SEQUENCE SIZE (1..MAX) OF 452 MedicalDeviceSystemSection /* SIZE (1..*), -- to make asn1c v0.9.22 happy */ 453 -- Composite Single Bed MDS 454} 455 456VirtualMedicalDeviceSection ::= SEQUENCE { 457 handle Handle, 458 -- unique (within file) handle 459 devicetype [APPLICATION 2351] DeviceCode, 460 -- static, mandatory type specification 461 labelstring [APPLICATION 2343] FEFString OPTIONAL, 462 -- textual representation of devicetype 463 vmdmodel [APPLICATION 2344] SystemModel OPTIONAL, 464 -- manufacturer and model number 465 productionspecification [APPLICATION 2349] 466 SEQUENCE OF ProdSpecEntry 467 DEFAULT {}, 468 -- serial numbers and revisions, 469 -- only present if VMD represents an 470 -- independent subsystem 471 compatibilityid [APPLICATION 2336] INT-U32 OPTIONAL, 472 -- static for manufacturer use 473 parametergroup [APPLICATION 2346] ParameterGroupCode OPTIONAL, 474 -- e.g. cardiovascular 475 position [APPLICATION 2348] INT-U16 OPTIONAL, 476 -- e.g. slot number, 0xffff marks 477 -- an invalid or unknown position 478 measurementprinciple [APPLICATION 2560] MsmtPrinciple OPTIONAL 479 -- describes the physical principle 480 -- of the measurement 481} 482 483 484MsmtPrinciple ::= BIT STRING { 485 msp-chemical (1), 486 msp-electrical (2), 487 msp-impedance (3), 488 msp-nuclear (4), 489 msp-optical (5), 490 msp-thermal (6), 491 msp-biological (7), 492 msp-mechanical (8), 493 msp-manual (15) 494} SIZE(16) 495 496ChannelDescriptionSection ::= SEQUENCE { 497 handle Handle, 498 -- unique (within a file) handle 499 metrictype [APPLICATION 2351] MetricsCode, 500 -- static, mandatory type specification 501 labelstring [APPLICATION 2343] FEFString OPTIONAL, 502 -- textual representation of metrictype 503 channelid [APPLICATION 2318] MetricsCode OPTIONAL, 504 -- contains dynamic identification (e.g. a specific 505 -- blood pressure label) compared to the 506 -- static identification is in metrictype 507 channelstatus [APPLICATION 2320] MetricStatus DEFAULT {}, 508 -- usually part of an dynamic attribute change section 509 parametergroup [APPLICATION 2346] ParameterGroupCode OPTIONAL, 510 -- e.g. cardiovascular 511 physicalchannelnr [APPLICATION 2319] INT-U16 DEFAULT 65535, 512 -- e.g. ADC channel, 65535 (0xffff) marks 513 -- an invalid or unknown channel 514 measurementprinciple [APPLICATION 2560] MsmtPrinciple OPTIONAL 515 -- describes the physical principle 516 -- of the measurement 517} 518 519 520ChannelStatus ::= BIT STRING { 521 chn-off (0), 522 chn-not-ready (1), 523 chn-standby (2), 524 chn-transduc-discon (8), 525 chn-hw-discon (9) 526} SIZE(16) 527 528MultimediaSection ::= SEQUENCE { 529 starttime [APPLICATION 2538] AbsoluteTime, 530 stoptime [APPLICATION 2539] AbsoluteTime, 531 mimetype [APPLICATION 6017] FEFString, 532 comments [APPLICATION 6018] Comments OPTIONAL, 533 originallocation [APPLICATION 6019] FEFString OPTIONAL, 534 placeholder [APPLICATION 6499] Placeholder OPTIONAL, 535 contentorreference [APPLICATION 6020] ContentOrReference 536} 537 538Comments ::= SEQUENCE { 539 commenttext [1] FEFString, 540 commentator [2] HandleRef 541 -- references HealthCareProfessionalSection 542} 543 544ContentOrReference ::= CHOICE { 545 content [1] OCTET STRING, 546 reference [2] FEFString 547} 548 549SessionPhaseSection ::= SEQUENCE { 550 handle Handle, 551 -- unique (within a file) handle 552 starttime [APPLICATION 2538] AbsoluteTime, 553 stoptime [APPLICATION 2539] AbsoluteTime, 554 placeholder Placeholder OPTIONAL, 555 descriptivedata [APPLICATION 7018] DescriptiveDataSection, 556 measureddata [APPLICATION 7019] SEQUENCE SIZE (1..MAX) OF 557 MeasuredDataSection /* SIZE (1..*) -- to make asn1c v0.9.22 happy */ 558 -- size = 1 except for streaming mode profile 559} 560 561DescriptiveDataSection ::= SEQUENCE { 562 handle Handle, 563 -- unique (within a file) handle 564 placeholder Placeholder OPTIONAL, 565 realtimesadescs [APPLICATION 7020] SEQUENCE OF 566 RealTimeSampleArrayDescriptiveDataSection 567 DEFAULT {}, 568 timesadescs [APPLICATION 7021] SEQUENCE OF 569 TimeSampleArrayDescriptiveDataSection 570 DEFAULT {}, 571 distributionsadescs [APPLICATION 7022] SEQUENCE OF 572 RealTimeSampleArrayDescriptiveDataSection 573 DEFAULT {}, 574 numericdescs [APPLICATION 7023] SEQUENCE OF 575 NumericDescriptiveDataSection 576 DEFAULT {}, 577 enumerationdescs [APPLICATION 7024] SEQUENCE OF 578 EnumerationDescriptiveDataSection 579 DEFAULT {} 580} 581 582MetricDescriptiveDataSection ::= SEQUENCE { 583 handle Handle, 584 -- unique (within a file) handle 585 devicehandle [APPLICATION 6034] HandleRef, 586 -- references the Virtual Medical Device Section or 587 -- Channel Description Section this metric 588 -- originates from 589 metrictype [APPLICATION 2351] MetricsCode, 590 -- static, mandatory type specification 591 labelstring [APPLICATION 2343] FEFString OPTIONAL, 592 -- textual representation of metrictype 593 metriccategory [APPLICATION 2367] MetricCategory DEFAULT mcat-unspec, 594 -- the other COMPONENTS-OF MetricSpecification 595 -- are not applicable for storage 596 metricstatus [APPLICATION 2368] MetricStatus DEFAULT {}, 597 -- usually part of an dynamic attribute change section 598 measurementstatus [APPLICATION 2375] MeasurementStatus DEFAULT {}, 599 -- usually part of an dynamic attribute change section 600 metricid [APPLICATION 2347] MetricsCode OPTIONAL, 601 -- contains dynamic identification (e.g. a specific 602 -- blood pressure label) compared to the 603 -- static identification is in metrictype 604 metricidext [APPLICATION 2502] ExtNomenRef OPTIONAL, 605 -- dynamic identification of the metric in a 606 -- different nomenclature or dictionary. Use of 607 -- this attribute severely limits interoperability 608 -- of applications. 609 unitcode [APPLICATION 2454] UnitsOfMeasurementCode OPTIONAL, 610 -- dimension, e.g. 'mV' 611 unitlabelstring [APPLICATION 2457] FEFString OPTIONAL, 612 -- textual representation of dimension 613 vmosourcelist [APPLICATION 2467] SEQUENCE OF 614 MetricsCode 615 DEFAULT {}, 616 -- indicates sources of this metric in 617 -- the form of references to other metrics 618 metricsourcelist [APPLICATION 2366] SEQUENCE OF 619 HandleRef 620 DEFAULT {}, 621 -- indicates sources of this metric in 622 -- the form of a list of metric IDs 623 msmtsitelist [APPLICATION 2430] SEQUENCE OF 624 BodySiteCode 625 DEFAULT {}, 626 -- Measurement Sites, specified in 627 -- internal nomenclature 628 msmtsitelistext [APPLICATION 2551] SEQUENCE OF 629 ExtNomenRef 630 DEFAULT {}, 631 -- Measurement Sites, specified in 632 -- external nomenclature 633 bodysitelist [APPLICATION 2429] SEQUENCE OF 634 BodySiteCode 635 DEFAULT {}, 636 -- Body Sites, specified in internal nomenclature 637 bodysitelistext [APPLICATION 2550] SEQUENCE OF 638 ExtNomenRef 639 DEFAULT {}, 640 -- Body Sites, specified in external nomenclature 641 metriccalibration [APPLICATION 2362] SEQUENCE OF 642 MetricCalEntry 643 DEFAULT {}, 644 -- list time and state of calibrations 645 colour [APPLICATION 2321] SimpleColour OPTIONAL, 646 -- colour for representation 647 measuremode [APPLICATION 2373] PrivateCode OPTIONAL, 648 -- manufacturer measurement specific info 649 measureperiod [APPLICATION 2443] MetricMeasure OPTIONAL, 650 -- measurement repetition time, not necessarily 651 -- the same as update period 652 averagingperiod [APPLICATION 2535] MetricMeasure OPTIONAL, 653 -- Time period used to average values, e.g. for 654 -- an average flow of last hour metric 655 starttime [APPLICATION 2538] AbsoluteTime OPTIONAL, 656 -- time when measurement activity was started 657 -- (e.g. when infusion was started) 658 stoptime [APPLICATION 2539] AbsoluteTime OPTIONAL, 659 -- Time when measurement activity was stopped 660 metricinfolabelstring [APPLICATION 2365] FEFString OPTIONAL, 661 -- textual attribute, allows e.g. to specify 662 -- electrode displacements or other specific 663 -- information about the measurement 664 substance [APPLICATION 2542] ExtNomenRef OPTIONAL, 665 -- substance that Metric pertains to, expressed 666 -- in nomenclature that is defined outside of 667 -- this standard 668 substancelabelstring [APPLICATION 2508] FEFString OPTIONAL 669 -- textual attribute that identifies the substance 670} 671 672/* already earlier defined 673PatMeasure ::= SEQUENCE { 674 value [1] FEFFloat, 675 m-unit [2] UnitsOfMeasurementCode 676 -- code for units of measure 677} 678*/ 679 680MetricStatus ::= BIT STRING { 681 metric-off (0), 682 metric-not-ready (1), 683 metric-standby (2), 684 metric-transduc-discon (8), 685 metric-hw-discon (9) 686} SIZE(16) 687 688MetricCategory ::= INTEGER { 689 mcat-unspec (0), 690 auto-measurement (1), 691 manual-measurement (2), 692 auto-setting (3), 693 manual-setting (4), 694 auto-calculation (5), 695 manual-calculation (6) 696} (0..65535) 697 698MetricCalEntry ::= SEQUENCE { 699 cal-type [1] MetricCalType, 700 cal-state [2] MetricCalState, 701 cal-time [3] AbsoluteTime 702} 703 704MetricCalType ::= INTEGER { 705 cal-unspec (0), 706 cal-offset (1), 707 cal-gain (2), 708 cal-two-point (3) 709} (0..65535) 710 711MetricCalState ::= INTEGER { 712 not-calibrated (0), 713 cal-required (1), 714 calibrated (2) 715} (0..65535) 716 717MeasurementStatus ::= BIT STRING { 718 invalid (0), 719 questionable (1), 720 not-available (2), 721 calibration-ongoing (3), 722 test-data (4), 723 demo-data (5), 724 validated-data (8), 725 -- relevant e.g. in an archive 726 early-indication (9), 727 -- early estimate of value 728 msmt-ongoing (10) 729 -- indicates that a new msmt is just 730 -- being taken (episodic) 731} SIZE(16) 732 733SampleArrayDescriptiveDataSection ::= SEQUENCE { 734 COMPONENTS OF MetricDescriptiveDataSection, 735 -- include COMPONENTS-OF super class 736 saspecification [APPLICATION 2413] SaSpec, 737 -- static description of sample array and sample types 738 compression [APPLICATION 2322] PrivateCode OPTIONAL, 739 -- defines potential compression algorithm 740 scaleandrangespec [APPLICATION 2416] ScaleRangeSpec, 741 -- defines mapping between samples and actual 742 -- values as well as measurement range, 743 saphysiologicalrange[APPLICATION 2411] AbsoluteRange OPTIONAL, 744 -- for optimum display scaling the physiological 745 -- meaningful range is specified 746 visualgrid [APPLICATION 2331] SEQUENCE OF SaGridEntry DEFAULT {}, 747 -- defines gridline positions on displays 748 -- and recorders 749 -- (Note: tag NOM_ATTR_GRID_VIS_I32 used) 750 sacalibrationdata [APPLICATION 2405] SEQUENCE OF SaCalData DEFAULT {}, 751 -- defines positions of calibration markers on 752 -- display and recorders 753 -- (Note: tag NOM_ATTR_SA_CALIB_I32 used) 754 filterspecification [APPLICATION 2329] SEQUENCE OF SaFilterEntry DEFAULT {}, 755 -- ... 756 sasignalfrequency [APPLICATION 2408] SaSignalFrequency OPTIONAL, 757 -- max. signal frequency 758 sameasureresolution [APPLICATION 2409] FEFFloat OPTIONAL 759 -- ... 760} 761 762SaSpec ::= SEQUENCE { 763 storagesize [1] INT-U8, 764 -- e.g. 8 for 8bit samples, 16 for 16bit samples, 765 significantbits [2] INT-U8 OPTIONAL, 766 -- defines significant bits in one sample 767 -- when not identical to storagesize 768 storagedatatype [3] StorageDataType, 769 flags [4] SaFlags DEFAULT {}, 770 arraysize [5] INT-U16 -- defines the number of samples per 771 -- signal in a subblock of a SAMDB 772} 773 774StorageDataType ::= INTEGER { 775 unsigned (0), 776 signed (1), 777 ieee754float (2) 778} (0..255) 779 780-- allowed combinations of storagedatatype and storagedatasize are: 781-- storagedatatype storagesize 782-- unsigned 8 783-- unsigned 16 784-- unsigned 32 785-- signed 8 786-- signed 16 787-- signed 32 788-- ieee754float 32 789-- ieee754float 64 790 791SaFlags ::= BIT STRING { 792 smoothcurve (0), 793 -- for optimum display, use a smoothing algorithm 794 delayedcurve (1), 795 -- curve is delayed (not real time) 796 saextvalrange (3) 797 -- The non-significant bits in a sample are 798 -- not 0 (or sign extended in the signed case) 799} SIZE(16) 800 801-- The scale and range definition attribute describes a relation between 802-- scaled values and absolute values. 803-- Note: If a wave does not represent absolute values, the absolute value 804-- fields should be equal to the scaled value fields. 805-- lowerabsolutevalue shall be smaller than upperabsolutevalue 806-- lowervaluescaled is the scaled value representing the absolute value 807-- lowerabsolutevalue 808-- uppervaluescaled is the scaled value representing the absolute value 809-- upperabsolutevalue 810ScaleRangeSpec ::= SEQUENCE { 811 lowerabsolutevalue [1] FEFFloat, 812 upperabsolutevalue [2] FEFFloat, 813 lowervaluescaled [3] FEFFloat, 814 uppervaluescaled [4] FEFFloat 815} 816 817SaFilterEntry ::= SEQUENCE { 818 filtertype [1] FilterType, 819 frequency [2] FEFFloat, 820 filterorder [3] INT-I16 -- e.g. -1: 6 dB/oct 821} 822 823FilterType ::= INTEGER { 824 other (0), 825 lowpass (1), 826 highpass (2), 827 notch (3) 828} (0..65535) 829 830-- The visual grid definition attribute defines grid lines at different levels 831-- of grid lines. 832SaGridEntry ::= SEQUENCE { 833 absolute-value [1] FEFFloat, 834 level [3] INT-I16 835} 836 837-- The calibration data definition attribute defines calibration markers 838-- on a display or on a recording strip. 839SaCalData ::= SEQUENCE { 840 lowerabsolutevalue [1] FEFFloat, 841 upperabsolutevalue [2] FEFFloat, 842 increment [5] FEFFloat, 843 -- value for each step of the stair 844 cal-type [6] SaCalDataType 845} 846 847SaCalDataType ::= INTEGER { 848 bar (0), 849 -- display a calibration bar 850 stair (1) 851 -- display a calibration stair 852} (0..65535) 853 854-- Specification of signal frequency 855SaSignalFrequency ::= SEQUENCE { 856 lowedgefreq [1] FEFFloat, -- in Hz 857 highedgefreq [2] FEFFloat -- in Hz 858} 859 860RealTimeSampleArrayDescriptiveDataSection ::= SEQUENCE { 861 COMPONENTS OF SampleArrayDescriptiveDataSection, 862 -- include COMPONENTS OF super class 863 sampleperiod [APPLICATION 2445] Fraction, 864 -- in seconds, expressed as fraction 865 sweepspeed [APPLICATION 2431] MetricMeasure OPTIONAL 866 -- e.g. mm/s 867} 868 869 870TimeSampleArrayDescriptiveDataSection ::= SEQUENCE { 871 COMPONENTS OF SampleArrayDescriptiveDataSection, 872 -- include COMPONENTS-OF super class 873 sampleperiod [APPLICATION 2445] Fraction, 874 -- in seconds, expressed as fraction 875 sweepspeed [APPLICATION 2431] MetricMeasure OPTIONAL 876 -- e.g. mm/s 877} 878 879DistributionSampleArrayDescriptiveDataSection ::= SEQUENCE { 880 COMPONENTS OF SampleArrayDescriptiveDataSection, 881 -- include COMPONENTS-OF super class 882 distributionrangespec [APPLICATION 2403] DsaRangeSpec, 883 -- maps array index to absolute value 884 xunitcode [APPLICATION 2455] UnitsOfMeasurementCode OPTIONAL, 885 -- applies to x-axis 886 xunitlabelstring [APPLICATION 2458] FEFString OPTIONAL 887 -- applies to x-axis 888} 889 890DsaRangeSpec ::= SEQUENCE { 891 first-element-value [1] FEFFloat, 892 last-element-value [2] FEFFloat 893} 894 895NumericDescriptiveDataSection ::= SEQUENCE { 896 COMPONENTS OF MetricDescriptiveDataSection, 897 -- include COMPONENTS-OF super class 898 numeasurerange [APPLICATION 2382] AbsoluteRange OPTIONAL, 899 -- potential measurement range 900 nuphysiologicalrange [APPLICATION 2383] AbsoluteRange OPTIONAL, 901 -- physiological reasonable range (note that 902 -- this is not an alarming range) 903 numeasureresolution [APPLICATION 2381] FEFFloat OPTIONAL, 904 -- resolution of measurement, minimum 905 -- difference between two observed values 906 displayresolution [APPLICATION 2327] DispResolution OPTIONAL, 907 -- if different resolution is needed when 908 -- value is displayed 909 accuracy [APPLICATION 2378] FEFFloat OPTIONAL 910 -- max. deviation of actual value from reported 911 -- observed value (if it can be specified) 912} 913 914EnumerationDescriptiveDataSection ::= SEQUENCE { 915 COMPONENTS OF MetricDescriptiveDataSection, 916 -- include COMPONENTS OF super class 917 enummeasurerange [APPLICATION 2561] SEQUENCE OF MetricsCode 918 DEFAULT {}, 919 -- list of possible observed value object OIDs, 920 -- optional if the OID type is present in the 921 -- observed value, out of scope otherwise 922 enummeasurerangebits [APPLICATION 2568] BITS-32 OPTIONAL 923 -- list of possible observed value bits in the 924 -- bit string data type, optional if the BITS-32 925 -- type is used in the observed value, out of 926 -- scope otherwise 927} 928 929MeasuredDataSection ::= SEQUENCE { 930 realtimesas [APPLICATION 7025] SEQUENCE OF 931 RealTimeSampleArrayMeasuredDataSection 932 DEFAULT {}, 933 timesas [APPLICATION 7026] SEQUENCE OF 934 TimeSampleArrayMeasuredDataSection 935 DEFAULT {}, 936 distributionsas [APPLICATION 7027] SEQUENCE OF 937 RealTimeSampleArrayMeasuredDataSection 938 DEFAULT {}, 939 numerics [APPLICATION 7028] SEQUENCE OF 940 NumericMeasuredDataSection 941 DEFAULT {}, 942 enumerations [APPLICATION 7029] SEQUENCE OF 943 EnumerationMeasuredDataSection 944 DEFAULT {}, 945 alerts [APPLICATION 7007] SEQUENCE OF 946 AlertSection 947 DEFAULT {}, 948 attributechanges [APPLICATION 7030] SEQUENCE OF 949 DynamicAttributeChangeSection 950 DEFAULT {} 951} 952 953 954SampleArrayMeasuredDataSection ::= SEQUENCE { 955 numberofsubblocks [APPLICATION 6035] INT-U32, 956 subblocklength [APPLICATION 6036] Fraction, 957 -- in seconds 958 subblocksize [APPLICATION 6037] INT-U32, 959 -- in octets 960 metriclist [APPLICATION 6038] SEQUENCE SIZE (1..MAX) OF 961 HandleRef /* SIZE (1..*) -- to make asn1c v0.9.22 happy */ 962 -- references to SampleArrayDescriptiveDataSection 963} 964 965SampleArrayMeasuredDataBlock ::= [APPLICATION 6039] OCTET STRING 966 967RealTimeSampleArrayMeasuredDataSection ::= SEQUENCE { 968 COMPONENTS OF SampleArrayMeasuredDataSection, 969 data SampleArrayMeasuredDataBlock 970 -- measured data as SampleArrayMeasuredDataBlock 971} 972 973TimeSampleArrayMeasuredDataSection ::= SEQUENCE { 974 COMPONENTS OF SampleArrayMeasuredDataSection, 975 -- include COMPONENTS OF super class 976 tsamarkerlist [APPLICATION 2452] SEQUENCE OF MarkerEntryRelTim 977 DEFAULT {}, 978 -- marks positions in wave snippets 979 data SampleArrayMeasuredDataBlock 980 -- measured data as SampleArrayMeasuredDataBlock 981} 982 983MarkerEntryRelTim ::= SEQUENCE { 984 markerid [1] MetricsCode, 985 marktime [2] RelativeTime 986} 987 988DistributionSampleArrayMeasuredDataSection ::= SEQUENCE { 989 COMPONENTS OF SampleArrayMeasuredDataSection, 990 -- include COMPONENTS OF super class 991 data SampleArrayMeasuredDataBlock 992 -- measured data as SampleArrayMeasuredDataBlock 993} 994 995NumericMeasuredDataSection ::= SEQUENCE { 996 metricref [APPLICATION 6050] HandleRef, -- reference to 997 -- NumericDescriptiveDataSection 998 nuobservedvalue ChoiceOfNuObsValue, 999 -- simple or compound 1000 timestamp ObservationTime 1001} 1002 1003ChoiceOfNuObsValue ::= CHOICE { 1004 nuobservedvalue [APPLICATION 2384] NuObsValue, 1005 -- e.g. measurement value, should also contain 1006 -- validity information to be useful! 1007 compoundnuobservedvalue [APPLICATION 2379] SEQUENCE SIZE (2..MAX) OF 1008 NuObsValue /* SIZE (2..*) -- to make asn1 v0.9.22 happy */ 1009 -- used when multiple values are represented 1010 -- in a single NU object (Structure is compound) 1011} 1012 1013 1014NuObsValue ::= SEQUENCE { 1015 metricid [1] MetricsCode OPTIONAL, 1016 state [2] MeasurementStatus DEFAULT {}, 1017 unitcode [3] UnitsOfMeasurementCode OPTIONAL, 1018 value [4] FEFFloat 1019} 1020-- value representation on a display (may be lower resolution) 1021DispResolution ::= SEQUENCE { 1022 prepoint [1] INT-U8, -- digits before decimal point 1023 postpoint [2] INT-U8 -- digits after decimal point 1024} 1025 1026-- ASN.1 source defining EnumerationMeasuredDataSection 1027 1028EnumerationMeasuredDataSection ::= SEQUENCE { 1029 metricref [APPLICATION 6050] HandleRef, -- reference to 1030 -- EnumerationDescriptiveDataSection 1031 enumobservedvalue ChoiceOfEnumObsValue, 1032 -- simple or compound 1033 enumadditionaldata [APPLICATION 2498] ANY DEFINED BY enumobservedvalue 1034 OPTIONAL, 1035 -- additional non normative event specific 1036 -- information can be provided (e.g. pacer 1037 -- parameters of pace pulse detect). Requires 1038 -- use of enum-obj-id in observed value! 1039 enumtimestamp ChoiceOfEnumTimeStamp 1040 -- one or more timestamps 1041} 1042 1043 1044EnumObsValue ::= SEQUENCE { 1045 metric-id [1] MetricsCode OPTIONAL, 1046 state [2] MeasurementStatus DEFAULT {}, 1047 value [3] EnumVal 1048} 1049 1050ChoiceOfEnumObsValue ::= CHOICE { 1051 enumobservedvalue [APPLICATION 2462] EnumObsValue, 1052 compoundenumobservedvalue [APPLICATION 2463] SEQUENCE SIZE (1..MAX) OF 1053 EnumObsValue /* SIZE (1..*) -- to make asn1c v0.9.22 happy */ 1054} 1055 1056EnumVal ::= CHOICE { 1057 enum-obj-id [1] MetricsCode, -- id of the metric 1058 enum-text-string [2] FEFString, -- free text 1059 enum-external-code [8] ExtNomenRef, -- code defined in other coding system 1060 enum-bit-str [16] BITS-32, -- bit string 1061 enum-record [33] EnumRecordMetric, -- record type defined Metric ID 1062 enum-record-oo [34] EnumRecordOO -- record type defined OO ID 1063} 1064 1065EnumRecordMetric ::= SEQUENCE { 1066 record-type-code MetricsCode, 1067 record-data ANY DEFINED BY record-type-code 1068} 1069 1070EnumRecordOO ::= SEQUENCE { 1071 record-type-code OID-Type, -- from OO Partition 1072 record-data ANY DEFINED BY record-type-code 1073} 1074 1075ChoiceOfEnumTimeStamp ::= CHOICE { 1076 timestamp ObservationTime, 1077 absolutetimestamparray [APPLICATION 6042] SEQUENCE OF AbsoluteTime, 1078 relativetimestamparray [APPLICATION 6043] SEQUENCE OF RelativeTime, 1079 hirestimestamparray [APPLICATION 6044] SEQUENCE OF HighResRelativeTime 1080} 1081 1082AlertSection ::= SEQUENCE { 1083 handle Handle, 1084 -- unique (within a file) handle 1085 alerttype [APPLICATION 2351] AlertCode, 1086 -- static, mandatory type specification 1087 labelstring [APPLICATION 2343] FEFString OPTIONAL, 1088 -- textual representation of alerttype 1089 timestamp ObservationTime, 1090 -- time of change 1091 alertcondition [APPLICATION 2476] AlertCondition, 1092 limitspec [APPLICATION 2477] LimitSpecEntry OPTIONAL, 1093 -- specification of the supervised limit 1094 vmoreference [APPLICATION 6045] HandleRef OPTIONAL 1095 -- reference to MDSS, VMD or MDDS 1096} 1097 1098AlertCondition ::= SEQUENCE { 1099 objreference [1] HandleRef, 1100 controls [2] AlertControls, 1101 alertflags [3] AlertFlags, -- supporting flags 1102 alertsource [4] MetricsCode, 1103 alertcode [5] AlertCode, 1104 alerttype [6] AlertType, -- defines type and severity of condition 1105 alertinfoid [7] PrivateCode OPTIONAL, -- specific info can be appended 1106 alertinfo [8] ANY DEFINED BY alertinfoid OPTIONAL 1107} 1108 1109-- Alert Controls define flags to communicate status information 1110-- relevant for alarm processor 1111AlertControls ::= BIT STRING { 1112 acobjoff (0), -- the object supervised by the alert is off 1113 acchanoff (1), -- channel is off 1114 acallobjaloff (3), -- all alerts supervising the reference objects are off 1115 acalertoff (4) -- this alert supervisor process is off 1116} SIZE(16) 1117 1118-- Alert Flags give additional support information how to process the condition, 1119AlertFlags ::= BIT STRING { 1120 localaudible (1), -- indicates that the condition is audible 1121 -- at the local system 1122 remoteaudible (2), -- condition can be audible at remote (not suppressed) 1123 visuallatching (3), -- visible latching of the condition is allowed 1124 audiblelatching (4), -- audio latching of the condition is allowed 1125 derived (6), 1126 recordinhibit (8) -- do not start alarm recording 1127} SIZE(16) 1128 1129-- Alert Type allows to distinguish severity of technical and 1130-- physiological alarms 1131AlertType ::= INTEGER { 1132 noalert (0), 1133 lowprital (1), -- low priority technical alarm 1134 medprital (2), -- medium priority technical alarm 1135 hiprital (4), -- high priority technical alarm 1136 lowpripal (256), -- awareness condition 1137 medpripal (512), -- prompt response required (abnormal condition) 1138 hipripal (1024) -- immediate response required (emergency condition) 1139} (0..65535) 1140 1141-- Specification of the supervised limit range 1142LimitSpecEntry ::= SEQUENCE { 1143 sectionhandle [1] HandleRef, 1144 alsourceid [2] MetricsCode, -- typically the metric ID of the measurement 1145 unitcode [3] UnitCode, -- from DIM partition 1146 limalstat [4] CurLimAlStat, 1147 limalval [5] AbsoluteRange 1148} 1149 1150-- Current Limit Alert State - 1151-- NOTE: The bits refer to the Limit Alarm only, not to the global alert 1152-- state of the metric! 1153CurLimAlStat ::= BIT STRING { 1154 limalertoff (0), -- if this bit is set, all alerts (both 1155 -- high and low) are off 1156 limlowoff (1), -- low limit violation detection is off 1157 limhighoff (2) -- high limit violation detection is off 1158} SIZE(16) 1159 1160DynamicAttributeChangeSection ::= SEQUENCE { 1161 timestamp ObservationTime, 1162 -- time of change 1163 handle [APPLICATION 6041] HandleRef, 1164 -- reference to section whose attribute changed 1165 attribute [APPLICATION 6046] INT-U16, 1166 -- attribute code 1167 value [APPLICATION 6047] ANY DEFINED BY attribute OPTIONAL 1168 -- new value 1169 -- or removal of optional attribute if absent 1170} 1171 1172 1173-- ASN.1 source defining SessionNotesSection 1174 1175SessionNotesSection ::= SEQUENCE { 1176 handle Handle, 1177 -- unique (within a file) handle 1178 sn-id [APPLICATION 2505] FEFString, 1179 sn-name [APPLICATION 2511] FEFString, 1180 sn-comments [APPLICATION 2528] FEFString OPTIONAL, 1181 starttime [APPLICATION 2538] AbsoluteTime, 1182 stoptime [APPLICATION 2539] AbsoluteTime, 1183 findings [APPLICATION 2500] FEFString OPTIONAL, 1184 diagnosticscodes [APPLICATION 2492] SEQUENCE OF 1185 ExtNomenRef 1186 DEFAULT {}, 1187 diagnosisdescription [APPLICATION 2494] FEFString OPTIONAL, 1188 procedurecodes [APPLICATION 2493] SEQUENCE OF 1189 ExtNomenRef 1190 DEFAULT {}, 1191 proceduredescription [APPLICATION 2495] FEFString OPTIONAL, 1192 protection [APPLICATION 2519] ArchiveProtection OPTIONAL, 1193 placeholder Placeholder OPTIONAL 1194} 1195 1196END 1197 1198 1199 1200