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