In accordance with KRS 214.556, electronic pathology is a critical record type which identifies and establishes the diagnostic characteristics of cancer cases.  Electronic pathology reports are integral and essential to KCR’s Cancer Patient Data Management System (CPDMS) and are necessary to monitor and validate case reporting from Kentucky facilities.  Electronic pathology reports must be reported to KCR in the format described below.

Technical Contact Email

For any technical questions related to E-Path reporting to KCR, please send email to kcrepathsupport < at > uky.edu.

Cost

KCR is providing this service free of charge to Kentucky reporting facilities, as part of the Cancer Patient Data Management System.

Transmission Protocol

KCR supports the following two protocols for transmitting E-Path messages:

  1. HL7 over TCP, utilizing TLS for encryption, this is a traditional HL7/MLLP transmission protocol.
  2. HL7 over HTTP POST method, utilizing TLS for encryption

KCR maintains 2 separate TCP ports for receiving HL7 messages, one for testing and one for production. The IP address and ports used to connect to KCR can be requested via the technical contact email above. Be sure to notify KCR of the method that you will use, either TCP or HTTP, when asking about port numbers and IP addresses.

Encryption, Authentication, and Access Control

  • TLS Encryption
    • All transmission of patient data must be encrypted while in transit via TLS, KCR will not accept unencrypted data transmissions. 
    • HL7 transmission software must adhere to the latest TLS protocol versions and approved cipher suites, these details change over time and can be requested from KCR.
  • Client Certificate
    • A client certificate must be used for client authentication, the expiration should be set to at least 1 year
    • KCR can generate a client certificate for your facility to use or you can create your own:
      • If you want KCR to generate the client certificate, please request via the Technical Contact email address above.
      • If you will be creating your own client certificate, set the expiration to at least 1 year and send the PUBLIC portion of the key pair to the Technical Contact email address above
      • Make sure to put the name of your facility in the "Subject" field of your client certificate
    • Self-signed client certificates are acceptable, but KCR will reject any messages where we have not received, verified, and manually installed the client certificate on our server.
  • IP Address of Sender
    • All data must be transmitted from an IP address that has been communicated to KCR for inclusion in firewall rules, please send your IP address information to the technical contact email address above.

Scheduled Downtime, Unscheduled Downtime, and Error Recovery

Interruptions in data transmission may occur at any time, due to scheduled downtime, unscheduled downtime, network or processing errors, at either the sending or receiving endpoint. In the event of an interruption in transmission, for whatever reason, messages should be held in a queue and retransmitted when the interruption has been resolved.

  • KCR has scheduled downtime for all servers most Tuesday evenings starting at 5PM ET, typically lasting less than 1 hour, but subject to longer downtimes depending on the scope of the updates
  • KCR will periodically patch servers with critical security updates at any time of day, depending on the severity of the security update

Data Format

Pathology reports should be formatted as HL7 2.X messages utilizing the ORU-R01 event type with fields populated according to the NAACCR Pathology Reporting GuidelinesIndividual messages can be batched, but should be transmitted within 24 hours of availability.

For quick reference, the summarized list below shows the HL7 Segments and Fields that should be populated. Please take the time to populate as many of the fields below as you can, KCR understands that this mapping process can be tedious but it will lead to better overall cancer reporting and should only have to be done once.

MSH Segment (1 per message)

Note: Make sure to fill in MSH-4 with the name of your facility, the "Sending Facility", for every message. The name of the facility that ordered the pathology report might be different and will be reported in ORC-21


            {
                name:"messageDateTime",
                type:"date",
                sequenceNumber:7
            },
            {
                name:"messageType",
                type:"string",
                sequenceNumber:9,
                componentNumber:1
            },            
            {
                name:"eventType",
                type:"string",
                sequenceNumber:9,
                componentNumber:2
            },            
            {
                name:"messageControlId",
                type:"string",
                sequenceNumber:10
            },
            {
                name:"receivingApplication",
                type:"string",
                sequenceNumber:5
            },
            {
                name:"receivingFacility",
                type:"string",
                sequenceNumber:6
            },
            {
                name:"sendingApplication",
                type:"string",
                sequenceNumber:3
            },
            {
                name:"sendingFacility",
                type:"string",
                sequenceNumber:4,
                componentNumber:1
            }


   PID Segment (1 per message)

Note: The SSN is an important patient identifier for KCR.


            {
                name:"patientLastName",
                type:"string",
                sequenceNumber:5,
                componentNumber:1
            },
            {
                name:"patientFirstName",
                type:"string",
                sequenceNumber:5,
                componentNumber:2
            },
            {
                name:"patientMiddleName",
                type:"string",
                sequenceNumber:5,
                componentNumber:3
            },
            {
                name:"patientGender",
                type:"string",
                sequenceNumber:8
            },
            {
                name:"patientMaritalStatus",
                type:"string",
                sequenceNumber:16,
                componentNumber:2
            },
            {
                name:"patientAddress",
                type:"string",
                sequenceNumber:11,
                componentNumber:1
            },
            {
                name:"patientAddress2",
                type:"string",
                sequenceNumber:11,
                componentNumber:2
            },
            {
                name:"patientCity",
                type:"string",
                sequenceNumber:11,
                componentNumber:3
            },
            {
                name:"patientState",
                type:"string",
                sequenceNumber:11,
                componentNumber:4
            },
            {
                name:"patientZip",
                type:"string",
                sequenceNumber:11,
                componentNumber:5
            },
            {
                name:"patientAddressEffectiveDate",
                type:"date",
                sequenceNumber:11,
                componentNumber:13
            },
            {
                name:"patientExternalId",
                type:"string",
                sequenceNumber:2
            },
            {
                name:"patientInternalId",
                type:"string",
                sequenceNumber:3,
                componentNumber:1
            },
            {
                name:"patientIdAssigningAuthority",
                type:"string",
                sequenceNumber:3,
                componentNumber:4
            },
            {
                name:"patientAlternateId",
                type:"string",
                sequenceNumber:4
            },
            {
                name:"patientRace",
                type:"string",
                sequenceNumber:10
            },
            {
                name:"patientBirthPlace",
                type:"string",
                sequenceNumber:23
            },
            {
                name:"patientEthnicity",
                type:"string",
                sequenceNumber:22
            },
            {
                name:"patientDateOfBirth",
                type:"date",
                sequenceNumber:7
            },
            {
                name:"patientSsn",
                type:"string",
                sequenceNumber:19
            },
            {
                name:"patientBizPhone",
                type:"string",
                sequenceNumber:14
            },
            {
                name:"patientHomePhone",
                type:"string",
                sequenceNumber:13
            }

   PV1 Segment (1 per message)


            {
                name:"patientLocation",
                type:"string",
                sequenceNumber:3
            },
            {
                name:"attendingDoctorId",
                type:"string",
                sequenceNumber:8,
                componentNumber:1
            },
            {
                name:"attendingDoctorLast",
                type:"string",
                sequenceNumber:8,
                componentNumber:2
            },
            {
                name:"attendingDoctorFirst",
                type:"string",
                sequenceNumber:8,
                componentNumber:3
            },
            {
                name:"attendingDoctorMiddle",
                type:"string",
                sequenceNumber:8,
                componentNumber:4
            },
            {
                name:"referringDoctorId",
                type:"string",
                sequenceNumber:8,
                componentNumber:1
            },
            {
                name:"referringDoctorLast",
                type:"string",
                sequenceNumber:8,
                componentNumber:2
            },
            {
                name:"referringDoctorFirst",
                type:"string",
                sequenceNumber:8,
                componentNumber:3
            },
            {
                name:"referringDoctorMiddle",
                type:"string",
                sequenceNumber:8,
                componentNumber:4
            },
            {
                name:"consultingDoctorId",
                type:"string",
                sequenceNumber:9,
                componentNumber:1
            },
            {
                name:"consultingDoctorLast",
                type:"string",
                sequenceNumber:9,
                componentNumber:2
            },
            {
                name:"consultingDoctorFirst",
                type:"string",
                sequenceNumber:9,
                componentNumber:3
            },
            {
                name:"consultingDoctorMiddle",
                type:"string",
                sequenceNumber:9,
                componentNumber:4
            },
            {
                name:"admittingDoctorId",
                type:"string",
                sequenceNumber:17,
                componentNumber:1
            },
            {
                name:"admittingDoctorLast",
                type:"string",
                sequenceNumber:17,
                componentNumber:2
            },
            {
                name:"admittingDoctorFirst",
                type:"string",
                sequenceNumber:17,
                componentNumber:3
            },
            {
                name:"admittingDoctorMiddle",
                type:"string",
                sequenceNumber:17,
                componentNumber:4
            },
            {
                name:"patientType",
                type:"string",
                sequenceNumber:18
            },
            {
                name:"admissionDateTime",
                type:"date",
                sequenceNumber:44
            },
            {
                name:"dischargeDateTime",
                type:"date",
                sequenceNumber:45
            }

ORC Segment (1 per message)

Note: Make sure to fill in ORC-21 with the name of the facility that ordered the pathology report, this is an important identifier that KCR uses to know which hospital is ordering the pathology report. This value might be different from the sending facility reported in MSH-4.

           {
                name:"attendingDoctorId",
                type:"string",
                sequenceNumber:8,
                componentNumber:1
            },
            {
                name:"transactionDateTime",
                type:"date",
                sequenceNumber:9
            },
            {
                name:"entererId",
                type:"string",
                sequenceNumber:10,
                componentNumber:1
            },
            {
                name:"entererLastName",
                type:"string",
                sequenceNumber:10,
                componentNumber:2
            },
            {
                name:"entererFirstName",
                type:"string",
                sequenceNumber:10,
                componentNumber:3
            },
            {
                name:"entererMiddleName",
                type:"string",
                sequenceNumber:10,
                componentNumber:4
            },
            {
                name:"verifierId",
                type:"string",
                sequenceNumber:11,
                componentNumber:1
            },
            {
                name:"verifierLastName",
                type:"string",
                sequenceNumber:11,
                componentNumber:2
            },
            {
                name:"verifierFirstName",
                type:"string",
                sequenceNumber:11,
                componentNumber:3
            },
            {
                name:"verifierMiddleName",
                type:"string",
                sequenceNumber:11,
                componentNumber:4
            },
            {
                name:"orderingProviderId",
                type:"string",
                sequenceNumber:12,
                componentNumber:1
            },
            {
                name:"orderingProviderLastName",
                type:"string",
                sequenceNumber:12,
                componentNumber:2
            },
            {
                name:"orderingProviderFirstName",
                type:"string",
                sequenceNumber:12,
                componentNumber:3
            },
            {
                name:"orderingProviderMiddleName",
                type:"string",
                sequenceNumber:12,
                componentNumber:4
            },
            {
                name:"orderingFacilityName",
                type:"string",
                sequenceNumber:21,
                componentNumber:1
            },
            {
                name:"orderingFacilityId",
                type:"string",
                sequenceNumber:21,
                componentNumber:3
            },
            {
                name:"orderingFacilityAddress1",
                type:"string",
                sequenceNumber:22,
                componentNumber:1
            },
            {
                name:"orderingFacilityAddress2",
                type:"string",
                sequenceNumber:22,
                componentNumber:2
            },
            {
                name:"orderingFacilityCity",
                type:"string",
                sequenceNumber:22,
                componentNumber:3
            },
            {
                name:"orderingFacilityState",
                type:"string",
                sequenceNumber:22,
                componentNumber:4
            },
            {
                name:"orderingFacilityZip",
                type:"string",
                sequenceNumber:22,
                componentNumber:5
            },
            {
                name:"orderingFacilityPhone",
                type:"string",
                sequenceNumber:23,
                componentNumber:1
            },
            {
                name:"orderingProviderAddress1",
                type:"string",
                sequenceNumber:24,
                componentNumber:1
            },
            {
                name:"orderingProviderAddress2",
                type:"string",
                sequenceNumber:24,
                componentNumber:2
            },
            {
                name:"orderingProviderCity",
                type:"string",
                sequenceNumber:24,
                componentNumber:3
            },
            {
                name:"orderingProviderState",
                type:"string",
                sequenceNumber:24,
                componentNumber:4
            },
            {
                name:"orderingProviderZip",
                type:"string",
                sequenceNumber:24,
                componentNumber:5
            }
 

OBR Segment (1 per message)

           {
                name:"setId",
                type:"string",
                sequenceNumber:1
            },
            {
                name:"fillerOrderNumberEntityId",
                type:"string",
                sequenceNumber:3,
                componentNumber:1
            },
            {
                name:"observationDateTime",
                type:"date",
                sequenceNumber:7,
                componentNumber:null
            },
            {
                name:"universalServiceId",
                type:"string",
                sequenceNumber:4
            },
            {
                name:"collectorId",
                type:"string",
                sequenceNumber:10,
                componentNumber:1
            },
            {
                name:"collectorLastName",
                type:"string",
                sequenceNumber:10,
                componentNumber:2
            },
            {
                name:"collectorFirstName",
                type:"string",
                sequenceNumber:10,
                componentNumber:3
            },
            {
                name:"collectorMiddleName",
                type:"string",
                sequenceNumber:10,
                componentNumber:4
            },
            {
                name:"specimenReceivedDateTime",
                type:"date",
                sequenceNumber:14
            },
            {
                name:"specimenSource",
                type:"string",
                sequenceNumber:15
            },
            {
                name:"ordererId",
                type:"string",
                sequenceNumber:16,
                componentNumber:1
            },
            {
                name:"ordererLastName",
                type:"string",
                sequenceNumber:16,
                componentNumber:2
            },
            {
                name:"ordererFirstName",
                type:"string",
                sequenceNumber:16,
                componentNumber:3
            },
            {
                name:"ordererMiddleName",
                type:"string",
                sequenceNumber:16,
                componentNumber:4
            },
            {
                name:"ordererPhone",
                type:"string",
                sequenceNumber:17
            },
            {
                name:"placerField1",
                type:"string",
                sequenceNumber:18
            },
            {
                name:"fillerField2",
                type:"string",
                sequenceNumber:21
            },
            {
                name:"resultChangeDateTime",
                type:"date",
                sequenceNumber:22
            },
            {
                name:"resultStatus",
                type:"string",
                sequenceNumber:25
            },
            {
                name:"interpreterLastName",
                type:"string",
                sequenceNumber:32,
                componentNumber:2
            },
            {
                name:"interpreterFirstName",
                type:"string",
                sequenceNumber:32,
                componentNumber:3
            },
            {
                name:"reasonForStudy",
                type:"string",
                sequenceNumber:31,
                componentNumber:1
            },
            {
                name:"reasonForStudy2",
                type:"string",
                sequenceNumber:31,
                componentNumber:2
            }

OBX Segment (1 or more per message)

Note: Do NOT send a PDFReport in OBX data segments, KCR does not need the PDF versions of pathology reports.

                    {
                        name:"setId",
                        type:"string",
                        sequenceNumber:1
                    },
                    {
                        name:"valueType",
                        type:"string",
                        sequenceNumber:2
                    },
                    {
                        name:"observationId",
                        type:"string",
                        sequenceNumber:3,
                        componentNumber:1
                    },
                    {
                        name:"codingSystem",
                        type:"string",
                        sequenceNumber:3,
                        componentNumber:3
                    },
                    {
                        name:"observationValue",
                        type:"string",
                        sequenceNumber:5
                    },
                    {
                        name:"observationResultStatus",
                        type:"string",
                        sequenceNumber:11
                    },
                    {
                        name:"observationDateTime",
                        type:"date",
                        sequenceNumber:14
                    }

  • No labels