1 | GECSXBLD ;WISC/RFJ-map data into template map ;01 Nov 93
|
---|
2 | ;;2.0;GCS;;MAR 14, 1995
|
---|
3 | Q
|
---|
4 | ;
|
---|
5 | ;
|
---|
6 | MAPDATA(GECSDA) ; map data to template
|
---|
7 | ; return 1 if code sheet is built, 0 if not built
|
---|
8 | N %,%H,%I,CODESHET,DA,DA1,DATA,DELIMITR,FIELD,GECSDATE,GECSEND,GECSFLAG,GECSLINE,GECSMAP,GECSNOD1,GECSNOD2,GECSOT,GECSTNM,I,N,PIECE,SUB1,SUB2,X,Y
|
---|
9 | ;
|
---|
10 | ; keypunched code sheet
|
---|
11 | K CODESHET
|
---|
12 | I $P($G(^GECS(2100,GECSDA,0)),"^",11)="[GECS KEYPUNCH]" D Q GECSFLAG
|
---|
13 | . S %=0 F I=0:1 S %=$O(^GECS(2100,GECSDA,"KEY",%)) Q:%="" S CODESHET(I)=^(%,0)
|
---|
14 | . I I=0 W !,"NOTHING TO KEYPUNCH." D KILLCS^GECSPUR1(GECSDA) W " << CODE SHEET DELETED >>" S GECSFLAG=0 Q
|
---|
15 | . S %=$$SHEET,GECSFLAG=1
|
---|
16 | ;
|
---|
17 | ; fill in fields code sheet
|
---|
18 | ; set gecsot variable to execute output transform
|
---|
19 | S GECSOT=""
|
---|
20 | ; move code sheet field data into variable data
|
---|
21 | K DATA
|
---|
22 | S SUB1="" F S SUB1=$O(^GECS(2100,GECSDA,SUB1)) Q:SUB1="" I SUB1'="CODE" S:$D(^(SUB1))'["0" DATA(SUB1)=^(SUB1) I $D(^GECS(2100,GECSDA,SUB1,0)) D
|
---|
23 | . S DA1=0 F S DA1=$O(^GECS(2100,GECSDA,SUB1,DA1)) Q:'DA1 D
|
---|
24 | . . S SUB2="" F S SUB2=$O(^GECS(2100,GECSDA,SUB1,DA1,SUB2)) Q:SUB2="" S:$D(^GECS(2100,GECSDA,SUB1,DA1,SUB2)) DATA(SUB1,DA1,SUB2)=^(SUB2)
|
---|
25 | ;
|
---|
26 | ; get template map
|
---|
27 | S GECSTNM=$P(DATA(0),"^",11),GECSTNM=$E(GECSTNM,2,$L(GECSTNM)-1) I GECSTNM="" W !,"CODE SHEET ",$P(DATA(0),"^")," DOES NOT HAVE A TEMPLATE MAP DEFINED." Q 0
|
---|
28 | S %=$O(^DIE("B",GECSTNM,0)) I '% W !,"INPUT TEMPLATE ",GECSTNM," NOT FOUND." Q 0
|
---|
29 | D GETMAP^GECSXMAP(%) I '$D(GECSMAP) Q 0
|
---|
30 | ;
|
---|
31 | S GECSEND=80,DELIMITR=""
|
---|
32 | ; put code sheet specific code here!!!
|
---|
33 | I $P(DATA(0),"^",2)="VOL" S GECSEND=81
|
---|
34 | I $P(DATA(0),"^",2)="FMS" S DELIMITR="^",GECSEND=240
|
---|
35 | I $P(DATA(0),"^",2)="FEN" S DELIMITR=".",GECSEND=240
|
---|
36 | ; end of code sheet specific code
|
---|
37 | ;
|
---|
38 | ; build code sheet with data
|
---|
39 | ; set da for output transform
|
---|
40 | S DA=GECSDA
|
---|
41 | K GECSFLAG
|
---|
42 | S (GECSLINE,GECSNOD1)=0 F S GECSNOD1=$O(GECSMAP(GECSNOD1)) Q:'GECSNOD1 D
|
---|
43 | . ; single field (not multiple)
|
---|
44 | . I GECSMAP(GECSNOD1)'["," D Q
|
---|
45 | . . F PIECE=1:1 S FIELD=$P(GECSMAP(GECSNOD1),"\",PIECE) Q:FIELD="" D Q:$G(GECSFLAG)
|
---|
46 | . . . S SUB1=$P(FIELD,";",2)
|
---|
47 | . . . S Y=$P($G(DATA(SUB1)),"^",$P(FIELD,";",3))
|
---|
48 | . . . D SETLINE(2100,+FIELD)
|
---|
49 | . ; multiple field
|
---|
50 | . S SUB1=$P(GECSMAP(GECSNOD1),",",2)
|
---|
51 | . S DA1=0 F S DA1=$O(DATA(SUB1,DA1)) Q:'DA1 S GECSNOD2=0 F S GECSNOD2=$O(GECSMAP(GECSNOD1,GECSNOD2)) Q:'GECSNOD2 D
|
---|
52 | . . F PIECE=1:1 S FIELD=$P(GECSMAP(GECSNOD1,GECSNOD2),"\",PIECE) Q:FIELD="" D Q:$G(GECSFLAG)
|
---|
53 | . . . S SUB2=$P(FIELD,";",2)
|
---|
54 | . . . S Y=$P($G(DATA(SUB1,DA1,SUB2)),"^",$P(FIELD,";",3))
|
---|
55 | . . . D SETLINE(+$P(GECSMAP(GECSNOD1),",",3),+FIELD)
|
---|
56 | ;
|
---|
57 | ; put code sheet specific code here (after code sheets have been built)
|
---|
58 | ; reformat for amis
|
---|
59 | I $P(DATA(0),"^",2)="AMS" D AMIS
|
---|
60 | ; end of code sheet specific code
|
---|
61 | Q $$SHEET
|
---|
62 | ;
|
---|
63 | ;
|
---|
64 | SHEET() ; move code sheets to code node
|
---|
65 | D NOW^%DTC S GECSDATE=%
|
---|
66 | K ^GECS(2100,GECSDA,"CODE")
|
---|
67 | S GECSLINE="" F I=1:1 S GECSLINE=$O(CODESHET(GECSLINE)) Q:GECSLINE="" S ^GECS(2100,GECSDA,"CODE",I,0)=CODESHET(GECSLINE)
|
---|
68 | S I=I-1,^GECS(2100,GECSDA,"CODE",0)="^^"_I_"^"_I_"^"_$P(GECSDATE,".")_"^^"
|
---|
69 | D PRINT^GECSUTIL(GECSDA)
|
---|
70 | Q 1
|
---|
71 | ;
|
---|
72 | ;
|
---|
73 | SETLINE(FILE,FIELD) ; build codeshet array with data in y
|
---|
74 | I $D(^DD(FILE,+FIELD,2.1)),^(2.1)["GECSOT" X ^(2.1)
|
---|
75 | S CODESHET(GECSLINE)=$G(CODESHET(GECSLINE))_$S($G(CODESHET(GECSLINE))="":"",$G(CODESHET(GECSLINE))=("LIN^"_$C(126)):"",$P(DATA(0),"^",2)="FEN"&(Y="$"):"",1:DELIMITR)_Y
|
---|
76 | ; for fms, put each segment on a new line
|
---|
77 | I $P(DATA(0),"^",2)="FMS",Y=$C(126),$G(CODESHET(GECSLINE))'=("LIN^"_$C(126)) S GECSLINE=GECSLINE+1
|
---|
78 | I $L($G(CODESHET(GECSLINE)))>GECSEND S CODESHET(GECSLINE+1)=$E(CODESHET(GECSLINE),GECSEND+1,999),CODESHET(GECSLINE)=$E(CODESHET(GECSLINE),1,GECSEND),GECSLINE=GECSLINE+1
|
---|
79 | I Y="$" S GECSFLAG=1
|
---|
80 | Q
|
---|
81 | ;
|
---|
82 | ;
|
---|
83 | AMIS ; reformat for amis
|
---|
84 | N %,CHAR,LINE,OLDCODE,X
|
---|
85 | ; move code sheet (in codeshet) to temp variable for processing
|
---|
86 | K OLDCODE S %="" F S %=$O(CODESHET(%)) Q:%="" S OLDCODE(%)=CODESHET(%)
|
---|
87 | K CODESHET S GECSLINE=0
|
---|
88 | S CODESHET(0)=$E(OLDCODE(0),1,16)_"-",OLDCODE(0)=$E(OLDCODE(0),17,256)
|
---|
89 | S LINE="" F S LINE=$O(OLDCODE(LINE)) Q:LINE="" F CHAR=1:10 S X=$E(OLDCODE(LINE),CHAR,CHAR+9) Q:X="" D
|
---|
90 | . ; if x is not 10 characters long, move up data from next line
|
---|
91 | . I $L(X)<10,$D(OLDCODE(LINE+1)) S %=10-$L(X),X=X_$E(OLDCODE(LINE+1),1,%),OLDCODE(LINE+1)=$E(OLDCODE(LINE+1),%+1,256)
|
---|
92 | . I X="0000000000" S X=""
|
---|
93 | . S CODESHET(GECSLINE)=$G(CODESHET(GECSLINE))_X_$S(X["$":"",1:"-")
|
---|
94 | . I $L(CODESHET(GECSLINE))>GECSEND S CODESHET(GECSLINE+1)=$E(CODESHET(GECSLINE),GECSEND+1,256),CODESHET(GECSLINE)=$E(CODESHET(GECSLINE),1,GECSEND),GECSLINE=GECSLINE+1
|
---|
95 | Q
|
---|