| [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
 | 
|---|