| 1 | IBDFRPC4 ;ALB/AAS - AICS Pass data to PCE, Broker Call ; 24-FEB-96
 | 
|---|
| 2 |  ;;3.0;AUTOMATED INFO COLLECTION SYS;**38,36,37**;APR 24, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; -- used by AICS Data Entry System, routine IBDFDE1
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | SEND(RESULT,IBDF) ; -- procedure
 | 
|---|
| 7 |  ; -- broker call to set data into pxca array and send to pce
 | 
|---|
| 8 |  ;    rpc  := IBD RECEIVE DATA
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ; -- input:      Result := passed by reference, see output
 | 
|---|
| 11 |  ;            ibdf(text) := contains data about visit, plus checkout defined as follows:
 | 
|---|
| 12 |  ;          ibdf("appt") := appointment data/time
 | 
|---|
| 13 |  ;        ibdf("clinic") := clinic, pointer to file 44
 | 
|---|
| 14 |  ;           ibdf("dfn") := patient, pointer to file 2
 | 
|---|
| 15 |  ;          ibdf("form") := encounter form ID, pointer to file 357.96
 | 
|---|
| 16 |  ;        ibdf("frmdef") := form definition, pointer to 357.95
 | 
|---|
| 17 |  ;       ibdf("foregnd") := pass data in foreground, show results
 | 
|---|
| 18 |  ;       ibdf("backgnd") := pass data in background, don't show results
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  ;            ibdf("co") := check out date/time
 | 
|---|
| 21 |  ;            ibdf("sc") := is visit for service connected condition
 | 
|---|
| 22 |  ;            ibdf("ao") := is visit related to Agent orange
 | 
|---|
| 23 |  ;            ibdf("ir") := is visit related to ionizing radiation
 | 
|---|
| 24 |  ;            ibdf("ec") := is visit related to environmental contam.
 | 
|---|
| 25 |  ;            ibdf("mst"):= is visit related to Military Sexual Trauma
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 |  ;               ibdf(n) := where n>0 are user selections as follows:
 | 
|---|
| 28 |  ;                   $p1 := package interface, pointer to file 357.6
 | 
|---|
| 29 |  ;                   $p2 := value to send
 | 
|---|
| 30 |  ;                   $p3 := display text
 | 
|---|
| 31 |  ;                   $p4 := header to send
 | 
|---|
| 32 |  ;                   $p5 := clin lexicon pointer
 | 
|---|
| 33 |  ;                   $p6 := qualifier
 | 
|---|
| 34 |  ;                   $p7 := ien of inteface
 | 
|---|
| 35 |  ;                   $p8 := vitals type (.01 field in 359.1)
 | 
|---|
| 36 |  ;                   $p9 := quantity
 | 
|---|
| 37 |  ;                      
 | 
|---|
| 38 |  N I,J,X,Y,D,D0,D1,D2,DA,DIC,DIE,DR,TNODE,FID,FORMID,NODE,VALUE,PI,TEXT,SUBHDR,HEADER,TYPE,QLFR,ITEM,PROVIDER,PXKDONE,STATUS,VSIT,QUANTITY,SDFN
 | 
|---|
| 39 |  S RESULT="-1^No data passed"
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  K PXCA
 | 
|---|
| 42 |  S (PXCA,PXCASTAT)=""
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 |  ; -- check form,frmdef and appt/clinic.  Need one or the other
 | 
|---|
| 45 |  S TNODE=$G(^IBD(357.96,+$G(IBDF("FORM")),0))
 | 
|---|
| 46 |  S:'$G(IBDF("DFN")) IBDF("DFN")=$P(TNODE,"^",2)
 | 
|---|
| 47 |  S:'$G(IBDF("APPT")) IBDF("APPT")=$P(TNODE,"^",3)
 | 
|---|
| 48 |  S:'$G(IBDF("FRMDEF")) IBDF("FRMDEF")=$P(TNODE,"^",4)
 | 
|---|
| 49 |  S:'$G(IBDF("CLINIC")) IBDF("CLINIC")=$P(TNODE,"^",10)
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  I '$G(IBDF("DFN"))!('$G(IBDF("APPT")))!('$G(IBDF("CLINIC"))) D  G END
 | 
|---|
| 52 |  . I $G(IBDF("FORM")) S STATUS=$$FSCND^IBDF18C(+IBDF("FORM"),12)
 | 
|---|
| 53 |  . S RESULT="-1^Critical information for processing missing"
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  ; -- log manual data entry attempt in form tracking
 | 
|---|
| 56 |  S STATUS=$$FSCND^IBDF18C(IBDF("FORM"),5)
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 |  ; -- build the encounter node and source node from form tracking
 | 
|---|
| 59 |  S PXCA("ENCOUNTER")=$G(IBDF("APPT"))_"^"_$G(IBDF("DFN"))_"^"_$G(IBDF("CLINIC"))_"^^^"_$G(IBDF("SC"))_"^"_$G(IBDF("AO"))_"^"_$G(IBDF("IR"))_"^"_$G(IBDF("EC"))_"^"_$G(IBDF("MST"))_"^^^^"_$G(IBDF("CO"))
 | 
|---|
| 60 |  S PXCA("SOURCE")="1^"_DUZ_"^"_$G(IBDF("FRMDEF"))_"^^"_$G(IBDF("FORM"))
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  ; -- process data in ibdf(n) nodes
 | 
|---|
| 63 |  S FORMID=IBDF("FORM")
 | 
|---|
| 64 |  S FID=0 F  S FID=$O(IBDF(FID)) Q:'FID  S NODE=$G(IBDF(FID)) D
 | 
|---|
| 65 |  .N VALUE,PI,TEXT,SUBHDR,HEADER,TYPE,QLFR,ITEM,DELEX,QUANTITY
 | 
|---|
| 66 |  .I NODE="" D LOGERR^IBDF18E2(3570002,.FORMID,FID) Q
 | 
|---|
| 67 |  .S PI=$P(NODE,"^")
 | 
|---|
| 68 |  .S VALUE=$$INPUT(PI,$P(NODE,"^",2))
 | 
|---|
| 69 |  .S TEXT=$P(NODE,"^",3)
 | 
|---|
| 70 |  .S (SUBHDR,HEADER)=$E($P(NODE,"^",4),1,80)
 | 
|---|
| 71 |  .I $L(SUBHDR),$L(SUBHDR)<2 S (SUBHDR,HEADER)=""
 | 
|---|
| 72 |  .;I $L(SUBHDR),($L(SUBHDR)+$L(TEXT)<80) S TEXT=SUBHDR_" "_TEXT
 | 
|---|
| 73 |  .S QLFR=$P(NODE,"^",6) S:QLFR'="" QLFR=$O(^IBD(357.98,"B",QLFR,0))
 | 
|---|
| 74 |  .S TYPE=+$$TYPE($P(NODE,"^",8))
 | 
|---|
| 75 |  .S ITEM=FID
 | 
|---|
| 76 |  .S DELEX=$P(NODE,"^",5)
 | 
|---|
| 77 |  .S QUANTITY=$P(NODE,"^",9)
 | 
|---|
| 78 |  .S SLCTN=$P(NODE,"^",12)
 | 
|---|
| 79 |  .D SETTEMP^IBDF18E1
 | 
|---|
| 80 |  .Q
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 |  ; --added to copy visit modifiers
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 |  D:$D(TEMP("ENCOUNTER")) VSTPXCA^IBDF18E0
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 |  D SETPXCA^IBDF18E0,PRO^IBDF18E0
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 |  ;  send misc. data that does not go to PCE
 | 
|---|
| 89 |  D ^IBDF18E4
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 |  S IBDF("PASSFLAG")=+$P($G(^IBD(357.09,1,0)),"^",7)
 | 
|---|
| 92 |  S IBD("AICS")=1 ;flag for IBDF PCE EVENT protocal
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 |  ;I $G(IBDF("PASSFLAG"))<1 D BACKGND^PXCA(.PXCA,.PXCASTAT)
 | 
|---|
| 95 |  ;I $G(IBDF("PASSFLAG"))=1 D VALIDATE^PXCA(.PXCA) I '$D(PXCA("ERROR")) D BACKGND^PXCA(.PXCA,.PXCASTAT)
 | 
|---|
| 96 |  I $G(IBDF("PASSFLAG"))<2 D QUE^IBDF18E3
 | 
|---|
| 97 |  I $G(IBDF("PASSFLAG"))>1 D FOREGND^PXCA(.PXCA,.PXCASTAT)
 | 
|---|
| 98 |  K IBD("AICS")
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  ; -- kill erroneous inpatient warnings
 | 
|---|
| 101 |  I $D(PXCA("WARNING","ENCOUNTER"))>0 D INPT^IBDF18E0($G(IBDF("DFN")),$G(IBDF("APPT")))
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  ; -- set form tracking processing status, if okay=6, if error=7
 | 
|---|
| 104 |  I $G(IBDF("FORM")) S STATUS=$$FSCND^IBDF18C(IBDF("FORM"),$S(PXCASTAT=0:7,PXCASTAT=1:6,PXCASTAT=-1:7,PXCASTAT=-2:6,1:12),$S((PXCASTAT=0!(PXCASTAT=-1)):"PCE RETURNED AN ERROR",1:""))
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 |  S RESULT(0)=PXCASTAT
 | 
|---|
| 107 |  I (PXCASTAT=1!(PXCASTAT=-2)),IBDF("PASSFLAG")<3 K PXCA,PXCASTAT
 | 
|---|
| 108 | END Q
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 | INPUT(PI,X) ; -- convert external value to internal value
 | 
|---|
| 111 |  I $G(PI)=""!($G(X)="")
 | 
|---|
| 112 |  I $G(^IBE(357.6,+$G(PI),9))'="" X ^(9)
 | 
|---|
| 113 | VALQ Q $G(X)
 | 
|---|
| 114 |  ;
 | 
|---|
| 115 | TYPE(X) ; -- Change external to internal for hand print fields
 | 
|---|
| 116 |  N Y S Y=""
 | 
|---|
| 117 |  I X'="" S Y=$O(^IBE(359.1,"B",X,0))
 | 
|---|
| 118 |  Q Y
 | 
|---|