XDS Syslog testing requirements
From IHEWiki
(diff) ←Older revision | Current revision | Newer revision→ (diff)
THIS PAGE IS OUT OF DATE AND IS NOT VALID FOR THE 2009 TESTING SEASON
Audit log requirements for XDS at 2008 Connectathon
Below is a section for each actor for each transaction in XDS. Each section documents the minimum audit fields that will be expected at the 2008 Connectathon. Some important notes:
- IP address, DNS name, and Endpoint can be used interchangeably
For detailed changes regarding ITI-41 see sections 3.41.4.1.4 Security Considerations (Doc Source) and 3.41.4.2.4 Security Considerations (Repository) of the XDS.b Supplement.
For detailed changes regarding ITI-42 see 3.42.4.1.5 Security Considerations (Repository) and 3.42.4.2.4 Security Considerations (Registry) of the XDS.b Supplement.
For detailed changes regarding ITI-43 see 3.43.4.1.4 Security Considerations (Consumer) and 3.43.4.2.4 Security Considerations (Repository)
ITI-14 (Register) Document Repository
EventIdentification
- EventTypeCode = ITI-14
- EventDateTime
- EventOutcomeIndicator
ParticipantObjectIdentification
- ParticipantObjectID = XDSSubmissionSet.uniqueID
- ParticipantObjectTypeCodeRole = 20 (job)
- ParticipantObjectIDTypeCode = urn:uuid:a54d6aa5-d40d-43f9-88c5-b4633d873bdd
ActiveParticipant
- UserID = processID@IP OR just IP of Repository
- RoleIDCode = 110153 (source)
ActiveParticipant
- UserID = registry endpoint
- RoleIDCode = 110152 (destination)
Example
<AuditMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="healthcare-security-audit.xsd">
<EventIdentification EventActionCode="R" EventDateTime="2007-12-31T20:04:43Z"
EventOutcomeIndicator="0">
<EventID code="110106" codeSystemName="DCM" displayName="Export"/>
<EventTypeCode code="ITI-14" codeSystemName="IHE Transactions"
displayName="Register Document Set"/>
</EventIdentification>
<ActiveParticipant NetworkAccessPointTypeCodeError="" UserID="192.168.253.23"
UserIsRequestor="true">
<RoleIDCode code="110153" codeSystemName="DCM" displayName="Source"/>
</ActiveParticipant>
<ActiveParticipant NetworkAccessPointTypeCodeError="" UserID="http://129.148.200.41:8080/xds"
UserIsRequestor="false">
<RoleIDCode code="110152" codeSystemName="DCM" displayName="Destination"/>
</ActiveParticipant>
<AuditSourceIdentification AuditSourceID="xds1"/>
<ParticipantObjectIdentification ParticipantObjectID="129.6.58.91.13896"
ParticipantObjectTypeCode="2" ParticipantObjectTypeCodeRole="3">
<ParticipantObjectIDTypeCode code="9"/>
</ParticipantObjectIdentification>
<ParticipantObjectIdentification ParticipantObjectID="129.6.58.91.13895"
ParticipantObjectTypeCode="2" ParticipantObjectTypeCodeRole="3">
<ParticipantObjectIDTypeCode code="9"/>
</ParticipantObjectIdentification>
<ParticipantObjectIdentification ParticipantObjectID="1.23.1.2.3.34234556.231.1" ParticipantObjectTypeCode="2"
ParticipantObjectTypeCodeRole="20">
<ParticipantObjectIDTypeCode code="urn:uuid:a54d6aa5-d40d-43f9-88c5-b4633d873bdd"/>
</ParticipantObjectIdentification>
</AuditMessage>
ITI-14 (Register) Registry
EventIdentification
- EventTypeCode = ITI-14
- EventDateTime
- EventOutcomeIndicator
ParticipantObjectIdentification
- ParticipantObjectID = XDSSubmissionSet.uniqueID
- ParticipantObjectTypeCodeRole = 20 (job)
- ParticipantObjectIDTypeCode = urn:uuid:a54d6aa5-d40d-43f9-88c5-b4633d873bdd
ActiveParticipant
- RoleIDCode = 110153 (source)
- NetworkAccessPointID = IP address of Repository
ActiveParticipant
- UserID = registry endpoint
- RoleIDCode = 110152 (destination)
ParticipantObjectIdentification
- ParticipantObjectID = patientID
- ParticipantObjectTypeCodeRole = 1 (patient)
ITI-15 (Provide and Register) Document Source
EventIdentification
- EventTypeCode = ITI-15
- EventDateTime
- EventOutcomeIndicator
ParticipantObjectIdentification
- ParticipantObjectID = XDSSubmissionSet.uniqueID
- ParticipantObjectTypeCodeRole = 20 (job)
- ParticipantObjectIDTypeCode = urn:uuid:a54d6aa5-d40d-43f9-88c5-b4633d873bdd
ActiveParticipant
- UserID = processID@IP OR just IP of Document Source
- RoleIDCode = 110153 (source)
ActiveParticipant
- UserID = repository endpoint
- RoleIDCode = 110152 (destination)
ParticipantObjectIdentification
- ParticipantObjectID = patientID
- ParticipantObjectTypeCodeRole = 1 (patient)
ITI-15 (Provide and Register) Repository
EventIdentification
- EventTypeCode = ITI-15
- EventDateTime
- EventOutcomeIndicator
ParticipantObjectIdentification
- ParticipantObjectID = XDSSubmissionSet.uniqueID
- ParticipantObjectTypeCodeRole = 20 (job)
- ParticipantObjectIDTypeCode = urn:uuid:a54d6aa5-d40d-43f9-88c5-b4633d873bdd
ActiveParticipant
- RoleIDCode = 110153 (source)
- NetworkAccessPointID = IP address of Document Source
ActiveParticipant
- UserID = repository endpoint
- RoleIDCode = 110152 (destination)
ITI-16 (SQL Query) Document Consumer
EventIdentification
- EventTypeCode = ITI-16
- EventDateTime
- EventOutcomeIndicator
ParticipantObjectIdentification
- ParticipantObjectQuery = base64 of AdhocQueryRequest
- ParticipantObjectTypeCodeRole = 24 (query)
ActiveParticipant
- UserID = processID@IP OR just IP of Document Consumer
- RoleIDCode = 110153 (source)
ActiveParticipant
- UserID = registry endpoint
- RoleIDCode = 110152 (destination)
ParticipantObjectIdentification
- ParticipantObjectID = patientID
- ParticipantObjectTypeCodeRole = 1 (patient)
ITI-16 (SQL Query) Registry
EventIdentification
- EventTypeCode = ITI-16
- EventDateTime
- EventOutcomeIndicator
ParticipantObjectIdentification
- ParticipantObjectQuery = base64 of AdhocQueryRequest
- ParticipantObjectTypeCodeRole = 24 (query)
ActiveParticipant
- RoleIDCode = 110153 (source)
- NetworkAccessPointID = IP address of Document Consumer
ActiveParticipant
- UserID = registry endpoint
- RoleIDCode = 110152 (destination)
ITI-17 (Retrieve) Repository
EventIdentification
- EventTypeCode = ITI-17
- EventDateTime
- EventOutcomeIndicator
ParticipantObjectIdentification
- ParticipantObjectTypeCodeRole = 3 (report)
- ParticipantObjectId = Document URI
ActiveParticipant
- RoleIDCode = 110153 (source)
- NetworkAccessPointID = IP address of Document Consumer
ActiveParticipant
- UserID = IP address of repository
- RoleIDCode = 110152 (destination)
ITI-17 (Retrieve) Document Consumer
EventIdentification
- EventTypeCode = ITI-17
- EventDateTime
- EventOutcomeIndicator
ParticipantObjectIdentification
- ParticipantObjectTypeCodeRole = 3 (report)
- ParticipantObjectId = Document uniqueId
ActiveParticipant
- UserID = processID@IP OR just IP of Document Consumer
- RoleIDCode = 110153 (source)
ActiveParticipant
- UserID = IP address or WS Endpoint of repository
- RoleIDCode = 110152 (destination)
ParticipantObjectIdentification
- ParticipantObjectID = patientID
- ParticipantObjectTypeCodeRole = 1 (patient)
ActiveParticipant
- UserID = identity of human
- UserIsRequestor = TRUE
ITI-18 (Stored Query) Registry
EventIdentification
- EventTypeCode = ITI-18
- EventDateTime
- EventOutcomeIndicator
ParticipantObjectIdentification
- ParticipantObjectQuery = base64 of AdhocQueryRequest
- ParticipantObjectTypeCodeRole = 24 (query)
- ParticipantObjectId = Stored Query UUID
ActiveParticipant
- RoleIDCode = 110153 (source)
- NetworkAccessPointID = IP address of Document Consumer
ActiveParticipant
- UserID = registry endpoint
- RoleIDCode = 110152 (destination)
This is required only if the patient ID is present as a parameter to the stored query
ParticipantObjectIdentification
- ParticipantObjectID = patientID
- ParticipantObjectTypeCodeRole = 1 (patient)
ITI-18 (Stored Query) Document Consumer
EventIdentification
- EventTypeCode = ITI-18
- EventDateTime
- EventOutcomeIndicator
ParticipantObjectIdentification
- ParticipantObjectQuery = base64 of AdhocQueryRequest
- ParticipantObjectTypeCodeRole = 24 (query)
- ParticipantObjectId = Stored Query UUID
ActiveParticipant
- RoleIDCode = 110153 (source)
- NetworkAccessPointID = IP address of Document Consumer
ActiveParticipant
- UserID = registry endpoint
- RoleIDCode = 110152 (destination)
ParticipantObjectIdentification
- ParticipantObjectID = patientID
- ParticipantObjectTypeCodeRole = 1 (patient)
ActiveParticipant
- UserID = identity of human
- UserIsRequestor = TRUE
Example
<AuditMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="healthcare-security-audit.xsd">
<EventIdentification EventActionCode="E" EventDateTime="2008-01-10T13:46:51.140-05:00"
EventOutcomeIndicator="0">
<EventID code="110112" codeSystemName="DCM" displayName="Query"/>
<EventTypeCode code="ITI-18" codeSystemName="IHE Transactions"
displayName="Registry Stored Query"/>
</EventIdentification>
<ActiveParticipant NetworkAccessPointTypeCodeError=""
UserID="XdsTester" UserIsRequestor="true" NetworkAccessPointID="192.168.254.16">
<RoleIDCode code="110153" codeSystemName="DCM" displayName="Source"/>
</ActiveParticipant>
<ActiveParticipant NetworkAccessPointTypeCodeError=""
UserID="http://129.6.24.109:9080/axis2/services/xdsregistryb" UserIsRequestor="false">
<RoleIDCode code="110152" codeSystemName="DCM" displayName="Destination"/>
</ActiveParticipant>
<AuditSourceIdentification AuditSourceID="92.97.127.202"/>
<ParticipantObjectIdentification
ParticipantObjectID="urn:uuid:14d4debf-8f97-4251-9a74-a90016b0af0d"
ParticipantObjectTypeCode="2" ParticipantObjectTypeCodeRole="24">
<ParticipantObjectIDTypeCode code="ITI-18" codeSystemName="IHE Transactions"
displayName="Registry Stored Query"/>
<ParticipantObjectQuery>PHF1ZXJ5OkFkaG9jUXVlcnlSZXF1ZXN0CiAgICB4bWxuczpxdWVyeT0idXJuOm9hc2lzOm5hbWVz
OnRjOmVieG1sLXJlZ3JlcDp4c2Q6cXVlcnk6My4wIiB4bWxuczpyaW09InVybjpvYXNpczpuYW1l
czp0YzplYnhtbC1yZWdyZXA6eHNkOnJpbTozLjAiPgogICAgPHF1ZXJ5OlJlc3BvbnNlT3B0aW9u
IHJldHVybkNvbXBvc2VkT2JqZWN0cz0idHJ1ZSIgcmV0dXJuVHlwZT0iTGVhZkNsYXNzIi8+CiAg
ICA8cmltOkFkaG9jUXVlcnkgaWQ9InVybjp1dWlkOjE0ZDRkZWJmLThmOTctNDI1MS05YTc0LWE5
MDAxNmIwYWYwZCI+CiAgICAgICAgPHJpbTpTbG90IG5hbWU9IiRYRFNEb2N1bWVudEVudHJ5U3Rh
dHVzIj4KICAgICAgICAgICAgPHJpbTpWYWx1ZUxpc3Q+CiAgICAgICAgICAgICAgICA8cmltOlZh
bHVlPigndXJuOm9hc2lzOm5hbWVzOnRjOmVieG1sLXJlZ3JlcDpTdGF0dXNUeXBlOkFwcHJvdmVk
Jyk8L3JpbTpWYWx1ZT4KICAgICAgICAgICAgPC9yaW06VmFsdWVMaXN0PgogICAgICAgIDwvcmlt
OlNsb3Q+CiAgICAgICAgPHJpbTpTbG90IG5hbWU9IiRYRFNEb2N1bWVudEVudHJ5UGF0aWVudElk
Ij4KICAgICAgICAgICAgPHJpbTpWYWx1ZUxpc3Q+CiAgICAgICAgICAgICAgICA8cmltOlZhbHVl
PicyNzBhNTlkN2E4YjE0NWJeXl4mYW1wOzEuMy42LjEuNC4xLjIxMzY3LjIwMDUuMy43JmFtcDtJ
U08nPC9yaW06VmFsdWU+CiAgICAgICAgICAgIDwvcmltOlZhbHVlTGlzdD4KICAgICAgICA8L3Jp
bTpTbG90PgogICAgPC9yaW06QWRob2NRdWVyeT4KPC9xdWVyeTpBZGhvY1F1ZXJ5UmVxdWVzdD4K
</ParticipantObjectQuery>
</ParticipantObjectIdentification>
</AuditMessage>
ITI-43 (Retrieve Document Set) Repository
EventIdentification
- EventTypeCode = ITI-43
- EventDateTime
- EventOutcomeIndicator
ParticipantObjectIdentification
- ParticipantObjectTypeCodeRole = 3 (report)
- ParticipantObjectId = Document uniqueId
ActiveParticipant
- RoleIDCode = 110153 (source)
- NetworkAccessPointID = IP address of Document Consumer
ActiveParticipant
- UserID = IP address of repository
- RoleIDCode = 110152 (destination)
ITI-17 (Retrieve Document Set) Document Consumer
EventIdentification
- EventTypeCode = ITI-43
- EventDateTime
- EventOutcomeIndicator
ParticipantObjectIdentification
- ParticipantObjectTypeCodeRole = 3 (report)
- ParticipantObjectId = Document uniqueId
ActiveParticipant
- UserID = processID@IP OR just IP of Document Consumer
- RoleIDCode = 110153 (source)
ActiveParticipant
- UserID = IP address of repository
- RoleIDCode = 110152 (destination)
ParticipantObjectIdentification
- ParticipantObjectID = patientID
- ParticipantObjectTypeCodeRole = 1 (patient)
ActiveParticipant
- UserID = identity of human
- UserIsRequestor = TRUE
Problems with XDS Syslog specifications
In generating the above tables, I have found the following issues with the Syslog specifications within XDS. These comments will go into a CP at the end of the season. It is possible (and likely) that these have already been discussed.
- AuditSourceIdentification/AuditSourceID indicates a process ID but an IP address would be more useful.
- ITI-14 requires a Human Requestor/UserId but this transaction is unlikely to have a human behind it.
- Human Requestor has no documented RoleID code so that it can be easily distinguished from other ActiveParticipants
- ITI-16 - the registry is required to log the patient ID but this is not easy to extract from an SQL query.
- We rely heavily on EventTypeCode but the Schema has minOccurs="0"
- NetworkAccessPointID is labeled MC but need to be labled M in some cases where it is the only place to encode the IP of the station.
I have started a CP to formalize the discussion. It is available here.
