[613] | 1 | IBDFDE4 ;ALB/AAS - AICS Manual Data Entry, process multiple choice fields ; 29-APR-96IOIN
|
---|
| 2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;;APR 24, 1997
|
---|
| 3 | ;
|
---|
| 4 | % G ^IBDFDE
|
---|
| 5 | ;
|
---|
| 6 | MULT(RESULT,IBDF) ; -- Procedure
|
---|
| 7 | ; -- Manual Data entry routine for Multiple Choice Fields
|
---|
| 8 | ; Input : Result := call by reference, used to output results
|
---|
| 9 | ; IBDF("IEN") := pointer to hand print file (359.94)
|
---|
| 10 | ; IBDF("PI") := pointer to input package interface
|
---|
| 11 | ; IBDF("DFN") := pointer to patient
|
---|
| 12 | ; IBDF("CLINIC") := pointer to hospital location
|
---|
| 13 | ;
|
---|
| 14 | ; output: Result(n) $p1 := pointer to package interface
|
---|
| 15 | ;
|
---|
| 16 | N I,J,X,Y,ANS,DISPTXT,HDR,DIR,DIRUT,DUOUT,DTOUT,IBDX,QLFR,CHOICE,OVER
|
---|
| 17 | S X="IOINHI;IOINORM" D ENDR^%ZISS
|
---|
| 18 | S (IBQUIT,OVER)=0,(ANS,QLFR)=""
|
---|
| 19 | I $G(^TMP("IBD-LST",$J,IBDFMIEN,IBDF("PI"),IBDF("IEN"),0))="" D
|
---|
| 20 | .D OBJLST^IBDFRPC1(.CHOICE,.IBDF)
|
---|
| 21 | .M ^TMP("IBD-LST",$J,IBDFMIEN,IBDF("PI"),IBDF("IEN"))=CHOICE
|
---|
| 22 | .K CHOICE
|
---|
| 23 | .D COMPLST^IBDFDE5
|
---|
| 24 | I +$G(^TMP("IBD-LST",$J,IBDFMIEN,IBDF("PI"),IBDF("IEN"),0))<1 G MULTQ
|
---|
| 25 | S IBDASK=$P($P($G(^TMP("IBD-LST",$J,IBDFMIEN,IBDF("PI"),IBDF("IEN"),0)),"^",3),":")
|
---|
| 26 | I '$D(^TMP("IBD-ASK",$J,IBDFMIEN,IBDASK)) S ^TMP("IBD-ASK",$J,IBDFMIEN,$$UP^XLFSTR(IBDASK),IBDF("IBDF"))=""
|
---|
| 27 | S RULE=+$P($G(^TMP("IBD-LST",$J,IBDFMIEN,IBDF("PI"),IBDF("IEN"),0)),"^",4)
|
---|
| 28 | ;
|
---|
| 29 | OVER ; -- ask or re-ask for selection(s) from list
|
---|
| 30 | IF RULE=0 S DIR("?",1)="Any Number of "_$G(IOINHI)_IBDASK_$G(IOINORM)_" allowed (including zero)."
|
---|
| 31 | IF RULE=1 S DIR("?",1)="Exactly one "_$G(IOINHI)_IBDASK_$G(IOINORM)_" Required."
|
---|
| 32 | IF RULE=2 S DIR("?",1)="At most one "_$G(IOINHI)_IBDASK_$G(IOINORM)_" allowed."
|
---|
| 33 | IF RULE=3 S DIR("?")="At least 1 (1 or more) "_$G(IOINHI)_IBDASK_$G(IOINORM)_" Required."
|
---|
| 34 | ;
|
---|
| 35 | S DIR("?",2)=""
|
---|
| 36 | S DIR("?")="Select an item from the form, enter by name or number. Enter '??' to see the choices. When editing, press enter to accept, '@' to delete, or enter a new selection."
|
---|
| 37 | ;
|
---|
| 38 | S DIR("??")="^D LST^IBDFDE41"
|
---|
| 39 | ;
|
---|
| 40 | S DIR(0)="FO^1:40^I $D(X),X="" "" K X W !!,$G(IOINHI),""Spacebar Return Not allowed!"",$G(IOINORM)"
|
---|
| 41 | I IBDASK[":" S $P(DIR(0),"^")="FOA"
|
---|
| 42 | S DIR("A")="Select "_$G(IBDASK)
|
---|
| 43 | D ^DIR K DIR
|
---|
| 44 | I $G(IBDEFLT(IBDF("PI")))'="",Y=IBDEFLT(IBDF("PI")) S Y="" ; on re-edit, accepting last entry same as entering nothing.
|
---|
| 45 | S ANS=$$UP^XLFSTR(Y)
|
---|
| 46 | I ANS="",$D(DIRUT),$G(IBDEFLT(IBDF("PI")))'="",$G(SELAST) K IBDPI(IBDF("PI"),SELAST),IBDSEL(SELAST) W " Deleted!" ;user type "@" at prompt
|
---|
| 47 | I ANS="" D CHK^IBDFDE42 G MCOVER
|
---|
| 48 | I ANS["^",ANS'="^" D G MCOVER
|
---|
| 49 | .S GOTO=$$UP^XLFSTR($P(ANS,"^",2))
|
---|
| 50 | .I GOTO="?"!(GOTO="??") X "W !!,""Valid Blocks to Jump to: "" S IBDX=0 F S IBDX=$O(^TMP(""IBD-ASK"",$J,IBDFMIEN,IBDX)) Q:IBDX="""" W !,?6,IBDX" S OVER=1 Q
|
---|
| 51 | .S X=$O(^TMP("IBD-ASK",$J,IBDFMIEN,GOTO))
|
---|
| 52 | .I X'="",X[GOTO W $E(X,$L(GOTO)+1,$L(X)) S IBDF("GOTO")=+$O(^TMP("IBD-ASK",$J,IBDFMIEN,X,""))-1,IBDREDIT=1 Q
|
---|
| 53 | .S IBQUIT=1
|
---|
| 54 | I $D(DIRUT) S IBQUIT=1 G MULTQ
|
---|
| 55 | S SELECT=0
|
---|
| 56 | ;
|
---|
| 57 | ;
|
---|
| 58 | ; -- first check for exact code matches
|
---|
| 59 | I $G(NUMBER(ANS)) S SELECT=$G(NUMBER(ANS)) D SEL^IBDFDE41(SELECT),CHK^IBDFDE42 G MCOVER
|
---|
| 60 | ;
|
---|
| 61 | ; -- check for exact text matches
|
---|
| 62 | S ARRAY="^TMP(""IBD-LTEXT"",$J,IBDFMIEN,IBDF(""PI""),IBDF(""IEN""))"
|
---|
| 63 | I $G(@ARRAY@(ANS,1)),'$O(@ARRAY@(ANS,1)) S SELECT=@ARRAY@(ANS,1) D SEL^IBDFDE41(SELECT),CHK^IBDFDE42 G MCOVER
|
---|
| 64 | I $G(@ARRAY@(ANS,1)) D I $G(SELECT) D SEL^IBDFDE41(SELECT),CHK^IBDFDE42 G MCOVER
|
---|
| 65 | .; -- more than one description the same
|
---|
| 66 | .S SELECT=$$PARTLST^IBDFDE41(ARRAY,ANS,ANS)
|
---|
| 67 | ;
|
---|
| 68 | ; -- next check for paritial text answers
|
---|
| 69 | S NEXT=$O(@ARRAY@(ANS)) D I SELECT D SEL^IBDFDE41(SELECT),CHK^IBDFDE42 G MCOVER
|
---|
| 70 | .Q:NEXT=""!($E(NEXT,1,$L(ANS))'=ANS)
|
---|
| 71 | .I $O(@ARRAY@(NEXT,1)) S SELECT=$$PARTLST^IBDFDE41(ARRAY,NEXT,ANS) Q
|
---|
| 72 | .S NEXT1=$O(@ARRAY@(NEXT)) I $E(NEXT1,1,$L(ANS))=ANS S SELECT=$$PARTLST^IBDFDE41(ARRAY,NEXT,ANS) Q ;Not Unique answer
|
---|
| 73 | .W $E(NEXT,($L(ANS)+1),$L(NEXT))
|
---|
| 74 | .S SELECT=$G(@ARRAY@(NEXT,1))
|
---|
| 75 | ;
|
---|
| 76 | I ANS'="" W " ?? ",$C(7),"Not Found" G OVER
|
---|
| 77 | ;
|
---|
| 78 | MCOVER ;
|
---|
| 79 | G:OVER OVER
|
---|
| 80 | ;
|
---|
| 81 | MULTQ ;
|
---|
| 82 | K ^TMP("IBD-LST",$J,IBDFMIEN,IBDF("PI"),IBDF("IEN"))
|
---|
| 83 | K ^TMP("IBD-LTEXT",$J,IBDFMIEN,IBDF("PI"),IBDF("IEN"))
|
---|
| 84 | K ^TMP("IBD-LCODE",$J,IBDFMIEN,IBDF("PI"),IBDF("IEN"))
|
---|
| 85 | K ^TMP("IB",$J,"INTERFACES")
|
---|
| 86 | K IBDF("OTHER"),ASKOTHER
|
---|
| 87 | Q
|
---|
| 88 | ;
|
---|
| 89 | ASKYN(DIR) ; -- input dir
|
---|
| 90 | N ANS,X
|
---|
| 91 | D ^DIR
|
---|
| 92 | I $G(IBDREDIT),Y=$G(DIR("B")) S ANS=DIR("B") G ASKYNQ
|
---|
| 93 | K DIR
|
---|
| 94 | S ANS=$$UP^XLFSTR(Y)
|
---|
| 95 | I ANS="" G ASKYNQ
|
---|
| 96 | I ANS["^",ANS'="^" D G ASKYNQ
|
---|
| 97 | .S GOTO=$$UP^XLFSTR($P(ANS,"^",2))
|
---|
| 98 | .S X=$O(^TMP("IBD-ASK",$J,IBDFMIEN,GOTO))
|
---|
| 99 | .;I GOTO="?"!(GOTO="??") X "W !!,""Valid Blocks to Jump to: "" S IBDX=0 F S IBDX=$O(^TMP(""IBD-ASK"",$J,IBDFMIEN,IBDX)) Q:IBDX="""" W !,?6,IBDX" S OVER=1 Q
|
---|
| 100 | .I X'="",X[GOTO W $E(X,$L(GOTO)+1,$L(X)) S IBDF("GOTO")=+$O(^TMP("IBD-ASK",$J,IBDFMIEN,X,""))-1,IBDREDIT=1 Q
|
---|
| 101 | .S IBQUIT=1
|
---|
| 102 | I $D(DIRUT) S IBQUIT=1
|
---|
| 103 | ASKYNQ Q $G(ANS)
|
---|
| 104 | ;
|
---|
| 105 | Q
|
---|
| 106 | TEST ;
|
---|
| 107 | S IBDFMIEN=9999
|
---|
| 108 | S IBDF("APPT")=2970331.1014
|
---|
| 109 | S IBDF("CLINIC")=300
|
---|
| 110 | S IBDF("DFN")=7169761
|
---|
| 111 | S IBDF("FORM")=33154
|
---|
| 112 | S IBDF("FRMDEF")=747
|
---|
| 113 | S IBDF("IBDF")=9
|
---|
| 114 | S IBDF("IEN")=213
|
---|
| 115 | S IBDF("TYPE")="MC"
|
---|
| 116 | S IBDF("PI")=92
|
---|
| 117 | D MULT(.RESULT,.IBDF)
|
---|
| 118 | Q
|
---|