| 1 | HLCSAS1 ;ISCSF/RWF - Read data ;02/05/2004  08:06 | 
|---|
| 2 | ;;1.6;HEALTH LEVEL SEVEN;**43,57,91,109**;Oct 13, 1995 | 
|---|
| 3 | Q | 
|---|
| 4 | DATA(ROOT,STAT) ;get Data | 
|---|
| 5 | N I,M,HLROOT | 
|---|
| 6 | D DCODE(HCSDAT),TRACE^HLCSAS("DECODE "_HCSDAT) | 
|---|
| 7 | ;Check if data type is OK | 
|---|
| 8 | ;I ... | 
|---|
| 9 | S HLROOT=$$SAVE("I") | 
|---|
| 10 | F I=1:1 S M=$$DREAD() Q:HCSER!M  S (@ROOT@(I),@HLROOT@(I,0))=HCSDAT | 
|---|
| 11 | S @HLROOT@(0)="^^"_(I-1)_"^"_(I-1)_"^"_$$DT^XLFDT | 
|---|
| 12 | ;If we got it all | 
|---|
| 13 | D SEND^HLCSAS($S(HCSER:"500 Data error",1:"220 OK")) | 
|---|
| 14 | D LLCNT^HLCSTCP(HLDP,1) | 
|---|
| 15 | Q | 
|---|
| 16 | ; | 
|---|
| 17 | SAVE(HLTP) ;save to file 772, HLTP: I=input, O=output | 
|---|
| 18 | N HLJ,HLMID,HLTIEN,HLDT,HLX,HLY,X,Y ;HL*1.6*91 | 
|---|
| 19 | D TCP^HLTF(.HLMID,.HLTIEN,.HLDT) Q:'HLTIEN "" | 
|---|
| 20 | S X="HLJ(773,"""_HLTIEN_","")" | 
|---|
| 21 | ;3=transmission type, 4=priority, 7=Logical Link, 20=status, 100=processed | 
|---|
| 22 | S @X@(3)=HLTP,@X@(4)="I",@X@(7)=HLDP,@X@(20)=3,@X@(100)=$$NOW^XLFDT | 
|---|
| 23 | D FILE^HLDIE("K","HLJ","","SAVE","HLCSAS1") ;HL*1.6*109 | 
|---|
| 24 | S (HLX,X)=+^HLMA(HLTIEN,0),(HLY,Y)=$NA(^HL(772,X,"IN")) ;HL*1.6*91 | 
|---|
| 25 | D SNMSP(+HLX,$S($G(HLP("NAMESPACE"))]"":HLP("NAMESPACE"),1:"MPI")) ;HL*1.6*91 | 
|---|
| 26 | Q HLY ;HL*1.6*91 | 
|---|
| 27 | ; | 
|---|
| 28 | SNMSP(IEN772,NMSP) ; Store NMSP in IEN772 (Created by HL*1.6*91) | 
|---|
| 29 | N HLJ,X,Y | 
|---|
| 30 | QUIT:'$D(^HL(772,+$G(IEN772),0))!($G(NMSP)']"")  ;-> | 
|---|
| 31 | S X="HLJ(772,"""_+IEN772_","")" | 
|---|
| 32 | S @X@(16)=NMSP | 
|---|
| 33 | D FILE^HLDIE("","HLJ","","SNMSP","HLCSAS1") ; HL*1.6*109 | 
|---|
| 34 | QUIT | 
|---|
| 35 | ; | 
|---|
| 36 | SDATA(ROOT,TYPE) ;Send data from a source | 
|---|
| 37 | N I,X,Y,Z,L,D,HLROOT | 
|---|
| 38 | S ROOT=$NA(@ROOT),X=ROOT,Y=$E(ROOT,1,$L(ROOT)-1),HCSER=0 | 
|---|
| 39 | D SEND^HLCSAS("DATA PARAM="_TYPE) | 
|---|
| 40 | S X=ROOT,HLROOT=$$SAVE("O") | 
|---|
| 41 | F I=1:1 S X=$Q(@X) Q:$E(X,1,$L(Y))'=Y  S Z=@X,@HLROOT@(I,0)=Z D DSEND(Z) | 
|---|
| 42 | S @HLROOT@(0)="^^"_(I-1)_"^"_(I-1)_"^"_$$DT^XLFDT | 
|---|
| 43 | D DSEND($C(27,27,27)) ;Tell other end we'r done | 
|---|
| 44 | D LLCNT^HLCSTCP(HLDP,4) | 
|---|
| 45 | Q | 
|---|
| 46 | DCODE(D) ;Decode a DATA string | 
|---|
| 47 | S D=$$UP^XLFSTR(D),D=$P(D,"PARAM=",2,99) | 
|---|
| 48 | F I=1:1 S STAT("P"_I)=$P(D,",",I) Q:$P(D,",",I+1)="" | 
|---|
| 49 | Q | 
|---|
| 50 | DREAD() ;Data read | 
|---|
| 51 | N L,D,R S (D,HCSDAT)="",HCSER=0 | 
|---|
| 52 | S L=$$LREAD(3) Q:HCSER 1 | 
|---|
| 53 | I L'?3N S HCSER="1 Out of sync: "_L Q 1 | 
|---|
| 54 | I L>0 S HCSDAT=$$LREAD(L) | 
|---|
| 55 | Q HCSDAT=$C(27,27,27) | 
|---|
| 56 | DSEND(D) ;Data send | 
|---|
| 57 | N L | 
|---|
| 58 | S L=$L(D),L=$E(1000+L,2,4) | 
|---|
| 59 | W L,D,! ;Flush buffer | 
|---|
| 60 | Q | 
|---|
| 61 | LREAD(N) ;Read N char | 
|---|
| 62 | N D,C,P S D="",C=N,HCSER=0 | 
|---|
| 63 | F  D  Q:'C!HCSER | 
|---|
| 64 | . R P#C:HLDREAD E  S HCSER=1 Q | 
|---|
| 65 | . S D=D_P,C=N-$L(D) | 
|---|
| 66 | . Q | 
|---|
| 67 | Q D | 
|---|