[613] | 1 | HDISVS02 ;BPFO/JRP - PROCESS RECEIVED XML DATA;12/20/2004
|
---|
| 2 | ;;1.0;HEALTH DATA & INFORMATICS;;Feb 22, 2005
|
---|
| 3 | ;
|
---|
| 4 | TERM(DATA,EINDX,AINDX,SYSPTR,FFPTR,ERRARR) ;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 | ; SYSPTR - Pointer to HDIS SYSTEM file (#7118.21)
|
---|
| 10 | ; FFPTR - Pointer to HDIS FILE/FIELD file (#7115.6)
|
---|
| 11 | ; Derived from 'FileNumber' & 'FieldNumber' element
|
---|
| 12 | ; ERRARR - Error array (closed root)
|
---|
| 13 | ;Output : None
|
---|
| 14 | ; @ERRARR@(x) = Error text (if applicable)
|
---|
| 15 | ; Notes : Existance/validity of input assumed (internal call)
|
---|
| 16 | N INDX,REP,TERM,IREF,VUID,TMP,OOPS,TERMPTR,FILEARR,X
|
---|
| 17 | S INDX=@EINDX@("Term")
|
---|
| 18 | S REP=0
|
---|
| 19 | F S REP=+$O(@DATA@(INDX,REP)) Q:'REP D
|
---|
| 20 | .S OOPS=0
|
---|
| 21 | .S TERMPTR=0
|
---|
| 22 | .;Get elements
|
---|
| 23 | .S TERM=$G(@DATA@(INDX,REP,@EINDX@("TermName"),1,"V"))
|
---|
| 24 | .S IREF=$G(@DATA@(INDX,REP,@EINDX@("FacilityInternalReference"),1,"V"))
|
---|
| 25 | .S VUID=$G(@DATA@(INDX,REP,@EINDX@("VUID"),1,"V"))
|
---|
| 26 | .;Validate elements
|
---|
| 27 | .;VUID allowed to be null (in most cases they are)
|
---|
| 28 | .F TMP="TERM","IREF" I $G(@TMP)="" D
|
---|
| 29 | ..S Y="TermName"
|
---|
| 30 | ..I TMP="IREF" S Y="FacilityInternalReference"
|
---|
| 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 | .;VUID passed - ignore
|
---|
| 40 | .I VUID'="" Q
|
---|
| 41 | .;Convert term to upper case
|
---|
| 42 | .S TERM=$$UP^XLFSTR(TERM)
|
---|
| 43 | .;Known term/concept
|
---|
| 44 | .K FILEARR
|
---|
| 45 | .S FILEARR(FFPTR)=""
|
---|
| 46 | .K TERMPTR
|
---|
| 47 | .I $$GETTERM^HDISVF04(TERM,.FILEARR,.TERMPTR) D
|
---|
| 48 | ..;Get VUID
|
---|
| 49 | ..S VUID=""
|
---|
| 50 | ..S X=$$GETVUID^HDISVF04(TERMPTR,.VUID)
|
---|
| 51 | ..;Make sure VUID has a value
|
---|
| 52 | ..I VUID="" D
|
---|
| 53 | ...S X="Entry number "_TERMPTR_" in HDIS TERM/CONCEPT VUID "
|
---|
| 54 | ...S X=X_"ASSOCIATION file (#7118.11) does not have a VUID."
|
---|
| 55 | ...S X=X_" Repetition "_REP_" of 'Term' ("_TERM_")."
|
---|
| 56 | ...D ADDERR^HDISVC00(X,ERRARR)
|
---|
| 57 | ...S OOPS=1
|
---|
| 58 | .;Problem found - quit
|
---|
| 59 | .I OOPS Q
|
---|
| 60 | .;Assign non-standard VUID
|
---|
| 61 | .I VUID="" D
|
---|
| 62 | ..;Calculate non-standard VUID
|
---|
| 63 | ..S VUID=$$CALCNSV^HDISVF03()
|
---|
| 64 | ..I VUID="" D Q
|
---|
| 65 | ...S TMP="Unable to calculate non-standard VUID for repetition number "
|
---|
| 66 | ...S TMP=TMP_REP_" of 'Term' ("_TERM_")"
|
---|
| 67 | ...D ADDERR^HDISVC00(TMP,ERRARR)
|
---|
| 68 | ...S OOPS=1
|
---|
| 69 | ..;Create entry in Term/Concept file
|
---|
| 70 | ..K FILEARR
|
---|
| 71 | ..S FILEARR(FFPTR)=""
|
---|
| 72 | ..K TERMPTR
|
---|
| 73 | ..I '$$ADDTERM^HDISVF04(TERM,VUID,.FILEARR,0,1,$$NOW^XLFDT(),0,.TERMPTR) D
|
---|
| 74 | ...S TMP="Unable to create entry in HDIS TERM/CONCEPT VUID "
|
---|
| 75 | ...S TMP=TMP_"ASSOCIATION file (#7118.11) for repetition number "
|
---|
| 76 | ...S TMP=TMP_REP_" of 'Term' ("_TERM_"). VUID was "_VUID_"."
|
---|
| 77 | ...D ADDERR^HDISVC00(TMP,ERRARR)
|
---|
| 78 | ...S OOPS=1
|
---|
| 79 | ..;Wait 1 second - resolve global cache problem
|
---|
| 80 | ..H 1
|
---|
| 81 | .;Problem found - quit
|
---|
| 82 | .I OOPS Q
|
---|
| 83 | .;Create entry in Facility Term/Concept file
|
---|
| 84 | .I '$$FINDFAC^HDISVF08(SYSPTR,FFPTR,TERMPTR,IREF,1) D
|
---|
| 85 | ..S TMP="Unable to create entry in HDIS FACILITY TERM/CONCEPT "
|
---|
| 86 | ..S TMP="ASSOCIATION file (#7118.22) for repetition number "_REP
|
---|
| 87 | ..S TMP=TMP_" of 'Term' ("_TERM_"). VUID was "_VUID_"."
|
---|
| 88 | ..D ADDERR^HDISVC00(TMP,ERRARR)
|
---|
| 89 | ..S OOPS=1
|
---|
| 90 | .;Problem found - quit
|
---|
| 91 | .I OOPS Q
|
---|
| 92 | Q
|
---|