From: <chr...@us...> - 2013-02-05 22:06:46
|
Revision: 17638 http://dcm4che.svn.sourceforge.net/dcm4che/?rev=17638&view=rev Author: chrislaatsf Date: 2013-02-05 22:06:39 +0000 (Tue, 05 Feb 2013) Log Message: ----------- [artf125568] : check the string value for codeValue before inserting into Code table. Code Review #10960 Modified Paths: -------------- dcm4chee/dcm4chee-arc/branches/DCM4CHEE_2_14_2_BRANCHA/dcm4jboss-ejb/src/java/org/dcm4chex/archive/ejb/entity/CodeBean.java Modified: dcm4chee/dcm4chee-arc/branches/DCM4CHEE_2_14_2_BRANCHA/dcm4jboss-ejb/src/java/org/dcm4chex/archive/ejb/entity/CodeBean.java =================================================================== --- dcm4chee/dcm4chee-arc/branches/DCM4CHEE_2_14_2_BRANCHA/dcm4jboss-ejb/src/java/org/dcm4chex/archive/ejb/entity/CodeBean.java 2013-02-05 19:42:07 UTC (rev 17637) +++ dcm4chee/dcm4chee-arc/branches/DCM4CHEE_2_14_2_BRANCHA/dcm4jboss-ejb/src/java/org/dcm4chex/archive/ejb/entity/CodeBean.java 2013-02-05 22:06:39 UTC (rev 17638) @@ -179,7 +179,15 @@ if (item == null) return null; final String value = item.getString(Tags.CodeValue); + if (isValueEmpty(value)) { + log.warn("Missing Code Value - ignore item"); + return null; + } final String designator = item.getString(Tags.CodingSchemeDesignator); + if (isValueEmpty(designator)) { + log.warn("Missing Code Designator - ignore item"); + return null; + } final String version = item.getString(Tags.CodingSchemeVersion); final String meaning = item.getString(Tags.CodeMeaning); Collection c = codeHome.findByValueAndDesignator(value, designator); @@ -197,33 +205,46 @@ if (sq == null || sq.isEmpty()) return; Dataset item = sq.getItem(0); if (item.isEmpty()) return; - c.add(CodeBean.valueOf(codeHome, item)); + CodeLocal codeItem = CodeBean.valueOf(codeHome, item); + if (codeItem != null) { + c.add(codeItem); + } for (int i = 1, n = sq.countItems(); i < n; i++) { - c.add(CodeBean.valueOf(codeHome, sq.getItem(i))); + codeItem = CodeBean.valueOf(codeHome, sq.getItem(i)); + if (codeItem != null) { + c.add(codeItem); + } } } + /** + * Check all codes in a sequence and return false if all codes are invalid, true otherwise + * @param prompt - description of sequence, used in log message + * @param sq - sequence containing code items + * @return true if at least one code is valid, false otherwise + */ public static boolean checkCodes(String prompt, DcmElement sq) { if (sq == null || sq.isEmpty()) return true; + int validCount = sq.countItems(); for (int i = 0, n = sq.countItems(); i < n; i++) { Dataset item = sq.getItem(i); - if (!item.containsValue(Tags.CodeValue)) { + if (isValueEmpty(item.getString(Tags.CodeValue))) { log.warn("Missing Code Value (0008,0100) in " + prompt - + " - ignore all items"); - return false; + + " - ignore item."); + validCount--; + } else if (isValueEmpty(item.getString(Tags.CodingSchemeDesignator))) { + log.warn("Missing value for Coding Scheme Designator (0008,0102) in " + + prompt + " - ignore item"); + validCount--; + } else if (isValueEmpty(item.getString(Tags.CodeMeaning))) { + log.warn("Missing Code Meaning (0008,0104) in " + prompt); } - if (!item.containsValue(Tags.CodingSchemeDesignator)) { - log.warn("Missing Coding Scheme Designator (0008,0102) in " - + prompt + " - ignore all items"); - return false; - } - if (!item.containsValue(Tags.CodeMeaning)) { - log.warn("Missing Code Meaning (0008,0104) in " + prompt - + " - ignore all items"); - return false; - } } - return true; + return (validCount > 0); } + + private static boolean isValueEmpty(String str) { + return ((str == null) || (str.trim().length() == 0)); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |