-- Module E-health-identification (X.1080.1:10/2011)
-- See also ITU-T X.1080.1 (10/2011)
-- See also the index of all ASN.1 assignments needed in this document

E-health-identification {joint-iso-itu-t(2) telebiometrics(42)
  e-health-protocol(3) modules(0) identification(0) version1(1)}
  "/Telebiometrics/E_Health_Protocol/Modules/Identification/Version1"
  DEFINITIONS AUTOMATIC TAGS ::=
BEGIN

IMPORTS
  id-th
    FROM Telebiometrics {joint-iso-itu-t(2) telebiometrics(42) tmm(1)
      modules(0)      modules(0) main(0) version(0)};

IDENTIFICATION ::= 0db>CLASS {&category        OID UNIQUE,
                          &Identification  
}WITH SYNTAX {CATEGORY &category
              IDENTIFIED WITH &Identification
}

OID ::= OBJECT IDENTIFIER

Identification ::= SEQUENCE {
  category        IDENTIFICATION.&category({Categories}),
  identification  IDENTIFICATION.&Identification({Categories}{@category})
}

Categories IDENTIFICATION ::=
  {patientIdentification | medicalStaffIdentification | observerIdentification
   | pharmaceuticalStaffIdentification | laboratoryIdentification |
   manufacturerIdentification | deviceIdentification | softwareIdentification |
   insuranceIdentification | medicalRecordIdentification, ...}

patientIdentification IDENTIFICATION ::= {
  CATEGORY         {id-th  1}
  IDENTIFIED WITH  PatientIdentification
}

PatientIdentification ::= SEQUENCE {
  scheme      PATIENT-SCHEME.&id({PatientSchemes}),
  schemeName  PATIENT-SCHEME.&name({PatientSchemes}{@.scheme}) OPTIONAL,
  patientId   PATIENT-SCHEME.&Identification({PatientSchemes}{@.scheme})
}

PATIENT-SCHEME ::= CLASS {
  &id              OID UNIQUE,
  &name            SchemeName OPTIONAL,
  &Identification  
}
WITH SYNTAX {
  SCHEME
  [NAME &name]
  IDENTIFIED BY &id
  USING &Identification
}

SchemeName ::= CHOICE {string  ISO646String,
                       iri     OID-IRI,
                       ...
}

PatientSchemes PATIENT-SCHEME ::=
  {...}

medicalStaffIdentification IDENTIFICATION ::= {
  CATEGORY         {id-th  2}
  IDENTIFIED WITH  MedicalStaffIdentification
}

MedicalStaffIdentification ::= SEQUENCE {
  scheme          MEDICAL-STAFF-SCHEME.&id({MedicalStaffSchemes}),
  schemeName
    MEDICAL-STAFF-SCHEME.&name({MedicalStaffSchemes}{@.scheme}) OPTIONAL,
  medicalStaffId
    MEDICAL-STAFF-SCHEME.&Identification({MedicalStaffSchemes}{@.scheme}),
  qualifications
    MEDICAL-STAFF-SCHEME.&Qualifications({MedicalStaffSchemes}{@.scheme})
      OPTIONAL
}

MEDICAL-STAFF-SCHEME ::= CLASS {
  &id              OID UNIQUE,
  &name            SchemeName OPTIONAL,
  &Identification  ,
  &Qualifications  ,
  &Observer        
}
WITH SYNTAX {
  SCHEME
  [NAME &name]
  IDENTIFIED BY &id
  USING &Identification
  WITH &Qualifications
  AND &Observer
}

MedicalStaffSchemes MEDICAL-STAFF-SCHEME ::=
  {...}

observerIdentification IDENTIFICATION ::= {
  CATEGORY         {id-th  3}
  IDENTIFIED WITH  ObserverIdentification
}

ObserverIdentification ::= SEQUENCE {
  scheme      MEDICAL-STAFF-SCHEME.&id({MedicalStaffSchemes}),
  schemeName
    MEDICAL-STAFF-SCHEME.&name({MedicalStaffSchemes}{@.scheme}) OPTIONAL,
  observerId
    MEDICAL-STAFF-SCHEME.&Observer({MedicalStaffSchemes}{@.scheme})
}

pharmaceuticalStaffIdentification IDENTIFICATION ::= {
  CATEGORY         {id-th  4}
  IDENTIFIED WITH  PharmaceuticalStaffIdentification
}

PharmaceuticalStaffIdentification ::= SEQUENCE {
  scheme          MEDICAL-STAFF-SCHEME.&id({MedicalStaffSchemes}),
  schemeName
    MEDICAL-STAFF-SCHEME.&name({MedicalStaffSchemes}{@.scheme}) OPTIONAL,
  medicalStaffId
    MEDICAL-STAFF-SCHEME.&Identification({MedicalStaffSchemes}{@.scheme}),
  qualifications
    MEDICAL-STAFF-SCHEME.&Qualifications({MedicalStaffSchemes}{@.scheme})
      OPTIONAL
}

laboratoryIdentification IDENTIFICATION ::= {
  CATEGORY         {id-th  5}
  IDENTIFIED WITH  LaboratoryIdentification
}

LaboratoryIdentification ::= SEQUENCE {
  scheme          LABORATORY-SCHEME.&id({LaboratorySchemes}),
  schemeName
    LABORATORY-SCHEME.&name({LaboratorySchemes}{@.scheme}) OPTIONAL,
  qualifications
    LABORATORY-SCHEME.&Qualifications({LaboratorySchemes}{@.scheme})
      OPTIONAL
}

LABORATORY-SCHEME ::= CLASS {
  &id              OID UNIQUE,
  &name            SchemeName OPTIONAL,
  &Qualifications  
}
WITH SYNTAX {
  SCHEME
  [NAME &name]
  IDENTIFIED BY &id
  WITH &Qualifications
}

LaboratorySchemes LABORATORY-SCHEME ::=
  {...}

manufacturerIdentification IDENTIFICATION ::= {
  CATEGORY         {id-th  6}
  IDENTIFIED WITH  ManufacturerIdentification
}

ManufacturerIdentification ::= SEQUENCE {
  scheme          MANUFACTURER-SCHEME.&id({ManufacturerSchemes}),
  schemeName
    MANUFACTURER-SCHEME.&name({ManufacturerSchemes}{@.scheme}) OPTIONAL,
  manufacturerId
    MANUFACTURER-SCHEME.&Manufacturer({ManufacturerSchemes}{@.scheme}),
  drugId
    MANUFACTURER-SCHEME.&Drug({ManufacturerSchemes}{@.scheme})
}

MANUFACTURER-SCHEME ::= CLASS {
  &id            OID UNIQUE,
  &name          SchemeName OPTIONAL,
  &Manufacturer  ,
  &Drug          
}
WITH SYNTAX {
  SCHEME
  [NAME &name]
  IDENTIFIED BY &id
  FOR &Manufacturer
  PRODUCING &Drug
}

ManufacturerSchemes MANUFACTURER-SCHEME ::=
  {...}

DEVICE-SCHEME ::= CLASS {
  &id                OID UNIQUE,
  &name              SchemeName OPTIONAL,
  &Manufacturer      ,
  &Device            ,
  &supportedFormats  Supported-formats
}
WITH SYNTAX {
  SCHEME
  [NAME &name]
  IDENTIFIED BY &id
  FOR &Manufacturer
  PRODUCING &Device
  SUPPORTING &supportedFormats
}

Supported-formats ::= CHOICE {oids  SEQUENCE OF OID,
                              ...
}

deviceIdentification IDENTIFICATION ::= {
  CATEGORY         {id-th  7}
  IDENTIFIED WITH  DeviceIdentification
}

DeviceIdentification ::= SEQUENCE {
  scheme          DEVICE-SCHEME.&id({DeviceSchemes}),
  schemeName      DEVICE-SCHEME.&name({DeviceSchemes}{@.scheme}) OPTIONAL,
  manufacturerId
    DEVICE-SCHEME.&Manufacturer({DeviceSchemes}{@.scheme}) OPTIONAL,
  device          DEVICE-SCHEME.&Device({DeviceSchemes}{@.scheme}),
  formats
    DEVICE-SCHEME.&supportedFormats({DeviceSchemes}{@.scheme})
}

DeviceSchemes DEVICE-SCHEME ::=
  {...}

softwareIdentification IDENTIFICATION ::= {
  CATEGORY         {id-th  8}
  IDENTIFIED WITH  SoftwareIdentification
}

SOFTWARE-SCHEME ::= CLASS {
  &id            OID UNIQUE,
  &name          SchemeName OPTIONAL,
  &Manufacturer  ,
  &Software      
}
WITH SYNTAX {
  SCHEME
  [NAME &name]
  IDENTIFIED BY &id
  FOR &Manufacturer
  PRODUCING &Software
}

SoftwareIdentification ::= SEQUENCE {
  scheme          SOFTWARE-SCHEME.&id({SoftwareSchemes}),
  schemeName
    SOFTWARE-SCHEME.&name({SoftwareSchemes}{@.scheme}) OPTIONAL,
  manufacturerId
    SOFTWARE-SCHEME.&Manufacturer({SoftwareSchemes}{@.scheme}) OPTIONAL,
  software        SOFTWARE-SCHEME.&Software({SoftwareSchemes}{@.scheme})
}

SoftwareSchemes SOFTWARE-SCHEME ::=
  {...}

insuranceIdentification IDENTIFICATION ::= {
  CATEGORY         {id-th  9}
  IDENTIFIED WITH  InsuranceIdentification
}

InsuranceIdentification ::= SEQUENCE {
  scheme          INSURANCE-SCHEME.&id({InsuranceSchemes}),
  schemeName
    INSURANCE-SCHEME.&name({InsuranceSchemes}{@.scheme}) OPTIONAL,
  manufacturerId  INSURANCE-SCHEME.&Company({InsuranceSchemes}{@.scheme}),
  insurance
    INSURANCE-SCHEME.&InsuranceType({InsuranceSchemes}{@.scheme}),
  insuranceCert
    INSURANCE-SCHEME.&Certification({InsuranceSchemes}{@.scheme})
}

INSURANCE-SCHEME ::= CLASS {
  &id             OID UNIQUE,
  &name           SchemeName OPTIONAL,
  &Company        ,
  &InsuranceType  ,
  &Certification  
}
WITH SYNTAX {
  SCHEME
  [NAME &name]
  IDENTIFIED BY &id
  FOR &Company
  USING &InsuranceType
  CERTIFIED WITH &Certification
}

InsuranceSchemes INSURANCE-SCHEME ::=
  {...}

medicalRecordIdentification IDENTIFICATION ::= {
  CATEGORY         {id-th  10}
  IDENTIFIED WITH  MedicalRecordIdentification
}

MedicalRecordIdentification ::= SEQUENCE {
  scheme       MEDICAL-RECORD-SCHEME.&id({MedicalRecordSchemes}),
  schemeName
    MEDICAL-RECORD-SCHEME.&name({MedicalRecordSchemes}{@.scheme}) OPTIONAL,
  definingOrg
    MEDICAL-RECORD-SCHEME.&Organisation({MedicalRecordSchemes}{@.scheme}),
  recordType
    MEDICAL-RECORD-SCHEME.&RecordType({MedicalRecordSchemes}{@.scheme}),
  record
    MEDICAL-RECORD-SCHEME.&Record({MedicalRecordSchemes}{@.scheme})
}

MEDICAL-RECORD-SCHEME ::= CLASS {
  &id            OID UNIQUE,
  &name          SchemeName OPTIONAL,
  &Organisation  ,
  &RecordType    ,
  &Record        
}
WITH SYNTAX {
  SCHEME
  [NAME &name]
  IDENTIFIED BY &id
  FOR &Organisation
  USING &RecordType
  WITH FORMAT &Record
}

MedicalRecordSchemes MEDICAL-RECORD-SCHEME ::=
  {...}

END
-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D