Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 2139da65 authored by Alexandre Pocinho's avatar Alexandre Pocinho
Browse files

Merge branch 'feature/ANSBP-430' into release/3.10.0

parents ec9f97cb c49dc124
No related branches found
No related tags found
2 merge requests!69release 3.10.0,!68[HLVAL-481] Wrong validation constraints in [eHDSI HL7v3] - Identification...
Showing
with 102 additions and 15 deletions
......@@ -21,7 +21,6 @@ public class GVTtoGazelleValidationReportMapper {
private static final String WARNING = "Warning";
private static final String VALIDATION_NOTES = "Validation Notes";
private static final String INFORMATIONAL = "Informational";
private static final String CODE_NOT_FOUND = "Code Not Found";
public GVTtoGazelleValidationReportMapper() {
//Empty constructor
......@@ -59,22 +58,15 @@ public class GVTtoGazelleValidationReportMapper {
*/
private void addValidationConstraint(Entry entry, ValidationResults vr) {
String entryClassification = entry.getClassification();
String entryCategory = entry.getCategory();
switch (entryClassification){
case ERROR:
addError(vr, entry);
break;
case ALERT:
if (CODE_NOT_FOUND.equals(entryCategory)){
addWarning(vr, entry);
} else {
addAssertion(vr, entry);
}
break;
case WARNING:
addWarning(vr,entry);
break;
case ALERT:
case AFFIRMATIVE:
case VALIDATION_NOTES:
case INFORMATIONAL:
......
# Add here custom error levels
#report {
# code-not-found-cs-empty {
# classification = ${report.classification.warning}
# }
#}
\ No newline at end of file
report {
code-not-found-cs-empty {
template = "The value '%s' at location %s was found in the value set %s associated with code system '%s', but code system was not populated in the message at location %s. It is recommended to provide the code and code system."
classification = ${report.classification.warning}
}
single-code-cs-not-found {
template = "Code '%s' from code system '%s' was not found in location %s, but Code System was not populated at location %s. It is recommended to provide the code and code system."
classification = ${report.classification.warning}
}
cc-code-failure-notfound-codesys {
classification = ${report.classification.warning}
}
code-not-found-simple{
classification = ${report.classification.warning}
}
code-not-found-coded-element{
classification = ${report.classification.warning}
}
code-not-found-cs{
classification = ${report.classification.warning}
}
code-not-found-cs-empty{
classification = ${report.classification.warning}
}
}
\ No newline at end of file
package net.ihe.gazelle.hl7.gvt;
import net.ihe.gazelle.hl7.exception.GazelleErrorCode;
import net.ihe.gazelle.hl7.validator.report.HL7v2ValidationReport;
import org.apache.log4j.Logger;
import net.ihe.gazelle.hl7.validator.report.Warning;
import org.junit.Assert;
import org.junit.Test;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
public class GVTtoGazelleValidationReportMapperTest {
private final String PATHPROFILE_IRELAND = "src/test/resources/messageprofiles/ADT_A03_ADT_A03/";
private final String PATHPROFILE_INTEROP = "src/test/resources/messageprofiles/ZAM^Z01_AlertCNF/";
private final String PATHPROFILE_INTEROP_2 = "src/test/resources/messageprofiles/ MDM^T02^MDM_T02/";
private final String ER7INCORRECTMESSAGE = "MSH|^~\\&|TOREX.HEALTHLINK.12|MATER MISERICORDIAE HOSPITAL^908^L||Smyth, Michael^987654^Medical" +
" Council No|200805281125||ADT^A03|1633796|P|2.4\n" +
......@@ -43,6 +52,9 @@ public class GVTtoGazelleValidationReportMapperTest {
"OBX|1|CWE|ACK_RECEPTION_DMP^Accusé de réception DMP^AckMétierZAM|015|Z^^HL70136||||||F|";
gvtValidator = new GVTValidator(PATHPROFILE_INTEROP, ZAMNOCODEMESSAGE);
gvtValidator.validateMessage(hl7v2ValidationReport);
List<Object> notifications = hl7v2ValidationReport.getResults().getNotifications();
List<Warning> warnings = extractWarningsWithSpecificGazelleError(notifications, GazelleErrorCode.CODE_NOT_FOUND);
Assert.assertEquals(1, warnings.size());
Assert.assertEquals("PASSED", hl7v2ValidationReport.getOverview().getValidationTestResult());
}
......@@ -56,4 +68,31 @@ public class GVTtoGazelleValidationReportMapperTest {
gvtValidator.validateMessage(hl7v2ValidationReport);
Assert.assertEquals("PASSED", hl7v2ValidationReport.getOverview().getValidationTestResult());
}
@Test
public void testConvertGVTReportToGazelleReportSingleCodeNotFound() throws IOException {
String pathMessage = "src/test/resources/messages_examples/message_MDM_T02.hl7";
String content = new String(Files.readAllBytes(Paths.get(pathMessage)), StandardCharsets.UTF_8);
gvtValidator = new GVTValidator(PATHPROFILE_INTEROP_2, content);
gvtValidator.validateMessage(hl7v2ValidationReport);
List<Object> notifications = hl7v2ValidationReport.getResults().getNotifications();
List<Warning> warnings = extractWarningsWithSpecificGazelleError(notifications, GazelleErrorCode.SINGLE_CODE_FAILURE);
Assert.assertEquals(1, warnings.size());
Assert.assertEquals("PASSED", hl7v2ValidationReport.getOverview().getValidationTestResult());
}
private List<Warning> extractWarningsWithSpecificGazelleError(List<Object> notifications, GazelleErrorCode givenGazelleErrorCode) {
List<Warning> warnings = new ArrayList<>();
for (Object notification : notifications) {
if (notification instanceof Warning) {
Warning warning = (Warning) notification;
if (warning.getGazelleErrorCode().equals(givenGazelleErrorCode)){
warnings.add((Warning) notification);
}
}
}
return warnings;
}
}
<CoConstraintContext ID="f19e4aee-25c4-4d08-b78d-95a5e0b30d85" />
\ No newline at end of file
<ConformanceContext xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/Jungyubw/NIST_healthcare_hl7_v2_profile_schema/master/Schema/NIST%20Validation%20Schema/ConformanceContext.xsd" UUID="885a9f36-0e0a-4f34-bad4-58e65492d674"><MetaData Name="Transmission de documents CDA en HL7v2 / Transmission au LPS d'un document provenant d'un courriel MSSanté (v3.1)" OrgName="No Org Info" Version="2.6" Date="No Date Info" /><Predicates><Datatype><ByID ID="XPN_FR-INS_2-5"><Predicate Target="1[1]" TrueUsage="R" FalseUsage="O"><Description>If XPN.7 (Name Type Code) contains the value 'L' (Case Sensitive). </Description><Condition><PlainText Path="7[1]" Text="L" IgnoreCase="false" NotPresentBehavior="FAIL" /></Condition></Predicate><Predicate Target="2[1]" TrueUsage="R" FalseUsage="O"><Description>If XPN.7 (Name Type Code) contains the value 'L' (Case Sensitive). </Description><Condition><PlainText Path="7[1]" Text="L" IgnoreCase="false" NotPresentBehavior="FAIL" /></Condition></Predicate><Predicate Target="3[1]" TrueUsage="R" FalseUsage="O"><Description>If XPN.7 (Name Type Code) contains the value 'L' (Case Sensitive). </Description><Condition><PlainText Path="7[1]" Text="L" IgnoreCase="false" NotPresentBehavior="FAIL" /></Condition></Predicate></ByID><ByID ID="XCN_FR"><Predicate Target="13[1]" TrueUsage="R" FalseUsage="O"><Description>If XCN.1 (ID Number) is valued </Description><Condition><Presence Path="1[1]" /></Condition></Predicate><Predicate Target="10[1]" TrueUsage="R" FalseUsage="O"><Description>If ( XCN.2.1 (Surname) is valued OR XCN.3 (Given Name) is valued )</Description><Condition><OR><Presence Path="3[1]" /><Presence Path="2[1].1[1]" /></OR></Condition></Predicate></ByID><ByID ID="XTN_FR_2-5"><Predicate Target="12[1]" TrueUsage="R" FalseUsage="O"><Description>If ( XTN.2 (Telecommunication Use Code) is not valued OR XTN.2 (Telecommunication Use Code) does not contain the value 'NET'. )</Description><Condition><OR><NOT><PlainText Path="2[1]" Text="NET" IgnoreCase="false" NotPresentBehavior="FAIL" /></NOT><NOT><Presence Path="2[1]" /></NOT></OR></Condition></Predicate><Predicate Target="4[1]" TrueUsage="R" FalseUsage="O"><Description>If XTN.2 (Telecommunication Use Code) contains the value 'NET'. </Description><Condition><PlainText Path="2[1]" Text="NET" IgnoreCase="false" NotPresentBehavior="FAIL" /></Condition></Predicate></ByID><ByID ID="XAD_FR-INS_2-5"><Predicate Target="9[1]" TrueUsage="R" FalseUsage="O"><Description>If XAD.7 (Address Type) contains the value 'BDL' (Case Sensitive). </Description><Condition><PlainText Path="7[1]" Text="BDL" IgnoreCase="false" NotPresentBehavior="FAIL" /></Condition></Predicate></ByID><ByID ID="HD_FR"><Predicate Target="2[1]" TrueUsage="R" FalseUsage="O"><Description>If HD.3 (Universal ID Type) is valued </Description><Condition><Presence Path="3[1]" /></Condition></Predicate><Predicate Target="3[1]" TrueUsage="R" FalseUsage="O"><Description>If HD.2 (Universal ID) is valued </Description><Condition><Presence Path="2[1]" /></Condition></Predicate></ByID><ByID ID="XCN_FR-MSS_2-9"><Predicate Target="10[1]" TrueUsage="R" FalseUsage="O"><Description>If ( XCN.2 (Family Name) is valued OR XCN.3 (Given Name) is valued )</Description><Condition><OR><Presence Path="3[1]" /><Presence Path="2[1]" /></OR></Condition></Predicate></ByID><ByID ID="EI_FR"><Predicate Target="2[1]" TrueUsage="R" FalseUsage="O"><Description>If ( EI.3 (Universal ID) is not valued AND EI.4 (Universal ID Type) is not valued )</Description><Condition><AND><NOT><Presence Path="3[1]" /></NOT><NOT><Presence Path="4[1]" /></NOT></AND></Condition></Predicate><Predicate Target="3[1]" TrueUsage="R" FalseUsage="O"><Description>If ( EI.2 (Namespace ID) is not valued OR EI.4 (Universal ID Type) is valued )</Description><Condition><OR><Presence Path="4[1]" /><NOT><Presence Path="2[1]" /></NOT></OR></Condition></Predicate><Predicate Target="4[1]" TrueUsage="R" FalseUsage="O"><Description>If ( EI.2 (Namespace ID) is not valued OR EI.3 (Universal ID) is valued )</Description><Condition><OR><NOT><Presence Path="2[1]" /></NOT><Presence Path="3[1]" /></OR></Condition></Predicate></ByID><ByID ID="XTN_FR"><Predicate Target="12[1]" TrueUsage="R" FalseUsage="O"><Description>If ( XTN.3 (Telecommunication Equipment Type) is valued AND ( XTN.2 (Telecommunication Use Code) is not valued OR XTN.2 (Telecommunication Use Code) does not contain the value 'NET'. ) )</Description><Condition><AND><Presence Path="3[1]" /><OR><NOT><Presence Path="2[1]" /></NOT><NOT><PlainText Path="2[1]" Text="NET" IgnoreCase="false" NotPresentBehavior="FAIL" /></NOT></OR></AND></Condition></Predicate><Predicate Target="4[1]" TrueUsage="R" FalseUsage="O"><Description>If XTN.2 (Telecommunication Use Code) contains the value 'NET'. </Description><Condition><PlainText Path="2[1]" Text="NET" IgnoreCase="false" NotPresentBehavior="FAIL" /></Condition></Predicate></ByID><ByID ID="XCN_FR-PRT_2-9"><Predicate Target="10[1]" TrueUsage="R" FalseUsage="O"><Description>If ( XCN.2 (Family Name) is valued OR XCN.3 (Given Name) is valued )</Description><Condition><OR><Presence Path="3[1]" /><Presence Path="2[1]" /></OR></Condition></Predicate></ByID><ByID ID="EI_FR-MSH2"><Predicate Target="3[1]" TrueUsage="R" FalseUsage="O"><Description>If EI.4 (Universal ID Type) is valued </Description><Condition><Presence Path="4[1]" /></Condition></Predicate><Predicate Target="4[1]" TrueUsage="R" FalseUsage="O"><Description>If EI.3 (Universal ID) is valued </Description><Condition><Presence Path="3[1]" /></Condition></Predicate></ByID><ByID ID="CX_FR_2-5"><Predicate Target="7[1]" TrueUsage="R" FalseUsage="O"><Description>If CX.5 (Identifier Type Code) contains the value 'INS-C'. </Description><Condition><PlainText Path="5[1]" Text="INS-C" IgnoreCase="false" NotPresentBehavior="FAIL" /></Condition></Predicate></ByID><ByID ID="XCN_FR_2-5"><Predicate Target="13[1]" TrueUsage="R" FalseUsage="O"><Description>If XCN.1 (ID Number) is valued </Description><Condition><Presence Path="1[1]" /></Condition></Predicate><Predicate Target="10[1]" TrueUsage="R" FalseUsage="O"><Description>If ( XCN.2 (Family Name) is valued OR XCN.3 (Given Name) is valued )</Description><Condition><OR><Presence Path="3[1]" /><Presence Path="2[1]" /></OR></Condition></Predicate></ByID><ByID ID="XCN_FR_2-9"><Predicate Target="13[1]" TrueUsage="R" FalseUsage="O"><Description>If XCN.1 (Person Identifier) is valued </Description><Condition><Presence Path="1[1]" /></Condition></Predicate><Predicate Target="10[1]" TrueUsage="R" FalseUsage="O"><Description>If ( XCN.2 (Family Name) is valued OR XCN.3 (Given Name) is valued )</Description><Condition><OR><Presence Path="3[1]" /><Presence Path="2[1]" /></OR></Condition></Predicate></ByID></Datatype><Segment><ByID ID="PV1_PAM-TCH_2-5"><Predicate Target="19[1]" TrueUsage="R" FalseUsage="RE"><Description>If PV1-2 (Patient Class) contains one of the values in the list: ['I','O','R','E'] (Case Sensitive). </Description><Condition><StringList Path="2[1]" CSV="I,O,R,E" IgnoreCase="false" NotPresentBehavior="FAIL" /></Condition></Predicate></ByID><ByID ID="PID_PAM-INS_2-5"><Predicate Target="7[1]" TrueUsage="R" FalseUsage="O"><Description>If ( At least one occurrence of PID-3.5 (Identifier Type Code) contains the value 'INS' (Case Sensitive). AND At least one occurrence of PID-32 (Identity Reliability Code) contains the value 'VALI' (Case Sensitive). )</Description><Condition><AND><PlainText Path="3[*].5[1]" Text="INS" IgnoreCase="false" AtLeastOnce="true" NotPresentBehavior="FAIL" /><PlainText Path="32[*]" Text="VALI" IgnoreCase="false" AtLeastOnce="true" NotPresentBehavior="FAIL" /></AND></Condition></Predicate><Predicate Target="8[1]" TrueUsage="R" FalseUsage="O"><Description>If ( At least one occurrence of PID-3.5 (Identifier Type Code) contains the value 'INS' (Case Sensitive). AND At least one occurrence of PID-32 (Identity Reliability Code) contains the value 'VALI' (Case Sensitive). )</Description><Condition><AND><PlainText Path="32[*]" Text="VALI" IgnoreCase="false" AtLeastOnce="true" NotPresentBehavior="FAIL" /><PlainText Path="3[*].5[1]" Text="INS" IgnoreCase="false" AtLeastOnce="true" NotPresentBehavior="FAIL" /></AND></Condition></Predicate></ByID><ByID ID="PRT_TCH-MSS_2-9"><Predicate Target="5[1]" TrueUsage="R" FalseUsage="O"><Description>If ( All occurrences of PRT-8 (Organization) is not valued AND All occurrences of PRT-10 (Device) is not valued )</Description><Condition><AND><NOT><Presence Path="8[*]" /></NOT><NOT><Presence Path="10[*]" /></NOT></AND></Condition></Predicate><Predicate Target="8[1]" TrueUsage="R" FalseUsage="O"><Description>If ( All occurrences of PRT-5 (Person) is not valued AND All occurrences of PRT-10 (Device) is not valued )</Description><Condition><AND><NOT><Presence Path="5[*]" /></NOT><NOT><Presence Path="10[*]" /></NOT></AND></Condition></Predicate><Predicate Target="10[1]" TrueUsage="R" FalseUsage="O"><Description>If ( All occurrences of PRT-5 (Person) is not valued AND All occurrences of PRT-8 (Organization) is not valued )</Description><Condition><AND><NOT><Presence Path="5[*]" /></NOT><NOT><Presence Path="8[*]" /></NOT></AND></Condition></Predicate></ByID><ByID ID="PRT_TCH-DMP_2-9"><Predicate Target="5[1]" TrueUsage="R" FalseUsage="O"><Description>If At least one occurrence of PRT-10 (Device) is not valued </Description><Condition><NOT><Presence Path="10[*]" /></NOT></Condition></Predicate><Predicate Target="10[1]" TrueUsage="R" FalseUsage="O"><Description>If At least one occurrence of PRT-5 (Person) is not valued </Description><Condition><NOT><Presence Path="5[*]" /></NOT></Condition></Predicate></ByID></Segment><Group /><Message /></Predicates><Constraints><Datatype><ByID ID="DTM_2-5"><Constraint ID="DTM_DateTimeConstraint"><Description>The value SHALL follow the Date/Time pattern 'YYYY[MM[DD[HH[MM[SS[.S[S[S[S]]]]]]]]][+/-ZZZZ]'.</Description><Assertion><Format Path="." Regex="^(\d{4}|\d{6}|\d{8}|\d{10}|\d{12}|\d{14}|\d{14}\.\d|\d{14}\.\d{2}|\d{14}\.\d{3}|\d{14}\.\d{4})([+-]\d{4})?$" /></Assertion></Constraint></ByID><ByID ID="DT_2-9"><Constraint ID="DT_DateTimeConstraint"><Description>The value SHALL follow the Date/Time pattern 'YYYY[MM[DD]]'.</Description><Assertion><Format Path="." Regex="^(\d{4}|\d{6}|\d{8})$" /></Assertion></Constraint></ByID><ByID ID="DT"><Constraint ID="DT_DateTimeConstraint"><Description>The value SHALL follow the Date/Time pattern 'YYYY[MM[DD]]'.</Description><Assertion><Format Path="." Regex="^(\d{4}|\d{6}|\d{8})$" /></Assertion></Constraint></ByID><ByID ID="DTM_2-9"><Constraint ID="DTM_DateTimeConstraint"><Description>The value SHALL follow the Date/Time pattern 'YYYY[MM[DD[HH[MM[SS[.S[S[S[S]]]]]]]]][+/-ZZZZ]'.</Description><Assertion><Format Path="." Regex="^(\d{4}|\d{6}|\d{8}|\d{10}|\d{12}|\d{14}|\d{14}\.\d|\d{14}\.\d{2}|\d{14}\.\d{3}|\d{14}\.\d{4})([+-]\d{4})?$" /></Assertion></Constraint></ByID><ByID ID="DT_2-5"><Constraint ID="DT_DateTimeConstraint"><Description>The value SHALL follow the Date/Time pattern 'YYYY[MM[DD]]'.</Description><Assertion><Format Path="." Regex="^(\d{4}|\d{6}|\d{8})$" /></Assertion></Constraint></ByID><ByID ID="TM"><Constraint ID="TM_DateTimeConstraint"><Description>The value SHALL follow the Date/Time pattern 'HH[MM[SS[.S[S[S[S]]]]]][+/-ZZZZ]'.</Description><Assertion><Format Path="." Regex="^(\d{2}|\d{4}|\d{6}|\d{6}\.\d|\d{6}\.\d{2}|\d{6}\.\d{3}|\d{6}\.\d{4})([+-]\d{4})?$" /></Assertion></Constraint></ByID><ByID ID="DTM"><Constraint ID="DTM_DateTimeConstraint"><Description>The value SHALL follow the Date/Time pattern 'YYYY[MM[DD[HH[MM[SS[.S[S[S[S]]]]]]]]][+/-ZZZZ]'.</Description><Assertion><Format Path="." Regex="^(\d{4}|\d{6}|\d{8}|\d{10}|\d{12}|\d{14}|\d{14}\.\d|\d{14}\.\d{2}|\d{14}\.\d{3}|\d{14}\.\d{4})([+-]\d{4})?$" /></Assertion></Constraint></ByID></Datatype><Segment><ByID ID="MSH_TCH-T02"><Constraint ID="MSH-18" Strength="SHALL"><Description>( All occurrences of MSH-18 (Character Set) shall contain the value 'UNICODE UTF-8' drawn from the code system 'HL70211'. OR All occurrences of MSH-18 (Character Set) shall contain the value '8859/15' drawn from the code system 'HL70211'. )</Description><Assertion><OR><PlainText Path="18[*]" Text="8859/15" IgnoreCase="false" AtLeastOnce="false" NotPresentBehavior="PASS" /><PlainText Path="18[*]" Text="UNICODE UTF-8" IgnoreCase="false" AtLeastOnce="false" NotPresentBehavior="PASS" /></OR></Assertion></Constraint></ByID><ByID ID="TXA_TCH"><Constraint ID="TXA-1 = 1" Strength="SHALL"><Description> TXA-1 (Set ID- TXA) shall contain the value '1' (Case Sensitive). </Description><Assertion><PlainText Path="1[1]" Text="1" IgnoreCase="false" NotPresentBehavior="PASS" /></Assertion></Constraint></ByID><ByID ID="PID_PAM-INS_2-5"><Constraint ID="[INS] Dans le cas où l’on véhicule le matricule INS et que l'identité est qualifiée, le lieu de naissance est obligatoire. Cela se traduit par une adresse avec les caractéristiques suivantes : un champ PID-11.9 pour véhiculer le Code Officiel Géographique (COG) de la commune pour les personnes nées en France ou du pays pour les personnes nées à l’étranger avec le champ PID-11.7 prenant la valeur « BDL ». " Strength="SHALL"><Description>At least one occurrence of PID-11.7 (Address Type) shall contain the value 'BDL' (Case Sensitive). </Description><Assertion><PlainText Path="11[*].7[1]" Text="BDL" IgnoreCase="false" AtLeastOnce="true" NotPresentBehavior="PASS" /></Assertion></Constraint><Constraint ID="[INS] Dans le cas où l’on véhicule l’INS et que l’identité est qualifiée, le nom de famille (PID-5.1), le premier prénom de l’acte de naissance (PID-5.2) et les prénoms de l’acte de naissance (PID-5.3) sont obligatoires. Le type de nom (PID-5.7) doit prendre la valeur L." Strength="SHALL"><Description>At least one occurrence of PID-5.7 (Name Type Code) shall contain the value 'L' (Case Sensitive). </Description><Assertion><PlainText Path="5[*].7[1]" Text="L" IgnoreCase="false" AtLeastOnce="true" NotPresentBehavior="PASS" /></Assertion></Constraint><Constraint ID="[INS] Le prénom (PID-5.2) doit correspondre au premier prénom de la liste des prénoms de l'acte de naissance (PID-5.3)." Strength="SHALL"><Description>The first occurrence of PID-5.3 (Second and Further Given Names or Initials Thereof) shall be truncated equivalent to At least one occurrence of PID-5.2 (Given Name)</Description><Assertion><PathValue Path1="5[1].3[1]" Operator="EQ" Path2="5[*].2[1]" NotPresentBehavior="PASS" Truncated="true" IdenticalEquality="false" Path2Mode="AtLeastOne" /></Assertion></Constraint></ByID></Segment><Group><ByID ID="6616a2f88b87bc0006c99908-9"><Constraint ID="Position - OBX 13" Strength="SHALL"><Description>If OBSERVATION.OBX-1 (Set ID - OBX) contains the value '13' (Case Sensitive). then OBSERVATION.OBX-3.1 (Identifier) shall contain the value 'CORPSMAIL_PATIENT' (Case Sensitive). </Description><Assertion><IMPLY><PlainText Path="1[1].1[1]" Text="13" IgnoreCase="false" NotPresentBehavior="FAIL" /><PlainText Path="1[1].3[1].1[1]" Text="CORPSMAIL_PATIENT" IgnoreCase="false" NotPresentBehavior="FAIL" /></IMPLY></Assertion></Constraint><Constraint ID="Position - OBX 12" Strength="SHALL"><Description>If OBSERVATION.OBX-1 (Set ID - OBX) contains the value '12' (Case Sensitive). then OBSERVATION.OBX-3.1 (Identifier) shall contain one of the values in the list: ['CORPSMAIL_PS','CORPSMAIL_PATIENT'] (Case Sensitive). </Description><Assertion><IMPLY><PlainText Path="1[1].1[1]" Text="12" IgnoreCase="false" NotPresentBehavior="FAIL" /><StringList Path="1[1].3[1].1[1]" CSV="CORPSMAIL_PS,CORPSMAIL_PATIENT" IgnoreCase="false" NotPresentBehavior="FAIL" /></IMPLY></Assertion></Constraint><Constraint ID="Au moins un segment PRT est requis au niveau du premier groupe OBSERVATION. Le message doit contenir au moins l'expéditeur en cas de publication sur le DMP et au moins un destinataire en cas d'échange via MSSanté " Strength="SHALL"><Description>If OBSERVATION.OBX-1 (Set ID - OBX) contains the value '1' (Case Sensitive). then at least one occurrence of OBSERVATION.PRT-4.1 (Identifier) shall contain one of the values in the list: ['SB','RCT'] (Case Sensitive). </Description><Assertion><IMPLY><PlainText Path="1[1].1[1]" Text="1" IgnoreCase="false" NotPresentBehavior="FAIL" /><StringList Path="2[*].4[1].1[1]" CSV="SB,RCT" IgnoreCase="false" AtLeastOnce="true" NotPresentBehavior="FAIL" /></IMPLY></Assertion></Constraint><Constraint ID="OBX-1" Strength="SHALL"><Description> OBSERVATION.OBX-1 (Set ID - OBX) shall be valued sequentially starting with the value '1'. </Description><Assertion><SetID Path="1[1].1[1]" /></Assertion></Constraint></ByID></Group><Message><ByID ID="6616a2f88b87bc0006c99908"><Constraint ID="OBR-4 = OBX-3" Strength="SHALL"><Description>1 occurrence of OBSERVATION.OBX-3.1 (Identifier) shall be identical to COMMON_ORDER.OBR-4.1 (Identifier)</Description><Assertion><PathValue Path1="9[*].1[1].3[1].1[1]" Operator="EQ" Path2="7[1].3[1].4[1].1[1]" NotPresentBehavior="PASS" Truncated="false" IdenticalEquality="true" Path1Mode="1" /></Assertion></Constraint></ByID></Message></Constraints></ConformanceContext>
\ No newline at end of file
source diff could not be displayed: it is too large. Options to address this: view the blob.
<ProfileSlicing ID="6b2bc869-147d-477a-82c3-6d25425a393c"><SegmentSlicing><Message ID="6616a2f88b87bc0006c99908"><GroupContext ID="6616a2f88b87bc0006c99908-9"><AssertionSlicing Position="2"><Slice Ref="PRT_TCH-MSS_2-9"><Description>If PRT-4.1 (Identifier) contains the value 'RCT'. </Description><Assertion><PlainText Path="4[1].1[1]" Text="RCT" IgnoreCase="false" NotPresentBehavior="FAIL" /></Assertion></Slice><Slice Ref="PRT_TCH-DMP_2-9"><Description>If PRT-4.1 (Identifier) contains the value 'SB'. </Description><Assertion><PlainText Path="4[1].1[1]" Text="SB" IgnoreCase="false" NotPresentBehavior="FAIL" /></Assertion></Slice><Slice Ref="PRT_REP-DEST_2-9"><Description>If PRT-4.1 (Identifier) contains the value 'REPLY'. </Description><Assertion><PlainText Path="4[1].1[1]" Text="REPLY" IgnoreCase="false" NotPresentBehavior="FAIL" /></Assertion></Slice></AssertionSlicing><AssertionSlicing Position="1"><Slice Ref="OBX_CDA-T02"><Description>If OBX-1 (Set ID - OBX) contains the value '1' (Case Sensitive). </Description><Assertion><PlainText Path="1[1]" Text="1" IgnoreCase="false" NotPresentBehavior="FAIL" /></Assertion></Slice><Slice Ref="OBX_MASQ-PS"><Description>If OBX-1 (Set ID - OBX) contains the value '2' (Case Sensitive). </Description><Assertion><PlainText Path="1[1]" Text="2" IgnoreCase="false" NotPresentBehavior="FAIL" /></Assertion></Slice><Slice Ref="OBX_INVI-PAT"><Description>If OBX-1 (Set ID - OBX) contains the value '3' (Case Sensitive). </Description><Assertion><PlainText Path="1[1]" Text="3" IgnoreCase="false" NotPresentBehavior="FAIL" /></Assertion></Slice><Slice Ref="OBX_INVI-RL"><Description>If OBX-1 (Set ID - OBX) contains the value '4' (Case Sensitive). </Description><Assertion><PlainText Path="1[1]" Text="4" IgnoreCase="false" NotPresentBehavior="FAIL" /></Assertion></Slice><Slice Ref="OBX_CON-SEC"><Description>If OBX-1 (Set ID - OBX) contains the value '5' (Case Sensitive). </Description><Assertion><PlainText Path="1[1]" Text="5" IgnoreCase="false" NotPresentBehavior="FAIL" /></Assertion></Slice><Slice Ref="OBX_MODIF-CC"><Description>If OBX-1 (Set ID - OBX) contains the value '6' (Case Sensitive). </Description><Assertion><PlainText Path="1[1]" Text="6" IgnoreCase="false" NotPresentBehavior="FAIL" /></Assertion></Slice><Slice Ref="OBX_DEST-DMP"><Description>If OBX-1 (Set ID - OBX) contains the value '7' (Case Sensitive). </Description><Assertion><PlainText Path="1[1]" Text="7" IgnoreCase="false" NotPresentBehavior="FAIL" /></Assertion></Slice><Slice Ref="OBX_MSS-PS"><Description>If OBX-1 (Set ID - OBX) contains the value '8' (Case Sensitive). </Description><Assertion><PlainText Path="1[1]" Text="8" IgnoreCase="false" NotPresentBehavior="FAIL" /></Assertion></Slice><Slice Ref="OBX_MSS-PAT"><Description>If OBX-1 (Set ID - OBX) contains the value '9' (Case Sensitive). </Description><Assertion><PlainText Path="1[1]" Text="9" IgnoreCase="false" NotPresentBehavior="FAIL" /></Assertion></Slice><Slice Ref="OBX_ACK-RCPT"><Description>If OBX-1 (Set ID - OBX) contains the value '10' (Case Sensitive). </Description><Assertion><PlainText Path="1[1]" Text="10" IgnoreCase="false" NotPresentBehavior="FAIL" /></Assertion></Slice><Slice Ref="OBX_ACK-LECT"><Description>If OBX-1 (Set ID - OBX) contains the value '11' (Case Sensitive). </Description><Assertion><PlainText Path="1[1]" Text="11" IgnoreCase="false" NotPresentBehavior="FAIL" /></Assertion></Slice><Slice Ref="OBX_MAIL-PS"><Description>If OBX-3.1 (Identifier) contains the value 'CORPSMAIL_PS' (Case Sensitive). </Description><Assertion><PlainText Path="3[1].1[1]" Text="CORPSMAIL_PS" IgnoreCase="false" NotPresentBehavior="FAIL" /></Assertion></Slice><Slice Ref="OBX_MAIL-PAT"><Description>If OBX-3.1 (Identifier) contains the value 'CORPSMAIL_PATIENT' (Case Sensitive). </Description><Assertion><PlainText Path="3[1].1[1]" Text="CORPSMAIL_PATIENT" IgnoreCase="false" NotPresentBehavior="FAIL" /></Assertion></Slice></AssertionSlicing></GroupContext><GroupContext ID="6616a2f88b87bc0006c99908"><AssertionSlicing Position="5"><Slice Ref="PID_PAM-INS_2-5"><Description>If ( At least one occurrence of PID-3.5 (Identifier Type Code) contains the value 'INS' (Case Sensitive). AND At least one occurrence of PID-32 (Identity Reliability Code) contains the value 'VALI' (Case Sensitive). )</Description><Assertion><AND><PlainText Path="3[*].5[1]" Text="INS" IgnoreCase="false" AtLeastOnce="true" NotPresentBehavior="FAIL" /><PlainText Path="32[*]" Text="VALI" IgnoreCase="false" AtLeastOnce="true" NotPresentBehavior="FAIL" /></AND></Assertion></Slice></AssertionSlicing></GroupContext></Message></SegmentSlicing></ProfileSlicing>
\ No newline at end of file
MSH|^~\&|RIS-Y|Organisation-Y|PFI-Y|Organisation-Y|202106060931||MDM^T02^MDM_T02|015|P|2.6|||||FRA|UNICODE UTF-8|||2.1^CISIS_CDA_HL7_V2
EVN||20211005152908|||PAT^ADMIN PAT-Cpage I^ADM PAT^^^^^^CPAGE&1.2.250.1.154&ISO^U^^^RI|20211005152908
PID|||274075176079430^^^ASIP-SANTE-INS-NIR&1.2.250.1.213.1.4.8&ISO^INS^^20101207||PatA^DOMINIQUE^DOMINIQUE^^^^L||20050101|M|||28 Av de Breteuil^^PARIS^^75007^FRA^H~^^^^^^BDL^^63220|||||||405660^^^AUT-AFFECTATION&120456789&M^AN^^20101205|||||||||||||N|VALI
PV1|1|I|UFNEPH||||||||||||||||000897406^^^AUT-AFFECTATION&120456789&M^VN^^20210409
ORC|NW|
OBR|1|||18748-4^CR d'imagerie médicale^LN|
TXA|1|18748-4|TEXT|202212160932||||||||1.2.250.1.71.4.2.2.120456789.A71024000081^Organisation-Y|||||AU|||||801234564895
OBX|1|ED|18748-4^CR d'imagerie médicale^LN||^text^XML^Base64^RG9jdW1lbnQgbWVkY2lhbCBhdSBmb3JtYXQgQ0RBIG5pdmVhdSAx||||||F|
PRT||UC||SB^^|801234564895^Eric^Thomas^^^^^^ASIP-SANTE- PS&1.2.250.1.71.4.2.1&ISO^D^^^RPPS|||LABO-X^^^^^ASIP-SANTE-ST&1.2.250.1.71.4.2.2&ISO^FINEG^^^300017985
PRT||UC||RCT^^participation|801234567897^Hoda^Adam^^^^^^ASIP-SANTE- PS&1.2.250.1.71.4.2.1&ISO^D^^^RPPS||||||||||^NET^X.400^adam.hoda@medecin.mssante.fr
OBX|2|CWE|MASQUE_PS^Masqué aux professionnels de Santé^MetaDMPMSS||N^^expandedYes-NoIndicator||||||F|
OBX|3|CWE|INVISIBLE_PATIENT^Document Non Visible par le patient^MetaDMPMSS||Y^^expandedYes-NoIndicator||||||F|
OBX|4|CWE|INVISIBLE_REP_LEGAUX^Non visible par les représentants Légaux du patient^MetaDMPMSS||Y^^expandedYes-NoIndicator||||||F|
OBX|5|CWE|CONNEXION_SECRETE^Connexion Secrete^MetaDMPMSS||Y^^expandedYes-NoIndicator||||||F|
OBX|6|CWE|MODIF_CONF_CODE^Modification Confidentiality Code^MetaDMPMSS||N^^expandedYes-NoIndicator||||||F|
OBX|7|CWE|DESTDMP^Destinataire DMP^MetaDMPMSS||Y^^expandedYes-NoIndicator||||||F|
OBX|8|CWE|DESTMSSANTEPS^Destinataire (Professionnel de Santé, organisation ou BAL applicative)^MetaDMPMSS||Y^^expandedYes-NoIndicator||||||F|
OBX|9|CWE|DESTMSSANTEPAT^Destinataire Patient^MetaDMPMSS||N^^expandedYes-NoIndicator||||||F|
OBX|10|CWE|ACK_RECEPTION^Accusé de réception^MetaDMPMSS||N^^expandedYes-NoIndicator||||||F|
OBX|11|CWE|ACK_LECTURE_MSS^Accusé de lecture^MetaDMPMSS||N^^expandedYes-NoIndicator||||||F|
OBX|12|ED|CORPSMAIL_PS^Corps du mail pour un PS^MetaDMPMSS||^text^^Base64^Q2hlciBjb25mcsOocmUsIHZvdXMgdHJvdXZlcmV6IGNpLWpvaW50IGxlIENSIGTigJlpbWFnZXJpZSBkZSBNLkR1cG9udA==||||||F|
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment