DMSContent XML-Format

Das DMSContent-Format ist das primäre Ausgabeformat des enaio®-Servers für Suchergebnisse und Objektabrufe. Es wird von den Recherche- und Abruf-Jobs der DMS-Engine zurückgeliefert.

Die zugehörige Schema-Datei ist DMSContent.xsd.

Das Format kann entweder als LOL (lineare Trefferliste), als HOL (hierarchische Objektliste) oder als MIXED (Kombination aus beiden) vorliegen — gesteuert durch das Attribut format am Wurzelelement.

1. Verwendung

Das DMSContent-Format wird von folgenden Jobs zurückgeliefert:

Job Format Beschreibung

dms.GetResultList

LOL / HOL / MIXED

Primärer Recherche-Job — gibt Trefferlisten aus Suchanfragen zurück

dms.GetObjectDetails

HOL

Liefert vollständige Indexdaten zu einem oder mehreren Objekten

dms.ExecuteStoredQuery

LOL / HOL

Führt eine gespeicherte Suchanfrage aus

dms.GetUserTrayObjects

HOL

Liefert typloser Objekte aus der Benutzerablage (enthält <TypelessObjects>)

dms.GetWorkflowObjects

HOL

Liefert Objekte aus der Workflowablage

dms.GetDeletedObjects

HOL

Liefert gelöschte Objekte

dms.GetForeignObjects

HOL

Liefert verknüpfte Objekte aus anderen Archiven

dms.GetShadowData

HOL

Liefert Indexdaten im HOL-Format

2. Ausgabeformate (LOL vs. HOL)

Das Attribut format am <DMSContent>-Element bestimmt die interne Struktur der Ergebnisse:

Wert Format Struktur innerhalb von <ObjectType>

LOL

Liste von Listen

<Rowset> mit <Columns> (Felddefinitionen) + <Rows> (Trefferwerte) — tabellarisch

HOL

Hierarchische Objektliste

<ObjectList> mit <Object>-Elementen, die <Fields>, <BaseParams> u. a. enthalten

MIXED

Kombination

Enthält sowohl <Rowset>- als auch <ObjectList>-Strukturen

2.1. LOL — Lineare Trefferliste

Die LOL-Struktur ist das kompakte tabellarische Format: Spalten werden einmalig definiert, dann folgen die Trefferzeilen. Geeignet für große Ergebnismengen und einfache Felder.

<DMSContent format="LOL" version="5.00" timestamp="2024-03-15T10:30:00"
            user="admin" station="PC01">
  <Archive id="1" internal_name="patient">
    <ObjectType id="5" internal_name="medical_letter" type="DOCUMENT" modul="WINDOWS">
      <Rowset>
        <Columns>
          <Column internal_name="date" dbname="D001" type="DATE" ostype="DATE">Datum</Column>
          <Column internal_name="subject" dbname="D002" type="TEXT" ostype="TEXT">Betreff</Column>
          <Column internal_name="physician" dbname="D003" type="TEXT" ostype="TEXT">Arzt</Column>
        </Columns>
        <Rows>
          <Row id="9823">
            <Value>2024-03-15</Value>
            <Value>Entlassungsbrief</Value>
            <Value>Dr. Müller</Value>
          </Row>
          <Row id="9824">
            <Value>2024-03-10</Value>
            <Value>Aufnahmedokumentation</Value>
            <Value>Dr. Schmidt</Value>
          </Row>
        </Rows>
      </Rowset>
      <Statistics pagesize="20" startpos="0" total_hits="42"/>
    </ObjectType>
  </Archive>
  <Messages/>
</DMSContent>

2.2. HOL — Hierarchische Objektliste

Die HOL-Struktur liefert vollständige Objektdaten pro Instanz. Jedes <Object> enthält Felder, Basisparameter, Rechteinformationen sowie optional Kinderobjekte und Varianten.

<DMSContent format="HOL" version="5.00" timestamp="2024-03-15T10:30:00"
            user="admin" station="PC01">
  <Archive id="1" internal_name="patient">
    <ObjectType id="5" internal_name="medical_letter" type="DOCUMENT" modul="WINDOWS">
      <ObjectList>
        <Object id="9823" export_depth="0">
          <Fields>
            <Field internal_name="date" dbname="D001" type="DATE">2024-03-15</Field>
            <Field internal_name="subject" dbname="D002" type="TEXT">Entlassungsbrief</Field>
          </Fields>
          <BaseParams>
            <Creator>admin</Creator>
            <Created value="1710500000">2024-03-15</Created>
            <CreationDate>2024-03-15</CreationDate>
            <Modifier>admin</Modifier>
            <Modified value="1710500000">2024-03-15</Modified>
            <Owner osguid="550e8400-e29b-41d4-a716-446655440000">admin</Owner>
            <Links>0</Links>
            <SystemID>0</SystemID>
            <ForeignID></ForeignID>
            <ArchiveState value="1">ARCHIVED</ArchiveState>
            <Archivist>admin</Archivist>
            <ArchiveDate>2024-03-15</ArchiveDate>
            <Locked value="0">UNLOCKED</Locked>
            <Version>1</Version>
          </BaseParams>
          <FileProperties extension="docx" mimetype="application/vnd.openxmlformats-officedocument.wordprocessingml.document" count="1" size="24576"/>
        </Object>
      </ObjectList>
      <Statistics pagesize="20" startpos="0" total_hits="1"/>
    </ObjectType>
  </Archive>
  <Messages/>
</DMSContent>

3. Elemente und Attribute

3.1. <DMSContent> (Wurzelelement)

Attribut Typ Standard Beschreibung

format

dataformat

Pflicht

Ausgabeformat: LOL, HOL oder MIXED

system_id

xs:long

-1

Interne System-ID des Servers

lang_id

xs:long

7

Sprachkennung (7 = Deutsch)

user

xs:string

Angemeldeter Benutzer

station

xs:string

Rechner-/Stationsname des Benutzers

timestamp

xs:dateTime

Zeitpunkt der Antwort (ISO 8601)

version

xs:string

5.00

enaio®-Serverversion

instance

xs:string

Serverinstanz

output_language

xs:string

0

Ausgabesprache (0 = Serverstandard)

Kindelemente:

  • <Archive> (0..*) — Archivcontainer mit Treffern

  • <TypelessObjects> (0..1) — Typloser Objekte (nur bei bestimmten Jobs)

  • <Messages> (1) — Fehlermeldungen (leer wenn erfolgreich)

3.2. <Archive>

Gruppiert Treffer nach Archiv. Wird für jedes Archiv, das Treffer enthält, einmal ausgegeben.

Attribut Typ Standard Beschreibung

id

xs:long

-1

Numerische Archiv-ID

name

xs:string

Anzeigename des Archivs

internal_name

xs:string

Interner Name des Archivs

osguid

xs:string

GUID des Archivs

3.3. <ObjectType>

Beschreibt den Objekttyp der enthaltenen Treffer.

Attribut Typ Standard Beschreibung

type

objecttypes

Art des Objekts: FOLDER, REGISTER oder DOCUMENT

id

xs:long

-1

Numerische ID des Objekttyps

maintype

xs:short

-1

Haupttyp des Objekttyps. Wertebereich und Bedeutung: Objekttyp-ID.

cotype

xs:short

-1

Untertyp des Objekttyps (Lowword der Objekttyp-ID).

table

xs:string

Datenbanktabelle des Objekttyps

name

xs:string

Anzeigename des Objekttyps

internal_name

xs:string

Interner Name des Objekttyps

osguid

xs:string

GUID des Objekttyps

modul

modultype

UNKNOWN

Dokumentmodul (nur bei Dokumenten relevant)

encrypted

xs:short

0

1 = Objekte dieses Typs sind verschlüsselt

alias

xs:string

Alias-Name des Objekttyps

fulltext

xs:short

0

1 = Volltextindex vorhanden

Kindelemente:

  • Entweder <Rowset> (LOL) oder <ObjectList> (HOL)

  • Optional <SQL> — das ausgeführte SQL-Statement (nur wenn entsprechende Option gesetzt)

  • <Statistics> — Trefferstatistik (immer vorhanden)

3.4. <Rowset> (LOL)

Enthält das tabellarische Suchergebnis. Spalten werden einmalig in <Columns> definiert, die Datenwerte folgen in <Rows>.

3.4.1. <Columns> / <Column>

<Columns> enthält <Column>-Elemente für jede zurückgegebene Spalte sowie optional <TableField>-Elemente für Tabellenfelder.

<Column> trägt den Feldnamen als Textinhalt und die vollständige Felddefinition als Attribute (field_ident).

3.4.2. <Rows> / <Row> / <Value>

Jede <Row> entspricht einem Treffer-Objekt.

Attribut auf <Row> Typ Pflicht Beschreibung

id

xs:long

Objekt-ID des Treffers

Die <Value>-Elemente innerhalb einer <Row> entsprechen positionsgenau den Spalten aus <Columns>.

Attribut auf <Value> Typ Standard Beschreibung

Textinhalt

xs:string

Anzeigewer des Feldinhalts (formatiert/übersetzt)

value

xs:string

Interner Rohwert (z. B. Schlüssel eines Katalogfelds)

Bei Katalogfeldern enthält der Textinhalt den Anzeigenamen (z. B. männlich), das Attribut value den internen Schlüssel (z. B. M). Für programmatische Verarbeitung sollte value verwendet werden.

Tabellenfelder erscheinen als <TableField>-Kindelement in der <Row> (parallel zu den <Value>-Elementen).

3.5. <ObjectList> (HOL)

Enthält eine Liste von <Object>-Elementen mit vollständigen Objektdaten.

3.5.1. <Object>

Attribut Typ Pflicht Beschreibung

id

xs:long

Ja

Objekt-ID

export_depth

xs:long

Exporttiefe (bei verschachtelten Abfragen)

Kindelemente von <Object> (alle optional):

Element Inhalt

<Fields>

Einfache Indexfelder als <Field>-Liste (Field-Element)

<MultiFields>

Mehrfachfelder (MultiFields)

<TableFields>

Tabellenfelder (TableFields)

<Rights>

Zugriffsrechte des angemeldeten Benutzers für dieses Objekt (Rights)

<BaseParams>

Basisparameter (Ersteller, Änderungsdatum, Archivierungsstatus etc.) (BaseParams)

<DocumentVariants>

Variantendokumente (nur bei Dokumenten mit Varianten) (DocumentVariants)

<FileProperties>

Dateiinformationen (Erweiterung, MIME-Typ, Anzahl, Größe)

<ChildObjects>

Kinderobjekte (bei Ordnern/Registern mit Unterstrukturen) — enthält weitere <ObjectType>-Elemente

<ExternalObjects>

Verknüpfte Objekte aus anderen Archiven — <Archive><ObjectType>

3.5.2. <Fields> / <Field>

<Fields> enthält <Field>-Elemente, eines pro Indexfeld.

Attribut Typ Standard Beschreibung

Textinhalt

xs:string

Anzeigewert des Felds (formatiert)

value

xs:string

Interner Rohwert (bei Katalogfeldern: Schlüssel)

displayname

xs:string

Anzeigename des Felds (Feldbezeichnung aus dem Objekttyp)

name

xs:string

Anzeigename des Felds

internal_name

xs:string

Interner (technischer) Name des Felds

dbname

xs:string

Datenbankspaltname

osguid

xs:string

GUID des Felds

object

xs:string

Zugehöriger Objekttyp (bei feldübergreifenden Abfragen)

system

xs:short

0

1 = Systemfeld

type

xs:string

Feldtyp (intern, z. B. BOOL, DATE, DECIMAL, TEXT)

datatype

xs:string

Datenbankdatentyp

ostype

xs:string

enaio®-Felddatentyp

size

xs:long

Feldlänge in Zeichen

visible

xs:short

1

1 = Feld ist sichtbar, 0 = versteckt

sortpos

xs:long

-1

Sortierposition des Felds in der Maske

3.5.3. <MultiFields> / <MultiField> / <Page> / <Value>

<MultiFields>
  <MultiField internal_name="keywords" dbname="D010">
    <Page id="1">
      <Value>Rechnung</Value>
      <Value>2024</Value>
    </Page>
  </MultiField>
</MultiFields>

3.5.4. <TableFields> / <TableField>

Tabellenfelder im HOL-Format folgen dem RowsetType: <Columns>/<Column>+ definiert die Spalten, <Row id>/<Value>* enthält die Zeilen.

<TableFields>
  <TableField internal_name="positions" dbname="D020">
    <Columns>
      <Column internal_name="pos_nr" dbname="D021">Pos.</Column>
      <Column internal_name="description" dbname="D022">Bezeichnung</Column>
      <Column internal_name="amount" dbname="D023">Betrag</Column>
    </Columns>
    <Row id="1">
      <Value>1</Value>
      <Value>Beratung</Value>
      <Value>1200.00</Value>
    </Row>
    <Row id="2">
      <Value>2</Value>
      <Value>Reisekosten</Value>
      <Value>350.00</Value>
    </Row>
  </TableField>
</TableFields>

3.5.5. <Rights>

Zugriffsrechte des aktuell angemeldeten Benutzers für das Objekt.

Attribut Typ Standard Beschreibung

modify_index

xs:short

0

1 = Benutzer darf Indexdaten ändern

modify_object

xs:short

0

1 = Benutzer darf das Objekt bearbeiten

delete_object

xs:short

0

1 = Benutzer darf das Objekt löschen

export_object

xs:short

0

1 = Benutzer darf das Objekt exportieren

object_inserts

xs:short

0

1 = Benutzer darf Kinderobjekte anlegen

<Rights> kann <ObjectInserts>-Kindelemente enthalten, die angeben, wie viele Objekte eines bestimmten Typs unterhalb noch eingefügt werden dürfen:

Attribut auf <ObjectInserts> Typ Pflicht Beschreibung

type

xs:long

Ja

Objekttyp-ID

count

xs:long

Ja

Verbleibende erlaubte Instanzen (-1 = unbegrenzt)

3.5.6. <BaseParams>

Basisparameter sind Systemmetadaten, die für jedes Objekt existieren.

Element Beschreibung

<Creator>

Benutzername des Erstellers

<Created value="unix-ts">

Erstellzeitpunkt als formatierter String; Attribut value = Unix-Timestamp

<CreationDate>

Erstelldatum ohne Uhrzeit

<Modifier>

Benutzername des letzten Änderers

<Modified value="unix-ts">

Änderungszeitpunkt; Attribut value = Unix-Timestamp

<Owner osguid="…​">

Besitzer (Benutzername als Text, GUID als Attribut)

<Links>

Anzahl der Verknüpfungen dieses Objekts

<SystemID>

System-ID (für Verweisdokumente)

<ForeignID>

Fremd-ID (für Verweisdokumente aus Fremdsystemen)

<ArchiveState value="n">

Archivierungsstatus als Text (ArchiveStateType) + numerischer Wert als Attribut

<Archivist>

Benutzername des Archivierenden

<ArchiveDate>

Datum der Archivierung

<Locked value="n">

Checkout-Status als Text (LockedType) + numerischer Wert als Attribut

<Version>

Versionsnummer des Objekts

3.5.7. <DocumentVariants> / <DocumentVariant>

Varianten sind rekursiv aufgebaut: jede Variante kann selbst wieder Untervarianten enthalten.

Attribut Typ Pflicht Beschreibung

doc_id

xs:long

Ja

Objekt-ID dieser Variante

doc_parent

xs:long

Ja

Objekt-ID der übergeordneten Variante (-1 bei der Wurzelvariante)

doc_ver

xs:string

Ja

Versionsnummer (z. B. 1.0, 2.0)

is_active

xs:short

Ja

1 = aktive Variante

3.6. <TypelessObjects> / <TypelessObject>

Typlose Objekte sind Dokumente ohne zugewiesenen Objekttyp — z. B. Dokumente in der Benutzerablage oder der Workflowablage. Sie werden von <Archive> getrennt direkt unter <DMSContent> aufgeführt.

Attribut Typ Pflicht Beschreibung

id

xs:long

Ja

Objekt-ID

maintype

xs:short

Ja

Dokumenthaupttyp. Werte und Bedeutung: Objekttyp-ID.

module

modultype

Ja

Dokumentmodul

user

xs:string

Ja

Benutzername des Eigentümers

pagecount

xs:long

Ja

Seitenanzahl

filesize

xs:long

Ja

Dateigröße in Bytes

mimetypeid

xs:long

Ja

MIME-Typ-ID

timestamp

xs:string

Ja

Zeitstempel des Objekts

3.7. <Messages> / <Message>

Fehlermeldungen des Servers. Bei erfolgreichem Aufruf ist <Messages> leer.

Attribut Typ Pflicht Beschreibung

Textinhalt

xs:string

Beschreibung des Fehlers

faultcode

xs:long

Ja

Interner Fehlercode

sourcecode

xs:long

Ja

Quellcode (identifiziert die Server-Komponente)

3.8. <Statistics>

Paginierungsinformationen — immer vorhanden, auch wenn keine Treffer vorliegen.

Attribut Typ Pflicht Beschreibung

pagesize

xs:long

Ja

Maximale Trefferzahl pro Seite (konfiguriert in der Anfrage)

startpos

xs:long

Ja

Startposition (0-basiert) des ersten gelieferten Treffers

total_hits

xs:long

Ja

Gesamtanzahl der Treffer (über alle Seiten)

Für seitenweises Blättern: Gesamtseitenzahl = ⌈total_hits / pagesize⌉. Die nächste Seite wird durch startpos += pagesize angefordert.

4. Aufzählungstypen

4.1. dataformat

Wert Bedeutung

LOL

List of Lists — tabellarisches Format mit <Rowset>

HOL

Hierarchical Object List — Objektformat mit <ObjectList>

MIXED

Kombination aus LOL und HOL

4.2. objecttypes

Wert Bedeutung

FOLDER

Ordner

REGISTER

Register

DOCUMENT

Dokument

4.3. modultype

Wert Haupttyp

Beschreibung

GRAYSCALE

1

Graustufen-Dokument

BLACKWHITE

2

Schwarz/Weiß-Dokument

COLOR

3

Farb-Dokument

WINDOWS

4

Windows-Dokument (Office, PDF, …)

MULTIMEDIA

5

Multimedia-Dokument

EMAIL

6

E-Mail-Dokument

XML

7

XML-Dokument

CONTAINER

8

Container-Dokument

MULTIDOC

Mehrseitiges zusammengesetztes Dokument

REFERENCE

Verweisdokument (Referenz auf Fremdsystem)

UNKNOWN

Unbekannter Dokumenttyp

4.4. ArchiveStateType

Wert Bedeutung

ARCHIVED

Dokument ist archiviert

ARCHIVABLE

Dokument kann archiviert werden (freigegeben)

NOT_ARCHIVABLE

Dokument kann nicht archiviert werden

NO_PAGES

Dokument hat keine Seiten

PAGE_ERROR

Fehler bei einer oder mehreren Seiten

REFERENCE

Verweisdokument — kein eigenes Archivat

UNKNOWN

Status unbekannt

4.5. LockedType

Wert Bedeutung

UNLOCKED

Dokument ist nicht ausgecheckt

SELF

Dokument ist vom aktuellen Benutzer ausgecheckt

OTHERS

Dokument ist von einem anderen Benutzer ausgecheckt

EXTERNAL

Dokument ist extern gesperrt

5. Vollständiges Beispiel (HOL mit BaseParams und Rights)

<DMSContent format="HOL" version="5.00"
            timestamp="2024-03-15T10:30:00"
            user="admin" station="PC01" lang_id="7">
  <Archive id="1" internal_name="patient">
    <ObjectType id="5" internal_name="medical_letter"
                type="DOCUMENT" modul="WINDOWS" fulltext="1">
      <ObjectList>
        <Object id="9823">
          <Fields>
            <Field internal_name="date" dbname="D001" type="DATE"
                   ostype="DATE" sortpos="1" visible="1">2024-03-15</Field>
            <Field internal_name="subject" dbname="D002" type="TEXT"
                   ostype="TEXT" sortpos="2" visible="1">Entlassungsbrief</Field>
            <Field internal_name="status" dbname="D003" type="TEXT"
                   ostype="LISTBOX" value="D">Definitiv</Field>
          </Fields>
          <Rights modify_index="1" modify_object="0"
                  delete_object="0" export_object="1" object_inserts="0"/>
          <BaseParams>
            <Creator>admin</Creator>
            <Created value="1710500000">2024-03-15 10:13:20</Created>
            <CreationDate>2024-03-15</CreationDate>
            <Modifier>admin</Modifier>
            <Modified value="1710500000">2024-03-15 10:13:20</Modified>
            <Owner osguid="550e8400-e29b-41d4-a716-446655440000">admin</Owner>
            <Links>0</Links>
            <SystemID>0</SystemID>
            <ForeignID></ForeignID>
            <ArchiveState value="1">ARCHIVED</ArchiveState>
            <Archivist>admin</Archivist>
            <ArchiveDate>2024-03-15</ArchiveDate>
            <Locked value="0">UNLOCKED</Locked>
            <Version>3</Version>
          </BaseParams>
          <FileProperties extension="docx"
                          mimetype="application/vnd.openxmlformats-officedocument.wordprocessingml.document"
                          count="1" size="24576"/>
        </Object>
      </ObjectList>
      <Statistics pagesize="20" startpos="0" total_hits="1"/>
    </ObjectType>
  </Archive>
  <Messages/>
</DMSContent>