Guía de Implementación Core de Costa Rica
0.1.0 - ci-build
Guía de Implementación Core de Costa Rica - Versión en desarrollo (v0.1.0): borrador de trabajo de la Iniciativa HL7® Costa Rica, que puede cambiar sin aviso.
| Estado de las normas de la página: Draft |
Mapeos para el cr-lm-paciente modelo lógico.
No Mappings Found
| Nombre | FHIR R5![]() |
|---|---|
![]() |
|
![]() ![]() |
Patient.identifier Se modela como Estructura porque en FHIR R5 el número y el tipo van juntos dentro de cada `Patient.identifier` (decisión 1). Cada ocurrencia lleva además `identifier.system`, que se deriva del tipo: base `https://hl7.or.cr/fhir/sid/`; el pasaporte agrega el país emisor (`https://hl7.or.cr/fhir/sid/pasaporte/{ISO 3166-1 alfa-3}`, validado con la invariante `cr-pasaporte-system`) y el expediente el código del establecimiento (`https://hl7.or.cr/fhir/sid/expediente/{código del establecimiento}`, con el establecimiento en `assigner`). Ver sistemas de identificación. |
![]() ![]() ![]() |
|
![]() ![]() ![]() |
|
![]() ![]() ![]() |
|
![]() ![]() ![]() |
Patient.identifier.value Valor del identificador (cédula, DIMEX, pasaporte, expediente, MPI). |
![]() ![]() ![]() |
Patient.identifier.type El tipo es **opcional** en el perfil (decisión 15): el `system` ya dice de qué documento se trata, y las invariantes validan cada uno por su `system`. Si se envía, `type` lleva el código CR (`cedula-nacional`, `dimex`, `pasaporte`, `ccss`, `expediente-local`) y, opcionalmente, su equivalente de HL7 v2-0203 (`NI`, `PRC`, `PPN`, `NH`, `MR`). La hoja original proponía `NNxxx` y `TAX`; ver tipos de identificación. |
![]() ![]() ![]() |
Patient.identifier.system (sufijo) No se envía como Coding: el código es el sufijo del `system` del pasaporte (`https://hl7.or.cr/fhir/sid/pasaporte/{ISO 3166-1 alfa-3}`). Opcionalmente, el nombre del país va en `identifier.assigner.display`. La invariante `cr-pasaporte-system` valida la forma del código (tres letras mayúsculas); que el código exista en ISO 3166-1 se valida en la aplicación o en el servidor. Ver pasaporte. |
![]() ![]() ![]() |
Patient.identifier.system (sufijo) y Patient.identifier.assigner No se envía como Coding: el código del establecimiento es el sufijo del `system` del expediente (`https://hl7.or.cr/fhir/sid/expediente/{código del establecimiento}`). Para `expediente-local`, `identifier.assigner` es obligatorio y referencia al `Organization` del establecimiento; también puede ir como referencia lógica con el `codigo-establecimiento` del modelo de organización (`assigner.identifier.system` = `https://hl7.or.cr/fhir/sid/establecimiento` y `assigner.identifier.value` = el mismo código que el sufijo del `system`, por ejemplo `cj-3101123456`). |
![]() ![]() ![]() |
Patient.identifier.use No vigente → `old`. Vigente → `temp` si el tipo es `expediente-local` (identificador provisional) y `official` para los demás tipos. En el perfil, `Patient.identifier.use` pasa de 0..1 a 1..1. |
![]() ![]() |
Patient.name.given Primer y segundo nombre del paciente dentro de HumanName (`use` = "official"). |
![]() ![]() |
Patient.name.family `family` lleva los **dos** apellidos completos, separados por un espacio y en el orden del documento (`Mora Rojas`), según la convención de HL7 para nombres con varios apellidos. Cada parte va además en una extensión CR sobre `family` (`cr-primer-apellido`, `cr-segundo-apellido`), con el texto en la subextensión `valor` y, cuando se conoce, el origen en la subextensión `origen`. Así un sistema que solo lee `family` muestra el nombre completo, y uno que necesita las partes no tiene que separar el texto, lo que sería ambiguo con apellidos compuestos (`de la Cruz`) (decisión 4). |
![]() ![]() ![]() |
|
![]() ![]() ![]() |
|
![]() ![]() ![]() |
|
![]() ![]() ![]() |
primerApellido.extension:valor.valueString Va en la subextensión `valor` de la extensión CR `cr-primer-apellido` sobre `family`, y también al inicio de `family`. |
![]() ![]() ![]() |
primerApellido.extension:origen.valueCoding Va en la subextensión `origen` de la extensión CR `cr-primer-apellido`, junto al texto del apellido, como un Coding de v3-RoleCode (`MTH` o `FTH`). Cada apellido lleva su propio origen, así que los casos de filiación única, dos madres o dos padres se representan sin problema (decisión 4). |
![]() ![]() |
Patient.name.family Va dentro de `family`, después del primer apellido (ver primer apellido). Si la persona no tiene segundo apellido, `family` lleva solo el primero. |
![]() ![]() ![]() |
|
![]() ![]() ![]() |
|
![]() ![]() ![]() |
|
![]() ![]() ![]() |
segundoApellido.extension:valor.valueString Va en la subextensión `valor` de la extensión CR `cr-segundo-apellido` sobre `family`, y también dentro de `family`, después del primer apellido. |
![]() ![]() ![]() |
segundoApellido.extension:origen.valueCoding Igual que el origen del primer apellido, en la extensión `cr-segundo-apellido`. |
![]() ![]() |
Patient.gender Va solo en `Patient.gender`, que esperan el MPI Nacional (PDQm lo usa para emparejar), IPS y los demás sistemas. La definición del elemento en el perfil dice que `gender` lleva el sexo asignado al nacer (decisión 2). La extensión `individual-recordedSexOrGender`, que declara ese significado dentro del recurso, se agregará si un caso de uso necesita distinguirlo de otros datos de sexo o de género. |
![]() ![]() |
Patient.birthDate Fecha de nacimiento en formato estándar ISO AAAA-MM-DD según documento oficial. |
![]() ![]() |
Patient.maritalStatus Mapeo CR: Soltero (S), Casado (M), Divorciado (D), Viudo (W), Unión de hecho (T - Domestic partner). |
![]() ![]() |
Patient.telecom (system = phone) `telecom.system` = "phone", `telecom.value` = número telefónico. Usos comunes: mobile, home, work. |
![]() ![]() |
Patient.telecom (system = email) `telecom.system` = "email", `telecom.value` = dirección de correo. `telecom.use` = home / work. |
![]() ![]() |
nationality Extensión `http://hl7.org/fhir/StructureDefinition/patient-nationality` (paquete de extensiones R5). El código va en `extension:code.value[x]`, con binding `extensible` a ISO 3166-1 alfa-3 (decisión 5 de nacionalidad: con `required`, el validador rechaza el `data-absent-reason`) (ej. `CRI`). El nombre del país en español va en `CodeableConcept.text`, no en `coding.display` (decisión 3 de nacionalidad). |
![]() ![]() |
Patient.address Cada dirección sigue el perfil de tipo de dato `cr-address`: si el país es `CRI`, `state`, `city` y `district` son obligatorios, son códigos de la DTA (`cr-provincia`, `cr-canton`, `cr-distrito`) y son concordantes entre sí, con invariantes que el validador evalúa con `memberOf()`; las direcciones de otros países llevan texto libre. Reemplaza el slice `costaRica` que se había propuesto (decisión 2 de los perfiles comunes). Cada elemento de `Address` significa lo mismo en cualquier país: `city` es el cantón en Costa Rica y la ciudad en el extranjero (decisión 5). |
![]() ![]() ![]() |
|
![]() ![]() ![]() |
|
![]() ![]() ![]() |
|
![]() ![]() ![]() |
Patient.address.use En el perfil, `use` pasa de 0..1 a 1..1 y se restringe a `home` y `temp`. |
![]() ![]() ![]() |
Patient.address.country `Address.country` es `string`; FHIR recomienda ISO 3166 y esta IG fija alfa-3, igual que en la nacionalidad. Si es `CRI`, la provincia, el cantón y el distrito son obligatorios (`cr-address`). |
![]() ![]() ![]() |
Patient.address.state En Costa Rica se envía el código de la DTA (ver pregunta 5 de la DTA); el nombre va en `text`. |
![]() ![]() ![]() |
Patient.address.city Antes se mapeaba a `address.district`; pasa a `city` (decisión 5). |
![]() ![]() ![]() |
Patient.address.district Antes se mapeaba a `address.line`; pasa a `district` (decisión 5). |
![]() ![]() ![]() |
precinct Extensión estándar `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-precinct` ("subdivisión de un municipio"), con contexto `Address`. No se usa `line`, que queda para las señas. Ver pregunta 6 de la DTA. |
![]() ![]() ![]() |
Patient.address.postalCode N/A |
![]() ![]() ![]() |
Patient.address.line `line` queda solo para señas o calle (decisión 5). |
![]() ![]() ![]() |
Patient.address.text N/A |
![]() ![]() |
Patient.contact Se modela solo con los elementos nativos de `Patient.contact` en R5, en su mismo orden: `relationship`, `name`, `telecom`, `address`, `gender`, `organization` y `period`. No se usan extensiones para la identificación, la fecha de nacimiento, el estado civil ni la nacionalidad del contacto, que R5 no tiene (decisión 3). Las personas que necesitan esos datos se registran como persona relacionada (`RelatedPerson`). |
![]() ![]() ![]() |
|
![]() ![]() ![]() |
|
![]() ![]() ![]() |
|
![]() ![]() ![]() |
Patient.contact.relationship Mapeo: Cónyuge (SPS), Padre (FTH), Madre (MTH), Tutor legal (GUARD), Hijo(a) (CHILD), Hermano(a) (SIB), Otro familiar (FAMMEMB). Conceptos estándar v3-RoleCode. En R5 `relationship` es 0..* y el perfil lo pasa a 1..*: un contacto puede tener varias relaciones (por ejemplo, madre y tutora legal). |
![]() ![]() ![]() |
Patient.contact.name.given Primer y segundo nombre del contacto dentro de HumanName. |
![]() ![]() ![]() |
Patient.contact.name.family Igual que en el paciente: `family` lleva los dos apellidos completos del contacto. |
![]() ![]() ![]() ![]() |
|
![]() ![]() ![]() ![]() |
|
![]() ![]() ![]() ![]() |
|
![]() ![]() ![]() ![]() |
primerApellido.extension:valor.valueString Subextensión `valor` de la extensión CR `cr-primer-apellido` sobre `Patient.contact.name.family`. |
![]() ![]() ![]() ![]() |
primerApellido.extension:origen.valueCoding Igual que en el paciente, sobre `Patient.contact.name.family`. |
![]() ![]() ![]() |
Patient.contact.name.family Igual que en el paciente. |
![]() ![]() ![]() ![]() |
|
![]() ![]() ![]() ![]() |
|
![]() ![]() ![]() ![]() |
|
![]() ![]() ![]() ![]() |
segundoApellido.extension:valor.valueString Subextensión `valor` de la extensión CR `cr-segundo-apellido` sobre `Patient.contact.name.family`. |
![]() ![]() ![]() ![]() |
segundoApellido.extension:origen.valueCoding Igual que en el paciente, sobre `Patient.contact.name.family`. |
![]() ![]() ![]() |
Patient.contact.telecom (system = phone) `telecom.system` = "phone", `telecom.value` = número telefónico del contacto. |
![]() ![]() ![]() |
Patient.contact.telecom (system = email) `telecom.system` = "email", `telecom.value` = correo electrónico de contacto. |
![]() ![]() ![]() |
Patient.contact.address En R5 `Patient.contact.address` admite una sola dirección (0..1). Sigue el mismo perfil `cr-address` que la dirección del paciente, con las mismas reglas para Costa Rica. |
![]() ![]() ![]() ![]() |
|
![]() ![]() ![]() ![]() |
|
![]() ![]() ![]() ![]() |
|
![]() ![]() ![]() ![]() |
Patient.contact.address.use En el perfil, `use` pasa de 0..1 a 1..1 y se restringe a `home` y `temp`. |
![]() ![]() ![]() ![]() |
Patient.contact.address.country `Address.country` es `string`; FHIR recomienda ISO 3166 y esta IG fija alfa-3, igual que en la nacionalidad. Si es `CRI`, la provincia, el cantón y el distrito son obligatorios (`cr-address`). |
![]() ![]() ![]() ![]() |
Patient.contact.address.state En Costa Rica se envía el código de la DTA (ver pregunta 5 de la DTA); el nombre va en `text`. |
![]() ![]() ![]() ![]() |
Patient.contact.address.city Antes se mapeaba a `address.district`; pasa a `city` (decisión 5). |
![]() ![]() ![]() ![]() |
Patient.contact.address.district Antes se mapeaba a `address.line`; pasa a `district` (decisión 5). |
![]() ![]() ![]() ![]() |
precinct Extensión estándar `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-precinct` ("subdivisión de un municipio"), con contexto `Address`. No se usa `line`, que queda para las señas. Ver pregunta 6 de la DTA. |
![]() ![]() ![]() ![]() |
Patient.contact.address.postalCode N/A |
![]() ![]() ![]() ![]() |
Patient.contact.address.line `line` queda solo para señas o calle (decisión 5). |
![]() ![]() ![]() ![]() |
Patient.contact.address.text N/A |
![]() ![]() ![]() |
Patient.contact.gender Igual que en el paciente: `Patient.contact.gender` lleva el sexo asignado al nacer. |
![]() ![]() ![]() |
Patient.contact.organization Referencia lógica por identificador: `organization.identifier.system` = `https://hl7.or.cr/fhir/sid/cedula-juridica` y `value` = la cédula jurídica; el nombre de la organización puede ir en `organization.display`. No hace falta que el recurso `Organization` exista en el servidor. |
![]() ![]() ![]() |
|
![]() ![]() ![]() ![]() |
|
![]() ![]() ![]() ![]() |
|
![]() ![]() ![]() ![]() |
|
![]() ![]() ![]() ![]() |
Patient.contact.period.start N/A |
![]() ![]() ![]() ![]() |
Patient.contact.period.end N/A |
Documentación de este formato | |