33import com .google .common .base .Joiner ;
44import com .google .common .base .Strings ;
55import com .nedap .archie .ArchieLanguageConfiguration ;
6- import com .nedap .archie .aom .*;
6+ import com .nedap .archie .aom .Archetype ;
7+ import com .nedap .archie .aom .CAttribute ;
8+ import com .nedap .archie .aom .CAttributeTuple ;
9+ import com .nedap .archie .aom .CPrimitiveTuple ;
10+ import com .nedap .archie .aom .OperationalTemplate ;
711import com .nedap .archie .aom .primitives .CInteger ;
812import com .nedap .archie .aom .primitives .CString ;
9- import com .nedap .archie .aom .primitives .CTerminologyCode ;
1013import com .nedap .archie .aom .terminology .ArchetypeTerm ;
1114import com .nedap .archie .aom .terminology .ArchetypeTerminology ;
1215import com .nedap .archie .aom .utils .AOMUtils ;
1316import com .nedap .archie .base .Interval ;
14- import com .nedap .archie .paths .PathSegment ;
1517import com .nedap .archie .query .APathQuery ;
1618import com .nedap .archie .query .RMObjectWithPath ;
1719import com .nedap .archie .query .RMPathQuery ;
2022import com .nedap .archie .rm .datatypes .CodePhrase ;
2123import com .nedap .archie .rm .datavalues .DvCodedText ;
2224import com .nedap .archie .rm .datavalues .quantity .DvOrdinal ;
25+ import com .nedap .archie .rm .datavalues .quantity .DvProportion ;
2326import com .nedap .archie .rm .datavalues .quantity .DvQuantity ;
2427import com .nedap .archie .rm .support .identification .TerminologyId ;
2528
@@ -43,6 +46,33 @@ public static Map<String, Object> pathHasBeenUpdated(Object rmObject, Archetype
4346 if (parent instanceof DvQuantity ) {
4447 return fixDvQuantity (rmObject , archetype , pathOfParent );
4548 }
49+ if (parent instanceof DvProportion ) {
50+ return fixDvProportion (rmObject , archetype , pathOfParent );
51+ }
52+ return new HashMap <>();
53+ }
54+
55+ private static Map <String , Object > fixDvProportion (Object rmObject , Archetype archetype , String pathOfParent ) {
56+ try {
57+ OperationalTemplate template = (OperationalTemplate ) archetype ;
58+ Map <String , Object > result = new HashMap <>();
59+
60+ RMPathQuery rmPathQuery = new RMPathQuery (pathOfParent );
61+
62+ DvProportion proportion = rmPathQuery .find (ArchieRMInfoLookup .getInstance (), rmObject );
63+
64+ // TODO Figure out how to not hardcode these
65+ proportion .setDenominator (100.0 );
66+ result .put (pathOfParent + "/denominator" , 100.0 );
67+ proportion .setType (2L );
68+ result .put (pathOfParent + "/type" , 2L );
69+ proportion .setPrecision (1L );
70+ result .put (pathOfParent + "/precision" , 1L );
71+
72+ return result ;
73+ } catch (Exception e ) {
74+ logger .warn ("cannot fix DvProportion" , e );
75+ }
4676
4777 return new HashMap <>();
4878 }
0 commit comments