Data Matrix – Arbeiten mit klinischen Daten. Was sind Barcodes?

13. Juli 2017

×

Am 11. Juli veranstaltete das Data MATRIX-Team den Biotech Tuesday in Boston. Rund zweihundert Gäste kamen, um sich über die neuesten Branchennachrichten auszutauschen und sich gegenseitig neue Partner vorzustellen.

Data MATRIX bedankt sich bei allen Teilnehmern, die an diesem Tag unserem Team beitreten konnten. Wir hoffen, dass viele von ihnen neue Geschäftsmöglichkeiten entdeckt haben. „Es war ein tolles Treffen, es war großartig, Vertreter so vieler Unternehmen zu treffen. Die Kommunikation und Interaktion zwischen den Gästen war wunderbar! „Das war der beste Biotech-Dienstag, an dem ich je teilgenommen habe“, sagte ein Gast.

Bleiben Sie in Verbindung und nehmen Sie am nächsten Data MATRIX-Treffen teil!

07. Juni 2017

Die Zukunft der klinischen Forschung: Data MATRIX Meeting

×

Am 2. Juni fand im DI Telegraph (Moskau, Twerskaja-Straße 7) ein Treffen von Spezialisten der Pharmaindustrie zum Thema „Die Zukunft der klinischen Forschung: Menschen und Technologien“ statt. Mehr als 100 Personen beteiligten sich daran.

Der erste Teil der Veranstaltung war der Diskussion gewidmet Softwarelösungen für klinische Studien. Ivan Dobromyslov, CEO von Data MATRIX, gab einen Überblick über diese Produkte und sprach darüber, wie sich moderne Regulierungs- und Managementanforderungen auswirken Software, untersuchte die Merkmale patientenzentrierter Forschung. Er erläuterte auch die neuen Forschungsmöglichkeiten mithilfe von mobile Geräte und die Besonderheiten der Arbeit in Projekten mit großen Datenbanken.

Christina Leus, Geschäftsführerin von Data MATRIX, stellte das Projektmanagement im MATRIX Cloud-System in allen Phasen vor: Erstellen eines Projekts, Zuweisen eines Teams, einschließlich Forschungszentren, Erstellen und Bereitstellen eines elektronischen CRF, Pflege eines überwachten Produkts im Pharmakovigilanz-Modul, Arbeiten mit dem Budget, der Planung von Projektaufgaben und der Überwachung ihrer Umsetzung. Am 31. Mai 2017 organisierte das Data MATRIX-Team ein Treffen mit Branchenkollegen in einer Brauerei in der belgischen Gemeinde Gembloux.

Vertreter von Data MATRIX sprachen über Dienste zur Erfassung und Verarbeitung klinischer Studiendaten mithilfe einer selbst entwickelten, vollständig validierten MATRIX EDC/IWRS-Anwendung. Data MATRIX arbeitet mit Phase-I-IV-Studien und Beobachtungsprogrammen und unterstützt Kunden bei der Durchführung hochwertiger Datenverarbeitung, Patienten-Randomisierung, statistischer Analyse und mehr.

Am Ende der Data MATRIX-Präsentation wurden Vertreter europäischer Biotechnologieunternehmen zu einem Rundgang durch die Brauerei eingeladen. Anschließend konnten die Gäste der Veranstaltung bei einer Verkostung von lokalem Bier und Käse über berufliche Themen diskutieren.

Data MATRIX bedankt sich bei allen Gästen des Treffens und hofft, sie bald wiederzusehen.

Stellt schwarze und weiße Elemente oder Elemente mit mehreren unterschiedlichen Helligkeitsgraden dar, normalerweise in Form eines Quadrats, angeordnet in einer rechteckigen oder quadratischen Gruppe. Ein Matrix-Barcode dient zur Kodierung von Text oder anderen Datentypen. Am häufigsten werden in Industrie und Handel Bitmatrizen verwendet, die Daten von wenigen Bytes bis zu 2 Kilobytes kodieren. Auf Wunsch können Sie Matrizen mit einer Kapazität von Hunderten von Kilobyte auf einem Drucker ausdrucken und sie dann mit Kameras, deren Matrizen Millionen von Pixeln enthalten, mit relativ hoher Genauigkeit auslesen. Der Prototyp von Barcodes in Form von Matrizen sind Lochkarten.

Technische Spezifikation von DataMatrix

DataMatrix-Symbole werden aus Modulen gebildet, die sich innerhalb des Suchmusters befinden. Sie können bis zu 3116 ASCII-Tabellencodes (einschließlich redundanter Informationen) verschlüsseln. Ein Symbol besteht aus Datenbereichen, die Module in Form eines periodischen Arrays enthalten. Jeder Datenbereich ist durch ein Suchmuster begrenzt und auf allen vier Seiten von Freizonengrenzen umgeben. (Hinweis: Module können rund oder quadratisch sein; eine bestimmte Form ist in der Norm nicht festgelegt).

Datenmatrix ECC 200

ECC 200 ist neueste Version DataMatrix, das Reed-Solomon-Codes verwendet, um Fehler zu verhindern und gelöschte Informationen wiederherzustellen. ECC 200 ermöglicht die Wiederherstellung der gesamten Sequenz codierter Informationen, wenn ein Symbol 30 % Korruption enthält, vorausgesetzt, die Matrix ist immer noch genau richtig positioniert. DataMatrix hat eine Fehlerrate von weniger als 1 von 10 Millionen gescannten Zeichen.

Symbole haben eine gerade Anzahl an Zeilen und eine gerade Anzahl an Spalten. Die meisten Symbole haben eine quadratische Größe von 10 x 10 bis 144 x 144 Modulen. Einige Symbole sind jedoch rechteckig und haben eine Größe von 8 x 18 bis 16 x 48 Einheiten (nur gerade Werte). Alle Zeichen, die die ECC 200-Fehlerkorrektur unterstützen, sind daran zu erkennen, dass die Einheit in der oberen rechten Ecke dieselbe Farbe wie der Hintergrund hat.

Kann sich beziehen auf: Matrix (Mathematik) Eine rechteckige Anordnung von Elementen. Datenmatrix (Computer) Ein codierter Barcode. Datensatz Eine Sammlung von Daten in Tabellenform. Datenmatrix (multivariate Statistik) Eine mathematische Datenmatrix, deren Zeilen... ... Wikipedia darstellen

Data Matrix – Ein Beispiel für einen Data Matrix-Code, der den Text kodiert: Wikipedia, die freie Enzyklopädie zum Lesen von Daten … Wikipedia

Datenmatrix

Datenmatrix – 3.8 Datenmatrix: Zweidimensionale fehlerkorrigierende Matrixsymbologie, die verschiedene Zeichensätze kodiert, einschließlich eines Satzes numerischer und alphanumerischer Datenzeichen, aller ISO/IEC 646 (ASCII)-Zeichen1) und spezielle Sets Zeichen. 1) Link... ... Wörterbuch-Nachschlagewerk mit Begriffen der normativen und technischen Dokumentation

Datenmatrix – /deɪtə ˈmeɪtrɪks/ (sagen wir daytuh maytriks) Substantiv (Plural Datenmatrizen oder Datenmatrizen /deɪtə ˈmeɪtrəsiz/ (sagen wir daytuh maytruhseez)) eine rechteckige Anordnung von Daten, seien es Zahlen, Bilder usw., die in Berechnungen verwendet werden … Australisches Englisch-Wörterbuch

- ... Wikipedia

Datenmatrix (Computer) – Ein Datenmatrixcode ist ein zweidimensionaler Matrix-Barcode, der aus schwarzen und weißen quadratischen Modulen besteht, die entweder in einem quadratischen oder rechteckigen Muster angeordnet sind. Bei den zu kodierenden Informationen kann es sich um Text oder Rohdaten handeln. Die übliche Datengröße beträgt einige Bytes aufwärts... ... Wikipedia

Data Matrix Code - DataMatrix Code als Teil von Stampit Mit dem zweidimensionalen Data Matrix Code (2D Code) kann im Vergleich zu eindimensionalen Barcodes (1D Code) die Informationsdichte pro Fläche deutlich erhöht werden. Entwickelt wurde der Data Matrix Code in… … English Wikipedia

Datenmatrix (multivariate Statistik) – In der multivariaten Statistik ist eine Datenmatrix eine mathematische Datenmatrix, deren Zeilen unterschiedliche Wiederholungen eines Experiments darstellen und deren Spalten unterschiedliche Arten von Daten darstellen (z. B. die Ergebnisse einer bestimmten Sonde). Zum Beispiel... ... Wikipedia

Matrixcode – Der Matrixcode kann sich beziehen auf: einen zweidimensionalen Barcode (im Gegensatz zu linearen und gestapelten Symbologien), wie z.B. Datenmatrix. Das Logo der Matrix-Franchise. Siehe Matrix Digital Rain. Diese Begriffsklärungsseite listet Artikel auf, die mit … … Wikipedia in Zusammenhang stehen

Bücher
  • Fehlerursachenanalyse von Werkzeugmaschinen mithilfe der Matrixmethode, Chitrakant Tiger,A.B. Andhare und Ashwin Patil. Dieses Buch basiert auf der Untersuchung solcher Fehler, um die kritischen Teilsysteme dieser Werkzeugmaschinen zu identifizieren. Die Fehleranalyse von Werkzeugmaschinen wurde mittels Graphentheorie-Matrix durchgeführt…

Die sogenannten Barcodes gibt es schon seit geraumer Zeit auf der ganzen Welt, ja, das sind Bilder mit unterschiedlich langen und dicken Streifen, die im nächsten Supermarkt auf Waren geklebt werden ^_^ Generell gibt es verschiedene Bar-Codes Codes, aber für uns wird der sogenannte QR-Code (von Quick Response) am interessantesten sein, der im Internet am weitesten verbreitet ist. Das zweidimensionaler Code, im Gegensatz zu Streifen auf Waren, daher seine sehr wichtige Eigenschaft: Informationskapazität. Im Allgemeinen werde ich Wikipedia nicht zitieren; Interessierte können es selbst lesen. Es gibt genug große Zahl Methoden zur Darstellung von QR-Codes im Web, die gebräuchlichsten basieren auf der serverseitigen Generierung von Bildern. Meine Leser wissen jedoch, wie sehr mir solche Entscheidungen missfallen.

Kurz über BarcodesQR-Code

Es gibt 4 Hauptklassen der Informationsdarstellung per QR-Code, die sich in der Art der gespeicherten Daten und dem maximalen Volumen unterscheiden:

  • Nur digitale Informationen – bis zu 7089 Ziffern
  • Alphanumerische Informationen – bis zu 4296 Zeichen
  • Binärdaten (8-Bit-Bytes) – bis zu 2953 Bytes
  • Kanji/Kana – bis zu 1817 Zeichen

Der QR-Code verfügt über die folgenden Fehlerkorrekturstufen, die durch die Menge der wiederherzustellenden Informationen gekennzeichnet sind (von der größten zur kleinsten):

  • H(hoch) – 30 %
  • Qualität – 25 %
  • M(mittel) - 15 %
  • L(niedrig) – 7 %

Der Fehlerkorrekturalgorithmus basiert auf dem Reed-Solomon-Code.

Darüber hinaus gibt es mehrere Versionen der Datendarstellung (1-40), die sich unterscheiden maximale Lautstärke gespeicherte Informationen und dementsprechend die Größe der Matrix.

DataMatrix-Code

Dies ist eine andere Art von zweidimensionalem Code, der im Internet weniger verbreitet, aber kompakter ist. Der Code sieht außerdem die Speicherung von Informationen zur Wiederherstellung von bis zu 30 % vor. Im Gegensatz zu QR muss die Anwendungsfläche nicht quadratisch sein.

Also fangen wir an

Natürlich wollte ich keine Implementierung des Codegenerierungsalgorithmus schreiben, also habe ich nach dem Googeln eine völlig passende Implementierung der Codierung in JavaScript von Kazuhiko Arase http://www.d-project.com/qrcode/index gefunden .html. Hier ist nur eine Art der Kodierung implementiert: 8-Bit-Bytes, d. h. alle Daten werden so wie sie sind in Bytes zerlegt und in der gleichen Form von Scannern gelesen. Auf diese Weise können wir jede beliebige Zeichenfolge in Unicode kodieren und jeder vernünftige Scanner sollte sie korrekt dekodieren. Darüber hinaus wird in dieser Implementierung der Standard bis einschließlich Version 10 unterstützt.

Wenig später stieß ich auf ein jQuery-Plugin, das auf dieser Entwicklung des tapferen Japaners https://github.com/jeromeetienne/jquery-qrcode basierte. Die darin enthaltene Darstellung wurde jedoch ausschließlich über Canvas umgesetzt, und ernsthafte Entwickler sind verpflichtet, wann immer möglich browserübergreifend zu schreiben.

Bei DataMatrix-Codes war alles komplizierter, bis ich auf das jQuery-Plugin BarCode http://barcode-coder.com/en/barcode-jquery-plugin-201.html stieß, das tatsächlich den DataMatrix-Encoder von HOUREZ Jonathan enthielt. Allerdings erschien mir das Plugin selbst zu monströs und schwierig zu erweitern, um es irgendwie nutzen zu können.

Durchführung

Daher wurde beschlossen, verschiedene Barcode-Rendering-Engines zu implementieren, abhängig von der clientseitigen Unterstützung für bestimmte Funktionen sowie der Unterstützung verschiedene Arten Encoder:

;(function($)( var $$ = $.barcode = ( defs: ( // Standardoptionen type:false // Codetyp ), clas: "bar-code", // CSS-Klasse conv: function(s ) ( // String-Konvertierungsfunktion return unescape(encodeURIComponent(s)); ), type: (), // Engine-Codetypen: () // Renderer ), T = function(t)( // Codetyp-Validator if( ! $$.type[t])( for(var i in $$.type)( t = i; break; ) ) return t), R = Math.floor; // Rundungsfunktion $.fn.bar_code = function( opts)( // Plugin-Implementierung return this.each(function())( var self = $(this); if(!self.hasClass($$.clas))( self.addClass($$.clas); / / Festlegen der Klasse) var opt = $.extend(true, ( // Optionen initialisieren width: self.innerWidth(), height: self.innerHeight(), text: self.text() ), $$.defs, opts ), gene, inst, val = $$.conv(opt.text); // Datenkonvertierung opt.type = T(opt.type); // Init type self.empty( / / Finden der Encoder-Rückgabe; ) if(!(inst = gene.init(opt, val)))( // Initialisieren der Encoder-Instanz return;

) var cnt = gene.read.call(inst), // Matrixdimensionen est = [ // Matrixelementdimensionen R(opt.width/cnt), R(opt.height/cnt) ], p = ( // Anpassung Polsterung w:opt.width-est*cnt, h:opt.height-est*cnt );

if(p.w > 0.01 || p.h > 0.01)( var cst = ( // Container padding width:opt.width-p.w, height:opt.height-p.h, paddingLeft:R(0.5*p.w), paddingTop:R(0.5 *p.h) ); cst.paddingRight=p.w-cst.paddingTop; for(var n in $$.engine)( // Einen geeigneten Renderer finden, wenn ($$.engine[n].check())( $$.engine[n].render.call(self, function(col, row)( // Dieses Lambda fragt im Wesentlichen den Zustand eines Matrixelement-Rückgabegens ab. read. call(inst, col, row);

);

$$.engine.canvas = ( check: function())( // Verfügbarkeit prüfen try( return !!window.CanvasRenderingContext2D && !!document.createElement("canvas"); )catch(e)( return false; ) ) , render: function(chk, cnt, est)( // Rendering // Zuerst müssen wir die Farben ermitteln, damit das Bild gemäß dem CSS aussieht var st = this.append("").find("span" ), c = st.eq(0).css("backgroundColor"), d = st.eq(1).css("backgroundColor"), w = est.width, h = est.height(); initialize Canvas var can = this.append("").find("canvas").get(0), ctx = can.getContext("2d"); Und färben Sie die Matrix for(var y = 0; y< cnt; y++){ for(var x = 0; x < cnt; x++){ ctx.fillStyle = chk(x, y) ? d: c; ctx.fillRect(x*est, y*est, est, est); } } } };

Wenn Canvas nicht verfügbar ist, generieren wir dummerweise eine Matrix mit HTML-Elementen, es ist langsamer, aber es funktioniert:

$$.engine.html = ( check: function())( return true; ), render: function(chk, cnt, est)( var tab = ""; for(var y = 0; y< cnt; y++){ for(var x = 0; x < cnt; x++){ tab += ""; } } this.append(tab).find("span").css({ width:est, height:est }); } };

Nach dem Testen im IE stellte sich wie üblich heraus, dass es dort überhaupt nicht wie beabsichtigt funktioniert. In Ermangelung des Wunsches, es zu verstehen, schreiben wir eine Tabellen-Engine:

$$.engine.table = ( check: function())( return true; //$.browser.msie; ), render: function(chk, cnt, est)( var tab = ""; for(var y = 0 ;y< cnt; y++){ tab += ""; for(var x = 0; x< cnt; x++){ tab += ""; ) tab += ""; ) this.append("

„+Tab+“
").find("table").css(( width:est*cnt, height:est*cnt )).find("td").css(( width:est, height:est )); ) );

Wie Sie sehen, war alles recht trivial. Jetzt muss nur noch ein Stylesheet geschrieben werden:

Barcode( /* Container */ Überlauf: versteckt; Rand: 10 Pixel; Polsterung: 0; Breite: 100 Pixel; Höhe: 100 Pixel; Hintergrund: #fff; /* Hintergrundfarbe. Wenn Sie eine feste Füllung haben, können Sie diese nicht festlegen diese Eigenschaft */ ) .bar-code *( /* Standardmäßig alle Elemente */ display: inline-block; float: left; border: 0; padding: 0; margin: 0; border-collapse: Collapse; ) .bar - Code .dark( /* Abgedunkelte Elemente */ Hintergrund: #000; /* Sie können jede Farbe einstellen, solange sie sich gut vom Hintergrund unterscheidet, experimentieren Sie */ )

Hier setze ich einige Eigenschaften zurück, nur für den Fall, dass Sie dies nicht tun müssen, wenn sowieso alles gut aussieht.

Programmierer

Wie oben erwähnt, implementieren wir die Generierung von QR-Codes mit einem Encoder von Kazuhiko Arase, und als Beispiel werden wir auch den DataMatrix-Codegenerator hinzufügen. Dies ist eine Alternative zu QR-Codes, aber im Internet weniger verbreitet und wird von unterstützt weniger Scanner. Im Skript prüfen wir, ob der Encoder verfügbar ist und initialisieren erst dann die Engine.

Kazuhikos Encoder erfordert zwingend die Angabe des Codetyps, also einer Zahl von 0 bis 10, die zusammen mit der Fehlerkorrekturstufe jedoch die Codeversion darstellt verschiedene Typen Codes können unterschiedliche Mengen an Informationen speichern. Daher habe ich beschlossen, die automatische Auswahl des den Daten entsprechenden Typs zu implementieren, wenn der Typ nicht angegeben ist. Der QR-Encoder sieht also so aus:

If(window.QRCode)( $$.defs.QR = ( // Standardoptionswerte Ebene: „H“, // Standardebenentyp: 0 // Standardtyp // 1..10 // meine Erweiterung: 0 oder null – automatische Auswahl); var QRAutoType = function(val, errorCorrectLevel)( // Automatische Auswahl geeigneter Typ for(var typeNumber = 1; typeNumber