| [613] | 1 | HDISVC02 ;BPFO/JRP - PROCESS RECEIVED XML DATA;12/20/2004
 | 
|---|
 | 2 |  ;;1.0;HEALTH DATA & INFORMATICS;;Feb 22, 2005
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 | TERM(DATA,EINDX,AINDX,ERRARR,FILE,FIELD) ;Process 'Term' portion of XML document
 | 
|---|
 | 5 |  ; Input : DATA - Array reference from which the 'File' element
 | 
|---|
 | 6 |  ;                begins (closed root)
 | 
|---|
 | 7 |  ;         EINDX - Element index array (closed root)
 | 
|---|
 | 8 |  ;         AINDX - Attribute index array (closed root)
 | 
|---|
 | 9 |  ;         ERRARR - Error array (closed root)
 | 
|---|
 | 10 |  ;         FILE - Value of 'FileNumber' element
 | 
|---|
 | 11 |  ;         FIELD - Value of 'FieldNumber' element
 | 
|---|
 | 12 |  ;Output : None
 | 
|---|
 | 13 |  ;         @ERRARR@(x) = Error text (if applicable)
 | 
|---|
 | 14 |  ; Notes : Existance/validity of input assumed (internal call)
 | 
|---|
 | 15 |  N INDX,REP,TERM,IREF,VUID,TMP,OOPS,DATE,NTNL
 | 
|---|
 | 16 |  S INDX=@EINDX@("Term")
 | 
|---|
 | 17 |  S REP=0
 | 
|---|
 | 18 |  F  S REP=+$O(@DATA@(INDX,REP)) Q:'REP  D
 | 
|---|
 | 19 |  .S OOPS=0
 | 
|---|
 | 20 |  .;Get elements
 | 
|---|
 | 21 |  .S TERM=$G(@DATA@(INDX,REP,@EINDX@("TermName"),1,"V"))
 | 
|---|
 | 22 |  .S IREF=$G(@DATA@(INDX,REP,@EINDX@("FacilityInternalReference"),1,"V"))
 | 
|---|
 | 23 |  .S VUID=$G(@DATA@(INDX,REP,@EINDX@("VUID"),1,"V"))
 | 
|---|
 | 24 |  .S NTNL=$G(@DATA@(INDX,REP,@EINDX@("NationalTerm"),1,"V"))
 | 
|---|
 | 25 |  .;Validate elements
 | 
|---|
 | 26 |  .F TMP="TERM","VUID","IREF","NTNL" I $G(@TMP)="" D
 | 
|---|
 | 27 |  ..S Y="TermName"
 | 
|---|
 | 28 |  ..I TMP="VUID" S Y="VUID"
 | 
|---|
 | 29 |  ..I TMP="IREF" S Y="FacilityInternalReference"
 | 
|---|
 | 30 |  ..I TMP="NTNL" S Y="NationalTerm"
 | 
|---|
 | 31 |  ..S X="XML element '"_Y_"' for repetition number "_REP_" of 'Term' "
 | 
|---|
 | 32 |  ..I TMP="TERM" S X="Repetition number "_REP_" of XML element 'Term' "
 | 
|---|
 | 33 |  ..I TMP'="TERM" S X=X_"("_TERM_") "
 | 
|---|
 | 34 |  ..S X=X_"did not have a value"
 | 
|---|
 | 35 |  ..D ADDERR^HDISVC00(X,ERRARR)
 | 
|---|
 | 36 |  ..S OOPS=1
 | 
|---|
 | 37 |  .;Problem found - quit
 | 
|---|
 | 38 |  .I OOPS Q
 | 
|---|
 | 39 |  .;Does entry exist
 | 
|---|
 | 40 |  .I '$$EXISTS(FILE,FIELD,IREF) D
 | 
|---|
 | 41 |  ..S TMP="Value for 'FacilityInternalReference' ("_IREF_") not valid "
 | 
|---|
 | 42 |  ..S TMP=TMP_"for repetition number "_REP_" of 'Term' ("_TERM_")"
 | 
|---|
 | 43 |  ..D ADDERR^HDISVC00(TMP,ERRARR)
 | 
|---|
 | 44 |  ..S OOPS=1
 | 
|---|
 | 45 |  .;Does received term match stored term
 | 
|---|
 | 46 |  .I 'OOPS I '$$VALMATCH(FILE,FIELD,IREF,TERM) D
 | 
|---|
 | 47 |  ..S TMP="Local value does not match received value for repetition "
 | 
|---|
 | 48 |  ..S TMP=TMP_"number "_REP_" of 'Term' ("_TERM_")"
 | 
|---|
 | 49 |  ..D ADDERR^HDISVC00(TMP,ERRARR)
 | 
|---|
 | 50 |  ..S OOPS=1
 | 
|---|
 | 51 |  .;Is 'NationalTerm; valid value
 | 
|---|
 | 52 |  .I NTNL'=0 I NTNL'=1 D
 | 
|---|
 | 53 |  ..S TMP="Value for 'NationalTerm' ("_NTNL_") not valid for "
 | 
|---|
 | 54 |  ..S TMP=TMP_"repetition number "_REP_" of 'Term' ("_TERM_")"
 | 
|---|
 | 55 |  ..D ADDERR^HDISVC00(TMP,ERRARR)
 | 
|---|
 | 56 |  ..S OOPS=1
 | 
|---|
 | 57 |  .;Problem found - don't continue
 | 
|---|
 | 58 |  .I OOPS Q
 | 
|---|
 | 59 |  .;Store/update VUID (inactivates term when appropriate)
 | 
|---|
 | 60 |  .D STOREIT(FILE,FIELD,IREF,VUID,NTNL,ERRARR)
 | 
|---|
 | 61 |  Q
 | 
|---|
 | 62 |  ;
 | 
|---|
 | 63 | EXISTS(FILE,FIELD,IREF) ;Does entry exist
 | 
|---|
 | 64 |  ; Input : FILE - File number
 | 
|---|
 | 65 |  ;         FIELD - Field number
 | 
|---|
 | 66 |  ;         IREF - Internal reference
 | 
|---|
 | 67 |  ;Output : 1 if entry exists
 | 
|---|
 | 68 |  ;         0 if entry doesn't exist
 | 
|---|
 | 69 |  ; Notes : Existance/validity of input assumed (internal call)
 | 
|---|
 | 70 |  N EXIST,CODES
 | 
|---|
 | 71 |  S EXIST=0
 | 
|---|
 | 72 |  S CODES=$$SETCODE(FILE,FIELD)
 | 
|---|
 | 73 |  ;Set of codes
 | 
|---|
 | 74 |  I CODES I $$EXTERNAL^DILFD(FILE,FIELD,"",IREF) S EXIST=1
 | 
|---|
 | 75 |  ;Entry in file
 | 
|---|
 | 76 |  I 'CODES D
 | 
|---|
 | 77 |  .S IREF="`"_(+IREF)
 | 
|---|
 | 78 |  .I $$FIND1^DIC(FILE,"","",IREF) S EXIST=1
 | 
|---|
 | 79 |  D CLEAN^DILF
 | 
|---|
 | 80 |  Q EXIST
 | 
|---|
 | 81 |  ;
 | 
|---|
 | 82 | VALMATCH(FILE,FIELD,IREF,VALUE) ;Check input value against stored value
 | 
|---|
 | 83 |  ; Input : FILE - File number
 | 
|---|
 | 84 |  ;         FIELD - Field number
 | 
|---|
 | 85 |  ;         IREF - Internal reference
 | 
|---|
 | 86 |  ;         VALUE - Value to verify
 | 
|---|
 | 87 |  ;Output : 1 if stored value equals input VALUE
 | 
|---|
 | 88 |  ;         0 if stored value does not equal input VALUE
 | 
|---|
 | 89 |  ; Notes : Existance/validity of input assumed (internal call)
 | 
|---|
 | 90 |  N MATCH,CODES,LOCVAL
 | 
|---|
 | 91 |  S MATCH=0
 | 
|---|
 | 92 |  S CODES=$$SETCODE(FILE,FIELD)
 | 
|---|
 | 93 |  ;Set of codes
 | 
|---|
 | 94 |  I CODES S LOCVAL=$$EXTERNAL^DILFD(FILE,FIELD,"",IREF)
 | 
|---|
 | 95 |  ;Entry in file
 | 
|---|
 | 96 |  I 'CODES S LOCVAL=$$GET1^DIQ(FILE,IREF,FIELD)
 | 
|---|
 | 97 |  ;Case insensitive compare
 | 
|---|
 | 98 |  I $$UP^XLFSTR(LOCVAL)=$$UP^XLFSTR(VALUE) S MATCH=1
 | 
|---|
 | 99 |  D CLEAN^DILF
 | 
|---|
 | 100 |  Q MATCH
 | 
|---|
 | 101 |  ;
 | 
|---|
 | 102 | SETCODE(FILE,FIELD) ;Is field a set of codes
 | 
|---|
 | 103 |  ; Input : FILE - File number
 | 
|---|
 | 104 |  ;         FIELD - Field number
 | 
|---|
 | 105 |  ;Output : 1 if field is a set of codes
 | 
|---|
 | 106 |  ;         0 if field is not a set of codes
 | 
|---|
 | 107 |  ; Notes : Existance/validity of input assumed (internal call)
 | 
|---|
 | 108 |  N CODES
 | 
|---|
 | 109 |  S CODES=0
 | 
|---|
 | 110 |  I $$GET1^DID(FILE,FIELD,"","TYPE")="SET" S CODES=1
 | 
|---|
 | 111 |  Q CODES
 | 
|---|
 | 112 |  ;
 | 
|---|
 | 113 | STOREIT(FILE,FIELD,IREF,VUID,NTNL,ERRARR) ;Store VUID
 | 
|---|
 | 114 |  ; Input : FILE - File number
 | 
|---|
 | 115 |  ;         FIELD - Field number
 | 
|---|
 | 116 |  ;         IREF - Internal reference
 | 
|---|
 | 117 |  ;         VUID - VUID
 | 
|---|
 | 118 |  ;         NTNL - National term
 | 
|---|
 | 119 |  ;                0 = No (default)     1 = Yes
 | 
|---|
 | 120 |  ;         ERRARR - Error array (closed root)
 | 
|---|
 | 121 |  ;Output : None
 | 
|---|
 | 122 |  ;         @ERRARR@(x) = Error text (if applicable)
 | 
|---|
 | 123 |  ; Notes : Existance/validity of input assumed (internal call)
 | 
|---|
 | 124 |  ;       : Call will automatically inactivate terms when appropriate
 | 
|---|
 | 125 |  ;
 | 
|---|
 | 126 |  N TMP,MASTER
 | 
|---|
 | 127 |  S NTNL=+$G(NTNL)
 | 
|---|
 | 128 |  ;Store VUID (also sets master entry flag, if appropriate)
 | 
|---|
 | 129 |  I '$$SETVUID^XTID(FILE,FIELD,IREF,VUID) D  Q
 | 
|---|
 | 130 |  .S TMP="Unable to store "_VUID_" as the VUID for internal reference '"
 | 
|---|
 | 131 |  .S TMP=TMP_IREF_"' of field number "_FIELD_" in file number "_FILE
 | 
|---|
 | 132 |  .D ADDERR^HDISVC00(TMP,ERRARR)
 | 
|---|
 | 133 |  ;Get master entry flag
 | 
|---|
 | 134 |  S MASTER=$$GETMASTR^XTID(FILE,FIELD,IREF)
 | 
|---|
 | 135 |  ;Don't inactivate national terms that are the master entry
 | 
|---|
 | 136 |  I NTNL I MASTER Q
 | 
|---|
 | 137 |  ;Inactivate
 | 
|---|
 | 138 |  I '$$SETSTAT^XTID(FILE,FIELD,IREF,0,$$NOW^XLFDT()) D  Q
 | 
|---|
 | 139 |  .S TMP="Unable to inactivate internal reference "_IREF_" of field "
 | 
|---|
 | 140 |  .S TMP=TMP_"number "_FIELD_" in file number "_FILE_".  VUID for the"
 | 
|---|
 | 141 |  .S TMP=TMP_" "_$S(NTNL:"",1:"non-")_"standard term was "_VUID_"."
 | 
|---|
 | 142 |  .D ADDERR^HDISVC00(TMP,ERRARR)
 | 
|---|
 | 143 |  Q
 | 
|---|