[613] | 1 | IBDFU2 ;ALB/CJM - ENCOUNTER FORM - BUILD FORM(copying blocks) ; 08-JAN-1993
|
---|
| 2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;**15**;APR 24, 1997
|
---|
| 3 | ;
|
---|
| 4 | COPYBLK(OLDBLOCK,IBFORM,FROMFILE,TOFILE,ROW,COL,TKORDER,NAME,RECMPILE) ;copys OLDBLOCK in FROMFILE to IBFORM in TOFILE
|
---|
| 5 | ;makes the new block part of IBFORM if defined
|
---|
| 6 | ;places block at (ROW,COL) if defined
|
---|
| 7 | ;sets TOOL KIT ORDER TKORDER if defined and >0
|
---|
| 8 | ;sets the block name to NAME if defined
|
---|
| 9 | ;returns the ien of the new copy
|
---|
| 10 | ;RECMPILE means don't copy compiled block
|
---|
| 11 | ;
|
---|
| 12 | Q:(FROMFILE'=357.1)&(FROMFILE'=358.1) ""
|
---|
| 13 | Q:(TOFILE'=357.1)&(TOFILE'=358.1) ""
|
---|
| 14 | N NODE,LIST,FLD,LINE,TEXT,NEWBLOCK,FROM,TO,SUB,I
|
---|
| 15 | S NEWBLOCK=""
|
---|
| 16 | S NODE=$G(^IBE(FROMFILE,OLDBLOCK,0)) Q:NODE="" ""
|
---|
| 17 | S $P(NODE,"^",2)=$G(IBFORM)
|
---|
| 18 | S:$G(NAME)="" NAME=$P(NODE,"^")
|
---|
| 19 | S RECMPILE=+$G(RECMPILE)
|
---|
| 20 | ;there must be a name
|
---|
| 21 | Q:NAME="" ""
|
---|
| 22 | S $P(NODE,"^")=NAME
|
---|
| 23 | I $D(ROW),(ROW=+ROW) S $P(NODE,"^",4)=ROW
|
---|
| 24 | I $D(COL),(COL=+COL) S $P(NODE,"^",5)=COL
|
---|
| 25 | S:$D(TKORDER) $P(NODE,"^",14)=$S(TKORDER:TKORDER,1:"")
|
---|
| 26 | K DIC,DO,DD,DINUM S DIC="^IBE("_TOFILE_",",X=NAME,DIC(0)=""
|
---|
| 27 | D FILE^DICN K DIC,DIE,DA
|
---|
| 28 | S NEWBLOCK=$S(+Y<0:"",1:+Y)
|
---|
| 29 | Q:'NEWBLOCK ""
|
---|
| 30 | S ^IBE(TOFILE,NEWBLOCK,0)=NODE
|
---|
| 31 | S NODE=0 F S NODE=$O(^IBE(FROMFILE,OLDBLOCK,NODE)) Q:'NODE S ^IBE(TOFILE,NEWBLOCK,NODE)=$G(^IBE(FROMFILE,OLDBLOCK,NODE))
|
---|
| 32 | K DIK,DA S DIK="^IBE("_TOFILE_",",DA=NEWBLOCK
|
---|
| 33 | D IX1^DIK K DIK,DA
|
---|
| 34 | ;I ('RECMPILE),TOFILE=357.1,FROMFILE=357.1,$D(^IBE(357.1,OLDBLOCK,"V")),$D(^IBE(357.1,OLDBLOCK,"S")),$D(^IBE(357.1,OLDBLOCK,"B")),$D(^IBE(357.1,OLDBLOCK,"H")) D
|
---|
| 35 | ;.F SUB="S","V","B","H" S I=0 S ^IBE(357.1,NEWBLOCK,SUB,0)=$G(^IBE(357.1,OLDBLOCK,SUB,0)) F S I=$O(^IBE(357.1,OLDBLOCK,SUB,I)) Q:'I S ^IBE(357.1,NEWBLOCK,SUB,I,0)=$G(^IBE(357.1,OLDBLOCK,SUB,I,0))
|
---|
| 36 | ;before any new block component is created, make sure there is no garbage around with dangling pointer pointing to new block
|
---|
| 37 | D DLTCNTNT^IBDFU3(NEWBLOCK,TOFILE)
|
---|
| 38 | ;
|
---|
| 39 | ;now copy the old block's contents into the newblock
|
---|
| 40 | S (LIST,LINE,TEXT)=""
|
---|
| 41 | ;
|
---|
| 42 | ;copy selection lists
|
---|
| 43 | S FROM=$S(FROMFILE[358:358.2,1:357.2),TO=$S(TOFILE[358:358.2,1:357.2)
|
---|
| 44 | F S LIST=$O(^IBE(FROM,"C",OLDBLOCK,LIST)) Q:'LIST I $$COPYLIST(LIST,OLDBLOCK,NEWBLOCK,FROM,TO)
|
---|
| 45 | ;
|
---|
| 46 | ;copy data fields
|
---|
| 47 | S FROM=$S(FROMFILE[358:358.5,1:357.5),TO=$S(TOFILE[358:358.5,1:357.5)
|
---|
| 48 | S FLD=0 F S FLD=$O(^IBE(FROM,"C",OLDBLOCK,FLD)) Q:'FLD D COPYFLD^IBDFU2A(FLD,OLDBLOCK,NEWBLOCK,FROM,TO)
|
---|
| 49 | ;
|
---|
| 50 | ;copy multiple choice fields
|
---|
| 51 | S FROM=$S(FROMFILE[358:358.93,1:357.93),TO=$S(TOFILE[358:358.93,1:357.93)
|
---|
| 52 | S FLD=0 F S FLD=$O(^IBE(FROM,"C",OLDBLOCK,FLD)) Q:'FLD D COPYMFLD^IBDFU2A(FLD,OLDBLOCK,NEWBLOCK,FROM,TO)
|
---|
| 53 | ;
|
---|
| 54 | ;copy hand print fields
|
---|
| 55 | S FROM=$S(FROMFILE[358:358.94,1:359.94),TO=$S(TOFILE[358:358.94,1:359.94)
|
---|
| 56 | S FLD=0 F S FLD=$O(^IBE(FROM,"C",OLDBLOCK,FLD)) Q:'FLD D COPYHFLD^IBDFU2A(FLD,OLDBLOCK,NEWBLOCK,FROM,TO)
|
---|
| 57 | ;
|
---|
| 58 | ;copy lines
|
---|
| 59 | S FROM=$S(FROMFILE[358:358.7,1:357.7),TO=$S(TOFILE[358:358.7,1:357.7)
|
---|
| 60 | F S LINE=$O(^IBE(FROM,"C",OLDBLOCK,LINE)) Q:'LINE D COPYLINE^IBDFU2A(LINE,OLDBLOCK,NEWBLOCK,FROM,TO)
|
---|
| 61 | ;
|
---|
| 62 | ;copy text areas
|
---|
| 63 | S FROM=$S(FROMFILE[358:358.8,1:357.8),TO=$S(TOFILE[358:358.8,1:357.8)
|
---|
| 64 | F S TEXT=$O(^IBE(FROM,"C",OLDBLOCK,TEXT)) Q:'TEXT D COPYTEXT^IBDFU2A(TEXT,OLDBLOCK,NEWBLOCK,FROM,TO)
|
---|
| 65 | Q NEWBLOCK
|
---|
| 66 | ;
|
---|
| 67 | COPYLIST(LIST,OLDBLOCK,NEWBLOCK,FROMFILE,TOFILE) ;
|
---|
| 68 | ;returns the new list copied from LIST
|
---|
| 69 | Q:'$G(LIST)!('$G(OLDBLOCK))!('$G(NEWBLOCK))!('$G(FROMFILE))!('$G(TOFILE)) 0
|
---|
| 70 | Q:(FROMFILE'=357.2)&(FROMFILE'=358.2) 0
|
---|
| 71 | Q:(TOFILE'=357.2)&(TOFILE'=358.2) 0
|
---|
| 72 | N NODE,NAME,NEWLIST,GRP,SLCTN,COL,TO,FROM,TOPI,FROMPI,DYNAMIC
|
---|
| 73 | S NEWLIST=""
|
---|
| 74 | S NODE=$G(^IBE(FROMFILE,LIST,0)) Q:NODE="" 0
|
---|
| 75 | S DYNAMIC=$P(NODE,"^",14)
|
---|
| 76 | ;make sure the list really belongs to the block being copied - if not re-index it
|
---|
| 77 | I $P(NODE,"^",2)='OLDBLOCK K DA S DA=LIST,DIK="^IBE("_FROMFILE_"," D IX^DIK K DIK Q 0
|
---|
| 78 | S NAME=$P(NODE,"^",1),$P(NODE,"^",2)=NEWBLOCK
|
---|
| 79 | S FROMPI=$P(NODE,"^",11)
|
---|
| 80 | S TOPI=$$GETPI^IBDFU2B(FROMPI,$S(FROMFILE[358:358.6,1:357.6),$S(TOFILE[358:358.6,1:357.6)),$P(NODE,"^",11)=TOPI
|
---|
| 81 | Q:NAME="" 0
|
---|
| 82 | K DIC,DD,DINUM,DO S DIC="^IBE("_TOFILE_",",X=NAME,DIC(0)=""
|
---|
| 83 | D FILE^DICN K DIC,DIE,DA
|
---|
| 84 | S NEWLIST=$S(+Y<0:"",1:+Y)
|
---|
| 85 | Q:'NEWLIST 0
|
---|
| 86 | D DLISTCNT^IBDFU3(NEWLIST,TOFILE) ;clean up any dangling pointers that may be now pointing to this new, supposedly empty list
|
---|
| 87 | ;
|
---|
| 88 | ;now copy
|
---|
| 89 | S ^IBE(TOFILE,NEWLIST,0)=NODE
|
---|
| 90 | ;
|
---|
| 91 | ;copy the column multiple
|
---|
| 92 | S NODE=$G(^IBE(FROMFILE,LIST,1,0))
|
---|
| 93 | I NODE'="" S $P(NODE,"^",2)=TOFILE_"1I",^IBE(TOFILE,NEWLIST,1,0)=NODE S COL=0 F S COL=$O(^IBE(FROMFILE,LIST,1,COL)) Q:'COL S NODE=$G(^IBE(FROMFILE,LIST,1,COL,0)) S:NODE'="" ^IBE(TOFILE,NEWLIST,1,COL,0)=NODE
|
---|
| 94 | ;
|
---|
| 95 | ;now copy the subcolumn multiple
|
---|
| 96 | S NODE=$G(^IBE(FROMFILE,LIST,2,0)) I NODE'="" S $P(NODE,"^",2)=TOFILE_"2I",^IBE(TOFILE,NEWLIST,2,0)=NODE S COL=0 F S COL=$O(^IBE(FROMFILE,LIST,2,COL)) Q:'COL S NODE=$G(^IBE(FROMFILE,LIST,2,COL,0)) I NODE'="" D
|
---|
| 97 | .S:$P(NODE,"^",6) $P(NODE,"^",6)=$$GETMA^IBDFU2B($P(NODE,"^",6),$S(FROMFILE[358:358.91,1:357.91),$S(TOFILE[358:358.91,1:357.91))
|
---|
| 98 | .S:$P(NODE,"^",9) $P(NODE,"^",9)=$$GETQLFR^IBDFU2B($P(NODE,"^",9),$S(FROMFILE[358:358.98,1:357.98),$S(TOFILE[358:358.98,1:357.98))
|
---|
| 99 | .S ^IBE(TOFILE,NEWLIST,2,COL,0)=NODE
|
---|
| 100 | ;
|
---|
| 101 | K DIK,DA S DIK="^IBE("_TOFILE_",",DA=NEWLIST
|
---|
| 102 | D IX1^DIK K DIK,DA
|
---|
| 103 | S FROM=$S(FROMFILE[358:358.4,1:357.4),TO=$S(TOFILE[358:358.4,1:357.4)
|
---|
| 104 | ;
|
---|
| 105 | ; -- don't want to copy groups and selections if the selections are
|
---|
| 106 | ; not exportable
|
---|
| 107 | I FROM'=TO,FROMPI,'$P($G(^IBE($S(FROM[358:358.6,1:357.6),FROMPI,2)),"^",18) Q NEWLIST
|
---|
| 108 | ;I 'DYNAMIC S GRP="" F S GRP=$O(^IBE(FROM,"D",LIST,GRP)) Q:'GRP D COPYGRP^IBDFU2A(GRP,LIST,NEWLIST,NEWBLOCK,FROM,TO)
|
---|
| 109 | S GRP="" F S GRP=$O(^IBE(FROM,"D",LIST,GRP)) Q:'GRP D COPYGRP^IBDFU2A(GRP,LIST,NEWLIST,NEWBLOCK,FROM,TO)
|
---|
| 110 | Q NEWLIST
|
---|