[613] | 1 | RORXU008 ;HCIOFO/SG - REPORT PARAMETERS (CONT.) ; 6/21/06 2:08pm
|
---|
| 2 | ;;1.5;CLINICAL CASE REGISTRIES;**1**;Feb 17, 2006;Build 24
|
---|
| 3 | ;
|
---|
| 4 | Q
|
---|
| 5 | ;
|
---|
| 6 | ;***** PROCESSES THE LIST OF ICD-9 CODES
|
---|
| 7 | ;
|
---|
| 8 | ; .RORTSK Task number and task parameters
|
---|
| 9 | ;
|
---|
| 10 | ; PARTAG Reference (IEN) to the parent tag
|
---|
| 11 | ;
|
---|
| 12 | ; .ROR8LST Reference to a local variable, which contains a
|
---|
| 13 | ; closed root of an array. IEN's of ICD-9 codes
|
---|
| 14 | ; will be returned into this array.
|
---|
| 15 | ;
|
---|
| 16 | ; @ROR8LST@(IEN,Group#) = ""
|
---|
| 17 | ;
|
---|
| 18 | ; If this parameter is undefined or empty, then a
|
---|
| 19 | ; temporary buffer is allocated by the $$ALLOC^RORTMP
|
---|
| 20 | ; function and its root is returned via this parameter.
|
---|
| 21 | ;
|
---|
| 22 | ; If all ICD-9 codes are requested (the "ALL" attribute
|
---|
| 23 | ; of the "ICD9LST" tag), then "*" is returned.
|
---|
| 24 | ;
|
---|
| 25 | ; [.GRPLST] Reference to a local variable that will contain
|
---|
| 26 | ; the list of ICD-9 groups.
|
---|
| 27 | ;
|
---|
| 28 | ; GRPLST(
|
---|
| 29 | ; "C",Group#) = GroupName
|
---|
| 30 | ; "N",GroupName) = Group#
|
---|
| 31 | ;
|
---|
| 32 | ; Return Values:
|
---|
| 33 | ; <0 Error code
|
---|
| 34 | ; >0 IEN of the ICD9LST element
|
---|
| 35 | ;
|
---|
| 36 | ICD9LST(RORTSK,PARTAG,ROR8LST,GRPLST) ;
|
---|
| 37 | N ATTR,ICD9,ICD9ALL,ICD9OPTS,IEN,LTAG,RC,TMP
|
---|
| 38 | S ICD9ALL=+$$PARAM^RORTSK01("ICD9LST","ALL")
|
---|
| 39 | S (LTAG,RC)=0
|
---|
| 40 | ;
|
---|
| 41 | ;=== Validate parameters
|
---|
| 42 | I 'ICD9ALL D K @ROR8LST
|
---|
| 43 | . S:$G(ROR8LST)="" ROR8LST=$$ALLOC^RORTMP()
|
---|
| 44 | E S ROR8LST="*"
|
---|
| 45 | ;
|
---|
| 46 | ;=== Process the drug options (if present)
|
---|
| 47 | M ICD9OPTS=RORTSK("PARAMS","ICD9LST","A")
|
---|
| 48 | I $D(ICD9OPTS)>1 D Q:LTAG'>0 LTAG
|
---|
| 49 | . S ATTR=$S(ICD9ALL:"ALL",1:"")
|
---|
| 50 | . S LTAG=$$ADDVAL^RORTSK11(RORTSK,"ICD9LST",ATTR,PARTAG)
|
---|
| 51 | . Q:LTAG'>0
|
---|
| 52 | . ;--- Output option attributes
|
---|
| 53 | . S ATTR="",RC=0
|
---|
| 54 | . F S ATTR=$O(ICD9OPTS(ATTR)) Q:ATTR="" D Q:RC<0
|
---|
| 55 | . . S RC=$$ADDATTR^RORTSK11(RORTSK,LTAG,ATTR,"1")
|
---|
| 56 | . I RC<0 S LTAG=RC Q
|
---|
| 57 | . S ATTR=$$OPTXT^RORXU002(.ICD9OPTS)
|
---|
| 58 | . D:ATTR'="" ADDATTR^RORTSK11(RORTSK,LTAG,"DESCR",ATTR)
|
---|
| 59 | ;
|
---|
| 60 | ;=== Process the list of ICD-9 codes (if present)
|
---|
| 61 | I 'ICD9ALL D:$D(RORTSK("PARAMS","ICD9LST","G"))>1
|
---|
| 62 | . N GRPNAME,GRPTAG,IG,NODE
|
---|
| 63 | . I LTAG'>0 D Q:LTAG'>0
|
---|
| 64 | . . S LTAG=$$ADDVAL^RORTSK11(RORTSK,"ICD9LST",,PARTAG)
|
---|
| 65 | . ;---
|
---|
| 66 | . S NODE=$NA(RORTSK("PARAMS","ICD9LST","G"))
|
---|
| 67 | . S GRPNAME="",RC=0
|
---|
| 68 | . F S GRPNAME=$O(@NODE@(GRPNAME)) Q:GRPNAME="" D Q:RC<0
|
---|
| 69 | . . S IG=$O(GRPLST("C",""),-1)+1
|
---|
| 70 | . . S GRPLST("C",IG)=GRPNAME,GRPLST("N",GRPNAME)=IG
|
---|
| 71 | . . S GRPTAG=$$ADDVAL^RORTSK11(RORTSK,"GROUP",,LTAG)
|
---|
| 72 | . . I GRPTAG'>0 S RC=GRPTAG Q
|
---|
| 73 | . . D ADDATTR^RORTSK11(RORTSK,GRPTAG,"NAME",GRPNAME)
|
---|
| 74 | . . S IEN=0
|
---|
| 75 | . . F S IEN=$O(@NODE@(GRPNAME,"C",IEN)) Q:IEN'>0 D
|
---|
| 76 | . . . S ICD9=$P(@NODE@(GRPNAME,"C",IEN),U) Q:ICD9=""
|
---|
| 77 | . . . D ADDVAL^RORTSK11(RORTSK,"ICD9",ICD9,GRPTAG,,IEN)
|
---|
| 78 | . . . S @ROR8LST@(IEN,IG)=""
|
---|
| 79 | ;
|
---|
| 80 | ;===
|
---|
| 81 | Q $S(RC<0:RC,1:LTAG)
|
---|
| 82 | ;
|
---|
| 83 | ;***** FUNCTION FOR THE PHARMACY SEARCH API
|
---|
| 84 | ;
|
---|
| 85 | ; .GRPLST Reference to a local variable that contains a list
|
---|
| 86 | ; of group codes. It is used to determine if codes
|
---|
| 87 | ; from all groups were found.
|
---|
| 88 | ;
|
---|
| 89 | ; ICD9IEN IEN of the ICD-9 code
|
---|
| 90 | ;
|
---|
| 91 | ; ROR8LST Closed root of the ICD-9 list generated by the
|
---|
| 92 | ; $$ICD9LST^RORXU008 function or "*" for all drugs.
|
---|
| 93 | ;
|
---|
| 94 | ; Return Values:
|
---|
| 95 | ; 0 Ok
|
---|
| 96 | ; 1 Skip the record
|
---|
| 97 | ;
|
---|
| 98 | ICDGRCHK(GRPLST,ICD9IEN,ROR8LST) ;
|
---|
| 99 | Q:ROR8LST="*" 0
|
---|
| 100 | Q:$D(@ROR8LST@(ICD9IEN))<10 1
|
---|
| 101 | N GRP S GRP=""
|
---|
| 102 | F S GRP=$O(@ROR8LST@(ICD9IEN,GRP)) Q:GRP="" K GRPLST(GRP)
|
---|
| 103 | Q 0
|
---|