Clínica JMP fue lanzado hace 11 años específicamente para el análisis y revisión de ensayos clínicos en curso centrados en datos estandarizados y estructurados. La intención era que un revisor recibiera datos para su revisión en intervalos regulares (cada semana o cada mes) para buscar señales de seguridad y / o eficacia utilizando informes preprogramados, lo que le permite al revisor auto-servir y profundizar en los datos sobre -demanda. La esperanza era acelerar el proceso de revisión y descubrir anomalías que, de otro modo, podrían pasarse por alto al mirar tablas, listados y figuras estáticas.
Además, el objetivo del software era aliviar la carga que pesa sobre los equipos de programación que producen los datos solicitados y los informes estandarizados para los revisores. Esto requirió mucho tiempo para ejecutar programas o editar programas / scripts / macro para adaptarse a las necesidades de los revisores y con frecuencia. Los grupos de programación y bioestadística normalmente quieren centrarse en los datos y los informes que son exclusivos del estudio en lugar de la tabla o gráfico habitual que es bastante consistente de un estudio a otro, lo que les permite prestar una atención más sólida y sin distracciones a las anomalías específicas del estudio que requieren más conocimientos estadísticos o algorítmicos.
En su mayor parte, JMP Clinical cumplió con esos objetivos, a menos que estemos hablando de organizaciones que tienen muchos estudios que necesitan ser monitoreados y / o que tienen actualizaciones frecuentes de datos. Esto impone una nueva carga a los equipos de gestión de datos y bioestadística para actualizar los estudios dentro de JMP Clinical o coloca la carga sobre los revisores que no eran tan competentes en el proceso o no tenían el tiempo. También fue de interés la posibilidad de modificar algunos de los informes dentro de JMP Clinical y / o ejecutar la misma plantilla de revisión de forma programada. La demanda de automatización y extensión de las capacidades de JMP Clinical se convirtió en una solicitud frecuente.
Ingrese las API de JMP Clinical. Alrededor de JMP Clinical 6, presentamos el marco y la infraestructura para hacer posible el acceso basado en API a funciones / procesos comunes mediante programación. En JMP Clinical 7, las API se lanzaron y se pusieron a disposición mediante JMP Scripting Language (JSL). En la versión 8 (la más reciente), se lanzaron más capacidades. Esta publicación no entra en los detalles del desarrollo de las API. En cambio, se centra en el uso práctico de ellos para que pueda aprovecharlos.
Compartiré una serie de publicaciones sobre cómo invocar y usar las API. Comenzamos de manera simple presentando la sintaxis básica y su uso. Luego, avanzamos hacia usos más sofisticados mientras usamos JSL. Y finalmente, combinamos las dos categorías de API invocadas dentro de algunas JSL.
Para aquellos que no estén familiarizados con los términos Estudio, Revisión, Informe y Plantilla de revisión en el contexto de JMP Clinical, consulte este Enlace para familiarizarse. Además, aquellos que no estén familiarizados con JSL deben leer y aprender más en este Enlace . Se requiere conocimiento de ambos para comprender el uso de las API.
Para esta publicación, comencemos con las dos categorías principales y lo que es posible. Las dos categorías principales son: funciones relacionadas con la gestión de estudios (JMPClinicalStudyManagerAPI) y funciones relacionadas con la revisión (JMPClinicalReviewAPI). La idea es replicar lo que se puede hacer dentro de la interfaz de usuario (principalmente los clics de los botones) donde el usuario no necesita una decisión (como actualizar los metadatos de los estudios con nuevos datos o abrir una plantilla de revisión y ejecutarla para un estudio específico). A continuación, se muestran un par de imágenes que resaltan los botones relacionados con la sección Gestión del estudio y la sección Revisión.
Funciones de gestión de estudios que se relacionan con JMPClinicalStudyMangerAPI
Revisar / revisar funciones del generador relacionadas con JMPClinicalReviewAPI
La API está destinada a tomar tareas rutinarias y automatizarlas, como actualizar estudios con nuevos metadatos o agregar / eliminar contenido de un informe dentro de una plantilla de revisión. Aquí hay un enlace para JMPClinicalStudyManagerAPI funciones y otro enlace para la JMPClinicalReviewAPI funciones de referencia.
Entonces, ¿qué puede hacer esta API JMPClinicalStudyMangerAPI por nosotros? Nos proporciona dos conjuntos de funciones: obtener funciones (las que obtienen información sobre los estudios) y manipular funciones (las que agregan, eliminan o actualizan estudios). Aquí hay una tabla de lo que es posible con la sintaxis básica para llamar a esa función. Los dos puntos (:) separan la llamada a la API y la llamada a la función. Algunas de las funciones tienen entrada y / o retornos. Consulte los enlaces anteriores para obtener detalles sobre lo que se espera como entrada y devolución.
API de gestión de estudios
|
Obtener funciones de información
|
Manipular funciones de estudio
|
Obtenga una lista de los nombres de los estudios:
JMPClinicalStudyManagerAPI: getStudyList
|
Agregar estudio:
JMPClinicalStudyManagerAPI: addStudy
|
Obtener la ruta de la carpeta SDTM:
JMPClinicalStudyManagerAPI: getSDTMFolder
|
Actualizar los metadatos del estudio:
JMPClinicalStudyManagerAPI: refreshStudies
|
Obtenga la ruta de la carpeta ADaM:
JMPClinicalStudyManagerAPI: getADaMFolder
|
Eliminar estudio:
JMPClinicalStudyManagerAPI: deleteStudies
|
Obtener la fecha en que se agregó el estudio:
JMPClinicalStudyManagerAPI: getInitialDate
|
Actualizar el estudio con una nueva instantánea:
JMPClinicalStudyManagerAPI: updateSnapshot
|
Obtener la fecha de última actualización del estudio:
JMPClinicalStudyManagerAPI: getLastUpdatedDate
|
Cambiar las carpetas de datos del estudio:
JMPClinicalStudyManagerAPI: changeFolders
|
Obtener estado de instantánea habilitada:
JMPClinicalStudyManagerAPI: getEnableSnapshot
|
Calcular previamente los datos del perfil del paciente:
JMPClinicalStudyManagerAPI: precomputeProfileData
|
Obtener número de instantánea:
JMPClinicalStudyManagerAPI: getSnapshotNumber
|
|
Obtenga una lista de dominios reconocidos:
JMPClinicalStudyManagerAPI: getDomainList
|
|
Obtener el tamaño del archivo en el disco:
JMPClinicalStudyManagerAPI: getSizeOnDisk
|
|
Obtenga el ID de usuario del sistema operativo Windows que creó / agregó el estudio:
JMPClinicalStudyManagerAPI: getCreatedBy
|
|
Obtenga el ID de usuario del sistema operativo Windows que actualizó el estudio por última vez:
JMPClinicalStudyManagerAPI: getLastUpdatedBy
|
|
Ahora veamos la segunda categoría, Funciones de revisión. Este también tiene un conjunto de funciones de obtención y manipulación, pero para revisiones e informes.
Revisar API
|
Obtener funciones de información
|
Manipular funciones de informe / revisión
|
Obtenga una referencia al Review Builder:
JMPClinicalReviewAPI: getReviewBuilder
|
Cerrar Review Builder:
JMPClinicalReviewAPI: closeReviewBuilder
|
Obtenga el ID y el título del visor / creador de reseñas:
JMPClinicalReviewAPI: getReviewViewerIDsAndTitles
|
Plantilla de revisión abierta:
JMPClinicalReviewAPI: openReviewTemplate
|
Obtenga una referencia al visor de reseñas:
JMPClinicalReviewAPI: getReviewViewer
|
Agregar un informe a Review Builder:
JMPClinicalReviewAPI: addReport
|
Obtenga la tabla de contenido del Visor / Creador de reseñas:
JMPClinicalReviewAPI: getReviewTableOfContents
|
Eliminar el Generador de reseñas de formularios de informes por título:
JMPClinicalReviewAPI: removeReportByReportTitle
|
Obtenga una lista de ID de informes:
JMPClinicalReviewAPI: getReportIDList
|
Ejecutar informe en Review Builder por título:
JMPClinicalReviewAPI: runReportByReportTitle
|
Obtenga una lista de títulos de informes:
JMPClinicalReviewAPI: getReportTitleList
|
Ejecute todos los informes en Review Builder:
JMPClinicalReviewAPI: runAllReports
|
Obtenga una referencia a un informe por ID:
JMPClinicalReviewAPI: getReportByID
|
Guardar el contenido de Review Builder como una revisión:
JMPClinicalReviewAPI: saveReview
|
Obtenga una referencia a un informe por título:
JMPClinicalReviewAPI: getReportByTitle
|
Abra una reseña en el visor de reseñas:
JMPClinicalReviewAPI: openReview
|
Obtener detalles del informe por título:
JMPClinicalReviewAPI: getReportDetailsByTitle
|
Insertar sección en un informe:
JMPClinicalReviewAPI: insertSectionIntoReportByTitleAndSectionName
|
Obtenga una referencia a los resultados del informe:
JMPClinicalReviewAPI: getReportResultsByTitle
|
Eliminar sección de un informe:
JMPClinicalReviewAPI: removeSectionFromReportByTitleAndSectionName
|
Obtenga una referencia a la sección de informes:
JMPClinicalReviewAPI: getReportSectionByTitleAndSectionName
|
Agregar al final de la sección del informe:
JMPClinicalReviewAPI: appendDisplayObjectToReportSectionByTitleAndSectionName
|
Obtenga una lista de las tablas de datos utilizadas en el informe:
JMPClinicalReviewAPI: getDataTablesForSectionByTitleAndSectionName
|
Agregar al comienzo de la sección del informe:
JMPClinicalReviewAPI: prependDisplayObjectToReportSectionByTitleAndSectionName
|
Así que ahora tenemos las diferentes funciones y lo que pueden hacer enumeradas. Ahora es el momento de mostrar la sintaxis básica de su uso. La forma básica es esta:
JMPClinical<CATEGORY>API:<FUNCTION> ({argument(s)}, {namespace}, completeListenerFunction());</FUNCTION></CATEGORY>
Ya presenté la llamada básica a las funciones API relacionadas con la gestión de estudios anteriores cuando me referí a JMPClinicalStudyManagerAPI. Entonces, si quiero actualizar los metadatos de los estudios registrados, se verá así:
JMPClinicalStudyManager:refreshStudies ({studyList},{},{});
Analizaremos esto más y hablaremos sobre usos comunes en el siguiente conjunto de publicaciones. Por ahora, quería presentar lo que está disponible y cómo invocarlo en general dentro de un script JSL. La siguiente publicación tratará sobre un ejemplo de la API de administración de estudios, hablando más sobre el espacio de nombres y las partes completeListener de la llamada API y comenzar a envolverlo en JSL, así como a usar JSL dentro de él.
Hasta el próximo post, ¡cuídate!