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 |
|---|---|---|
LOL / HOL / MIXED |
Primärer Recherche-Job — gibt Trefferlisten aus Suchanfragen zurück |
|
HOL |
Liefert vollständige Indexdaten zu einem oder mehreren Objekten |
|
LOL / HOL |
Führt eine gespeicherte Suchanfrage aus |
|
HOL |
Liefert typloser Objekte aus der Benutzerablage (enthält |
|
HOL |
Liefert Objekte aus der Workflowablage |
|
HOL |
Liefert gelöschte Objekte |
|
HOL |
Liefert verknüpfte Objekte aus anderen Archiven |
|
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> |
|---|---|---|
|
Liste von Listen |
|
|
Hierarchische Objektliste |
|
|
Kombination |
Enthält sowohl |
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 |
|---|---|---|---|
|
Pflicht |
Ausgabeformat: |
|
|
xs:long |
|
Interne System-ID des Servers |
|
xs:long |
|
Sprachkennung (7 = Deutsch) |
|
xs:string |
— |
Angemeldeter Benutzer |
|
xs:string |
— |
Rechner-/Stationsname des Benutzers |
|
xs:dateTime |
— |
Zeitpunkt der Antwort (ISO 8601) |
|
xs:string |
|
enaio®-Serverversion |
|
xs:string |
— |
Serverinstanz |
|
xs:string |
|
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 |
|---|---|---|---|
|
xs:long |
|
Numerische Archiv-ID |
|
xs:string |
— |
Anzeigename des Archivs |
|
xs:string |
— |
Interner Name des Archivs |
|
xs:string |
— |
GUID des Archivs |
3.3. <ObjectType>
Beschreibt den Objekttyp der enthaltenen Treffer.
| Attribut | Typ | Standard | Beschreibung |
|---|---|---|---|
|
— |
Art des Objekts: |
|
|
xs:long |
|
Numerische ID des Objekttyps |
|
xs:short |
|
Haupttyp des Objekttyps. Wertebereich und Bedeutung: Objekttyp-ID. |
|
xs:short |
|
Untertyp des Objekttyps (Lowword der Objekttyp-ID). |
|
xs:string |
— |
Datenbanktabelle des Objekttyps |
|
xs:string |
— |
Anzeigename des Objekttyps |
|
xs:string |
— |
Interner Name des Objekttyps |
|
xs:string |
— |
GUID des Objekttyps |
|
|
Dokumentmodul (nur bei Dokumenten relevant) |
|
|
xs:short |
|
|
|
xs:string |
— |
Alias-Name des Objekttyps |
|
xs:short |
|
|
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 |
|---|---|---|---|
|
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) |
|
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 |
|---|---|---|---|
|
xs:long |
Ja |
Objekt-ID |
|
xs:long |
— |
Exporttiefe (bei verschachtelten Abfragen) |
Kindelemente von <Object> (alle optional):
| Element | Inhalt |
|---|---|
|
Einfache Indexfelder als |
|
Mehrfachfelder (MultiFields) |
|
Tabellenfelder (TableFields) |
|
Zugriffsrechte des angemeldeten Benutzers für dieses Objekt (Rights) |
|
Basisparameter (Ersteller, Änderungsdatum, Archivierungsstatus etc.) (BaseParams) |
|
Variantendokumente (nur bei Dokumenten mit Varianten) (DocumentVariants) |
|
Dateiinformationen (Erweiterung, MIME-Typ, Anzahl, Größe) |
|
Kinderobjekte (bei Ordnern/Registern mit Unterstrukturen) — enthält weitere |
|
Verknüpfte Objekte aus anderen Archiven — |
3.5.2. <Fields> / <Field>
<Fields> enthält <Field>-Elemente, eines pro Indexfeld.
| Attribut | Typ | Standard | Beschreibung |
|---|---|---|---|
Textinhalt |
xs:string |
— |
Anzeigewert des Felds (formatiert) |
|
xs:string |
— |
Interner Rohwert (bei Katalogfeldern: Schlüssel) |
|
xs:string |
— |
Anzeigename des Felds (Feldbezeichnung aus dem Objekttyp) |
|
xs:string |
— |
Anzeigename des Felds |
|
xs:string |
— |
Interner (technischer) Name des Felds |
|
xs:string |
— |
Datenbankspaltname |
|
xs:string |
— |
GUID des Felds |
|
xs:string |
— |
Zugehöriger Objekttyp (bei feldübergreifenden Abfragen) |
|
xs:short |
|
|
|
xs:string |
— |
Feldtyp (intern, z. B. |
|
xs:string |
— |
Datenbankdatentyp |
|
xs:string |
— |
enaio®-Felddatentyp |
|
xs:long |
— |
Feldlänge in Zeichen |
|
xs:short |
|
|
|
xs:long |
|
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 |
|---|---|---|---|
|
xs:short |
|
|
|
xs:short |
|
|
|
xs:short |
|
|
|
xs:short |
|
|
|
xs:short |
|
|
<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 |
|---|---|---|---|
|
xs:long |
Ja |
|
|
xs:long |
Ja |
Verbleibende erlaubte Instanzen ( |
3.5.6. <BaseParams>
Basisparameter sind Systemmetadaten, die für jedes Objekt existieren.
| Element | Beschreibung |
|---|---|
|
Benutzername des Erstellers |
|
Erstellzeitpunkt als formatierter String; Attribut |
|
Erstelldatum ohne Uhrzeit |
|
Benutzername des letzten Änderers |
|
Änderungszeitpunkt; Attribut |
|
Besitzer (Benutzername als Text, GUID als Attribut) |
|
Anzahl der Verknüpfungen dieses Objekts |
|
System-ID (für Verweisdokumente) |
|
Fremd-ID (für Verweisdokumente aus Fremdsystemen) |
|
Archivierungsstatus als Text (ArchiveStateType) + numerischer Wert als Attribut |
|
Benutzername des Archivierenden |
|
Datum der Archivierung |
|
Checkout-Status als Text (LockedType) + numerischer Wert als Attribut |
|
Versionsnummer des Objekts |
3.5.7. <DocumentVariants> / <DocumentVariant>
Varianten sind rekursiv aufgebaut: jede Variante kann selbst wieder Untervarianten enthalten.
| Attribut | Typ | Pflicht | Beschreibung |
|---|---|---|---|
|
xs:long |
Ja |
Objekt-ID dieser Variante |
|
xs:long |
Ja |
Objekt-ID der übergeordneten Variante ( |
|
xs:string |
Ja |
Versionsnummer (z. B. |
|
xs:short |
Ja |
|
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 |
|---|---|---|---|
|
xs:long |
Ja |
Objekt-ID |
|
xs:short |
Ja |
Dokumenthaupttyp. Werte und Bedeutung: Objekttyp-ID. |
|
Ja |
Dokumentmodul |
|
|
xs:string |
Ja |
Benutzername des Eigentümers |
|
xs:long |
Ja |
Seitenanzahl |
|
xs:long |
Ja |
Dateigröße in Bytes |
|
xs:long |
Ja |
MIME-Typ-ID |
|
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 |
|
xs:long |
Ja |
Interner Fehlercode |
|
xs:long |
Ja |
Quellcode (identifiziert die Server-Komponente) |
3.8. <Statistics>
Paginierungsinformationen — immer vorhanden, auch wenn keine Treffer vorliegen.
| Attribut | Typ | Pflicht | Beschreibung |
|---|---|---|---|
|
xs:long |
Ja |
Maximale Trefferzahl pro Seite (konfiguriert in der Anfrage) |
|
xs:long |
Ja |
Startposition (0-basiert) des ersten gelieferten Treffers |
|
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 |
|---|---|
|
List of Lists — tabellarisches Format mit |
|
Hierarchical Object List — Objektformat mit |
|
Kombination aus LOL und HOL |
4.3. modultype
| Wert | Haupttyp |
|---|---|
Beschreibung |
|
|
Graustufen-Dokument |
|
|
Schwarz/Weiß-Dokument |
|
|
Farb-Dokument |
|
|
Windows-Dokument (Office, PDF, …) |
|
|
Multimedia-Dokument |
|
|
E-Mail-Dokument |
|
|
XML-Dokument |
|
|
Container-Dokument |
|
— |
Mehrseitiges zusammengesetztes Dokument |
|
— |
Verweisdokument (Referenz auf Fremdsystem) |
|
— |
Unbekannter Dokumenttyp |
4.4. ArchiveStateType
| Wert | Bedeutung |
|---|---|
|
Dokument ist archiviert |
|
Dokument kann archiviert werden (freigegeben) |
|
Dokument kann nicht archiviert werden |
|
Dokument hat keine Seiten |
|
Fehler bei einer oder mehreren Seiten |
|
Verweisdokument — kein eigenes Archivat |
|
Status unbekannt |
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>