• ???? ?????????? ????
Buenos días, 🙂
Me gustaría plantear una duda, que tiene que ver cómo gestionar %GlobalCharacterStream que representan JSONS.
Gracias por leer esta cuestión, gracias por su ayuda, y gracias por su tiempo y atención.
En concreto, en un cierto Proceso, estábamos consultando a 2 Operaciones, cuya respuesta convertíamos a una Property llamada informesAutorizadosRangoFechas la cual es %GlobalCharacterStream cuyo contenido es un JSON con la misma estructura.
Es decir, a nivel visual, un ejemplo concreto es el siguiente:
Respuesta de la Operación 1: el contenido de la Property informesAutorizadosRangoFechas es:
{
"resourceType": "Bundle",
"type": "searchset",
"entry": [
{
"resource": [
{
"resourceType": "ServiceRequest",
"contained": [
{
"resourceType": "Practitioner",
"id": "id",
"name": [
{
"text": "text",
"family": " ",
"given": [
"given"
],
"extension": [
{
"url": "url",
"valueString": ""
},
{
"url": "url",
"valueString": ""
}
]
}
]
},
{
"resourceType": "Patient",
"id": "id",
"name": [
{
"text": "text",
"family": "family",
"given": [
"given"
],
"extension": [
{
"url": "url",
"valueString": "valueString"
},
{
"url": "url",
"valueString": "valueString"
}
]
}
],
"identifier": [
{
"type": [
{
"text": "text",
"value": "value"
},
{
"text": "MR",
"value": "value"
},
{
"text": "JHN",
"value": "value"
},
{
"text": "NIIP",
"value": ""
},
{
"text": "PRN",
"value": "value"
}
]
}
],
"telecom": [
{
"value": "928000001"
}
],
"gender": "male",
"birthDate": "birthDate"
},
{
"resourceType": "QuestionnaireResponse",
"id": "cuestionario1",
"identifier": [
{
"value": "cuestionario 1"
}
],
"item": [
{
"definition": "pregunta 1",
"text": "Zona",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 2",
"text": "Alertas",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 3",
"text": "Tipo Estudio",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 4",
"text": "Abierta",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 5",
"text": "Anestesia",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 6",
"text": "Contraste",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 7",
"text": "Oxígeno",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 8",
"text": "Sospecha Diagnóstica",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 9",
"text": "Datos Clínicos",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 10",
"text": "Observaciones",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 11",
"text": "Solo RADIOLOGO (para TER)",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 12",
"text": "Solo RADIOLOGO (para administ)",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 13",
"text": "Circunstancia",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 14",
"text": "Forma de acceso",
"answer": [
{
"valueString": "answer"
}
]
}
]
}
],
"extension": [
{
"url": "AMBITO",
"valueInteger": "CON"
},
{
"url": "IMAGEN",
"valueInteger": "0"
},
{
"url": "INFORME",
"valueInteger": "1"
},
{
"url": "CENTROSOLICITANTE",
"valueCoding": {
"code": "0535001830",
"display": "0535001830"
}
}
],
"identifier": [
{
"type": [
{
"text": "NORDEN",
"value": "NORDEN"
},
{
"text": "IDPETICION",
"value": "IDPETICION"
},
{
"text": "EPISODIO",
"value": "EPISODIO"
}
]
}
],
"status": "AUTORIZADA",
"code": {
"coding": [
{
"code": "D.56"
}
],
"text": "RM ABDOMEN SIN Y CON CONTRASTE"
},
"subject": {
"reference": "#reference"
},
"occurrenceDateTime": "2023-10-10",
"authoredOn": "2023-10-10 00:00:00.0",
"requester": {
"reference": "#reference"
},
"locationCode": [
{
"text": "text"
}
],
"supportingInfo": [
{
"reference": "#reference"
}
],
"note": ""
}
]
}
]
}
JSONJSON
Respuesta de la Operación 2: el contenido de la Property informesAutorizadosRangoFechas es:
{
"resourceType": "Bundle",
"type": "searchset",
"entry": [
{
"resource": [
{
"resourceType": "ServiceRequest",
"contained": [
{
"resourceType": "Practitioner",
"id": "id",
"name": [
{
"text": "text",
"family": "family",
"given": [
"given"
],
"extension": [
{
"url": "first-surname",
"valueString": "valueString"
},
{
"url": "second-surname",
"valueString": "valueString"
}
]
}
]
},
{
"resourceType": "Patient",
"id": "id",
"name": [
{
"text": "text",
"family": "family",
"given": [
"given"
],
"extension": [
{
"url": "first-surname",
"valueString": "first-surname"
},
{
"url": "second-surname",
"valueString": "second-surname"
}
]
}
],
"identifier": [
{
"type": [
{
"text": "NNESP",
"value": "value"
},
{
"text": "MR",
"value": "value"
},
{
"text": "JHN",
"value": "value"
},
{
"text": "NIIP",
"value": "value"
}
]
}
],
"telecom": [
{
"value": "629893558"
}
],
"gender": "male",
"birthDate": "birthDate"
},
{
"resourceType": "QuestionnaireResponse",
"id": "cuestionario1",
"identifier": [
{
"value": "cuestionario 1"
}
],
"item": [
{
"definition": "pregunta 1",
"text": "text",
"answer": [
{
"valueString": "No"
}
]
},
{
"definition": "pregunta 2",
"text": "text",
"answer": [
{
"valueString": "No"
}
]
},
{
"definition": "pregunta 3",
"text": "text",
"answer": [
{
"valueString": "NO"
}
]
},
{
"definition": "pregunta 4",
"text": "text",
"answer": [
{
"valueString": "NO"
}
]
},
{
"definition": "pregunta 5",
"text": "text",
"answer": [
{
"valueString": "NO"
}
]
},
{
"definition": "pregunta 6",
"text": "text",
"answer": [
{
"valueString": "No"
}
]
},
{
"definition": "pregunta 7",
"text": "text",
"answer": [
{
"valueString": "No"
}
]
},
{
"definition": "pregunta 8",
"text": "text",
"answer": [
{
"valueString": "No"
}
]
},
{
"definition": "pregunta 9",
"text": "text",
"answer": [
{
"valueString": "No"
}
]
},
{
"definition": "pregunta 10",
"text": "text",
"answer": [
{
"valueString": "NO"
}
]
},
{
"definition": "pregunta 11",
"text": "text",
"answer": [
{
"valueString": "NO"
}
]
},
{
"definition": "pregunta 12",
"text": "text",
"answer": [
{
"valueString": "A4.05 - Estudio básico"
}
]
},
{
"definition": "pregunta 13",
"text": "text",
"answer": [
{
"valueString": "Derecha"
}
]
},
{
"definition": "pregunta 14",
"text": "text",
"answer": [
{
"valueString": "Procedimiento diagnóstico de control"
}
]
},
{
"definition": "pregunta 15",
"text": "text",
"answer": [
{
"valueString": ""
}
]
},
{
"definition": "pregunta 16",
"text": "text",
"answer": [
{
"valueString": ""
}
]
},
{
"definition": "pregunta 17",
"text": "text",
"answer": [
{
"valueString": ""
}
]
},
{
"definition": "pregunta 18",
"text": "text",
"answer": [
{
"valueString": ""
}
]
}
]
}
],
"extension": [
{
"url": "AMBITO",
"valueInteger": "valueInteger"
},
{
"url": "IMAGEN",
"valueInteger": "0"
},
{
"url": "INFORME",
"valueInteger": "0"
},
{
"url": "CENTROSOLICITANTE",
"valueCoding": {
"code": "0535001838",
"display": "display"
}
}
],
"identifier": [
{
"type": [
{
"text": "NORDEN",
"value": "value"
},
{
"text": "IDPETICION",
"value": "value"
}
]
}
],
"status": "Incidencia Finalizada",
"code": {
"coding": [
{
"code": "code"
}
],
"text": "RM DE MUÑECA SIN/CON CONTRASTE"
},
"subject": {
"reference": "#reference"
},
"occurrenceDateTime": "2022-06-27",
"authoredOn": "",
"requester": {
"reference": "#reference"
},
"locationCode": [
{
"text": "text"
}
],
"supportingInfo": [
{
"reference": "#reference"
}
],
"note": "note"
}
]
}
]
}
JSONJSON
La necesidad es la siguiente: unir a la respuesta de la Operación 1, la Respuesta de la Operación 2, de tal forma que los valores del "resource" de la respuesta 2 estén debajo de los valores del "resource" de la respuesta 1; es decir, que la estructura JSON resultante sea válida.
A modo de ejemplo concreto he realizado manualmente la unión que se necesitaría:
{
"resourceType": "Bundle",
"type": "searchset",
"entry": [
{
"resource": [
{
"resourceType": "ServiceRequest",
"contained": [
{
"resourceType": "Practitioner",
"id": "id",
"name": [
{
"text": "text",
"family": " ",
"given": [
"given"
],
"extension": [
{
"url": "url",
"valueString": ""
},
{
"url": "url",
"valueString": ""
}
]
}
]
},
{
"resourceType": "Patient",
"id": "id",
"name": [
{
"text": "text",
"family": "family",
"given": [
"given"
],
"extension": [
{
"url": "url",
"valueString": "valueString"
},
{
"url": "url",
"valueString": "valueString"
}
]
}
],
"identifier": [
{
"type": [
{
"text": "text",
"value": "value"
},
{
"text": "MR",
"value": "value"
},
{
"text": "JHN",
"value": "value"
},
{
"text": "NIIP",
"value": ""
},
{
"text": "PRN",
"value": "value"
}
]
}
],
"telecom": [
{
"value": "928000001"
}
],
"gender": "male",
"birthDate": "birthDate"
},
{
"resourceType": "QuestionnaireResponse",
"id": "cuestionario1",
"identifier": [
{
"value": "cuestionario 1"
}
],
"item": [
{
"definition": "pregunta 1",
"text": "Zona",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 2",
"text": "Alertas",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 3",
"text": "Tipo Estudio",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 4",
"text": "Abierta",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 5",
"text": "Anestesia",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 6",
"text": "Contraste",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 7",
"text": "Oxígeno",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 8",
"text": "Sospecha Diagnóstica",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 9",
"text": "Datos Clínicos",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 10",
"text": "Observaciones",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 11",
"text": "Solo RADIOLOGO (para TER)",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 12",
"text": "Solo RADIOLOGO (para administ)",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 13",
"text": "Circunstancia",
"answer": [
{
"valueString": "answer"
}
]
},
{
"definition": "pregunta 14",
"text": "Forma de acceso",
"answer": [
{
"valueString": "answer"
}
]
}
]
}
],
"extension": [
{
"url": "AMBITO",
"valueInteger": "CON"
},
{
"url": "IMAGEN",
"valueInteger": "0"
},
{
"url": "INFORME",
"valueInteger": "1"
},
{
"url": "CENTROSOLICITANTE",
"valueCoding": {
"code": "0535001830",
"display": "0535001830"
}
}
],
"identifier": [
{
"type": [
{
"text": "NORDEN",
"value": "NORDEN"
},
{
"text": "IDPETICION",
"value": "IDPETICION"
},
{
"text": "EPISODIO",
"value": "EPISODIO"
}
]
}
],
"status": "AUTORIZADA",
"code": {
"coding": [
{
"code": "D.56"
}
],
"text": "RM ABDOMEN SIN Y CON CONTRASTE"
},
"subject": {
"reference": "#reference"
},
"occurrenceDateTime": "2023-10-10",
"authoredOn": "2023-10-10 00:00:00.0",
"requester": {
"reference": "#reference"
},
"locationCode": [
{
"text": "text"
}
],
"supportingInfo": [
{
"reference": "#reference"
}
],
"note": ""
},
{
"resourceType": "ServiceRequest",
"contained": [
{
"resourceType": "Practitioner",
"id": "id",
"name": [
{
"text": "text",
"family": "family",
"given": [
"given"
],
"extension": [
{
"url": "first-surname",
"valueString": "valueString"
},
{
"url": "second-surname",
"valueString": "valueString"
}
]
}
]
},
{
"resourceType": "Patient",
"id": "id",
"name": [
{
"text": "text",
"family": "family",
"given": [
"given"
],
"extension": [
{
"url": "first-surname",
"valueString": "first-surname"
},
{
"url": "second-surname",
"valueString": "second-surname"
}
]
}
],
"identifier": [
{
"type": [
{
"text": "NNESP",
"value": "value"
},
{
"text": "MR",
"value": "value"
},
{
"text": "JHN",
"value": "value"
},
{
"text": "NIIP",
"value": "value"
}
]
}
],
"telecom": [
{
"value": "629893558"
}
],
"gender": "male",
"birthDate": "birthDate"
},
{
"resourceType": "QuestionnaireResponse",
"id": "cuestionario1",
"identifier": [
{
"value": "cuestionario 1"
}
],
"item": [
{
"definition": "pregunta 1",
"text": "text",
"answer": [
{
"valueString": "No"
}
]
},
{
"definition": "pregunta 2",
"text": "text",
"answer": [
{
"valueString": "No"
}
]
},
{
"definition": "pregunta 3",
"text": "text",
"answer": [
{
"valueString": "NO"
}
]
},
{
"definition": "pregunta 4",
"text": "text",
"answer": [
{
"valueString": "NO"
}
]
},
{
"definition": "pregunta 5",
"text": "text",
"answer": [
{
"valueString": "NO"
}
]
},
{
"definition": "pregunta 6",
"text": "text",
"answer": [
{
"valueString": "No"
}
]
},
{
"definition": "pregunta 7",
"text": "text",
"answer": [
{
"valueString": "No"
}
]
},
{
"definition": "pregunta 8",
"text": "text",
"answer": [
{
"valueString": "No"
}
]
},
{
"definition": "pregunta 9",
"text": "text",
"answer": [
{
"valueString": "No"
}
]
},
{
"definition": "pregunta 10",
"text": "text",
"answer": [
{
"valueString": "NO"
}
]
},
{
"definition": "pregunta 11",
"text": "text",
"answer": [
{
"valueString": "NO"
}
]
},
{
"definition": "pregunta 12",
"text": "text",
"answer": [
{
"valueString": "A4.05 - Estudio básico"
}
]
},
{
"definition": "pregunta 13",
"text": "text",
"answer": [
{
"valueString": "Derecha"
}
]
},
{
"definition": "pregunta 14",
"text": "text",
"answer": [
{
"valueString": "Procedimiento diagnóstico de control"
}
]
},
{
"definition": "pregunta 15",
"text": "text",
"answer": [
{
"valueString": ""
}
]
},
{
"definition": "pregunta 16",
"text": "text",
"answer": [
{
"valueString": ""
}
]
},
{
"definition": "pregunta 17",
"text": "text",
"answer": [
{
"valueString": ""
}
]
},
{
"definition": "pregunta 18",
"text": "text",
"answer": [
{
"valueString": ""
}
]
}
]
}
],
"extension": [
{
"url": "AMBITO",
"valueInteger": "valueInteger"
},
{
"url": "IMAGEN",
"valueInteger": "0"
},
{
"url": "INFORME",
"valueInteger": "0"
},
{
"url": "CENTROSOLICITANTE",
"valueCoding": {
"code": "0535001838",
"display": "display"
}
}
],
"identifier": [
{
"type": [
{
"text": "NORDEN",
"value": "value"
},
{
"text": "IDPETICION",
"value": "value"
}
]
}
],
"status": "Incidencia Finalizada",
"code": {
"coding": [
{
"code": "code"
}
],
"text": "RM DE MUÑECA SIN/CON CONTRASTE"
},
"subject": {
"reference": "#reference"
},
"occurrenceDateTime": "2022-06-27",
"authoredOn": "",
"requester": {
"reference": "#reference"
},
"locationCode": [
{
"text": "text"
}
],
"supportingInfo": [
{
"reference": "#reference"
}
],
"note": "note"
}
]
}
]
}
JSONJSON
Por favor ¿de qué forma ustedes harían esta lógica? Lo pregunto porque quizá halla una forma estándar, sólida, robusta, recomendada, sugerida y aconsejable, para realizar este tipo de lógica.
Gracias por leer esta cuestión, gracias por su ayuda, y gracias por su tiempo y atención.
🙂
¡Hola @Yone Moreno!
Quizás te interese ver esta serie de artículos en la que mostramos como trabajar con mensajes FHIR como son los de tu ejemplo sin necesidad de contar con repositorio FHIR.
https://es.community.intersystems.com/post/usando-fhir-adapter-para-ofre...
Te ayudará a familiarizarte con el manejo de los mismos.
Gracias por la ayuda, y gracias por la respuesta @Luis Angel Pérez Ramos