Sunteți pe pagina 1din 62

IntroduccinalaInteroperabilidadentreSistemas

deInformacinenSalud

Ing.PabloPazosGutirrez<pablo.pazos@cabolabs.com>

Versin

Fecha

Autor

1.0

20151107

PabloPazos

1.1

20160807

PabloPazos

ndice

1.Introduccin
2.ProtocolosdeComunicacin
2.1.TCP
2.1.1.PaquetesTCP
2.1.2.SocketsTCP
2.1.3.Nmerosdepuertoconocidos
2.2.MLLP
2.2.1.Definicindebloques
2.3.HTTP
2.3.1.URL
2.3.2.MtodosHTTP
2.3.3.EstructuradepedidosyrespuestasHTTP
2.3.4.CdigosdeestadoHTTP
2.4.SOAP
2.4.1.TerminologaSOAP1.2
2.4.2.EstructurademensajesSOAP
2.4.3.EjemplosdemensajesSOAPsobreHTTP
3.FormatosdeMensajera
3.1.XML
3.1.1.ComentariossobreelformatoXML
3.2.JSON
3.2.1.ComentariossobreelformatoJSON
3.3.ER7
4.EstndaresXML
4.1.XPath
4.1.1.Especificadoresdeejes
4.1.2.Pruebadenodo
4.1.3.Predicados
4.2.XSD
4.2.1.EsquemaparadocumentosHL7CDA
4.2.1.1.DefinicindetipoparaelelementoClinicalDocument
4.2.1.2.DefinicindetipoparaelelementorecordTarget
4.2.2.ValidacindeXMLcontraXSD
5.HL7
5.1.HL7v2.x
5.1.1.FormatodemensajesHL7v2.x
5.1.2.Tiposdemensajes
5.1.3.Eventosdisparadores
5.1.3.1.Eventosparaadmisiones,altasytransferencias(ADT)
5.1.4.Tiposdesegmentos
5.1.5.Tiposdedatos
5.1.6.Definicionesdemensajes
5.1.7.HL7v2.5codificadocomoXML
5.2.HL7v3
5.2.1.ReferenceInformationModel(RIM)
5.2.2.ClinicalDocumentArchitecture(CDA)
5.2.2.1.EstructuradelCDAenXML
5.2.2.2.Paciente

5.2.2.3.Autordeldocumento(ej.mdicoresponsable)
5.2.2.4.Organizacinencargadadecustodiarlosdocumentos(ej.MinisteriodeSalud)
5.2.2.5.EjemplodeunaseccinNivel2dentrodelcuerpodelCDA
5.2.3.ValidandoCDA
6.ServiciosWeb
6.1.REST
6.1.1.MtodosHTTPyoperacionesREST
6.2.RESTvsSOAP

1.Introduccin

Estedocumentoesunaguaintroductoriaavarioselementosbsicosparalainteroperabilidadentresistemasde
informacinensalud,incluyendo:protocolosdecomunicacin,formatosdemensajes,yestndares.Elestudiode
estoselementospermitirlacomprensindeotrosconceptos,estndaresyguasmscomplejasquehacenuso
exhaustivodelosmismos.

2.ProtocolosdeComunicacin

Losprotocolosdecomunicacinsonlapiedraangulardelainteroperabilidad,yaquesinelloslainteroperabilidades
imposible.LosprotocolosdecomunicacintienendiferentescapassegnlaISOOSI1(OpenSystemsInterconnection
Model),sietecapasenelmodeloOSI.Estassietecapasfueronsimplificadasa5enlapiladeprotocolosTCP/IP
utilizadosenlaInternetyenlaWebcomoaplicacinsobrelaInternet.Enestedocumentonosconcentraremosenla
pilaTCP/IP,yenprotocolosdelascapasdeTransporteyAplicacin2.

Comparativademodelosdecapas

2.1.TCP

TransmisinControlProtocolesunprotocolodecomunicacinquepermitedefinircanalesdecomunicacin
bidireccionales(fullduplex)entreprocesoscorriendoendistintascomputadoras.ParaTCPlosdatosacomunicarson
vistoscomounflujodedatosdivididosenpaquetesdetamaofijo,aproximadamentede1500bytes.La
comunicacinmedianteunflujocontinuodedatosimplicaquesiseenvandosmensajesdesdeunprocesoaotro,el
procesoquerecibepuedenodistinguircundoterminaunmensajeycomienzaelotro(verMLLP).

TCPimplementatransporteconfiablededatos,esdecirqueserecibentodoslospaquetesenviadosenelorden
correcto.TCPseimplementasobreIP(InternetProtocol)queesunprotocolonoconfiable,esdecirquelospaquetes
puedenperderseollegarenelordenincorrecto.TCPeIPsonlosprotocolosquesirvencomobaseparalaWeb.

1
2

https://es.wikipedia.org/wiki/Modelo_OSI
https://en.wikipedia.org/wiki/Internet_protocol_suite
4

TCPimplementamecanismosdecontroldeflujo,quepermitenajustarlacantidaddedatosaenviarsegnla
capacidadderecepcin,esdecir,sielprocesoqueemitedatospuedeenviarmsdatosdelosqueelproceso
receptorpuederecibir,disminuyeelvolumendedatossegnlacapacidaddelreceptor.Deformaanloga,se
aumentaelvolumendedatosanteunamayorcapacidadderecepcin.

LoscanalesdecomunicacinTCPsonorientadosaconexin,esdecirqueprevioalenvodedatos,esnecesario
establecerunaconexinentredosprocesosdistribuidos,unoserelservidor(procesoqueescuchapasivamentepor
solicitudesdeconexin)ycliente(procesoquesolicitaactivamenteunaconexinalservidor).

EnelsiguienteRFCpuedeencontrarlaespecificacindelprotocoloaunquehatenidovariasmejorasyextensiones
tambindefinidasdesdeentonces(1981):https://www.ietf.org/rfc/rfc793.txt

2.1.1.PaquetesTCP

Lospaquetesestncompuestosdeuncabezalydeunconjuntodedatos.ElcabezalTCPtieneuntamaomnimode
20bytes.ElcabezalTCPincluyetodoslosdatosnecesariosparaproveertransporteconfiable:entregadetodoslos
paquetesyenelordencorrecto.

Delcabezalpodemosdestacarquecontienelosnmerosdepuertoorigenydestino(16bitscadauno)que
identificanalosprocesosqueseestncomunicando.Elnmerodesecuenciaseutilizaparaordenarlospaquetes
recibidos.Elnmerodeacknowledgementpermitesabersialgnpaqueteseperdienlacomunicacin,encuyo
casoTCPsolicitalaretransmisindelpaqueteperdido.Checksumseutilizaparadetectarposiblesdatoscorruptosen
lacomunicacin(porejemploqueunbit0cambiea1).

Comopuedenotar,lasdireccionesIPdelascomputadorasdondecorrenlosprocesosquesecomunicannoaparecen
enelcabezalTCP,sinoqueseencuentranenelcabezalIPqueseutilizaparacomunicarlospaquetesTCPentre
distintascomputadoras.

Figura1:PaqueteTCP

2.1.2.SocketsTCP

Lossocketssonconstruccionesabstractasquefuncionancomointerfacesentrelasaplicacionesylacapade
transporte.Losprocesoscorriendoencomputadorasdistintasutilizarnentoncessocketsparaconectarsee
intercambiardatos.UnsocketTCPesidentificadomediantelasdireccionesIPdelclienteyelservidor,ylosnmeros

depuertoasignadosalosprocesodelclienteydelservidor,porlotantodosconexionesentreloselmismoclientey
mismoservidordebernutilizarnmerosdepuertodistintosenunodelosextremos,engeneralenelcliente.

ParamanipularconexionesytransmitirdatosmediantesocketsTCPdesdelasaplicaciones,esnecesarioutilizarun
conjuntodeoperacionesbsicasdefinidassobrelossockets.Estasoperacionespuedenvariarsegnellenguajede
programacin.

Operacin

Descripcin

Socket

Creaunanuevainterfazdecomunicacin.

Bind

Asociaunnmerodepuertolocalalsocket.

Listen

Abreelsocketparaesperarporsolicitudesdeconexin,especificandoel
tamaodelacoladeconexin(nmerodeconexionessimultneas
soportadas).

Accept

Bloqueaelprocesoesperandoporsolicitudesdeconexin.

Connect

Envodeunasolicituddeconexin.

Send

Envadatossobrelaconexin.

Receive

Recibedatosdesdelaconexin.

Close

Cierralaconexin.

Acontinuacinsedescribeelordenhabitualdeinvocacindelasprimitivas,tantodelladodelservidorcomodellado
delcliente.

Elservidorcomienzaporcrearunnuevosocket,loasociaaunpuerto(bind)eindicaqueesesocketserutilizado
paraescucharporconexiones(listen).Luegoelservidoresperaporconexionesdesdeclientes(accept).Mientras
tanto,elclientecreaunsockety,especificandoIPypuertodelservidor,realizaunasolicituddeconexin(connect).
Elservidorqueestababloqueadoporelacceptcreaunnuevosocketdondeatenderlaconexinconesecliente
particular,yvuelveaescucharporconexionesenelsocketoriginal,esdecirqueelprocesoservidorsebloqueade
nuevo,mientrasenunprocesoparalelosemanejalaconexinconelcliente.Deestemodoelservidorquedalisto
pararecibirunanuevasolicituddeconexindeotrocliente,mientrasmanejalacomunicacinconlosclientesquese
encuentranconectados.Unavezquehayclientesconectados,tantoelprocesoservidorcomoelprocesocliente
puedenenviar(send)yrecibir(receive)datosutilizandoelcanalTCP.Encualquiermomento,tantoclientecomo
servidorpuedencerrarlaconexin(close).


Figura2:PrimitivasdesocketsTCP

Comosepudoapreciar,elservidorpuedeatenderconexionesdedistintosclientesenparalelo,paraestonecesita
quetantoelprocesoqueescuchaporconexiones(procesoquesebloquea)ylosprocesosquemanejanlas
comunicacionescondistintosclientescorranenparalelo.Aestossubprocesosselesllamanhilos(threadsen
ingls),ylaposibilidaddecorrermltipleshilosenparaleloselellamamultithreading.

2.1.3.Nmerosdepuertoconocidos

Existenalgunosnmerosdepuertofijosparaprotocolosoaplicacionesbienconocidas,engeneralsontodos
menoresa1024,porlotanto,paranotenerconflictodepuertoslasaplicacionesquenoutilicenestosprotocolos
debenutilizarnmerosdepuertomayoresa1024.Inclusoenalgunossistemasoperativosnoestpermitidala
creacindepuertosconnmeromenora1024.Acontinuacinsemuestraunalistareducidadenmerosdepuertos
conocidos:

7:ECHO
20:FTP(puertodedatos)
21:FTP(puertodecontrol)
22:SSH
23:TELNET
25:SMTP
53:DNS
80:HTTP
104:DICOM
110:POP3
143:IMAP
443:HTTPS(HTTPsobreSSL/TLS)

445:ActiveDirectory

2.2.MLLP

MinimalLowerLayerProtocol3 esunprotocolomuysimpleimplementadosobreTCP.ElobjetivodeMLLPesagregar
marcadoresdeprincipioyfindelosmensajesqueseenvansobreTCP,paraqueelreceptorsepacundoterminaun
mensajeycomienzaelsiguiente,tareaquedebeimplementarseenlasaplicacionesquerecibenmensajesusando
soloTCP.MLLPesutilizadoparaimplementarlacomunicacindemensajeraHL7v2.x,aunquenoeselnico
protocolosobreelquepuedenenviarsemensajesHL7.

2.2.1.Definicindebloques

MLLPdefinebloquesdedatosdelimitadosenunflujodedatosTCP.ElbloquedebecomenzarconunbytellamadoSB
(startblock)convalor0x0B(ASCII11).LuegodeSBseenvanlosdatosdelmensaje.Paramarcarelfindelbloquese
utilizandosbytes,elprimeroesEB(endblock)convalor0x1C(ASCII28)yluegoCR(carriagereturn)convalor0x0D
(ASCII13).

Endefinitiva,unpaqueteMLLPtendrlaforma:<SB>data<EB><CR>

Debeconsiderarsequelosdatosdebenenviarseconunacodificacinorientadaabytes,dadoqueloscaracteres
delimitadoressonbytes.PorlotantonoesposibleusarMLLPconcodificacionescomoUTF16(2bytesporcarcter).

ConsiderandolosejemplosdeclienteyservidorTCPdelaseccinprevia,agregandoloscaracteresdelimitadores
podrimplementarsuspropiosclientesyservidoresMLLP.

2.3.HTTP

HyperTextTransferProtocolesunprotocolodecapadeaplicacinenlapiladeprotocolosdeInternet.HTTPutiliza
TCPcomoprotocolodetransporte,porlotantoHTTPesunprotocoloconfiable.HTTPfuncionaenbasealenvoy
recepcindemensajesquetienenunformatoestndar.Lasaplicacionesclienteenvanpedidos(request),ypara
cadapedidoelservidorenvaunarespuesta(response).UnpedidoorespuestaHTTPpodratransportarseenmsde
unpaqueteTCP.

LaWeb(apcopedeWorldWideWeb)estimplementadasobreHTTP,raznporlacualalosservidoresHTTPseles
llamaservidoresWeb.LaWebeslaaplicacinmsutilizadaparaintercambioderecursossobreInternet.Un
servidorWebpuedeatenderpedidosdemltiplesclientesdeformasimultnea,loscualessolicitanrecursos
mediantepedidos.LosrecursossesolicitanmedianteunaURL(LocalizadorUniversaldeRecursos).

HTTPestespecificadoen:http://www.w3.org/Protocols/rfc2616/rfc2616.html

http://www.hl7.org/documentcenter/public_temp_5E7494961C23BA170CCB6FA1750CF529/wg/inm/mllp_transport_specification.P
DF
8

2.3.1.URL

LasURLssoncadenasdecaracteresquesiguenelestndarRFC1738.LasURLsseutilizanparalocalizarrecursosque
sernsolicitadosaunservidorWebmedianteunpedidoHTTP,yelservidorWebdevolverelrecursosolicitadoen
unarespuestaHTTP.

FormatodeURL:esquema://dominio:puerto/ruta?query_string#fragment_id

Esquema
Paraaccederarecursosenlawebseutilizahttpohttpsenelcasodecomunicacinsegura.Tambinseutiliza
mailtocuandoelrecursoesunadireccindecorreo(ejemplo:mailto:pablo@openehr.org.es).

Dominio
NombredeldominiodondeestelservidorWeb,porejemploopenehr.org.es.

Puerto
EselnmerodepuertodondeelservidorWebesperallamadas,siseomiteenlaURL,setomaelpuerto80.

Ruta
Essimilaraunarutadedirectoriosparalocalizarunarchivo,porejemplodir1/dir2/dir3.

QueryString
PermiteespecificarunconjuntodeparmetrosenlaURL,porejemplonombre=pablo&curso=openehr.

FragmentID
Esunnombrequepermiteidentificarunaporcinofragmentodelrecursosolicitado.Porejemplo,sielrecursoes
unapginaHTMLconunfragmentollamadoseccion2,alusaresenombreenlaURL,elnavegadorwebmostrar
directamenteesaseccinenlugardemostrareliniciodelapgina

2.3.2.MtodosHTTP

LospedidosHTTPdebenespecificarunmtodo,elcualindicalaaccinarealizarsobreelrecursoidentificadorporla
URLenviadaenelmismopedido.Acontinuacinsecomentanlomtodosmsutilizados:

GET
EstemtodoseutilizaparasolicitarinformacindelrecursoidentificadorconlaURL.

HEAD
EstemtodoesidnticoaGETperoelservidornodevuelveelrecursosolicitado.Seutilizapararealizarpruebasde
conexinoparasolicitarinformacinsobreelrecursosintenerquecomunicarelmismo.

POST
Estemtodoseutilizaparaenviardatosalservidor,porejemploparaagregarinformacinaunrecursoexistente,
paraagregarunrecursoaunabasededatos,parapublicarunmensajeenunforoolistadecorreos,entreotrosusos.

PUT
Estemtodoseutilizaparaenviardatosdeunrecurso,loscualesdebensermodificadosenelrecursoresidenteenel
servidor.SielrecursoenesaURLnoexisteenelservidor,elservidorpuedecrearelrecurso.

DELETE
Estemtodoesutilizadoparasolicitarlaeliminacindeunrecursoenelservidor.

2.3.3.EstructuradepedidosyrespuestasHTTP

HTTPdefineelformatodelosmensajesdepedido4yrespuesta5 .Ambostienenunconjuntodecabezalesyun
cuerpo.Loscabezalesseespecificanporsunombre,cadaunotieneunsignificadobiendefinido(verRFC
2616sec5.3),yporcadanombrehayunvalor.Elcuerpodelosmensajesseutilizaparatransportardatos,por
ejemploenunpedidoqueenvaunarchivoalservidor,elcontenidodelarchivoesubicadoenelcuerpodelmensaje
depedido.Enelcasodesolicitarunrecurso,elcontenidodelrecursoesubicadoenelcuerpodelmensajede
respuesta.

EjemplodepedidoHTTPsincabezales:

GEThttp://www.google.comHTTP/1.1

Comosepuedeapreciarenelejemplo,primeroseindicaelmtodoHTTPautilizar,luegoelrecursoqueseest
pidiendo,puedeindicarsecomounaURLabsolutaorelativa,yporltimolaversindeHTTPutilizada.

ElmismoejemploutilizandoelcabezalHostyunaURLrelativa:

GET/HTTP/1.1
Host:www.google.com

4
5

http://www.w3.org/Protocols/rfc2616/rfc2616sec5.html#sec5
http://www.w3.org/Protocols/rfc2616/rfc2616sec6.html#sec6

10

TodosloscabezalessedebenespecificarconelformatoNombreCabezal:Valor6 .

Sedebenotarquecadalneaenelpedidodebeterminaren<CR><LF>loqueeslomismoque\r\nenunlenguaje
deprogramacincomoJavaoGroovy.Paramarcarlaterminacindelpedidoyparasepararentrecabezalesycuerpo
seutiliza<CR><LF><CR><LF>.Entonceselejemploanteriorsera:

GET/HTTP/1.1<CR><LF>
Host:www.google.com<CR><LF>
<CR><LF>

ProbaresteejemploenTELNET(http://es.wikipedia.org/wiki/Telnet):

Nota:porcada<CR><LF>presionarlateclaenter.

telnetgoogle.com80<CR><LF>
GET/HTTP/1.1<CR><LF>
Host:www.google.com<CR><LF>
<CR><LF>

Podrverunarespuestadelservidorsimilaraesta:

HTTP/1.1302Found
Location:http://www.google.com.uy
CacheControl:private
ContentType:text/html;charset=UTF8
Date:Sun,26Jan201422:02:20GMT
Server:gws
ContentLength:262
XXSSProtection:1;mode=block
XFrameOptions:SAMEORIGIN

<HTML><HEAD><metahttpequiv="contenttype"content="text/html;charset=utf8">
<TITLE>302Moved</TITLE></HEAD><BODY>
<H1>302Moved</H1>
Thedocumenthasmoved<AHREF="http://www.google.com.uy/">here</A>.
</BODY></HTML>

LaprimeralneadelarespuestaespecificalaversindeHTTPutilizada,uncdigodeestadoyelnombreasociadoal
cdigo.Enlasiguienteseccinsedescribirndistintoscdigosdeestado.Luegohayunalistadecabezalesde
respuesta,porejemploContentTypeindicaqueenelcuerpodelarespuestaseesperandatosdetipotext/html,o
seaunapginaWeb.Larespuestapuedecontenercualquiertipoderecurso,tantounapginawebcomounaimagen
ounarchivoPDF.Acontinuacinselistanalgunostiposcomunes:

text/plain
Larespuestacontienedatosentextoplano(sinestructura).

text/html
LarespuestacontienedatosHTML(unapginaWeb).

text/xml
LarespuestacontienedatosestructuradosenformatoXML(verseccin6.2)
6

http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

11


application/xml
Similaralaanterior,peroespreferidapornotenerproblemasconlacodificacin.7

image/jpeg
LarespuestacontienedatosbinariosdeunaimagencodificadaenJPEG.

image/jp2
LarespuestacontienedatosbinariosdeunaimagencodificadaenJPEG2000.

application/pdf
LarespuestacontienedatosbinariosdeundocumentoPDF.

application/json
LarespuestacontienedatosestructuradosenformatoJSON(verseccin6.1).

IANA(InternetAssignedNumbersAuthority)eslaorganizacinquemantieneyasignaestosidentificadorespara
distintostiposdemedios.EnsusitioWebpuedeencontrarseunalistacompletadetipos:
http://www.iana.org/assignments/mediatypes/mediatypes.xhtml

ElcabezalContentLengthindicalacantidaddecaracteres(bytes)contenidosenelcuerpodelarespuestaHTTP.
Luegodelltimocabezal,dndeaparecelatiradecaracteres<CR><LF><CR><LF>,seencuentraelcdigoHTML
devueltoporelservidor.

AlgunoscomentariossobreTELNET.EsteprogramafuncionatantoconnombresdedominiocomocondireccionesIP.
Cuandoseespecificaunnombrededominiocomoenelcasodetelnetgoogle.com80,internamenteserealizauna
bsquedaDNS,quebsicamentebuscaladireccinIPcorrespondientealdominio 8.ExistenherramientasWebque
permitenhacerbsquedasDNSfcilmente,como:

http://mxtoolbox.com/SuperTool.aspx?action=a%3agoogle.com&run=toolpage.

Notarqueseutilizelpuerto80queeselpuertopordefectoutilizadoporservidoresHTTP.

2.3.4.CdigosdeestadoHTTP

LoscdigosdeestadoseutilizanenlasrespuestasHTTPparadarlealclienteinformacinsobreelpedidoquefue
realizadoylarespuestaaesepedidoenviadadesdeelservidor.

Loscdigosdeestadoseclasificanencincograndesgrupos:

1xx:Cdigosdeinformacin
2xx:Cdigosdexito
3xx:Cdigosderedireccindepedidos
4xx:Cdigosdeerrorenelcliente
5xx:Cdigosdeerrorenelservidor
7
8

http://www.grauw.nl/blog/entry/489
http://es.wikipedia.org/wiki/Domain_Name_System

12


Loscdigosderedireccinseutilizanparaindicarqueunciertorecursofuemovido(suURLcambi)yelservidor
devuelvelaURLdondeelclientepuedeencontrarelrecurso.Entoncesserealizaunnuevopedido,encuyocaso
deberarecibiruncdigo2xx.

Acontinuacinselistanalgunosdecdigosmscomunes:

200OK:respuestaanteunasolicitudcorrecta.
301MovedPermanently:esteytodoslospedidosfuturosdebenserredirigidosaunaURLdadayaque,enla
URLsolicitada,elrecursoyanoexiste.
302Found:elpedidodebeserredirigidoaunaURLdada.
304Notmodified:elrecursosolicitadonofuemodificadoenelservidordesdeelltimopedido,permite
obtenerlodelcachlocal.
400BadRequest:nosepuederesolverelpedidoporquecontieneerroresdesintaxis.
403Forbidden:accesonoautorizadoaunrecurso.
500InternalServerError:ocurrialgnerrorenelservidoralintentarresolverelpedido.
503ServiceUnavailable:elservidornoseencuentradisponible(ej.pormantenimiento).

Aqu9puedeencontrarunalistacompletadecdigosdeestadoHTTP.

2.4.SOAP

SimpleObjectAccessProtocolpermiteelintercambiodeinformacinestructuradautilizandoelformatoXMLyel
protocoloHTTPparaeltransporte.SibienHTTPessolounodelosprotocolosquepuedenusarseparaSOAP,esel
msusado.SOAPnodefinelasemnticadelainformacinaserintercambiada,selimitaadefinirlasreglasde
codificacinydecodificacindeobjetosyestructurasdedatosparasercomunicadasentresistemasheterogneosy
distribuidos.Ademsdefinetiposdedatosparalasestructurasasercomunicadas.Inicialmente,SOAPsurgicomo
unaevolucindelprotocoloXMLRPChttp://xmlrpc.scripting.com/spec.html

SOAPserecomiendacuandosenecesitatrabajarconobjetosqueresidenensistemasremotoscomosifueran
objetoslocales.Noserecomiendacuandosenecesitaintercambiarbloquesdetextoomensajesconunformato
definidoporotroprotocolodecomunicacinyeseformatonoesXML,comoelcasodelosmensajesHL7v2.x.

EsimportantedestacarqueaniveldelastecnologasutilizadasenlasaplicacionesquesecomunicanmedianteSOAP,
esfrecuenteencontrargeneradoresdecdigoquetrabajanenfuncindelasdefinicionesdelosserviciosSOAP.
EstasdefinicionesestnexpresadasenWSDL10 (WebServiceDefinitionLanguage).Elcdigogeneradopermitealas
aplicacionescomunicarseabstrayendolacapadecomunicacindelacapadeaplicacin,porloqueelclienteSOAP
trabajacontraobjetosque"viven"dentrodelaaplicacin,peroesosobjetossonobtenidosdeserviciosremotos
(servidoresSOAP).Herramientascomowsdl2java 11delframeworkApacheCXFpermitenhaceresto.

TampocohayqueconfundirelprotocoloSOAPconlaArquitecturaOrientadaaServicios(SOA).SOAestcompuesta
deunaseriedeprincipiosybuenasprcticasparalaimplementacindesistemasdistribuidos,dondeSOAPessolo
unodelosposiblesprotocolosquepuedenusarseparaimplementarunaSOA.Otraposibilidadesutilizarlos

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
http://www.w3.org/TR/wsdl
11
http://cxf.apache.org/docs/wsdltojava.html
9

10

13

principiosREST12 13 14 paracrearserviciossobreHTTPutilizandoJSONoXMLcomocodificacinderecursos
(mensajes).

Recursostiles:

EjemplosdeserviciosSOAPonlineparaprobarclientes:http://www.servicerepository.com
ExplicacindeWebServicesSOAPenJava:https://www.youtube.com/watch?v=mKjvKPlb1rA

2.4.1.TerminologaSOAP1.2

EnestaseccinsepresentanalgunosdelostrminosutilizadosparadescribirloscomponentesdeSOAP15 .

SOAPBinding
ConjuntodereglasqueespecificancmocomunicarmensajesSOAPdentrode,osobreotro,protocolo.VerSOAP
ProtocolBindingFramework16 .

SOAPNode
EsunaunidadlgicadeprocesamientodemensajesSOAPquepuedetransmitir,recibir,procesaryretransmitir
mensajes.

SOAPMessage
ElmensajeeslaunidadbsicadecomunicacinentrenodosSOAP.Puedeserunainvocacinaunservicioouna
respuestaaunainvocacin.Siocurriunerror,elbodydelarespuestacontendrunelementoSOAPFault.

SOAPPart
ElconceptodeparteseagregaenlaextensindeSOAPparasoportardatosadjuntos.UnmensajeSOAPtieneuna
parteprincipalquecontieneelsobre(envelope)yceroomspartessecundariasdondeubicardatosadjuntos.Estos
datospuedennosercodificadosenXML,porloquepuedenincluirsedatosbinariosyenotrascodificacionesno
compatiblesconlacodificacindedatosXMLenelbodydelenvelope17 .

SOAPEnvelope
ElsobreeselelementodeinformacinmsexternoenunmensajeSOAPqueapareceenelXMLdelmensaje.

SOAPHeader
ColeccindeceroomsbloquesdecabezalSOAP,cadaunodeloscualespuedeestardestinadoaunreceptorenel
caminodelmensajeSOAP18 .

SOAPHeaderBlock
Elementodeinformacinutilizadoparadelimitarlosdatosqueconstituyenlgicamenteunanicaunidad
computacionalenelcabezalSOAP.EltipodelSOAPHeaderBlockesdefinidoporelnombreexpandidodelXMLdel
SOAPHeaderBlock19
https://www.servage.net/blog/2013/04/08/restprinciplesexplained/
https://github.com/WhiteHouse/apistandards
14
https://www.nsa.gov/ia/_files/support/guidelines_implementation_rest.pdf
15
http://www.w3.org/TR/2003/RECsoap12part120030624/
16
http://www.w3.org/TR/soap12part1/#transpbindframew
17
http://www.w3.org/TR/soap12af/
18
http://www.w3schools.com/soap/soap_envelope.asp
19
http://www.w3schools.com/soap/soap_header.asp
12
13

14


SOAPBody
ColeccindeceroomselementosdeinformacindestinadosparaelreceptorfinalenelcaminodelmensajeSOAP20
.

SOAPFault
ElementodeinformacinSOAPquecontieneinformacindeerroresgeneradosporunnodoSOAP21 .

SOAPSender
NodoquetransmiteunmensajeSOAP.

SOAPReceiver
NodoqueaceptaunmensajeSOAP.

SOAPMessagePath
ConjuntodenodosSOAPporlosquehapasadounnicomensajeSOAP.Elusomscomneslacomunicacinentre
dosnodos.LosnodosintermediossonalavezReceiverySender.

20
21

http://www.w3.org/TR/soap12part1/#soapbody
http://www.w3schools.com/soap/soap_fault.asp

15

2.4.2.EstructurademensajesSOAP

ElsiguientediagramamuestratodosloscomponentesdeunmensajeSOAP.Enelcasodeenvodemensajessin
adjuntos,elreceptordelmensajesolovercontenidoXMLcorrespondientealSOAPEnvelope.Enlasiguienteseccin
semuestranejemplosdemensajesdeinvocacinyrespuestadeserviciosSOAP.

Figura3:estructurademensajesSOAP

PuedetomarcomoreferencialaimplementacindeSOAPMessageenJava22 ,dondeverquecadapartedelmensaje
sepuedeobtenermediantemtodoscmo:

SOAPPartsp=message.getSOAPPart();
SOAPEnvelopese=sp.getEnvelope();
SOAPBodysb=se.getBody();
SOAPHeadersh=se.getHeader();

22

http://docs.oracle.com/javase/7/docs/api/javax/xml/soap/SOAPMessage.html

16

2.4.3.EjemplosdemensajesSOAPsobreHTTP

SibienlosmensajesSOAPpuedensertransportadosendistintosprotocolosdecomunicacin,elprotocoloms
utilizadoparaestefinesHTTP.SiutilizamosalgunaherramientaparavisualizarlasinvocacionesyrespuestasSOAP,
comoWireshark23 oSoapUI24 ,aniveldeHTTPveremosmensajesquesiguenlassiguientesestructuras.

InvocacindelservicioGetLastTradePriceconunparmetrosymbol=DIS

POST/StockQuoteHTTP/1.1
Host:www.stockquoteserver.com
ContentType:text/xml;charset="utf8"
ContentLength:nnnn
SOAPAction:"SomeURI"

<SOAPENV:Envelope
xmlns:SOAPENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAPENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAPENV:Body>
<m:GetLastTradePricexmlns:m="SomeURI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAPENV:Body>
</SOAPENV:Envelope>

RespuestadelservicioconunavariablePrice=34.5

HTTP/1.1200OK
ContentType:text/xml;charset="utf8"
ContentLength:nnnn

<SOAPENV:Envelope
xmlns:SOAPENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAPENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAPENV:Body>
<m:GetLastTradePriceResponsexmlns:m="SomeURI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAPENV:Body>
</SOAPENV:Envelope>

Msejemplos:

http://en.wikipedia.org/wiki/SOAP
http://es.wikipedia.org/wiki/Simple_Object_Access_Protocol

LaprimeracaractersticaquepodemosnotardeestosmensajesesqueelmtodoHTTPutilizadoenelpedidoes
POSTyquelosdatosdelpedidovanenelcuerpodelmensajeHTTP.LosegundoesqueelContentTypedelpedidoes
"text/xml",debidoaquelosdatosestnenformatoXML.EstevaloresutilizadoporSOAP1.1,peroenSOAP1.2se
utilizaelvalor"application/soap+xml".

OtroelementoanotaresqueSOAP1.1defineuncabezalnuevoparaHTTP:SOAPAction25 ,queesutilizadopara
indicarlaintencindelpedidoSOAPHTTPmedianteunaURI.EstaURIpuedeserresuelta(serunaURL)ono,ySOAP
https://www.wireshark.org/
http://www.soapui.org/
25
http://static.userland.com/xmlRpcCom/soap/SOAPv11.htm#_Toc478383528
23
24

17

noestableceningunareglasobresuformato.UnclienteHTTPdebeutilizarestecabezalcuandoenvapedidosSOAP
HTTP.EnSOAP1.2elvalordelSOAPActionesincluidoenelcabezalContentType26 .Laocurrenciadelcabezal
SOAPActionenelpedidoHTTPpuedeutilizarseparaqueloscomponentesdeunareddiferencienentretrficoHTTP
puroySOAPHTTP.Suvalorpuedeservaco,endondeseentiendequelaintencindelpedidoestdadaporlaURL
delpedidoHTTP.

CmodistinguirentremensajesSOAP1.1.ySOAP1.2?

ElprimerfactoresqueelcabezalHTTPSOAPActionesexclusivodeSOAP1.1.Porotroladolosesquemaspara1.1y
para1.2sondistintos.SOAP1.1utiliza"http://schemas.xmlsoap.org/soap/envelope/",mientrasqueSOAP1.2utiliza
"http://www.w3.org/2001/12/soapenvelope".

26

http://www.xml.com/pub/a/ws/2003/06/10/salz.html

18

3.FormatosdeMensajera

Enestaseccinveremosdistintosformatosutilizadoscomnmenteparaintercambiarinformacinclnicay
administrativaentresistemasdeinformacinensalud.

3.1.XML

EXtensibleMarkupLanguage27 esunasintaxisbasadaenetiquetasquerepresentanelementos,loscualespueden
teneratributos.XMLesunestndardelW3C28 .ElobjetivodeXMLespoderserlegibleporhumanosperotambin
procesableporprograma.ComparadoconJSONesmscomplejodeleerporhumanosporcontenermsinformacin
pararepresentarlosmismosdatos,peroambosformatossonigualmenteprocesablesporprograma.

CualquierestructuradedatospuedeserrepresentadaenXML.Comoyasemencion,elprotocoloSOAPutilizaXML
pararepresentarobjetosestructurados.Todosloslenguajesdeprogramacinmodernosofrecensoporteparael
procesamientodeXML.

ApartedeSOAP,existenotrosestndaresqueutilizanXMLcomoformatopararepresentardatos,comoRSS,Atomy
XHTML.TambinlasversionesmodernasdelosformatosdeMSOfficeutilizanXML,porejemplodocumentosDOCX
ouhojasdeclculoXSLX.

3.1.1.ComentariossobreelformatoXML

AcontinuacinsemuestraunejemplodecmopodracodificarseelregistrodeunapersonautilizandoXML:

<person>
<firstname>Pablo</firstname>
<lastname>Pazos</lastname>
<age>32</age>
<isAnEHealthNerd>true</isAnEHealthNerd>
<likes>
<item>medicalinformatics</item>
<item>oldmusic</item>
<item>thrillermovies</item>
</likes>
</person>

Unaalternativeutilizandoatributosdeelementos:

<person>
<namesfirstname="Pablo"lastname="Pazos"/>
<age>32</age>
<isAnEHealthNerd>true</isAnEHealthNerd>
<likes>
<item>medicalinformatics</item>
<item>oldmusic</item>
<item>thrillermovies</item>
</likes>
</person>

27
28

http://www.w3.org/XML/
http://www.w3.org/

19

AlgunasreglasgeneralesdeXML:

Lasetiquetasrepresentanunelementoporsunombre.
SiempredebehaberunaetiquetarazqueenglobetodoeldocumentoXML,enestecasoperson.
Todaslasetiquetasdebenabrirse<a>ycerrarse</a>.Cuandolaetiquetanotieneunvalordetexto,se
puedeespecificarcomo<a/>
Todaslasetiquetastienenunnombre,yparacerrarunaetiquetadebeusarseelmismonombrequepara
abrirla.
Nosepuedenintercalaraperturasycerraduras,ej.<a><b></a></b>esinvlido.
Loselementosdeunalistatambindebenestardentrodeetiquetas,enestecasoparalikes,cada
elementoestmarcadoenitem.
Losatributosdeloselementosdebendeclararsedentrodelaaperturadelaetiqueta.
Losvaloresdelosatributosdebenestarsiempreentrecomillas.

ExistenmltiplesherramientasparavalidardocumentosXML,porejemplo:http://www.xmlvalidation.com/

3.2.JSON

JavaScriptObjectNotation29 esunformatolivianodeintercambiodedatosestructuradosentresistemas.Estbasado
enunsubconjuntodelasintaxisdellenguajedeprogramacinJavascript,porloqueunobjetoJSONesunobjeto
Javascriptvlido.JSONesmuyutilizadoenaplicacionesWebyaqueJavascriptesimplementadoportodoslos
navegadoresWebmodernos,inclusoendispositivosmviles.Porestemotivo,JSONesunagranherramientaparala
comunicacinentrenavegadoresyservidoresWeb,sinnecesidaddeinstalaragregadosoextensionesalnavegador
niutilizarotrastecnologascomoFlashoAppletsJava.

JSONesunformatofcilmentelegibleporhumanos,ysusintaxispuedeserprocesadaporcualquierlenguajede
programacinmoderno.

Frenteaalternativaspararepresentardatosestructurados,comoXML,tienelasventajasantesmencionadas:ms
livianoymsfcildeleerporhumanos.

Ensusitiooficialesposibleaccederalaespecificacindelasintaxisyencontrardecenasdeherramientasque
implementanJSONendistintastecnologas.

3.2.1.ComentariossobreelformatoJSON

AcontinuacinsemuestraunejemplodecmosepodrarepresentarunapersonautilizandoJSON:

{
"firstname":"Pablo",
"lastname":"Pazos",
"age":32,
"isAnEHealthNerd":true,
"likes":[
"medicalinformatics",
"oldmusic",
"thrillermovies"
]
29

http://www.json.org/

20

ParavalidarlasestructurasJSONseutilizalaherramientaJSONLint30 ,construidaporelcreadordeJSON,Douglas
Crockford.Existenmltiplesherramientasonline31 tantoparaeditarJSONcomoparavalidarsuestructura.

3.3.ER7

EncodingRulesparaHL7esunaseriedereglasdecodificacinbasadaenelformatoEDI(ElectronicData
Interchange),dondeserepresentaunmensajecomounconjuntodesegmentosycamposdefinidosmediante
delimitadores.

ER7definelossegmentosseparndolosmedianteunsaltodelnea<CR>(ASCII0x0D).Cadasegmentotieneun
identificadorcodificadoentrescaracteres,yestcompuestodevarioscamposseparadosporeldelimitadorde
segmento,pordefectoesunabarravertical|.Cadacampopuedetenervarioscomponentes,queengeneralse
separanutilizandoelcarcter^comodelimitador.Laestructurainternadecadacampodependerdeltipodedato
asociadoalmismo.

EjemplodemensajeHL7v2.5paraadmitiraunpaciente:

MSH|^~\&|SRC_APP|SRC_CNTR|TARGET_APP|TARGET_CNTR|201401271408||ADT^A04^ADT_A01|123456|T|2.5|
PID|||PATID||PAZOS^PABLO||19811024|M|||1234MIGUELBARREIRO^^Montevideo^Montevideo^11300^UY||(598)1234567|
PV1|||BOX1^^^DEPTO.EMERGENCIA^^^EDIFICIOCENTRAL||||123^HOUSE^GREGORY|

Enlaseccin5.1.1severelformatodemensajesHL7v2.x.

HL7tambindefinereglasdecodificacindemensajesenXML 32.SibienXMLpuedepresentaralgunasventajascomo
legibilidadyfacilidaddeprocesamiento,tambinpresentaungranaumentoeneltamaototaldelosmensajes33 .

http://jsonlint.com/
http://jsonviewer.stack.hu/
32
http://www.hl7.org/implement/standards/product_brief.cfm?product_id=275
33
https://msdn.microsoft.com/enus/library/ee409267.aspx
30
31

21

4.EstndaresXML
4.1.XPath

XPath,ellenguajederutasdeXML,esunlenguajedeconsultaselcual,utilizandolaestructurajerrquicadeXML,
permiteseleccionarnodosdeundocumentoXML.Unarutaconsisteenunasecuenciadepasos,ycadapasotiene
trescomponentes:

eje:especificalarelacinentrelosrbolesdelosnodosseleccionadosporelpasoyelnododecontexto.
pruebadenodo:especificaeltipodenodoyelnombreexpandidodelosnodosseleccionadosporelpaso.
predicado:ceroomspredicadospuedenserpartedeunpaso,sonexpresionesquepermitenrefinarla
seleccindenodosdelpaso.

Ejemplodepaso:eje::prueba[predicado/s]

EnunaXPathelprimer"/"representaalnodoraz,mientrasque"/"subsecuentesrepresentanlosseparadoresde
pasos.Debetenerencuentaquecadapasopuederetornarunasecuenciadenodosovaloresatmicos,perono
ambos.

4.1.1.Especificadoresdeejes

LasespecificacionesdeejesindicanelsentidodelrecorridodelrbolrepresentadoporelXML.Losejesdisponibles
son:

Sintaxiscompleta Sintaxisabreviada

Comentarios

ancestor

Devuelvelosnodosancestrosdelnodoactual.

ancestororself

Devuelvelosancestrosdelnodoactualyelnodoactual.

attribute

child

Devuelvelosatributosdelnodoactual.

@attrabreviaattribute::attr

Ejemplo:todoslosatributosdeltypeIddeunCDA

/a:ClinicalDocument/a:typeId/@*

Ejemplo:todoslosatributosdelosnodoshijoderecordTargetenun
CDA:

/a:ClinicalDocument/a:recordTarget//*/@*

Devuelvelosnodoshijosdelnodoactual.

nombre_del_nodo
nombre_del_nodoabreviachild::nombre_del_nodo

22

Ejemplo:seleccionatodoslosnodoshijosdirectosdelnodopadre
"ClinicalDocument"

/a:ClinicalDocument/*

descendant

descendantorself

//

http://www.quackit.com/xml/tutorial/xpath_axis.cfm

Ejemplo:seleccionatodoslosdescendientesde"ClinicalDocument"

/a:ClinicalDocument/descendant::*
Ejemplo:seleccionatodoslosnodosdescendientesde"recordTarget"
dentrodeunCDA

/a:ClinicalDocument/a:recordTarget//*

following

Nodosqueaparecenluegodelnodoactual.

followingsibling

Nodoshermanosqueaparecenluegodelnodoactual.

namespace

Espaciodenombresdelnodoactual.

..

..abreviaparent::node()

Ejemplo:seleccionael"recordTarget"enunCDA,yendohaciasu
subnodo"patientRole"yseleccionandosuparent

/a:ClinicalDocument/a:recordTarget/a:patientRole/..

Nodosqueaparecenantesdelnodoactual.

Ejemplo:seleccionatodoslosnodosqueaparecenantesdelnodo
"patientRole"enunCDA

/a:ClinicalDocument/a:recordTarget/a:patientRole/preceding::*

precedingsibling

Nodoshermanosqueaparecenantesdelnodoactual.

Ejemplo:seleccionatodolosnodoshermanosqueaparecenantesdel
nodo"patient"enunCDA

/a:ClinicalDocument/a:recordTarget/a:patientRole/a:patient/precedingsi
bling::*

self

.abreviaself::node()

parent

preceding

4.1.2.Pruebadenodo
Laspruebasdenodosoncondicionessobrelosnombresdenodosotiposdenodos(elemento,atributo,texto,
comentario,etc.)PermitendeterminarculesnodosdelejeactualsonseleccionadosporunpasoenlaXPath.

Prueba

Comentario
Encuentratodoslosnodos,
independientementedel
nombre.Sirvepara
elementosoatributos.

Ejemplos
Ejemplo:Seleccionatodoslosatributosdelelemento"code"enun
CDA

/a:ClinicalDocument/a:code/@*

23

Ejemplo:Seleccionatodosloselementoshijosdelelemento
"recordTarget/patientRole"

/a:ClinicalDocument/a:recordTarget/a:patientRole/*
prefijo:

SieldocumentoXMLdefine
unespaciodenombres
(namespace).

SienunCDAalespaciodenombresxmlns="urn:hl7org:v3"sele
asignaelprefijo"a",verejemplosdearribapara*

Ejemplo:Encuentraloscomentariosdentrodelelemento
"ClinicalDocument"enunCDA

/a:ClinicalDocument/comment()
Encuentracomentariosenen
comment()
elXML.
Ejemplo:Encuentraloscomentariosdentrodelcuerpodeun
documentoCDA(dentrodecualquiernododescendiente,notareleje
"//")

/a:ClinicalDocument/a:component//comment()
text()

node()

Ejemplo:Encuentraeltextodelelemento"title"enunCDA
Encuentranodosdetextoen

elXML.
/a:ClinicalDocument/a:title/text()

Encuentracualquiernodo.

Ejemplo:Encuentratodoslosnodoshijos,incluyendocomentarios,de
"ClinicalDocument"enunCDA

/a:ClinicalDocument/node()

4.1.3.Predicados

Lospredicadospermitenseleccionarnodosespecficosmediantecondiciones,quecuandoseevalana"verdadero",
devuelvenelnodocorrespondiente.LospredicadosseespecificanentreparntesisrectosdentrodelaXPath.

Funcin/
Operador

Comentario

Ejemplos

Unindedosconjuntosdenodos

and,or,not()

Operadoresbooleanos,notesuna
funcin.

Ejemplo:seleccionatodoslosnodoscuyonombre
notienelargo6

//*[not(stringlength(localname())=6)]

Operadoresaritmticos.

Operadoresdecomparacin.

Ejemplo:SeleccionalaseccindeunCDA

/a:ClinicalDocument//a:component/a:section[a:co
de/@code="101550"]

Funcionessobretirasdecaracteres.

Referencia:
http://www.quackit.com/xml/tutorial/xpa
th_string_functions.cfm

Ejemplo:seleccionatodoslosnodoscuyonombre
empiezacon"effective"

//*[startswith(localname(),"effective")]

+,,*,div,mod

=,!=,<,>,<=,>=

concat(),
substring(),
substringbefore(),
contains(),
stringlength(),
startswith()

24

Ejemplo:seleccionatodoslosnodoscuyonombre
tienelargo6

//*[stringlength(localname())=6]
sum(),round(),
floor(),ceiling()

name(),
localname(),
namespaceuri()

position(),last(),
count()

Funcionessobrenmeros.

Funcionesparaobtenerpropiedadesde
losnodos.

+localname:nombresinelprefijodel
espaciodenombres.

+name:nombredelnodoactual
incluyendoelprefijoasignadoalespacio
denombres,sediferenciadelocalname
cuandolosnodostienenprefijoenel
XML,sinoeselmismovalor.

+namespaceuri:uridelnamespacedel
nodoactual.

Ejemplo:seleccionartodoslosnodos"id"dentro
deunCDA

//*[localname()="id"]

Ejemplo:seleccionartodoslosnodosdentrodel
espaciodenombres"urn:hl7org:v3"

//*[namespaceuri()="urn:hl7org:v3"]

Ejemplo:seleccionatodoslosnodos
"effectiveTime"dentrodelespaciodenombres
"urn:hl7org:v3"

//*[localname()="effectiveTime"and
namespaceuri()="urn:hl7org:v3"]

Funcionesparaobtenerinformacin
sobreelcontextodeprocesamiento.

+position:nmeroquerepresentala
posicindelnodoenlasecuenciaactual
denodosqueestnsiendoprocesados.

+last:ltimaaparicindeunnodohijo
dentrodeunnodopadre,sislohayun
subnodo,eseserelprimeroyelltimo.

+count:cuentalasocurrenciasdeun
nodooatributo.

Ejemplo:seleccionatodoslosnodosdescendientes
de"ClinicalDocument"quetienenmsde1
atributo

/a:ClinicalDocument//*[count(@*)>1]

Ejemplo:seleccionalosnodosquetieneunooms
subnodos"id"dentrodeunCDA

//*[count(a:id)>0]

Ejemplo:seleccionatodaslosnodos,quedentro
desunodopadreseanelsegundonodo

//*[position()=2]

Ejemplo:seleccionatodoslosltimosnodoshijo
dentrodecadanodopadre

//*[last()]

Ejemplo:seleccionatodoslospenltimosnodos
dentrodecadanodopadre

//*[position()=last()1]

25

string(),number(),
Funcionesdeconversindetipos.
boolean()

@atributo

Devuelvelosnodosquetienenun
atributollamado"atributo".

Ejemplo:seleccionatodoslossubnodosconun
atributo"code"deunCDA

//*[@code]

Ejemplo:seleccionatodoslossubnodoscon
atributos"code"y"codeSystem"deunCDA

//*[@codeand@codeSystem]

4.2.XSD

XMLSchemaDefinition(XSD)esunarecomendacindelW3C,dondeseespecificauntipoespecialdedocumento
XMLqueesutilizadoparadescribirloselementosdecualquierdocumentoXML.Estasdescripcionesseespecifican
comounconjuntodereglasyrestricciones,lascualessepuedenverificarcontraundocumentoXMLparadecirsiel
mismocumpleonoconunXSD.Enelcasodeintercambiodedatosentresistemas,utilizandoXML,elusodeXSDes
importanteparaverificarlavalidezdelosdatosemitidosyrecibidos,paraevitarerroresdeprogramacin,erroresde
comunicacinyerroresdeprocesamiento.

UnXSDestcompuestoporlossiguienteselementos:

1. Declaracindeelementos:definelaspropiedadesdeloselementosdelXML,comosunombre,espaciode
nombres,eltipoasociadoalelemento,qurestriccionestendr,queatributostendr,etc.
2. Declaracindeatributos:definelaspropiedadesdelosatributosdeunelementoXML,comosunombre,
espaciodenombres,altipoasociadoalatributoyrestriccionessobrelosposiblesvaloresquepodrtenerel
atributo.
3. Declaracindetipos:lostipospuedensersimplesocomplejos,lostipossimplespuedencontener
restriccionessobrelostiposprimitivos,lostiposcomplejospuedencontenerrestricciones,subelementosy
atributos.
4. Tiposdedatosprimitivos:
a. anyURI:representaURIsabsolutasrelativas.
b. base64Binary:representadatosbinarioscodificadoscomocaracteresenbase64.
c. hexBinary:representadatosbinarioscodificadoscomocaractereshexadecimales.
d. boolean:representavaloresbinariosdeverdad(true,false).
e. decimal:representaunsubconjuntodelosnmerosreales,obtenidosdemultiplicarunnmero
enteroporunapotenciade10nopositiva(i*10^n,dondei,nsonenteros,yn>=0).
f. double:representanmerosdepuntoflotantedeprecisindoblede64bits(m*2^e,dondemesun
nmeroentero,|m|<2^53,yeesunenterotalque1075<=e<=970).
g. duration:representaunaduracintemporalde6componentes:ao,mes,da,horas,minutos,
segundos.
h. float:representanmerosdepuntoflotantede32bits(m*2^e,dondemesunentero,|n|<2^24,y
eesunenterotalque149<=e<=104).
i. gDay:representaundaespecficoencualquiermes.
j. gMonth:representaunmesespecficoencualquierao.
k. gMonthDay:representaundaespecficodentrodeunmesespecfico.
l. gYear:representaunaoespecfico.
m. gYearMonth:representaunmesespecficoenunaoespecfico.
n. NOTATION:representaeltipodeatributoNOTATIONdelaespecificacinXML1.0

26

o. QName:representaunnombrecalificadodentrodelXML,sevaaquitardelarecomendacin.
p. string:representaunacadenadecaracteresdetamaoacotado.
q. dateTime:representaunpuntoeneltiempo,convaloresparaelao,mes,da,horas,minutos,
segundos,yzonahoraria.
r. date:representaunintervalodetiempodeexctamenteundadeduracin,quecomienzaalinicio
deldaencadazonahoraria.yterminaenelmomentoquecomienzaelnuevoda.
s. time:representauninstantedetiempoqueserepitediariamente.
5. Tiposdedatosderivados:
a. normalizedString:representaunstringquenocontieneloscaracteresderetornodecarro,nueva
lnea,otabulador.
b. token:esunnormalizedStringquenocontieneespaciosenblanconialinicionialfinal,ynotiene
secuenciasdedosomsespaciosconsecutivos.
c. language:representaunidentificadordelenguagesegnlaRFC306634 .Esuntoken.
d. NMTOKEN:representaeltipodeatributoNMTOKENdeXML1.0.Esuntoken.
e. NMTOKENS:representaeltipodeatributoNMTOKENSdeXML1.0.EsunNMTOKEN.
f. Name:representalosnombresvlidosenXML,esuntokenquecomienzaconunaletraoconalguno
deestoscaracteres:'_'|':'.
g. NCName:representanombres"nocolonizados",bsicamenteesunNamequenopuedetener":".
h. ID:representaeltipodeatributoIDdeXML.EsunNCNamequeapareceunasolavezenun
documento.
i. IDREF:representaeltipodeatributoIDREFdeXML.EsunNCNamequeseutilizacomoreferenciaa
otroelementoquetieneunatributoID.
j. IDREFS:representaeltipodeatributoIDREFSdeXML.EsunconjuntonovacodeIDREF.
k. ENTITY:representaeltipodeatributoENTITYdeXML.EsunNCNamequerepresentadeforma
simblicainformacindentrodeunXML.Porejemplolaentidad"&amp;"representaelcaracter"&".
l. ENTITIES:representaeltipodeatributoENTITIESdeXML.EsunconjuntonovacodeENTITY.
m. integer:representaundecimalcuyoatributo"fractionDigits"es0,nopermitiendodgitosdecimales.
n. nonPositiveInteger:esunintegercuyoatributo"maxInclusive"es0.
o. negativeInteger:esunnonPositiveIntegercuyoatributo"maxInclusive"es1.
p. long:esunintegercuyoatributo"maxInclusive"es9223372036854775807ysuatributo
"minInclusive"es9223372036854775808.
q. int:esunlongcuyoatributo"maxInclusive"es2147483647,y"minInclusive"es2147483648.
r. short:esunintcuyoatributo"maxInclusive"es32767,y"minInclusive"es32768.
s. byte:esunshortcuyoatributo"maxInclusive"es127,y"minInclusive"es128.
t. nonNegativeInteger:esunintegercuyoatributo"minInclusive"es0.
u. unsignedLong:esunnonNegativeIntegercuyoatributo"maxInclusive"es18446744073709551615.
v. unsignedInt:esununsignedLongcuyoatributo"maxInclusive"es4294967295.
w. unsignedShort:esununsignedIntcuyoatributo"maxInclusive"es65535.
x. unsignedByte:esununsignedShortcuyoatributo"maxInclusive"es255.
y. positiveInteger:esunnonNegativeIntegercuyoatributo"minInclusive"es1.

34

http://www.w3.org/International/articles/languagetags/

27


35

DiagramadetiposdeXML

Nota:ElprotocoloSOAPhaceusoextensivodeesquemasXML,dondesedefinenlasestructurasinternasdelos
objetos,serializadosaXML,queseintercambianentreelclienteyelproveedordelservicioSOAP.

35

http://www.w3.org/TR/xmlschema2

28

29

4.2.1.EsquemaparadocumentosHL7CDA

EnestaseccinexpondremosunfragmentodelXSDdeCDA,comoejemploaplicadoalainteroperabilidadensalud.

4.2.1.1.DefinicindetipoparaelelementoClinicalDocument

Enestadefinicinpodemosverloselementoscorrespondientesalosdatosdelpaciente(recordTarget),delautordel
documento(author)ydelaorganizacinencargadadelacustodiadeldocumento(custodian),entreotros
elementos.

<xs:complexTypename="POCD_MT000040.ClinicalDocument">
<xs:sequence>
<xs:elementname="realmCode"type="CS"minOccurs="0"maxOccurs="unbounded"/>
<xs:elementname="typeId"type="POCD_MT000040.InfrastructureRoot.typeId"/>
<xs:elementname="templateId"type="II"minOccurs="0"maxOccurs="unbounded"/>
<xs:elementname="id"type="II"/>
<xs:elementname="code"type="CE"/>
<xs:elementname="title"type="ST"minOccurs="0"/>
<xs:elementname="effectiveTime"type="TS"/>
<xs:elementname="confidentialityCode"type="CE"/>
<xs:elementname="languageCode"type="CS"minOccurs="0"/>
<xs:elementname="setId"type="II"minOccurs="0"/>
<xs:elementname="versionNumber"type="INT"minOccurs="0"/>
<xs:elementname="copyTime"type="TS"minOccurs="0"/>
<xs:elementname="recordTarget"type="POCD_MT000040.RecordTarget"maxOccurs="unbounded"/>
<xs:elementname="author"type="POCD_MT000040.Author"maxOccurs="unbounded"/>
<xs:elementname="dataEnterer"type="POCD_MT000040.DataEnterer"minOccurs="0"/>
<xs:elementname="informant"type="POCD_MT000040.Informant12"minOccurs="0"maxOccurs="unbounded"/>
<xs:elementname="custodian"type="POCD_MT000040.Custodian"/>
<xs:elementname="informationRecipient"type="POCD_MT000040.InformationRecipient"minOccurs="0"
maxOccurs="unbounded"/>
<xs:elementname="legalAuthenticator"type="POCD_MT000040.LegalAuthenticator"minOccurs="0"/>
<xs:elementname="authenticator"type="POCD_MT000040.Authenticator"minOccurs="0"
maxOccurs="unbounded"/>
<xs:elementname="participant"type="POCD_MT000040.Participant1"minOccurs="0"maxOccurs="unbounded"/>
<xs:elementname="inFulfillmentOf"type="POCD_MT000040.InFulfillmentOf"minOccurs="0"
maxOccurs="unbounded"/>
<xs:elementname="documentationOf"type="POCD_MT000040.DocumentationOf"minOccurs="0"
maxOccurs="unbounded"/>
<xs:elementname="relatedDocument"type="POCD_MT000040.RelatedDocument"minOccurs="0"
maxOccurs="unbounded"/>
<xs:elementname="authorization"type="POCD_MT000040.Authorization"minOccurs="0"
maxOccurs="unbounded"/>
<xs:elementname="componentOf"type="POCD_MT000040.Component1"minOccurs="0"/>
<xs:elementname="component"type="POCD_MT000040.Component2"/>
</xs:sequence>
<xs:attributename="nullFlavor"type="NullFlavor"use="optional"/>
<xs:attributename="classCode"type="ActClassClinicalDocument"use="optional"fixed="DOCCLIN"/>
<xs:attributename="moodCode"type="ActMood"use="optional"fixed="EVN"/>
</xs:complexType>

30

4.2.1.2.DefinicindetipoparaelelementorecordTarget

ElsiguienteextractodeXSDdefinelaestructurainternadelnodoquerepresentaalpacientedentrodelos
documentosCDA.

<xs:complexTypename="POCD_MT000040.RecordTarget">
<xs:sequence>
<xs:elementname="realmCode"type="CS"minOccurs="0"maxOccurs="unbounded"/>
<xs:elementname="typeId"type="POCD_MT000040.InfrastructureRoot.typeId"minOccurs="0"/>
<xs:elementname="templateId"type="II"minOccurs="0"maxOccurs="unbounded"/>
<xs:elementname="patientRole"type="POCD_MT000040.PatientRole"/>
</xs:sequence>
<xs:attributename="nullFlavor"type="NullFlavor"use="optional"/>
<xs:attributename="typeCode"type="ParticipationType"use="optional"fixed="RCT"/>
<xs:attributename="contextControlCode"type="ContextControl"use="optional"fixed="OP"/>
</xs:complexType>

EsteesunfragmentodeCDAqueesvlidosegnlosfragmentosdeXSDexpuestosanteriormente:

<ClinicalDocumentxmlns="urn:hl7org:v3"xmlns:voc="urn:hl7org:v3/voc"xmlns:mif="urn:hl7org:v3/mif"
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<typeIdextension="POCD_HD000040"root="2.16.840.1.113883.1.3"/>
<idroot="2.16.858.2.10002886.67430.20130530150748.1"/>
<codecode="285742"codeSystem="2.16.840.1.113883.6.1"codeSystemName="LOINC"displayName="Notadealta"
/>
<title>Notadealta</title>
<effectiveTimevalue="201212240930000300"/>
<confidentialityCodecode="N"codeSystem="2.16.840.1.113883.5.25"/>
<languageCodecode="esUY"/>
<setIdroot="db734647fc99424ca8647e3cda82e703"/>
<versionNumbervalue="1"/>
<recordTarget>
<patientRole>
<idroot="2.16.858.1.858.68909"extension="41162380"/>
<patient>
<name>
<given>Pablo</given>
<given>Federico</given>
<family>Pazos</family>
<family>Gutirrez</family>
</name>
<administrativeGenderCodecode="1"displayName="Masculino"codeSystem="2.16.858.2.10000675.69600"/>
<birthTimevalue="19811024"/>
</patient>
</patientRole>
</recordTarget>
<author>
<timevalue="201212240930000300"/>
<assignedAuthor>
<idroot="2.16.858.2.10000675.69586"extension="12345"/>
<assignedPerson>
<name>
<prefix>Dr.</prefix>
<given>Juan</given>
<family>Perez</family>

31

</name>
</assignedPerson>
<representedOrganization>
<idroot="2.16.858.0.2.16.86.1.0.0.123"/>
<name>HospitalX</name>
</representedOrganization>
</assignedAuthor>
</author>
<custodian>
<assignedCustodian>
<representedCustodianOrganization>
<idroot="2.16.858.0.2.16.86.1.0.0.123"/>
<name>HospitalX</name>
</representedCustodianOrganization>
</assignedCustodian>
</custodian>
<component>
<structuredBody>
...
</structuredBody>
</component>
</ClinicalDocument>

4.2.2.ValidacindeXMLcontraXSD

ExistennumerosasherramientasparavalidardocumentosXML,yestatareatambinpuedeserrealizadamediante
programacin.

EnWindows,sepuedeutilizarlaherramientaNotepad++conelpluginXMLTools:https://notepadplusplus.org/

EnLinux,sepuedeutilizarlaherramientaxmlint:http://xmlsoft.org/xmllint.html

Paravalidacinenlnea,existenunsinnmerodeopciones,unadeellas:
http://www.freeformatter.com/xmlvalidatorxsd.html

32

5.HL7

HealthLevelSevenesunafamiliadeestndarescondosgrandesversiones,v2yv3.Aunquev2yv3nosonversiones
delmismoestndar,sinoestndaresdistintos,loquellevamuchasvecesaconfusin.Dentrodev2existenasuvez
muchassubversiones,desde2.1a2.8.2,lasquenotaremoscomoHL7v2.x.

HL7v2.xsedivideencaptulos,comoporejemplogestindepacientes,gestinderdenes,reportederesultados,
coordinacin,entreotros,ytambindefinevocabularioscomunesaserutilizadosdentrodelosmensajes.

5.1.HL7v2.x

LasespecificacionesdeHL7v2.xsedividenen15captulosmsalgunosanexos.Acontinuacinselistanestos
captulos.Loscaptulosquesetomarncomoreferenciaparaestecursosonlosmarcadosennegrita.

CH01:Introduccin
CH02:Control,Tiposdedatos
CH03:Gestindepacientes
CH04:Ingresoderdenes
CH05:Consultasdedatos
CH06:Gestinfinanciera
CH07:Reportedeobservaciones(resultados)
CH08:Archivosmaestros
CH09:Gestindearchivosmdicos
CH10:Coordinacin(citas,estudios)
CH11:Derivacindepacientes
CH12:Atencinalpaciente
CH13:Laboratorioclnico
CH14:Gestindeaplicaciones
CH15:Gestindepersonal

Estoscaptulosincluyenladefinicindemensajesyvocabularioscomunesaserutilizadosdentrodelosmensajes.
Estosvocabulariosdefinenconjuntosdetrminoscomotablas,dondecadatrminotieneunidentificadornico.
Ademscadatablatambintieneunidentificadornico.

EnHL7v2.x,elprotocolodecomunicacinestorientadoatransaccionesqueseimplementanmedianteel
intercambiodemensajes,engeneralseenvaunmensajeyserecibeotrocomorespuesta.Lasespecificaciones
indicantodoslostiposdemensajesquepuedenserenviados,ysusrespuestasasociadas.Engeneralpara

33

implementaruncasodeusocompletosenecesitanvariasdeestastransacciones,porejemploenelcasodelos
estudiosdelaboratorio,elenvodelaordendesdelaHCEalLABesunatransaccinyelenvoderesultadosdesdeel
LABalaHCEesotra.Comoprotocolodetransporte,HL7v2.xutilizaMLLPenlamayoradeloscasos,perotambin
esposibleutilizarHTTPuotroprotocolo,peroestoscasossonmenosfrecuentes.LaventajadeutilizarMLLPesla
performanceyelusoptimoderecursos.

HL7v2.xdefineelementosbsicosdelprotocoloquesirvenparacontrolarlastransaccionesypermitiruna
comunicacinefectivadedatos.Elprimerelementoeseleventodisparador(triggerevent),queesuneventoque
ocurreenelmundorealodentrodeunsistema,cuyoresultadoeselenvodeunmensaje.Porlotanto,todoenvo
demensajesenHL7debetenerasociadouneventodisparador.LaespecificacindeHL7definelasemnticadecada
eventoyasignauncdigonicoparaquelossistemaslointerpretensinambigedad.Unsegundoelementosonlos
mensajesdereconocimiento(acknowledgeoACK),quepermitenenviarunarespuestaantelarecepcindeun
mensaje,indicandosielmensajehasidorecibidoyprocesadodeformacorrecta.Anteerrores,losmensajesACK
puedencontenerdescripcionesdetalladasdelosproblemasencontrados.Estacaractersticapermiteasegurarque
todoslosmensajesenviadosfueronrecibidosyprocesados.Untercerelementoeseltipodetransaccin.Existen
mensajesorientadosalacreacin,modificacin,eliminacinyconsultadedatos,enelsistemareceptor.

LosmensajesHL7v2.xpuedencodificarseenER7(verseccin3.3)oenXML.

5.1.1.FormatodemensajesHL7v2.x

Comofuemencionadoanteriormente(verseccin6.3),losmensajesHL7v2.xsiguenlacodificacinER7,quesebasa
endelimitadores.Losdelimitadoressedefinenalprincipiodecadamensajeyengeneralsonlosmismos,aunque
puedenvariar.Porlotantoelprocesamientodemensajesnodeberasuponerculessonlosdelimitadoresutilizados,
sinoquedeberatomarlosquevienenencadamensaje.

LosdelimitadoresmarcanelcomienzoyfindedistintoselementosqueconformanlosmensajesHL7v2.x.A
continuacinsemencionanlosdelimitadoresutilizadospordefecto:

Delimitador
Terminacinde
segmento

Valorsugerido

Posicindentro
deMSH2

Uso

ASCII0x0D(retorno

decarro)

Estevalornopuedesermodificadoenla
implementacin

Separadorde
campos

ASCII0x7C(|)

Separadoscamposdedatosadyacentesdentrodeun
segmento.Tambinseparaelidentificadordel
segmentodelprimercampo.

Separadorde
componentes

ASCII0x5E(^)

Separadorde
repeticin

ASCII0x7E(~)

Separamltiplesocurrenciasdecomponentesdentro
deuncampo.

Carcterde
escape

ASCII0x5C(\)

Utilizadodentrodecamposdetipotexto(ST,TX,FT)o
dentrodecomponentesquecontienentirasde
caracteres,dondeaparecencaracteresdecontrol.

Separadorde
ASCII0x26(&)
subcomponente

Separasubcomponentesadyacentesdentrodeun
componente.

Separacomponentesadyacentesdentrodeuncampo.

Entonces,elprimersegmentodetodoslosmensajesdebertenerelmismoformato:

34


MSH|^~\&|...

AcontinuacinsedescribenlosdistintoselementosqueconformanlosmensajesHL7.

Figura4:modelogeneraldemensajesHL7v2.x

5.1.3.1.Mensaje

Unmensajeestconformadoporunconjuntodesegmentos,elprimerodeloscualeseselcabezaldelmensaje,
dondeserepresentainformacinnecesariaparalatransferenciadedatosenunaredyprocesamientodelmensaje
porpartedelasaplicacionesreceptoras.Alrestodelossegmentosselesllamacuerpodelmensaje.Elsegmento
cabezalestidentificadorporloscaracteresMSH(MessageHeader).

5.1.3.2.Segmento

Todoslosmensajescontienenmsdeunsegmento.Cadasegmentoesdeuntipoespecficoqueseidentificacon
trescaracteres.Eltipodesegmentodeterminaquinformacinsercontenidaenesesegmento.Cadatipode
segmentotieneunaestructurapredefinidaenelestndar,lacualcontieneladefinicindeunconjuntodecamposy
suscaractersticas,porejemplosisonobligatoriosono,sisepuederepetir,etc.

5.1.3.3.Campo

Unsegmentoestconformadoporunconjuntodecamposoatributos.Paraidentificaruncampodentrodeun
segmentoseutilizaunndice,porejemploelcampoMSH9referenciaalcampomessagetypedelsegmentoMSH.
Cadasegmentotieneuntipodedatoasociado,unnombrequeindicaloquerepresentaelcampo,porejemplo
identificadordelpaciente.Sielcamporepresentauncdigo,enladefinicindelsegmentotambinseincluyede
qutablasedebesacarelvalorparadichocampo,porejemploelcamposexoadministrativodebetomarsuvalor
delatabla0001dondeestnlosvaloresvlidosdesexoparaHL7.

5.1.3.4.Tipodedato

Lostiposdedatosdeterminancmosecodificanloscamposinternamente.Lostiposdedatosespecificanestructuras
decomponentesysubcomponentesdondesecolocandatossimples,estospodranserdeocurrenciamltiple
(delimitadosmedianteelseparadorderepeticin).

35

5.1.2.Tiposdemensajes

Lostiposdemensajeseidentificanmediantecdigosdetrescaracteres.Estoscdigosestndefinidosenlatabla
0076deHL7.Algunosdelostiposmsusadosson36 :

5.1.4.1.ACK

Mensajegeneraldeconfirmacin(acknowledge),utilizadoparaconfirmarlarecepcindeunmensajeeinformarde
posibleserroresenelprocesamientodelmensajeporpartedelreceptor.Ejemplos:

MSH|^~\&|HIS|System|Hosp|HL7Genie|20071016055244||ACK^A01|A234242|P|2.3.1|
MSA|AA|234242|MessageReceivedSuccessfully|

MSH|^~\&|BROKER.RECEIVER.FLOW||ADT|767543|20090824222730||ACK|XX3657|P|2.5
MSA|AE|ZZ9380|MSHparsingorvalidationerror:MSH.3.SendingApplicationisnull|1

5.1.4.2.ADT

Mensajeutilizadoparacomunicarinformacindelpacientealmomentoseradmitido(Admission),dadodealta
(Discharge),otransferido(Transfer)aotroservicioocentroasistencial(T).Estemensajeincluyetambininformacin
dellugarfsico(centroasistencialypuntodeatencin),delmdicoquevaaatenderalpaciente,informacinde
contactos,etc.Inclusopermitecomunicaralgunainformacinclnicatilparalaatencinmdicaqueselebrindar
alpaciente,porejemploalergias,resultadosdeestudios,informacindeunaccidente(ej.paraunaatencinde
urgencia),etc.Ejemplo:

MSH|^~\&|EPIC|EPICADT|SMS|SMSADT|199912271408|CHARRIS|ADT^A04|1817457|D|2.5
EVN|A04|199912271300
PID||0493575^^^2^ID1|454721||DOE^JOHN|DOE^JOHN|19480203|M||B|254MYSTREET
AVE^^MYTOWN^OH^44123^USA||(216)1234567|||M|NON|400003403
NK1|1|ROE^MARIE|SPO||(216)1234567||EC
PV1||O|BOX1^^^ER||||277^ALLEN
MYLASTNAME^BONNIE||||||||||||2688684|||||||||||||||||||||||||199912271408||||||002376853

5.1.4.3.OML

Mensajeparardenes,tantodeestudiosdelaboratoriocomootrostiposderdenes.AunqueelmensajeORM
puedeserutilizadoconestepropsito,OMLtienelaventajadepermitirutilizardatosreferidosalamuestrayal
contenedordemuestras.Eleventodisparadordeestemensajeescualquieraquealtereelestadodeunaorden,
desdelacreacinhastasuejecucin,pasandoporcancelacinomodificacin.

MSH|^~\&|OP|Entgastric|OF|Chem|200309060820||OML^O21^OML_O21|msgOP123|T|2.5.1|123
PID|1||12345^5^M10^Memphis_Hosp^PI||EVERYMAN^ADAM^^JR^^^L||19800101|M
PV1|1|O|Ward|||||||||||||||12345
ORC|NW|12345^gastric||666^gastric|||||200309060710|2221^NURSE^NANCY|||||||||||Entgastric^^^^^^FI^^^EG02
TQ1|||||||||A
OBR||12345678^gastric||82951^GlucoseToleranceTest^C4||||||1234^BLEEDER|P|||||222222^PHYSICIAN^^^^DR|821
OBX|1|NM|GLUCOSE||75|g|||||F|||200309060735
SPM|1|123456781^gastric||SER|||||||P||||||200309060735|||||||||1
SPM|2|123456782^gastric||SER|||||||P||||||200309060755|||||||||1
36

http://www.hl7.org/special/committees/vocab/v26_appendix_a.pdf

36

SPM|3|123456783^gastric||SER|||||||P||||||200309060815|||||||||1

5.1.4.4.OMP

Mensajeparardenesdefarmaciaotratamientos.

MSH|^&~\|Pharm|GenHosp|CIS|GenHosp|1998052911150700||OMP^O09^OMP_O09|...
PID|...
ORC|NW|1000^OE||||E|^Q6H^D10^^^R|...
RXO|^Polycillin500mgTAB^|500||MG|||||Y||40|...
RXR|PO|...

5.1.4.5.ORL

Respuestaamensajesderdenesdelaboratorio(OML).Seutilizacomoacknowledge.Ejemplo:

MSH|^~\&|OF|Automation|OP|Cytology|200310060826||ORL^O34^ORL_O34|301|T|2.5.1
MSA|AA|101
PID|1||6543210^^^AbbevilleHospital^PI||ILL^JOHN^^^^^L||19810101|M
SPM|1|456_1^Cytology||BLD|||||||P||||||200310060735|200310060821||||||||1
ORC|OK|||555^Urology|SC||||200310060710|^NURSE^JANET|||||||||||Urology^^^^^^FI^^^UR01
TQ1|1||||||||R
OBR|1|456^Cytology||85027^Hemogramandplateletcount,automated^C4||||||^COLLECT^JOHN|S|||||^URO^^^^DR
ORC|OK|||555^Urology|SC||||200310060710|^NURSE^JANET|||||||||||Urology^^^^^^FI^^^UR01
TQ1|1||||||||R
OBR|1|457^Cytology||85009^DifferentialWBCCount,buffycoat^C4||||||^COLLECT^JOHN|S|||||^URO^^^^DR

5.1.4.6.ORM

Mensajeparardenesengeneral,seutilizaporcompatibilidadhaciaatrs.Serecomiendautilizarmensajesms
especficosparalasrdenescomoOMLparardenesdelaboratorio.ORMpermitecrearrdenes,onotificarde
cancelacinomodificacindelasmismas.Ejemplo:

MSH|^~\&|MESA_OF|XYZ_RADIOLOGY|MESA_IM|XYZ_IMAGE_MANAGER|||ORM^O01|100112|P|2.3.1||
PID|||M4000^^^ADT1||KING^MARTIN||19450804|M||WH|820JORIEBLVD^^CHICAGO^IL^60523|||||||20984000|
PV1||E|ED||||1234^WEAVER^TIMOTHY^P^^DR|5101^NELL^FREDERICK^P^^DR|||||||||||V100^^^ADT1||||||||||||||
|||||||||||200008201100|||||||V|
ORC|NW|A100Z^MESA_ORDPLC|B100Z^MESA_ORDFIL||SC||1^once^^^^S||200008161510|^ROSEWOOD^RANDOLPH||7101^ESTRADA^J
AIME^P^^DR||(314)5551212|200008161510||92222910^IHERAD^IHECODE231||
OBR|1|A100Z^MESA_ORDPLC|B100Z^MESA_ORDFIL|P1^Procedure1^ERL_MESA^X1_A1^SPActionItem
X1_A1^DSS_MESA|||||||||xxx||Radiology^^^^R|7101^ES
TRADA^JAIME^P^^DR||XR999999|RP123456|SPS123456||||MR|||1^once^^^^S|||WALK|||||||||||A|||RP_X1^RPActionItem
RP_X1^DSS_MESA
ZDS|1.2.1^100^Application^DICOM

5.1.4.7.ORU

Mensajedeobservaciones.Seutilizaparacomunicarresultadosdelaboratorioydeimagenologavinculadosauna
orden,haciadiversossistemas.Ejemplo:

MSH|^~\&|LAB|SCC|STOCKELL|0010|201201020155||ORU^R01|25238212|P|2.3
PID|1||222225||Pluto^Dog^A||19560101|M|||1248KINNEYS
LANE^^PORTSMOUTH^PORTSMOUTH^OH^45662||7402565000|||M||1111115|

37

PV1|1||ERF||5780629||1111^EPMG^INC.||||||||||1111^EPMG^INC.|||||||||||||||||||||||||||201201020110
ORC|RE|017161095001|730203266|73020326|||^^^201201020119^^S||201201020120|INFO||8480^MCKAIN^CHRISTINE|ERF
OBR|1|||LIP^Lipase|||201201020133|||SND||||201201020134||8480^MCKAIN^CHRISTINE|||||||||F
OBX|1|NM|LIP^Lipase^SL^LIPL||200|U/L|65230||||F|||201201020154

5.1.4.8.OUL

Mensajedeobservacionesdelaboratorio,seutilizaparaenviarresultadosdeestudiosvinculadosaunamuestra.Se
utilizafrecuentementeenlagestindeestudiosyresultadosdentrodellaboratorio.Ejemplo:

MSH|^~\&|OF|Chemistry|ORT||200309060825||OUL^R22^OUL_R22|msgOF103|T|2.5.1
PID|1||12345^5^M10^Memphis_Hosp^PI||EVERYMAN^ADAM^^JR^^^L||19800101|M
PV1|1|O|Ward|||||||||||||||12345
ORC|SC|12345^gastric||666^gastric|IP||||200309060824|222221^NURSE^NANCY|||||||||||Entgastric^^^^^^FI^^^EG02
OBR||12345678^gastric|555^chemistry|82951^GlucoseTolerance
Test^C4||||||1234^BLEEDER|P|||||222222^PHYSICIAN^^^^DR|821||||||||I
TQ1|||||||||A
OBX|1|NM|GLUCOSE||75|g|||||F|||200309060735
OBX|2|NM|302646^GLUCOSE40MPOSTDOSEGLUCOSE^LN||||||||X
SPM|1|123451^gastric||SER|||||||P||||||200309060735|200309060821||Y||||||1
SPM|2|123452^gastric||SER|||||||P||||||200309060755|200309060821||Y||||||1
SPM|3|123453^gastric||SER|||||||P||||||200309060815|200309060821||N|RB^Brokencontainer|||||1

5.1.4.9.RDS

Mensajededispensacindefarmaciaotratamiento.Sueleutilizarsecomonotificacindesdelossistemasde
enfermeradondesegestionalaejecucindelaadministracindeunmedicamentooelcumplimientodecierto
tratamiento.

MSH|^&~\|PIMS|GenHosp|IE||1998052911150700||RDS^O13^RDS_O13||...
PID|||555444222111^^^MPI&GenHosp&L^MR||Everyman^Adam||19600614|M||C|99Oakland#
106^^Pasadena^CA^91131||^^^^^626^5641111|^^^^^626^5647654|||||343132266|||N|...
ORC|RE||89968665||||||1998052910300700|||77^Hippocrates^Harold^H^III^DR^MD||^^^^^510^2673600|...
RXE|1^BID^^19980529|^Verapamil|120||mg^milligram^FDB.MDDB||...RXD|1|00378112001^VerapamilHydrochloride120
mgTAB^NDC|1998052911150700|100|||1331665|3|...
RXR|PO|...
FT1|1|||1998052911150700||CO^CoPay^HL70017|00378112001^VerapamilHydrochloride120mgTAB^NDC
|||1|5&USD^TP|...
FT1|2|||1998052911150700||PY^Payment^HL70017|00378112001^VerapamilHydrochloride120mgTAB^NDC
|||1|5&USD|...

5.1.4.10.RRD

Mensajederespuestaaladispensacindefarmaciaotratamiento(RDS).Seutilizacomoacknowledge.

38

5.1.3.Eventosdisparadores

ElprotocoloHL7v2.xsebasaenelenvodemensajesytodomensajeenviadodebetenerasociadounevento
disparador.Esteeventoocurretantoporaccindeunapersonacomodeunsistemaenelmundoreal,yayudaa
diferenciarlascondicionesbajolascualesserecibeunmensajedeciertotipo,debidoaquemensajesdeunmismo
tipopuedenserdisparadospordistintoseventosbajodistintascondiciones.Loseventosestndefinidosenlatabla
0003deHL7.Acontinuacinsedescribenalgunosdeloseventosdisparadoresmsutilizados.

5.1.3.1.Eventosparaadmisiones,altasytransferencias(ADT)

LossiguienteseventosdisparanmensajesdetipoADT:

A01
Notificacindevisitaoadmisin.Seutilizacuandoelpacienteeshospitalizadoyseleasignaunlugarfsicocomoun
cuartoocama.

A02
Notificacindetransferencia.Seutilizacuandoelpacienteestransferidodeunaubicacinaotra.

A03
Notificacindealta.Seutilizacuandofinalizalaatencinalpacienteyellugarqueocupabaquedalibreparaser
asignadoaotropaciente.

A04
Notificacinderegistrodepaciente.Seutilizaparanotificarcuandounpacienteambulatorioesrecibidoparauna
consulta.

A05
Notificacindepreadmisindelpaciente.Seutilizaparanotificarelcomienzodelprocesodepreadmisin,oseael
registrodelpacienteprevioaserhospitalizado(A01).

A08
Notificacindemodificacindeinformacindelpaciente.Seutilizaparanotificarcambiostantodelavisitao
encuentro,comodatosdemogrficosdelpaciente.SeutilizacuandonoexisteotroeventoAXXmsespecfico.

A11
Notificacindecancelacindeadmisin.

A12
Notificacindecancelacindetransferencia.

A40
Notificacindeunindeidentificadoresdelpaciente.Seutilizacuandodosomsregistrosdepacientes,que
correspondenalmismopaciente,sonconsolidados.

Porunalistacompletadeeventos,vealatabla0003enlasespecificacionesdeHL7v2.537 .
37

https://www.hl7.org/implement/standards/product_brief.cfm?product_id=143

39

5.1.4.Tiposdesegmentos

Cmosecomentpreviamente,unmensajeestcompuestodeunaseriedesegmentos,dondeelprimeroesel
cabezaldelmensajeMSH(messageheader).Lossegmentosseutilizarnenlaseccin7.6dondesedescribirn
distintostipodemensajesHL7.Acontinuacinsedescribenalgunosdelostiposdesegmentosmsutilizados.

5.1.4.1.MSH(MessageHeader)

Informacindelcabezaldelmensaje,incluyecamposconlaidentificacindelemisoryreceptordelmensaje,versin
deHL7utilizada,identificadordelatransaccin,fechadeenvo,etc.

5.1.4.2.EVN(Event)

Segmentoconinformacinsobreeltipodeevento.Seutilizaparacomunicarinformacindecontextonecesaria
sobreeleventodisparadorparaqueelmensajeseaprocesadocorrectamenteporelreceptor.

5.1.4.3.PID(PatientIdentification)

Estesegmentocontieneinformacindeidentificacindelpaciente.Seutilizaentodotipodemensajesparasabera
qupacientecorrespondeunaorden,unresultado,unaadmisin,etc.Contieneinformacindeidentificadores,
nombresyapellidos,fechadenacimiento,sexo,informacindecontacto,etc.

5.1.4.4.NK1(NextofKin)

Estesegmentoseutilizaparaespecificarinformacindepersonasasociadasalpaciente,comounapersonade
contacto,unacompaante,unfamiliar,etc.Incluyeinformacincomonombresyapellidos,tipoderelacinconel
paciente,informacindecontacto,etc.

5.1.4.5.PV1(PatientVisit)

Estesegmentoesutilizadoporaplicacionesderegistracinogestindepacientesparacomunicarinformacinsobre
unacuentaosobrelavisitadelpaciente(ej.unahospitalizacinoconsultamdica).Contieneinformacinacercadel
tipodepaciente,identificadoresdepreadmisinydeadmisin,tipodeadmisin,elservicioalquefueadmitido,
informacinsobrelosmdicos(quienadmite,quienrefiere,mdicoconsultante,etc.),informacinfinanciera,etc.

5.1.4.6.OBX(Observation)

Segmentodeobservaciones,engeneralcontieneelresultadodeunestudioindividual.

5.1.4.7.OBR(ObservationRequest)

40

Segmentodepedidodeobservacin,esutilizadoenlasrdenesdeestudiosparaindicarcadaestudiopedidodentro
deunaorden.

5.1.4.8.ORC(CommonOrder)

Segmentoquerepresentaunaordenquepuedecontenervariospedidosdeestudios.Contieneinformacincomo
quinordenaelestudio,quinlodebeejecutar,fechayhoradelpedido,desdequelugaroserviciosesolicitaronlos
estudios,etc.

5.1.4.9.AL1(Allergies)

Segmentoquecontieneinformacindelasalergiasdelpaciente,comoeltipodealrgeno,lareaccinylagravedad.

5.1.4.10.NTE(NotesandComments)

Estesegmentoseutilizaparaagregarcomentariosentextoplanoasociadosaotrossegmentos.Porejemplo,enun
mensajederesultadosdelaboratoriocadaresultadocontenidoenunsegmentoOBXpuedetenercerooms
comentariosasociados.

5.1.4.11.MSA

SegmentodemessageacknowledgementquecontienelainformacinprincipaldelosmensajesACKyseda
informacingeneraldelprocesamientodelmensajerecibidoporelreceptor.

5.1.4.12.ERR

Segmentoqueincluyeinformacindeerrores,utilizadoenlosmensajesACK.

5.1.4.13.RXO(PrescriptionOrder)

Estesegmentoseutilizaparaespecificarinformacinderdenesdefarmaciaotratamientosmedicamentosos.
Contieneinformacindelasustanciaaadministrar,ladosis,formafarmacutica(comprimidos,cpsulas,polvo,
crema,etc.),etc.

41

5.1.5.Tiposdedatos

Cadacampodeunsegmentotieneasociadountipodedatoquedefinelaestructurainternadelosdatosenun
mensajeHL7.Lostiposdedatosestndefinidosenelcaptulo2,anexoAdelestndar.Acontinuacinsedescriben
algunosdelostiposdedatosmsutilizados:

5.1.5.1.AD(Address)

Especificaladireccindeunapersona,lugaruorganizacin.

5.1.5.2.CE(CodedElement)

EstetipodedatofuereemplazadoporCWE.

5.1.5.3.CWE(CodedwithExceptions)

Especificadatoscodificadoscondetallesasociados,comocdigoalternativoytambinpermiteomitirelcdigo
cuandohayuntextoasociado.

5.1.5.4.CX(ExtendedCompositeIDwithCheckDigit)

EspecificaIdentificadoresconinformacinadministrativavinculada.

5.1.5.5.DT(Date)

SeutilizaelformatoYYYYMMDDconDDyMMopcionales,porloqueestetipodedatopuedetenerunlargomximo
deochocaracteres.

5.1.5.6.DTM(Date/Time)

Especificaunpuntodetiempoformadoconlafecha,tiempoyzonahoraria.

5.1.5.7.HD(HierarchicDesignator)

Identificaunaentidadresponsabledeasignarogestionaridentificadoresdeobjetos(pacientes,mdicos,etc.).

5.1.5.8.ID(CodedValuefromHL7DefinedTables)

EsunvalorcodificadoqueseobtienedelastablasyadefinidasdentrodeHL7.

42


5.1.5.9.EI(EntityIdentifier)

Seutilizaengeneralparacolocaridentificadoresgeneradosautomticamente.Contieneinformacindelsistemaque
generelidentificador.

5.1.5.10.FT(FormattedText)

EstetipodedatoderivadeTX,yloextiendepermitiendolainclusindecaracteresdeformateo,loscualesdeben
comenzarconunpunto.,yparaincluircaracteresdeformateoenuncampoesnecesariorodearlosconelcarcter
deescape,engeneral\.Acontinuacinsecomentanalgunosdeestoscaracteres:

".br":Terminalalneaactualycomienzaunanueva.
".in<N>":IndentacindeltextoconNespaciosenblanco.

Resaltadodetexto:

\H\:Comienzaelmodoresaltado(highlightedtext).
\N\:Terminaelmodoresaltado(normaltext).

Insercindecaracteresespecialeseneltexto:

\F\:Separadordecampos"|"
\S\:Separadordecomponente"^"
\T\:Separadordesubcomponente"&"
\R\:Separadorderepeticin"~"
\E\:Carcterdeescape"\"

UnejemplodedatoFTconcaracteresdeformateo:

|Firstline.\.br\\in4\Secondline.\.br\\.br\
\.H\Tablemode:\N\\.br\+++\.br\
\F\cell1/1\F\cell2/1\F\\.br\+++\.br\
\F\cell1/2\F\cell2/2\F\\.br\+++\.br\
Unusuariofinalloveracomo:

Firstline.
Secondline.

Tablemode:
+++
|cell1/1|cell2/1|
+++
|cell1/2|cell2/2|
+++

43

5.1.5.11.IS(CodedValuefromUserDefinedTables)

Esunvalorcodificadoqueseobtienedetablasdefinidasporelusuario.

5.1.5.12.MSG(MessageType)

Contieneeltipodemensaje,eventodisparadorycdigodeestructuradelmensajedentrodelsegmentoMSH.

5.1.5.13.NM(Numeric)

Representaundatonumrico,quepuedecontenersignoypuntodecimal.Eltamaomximoesde16caracteres.

5.1.5.14.PL(PersonLocation)

Estetipodedatocontieneinformacinsobreellugarfsicodeunapersona,comopuntodecuidado,cuarto,cama,
centro,edificio,piso,etc.

5.1.5.15.SI(SequenceID)

Contieneundatonumricopositivodelargomximode4dgitos.
5.1.5.16.ST(StringData)

Representadatosentextolibre,paratextoscortos(menosde1000caracteres).Puedeincluircualquiercarcterde
controldeHL7menoselterminadordesegmento,perosedebeutilizarelcarcterdeescapeantedichoscaracteres
decontrol.

5.1.5.17.TS(TimeStamp)

EstetipodedatofuesustituidoporDTMenHL7v2.5.

5.1.5.18.TX(TextData)

Contienedatosentextolibre,orientadosaservisualizadosmediantealgunainterfazdeusuariooaserimpresosen
papel.Elseparadorderepeticin(~)seinterpretacomoterminadordeprrafo.Serespetanlosespaciosque
aparecenantesdeltexto,yellargomximoes65536caracteres.

5.1.5.19.XCN(ExtendedCompositeIDnumberandnameforpersons)

Contieneinformacinquepermiteidentificaraunapersona.Estetipodedatoescomplejoysedefineenfuncinde
otrostiposdedatos.EssimilaraXPN,peroagregainformacindeidentificacindelapersona.

44


5.1.5.20.XPN(ExtendedPersonName)

Contieneinformacindelosnombresyapellidosdeunapersona,msprefijos,sufijosyotrainformacinquepuede
serincluidaenelnombrecompletodeunapersona.

5.1.5.21.XTN(ExtendedTelecommunicationNumber)

Permiterepresentarnmerosdetelfono,nmerosdefax,correoselectrnicos,tantodeltrabajocomodelhogar,
msinformacincontextual.

5.1.6.Definicionesdemensajes

ParaimplementarHL7v2.xesnecesariosaberleerlasespecificacionesdelestndarysusperfiles.Comprenderla
definicindemensajesessumamentenecesario.Enestaseccinsevernlasdistintasformasdeespecificacinde
mensajesytransaccionesquetieneHL7v2.x.

5.1.6.1.DefinicinestticademensajesHL7

Estetipodedefinicinhacefocoenlaparteestructuraldelosmensajes,definiendoestructurasdemensajes,
segmentosycampos.Paraladefinicindemensajesseutilizalasintaxisabstractademensajesbasadaensegmentos,
contenidosentrellaves{}paradenotarmultiplicidadyentreparntesisrectos[]paradenotarocurrenciaopcional.

Ejemplosdedefinicionesestticasaniveldemensajes:

ADT^A01^ADT_A01

ADTMessage

MSH

MessageHeader

[{SFT}]

SoftwareSegment

EVN

EventType

PID

PatientIdentification

[PD1]

AdditionalDemographics

Tabla2:extractodeladefinicinestticadelmensajeADTparaeleventoA01

45

ACK^varies^ACK

ACKMessage

MSH

MessageHeader

[{SFT}]

SoftwareSegment

MSA

MessageAcknowledgement

[{ERR}]

ErrorSegment

Tabla3:definicinestticadelmensajeACKparacualquierevento

Enlatabla2sedefinepartedelmensajeADTqueselanzaanteeleventodisparadorA01.Lossegmentosdeeste
mensajecumplen:

MSHesobligatorio.
SFTesopcionalypuedetenermltiplesocurrencias.
EVNyPIDsonobligatorios.
PD1esopcionalypuedetenersolounaocurrencia.

Sedebenotarqueelidentificadordelmensajesecomponedeltipodemensaje(ADT),deleventodisparador(A01)y
delidentificadordeestructura(ADT_A01).Lautilidaddelidentificadordeestructuraesparapoderreutilizarlamisma
estructuraparaotromensajedelmismotipo,perocondistintoeventodisparador.Estotieneunefectoanivelde
softwarequeesnecesarioconsiderarcuandosedesarrolla:puedeparecerquealgunosmensajesnoestndefinidos
peroesporqueesosmensajesreutilizanestructurasdeotros.

PorejemploelmensajeADTconeventoA04utilizalaestructuraADT_A01:

ADT^A04^ADT_A01

ADTMessage

MSH

MessageHeader

[{SFT}]

SoftwareSegment

EVN

EventType

PID

PatientIdentification

[PD1]

AdditionalDemographics

Tabla4:extractodeladefinicinestticadelmensajeADTparaeleventoA04

46

47

5.1.6.2.Definicinestticadesegmentos

Ladefinicinestticaaniveldesegmentostienelasiguienteestructura:

SEQ

LEN

DT

Usage

Cardinality

TBL#

ElementName

SI

SetIDPID

20

CX

RE

[0..1]

PatientID

20

CX

[1..*]

PatientIdentifierList

20

CX

AlternatePatientIDPID

48

XPN

[1..*]

PatientName

48

XPN

RE

[0..*]

MothersMaidenName

26

TS

RE

[0..1]

Date/TimeofBirth

IS

RE

[0..1]

0001

Sex

Tabla5:extractodedefinicinestticaaniveldesegmentosparaPID

EstatabladefineloscamposdentrodeunsegmentoPID,indicando:

Lugardelcampodentrodelsegmento
Largodelcampoenbytes
Tipodedatocorrespondienteacadacampo
Usodelcampo,donde:
o R=Requerido
o RE=Requeridoperopuedeestarvaco
Laaplicacinemisoradebeenviardatossilostiene.
Laaplicacinreceptoradebeprocesarcorrectamenteelmensajeaunquenovengandatos.
o O=Opcional
o C=Condicional
o CE=Condicionalperopuedeestarvaco
o X=Nosoportado/Nocorresponde
Cardinalidaddecadacampo
o Definelacantidaddeocurrenciasposiblesdedatosencadacampo.
Nmerodetabla
o Sieldatoparaelcampodebeobtenersedeunatabla.
Nombredelcampo

48

5.1.6.3.Definicinestticadecampos

Ladefinicinaniveldecampostienelasiguienteestructura:

SEQ

LEN

DT

OPT

TBL#

COMPONENTNAME

20

ST

Identifier

199

ST

Text

20

ID

0396

NameofCodingSystem

20

ST

AlternateIdentifier

199

ST

AlternateText

20

ID

0396

NameofAlternateCodingSystem

10

ST

CodingSystemVersionID

10

ST

AlternateCodingSystemVersion
ID

199

ST

OriginalText

Tabla6:definicinestticadecamposdetipoCWE

Comosepuedeapreciar,ladefinicinaniveldecamposdescribelaestructurainternadelostiposdedatosasociados
acadacampo.EnlatablaanteriorsedescribeeltipodedatoCWE(CodedWithExceptions).Enestatablasedefinen:

Lugarqueocupacadacomponentedentrodeltipodedato
Largodecadacomponenteenbytes
Tipodedatodecadacomponente
o Seutilizaparatiposdedatoscomplejosquedependendeotrostiposdedatos.
Nmerodelatabladedondeseobtienenlosvaloresvlidosparaelcomponente.
Nombredelcomponente.
Referenciaalcaptuloyseccindondesedefinecadacomponente.

49

5.1.7.HL7v2.5codificadocomoXML

LacodificacinmscomndelosmensajesHL7v2.xesER7(verseccin3.3),perolosmensajesHL7v2.xpuedenser
codificadosenXML.Amododeejemplo,aqusemuestraelmismomensajeADTdelaseccin5.1.4.2,peroenXML
(lossegmentosNK1yPV1seremovieronparasimplificarelejemplo):

<?xmlversion="1.0"encoding="UTF8"?>
<ADT_A01xmlns="urn:hl7org:v2xml">
<MSH>
<MSH.1>|</MSH.1>
<MSH.2>^~\&amp;</MSH.2>
<MSH.3>
<HD.1>EPIC</HD.1>
</MSH.3>
<MSH.4>
<HD.1>EPICADT</HD.1>
</MSH.4>
<MSH.5>
<HD.1>SMS</HD.1>
</MSH.5>
<MSH.6>
<HD.1>SMSADT</HD.1>
</MSH.6>
<MSH.7>
<TS.1>199912271408</TS.1>
</MSH.7>
<MSH.8>CHARRIS</MSH.8>
<MSH.9>
<MSG.1>ADT</MSG.1>
<MSG.2>A04</MSG.2>
</MSH.9>
<MSH.10>1817457</MSH.10>
<MSH.11>
<PT.1>D</PT.1>
</MSH.11>
<MSH.12>
<VID.1>2.5</VID.1>
</MSH.12>
</MSH>
<EVN>
<EVN.1>A04</EVN.1>
<EVN.2>
<TS.1>199912271300</TS.1>
</EVN.2>
</EVN>
<PID>
<PID.2>
<CX.1>0493575</CX.1>
<CX.4>
<HD.1>2</HD.1>
</CX.4>
<CX.5>ID1</CX.5>
</PID.2>
<PID.3>
<CX.1>454721</CX.1>
</PID.3>

50

<PID.5>
<XPN.1>
<FN.1>DOE</FN.1>
</XPN.1>
<XPN.2>JOHN</XPN.2>
</PID.5>
<PID.6>
<XPN.1>
<FN.1>DOE</FN.1>
</XPN.1>
<XPN.2>JOHN</XPN.2>
</PID.6>
<PID.7>
<TS.1>19480203</TS.1>
</PID.7>
<PID.8>M</PID.8>
<PID.10>
<CE.1>B</CE.1>
</PID.10>
<PID.11>
<XAD.1>
<SAD.1>254MYSTREETAVE</SAD.1>
</XAD.1>
<XAD.3>MYTOWN</XAD.3>
<XAD.4>OH</XAD.4>
<XAD.5>44123</XAD.5>
<XAD.6>USA</XAD.6>
</PID.11>
<PID.13>
<XTN.1>(216)1234567</XTN.1>
</PID.13>
<PID.16>
<CE.1>M</CE.1>
</PID.16>
<PID.17>
<CE.1>NON</CE.1>
</PID.17>
<PID.18>
<CX.1>400003403</CX.1>
</PID.18>
</PID>
</ADT_A01>

UnaformasencilladeobtenerelXMLapartirdeER7esmediantelaherramientaHAPITestPanel38 .

38

http://hl7api.sourceforge.net/hapitestpanel/

51

5.2.HL7v3

HL7v3estdivididoen23dominios,similaresaloscaptulosdeHL7v2.x,cadaunoespecializadoendefinirmensajes
odocumentosenfuncindeconceptosespecficos.TodosesosmensajesydocumentossiguenelReference
InformationModeldeHL7v3,porloquemantienenciertogradodecompatibilidadaniveldelmodelobsico.

Losdominiosson:

1. Contabilidadyfacturacin:Cubrelacreacinygestindelascuentasdepagodelospacientes,conelfinde
recolectarlospagosycrditos(transaccionesfinancieras)paraapoyarlapresentacindereclamoso
reembolsosdefacturas.
2. Prestacindeatencinmdica:Habilitalainformacinnecesariaparaelcuidadocontinuodelosindividuos,
poblacionesyotrossujetosdeatencin.
3. Reclamosyreembolso:Refierealafacturacin(incluyendolaverificacindeautorizacinyelegibilidad),
adjudicacinypagos(incluyendoajustesyconsultasdelascuentas)deserviciosdesalud.
4. Apoyoalasdecisionesclnicas:Seencargadedefinirmensajeraparainfobuttons.Losinfobuttonsson
instrumentosdeinformacinenpuntosdeatencin,quegeneranconsultasonlineautomticamentesobre
recursosdeinformacindesalud,utilizandoinformacinextradadelaHistoriaClnicaElectrnica(HCE)del
pacienteydeinformacindelcontexto(datosdemogrficos,datosdelaatencinmdicaactual,etc).Estas
consultassirvenparaproveeralprofesionaldelasaluddeinformacintilenelcuidadodeesepaciente
especfico.
5. Arquitecturadedocumentoclnico:DefineunasintaxisbasadaenXMLparadefinirdocumentacinclnica
estructurada.UndocumentoCDApuedeincluirinformacindedistintostipos:texto,imgenes,sonidos,y
otroscontenidosmultimedia.LaestructuradedocumentosCDAesflexible,pudiendorepresentarmuchos
tiposdedocumentosclnicosdiferentes.
6. Clnicagenmica:Permitelainterrelacindeinformacinclnicaygenmica.Granpartedelainformacin
genmica,anesgenrica,porejemploelgenomahumanosonlassecuenciasdeADNquesecreencomunes
atodoserhumano.Lavisindemedicinapersonalizadaestbasadaendichascorrelaciones,quehacenuso
deinformacingenmicapersonal,quesediferenciaentredospersonascualesquiera.
7. Declaracionesclnicas:Definemensajeratilparalacomunicacindedeclaracionesclnicas.Estdefinidode
formaamplia,porloqueunamismadeclaracinclnicapodratenermltiplesformasderepresentacin.Por
lotanto,paraserusadoefectivamente,esnecesariodefinirrestriccionessobreelmodelodemensajespara
cadacontextodeterminado.
8. Tiposdemensajesdeelementoscomunes:Estedominioseencargadedefinirpartesdeestructuras
comunesyreutilizablesparalosmensajesdediversosdominios.
9. Medidasdecalidad:Defineunestndarparalarepresentacindemedidasdecalidadensalud,comoun
documentoelectrnico.Unamedidadecalidadesunaherramientacuantitativaqueproporcionaindicadores
derendimientodeunindividuouorganizacin,enrelacinconunaaccinoprocesoespecfico,ocomo
medidaderesultadosclnicos.
10. Inmunizacin:Refierealacomunicacindeinformacinsobrelainmunizacin:administracindevacunasy
suerosalaspersonas,paraprevenirenfermedadesinfecciosas.
11. Laboratorio:Constadelosmensajesnecesariosparalacomunicacindeinformacindeestudiosy
observacionesdelaboratorio,incluyendoreascomo:qumica,hematologa,serologa,histologa,citologa,
anatomapatolgica,microbiologayvirologa.
12. Registrosmdicos:Apoyalagestinyconsultadedocumentosclnicos.
13. Administracindepacientes:Definelainformacindemogrficadelpaciente,lacualserconsumidadesde
otrossistemascomoregistrosclnicososistemasfinancieros.
14. Administracindepersonal:Contieneladefinicinderoles,relaciones,credenciales,certificados,
capacidades,competencias,cualificaciones,privilegios,responsabilidadesyasignacindetareas,emitidos
para,ogestionadospor,distintasentidades(personas,organizaciones,dispositivos,etc).
15. Farmacia:Seencargadedefinirmensajeraparalaprescripcin,dispensacin,yadministracinde
medicamentos,tantoenfarmaciasexternascomointernasalainstitucin.Tambindefinemensajeraparala
solicituddeinformacindelregistrodemedicacindeunpaciente(drogras,recetas,etc).

52

16. Registros:Seencargadelosregistrosadministrativosdepersonas,pacientes,proveedores,equipamientoy
lugaresdeprestacindeserviciossanitarios.
17. ReportesdeSaludPblica:Incluyelosmensajesparaapoyarladenunciaeinvestigacindeenfermedadesen
elcontextodelaSaludPblica.
18. Productosregulados:Incluyelasnormaselaboradasparalaaprobacindeproductosregulados,ylos
mensajesparacomunicarinformacindeestosproductos.
19. Estudiosregulados:Incluyenormaselaboradasparaelintercambiodeinformacinsobrelarealizacinde
estudiosregulados,ylacomunicacindelainformacinrecolectadaduranteesosestudios.
20. Coordinacin:Ofreceunconjuntogenricodemensajesparapoderimplementarcualquiercontextode
coordinacin.
21. Mensajescompartidos:Contienedefinicionesdetiposdemensajescomunes,quesonreutilizadosporotros
dominios.
22. Muestras:Comprendelosmensajesrelacionadosconcualquiertipodemuestra.Lainformacincontenidoes
delapropiamuestra,desuenvase,ydeloscontenidosdeesteantes,duranteydespusdequelamuestra
fuecolocadaeneste.
23. Dispositivosteraputicos:Comprendemensajesnecesariosparalacomunicacinrelacionadaconlaterapiay
lasobservacioneshechaspordispositivosmdicos.Enlaactualidadestcentradoenlosdispositivos
cardacosimplantables.

EnestecursonosconcentraremoseneldominiodeCDA(ArquitecturadeDocumentoClnico).

5.2.1.ReferenceInformationModel(RIM)

ElmodelodereferenciadeHL7v3sirvecomobaseparalosmensajesydocumentosdefinidosentodoslosdominios.
ElcorazndelRIMestcompuestoporseisclasesbsicasdeinformacin:

ElementoscentralesdelHL7v3RIM

Entity:esunobjetofsicoogrupodeobjetosfsicos,uorganizacionescapacesdeparticiparenactosatravsdeun
rol.Personas,animales,ydispositivossonalgunosejemplos.

Role:competenciadeunaentidadquejuegaunrolenunacto

Participation:representalaasociacinentreunrolyunacto.

Act:permiteregistraralgoquefuerealizado,queestsiendorealizado,quepuedeserrealizadooquefuepedido
paraserrealizadoenelfuturo.Laadministracindemedicamentos,elregistrodesignosvitales,losresultadosde
estudiosdelaboratorio,sonalgunosejemplos.

53


VisincompletadelHL7v3RIM

5.2.2.ClinicalDocumentArchitecture(CDA)

LosdocumentosCDAcontienenuncabezalconlosdatosdelpaciente,mdico,centro,etc.yuncuerpoconel
registrodeunaconsulta,visitaocontactomdico.CDAtieneunformatoXML,dondeesposibledefinir3niveles:

Nivel1:Noestructurado(cuerpoendatosbinarios,textolibre,etc)
Nivel2:Estructurado,textolibre(divididoenseccionesdondelosregistrosserealizanentextolibre)
Nivel3:Estructurado,codificado(lasseccionestienenasuvezentradascodificadas)

5.2.2.1.EstructuradelCDAenXML

ElelementorazdelXMLes"ClinicalDocument",dondesepuedendestacarlossubelementosquecorrespondenal
cabezalyalcuerpodelCDA.Enestecaso,elcuerpoesestructurado(niveles2o3):

<ClinicalDocument...>
...cabezal(header)...
<component>
<structuredBody>
<component>
<section>
<title></title>
...
</section>
</component>
</structuredBody>
</component>

54

</ClinicalDocument>

Dentrodelcabezal,encontramosalgunoselementoscomo:

<typeId.../>

<id.../>
<code.../>
<title>...</title>
<effectiveTime.../>
<confidentialityCode.../>
<languageCode.../>
<recordTarget>...informacindelpaciente...</recordTarget>
<author>...informacindelmdicoresponsable...</author>
<custodian>...informacindelcustodiodeldocumento...</custodian>
...

TipodedocumentoCDA(valoresfijos):

<typeIdextension="POCD_HD000040"root="2.16.840.1.113883.1.3"/>

Identificadordeldocumento:

<idroot="db734647fc99424ca8647e3cda82e703"/>

Cdigoindicadordeltipodedocumentoparticular:

<codecode="341339"codeSystem="2.16.840.1.113883.6.1"displayName="Summarizationofepisodenote"/>

Ttulodeldocumento:

<title>ConsultaAmbulatoria</title>

Dayhoraenlaquesecreeldocumento:

<effectiveTimevalue="201212240930000300"/>

Cdigodeconfidencialidad:

<confidentialityCodecode="N"codeSystem="2.16.840.1.113883.5.25"/>

Idiomaenelqueestexpresadoeldocumento:

<languageCodecode="esAR"/>

5.2.2.2.Paciente

<recordTarget>
<patientRole>

<!Identificadorytipodeidentificador,puedetenermsdeuno>
<idextension="41162380"root="2.16.858.1.858.68909"/>

55

<patient>
<name>
<given>Pablo</given>
<given>Federico</given>
<family>Pazos</family>
<family>Gutirrez</family>
</name>
<administrativeGenderCodecode="M"codeSystem="2.16.840.1.113883.5.1"/>
<birthTimevalue="19811024"/>
<ethnicGroupCodecode="Blanca"codeSystem="1.2.3.4.5.6.11111"/>
</patient>
</patientRole>
</recordTarget>

5.2.2.3.Autordeldocumento(ej.mdicoresponsable)

Eselresponsabledelaautora,puedenoserquieningresalosdatosenelsistema.Elautortieneotrosatributosque
sepuedenusarcomoelrolylafuncinparticularquecumpleenlaatencin.

<author>

<!Momentodelaautoradeldocumento,ej.comienzodelaatencin>
<timevalue="20000407130000+0500"/>
<assignedAuthor>
<idroot="20cf14fbb65c4c8ca54db0cca834c18c"/>
<assignedPerson>
<name><prefix>Dr.</prefix><given>Robert</given><family>Dolin</family></name>
</assignedPerson>
<!Paraquorganizacintrabajabaenelmomentodeautoradeldocumento>
<representedOrganization>
<idroot="2.16.840.1.113883.19.5"/>
<name>HospitalMadariaga</name>
</representedOrganization>
</assignedAuthor>
</author>

5.2.2.4.Organizacinencargadadecustodiarlosdocumentos(ej.MinisteriodeSalud)

<custodian>

<assignedCustodian>
<representedCustodianOrganization>
<idroot="2.16.840.1.113883.19.6"/>
<name>MinisteriodeSalud</name>
</representedCustodianOrganization>
</assignedCustodian>
</custodian>

5.2.2.5.EjemplodeunaseccinNivel2dentrodelcuerpodelCDA

Estaesunaseccinsimplequecontieneinformacindesignosvitalesentextolibre(nivel2)enunformatodetabla.

56

<component>
<section>
<codecode="12345"codeSystem="2.16.840.1.113883.6.1"codeSystemName="LOINC"displayName="Signos"/>
<title>Signos</title>
<text>
<table>
<tbody>
<tr>
<th>Signo</th>
<th>Valor</th>
<th>Observacin</th>
</tr>
<tr>
<td>Presinarterial</td>
<td>120/90mmHg</td>
</tr>
<tr>
<td>Frecuenciacardiaca</td>
<td>75latidos/min</td>
</tr>
<tr>
<td>Frecuenciarespiratoria</td>
<td>16respiraciones/min</td>
</tr>
<tr>
<td>Temperatura</td>
<td>37C</td>
</tr>
</tbody>
</table>
</text>
</section>
</component>

5.2.3.ValidandoCDA

HL7proveeunaseriedeesquemasXML(XSD)quepermitevalidarsintcticamentelosdocumentosclnicos
generadosorecibidosporunsistema.Dentrodelcursoutilizaremosunaversinunificadadelesquemaparapoder
validarnuestrosdocumentosCDA.

57

6.ServiciosWeb

LosServiciosWebusualmenteestnasociadosconSOAP,peroeltrmino"ServicioWeb"esmsamplioyrefierea
cualquiertipodeservicioqueseproveesobrelaWeb,independientementedelprotocolodecomunicacinquese
utiliceparaimplementarlo.REST(REpresentationalStateTransfereningls)surgecomounaalternativalivianaa
SOAPparalaimplementacindeServiciosWeb,peroadiferenciadeSOAP,RESTesnoesunprotocolode
comunicacin,sinounconjuntodeprcticasquedefinenunestiloarquitectnicoparaimplementarServiciosWeb
mssimplesylivianos.

6.1.REST

RESTdefineciertasreglasquepermitenejecutaroperacionessobrerecursos.Laimplementacinmsfrecuentees
utilizandoHTTPcomoprotocolodetransporteylosmtodosHTTPcomooperacionesoverbosaserejecutados
sobreciertorecurso.CadarecursodeunaaplicacinesidentificadomedianteunaURL.RESTnodefinelas
estructurasdedatosquedeberesponderelservidor,estodebeserunacuerdoentreclienteyservidor,porejemplo
sepodradevolverXML,JSONyotroformato,ysuestructurainternadependerdecadarecurso.

UnadelascaractersticasbsicasdeRESTesquees"stateless",oseaquecadapedidocontienetodoelestado
necesarioparaejecutarciertafuncin,yunpedidonodependedelestadodeotropedidoanterior.

Otracaractersticaesquelosrecursospuedenvincularseentresmediantelinks.Porejemplosiunahistoriaclnica
contuvieraunconjuntodedocumentos,desdeelrecurso"historia"sepodrantenerlinksalosrecursos
"documento",yaseaalacoleccindedocumentosoacadadocumentoindividual.

6.1.1.MtodosHTTPyoperacionesREST

TalcomovimosenlaseccindeProtocolosdeComunicacin,HTTPproveemtodosqueindicanalservidorcmo
debeprocesarelpedidoHTTP.

MtodoHTTP

OperacinREST

Accin

GET

Obtieneunrecurso.

Obtenerconjuntosdeobjetosuobjetosindividuales.

POST

Cambiaelestadodeunrecurso.

Crearobjetosdentroderecursos.

PUT

Creaomodificaelcontenidodeun
recursoexistente.

Crearomodificarobjetos.Sirveparacrearcuandoel
clienteconocelaURLdelrecursoacrear,sinose
conocelaURLdelobjetoacrear,sedebeusarPOST.

Eliminacontenidodeunrecurso
existente.

Eliminarobjetos.

DELETE

58

IdempotenciaycachHTTP

LosmtodoGET,PUTyDELETEsonidempotentes,loquesignificaquesucesivasllamadasidnticas,utilizandounode
esosmtodos,retornarnelmismoresultado.SedebetenercuidadoenlaimplementacindelmtodoDELETE,
porquesisehaceunaeliminacinfsicadelrecurso,elDELETEnoseraidempotente.Porotrolado,POSTnoes
idempotente,yaquesucesivasllamadasaPOSTsobreunrecurso,crearnnuevasinstanciasdelrecurso,ydevolver
resultadosdistintos.

UnadelastantascaractersticasdelprotocoloHTTPeselcach,quepermiteacelerarlastransacciones
notablemente,almacenandoresultadosasociadosaciertasURLsdelladodelcliente.Deestemodoseevitala
ejecucindeaccionesyobtencindedatosdesdeelservidor,loqueesmslentoquesolamenteleerdenuevolos
datosdelladodelcliente.ElcachdeHTTPfuncionacuandoseutilizanmtodosidempotentes,porlotantoentodas
lasoperacionesqueseimplementanporRESTmenoslasqueutilizanelmtodoPOST.

Ejemplos

Porejemplo,podramosdecirqueenelmbitohospitalariotenemoslossiguientesrecursos:

Historias:HistoriaClnicaElectrnicadelospacientes
Paciente:pacientesdenuestrohospital
rdenes:rdenesdeestudiosdiagnsticos
Resultados:resultadosdeestudiosdiagnsticos
Prescripciones:prescripcionesdemedicamentos
Dispensaciones:dispensacionesdemedicamentosapacientes

Siquisiramosoperarsobreestosrecursos,podramosdefinirlassiguientesURLsparaidentificarlos:

/historias
/pacientes
/ordenes
/resultados
/prescripciones
/dispensaciones

MtodosHTTPyrecursos

PedidoHTTP

Accin

GET/historias

Obtienetodaslashistoriasclnicas.

GET/historias/1234

Obtienelahistoriaclnica1234.

POST/historias

Creaunanuevahistoriaclnica,laURLserdeterminadaporelservidor.

PUT/historias/9876

Creaunanuevahistoriaclnica"9876",laURLesdeterminadaporelcliente.

59

PUT/historias/1234

Modificaelcontenidodelahistoriaclnica"1234".

DELETE/historias/1234

Elimialahistoriaclnica"1234"

EnloscasosdePOSTyPUT,esprobablequeelclienteenveunobjetoenelcuerpodelpedidoHTTP,conla
informacindelrecursoacrearoasermodificado.Porejemplo,unpedidoHTTPcompletoparacrearunahistoria
clnica,usandoobjetosJSON,sera:

POST/historiasHTTP/1.1
Host:www.mihospital.com
ContentType:application/json

{
"hce_uid":4455,
"paciente_uid":4567,
"creado":"20151201T00:00:00.000Z",
"documentos":[]
}

Siquisiramosmodificarelrecursocreado,agregandoundocumento,podramosenviarelsiguientepedidoHTTP:

PUT/historias/4455HTTP/1.1
Host:www.mihospital.com
ContentType:application/json

{
"hce_uid":1234,
"paciente_uid":4567,
"creado":"20151201T00:00:00.000Z",
"documentos":[
{
"fecha":"20151202T00:00:00.000Z",
"tipo":"notadeconsulta",
"texto":"elpacientepresenta..."
}
]
}

Estaseraunaformadeagregarundocumentoalahistoriaclnicadeunpaciente,oseamodificandoelrecurso
/historias.Sinembargo,podratenerseunrecurso/documentosquedependadelrecurso/historias,porquelos
documentosloexistenenelcontextodeunahistoriaclnica.EntoncessepodratenerlasiguienteURL:
/historias/{hce_uid}/documentos,dondeunGETobtendratodoslosdocumentosdentrodeunahistoria,unPOST
crearaunnuevodocumentodentrodelahistoria,etc.

Yparaobtenerlalistadetodaslashistoriasclnicasexistentes,sloharamos:

GET/historiasHTTP/1.1
Host:www.mihospital.com

60

Larespuestadelservidordeberaserconsistenteconlosformatosdeobjetosutilizadosparacrearrecursosy
modificarrecursosconpedidosPOSTyPUT.Peroutilizandoelcabezal"Accept"podramossolicitarlealservidorque
enlugarderetornarunobjetoJSON,retorneunobjetoXML,conlosmismosdatos/estructuradenuestrosrecursos.

XML:

GET/historiasHTTP/1.1
Host:www.mihospital.com
Accept:application/xml

JSON:

GET/historiasHTTP/1.1
Host:www.mihospital.com
Accept:application/json

Dadoqueelmismorecursopuedepedirseendistintosformatos(XML,JSON,HTML,etc.),decimosqueunmismo
recursotienedistintasrepresentaciones.

DebesealarsequenotodoslosmtodosHTTPtienensiempreuncorrespondientefuncionaldentrodeunsistema,
porejemplosepodraconvenirquelashistoriasclnicasnopuedeneliminarse,porlotantoDELETEnoaplicaraal
recurso/historias.

ComopuedeapreciarsehayelementosRESTquequedanabiertasalaimplementacin,dadoqueRESTesunestilo
arquitectnico,unagua,nounaespecificacinrigurosadeunprotocolodecomunicacin.

Resumendecaractersticas:

Cadarecursotieneunidentificador,laURL.
Losrecursospuedenvincularsemediantelinks.
RESTutilizamtodosestndardeHTTP.
Unrecursopuedetenermltiplesrepresentaciones.
Nosemantieneelestadoentrepedidos(stateless).

RESTycdigosdeestadoHTTP

RESTreutilizaloscdigodeestadodefinidosporHTTP(verseccin2.3.4).Porejemplo,siseintentaaccederaun
recursoynosetienenlospermisosparaaccederlo,larespuestadelservidorcontendrelestado403Forbidden.Sise
intentacrearunrecursoenviandounpedidoPOST,sisepudocrearelrecurso,elservidorretornar201Created.

AqupuedeencontrarunalistacompletadecdigosdeestadodeHTTP:
http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

AqupuedeencontrarunalistadecdigosdeestadoHTTPquesonutilizadoscomnmenteenREST:
http://www.restapitutorial.com/httpstatuscodes.html

61

6.2.RESTvsSOAP

EnlasiguientetablasecomparanalgunosaspectosdelenfoquedeRESTcontraelprotocoloSOAPparala
implementacindeServiciosWeb.

Caracterstica

REST

SOAP

Protocolo

ReutilizaHTTP

Defineunonuevo(sobreHTTPengeneral)

Representacin

Cualquiera(XML,JSON,HTML,PDF,...)

XML

Estado

Stateless

StatelessStateful

Contrato

Documentacin

WSDL

MtodosHTTP

GET,POST,PUT,DELETE

POST

CachHTTP

Si,paraoperacionesGET,PUTyDELETE

No,porquePOSTnoesidempotente

Estado

ReutilizaloscdigosdeestadodeHTTPpara
informaralclientedeerroreseinformacin
sobrelasrespuestas.

NoutilizacdigosHTTP,utilizaelelemento
SOAPFaultparainformardeerrores.

62

S-ar putea să vă placă și