JMP Clinical wurde vor 11 Jahren speziell für die Analyse und Überprüfung laufender klinischer Studien veröffentlicht, die sich auf standardisierte und strukturierte Daten konzentrieren. Die Absicht war, dass ein Gutachter in regelmäßigen Abständen (jede Woche oder jeden Monat) Daten zur Überprüfung erhält, um anhand vorprogrammierter Berichte nach Sicherheits- und/oder Wirksamkeitssignalen zu suchen -Nachfrage. Die Hoffnung bestand darin, den Überprüfungsprozess zu beschleunigen und Anomalien aufzudecken, die sonst bei der Betrachtung statischer Tabellen, Auflistungen und Abbildungen übersehen werden könnten.
Darüber hinaus war es ein Ziel der Software, Programmierteams zu entlasten, die die angeforderten Daten und standardisierten Berichte für die Gutachter erstellen. Dies erforderte viel Zeit, um Programme auszuführen oder Programme/Skripte/Makros zu bearbeiten, um den Anforderungen der Gutachter gerecht zu werden, und zwar regelmäßig. Programmier- und Biostatistikgruppen möchten sich in der Regel auf Daten und Berichte konzentrieren, die für die Studie einzigartig sind, anstatt auf die übliche Tabelle oder Grafik, die von Studie zu Studie ziemlich konsistent ist, damit sie den studienspezifischen Anomalien, die mehr statistische oder algorithmische Kenntnisse erfordern.
Im Wesentlichen hat JMP Clinical diese Ziele erreicht, es sei denn, es handelt sich um Organisationen, die viele Studien haben, die überwacht werden müssen und/oder häufige Datenaktualisierungen haben. Dies stellt eine neue Belastung für das Datenmanagement und die Biostatistik-Teams dar, die Studien innerhalb von JMP Clinical zu aktualisieren, oder belastet die Gutachter, die im Verfahren nicht so kompetent waren oder die Zeit hatten. Von Interesse war auch die Möglichkeit, einige der Berichte in JMP Clinical zu ändern und/oder dieselbe Überprüfungsvorlage nach einem Zeitplan auszuführen. Die Nachfrage nach Automatisierung und Erweiterung der Fähigkeiten von JMP Clinical wurde zu einer häufigen Nachfrage.
Geben Sie die APIs von JMP Clinical ein. Um JMP Clinical 6 herum haben wir das Framework und die Infrastruktur eingeführt, um einen API-basierten Zugriff auf gängige Funktionen/Prozesse programmatisch möglich zu machen. In JMP Clinical 7 wurden die APIs veröffentlicht und unter Verwendung der JMP Scripting Language (JSL) bereitgestellt. In Version 8 (der neuesten) wurden weitere Funktionen freigegeben. Dieser Beitrag geht nicht auf die Details der Entwicklung der APIs ein. Stattdessen konzentriert es sich auf die praktische Anwendung, damit Sie sie nutzen können.
Ich werde eine Reihe von Beiträgen zum Aufrufen und Verwenden der APIs veröffentlichen. Wir beginnen einfach mit der Einführung in die grundlegende Syntax und deren Verwendung. Dann gehen wir zu komplexeren Anwendungen über, während wir JSL verwenden. Und schließlich kombinieren wir die beiden Kategorien von APIs, die in einer JSL aufgerufen werden.
Für diejenigen, die mit den Begriffen Studie, Review, Report und Review Template im Kontext von JMP Clinical nicht vertraut sind, lesen Sie bitte dies Verknüpfung kennen zu lernen. Auch diejenigen, die nicht mit JSL vertraut sind, sollten hier mehr lesen und erfahren Verknüpfung . Kenntnisse in beiden sind erforderlich, um die Verwendung der APIs zu verstehen.
Beginnen wir für diesen Beitrag mit den beiden Hauptkategorien und dem, was möglich ist. Die beiden Hauptkategorien sind: Studienverwaltungsbezogene Funktionen (JMPClinicalStudyManagerAPI) und Prüfungsbezogene Funktionen (JMPClinicalReviewAPI). Die Idee ist, zu replizieren, was innerhalb der Benutzeroberfläche (hauptsächlich die Schaltflächenklicks) getan werden kann, wo keine Entscheidung des Benutzers erforderlich ist (wie das Aktualisieren der Metadaten für Studien mit neuen Daten oder das Öffnen einer Review-Vorlage und deren Ausführung für eine bestimmte Studie). Unten finden Sie einige Bilder, die Schaltflächen hervorheben, die sich auf den Abschnitt Studienverwaltung und den Abschnitt Überprüfung beziehen.
Studienverwaltungsfunktionen, die sich auf die JMPClinicalStudyMangerAPI . beziehen
Review/Review Builder-Funktionen, die sich auf JMPClinicalReviewAPI beziehen
Die API soll Routineaufgaben übernehmen und automatisieren, wie das Aktualisieren von Studien mit neuen Metadaten oder das Hinzufügen/Entfernen von Inhalten zu einem Bericht innerhalb einer Überprüfungsvorlage. Hier ist ein Link für die JMPClinicalStudyManagerAPI Funktionen und ein weiterer Link für die JMPClinicalReviewAPI Funktionen als Referenz.
Was also kann diese JMPClinicalStudyMangerAPI-API für uns tun? Es stellt uns zwei Sätze von Funktionen zur Verfügung: Get-Funktionen (die Informationen über die Studien abrufen) und Manipulationsfunktionen (die Studien hinzufügen, entfernen oder aktualisieren). Hier ist eine Tabelle, was mit der grundlegenden Syntax zum Aufrufen dieser Funktion möglich ist. Der Doppelpunkt (:) trennt den API-Aufruf und den Funktionsaufruf. Einige der Funktionen haben Eingaben und/oder Rückgaben. Unter den obigen Links finden Sie Details dazu, was als Eingabe und Rückgabe erwartet wird.
Studienmanagement-API
|
Informationen abrufen Funktionen
|
Lernfunktionen manipulieren
|
Liste der Studiennamen abrufen:
JMPClinicalStudyManagerAPI:getStudyList
|
Studie hinzufügen:
JMPClinicalStudyManagerAPI:addStudy
|
SDTM-Ordnerpfad abrufen:
JMPClinicalStudyManagerAPI:getSDTMFolder
|
Studienmetadaten aktualisieren:
JMPClinicalStudyManagerAPI:refreshStudies
|
ADaM-Ordnerpfad abrufen:
JMPClinicalStudyManagerAPI:getADaMFolder
|
Studie löschen:
JMPClinicalStudyManagerAPI:deleteStudies
|
Get Date Studie wurde hinzugefügt:
JMPClinicalStudyManagerAPI:getInitialDate
|
Studie mit einem neuen Snapshot aktualisieren:
JMPClinicalStudyManagerAPI:updateSnapshot
|
Datum abrufen Studie wurde zuletzt aktualisiert:
JMPClinicalStudyManagerAPI:getLastUpdatedDate
|
Studiendatenordner ändern:
JMPClinicalStudyManagerAPI:changeFolders
|
Status „Snapshot aktiviert“ abrufen:
JMPClinicalStudyManagerAPI:getEnableSnapshot
|
Patientenprofildaten vorberechnen:
JMPClinicalStudyManagerAPI:precomputeProfileData
|
Schnappschussnummer abrufen:
JMPClinicalStudyManagerAPI:getSnapshotNumber
|
|
Liste der erkannten Domains abrufen:
JMPClinicalStudyManagerAPI:getDomainList
|
|
Dateigröße auf der Festplatte abrufen:
JMPClinicalStudyManagerAPI:getSizeOnDisk
|
|
Rufen Sie die Benutzer-ID des Windows-Betriebssystems ab, die die Studie erstellt/hinzugefügt hat:
JMPClinicalStudyManagerAPI:getCreatedBy
|
|
Rufen Sie die Benutzer-ID des Windows-Betriebssystems ab, die die Studie zuletzt aktualisiert hat:
JMPClinicalStudyManagerAPI:getLastUpdatedBy
|
|
Betrachten wir nun die zweite Kategorie, Review-Funktionen. Dieser hat auch eine Reihe von Funktionen zum Abrufen und Bearbeiten, außer für Rezensionen und Berichte.
Überprüfungs-API
|
Informationen abrufen Funktionen
|
Bericht-/Überprüfungsfunktionen manipulieren
|
Holen Sie sich eine Referenz zum Review Builder:
JMPClinicalReviewAPI:getReviewBuilder
|
Review Builder schließen:
JMPClinicalReviewAPI:closeReviewBuilder
|
Rufen Sie die ID und den Titel des Review-Viewers/Builders ab:
JMPClinicalReviewAPI:getReviewViewerIDsAndTitles
|
Review-Vorlage öffnen:
JMPClinicalReviewAPI:openReviewTemplate
|
Holen Sie sich einen Verweis auf den Review Viewer:
JMPClinicalReviewAPI:getReviewViewer
|
Fügen Sie einen Bericht zum Review Builder hinzu:
JMPClinicalReviewAPI:Bericht hinzufügen
|
Inhaltsverzeichnis des Review Viewer/Builders abrufen:
JMPClinicalReviewAPI:getReviewTableOfContents
|
Berichtsformular Review Builder nach Titel entfernen:
JMPClinicalReviewAPI:removeReportByReportTitle
|
Rufen Sie eine Liste der Berichts-IDs ab:
JMPClinicalReviewAPI:getReportIDList
|
Bericht im Review Builder nach Titel ausführen:
JMPClinicalReviewAPI:runReportByReportTitle
|
Rufen Sie eine Liste der Berichtstitel ab:
JMPClinicalReviewAPI:getReportTitleList
|
Führen Sie alle Berichte im Review Builder aus:
JMPClinicalReviewAPI:runAllReports
|
Rufen Sie einen Verweis auf einen Bericht nach ID ab:
JMPClinicalReviewAPI:getReportByID
|
Inhalte des Review Builder als Review speichern:
JMPClinicalReviewAPI:saveReview
|
Rufen Sie einen Verweis auf einen Bericht nach Titel ab:
JMPClinicalReviewAPI:getReportByTitle
|
Öffnen Sie eine Rezension in der Rezensionsanzeige:
JMPClinicalReviewAPI:openReview
|
Berichtsdetails nach Titel abrufen:
JMPClinicalReviewAPI:getReportDetailsByTitle
|
Abschnitt in einen Bericht einfügen:
JMPClinicalReviewAPI:insertSectionIntoReportByTitleAndSectionName
|
Holen Sie sich einen Verweis auf die Berichtsergebnisse:
JMPClinicalReviewAPI:getReportResultsByTitle
|
Abschnitt aus einem Bericht entfernen:
JMPClinicalReviewAPI:removeSectionFromReportByTitleAndSectionName
|
Holen Sie sich einen Verweis auf den Berichtsabschnitt:
JMPClinicalReviewAPI:getReportSectionByTitleAndSectionName
|
Am Ende des Berichtsabschnitts hinzufügen:
JMPClinicalReviewAPI:appendDisplayObjectToReportSectionByTitleAndSectionName
|
Liste der im Bericht verwendeten Datentabellen abrufen:
JMPClinicalReviewAPI:getDataTablesForSectionByTitleAndSectionName
|
Am Anfang des Berichtsabschnitts hinzufügen:
JMPClinicalReviewAPI:prependDisplayObjectToReportSectionByTitleAndSectionName
|
Jetzt haben wir die verschiedenen Funktionen und ihre Möglichkeiten aufgelistet. Jetzt ist es an der Zeit, die grundlegende Syntax ihrer Verwendung zu zeigen. Die Grundform ist diese:
JMPClinical<CATEGORY>API:<FUNCTION> ({argument(s)}, {namespace}, completeListenerFunction());</FUNCTION></CATEGORY>
Ich habe den grundlegenden Aufruf der API-Funktionen für das Studienmanagement oben bereits vorgestellt, als ich auf die JMPClinicalStudyManagerAPI verwiesen habe. Wenn ich also die Metadaten der registrierten Studien aktualisieren möchte, sieht das in etwa so aus:
JMPClinicalStudyManager:refreshStudies ({studyList},{},{});
Wir werden dies genauer analysieren und in den nächsten Beiträgen über allgemeine Anwendungen sprechen. Im Moment wollte ich vorstellen, was verfügbar ist und wie man es im Allgemeinen innerhalb eines JSL-Skripts aufruft. Der nächste Beitrag befasst sich mit einem Beispiel der Study Management API, spricht mehr über Namespace und completeListener-Teile des API-Aufrufs und beginnt damit, ihn in JSL zu packen und JSL darin zu verwenden.
Bis zum nächsten Post, pass auf dich auf!