En esta página se incluyen ejemplos de casos prácticos, desde sencillos hasta complejos, que muestran cuándo y cómo configurar un analizador de esquemas personalizado en un almacén HL7v2. Cada caso práctico contiene un mensaje HL7v2 en el que se basa el analizador de esquemas personalizados.
Terminador de segmentos personalizado y campo personalizado
En los ejemplos de esta sección se usa un mensaje de ejemplo que no es estándar por los siguientes motivos:
- Los delimitadores de segmento del mensaje de ejemplo son saltos de línea (
\n) en lugar de retornos de carro estándar (\r). - El mensaje de ejemplo tiene un segmento de software (
SFT) con un subcampo adicional: un campo personalizado que especifica la URLhttps://example.com/healthcare-api/.
MSH|^~\&|My EHR|My Test Facility||My EHR Facility|20150926140551||ORU^R01^ORU_R01|My-LOI_5.0_1.1-NG|T|2.5.1|||AL|AL|||||\n
SFT|Google^D|v1|Healthcare API|1||20190601|https://example.com/healthcare-api/\n
PID|1||PATID5421^^^My MPI^MR||Zhang^Sally^Brian^^^^L||19840611|F||2106-3^White^HL70005|123 Main Street^^Mountain Springs^CO^80439^^H||^PRN^PH^^^203^2290210|||||||||N^Not Hispanic or Latino^HL70189\n
ORC|RE|833582639|3266238193||CM||||20101234567890\n
OBR|1|833582639|3266238193|us-0005^Vital Signs^WinPath^^||20101234567890|20101234567890|||||||20101234567890||||||||20101234567890|||F||1\n
OBX|1|NM|tt-0005-07^MDC_PULS_RATE_NON_INV^MDC^^||52.31|MDC_DIM_BEAT_PER_MIN|50-200||||F|||20101234567890||\n
OBX|2|NM|tt-0005-12^PAIN LEVEL^L^^||1.71|/10|1-10||||F|||20101234567890||\n
OBX|3|NM|tt-0005-09^MDC_TEMP^MDC^^||36.22|MDC_DIM_DEGC|36-38||||F|||20101234567890||\n
Actualizar un almacén HL7v2 con el terminador de segmentos personalizado
Debe especificar el terminador de segmentos si sus mensajes usan un terminador no estándar, como el del mensaje de ejemplo que se proporciona en Terminador de segmentos personalizado y campo personalizado.
El mensaje de ejemplo usa el carácter no estándar \n como terminador de segmento.
En los siguientes ejemplos se muestra cómo configurar segmentTerminator en ParserConfig al crear un almacén HL7v2.
El terminador de segmentos se ha definido como Cg==, que es la codificación en base64 de \n.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos principal
- DATASET_ID: el conjunto de datos superior del almacén HL7v2
- HL7V2_STORE_ID: el ID del almacén HL7v2
Cuerpo JSON de la solicitud:
{
"parserConfig": {
"segmentTerminator": "Cg==""
}
}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json.
Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:
cat > request.json << 'EOF'
{
"parserConfig": {
"segmentTerminator": "Cg==""
}
}
EOFA continuación, ejecuta el siguiente comando para enviar tu solicitud REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json.
Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:
@'
{
"parserConfig": {
"segmentTerminator": "Cg==""
}
}
'@ | Out-File -FilePath request.json -Encoding utf8A continuación, ejecuta el siguiente comando para enviar tu solicitud REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
Actualizar un almacén HL7v2 con el esquema personalizado
Puede actualizar un almacén HL7v2 con un esquema personalizado definido en formato JSON.
Después de configurar un esquema personalizado que incluya el campo adicional en el segmento SFT, puede insertar el mensaje de ejemplo.
Para obtener información sobre cómo especificar un campo personalizado, consulta SchemaPackage.
La configuración especificada en este ejemplo tiene el siguiente comportamiento:
- Reescribe la definición del segmento
SFTpara que el campo de URL sea el campo7. - El filtro
versiondetermina a qué mensajes entrantes se aplica el esquema personalizado en función de un campo del encabezado del segmento del mensaje (MSH). Si no proporcionas un filtroversion, el esquema se aplica a todos los mensajes HL7v2 del almacén HL7v2. En este ejemplo, el segmento personalizadoSFTse aplica cuando el campo de la aplicación de envío contieneMy EHR. - El campo del campo adicional se llama
7para mantener la coherencia con el resto de la especificación. También puedes llamarloURLpara que sea más descriptivo.
Para actualizar la tienda con el esquema personalizado, usa el método projects.locations.datasets.hl7V2Stores.patch.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID de tu Google Cloud proyecto
- LOCATION: la ubicación del conjunto de datos
- DATASET_ID: el conjunto de datos superior del almacén HL7v2
- HL7V2_STORE_ID: el ID del almacén HL7v2
Cuerpo JSON de la solicitud:
{
"parserConfig": {
"schema": {
"schematizedParsingType": "HARD_FAIL",
"types": [
{
"version": [
{
"mshField": "3.1",
"value": "My EHR"
}
],
"type": [
{
"name": "SFT",
"fields": [
{
"name": "1",
"type": "XON",
"minOccurs": 1,
"maxOccurs": 1
},
{
"name": "2",
"type": "ST",
"minOccurs": 1,
"maxOccurs": 1
},
{
"name": "3",
"type": "ST",
"minOccurs": 1,
"maxOccurs": 1
},
{
"name": "4",
"type": "ST",
"minOccurs": 1,
"maxOccurs": 1
},
{
"name": "5",
"type": "TX",
"maxOccurs": 1
},
{
"name": "6",
"type": "DTM",
"maxOccurs": 1
},
{
"name": "7",
"type": "ST",
"maxOccurs": 1
}
]
}
]
}
]
},
"version": "V3"
}
}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json.
Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:
cat > request.json << 'EOF'
{
"parserConfig": {
"schema": {
"schematizedParsingType": "HARD_FAIL",
"types": [
{
"version": [
{
"mshField": "3.1",
"value": "My EHR"
}
],
"type": [
{
"name": "SFT",
"fields": [
{
"name": "1",
"type": "XON",
"minOccurs": 1,
"maxOccurs": 1
},
{
"name": "2",
"type": "ST",
"minOccurs": 1,
"maxOccurs": 1
},
{
"name": "3",
"type": "ST",
"minOccurs": 1,
"maxOccurs": 1
},
{
"name": "4",
"type": "ST",
"minOccurs": 1,
"maxOccurs": 1
},
{
"name": "5",
"type": "TX",
"maxOccurs": 1
},
{
"name": "6",
"type": "DTM",
"maxOccurs": 1
},
{
"name": "7",
"type": "ST",
"maxOccurs": 1
}
]
}
]
}
]
},
"version": "V3"
}
}
EOFA continuación, ejecuta el siguiente comando para enviar tu solicitud REST:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID?updateMask=parser_config.schema"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json.
Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:
@'
{
"parserConfig": {
"schema": {
"schematizedParsingType": "HARD_FAIL",
"types": [
{
"version": [
{
"mshField": "3.1",
"value": "My EHR"
}
],
"type": [
{
"name": "SFT",
"fields": [
{
"name": "1",
"type": "XON",
"minOccurs": 1,
"maxOccurs": 1
},
{
"name": "2",
"type": "ST",
"minOccurs": 1,
"maxOccurs": 1
},
{
"name": "3",
"type": "ST",
"minOccurs": 1,
"maxOccurs": 1
},
{
"name": "4",
"type": "ST",
"minOccurs": 1,
"maxOccurs": 1
},
{
"name": "5",
"type": "TX",
"maxOccurs": 1
},
{
"name": "6",
"type": "DTM",
"maxOccurs": 1
},
{
"name": "7",
"type": "ST",
"maxOccurs": 1
}
]
}
]
}
]
},
"version": "V3"
}
}
'@ | Out-File -FilePath request.json -Encoding utf8A continuación, ejecuta el siguiente comando para enviar tu solicitud REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID?updateMask=parser_config.schema" | Select-Object -Expand Content
V3 recomendada del analizador.
Ingiere y analiza el mensaje HL7v2 con el esquema personalizado
En los siguientes ejemplos se muestra cómo ingerir una versión codificada en base 64 del mensaje HL7v2 de Terminador de segmento personalizado y campo personalizado.
Para ingerir el mensaje HL7v2, usa el método projects.locations.datasets.hl7V2Stores.messages.ingest.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos principal
- DATASET_ID: el conjunto de datos superior del almacén HL7v2
- HL7V2_STORE_ID: el ID del almacén HL7v2
Cuerpo JSON de la solicitud:
{
"message": {
"data": "TVNIfF5+XCZ8TXkgRUhSfE15IFRlc3QgRmFjaWxpdHl8fE15IEVIUiBGYWNpbGl0eXwyMDE1MDkyNjE0MDU1MXx8T1JVXlIwMV5PUlVfUjAxfE15LUxPSV81LjBfMS4xLU5HfFR8Mi41LjF8fHxBTHxBTHx8fHx8ClNGVHxHb29nbGVeRHx2MXxIZWFsdGhjYXJlIEFQSXwxfHwyMDE5MDYwMXxodHRwczovL2V4YW1wbGUuY29tL2hlYWx0aGNhcmUvClBJRHwxfDQwOTAzMzEzMjBeXl5TSU1VTEFUT1IgTVJOXk1STnw0MDkwMzMxMzIwXl5eU0lNVUxBVE9SIE1STl5NUk5+Mjg4ODUyNzE1NF5eXk5IU05CUl5OSFNOTUJSfHxEYXZpc15DaGVsc2VhXl5eTWlzc15eQ1VSUkVOVHx8MjAwOTEwMTcwMDAwMDB8Rnx8fDE4MSBUcmFuc21pc3Npb24gUm9hZF5eTG9uZG9uXl5LRzIyIDlIWF5HQlJeSE9NRXx8MDIwIDgxMjIgOTk0N15IT01FfHx8fHx8fHx8SF5Bc2lhbiBvciBBc2lhbiBCcml0aXNoIC0gSW5kaWFuXl5efHx8fHx8fHwKUFYxfDF8SXxPdGhlcldhcmReTWFpblJvb21eQmVkIDFeU2ltdWxhdGVkIEhvc3BpdGFsXl5CRUReTWFpbiBCdWlsZGluZ140fDI4Ynx8fEMwMDNeQ3VkZHleS2V2aW5eXl5Ecl5eXkRSTkJSXlBSU05MXl5eT1JHRFJ8fHxVUk98fHx8fHx8fHwxMjUxMzI0NzIzMjIzODk0ODc4M15eXl52aXNpdGlkfHx8fHx8fHx8fHx8fHx8fHx8fHx8fEFSUklWRUR8fHwyMDIwMDUwNjE3MDgyMnx8Ck9SQ3xSRXw4MzM1ODI2Mzl8MzI2NjIzODE5M3x8Q018fHx8MjAyMDA1MDYxNzA4MjIKT0JSfDF8ODMzNTgyNjM5fDMyNjYyMzgxOTN8dXMtMDAwNV5WaXRhbCBTaWduc15XaW5QYXRoXl58fDIwMjAwNTA2MTcwODIyfDIwMjAwNTA2MTcwODIyfHx8fHx8fDIwMjAwNTA2MTcwODIyfHx8fHx8fHwyMDIwMDUwNjE3MDgyMnx8fEZ8fDEKT0JYfDF8VFh8dHQtMDAwNS0xMV5PeHlnZW5EZXZeV2VsY2hBbGx5bl5efHxWZW50dXJpfHx8fHx8Rnx8fDIwMjAwNTA2MTcwODIyfHwK"
}
}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json.
Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:
cat > request.json << 'EOF'
{
"message": {
"data": "TVNIfF5+XCZ8TXkgRUhSfE15IFRlc3QgRmFjaWxpdHl8fE15IEVIUiBGYWNpbGl0eXwyMDE1MDkyNjE0MDU1MXx8T1JVXlIwMV5PUlVfUjAxfE15LUxPSV81LjBfMS4xLU5HfFR8Mi41LjF8fHxBTHxBTHx8fHx8ClNGVHxHb29nbGVeRHx2MXxIZWFsdGhjYXJlIEFQSXwxfHwyMDE5MDYwMXxodHRwczovL2V4YW1wbGUuY29tL2hlYWx0aGNhcmUvClBJRHwxfDQwOTAzMzEzMjBeXl5TSU1VTEFUT1IgTVJOXk1STnw0MDkwMzMxMzIwXl5eU0lNVUxBVE9SIE1STl5NUk5+Mjg4ODUyNzE1NF5eXk5IU05CUl5OSFNOTUJSfHxEYXZpc15DaGVsc2VhXl5eTWlzc15eQ1VSUkVOVHx8MjAwOTEwMTcwMDAwMDB8Rnx8fDE4MSBUcmFuc21pc3Npb24gUm9hZF5eTG9uZG9uXl5LRzIyIDlIWF5HQlJeSE9NRXx8MDIwIDgxMjIgOTk0N15IT01FfHx8fHx8fHx8SF5Bc2lhbiBvciBBc2lhbiBCcml0aXNoIC0gSW5kaWFuXl5efHx8fHx8fHwKUFYxfDF8SXxPdGhlcldhcmReTWFpblJvb21eQmVkIDFeU2ltdWxhdGVkIEhvc3BpdGFsXl5CRUReTWFpbiBCdWlsZGluZ140fDI4Ynx8fEMwMDNeQ3VkZHleS2V2aW5eXl5Ecl5eXkRSTkJSXlBSU05MXl5eT1JHRFJ8fHxVUk98fHx8fHx8fHwxMjUxMzI0NzIzMjIzODk0ODc4M15eXl52aXNpdGlkfHx8fHx8fHx8fHx8fHx8fHx8fHx8fEFSUklWRUR8fHwyMDIwMDUwNjE3MDgyMnx8Ck9SQ3xSRXw4MzM1ODI2Mzl8MzI2NjIzODE5M3x8Q018fHx8MjAyMDA1MDYxNzA4MjIKT0JSfDF8ODMzNTgyNjM5fDMyNjYyMzgxOTN8dXMtMDAwNV5WaXRhbCBTaWduc15XaW5QYXRoXl58fDIwMjAwNTA2MTcwODIyfDIwMjAwNTA2MTcwODIyfHx8fHx8fDIwMjAwNTA2MTcwODIyfHx8fHx8fHwyMDIwMDUwNjE3MDgyMnx8fEZ8fDEKT0JYfDF8VFh8dHQtMDAwNS0xMV5PeHlnZW5EZXZeV2VsY2hBbGx5bl5efHxWZW50dXJpfHx8fHx8Rnx8fDIwMjAwNTA2MTcwODIyfHwK"
}
}
EOFA continuación, ejecuta el siguiente comando para enviar tu solicitud REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages:ingest"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json.
Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:
@'
{
"message": {
"data": "TVNIfF5+XCZ8TXkgRUhSfE15IFRlc3QgRmFjaWxpdHl8fE15IEVIUiBGYWNpbGl0eXwyMDE1MDkyNjE0MDU1MXx8T1JVXlIwMV5PUlVfUjAxfE15LUxPSV81LjBfMS4xLU5HfFR8Mi41LjF8fHxBTHxBTHx8fHx8ClNGVHxHb29nbGVeRHx2MXxIZWFsdGhjYXJlIEFQSXwxfHwyMDE5MDYwMXxodHRwczovL2V4YW1wbGUuY29tL2hlYWx0aGNhcmUvClBJRHwxfDQwOTAzMzEzMjBeXl5TSU1VTEFUT1IgTVJOXk1STnw0MDkwMzMxMzIwXl5eU0lNVUxBVE9SIE1STl5NUk5+Mjg4ODUyNzE1NF5eXk5IU05CUl5OSFNOTUJSfHxEYXZpc15DaGVsc2VhXl5eTWlzc15eQ1VSUkVOVHx8MjAwOTEwMTcwMDAwMDB8Rnx8fDE4MSBUcmFuc21pc3Npb24gUm9hZF5eTG9uZG9uXl5LRzIyIDlIWF5HQlJeSE9NRXx8MDIwIDgxMjIgOTk0N15IT01FfHx8fHx8fHx8SF5Bc2lhbiBvciBBc2lhbiBCcml0aXNoIC0gSW5kaWFuXl5efHx8fHx8fHwKUFYxfDF8SXxPdGhlcldhcmReTWFpblJvb21eQmVkIDFeU2ltdWxhdGVkIEhvc3BpdGFsXl5CRUReTWFpbiBCdWlsZGluZ140fDI4Ynx8fEMwMDNeQ3VkZHleS2V2aW5eXl5Ecl5eXkRSTkJSXlBSU05MXl5eT1JHRFJ8fHxVUk98fHx8fHx8fHwxMjUxMzI0NzIzMjIzODk0ODc4M15eXl52aXNpdGlkfHx8fHx8fHx8fHx8fHx8fHx8fHx8fEFSUklWRUR8fHwyMDIwMDUwNjE3MDgyMnx8Ck9SQ3xSRXw4MzM1ODI2Mzl8MzI2NjIzODE5M3x8Q018fHx8MjAyMDA1MDYxNzA4MjIKT0JSfDF8ODMzNTgyNjM5fDMyNjYyMzgxOTN8dXMtMDAwNV5WaXRhbCBTaWduc15XaW5QYXRoXl58fDIwMjAwNTA2MTcwODIyfDIwMjAwNTA2MTcwODIyfHx8fHx8fDIwMjAwNTA2MTcwODIyfHx8fHx8fHwyMDIwMDUwNjE3MDgyMnx8fEZ8fDEKT0JYfDF8VFh8dHQtMDAwNS0xMV5PeHlnZW5EZXZeV2VsY2hBbGx5bl5efHxWZW50dXJpfHx8fHx8Rnx8fDIwMjAwNTA2MTcwODIyfHwK"
}
}
'@ | Out-File -FilePath request.json -Encoding utf8A continuación, ejecuta el siguiente comando para enviar tu solicitud REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages:ingest" | Select-Object -Expand Content
ORU_R01.SFT.7.
Heurísticas del analizador con un segmento personalizado
En el siguiente ejemplo se muestra cómo usa el analizador HL7v2 la heurística para analizar un mensaje con una configuración menor en el almacén HL7v2.
En el ejemplo se usa el siguiente mensaje HL7v2:
MSH|^~\&$|||||||ADT^A01|||2.1
EVN|\P\\L\\H\\N\
PID|1
ZCD|1
El mensaje HL7v2 no es estándar porque el segmento ZCD no está definido en el estándar HL7v2.
Crear un almacén HL7v2 con el esquema personalizado
Para crear un almacén HL7v2 con el esquema personalizado, usa el método projects.locations.datasets.hl7V2Stores.create.
Ten en cuenta que la configuración solo usa los tres campos siguientes y no las matrices schemas ni types:
"unexpectedSegmentHandling": "PARSE""ignoreMinOccurs": "true""schematizedParsingType": "HARD_FAIL"
Sin especificar nada más sobre la definición del mensaje o sus tipos, el analizador HL7v2 determina que el mensaje es un mensaje ADT_A01 y analiza los segmentos MSH, EVN y PID, así como el segmento ZCD personalizado.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos principal
- DATASET_ID: el conjunto de datos superior del almacén HL7v2
- HL7V2_STORE_ID: el ID del almacén HL7v2
Cuerpo JSON de la solicitud:
{
"parserConfig": {
"schema": {
"unexpectedSegmentHandling": "PARSE",
"ignoreMinOccurs": "true",
"schematizedParsingType": "HARD_FAIL"
}
}
}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json.
Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:
cat > request.json << 'EOF'
{
"parserConfig": {
"schema": {
"unexpectedSegmentHandling": "PARSE",
"ignoreMinOccurs": "true",
"schematizedParsingType": "HARD_FAIL"
}
}
}
EOFA continuación, ejecuta el siguiente comando para enviar tu solicitud REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores?hl7V2StoreId=HL7V2_STORE_ID"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json.
Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:
@'
{
"parserConfig": {
"schema": {
"unexpectedSegmentHandling": "PARSE",
"ignoreMinOccurs": "true",
"schematizedParsingType": "HARD_FAIL"
}
}
}
'@ | Out-File -FilePath request.json -Encoding utf8A continuación, ejecuta el siguiente comando para enviar tu solicitud REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores?hl7V2StoreId=HL7V2_STORE_ID" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
Ingiere y analiza el mensaje HL7v2 con el esquema personalizado
Ingiere la versión codificada con base 64 del mensaje HL7v2.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos principal
- DATASET_ID: el conjunto de datos superior del almacén HL7v2
- HL7V2_STORE_ID: el ID del almacén HL7v2
Cuerpo JSON de la solicitud:
{
"message": {
"data": "TVNIfF5+XCYkfHx8fHx8fEFEVF5BMDF8fHwyLjENRVZOfFxQXExcSFxOXA1QSUR8MQ1aQ0R8MQ=="
}
}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json.
Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:
cat > request.json << 'EOF'
{
"message": {
"data": "TVNIfF5+XCYkfHx8fHx8fEFEVF5BMDF8fHwyLjENRVZOfFxQXExcSFxOXA1QSUR8MQ1aQ0R8MQ=="
}
}
EOFA continuación, ejecuta el siguiente comando para enviar tu solicitud REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages:ingest"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json.
Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:
@'
{
"message": {
"data": "TVNIfF5+XCYkfHx8fHx8fEFEVF5BMDF8fHwyLjENRVZOfFxQXExcSFxOXA1QSUR8MQ1aQ0R8MQ=="
}
}
'@ | Out-File -FilePath request.json -Encoding utf8A continuación, ejecuta el siguiente comando para enviar tu solicitud REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages:ingest" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
Analizador que usa un mensaje HL7v2 con campos que faltan
En el siguiente ejemplo se muestra cómo usar definiciones de tipo y de grupo para analizar este mensaje HL7v2:
MSH|^~\&|||||20100101000000||ORM^O01^O01|23701|1|2.3||
PID|11|SMITH
PV1|11
PID|22|JOHN
PV1|22
ORC|3
OBX|4
NTE|5
NTE|6
OBX|7
NTE|8
El mensaje HL7v2 no es estándar porque solo usa algunos campos (en algunos casos, un solo campo) en todos los segmentos, excepto en MSH. Por ejemplo, el estándar HL7v2 requiere que el segmento PID contenga campos como el idioma principal, la dirección y la fecha de nacimiento del paciente, pero los segmentos PID del mensaje de ejemplo solo contienen un ID del paciente y su nombre o apellido.
El mensaje HL7v2 sigue la sintaxis de HL7, pero está casi totalmente personalizado.
Crear un almacén HL7v2 con el esquema personalizado
Antes de crear un almacén HL7v2 con el esquema personalizado, consulta las siguientes propiedades del objeto ParserConfig que se usa en el esquema:
Matriz schemas:
- El
mshFieldse asigna al campo 12 (separado por el carácter de barra vertical|) del primer segmento del mensaje. El valor del campo es2.3. Por lo tanto, elschemaque proporciones al almacén HL7v2 se aplicará a cualquier mensaje HL7v2 correspondiente amshFieldyvalue. - El tipo de mensaje,
ORM, se especifica con una matrizmembersque contiene la siguiente información:- El tipo de segmento del mensaje
ORMes el encabezado del segmento del mensaje oMSH. - Un grupo llamado "Paciente" que tiene un
maxOccursde 2.- Otro grupo
membersanidado en el grupo "Paciente" que contiene el tipo de segmento que coincide con el grupo "Paciente". El tipo de segmento esPID. - Otro grupo llamado "Visita del paciente". Al igual que "Paciente", hay un segmento que coincide con "Visita del paciente". El tipo de segmento es
PV1.
- Otro grupo
- Un grupo llamado "Pedido" que no tiene un número máximo ni mínimo de ocurrencias.
- Otro grupo
membersanidado en el grupo "Pedido" que contiene el tipo de segmento que coincide con el grupo "Pedido". El tipo de segmento esORC. - Otro grupo llamado "Observation", que tiene su propia matriz
members.- La matriz
memberscontiene dos segmentos que se asignan a "Observation":OBXyNTE.OBXtiene unmaxOccursde1.
- La matriz
- Otro grupo
- El tipo de segmento del mensaje
Matriz types:
- Al igual que la matriz
schemas,mshFieldse asigna al duodécimo campo (separado por el carácter de barra vertical|) del primer segmento del mensaje. El valor del campo es2.3. Por lo tanto, eltypesque proporciones al almacén HL7v2 se aplicará a cualquier mensaje HL7v2 correspondiente amshFieldyvalue. - Los tipos de datos
STySIse declaran como primitivasSTRING. Como solo se han declaradoSTySI, puedes saber que el mensaje no tiene tipos personalizados. - El grupo
Patienttiene unmaxOccursde2y un tipo de segmentoPID, por lo que se declaran dos tipos en los camposPID. Ambos tipos sonSI. - El resto de los tipos de segmentos se indican con sus campos y tipos correspondientes. Todos los segmentos restantes tienen una sola aparición y usan el tipo
SI.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos principal
- DATASET_ID: el conjunto de datos superior del almacén HL7v2
- HL7V2_STORE_ID: el ID del almacén HL7v2
Cuerpo JSON de la solicitud:
{
"parserConfig": {
"schema": {
"schematizedParsingType": "HARD_FAIL",
"unexpectedSegmentHandling": "PARSE",
"schemas": [
{
"version": [
{
"mshField": "12",
"value": "2.3"
}
],
"messageSchemaConfigs": {
"ORM_O01": {
"name": "ORM_O01",
"members": [
{
"segment": {
"type": "MSH"
}
},
{
"group": {
"name": "Patient",
"maxOccurs": 2,
"members": [
{
"segment": {
"type": "PID"
}
},
{
"group": {
"name": "Patient Visit",
"members": [
{
"segment": {
"type": "PV1"
}
}
]
}
}
]
}
},
{
"group": {
"name": "Order",
"members": [
{
"segment": {
"type": "ORC"
}
},
{
"group": {
"name": "Observation",
"members": [
{
"segment": {
"type": "OBX",
"maxOccurs": 1
}
},
{
"segment": {
"type": "NTE"
}
}
]
}
}
]
}
}
]
}
}
}
],
"types": [
{
"version": [
{
"mshField": "12",
"value": "2.3"
}
],
"type": [
{
"name": "ST",
"primitive": "STRING"
},
{
"name": "SI",
"primitive": "STRING"
},
{
"name": "PID",
"fields": [
{
"name": "1",
"type": "SI"
},
{
"name": "2",
"type": "SI"
}
]
},
{
"name": "PV1",
"fields": [
{
"name": "1",
"type": "SI"
}
]
},
{
"name": "ORC",
"fields": [
{
"name": "1",
"type": "SI"
}
]
},
{
"name": "OBX",
"fields": [
{
"name": "1",
"type": "SI"
}
]
},
{
"name": "NTE",
"fields": [
{
"name": "1",
"type": "SI"
}
]
}
]
}
],
},
"version": "V3"
}
}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json.
Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:
cat > request.json << 'EOF'
{
"parserConfig": {
"schema": {
"schematizedParsingType": "HARD_FAIL",
"unexpectedSegmentHandling": "PARSE",
"schemas": [
{
"version": [
{
"mshField": "12",
"value": "2.3"
}
],
"messageSchemaConfigs": {
"ORM_O01": {
"name": "ORM_O01",
"members": [
{
"segment": {
"type": "MSH"
}
},
{
"group": {
"name": "Patient",
"maxOccurs": 2,
"members": [
{
"segment": {
"type": "PID"
}
},
{
"group": {
"name": "Patient Visit",
"members": [
{
"segment": {
"type": "PV1"
}
}
]
}
}
]
}
},
{
"group": {
"name": "Order",
"members": [
{
"segment": {
"type": "ORC"
}
},
{
"group": {
"name": "Observation",
"members": [
{
"segment": {
"type": "OBX",
"maxOccurs": 1
}
},
{
"segment": {
"type": "NTE"
}
}
]
}
}
]
}
}
]
}
}
}
],
"types": [
{
"version": [
{
"mshField": "12",
"value": "2.3"
}
],
"type": [
{
"name": "ST",
"primitive": "STRING"
},
{
"name": "SI",
"primitive": "STRING"
},
{
"name": "PID",
"fields": [
{
"name": "1",
"type": "SI"
},
{
"name": "2",
"type": "SI"
}
]
},
{
"name": "PV1",
"fields": [
{
"name": "1",
"type": "SI"
}
]
},
{
"name": "ORC",
"fields": [
{
"name": "1",
"type": "SI"
}
]
},
{
"name": "OBX",
"fields": [
{
"name": "1",
"type": "SI"
}
]
},
{
"name": "NTE",
"fields": [
{
"name": "1",
"type": "SI"
}
]
}
]
}
],
},
"version": "V3"
}
}
EOFA continuación, ejecuta el siguiente comando para enviar tu solicitud REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores?hl7V2StoreId=HL7V2_STORE_ID"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json.
Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:
@'
{
"parserConfig": {
"schema": {
"schematizedParsingType": "HARD_FAIL",
"unexpectedSegmentHandling": "PARSE",
"schemas": [
{
"version": [
{
"mshField": "12",
"value": "2.3"
}
],
"messageSchemaConfigs": {
"ORM_O01": {
"name": "ORM_O01",
"members": [
{
"segment": {
"type": "MSH"
}
},
{
"group": {
"name": "Patient",
"maxOccurs": 2,
"members": [
{
"segment": {
"type": "PID"
}
},
{
"group": {
"name": "Patient Visit",
"members": [
{
"segment": {
"type": "PV1"
}
}
]
}
}
]
}
},
{
"group": {
"name": "Order",
"members": [
{
"segment": {
"type": "ORC"
}
},
{
"group": {
"name": "Observation",
"members": [
{
"segment": {
"type": "OBX",
"maxOccurs": 1
}
},
{
"segment": {
"type": "NTE"
}
}
]
}
}
]
}
}
]
}
}
}
],
"types": [
{
"version": [
{
"mshField": "12",
"value": "2.3"
}
],
"type": [
{
"name": "ST",
"primitive": "STRING"
},
{
"name": "SI",
"primitive": "STRING"
},
{
"name": "PID",
"fields": [
{
"name": "1",
"type": "SI"
},
{
"name": "2",
"type": "SI"
}
]
},
{
"name": "PV1",
"fields": [
{
"name": "1",
"type": "SI"
}
]
},
{
"name": "ORC",
"fields": [
{
"name": "1",
"type": "SI"
}
]
},
{
"name": "OBX",
"fields": [
{
"name": "1",
"type": "SI"
}
]
},
{
"name": "NTE",
"fields": [
{
"name": "1",
"type": "SI"
}
]
}
]
}
],
},
"version": "V3"
}
}
'@ | Out-File -FilePath request.json -Encoding utf8A continuación, ejecuta el siguiente comando para enviar tu solicitud REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores?hl7V2StoreId=HL7V2_STORE_ID" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
Ingiere y analiza el mensaje HL7v2 con el esquema personalizado
Ingiere una versión codificada en base64 del mensaje HL7v2.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos principal
- DATASET_ID: el conjunto de datos superior del almacén HL7v2
- HL7V2_STORE_ID: el ID del almacén HL7v2
Cuerpo JSON de la solicitud:
{
"message": {
"data": "TVNIfF5+XCZ8fHx8fDIwMTAwMTAxMDAwMDAwfHxPUk1eTzAxXk8wMXwyMzcwMXwxfDIuM3x8DVBJRHwxMXxTTUlUSA1QVjF8MTENUElEfDIyfEpPSE4NUFYxfDIyDU9SQ3wzDU9CWHw0DU5URXw1DU5URXw2DU9CWHw3DU5URXw4"
}
}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json.
Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:
cat > request.json << 'EOF'
{
"message": {
"data": "TVNIfF5+XCZ8fHx8fDIwMTAwMTAxMDAwMDAwfHxPUk1eTzAxXk8wMXwyMzcwMXwxfDIuM3x8DVBJRHwxMXxTTUlUSA1QVjF8MTENUElEfDIyfEpPSE4NUFYxfDIyDU9SQ3wzDU9CWHw0DU5URXw1DU5URXw2DU9CWHw3DU5URXw4"
}
}
EOFA continuación, ejecuta el siguiente comando para enviar tu solicitud REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages:ingest"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json.
Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:
@'
{
"message": {
"data": "TVNIfF5+XCZ8fHx8fDIwMTAwMTAxMDAwMDAwfHxPUk1eTzAxXk8wMXwyMzcwMXwxfDIuM3x8DVBJRHwxMXxTTUlUSA1QVjF8MTENUElEfDIyfEpPSE4NUFYxfDIyDU9SQ3wzDU9CWHw0DU5URXw1DU5URXw2DU9CWHw3DU5URXw4"
}
}
'@ | Out-File -FilePath request.json -Encoding utf8A continuación, ejecuta el siguiente comando para enviar tu solicitud REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages:ingest" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
Para ver una versión más legible del campo data de la respuesta, despliega la siguiente sección:
Mostrar
{
"data": {
"ORM_O01": [
{
"MSH": [
{
"0": "MSH",
"1": "|",
"2": "^~\\\\\\u0026",
"3": null,
"4": null,
"5": null,
"6": null,
"7": "20100101000000",
"8": null,
"9": {
"1": "ORM",
"2": "O01",
"3": "O01"
},
"10": "23701",
"11": {
"1": "1"
},
"12": {
"1": "2.3"
},
"13": null,
"14": null
}
],
"Order": [
{
"ORC": [
{
"0": "ORC",
"1": [
"3"
]
}
],
"Observation": [
{
"NTE": [
{
"0": "NTE",
"1": [
"5"
]
},
{
"0": "NTE",
"1": [
"6"
]
}
],
"OBX": {
"0": "OBX",
"1": [
"4"
]
}
},
{
"NTE": [
{
"0": "NTE",
"1": [
"8"
]
}
],
"OBX": {
"0": "OBX",
"1": [
"7"
]
}
}
]
}
],
"Patient": [
{
"PID": [
{
"0": "PID",
"1": [
"11"
],
"2": [
"SMITH"
]
}
],
"Patient Visit": [
{
"PV1": [
{
"0": "PV1",
"1": [
"11"
]
}
]
}
]
},
{
"PID": [
{
"0": "PID",
"1": [
"22"
],
"2": [
"JOHN"
]
}
],
"Patient Visit": [
{
"PV1": [
{
"0": "PV1",
"1": [
"22"
]
}
]
}
]
}
]
}
]
}
}