[613] | 1 | YTQAPI15 ;ASF/ALB MHA XML ; 4/3/07 11:29am
|
---|
| 2 | ;;5.01;MENTAL HEALTH;**85**;Dec 30, 1994;Build 49
|
---|
| 3 | Q
|
---|
| 4 | MAIN ;
|
---|
| 5 | N N,G,YSCN,ICN,Y,YSA,YSAD,YSB,YSC,YSCN,YSCODE,YSD,YSDFN,YSDG,YSE,YSEA,YSER,YSF,YSFIELD,YSFILE,YSIENS,YSJ,YSLOC,YSOD,YSQNUMB,YSQTEXT,YSR,DFN,DIRUT
|
---|
| 6 | D SELAD
|
---|
| 7 | DEV S %ZIS="QM" D ^%ZIS Q:IO=""
|
---|
| 8 | I '$D(IO("Q")) W !,"Please Queue this job",! G DEV
|
---|
| 9 | D D ^%ZTLOAD D HOME^%ZIS K IO("Q") Q ;-->out
|
---|
| 10 | .S ZTRTN="ENQ^YTQAPI15",ZTDESC="MHA3 XML Export",ZTSAVE("YS*")=""
|
---|
| 11 | .S ZTIO=ION_";"_IOST
|
---|
| 12 | .I $D(IO("DOC"))#2,IO("DOC")]"" S ZTIO=ZTIO_";"_IO("DOC") Q
|
---|
| 13 | .I IOM S ZTIO=ZTIO_";"_IOM
|
---|
| 14 | .I IOSL S ZTIO=ZTIO_";"_IOSL
|
---|
| 15 | ;
|
---|
| 16 | ENQ ;taskman entry
|
---|
| 17 | K ^TMP("YSXML",$J),^TMP("YSAD",$J)
|
---|
| 18 | S N=0
|
---|
| 19 | D SI:YSF="I",SP:YSF="P",SO:YSF="O",SL:YSF="L",SD:YSF="D"
|
---|
| 20 | I '$D(^TMP("YSAD",$J)) S ^TMP("YSXML",$J,1)="[ERROR]^no data" Q ;-->out
|
---|
| 21 | S N=N+1,^TMP("YSXML",$J,N)="<?xml version='1.0' encoding='UTF-8'?>"
|
---|
| 22 | S N=N+1,^TMP("YSXML",$J,N)="<Export>"
|
---|
| 23 | D ADMIN
|
---|
| 24 | S N=N+1,^TMP("YSXML",$J,N)="</Export>"
|
---|
| 25 | U IO S N=0 F S N=$O(^TMP("YSXML",$J,N)) Q:N'>0 W ^(N),!
|
---|
| 26 | D ^%ZISC
|
---|
| 27 | Q ;-->out
|
---|
| 28 | SELAD ;administation filter
|
---|
| 29 | W @IOF,!!,"MHA XML Export"
|
---|
| 30 | K DIR S DIR(0)="S^D:Date Only;I:Instrument;L:Location;P:Patient;O:Ordered By"
|
---|
| 31 | S DIR("A")="Filter By" D ^DIR
|
---|
| 32 | Q:$D(DIRUT)
|
---|
| 33 | S YSF=Y
|
---|
| 34 | K DIR S DIR(0)="DA^2961001:NOW:TX",DIR("A")="Begin date/time: ",DIR("B")="T-1M" D ^DIR
|
---|
| 35 | Q:$D(DIRUT)
|
---|
| 36 | S YSB=Y
|
---|
| 37 | K DIR S DIR(0)="DA^2961001:NOW:TX",DIR("A")="End date/time: ",DIR("B")="NOW" D ^DIR
|
---|
| 38 | Q:$D(DIRUT)
|
---|
| 39 | S YSE=Y
|
---|
| 40 | K DIR S DIR(0)="Y",DIR("A")="Export Answers",DIR("B")="No" D ^DIR
|
---|
| 41 | Q:$D(DIRUT)
|
---|
| 42 | S YSEA=Y
|
---|
| 43 | K DIR S DIR(0)="Y",DIR("A")="Export Results",DIR("B")="No" D ^DIR
|
---|
| 44 | Q:$D(DIRUT)
|
---|
| 45 | S YSER=Y
|
---|
| 46 | K DIC
|
---|
| 47 | I YSF="I" S DIC(0)="AEQ",DIC="^YTT(601.71," D ^DIC Q:Y'>0 S YSCODE=$P(Y,U,2)
|
---|
| 48 | I YSF="P" D ^YSLRP Q:DFN'>0 ;-->out
|
---|
| 49 | I YSF="O" S DIC("A")="Ordered By: ",DIC(0)="AEQ",DIC="^VA(200," D ^DIC Q:Y'>0 S YSOD=+Y
|
---|
| 50 | I YSF="L" S DIC(0)="AEQ",DIC="^DIC(42," D ^DIC Q:Y'>0 S YSLOC=+Y
|
---|
| 51 | Q
|
---|
| 52 | SI ;selct by instrument
|
---|
| 53 | S YSCN=$O(^YTT(601.71,"B",YSCODE,-1))
|
---|
| 54 | S YSD=YSB-.00001 F S YSD=$O(^YTT(601.84,"AC",YSCN,YSD)) Q:(YSD'>0)!(YSD>YSE) D
|
---|
| 55 | . S YSAD=0 F S YSAD=$O(^YTT(601.84,"AC",YSCN,YSD,YSAD)) Q:YSAD'>0 S ^TMP("YSAD",$J,YSAD)=""
|
---|
| 56 | Q
|
---|
| 57 | SP ;select by patient
|
---|
| 58 | S YSAD=0 F S YSAD=$O(^YTT(601.84,"C",YSDFN,YSAD)) Q:YSAD'>0 D
|
---|
| 59 | . S YSDG=$P(^YTT(601.84,YSAD,0),U,4)
|
---|
| 60 | . S:(YSDG'<YSB)&(YSDG'>(YSE+.9)) ^TMP("YSAD",$J,YSAD)=""
|
---|
| 61 | Q
|
---|
| 62 | SD ;select by Date Only
|
---|
| 63 | S YSAD=0 F S YSAD=$O(^YTT(601.84,"B",YSAD)) Q:YSAD'>0 D
|
---|
| 64 | . S YSDG=$P(^YTT(601.84,YSAD,0),U,4)
|
---|
| 65 | . S:(YSDG'<YSB)&(YSDG'>(YSE+.9)) ^TMP("YSAD",$J,YSAD)=""
|
---|
| 66 | Q
|
---|
| 67 | SO ;select by Ordered by
|
---|
| 68 | S YSAD=0 F S YSAD=$O(^YTT(601.84,"AO",YSOD,YSAD)) Q:YSAD'>0 D
|
---|
| 69 | . S YSDG=$P(^YTT(601.84,YSAD,0),U,4)
|
---|
| 70 | . S:(YSDG'<YSB)&(YSDG'>(YSE+.9)) ^TMP("YSAD",$J,YSAD)=""
|
---|
| 71 | Q
|
---|
| 72 | SL ;select by location
|
---|
| 73 | S YSAD=0 F S YSAD=$O(^YTT(601.84,"AL",YSLOC,YSAD)) Q:YSAD'>0 D
|
---|
| 74 | . S YSDG=$P(^YTT(601.84,YSAD,0),U,4)
|
---|
| 75 | . S:(YSDG'<YSB)&(YSDG'>(YSE+.9)) ^TMP("YSAD",$J,YSAD)=""
|
---|
| 76 | Q
|
---|
| 77 | ADMIN ;extract the data into an XML global
|
---|
| 78 | S YSAD=0 F S YSAD=$O(^TMP("YSAD",$J,YSAD)) Q:YSAD'>0 D
|
---|
| 79 | . S N=N+1,^TMP("YSXML",$J,N)="<Admin>"
|
---|
| 80 | . S N=N+1,^TMP("YSXML",$J,N)="<Admin_ID>"_YSAD_"</Admin_ID>"
|
---|
| 81 | . D FORM("Patient",601.84,YSAD,1)
|
---|
| 82 | . S DFN=$P(^YTT(601.84,YSAD,0),U,2),ICN=$$GETICN^MPIF001(DFN),N=N+1,^TMP("YSXML",$J,N)="<ICN>"_ICN_"</ICN>"
|
---|
| 83 | . D FORM("Instrument",601.84,YSAD,2)
|
---|
| 84 | . D FORM("Given",601.84,YSAD,3)
|
---|
| 85 | . D FORM("Saved",601.84,YSAD,4)
|
---|
| 86 | . D FORM("Ordered",601.84,YSAD,5)
|
---|
| 87 | . D FORM("Complete",601.84,YSAD,8)
|
---|
| 88 | . D FORM("Location",601.84,YSAD,13)
|
---|
| 89 | . D QUEST:YSEA
|
---|
| 90 | . D RESULT:YSER
|
---|
| 91 | . S N=N+1,^TMP("YSXML",$J,N)="</Admin>"
|
---|
| 92 | Q
|
---|
| 93 | FORM(YSTAG,YSFILE,YSIENS,YSFIELD) ;xml entry
|
---|
| 94 | N G
|
---|
| 95 | S N=N+1
|
---|
| 96 | S G="<"_YSTAG_">"
|
---|
| 97 | S G=G_$$GET1^DIQ(YSFILE,YSIENS_",",YSFIELD)
|
---|
| 98 | S G=G_"</"_YSTAG_">"
|
---|
| 99 | S ^TMP("YSXML",$J,N)=G
|
---|
| 100 | Q
|
---|
| 101 | QUEST ;answers out
|
---|
| 102 | S YSA=0,YSJ=0 F S YSA=$O(^YTT(601.85,"AD",YSAD,YSA)) Q:YSA'>0 D
|
---|
| 103 | . S N=N+1,^TMP("YSXML",$J,N)="<Quest>"
|
---|
| 104 | . S N=N+1,^TMP("YSXML",$J,N)="<Admin_ID>"_YSAD_"</Admin_ID>"
|
---|
| 105 | . S YSQNUMB=$P(^YTT(601.85,YSA,0),U,3)
|
---|
| 106 | . S N=N+1,^TMP("YSXML",$J,N)="<Qnumb>"_YSQNUMB_"</Qnumb>"
|
---|
| 107 | . S YSQTEXT=$G(^YTT(601.72,YSQNUMB,1,1,0))
|
---|
| 108 | . S N=N+1,^TMP("YSXML",$J,N)="<Qtext>"_YSQTEXT_"</Qtext>"
|
---|
| 109 | . S N=N+1,YSJ=YSJ+1,^TMP("YSXML",$J,N)="<Seq>"_YSJ_"</Seq>"
|
---|
| 110 | . D FORM("Choice",601.85,YSA,4)
|
---|
| 111 | . S N=N+1
|
---|
| 112 | . S YSC=$P(^YTT(601.85,YSA,0),U,4)
|
---|
| 113 | . S YSCN=$S(YSC?1N.N:^YTT(601.75,YSC,1),1:"???")
|
---|
| 114 | . S:$D(^YTT(601.85,YSA,1,1,0)) YSCN=^YTT(601.85,YSA,1,1,0)
|
---|
| 115 | . S ^TMP("YSXML",$J,N)="<Ans>"_YSCN_"</Ans>"
|
---|
| 116 | . S N=N+1,^TMP("YSXML",$J,N)="</Quest>"
|
---|
| 117 | Q
|
---|
| 118 | RESULT ;results out
|
---|
| 119 | S YSR=0
|
---|
| 120 | F S YSR=$O(^YTT(601.92,"AC",YSAD,YSR)) Q:YSR'>0 D
|
---|
| 121 | . S N=N+1,^TMP("YSXML",$J,N)="<Score>"
|
---|
| 122 | . S N=N+1,^TMP("YSXML",$J,N)="<Admin_ID>"_YSAD_"</Admin_ID>"
|
---|
| 123 | . D FORM("Scale",601.92,YSR,2)
|
---|
| 124 | . D FORM("Raw",601.92,YSR,3)
|
---|
| 125 | . D FORM("Trans1",601.92,YSR,4)
|
---|
| 126 | . S N=N+1,^TMP("YSXML",$J,N)="</Score>"
|
---|
| 127 | Q
|
---|
| 128 | HEAD ;
|
---|